necesito hacer la codificacion en c++

Iniciado por g1s3ll3, 22 Julio 2009, 02:30 AM

0 Miembros y 1 Visitante están viendo este tema.

g1s3ll3

me mandaron hacer una programa, yo hice algo pero no estoy segura de que este bueno... el problema dice así:

desarrolle una estructura que guarde los datos de n alumnos de la materia de lenguaje c y los muestre en pantalla en forma de reporte, la estructura debe tener los siguientes campos (nombre, apellido, dirección, profesión, lugar de nacimiento, edad, teléfono)

#include<stdio.h>
#include<conio2.h>
#define max 5
struct alumnos
{
char nombre[10];
char apellido[10];
char direccion[20];
char profesion[30];
char lugar_nacimiento[20];
int cedula[10];
int edad[2];
int telefono[15];
};
main()
{
struct alumnos programacion[max];
int i=0;
for(i=0;i<max;i++)
{
printf("nombre del alumno:\n\t");
scanf("%s",programacion.nombre);
printf("apellido del alumno:\n\t");
scanf("%s",programacion.apellido);
printf("direccion del alumno:\n\t");
scanf("%s",programacion.direccion);
printf("profesion del alumno:\n\t");
scanf("%s",programacion.profesion);
printf("lugar de nacimiento del alumno:\n\t");
scanf("%s",programacion.lugar_nacimiento);
printf("cedula del alumno:\n\t");
scanf("%i",programacion.cedula);
printf("edad del alumno:\n\t");
scanf("%i",programacion.edad);
printf("telefono del alumno:\n\t");
scanf("%i",programacion.telefono);
printf("\n\n");
}
for(i=i;i<max;i++)
clrscr();//limpiar pantalla
{
printf("%s",programacion.nombre);
printf("t\t\%s",programacion.apellido);
printf("t\t\%s",programacion.direccion);
printf("t\t\%s",programacion.profesion);
printf("t\t\%s",programacion.lugar_nacimiento);
printf("t\t\%i",programacion.cedula);
printf("t\t\%i",programacion.edad);
printf("t\t\%i",programacion.telefono);
}
getch();
return 0;
}

h0oke


leogtz

#2
Tenías muchos errores.

#include<stdio.h>
#define MAX 5
struct alumnos
{
char nombre[10];
char apellido[10];
char direccion[20];
char profesion[30];
char lugar_nacimiento[20];
int cedula;
int edad;
int telefono;
};
int main(void)
{
struct alumnos programacion[MAX];
int i;
for(i=0;i<MAX;i++)
{
printf("nombre del alumno:\n\t");
scanf("%s",programacion[i].nombre);
printf("apellido del alumno %s : \n\t", programacion[i].nombre);
scanf("%s",programacion[i].apellido);
printf("direccion del alumno %s :\n\t", programacion[i].nombre);
scanf("%s",programacion[i].direccion);
printf("profesion del alumno %s:\n\t", programacion[i].nombre);
scanf("%s",programacion[i].profesion);
printf("lugar de nacimiento del alumno %s : \n\t", programacion[i].nombre);
scanf("%s",programacion[i].lugar_nacimiento);
printf("cedula del alumno %s :\n\t", programacion[i].nombre);
scanf("%d", &programacion[i].cedula);
printf("edad del alumno %s : \n\t", programacion[i].nombre);
scanf("%d", &programacion[i].edad);
printf("telefono del alumno %s : \n\t", programacion[i].nombre);
scanf("%d", &programacion[i].telefono);
printf("\n\n");
}
for(i=0;i<MAX;i++)
{
printf("%s",programacion[i].nombre);
printf("\t\t\%s",programacion[i].apellido);
printf("\t\t\%s",programacion[i].direccion);
printf("\t\t\%s",programacion[i].profesion);
printf("\t\t\%s",programacion[i].lugar_nacimiento);
printf("\t\t\%d",programacion[i].cedula);
printf("\t\t\%d",programacion[i].edad);
printf("\t\t\%d",programacion[i].telefono);
printf("\n");
}
while(getchar() != '\n');
getchar();
return 0;
}


No necesitas "conio.h" para pausar el programa, podrías usar:
while(getchar() != '\n');
getchar();

Para pausarlo.
Aqui:
int cedula[10];
int edad[2];
int telefono[15];


No necesitas declararlo como array, ya que estas utilizando un array de registros o estructuras.

Aqui:
int i=0;
for(i=0;i<max;i++)

No necesitas darle el valor a "i" cuando la declaras, ya que luego le darás un valor en el bucle FOR.
Aqui:
printf("nombre del alumno:\n\t");
scanf("%s",programacion.nombre);
printf("apellido del alumno:\n\t");
scanf("%s",programacion.apellido);
...

Como es un array de registros, necesitas especificar el indice del array, así:
programacion[indice].campo

Aqui hay un error:
for(i=i;i<max;i++)
Debió ser:
for(i = 0; i < max; i++)


Igual aqui:
printf("%s",programacion.nombre);
printf("t\t\%s",programacion.apellido);
printf("t\t\%s",programacion.direccion);
...

