Dev - C++ - Imprimir los elementos de la lista, imprimir el nombre más largo y el más corto

 
Vista:
Imágen de perfil de Francisco
Val: 49
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Imprimir los elementos de la lista, imprimir el nombre más largo y el más corto

Publicado por Francisco (36 intervenciones) el 02/01/2018 03:34:08
Hola usuarios:
Hice el siguiente codigo en c++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream>
#include<string.h>
using namespace std;
main(){
       string arr[10];
       int i=0;
       int c=0,d=0,pos=0;
       for(i=0;i<10;i++){
        cout<<"ingrese los nombres "<<endl;
        cin >>arr[i];
       }
       for(i=0;i<10;i++){
        cout <<"nombres de la lista "<<arr[i]<<" ";
       }
       string mascorto=arr[0];
        int mayor=mascorto.length();
       for(i=0;i<10;i++){
        string comparacion=arr[i];
        if(c<mayor){
            mayor=c;
            pos=i;
        }
       }
       cout<<"nombre mas corto "<<arr[pos]<<endl;
 
        string maslargo=arr[0];
        int menor=maslargo.length();
        for(i=0;i<10;i++){
            string comparacion=arr[i];
            if(d>menor){
                menor=d;
                pos=i;
            }
        }
        cout<<"nombre mas largo "<<arr[pos]<<endl;
 
        return 0;
}

Se trata de crear un array unidimensional de 20 elementos que contenga nombres. Hay que imprimir los elementos del array, el nombre más largo y el mas corto.
En el ejercicio tengo que pedir los nombres (o sea como usuario tengo que ingresar los nombres), sin embargo, cuando imprimo el mas largo y el nombre mas corto, me aparece en la pantalla que el nombre mas largo y mas corto es el mismo con la menor letra del orden del abecedario, pase a codigo fuente el ejercicio que habíamos hecho con el Profesor en clase, pero me sale mal, no me imprime como debería. ¿Dónde está el error?, ¿Podrían decirme cómo corregirlo?, no pido que me lo resuelvan, sino indicar cómo puedo hacer por ej. si ingreso coca y lavamanosmanosmanos que me imprima como nombre mas corto: coca y como mas largo: lavamanosmanosmanos. Y no que imprima como mas corto y mas largo un nombre que empieza con la letra de menor orden del abecedario por ej si ingreso 10 palabras una que empiece con la letra m y las demas con la letra z, que me imprima como nombre largo y mas corto esa que empieza con m.
Les agradecería si me ayudasen.
Y que pasen muy feliz año nuevo.
Felicidades
PD: la lógica del menor=arreglo[0]; o mayor=arreglo[0]; solo sirve para las variables de tipo integer (int), char o float, pero creo que no sirve para las variables de tipo string (que sería un tipo de dato no primitivo)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 122
Ha aumentado su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Imprimir los elementos de la lista, imprimir el nombre más largo y el más corto

Publicado por Andrés (53 intervenciones) el 03/01/2018 16:56:25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//suponer inicialmente que las cadenas de mayor y menor longitud están en el índice 0
mayorIdx <- 0
menorIdx <- 0
 
//recorrer el arreglo
para i <- 0 hasta 9 incremento 1 hacer
 
    //es la longitud de la cadena en la posición i mayor o igual que la cadena en posición mayorIdx?
    si arr[i].length() >= arr[mayorIdx].length() entonces
    //actualizar el índice
    mayorIdx <- i
fin_si
 
    //es la longitud de la cadena en la posición i menor que la cadena en posición menorIdx?
    si arr[i].length() < arr[menorIdx].length() entonces
    //actualizar el índice
    menorIdx <- i
fin_si
 
fin_para
 
imprimir "nombre más corto: " + arr[menorIdx]
imprimir "nombre más largo: " + arr[mayorIdx]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar