Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: g1s3ll3 en 22 Julio 2009, 02:30 am



Título: necesito hacer la codificacion en c++
Publicado por: g1s3ll3 en 22 Julio 2009, 02:30 am
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;
}


Título: Re: necesito hacer la codificacion en c++
Publicado por: h0oke en 22 Julio 2009, 03:17 am
¿Y cuál es tu duda?


Título: Re: necesito hacer la codificacion en c++
Publicado por: leogtz en 22 Julio 2009, 03:35 am
Tenías muchos errores.

Código
  1. #include<stdio.h>
  2. #define MAX 5
  3. struct alumnos
  4. {
  5. char nombre[10];
  6. char apellido[10];
  7. char direccion[20];
  8. char profesion[30];
  9. char lugar_nacimiento[20];
  10. int cedula;
  11. int edad;
  12. int telefono;
  13. };
  14. int main(void)
  15. {
  16. struct alumnos programacion[MAX];
  17. int i;
  18. for(i=0;i<MAX;i++)
  19. {
  20. printf("nombre del alumno:\n\t");
  21. scanf("%s",programacion[i].nombre);
  22. printf("apellido del alumno %s : \n\t", programacion[i].nombre);
  23. scanf("%s",programacion[i].apellido);
  24. printf("direccion del alumno %s :\n\t", programacion[i].nombre);
  25. scanf("%s",programacion[i].direccion);
  26. printf("profesion del alumno %s:\n\t", programacion[i].nombre);
  27. scanf("%s",programacion[i].profesion);
  28. printf("lugar de nacimiento del alumno %s : \n\t", programacion[i].nombre);
  29. scanf("%s",programacion[i].lugar_nacimiento);
  30. printf("cedula del alumno %s :\n\t", programacion[i].nombre);
  31. scanf("%d", &programacion[i].cedula);
  32. printf("edad del alumno %s : \n\t", programacion[i].nombre);
  33. scanf("%d", &programacion[i].edad);
  34. printf("telefono del alumno %s : \n\t", programacion[i].nombre);
  35. scanf("%d", &programacion[i].telefono);
  36. printf("\n\n");
  37. }
  38. for(i=0;i<MAX;i++)
  39. {
  40. printf("%s",programacion[i].nombre);
  41. printf("\t\t\%s",programacion[i].apellido);
  42. printf("\t\t\%s",programacion[i].direccion);
  43. printf("\t\t\%s",programacion[i].profesion);
  44. printf("\t\t\%s",programacion[i].lugar_nacimiento);
  45. printf("\t\t\%d",programacion[i].cedula);
  46. printf("\t\t\%d",programacion[i].edad);
  47. printf("\t\t\%d",programacion[i].telefono);
  48. printf("\n");
  49. }
  50. while(getchar() != '\n');
  51. return 0;
  52. }
  53.  

No necesitas "conio.h" para pausar el programa, podrías usar:
Código:
while(getchar() != '\n');
getchar();
Para pausarlo.
Aqui:
Código:
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:
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.
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

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

Igual aqui:
Código:
printf("%s",programacion.nombre);
printf("t\t\%s",programacion.apellido);
printf("t\t\%s",programacion.direccion);
...
Utilizalo asi:
Código:
programacion[indice].campo
Una cosa más:
Código:
#define max 5
Debería ser :
Código:
#define MAX 5
Esto es solo por convenio, o sea, buena costumbre.

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



Título: Re: necesito hacer la codificacion en c++
Publicado por: fuenteRea 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;


Título: Re: necesito hacer la codificacion en c++
Publicado por: leogtz en 22 Julio 2009, 04:16 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++.


Título: Re: necesito hacer la codificacion en c++
Publicado por: Eliptico en 22 Julio 2009, 10:53 am
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
Código
  1. "\t\t\%s"
  2.  

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:
Código
  1. "\t\t%s"
  2.  

¡¡¡Un saludo!!!


Título: Re: necesito hacer la codificacion en c++
Publicado por: g1s3ll3 en 22 Julio 2009, 18:44 pm
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


Título: Re: necesito hacer la codificacion en c++
Publicado por: novalida en 22 Julio 2009, 18:55 pm
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 :)


Título: Re: necesito hacer la codificacion en c++
Publicado por: h0oke en 22 Julio 2009, 19:02 pm
Si es una unica palabra puedes ocupar:

Código
  1. int i=0;
  2. bool e=FALSE;
  3.  
  4. while(i<TAM/2 && !e)
  5. {
  6.       if(palabra[i]!=palabra[TAM-i+1])
  7.       {
  8.             e=TRUE;
  9.       }
  10.       i++;
  11. }


Título: Re: necesito hacer la codificacion en c++
Publicado por: leogtz en 22 Julio 2009, 19:34 pm
Citar
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:
Código
  1. int i = 10;
  2.    for(i = 1; i <= 50; i++)
  3.    {
  4.        printf("%d ", i);
  5.    }
  6.    printf("\n%d\n");
Ya que en el for le especificas el valor de inicio, entonces, para ella, hubiera sido mejor esto:
Código
  1. int i = 0;
  2.    for(; i <= 50; i++)
  3.    {
  4.        printf("%d ", i);
  5.    }
  6.  

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.


Título: Re: necesito hacer la codificacion en c++
Publicado por: kconik en 27 Mayo 2010, 02:17 am
oigan necesito una ayuda con esto de c++
necesito hacer la codificacion de este problema


se desea capturar un numero entero y atravez del desplegado de mensajes indicar si es positivo o negativo y si es par o impar


Título: Re: necesito hacer la codificacion en c++
Publicado por: h0oke en 27 Mayo 2010, 02:20 am
NO SE HACEN TAREAS.