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++:
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)
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
0