Menu

Saber si ingresa números o letras

Geraldine
2019-03-23
2024-01-01
  • 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
    
     
    • alejandrocaro35

      alejandrocaro35 - 2024-01-01

      //Los arreglos están en base 0

      Proceso Nomina
          // Variables:
          Definir cantPer,cedula,edad Como Enteros;
          Definir i,j Como Enteros;
          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 las dimensiones:
          Dimension apellido[cantPer];
          Dimension nombre[cantPer];
          Dimension cedula[cantPer];
          Dimension sueldo[cantPer];
          Dimension edad[cantPer];
          Dimension variable[cantPer];
      
          // Ingresamos los datos:
          Para i<-1 Hasta cantPer-1 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.
              Redimensionar variable[cont]; //Redimensionar en lugar de Dimensionar, el arreglo variable ya estaba previamente
      
              Para a<-0 Hasta cont-1 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-1 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
                  FinPara
              FinPara
      
              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
              FinSi
              Escribir '----------------------------------------------------';
          Fin Para
      
          //Escribimos un menu:
          Escribir 'Como desea organizar la nómina?';
          Escribir 'a) Cédula';
          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-1 Hacer
                      Para j<-i+1 Hasta cantPer-1 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 Cédula';
                  Escribir 'Cédula     Nombre     Apellido    Edad   Sueldo';
                  Para cont<-1 Hasta cantPer-1 Con Paso 1 Hacer
                      Escribir cedula[cont],'      ', nombre[cont],'      ', apellido[cont],'      ',edad[cont],'      ',sueldo[cont];
                  FinPara
      
              'b'://Edad
                  Para i<-1 Hasta cantPer-1 Hacer
                      Para j<-i+1 Hasta cantPer-1 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
                      FinPara
                  FinPara
      
                  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];
                  FinPara
      
              'c'://Sueldo
                  Para i<-1 Hasta cantPer-1 Hacer
                      Para j<-i+1 Hasta cantPer-1 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
                      FinPara
                  FinPara
      
                  Escribir '           Arreglo ordenado por Sueldo';
                  Escribir 'Sueldo     Nombre     Apellido    Edad    Cédula';
                  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';
          FinSegun
      FinProceso
      
       
  • Anonymous

    Anonymous - 2019-03-23

    Hola, soy de Algoritmos I no se mucho de programacion aun, pero lo que te puedo decir:

    Es que en pseint no se puede declarar un arreglo en un ciclo por que no lo soporta el lenguaje como tal. Se ejecuta bien cuando la cantidad de personas es 1° por q recorre todo el codigo, declara Dimension variable[cont] y continua hasta el final. Apartir del 2° ciclo cuando desea de nuevo declarar el arreglo "variable", tira error por que trata de redimensionar ese vector ya usado, que tiene en sus posiciones los valores dados en el 1° ciclo.

    En Java lo que imagino que haria es limpiar la memoria del arreglo y posteriormente asignar un nuevo espacio de acuerdo a la nueva dimension.

    Ejecute tu algoritmo en Java y se ejecuta igual que en el pseint a excepcion del error debido a que si soporta ese tipo de instrucciones.

     
  • Anonymous

    Anonymous - 2020-01-14

    Geraldine pudiste resolver el problema??

     
  • Anonymous

    Anonymous - 2020-10-18

    Realice un programa usando arreglo, que lea el nombre, apellido y la cedula de un ciudadano.

    Coloque en un arreglo nuevo las cedula de los que son extranjeros, así como el nombre y apellido concadenado en otro arreglo nuevo.

    Para saber si el ciudadano tiene ciudadanía extranjero debe tener la provincia en 00.
    me ayudar ese problema

     
  • Anonymous

    Anonymous - 2020-10-18

    Realice un programa usando arreglo, que lea el nombre, apellido y la cedula de un ciudadano.

    Coloque en un arreglo nuevo las cedula de los que son extranjeros, así como el nombre y apellido concadenado en otro arreglo nuevo.

    Para saber si el ciudadano tiene ciudadanía extranjero debe tener la provincia en 00.
    me ayudar ese problema

     
  • Anonymous

    Anonymous - 2021-06-25

    Ayudaaa
    Elabore un algoritmo que permita determinar si el número de la cedula existe o no, de
    acuerdo a la siguiente consideración
    Lea el numero de cedula en 10 variables diferentes
    I
    1 7 1 3 1 7 5 0 7 1
    I P I P I P I P I DV

    • Las posiciones impares se multiplican por (2). Si el resultado de esta multiplicación
      es mayor a nueve, se le resta nueve. EJEMPLO
    • 12,12,12,52,7*2 =
    • 2,2,2,10,14 =
    • 2,2,2,1,5 =12
    • Las posiciones pares se suman. EJEMPLO
    • 7+3+7+0 = 17
    • Se suma el total de pares + impares. EJEMPLO
    • 17+12 = 29
    • Se obtiene el módulo 10 de la suma total anterior Por ejemplo, si la suma fue 29, el
      módulo sería 9.
    • Si el resultado anterior es cero entonces el dígito verificador es cero, caso contrario
      se resta 10 menos el resultado del paso anterior. Por ejemplo la resta sería 10 – 9 =
      1, siendo 1 el dígito verificador calculado.
    • Finalmente se compara el resultado anterior con el último dígito de la cédula si
      son iguales imprima "Cédula Válida" caso contrario imprima "Cédula Incorrecta"
     
  • Anonymous

    Anonymous - 2024-01-21
    Post awaiting moderation.

Anonymous
Anonymous

Add attachments
Cancel