Menu

Saber si ingresa un número o letras

Geraldine
2019-03-23
2019-09-13
  • Geraldine

    Geraldine - 2019-03-23

    Buenas tardes compañeros, mi profesor de Algoritmos y Estructuras 2 nos manda el siguiente ejercicio que dice que: "El campo sueldo debe ser numérico (no deben permitir valores negativos ni caracteres)".

    Que pasa, que utilizando el código de esta persona https://sourceforge.net/p/pseint/discussion/2368321/thread/af4b8a01/?limit=25#28a4 establecí que, si al principio consigue una letra, me obligle a ingresar un número, de lo contrario pasa al menú y ahí le digo si quiero que organice la nomina por cedula, edad o sueldo.

    Sucede que cuando ingreso que la cantidad de personas es 1 me ejecuta perfecto el código, pero cuando ingreso que hay 2 o más personas se traba y da el siguiente error: "Lin 43 (inst 1): ERROR 123: Identificador en uso".

    Esa linea pertenece a la variable Dimension variable[cont]

    No sé por qué no quiere correr el código. Si pueden ayudarme estaria full agradecida. Saludos.

    Proceso Nomina
        // Variables:
        Definir cantPer,cedula,edad Como Entero
        Definir nombre,apellido,opc Como Caracter
    
        // Variables para determinar si el sueldo posee es numero o letras:
        Definir cont,a,b,num,c Como Entero
        Definir sueldo,d,e,variable Como Caracter
    
        // Declaramos el valor de las variables del sueldo:
        num<-0; b<-0
    
        // Ingresamos los datos:
        Escribir 'Ingrese la cantidad de personas:'
        Leer cantPer
        Escribir ''
    
        // Establecemos la dimension:
        Dimension apellido[cantPer]
        Dimension nombre[cantPer]
        Dimension cedula[cantPer]
        Dimension sueldo[cantPer]
        Dimension edad[cantPer]
    
        // Ingresamos los datos:
        Para i<-1 Hasta cantPer Hacer
            Escribir 'Ingrese el nombre de la persona ',i,':'
            Leer nombre[i]
            Escribir 'Ingrese el apellido de la persona ',i,':'
            Leer apellido[i]
            Escribir 'Ingrese la edad de la persona ',i,':'
            Leer edad[i]
            Escribir 'Ingrese la cedula de la persona ',i,':'
            Leer cedula[i]
            Escribir 'Ingrese el sueldo de la persona ',i,':'
            Leer sueldo[i]
    
            // Convertimos el sueldo como minusculas y buscamos su longitud:
            sueldo[i]<-Minusculas(sueldo[i])
            cont<-Longitud(sueldo[i])
    
            // Dimension para el sueldo.
            Dimension variable[cont] 
    
            Para a<-1 Hasta cont Con Paso 1 Hacer
                variable[a]<-Subcadena(sueldo[i],a,a)
            Fin Para
    
            // Declaramos el valor a para el sueldo:
            a<-0
    
            Para a<-b+1 Hasta cont Con Paso 1 Hacer
                d<-ConvertirATexto(a)
                Para c<-1 Hasta 9 Con Paso 1 Hacer
                    e<-ConvertirATexto(c)
                    Si variable[a]==e Entonces
                        num<-num+1
                    FinSi
                Fin Para
            Fin Para
    
            Si num!=cont Entonces
                Escribir 'Ingrese un monto sin letras'
                Leer sueldo[i]
            SiNo Si num==cont Entonces
                    Si num<0 Entonces
                        Escribir 'Ingrese un monto positivo'
                        Leer sueldo[i]
                    FinSi
                FinSi
            Fin Si
            Escribir '----------------------------------------------------'
        Fin Para
    
        //Escribimos un menu:
        Escribir 'Como desea organizar la nomina?'
        Escribir 'a)Cedula'
        Escribir 'b)Edad'
        Escribir 'c)Sueldo'
        Escribir 'Seleccione una de las opciones'
        Leer opc
        Escribir '----------------------------------------------------'
    
        //Creamos un switch para poder seleccionar 1 de las opciones:
        Segun opc Hacer
            'a'://Cedula
                Para i<-1 Hasta cantPer Hacer
                    Para j<-i+1 Hasta cantPer Con Paso 1 Hacer
                        Si cedula[i]>cedula[j] Entonces
                            temp<-cedula[i]
                            cedula[i]<-cedula[j]
                            cedula[j]<-temp
    
                            temp<-edad[i]
                            edad[i]<-edad[j]
                            edad[j]<-temp
    
                            aux<-sueldo[i]
                            sueldo[i]<-sueldo[j]
                            sueldo[j]<-aux
    
                            Si cedula[j]>-temp Entonces
                                aux<-nombre[i]
                                nombre[i]<-nombre[j]
                                nombre[j]<-aux
    
                                aux<-apellido[i]
                                apellido[i]<-apellido[j]
                                apellido[j]<-aux
                            FinSi
                        FinSi
                    Fin Para
                Fin Para
    
                Escribir '           Arreglo ordenado por Cedula'
                Escribir 'Cedula     Nombre     Apellido    Edad   Sueldo'
                Para cont<-1 Hasta cantPer Con Paso 1 Hacer
                    Escribir cedula[cont],'   ', nombre[cont],'   ', apellido[cont],'   ',edad[cont],'    ',sueldo[cont]
                Fin Para
    
            'b'://Edad
                Para i<-1 Hasta cantPer Hacer
                    Para j<-i+1 Hasta cantPer Con Paso 1 Hacer
                        Si edad[i]>edad[j] Entonces
                            temp<-edad[i]
                            edad[i]<-edad[j]
                            edad[j]<-temp
    
                            temp<-cedula[i]
                            cedula[i]<-cedula[j]
                            cedula[j]<-temp
    
                            aux<-sueldo[i]
                            sueldo[i]<-sueldo[j]
                            sueldo[j]<-aux
    
                            Si cedula[j]>-temp Entonces
                                aux<-nombre[i]
                                nombre[i]<-nombre[j]
                                nombre[j]<-aux
    
                                aux<-apellido[i]
                                apellido[i]<-apellido[j]
                                apellido[j]<-aux
                            FinSi
                        FinSi
                    Fin Para
                Fin Para
    
                Escribir '           Arreglo ordenado por Edad'
                Escribir 'Edad     Nombre     Apellido    Cedula   Sueldo'
                Para cont<-1 Hasta cantPer Con Paso 1 Hacer
                    Escribir edad[cont],'   ', nombre[cont],'   ', apellido[cont],'   ',cedula[cont],'    ',sueldo[cont]
                Fin Para
    
            'c'://Sueldo
                Para i<-1 Hasta cantPer Hacer
                    Para j<-i+1 Hasta cantPer Con Paso 1 Hacer
                        Si sueldo[i]>sueldo[j] Entonces
    
                            aux<-sueldo[i]
                            sueldo[i]<-sueldo[j]
                            sueldo[j]<-aux
    
                            temp<-cedula[i]
                            cedula[i]<-cedula[j]
                            cedula[j]<-temp
    
                            temp<-edad[i]
                            edad[i]<-edad[j]
                            edad[j]<-temp
    
                            Si cedula[j]>-temp Entonces
                                aux<-nombre[i]
                                nombre[i]<-nombre[j]
                                nombre[j]<-aux
    
                                aux<-apellido[i]
                                apellido[i]<-apellido[j]
                                apellido[j]<-aux
                            FinSi
                        FinSi
                    Fin Para
                Fin Para
    
                Escribir '           Arreglo ordenado por Sueldo'
                Escribir 'Sueldo     Nombre     Apellido    Edad    Cedula'
                Para cont<-1 Hasta cantPer Con Paso 1 Hacer
                    Escribir sueldo[cont],'   ', nombre[cont],'   ', apellido[cont],'   ',edad[cont],'    ',cedula[cont]
                Fin Para
    
            De Otro Modo:
                Escribir 'Operacion exitosa'
        Fin Segun
    
    FinProceso
    
     
  • Anonymous

    Anonymous - 2019-03-24
        // Dimension para el sueldo.
        Dimension variable[cont]
    

    esta linea debe estar colocada antes de que empiece el bucle 'para'

    a diferencia de otros lenguajes este Pseint no acepta dimension de la misma variable mas de una vez

    En el entorno 'terminal' o sea no consola, se puede hacer

    en la linea donde pide la cantidad:

    ckantidad = ""
    leer ckantidad

    sueldo[i] = ConvertirANumero(ckantidad)

    si PseInt da error simplemente se retrocede con la rueda (del mouse), se hace click en el
    button 'ejecutar desde este punto' en el borde inferior a la derecha
    y se intenta de nuevo ingresar el valor

     
  • Anonymous

    Anonymous - 2019-09-13

    si si claro!

     

Anonymous
Anonymous

Add attachments
Cancel