Autor
|
Tema: necesito hacer la codificacion en c++ (Leído 10,910 veces)
|
g1s3ll3
Desconectado
Mensajes: 5
|
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; }
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
¿Y cuál es tu duda?
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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); } 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); } 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.
|
|
« Última modificación: 22 Julio 2009, 03:39 am por Leo Gutierrez. »
|
En línea
|
|
|
|
fuenteRea
Desconectado
Mensajes: 2.709
Volver a ser un niño
|
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;
|
|
|
En línea
|
Una rosa es una rosa...
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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++.
|
|
|
En línea
|
|
|
|
Eliptico
Desconectado
Mensajes: 153
|
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. 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!!!
|
|
« Última modificación: 22 Julio 2009, 11:08 am por Eliptico »
|
En línea
|
|
|
|
g1s3ll3
Desconectado
Mensajes: 5
|
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
|
|
|
En línea
|
|
|
|
novalida
Desconectado
Mensajes: 160
|
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
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
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++; }
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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. 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++) { }
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++) { }
No sé si me esté explicando bien. 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.
|
|
|
En línea
|
|
|
|
|
|