programa con while [c++]

Iniciado por audiogalaxy., 30 Mayo 2013, 18:30 PM

0 Miembros y 2 Visitantes están viendo este tema.

audiogalaxy.

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:

Código (cpp) [Seleccionar]
#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
Qué sería de dios sin el Hombre.

Stakewinner00

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

amchacon

Código (cpp) [Seleccionar]
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...
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

audiogalaxy.

A ver lo hago más simple:

Código (cpp) [Seleccionar]
#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?

Qué sería de dios sin el Hombre.

amchacon

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

dato000

Te confieso que me dio más problemas del que me imaginaba, principalmente porque hacia tiempo no usaba matrices, cuando veas entenderas el porque

Código (c++) [Seleccionar]

#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;
}



leosansan

Muy bien dat000, sólo una pequeña precisión. El la declaración de:

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
#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!. ... ..

dato000

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:

Código (cpp) [Seleccionar]
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:



audiogalaxy.

matriz bidimensional. He ahí el problema. Y sí, lo que yo quería era hacerlo con while.

Muchas gracias. 
Qué sería de dios sin el Hombre.