Primero indico que estoy aprendiendo.
Llevo vistos 7 de los videos con los que enseñan c++. Aunque el while no lo ven hasta como por el 16.
Hice este programa con while.
Su objetivo es recabar 5 datos e imprimirlos, así nada más sin ninguna operación.
Mi problema es que no sé cómo imprimirlos bien.
Les muestro lo que tengo:
#include <iostream>
using namespace std;
int main(void)
{
int n=0,a=0,edad[5],e=0,p=0;
string nombre[20],apellido[20];
float prom[5];
while(n<4)
{
cout<<"Dame el nombre "<<(n+1)<<" : ";
cin>>nombre[n];
cout<<"Dame el apellido de "<<nombre[n]<<" : ";
cin>>apellido[a];
cout<<"Dame la edad de "<<nombre[n]<<" "<<apellido[a]<<" : ";
cin>>edad[e];
cout<<"Dame la nota promedio de "<<nombre[n]<<" "<<apellido[a]<<" : ";
cin>>prom[p];
n++;
}
Cómo imprimo estas notas.
Intenté imprimirlos solamente y después por medio de otro while. Pero no me salen.
Podrían decir como hacerlo.
Muchas gracias
que es lo que no funciona?
Creo que te descuidaste un "}" al final. Y si quieres recabar 5 datos en el while tienes que poner un 5 y no un 4
for (int i = 0; i < 4;i++)
{
cout<<nombre[i]<<endl;
cout<<apellido[i]<<endl;
cout<<edad[i]<<endl;
cout<<prom[i]<<endl;
}
Lo que pasa esque hay un problema al guardarlos, tienes que usar la misma variable en todos (n). Elimina la a,la e y la p...
A ver lo hago más simple:
#include <iostream>
using namespace std;
int main(void)
{
string nombre[100];
int cal[3],n,c;
n=0;
while(n<5)
{
cout<<"Dame el nombre "<<(n+1)<<" : ";
cin>>nombre[n];
c=0;
while(c<3)
{
cout<<"Dame la calificacion "<<(n+1)<<" de "<<nombre[n]<<" : ";
cin>>cal[c];
c++;
}
n++;
}
n=0;
while(n<5)
{
cout<<nombre[n]<<endl;
c=0;
while(c<3)
{
cout<<cal[c]<<endl;
c++;
}
n++;
}
return 0;
}
no me imprime bien las calificaciones.
Qué estoy haciendo mal?
Cita de: audiogalaxy. en 30 Mayo 2013, 21:46 PMno me imprime bien las calificaciones.
Más detalles.
Te confieso que me dio más problemas del que me imaginaba, principalmente porque hacia tiempo no usaba matrices, cuando veas entenderas el porque
#include <iostream>
using namespace std;
int main(void)
{
string nombre[100];
int cal[5][3]; //Son 3 calificaciones para 5 alumnos, se usa una matriz bidimensional 5 filas X 3 columnas
int fila; // contador para alumnos, puede ser n, el nombre del contador sirve de referencia
int columna; // contador para las calificaciones
fila=0;
columna=0;
while(fila < 5)
{
cout << "Dame el nombre " << (fila+1) << ": ";
cin >> nombre[fila];
while(columna < 3)
{
cout<<"Dame la calificacion "<<(columna+1)<<" de "<<nombre[fila]<<": ";
cin>>cal[fila][columna];
columna++;
}
fila++;
columna=0;
}
fila=0;
columna=0;
cout << endl << "******CALIFICACIONES******" << endl << endl;
while(fila < 5)
{
cout<<nombre[fila] << ": ";
while(columna < 3)
{
cout<<cal[fila][columna]<< " ";
columna++;
}
cout << endl;
fila++;
columna = 0;
}
cout << endl;
return 0;
}
Muy bien dat000, sólo una pequeña precisión. El la declaración de:
string nombre[100];
el 100 no tiene mucho sentido ya que sólo se van a guardar 5 alumnos, en este supuesto, con lo que yo propongo:
string nombre[5];
Y por otro lado puedo llegar a entender el uso de while como una imposición, pero no como una opción lógica. Para bucles en que se conozcan los valores a introducir es más razonable y simple el uso de los for, dejando el uso de while y do-while para aquellos casos en que no se tiene el total de iteraciones sino que se impone alguna condición para la salida del bucle. Incluso en algunos de estos casos podría servir el for, que como comenté me parece más fácil/transparente de construir y seguir. Y en este sentido propongo una alternativa con for:
#include <iostream>
#define FILA 5
#define COLUMNA 3
using namespace std;
int main(void)
{
string nombre[FILA];
int cal[FILA][COLUMNA]; //Son 3 calificaciones para 5 alumnos, se usa una matriz bidimensional 5 filas X 3 columnas
int fila=0; // contador para alumnos, puede ser n, el nombre del contador sirve de referencia
int columna=0; // contador para las calificaciones
for (fila=0;fila < FILA;fila ++)
{
cout << "Dame el nombre " << (fila+1) << ": ";
cin >> nombre[fila];
for (columna=0;columna < COLUMNA;columna++)
{
cout<<"Dame la calificacion "<<(columna+1)<<" de "<<nombre[fila]<<": ";
cin>>cal[fila][columna];
columna++;
}
}
cout << endl << "******CALIFICACIONES******" << endl << endl;
for (fila=0;fila < FILA;fila ++)
{
cout<<nombre[fila] << ": ";
for (columna=0;columna < COLUMNA;columna++)
{
cout<<cal[fila][columna]<< " ";
columna++;
}
cout << endl;
}
cout << endl;
return 0;
}
Aunque me repito, si se trata de practicar con while ta´O.K.
Saluditos!. ... ..
Cita de: leosansan en 31 Mayo 2013, 00:29 AM
Muy bien dato000, sólo una pequeña precisión. El la declaración de:
string nombre[100];
el 100 no tiene mucho sentido ya que sólo se van a guardar 5 alumnos, en este supuesto, con lo que yo propongo:
Seee lo se, solo deje ahi porque el principal estaba asi,
Cita de: leosansan en 31 Mayo 2013, 00:29 AM
Aunque me repito, si se trata de practicar con while ta´O.K.
Saluditos!. ... ..
Xactamente amigo, lo hice con while porque nuestro amigo necesitaba el trabajo en while, personalmente, prefiero un do-while, pero pues, hay que probar de todo. :laugh: :laugh:
matriz bidimensional. He ahí el problema. Y sí, lo que yo quería era hacerlo con while.
Muchas gracias.