Utilizalo asi:
programacion[indice].campo

Una cosa más:
#define max 5
Debería ser :
#define MAX 5

Esto es solo por convenio, o sea, buena costumbre.

Y otra cosa:
Es C, no C++
Cualquier duda aqui estamos.

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

fuenteRea

Ya que estas podrias usar los cin y cout, si solo usas la i en un for puedes declararla dentro del for

for(int i=0;....

donde tienes struct ¿No seria typedef struct?


struct alumnos programacion[MAX]; --> se hace fuera del main dentro del main declararas una variable de ese tipo aunque tampoco es lo recomendable, lo mas recomendable seria que usaras programacion orientada a objetos o yo lo veo asi, con una clase alumnos y luego tendras la clase gestorvectoralumnos. En el principal haces las llamadas al gestor segun te convenga.

Lo del convenio si es verdad las constantes en mayusculas podrias usar en vez de #define MAX 5 esto--> const int MAX=5;
Una rosa es una rosa...

leogtz

Cita de: thedoctor77 en 22 Julio 2009, 04:01 AM
Ya que estas podrias usar los cin y cout, si solo usas la i en un for puedes declararla dentro del for

for(int i=0;....

donde tienes struct ¿No seria typedef struct?


struct alumnos programacion[MAX]; --> se hace fuera del main dentro del main declararas una variable de ese tipo aunque tampoco es lo recomendable, lo mas recomendable seria que usaras programacion orientada a objetos o yo lo veo asi, con una clase alumnos y luego tendras la clase gestorvectoralumnos. En el principal haces las llamadas al gestor segun te convenga.

Lo del convenio si es verdad las constantes en mayusculas podrias usar en vez de #define MAX 5 esto--> const int MAX=5;
Pero se ve claramente que lo queire en C y se confundió al poner C++.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Eliptico

#5
Citar
Aqui:
Código:
int i=0;
for(i=0;i<max;i++)
No necesitas darle el valor a "i" cuando la declaras, ya que luego le darás un valor en el bucle FOR.
Es una practica sana de programacion, que ahorra muchos problemas, inicializar las variables nada mas declararlas. Sigue haciendolo, y te ahorraras muchos quebraderos de cabeza buscando el porque de que una variable tenga valores extraños o no se cumplan condiciones que deberias de cumplirse si las hubieses inicializado con el valor correcto.
Citar
Aqui:

Código:
printf("nombre del alumno:\n\t");
scanf("%s",programacion.nombre);
printf("apellido del alumno:\n\t");
scanf("%s",programacion.apellido);
...
Como es un array de registros, necesitas especificar el indice del array, así:

Código:
programacion[indice].campo
Leo, intenta ecribir el indice i entre corchetes en el editor directamente, sin utilizar las etiquetas de codigo, y dale a previsualizar. ¡Sorpresa! ¡Lo estas escribiendo en cursiva!

Y conesto si que puede haber resultados extraños

"\t\t\%s"


Ya que la funcion printf, detectara 3 secuencias de escape: \t   \t   y   \% por lo que te imprimira el especificador de tipo 's' y ya esta. Te sobra la ultima barra invertida:

"\t\t%s"


¡¡¡Un saludo!!!

g1s3ll3

tengo otro programa pero no tengo ni idea de como hacerlo dice asi:

desarrolle un programa y verifique si una palabra es palindrome o no




el otro programa me aclaro las dudas, gracias

novalida

A ver si esto te puede ayudar un poquito.
Puedes guardar la palabra en un array[n] y comparar los elementos de la siguiente manera:
array[0] y array[n-1]
array[1] y array[n-2]
etc... , siendo n el número de letras que contiene la palabra.

Ya contarás qué tal :)

h0oke

Si es una unica palabra puedes ocupar:

int i=0;
bool e=FALSE;

while(i<TAM/2 && !e)
{
       if(palabra[i]!=palabra[TAM-i+1])
       {
             e=TRUE;
       }
       i++;
}

leogtz

CitarEs una practica sana de programacion, que ahorra muchos problemas, inicializar las variables nada mas declararlas. Sigue haciendolo, y te ahorraras muchos quebraderos de cabeza buscando el porque de que una variable tenga valores extraños o no se cumplan condiciones que deberias de cumplirse si las hubieses inicializado con el valor correcto.

Si, es una buena practica darle valores cuando se declaran, pero en este caso no es lo mejor, es redundante hacer:
int i = 10;
    for(i = 1; i <= 50; i++)
    {
        printf("%d ", i);
    }
    printf("\n%d\n");

Ya que en el for le especificas el valor de inicio, entonces, para ella, hubiera sido mejor esto:
int i = 0;
    for(; i <= 50; i++)
    {
        printf("%d ", i);
    }
   


No sé si me esté explicando bien.
Citar
Leo, intenta ecribir el indice i entre corchetes en el editor directamente, sin utilizar las etiquetas de codigo, y dale a previsualizar. ¡Sorpresa! ¡Lo estas escribiendo en cursiva!

Tienes razón, no me había dado cuenta, pero en dado caso, no es mi culpa que no se lea las reglas del foro.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com