Examen Final de C en UTN FRRO

Iniciado por Gonzalo Leonardo, 12 Mayo 2010, 02:28 AM

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

Gonzalo Leonardo

Hola!! Tengo aquí un problemita con los punteros y los prototipos de funciones que me dan. Los prototipos que me dan son estos:

void carga_rubros(struct rubros *);
void pantalla_rubros(struct rubros *);

...los cuales debo declararlos y usarlos tal como estan ahí. Ahora bien....no se como trabajarlos. Lo debía hacer en el programa era cargar los rubros, mostrarlos, y luego que el cliente despues de elegir el rubro, trabaje con los productos de ese rubro, pero esta ultima parte no interesa....me interesa saber como cargarlos y mostrarlos de acuerdo con los prototipos que me dieron. Esto resulto de mi:

#include<stdio.h>

struct produ {
   int codigoProd, stock;
   char nombreProd[30], marcaProd[20];
   float precioProd;
};

struct rubros {
   char rubro[20];
   struct produ info_productos;
};

void carga_rubros(struct rubros *);
void pantalla_rubros(struct rubros *);

main()
{
struct rubros info_rubros[3], *ru;
struct produ info_productos[10], *pro;

carga_rubros(ru);
pantalla_rubros(ru);
getche();
return 0;
}

void carga_rubros(struct rubros *ru)
{
int a;
for(a=0; a<3; a++) {
   printf("Nombre Rubro: ");
   flushall();
   scanf("%s", ru->rubro);
};
return 0;
}

void pantalla_rubros(struct rubros *ru)
{
int b;
for(b=0; b<3; b++) {
   printf("%s\n", ru->rubro);
};
return 0;
}

Esto es lo que me hace...cargo: frio, calor, lalala
Luego me muestra lo siguiente: lalala, lalala, lalala

Soy un novato tremendo. Ayuda por favor. Gracias de antemano

.:BlackCoder:.

ru nunca apunta a una estructura... para empezar cambiale eso y despues veo to el code....

Saludos...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Gonzalo Leonardo

La verdad es que ni yo se a lo que apunta. Tampoco se como corregir esto o mejor dicho como resolverlo. Tengo un problemita bastante grande con punteros, ya que no los comprendo. Si me pueden dar algun buen manualcito o guia para leer, será bienvenido.

Los punteros muy muy comunes si los se usar, pero mi problema es con los punteros a estructuras, a funciones, etc.

.:BlackCoder:.

weno me imagino que na mas tienes que darle la direccion de una estructura algo asi...

Código (cpp) [Seleccionar]
struct X ejemplo;
struct X *p_ejem=&ejemplo;


Y ya  :xD pruebalo a ver... Sobre un tutorial... aca en el foro hay uno, hecho por "do while", usa el buscador del foro...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Gonzalo Leonardo

EURECAAAA...

Solucionado amigos...consegui que funcionara. Muchas gracias por todo...esto es solo el comienzo de mi aprendizaje con este gran lenguaje.

Aquí dejo la solucion a mi problema...asiq, estudiaré mas teoría y luego seguiré echando codigos para terminar el programa completo.

#include<stdio.h>

struct produ {
   int codigoProd, stock;
   char nombreProd[30], marcaProd[20];
   float precioProd;
};

struct rubros {
   char rubro[20];
   struct produ info_productos;
};

void carga_rubros(struct rubros *);
void pantalla_rubros(struct rubros *);

main()
{
struct rubros info_rubros[3], *ru;
struct produ info_productos[10], *pro;

carga_rubros(ru);
pantalla_rubros(ru);
getche();
return 0;
}

void carga_rubros(struct rubros *ru)
{
int a;
for(a=0; a<3; a++) {
   printf("Nombre Rubro: ");
   flushall();
   scanf("%s", &ru->rubro);
   ru++;
};
}

void pantalla_rubros(struct rubros *ru)
{
int b;
for(b=0; b<3; b++) {
   printf("%s\n", ru->rubro);
   ru++;
};
}

.:BlackCoder:.

De nuevo no le diste la direccion de una estructura a ru, ni al otro puntero...  :¬¬
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




Gonzalo Leonardo

Si si, lo que vos decis esta perfecto y sería así:

.
.
.
main()
{
struct rubros info_rubros;
struct rubros *ru=&info_rubros;
.
.
.

Así y todo, como yo lo hago también funciona y ahorro código. Tengamos en cuenta que soy novato y me puedo confundir, pero el programa ya está probado y anda, y hace lo que quiero XD.