Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Registros, estructuras C

Estas en el tema de Registros, estructuras C en el foro de C/C++ en Foros del Web. Hola, no me compila esto, podeis decirme por que? @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código c: Ver original #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h>   void ...
  #1 (permalink)  
Antiguo 27/04/2010, 11:04
 
Fecha de Ingreso: abril-2010
Mensajes: 13
Antigüedad: 14 años, 7 meses
Puntos: 0
Registros, estructuras C

Hola, no me compila esto, podeis decirme por que?
Código c:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. void main()
  7. {
  8.     struct inventario
  9.     {
  10.         char nombrep[5][15];
  11.         int precio[5];
  12.         char codigo]5];
  13.         int unidades[5];
  14.     }
  15.  
  16.     struct muestrario inventario;
  17.     int i, j;
  18.  
  19.     printf ("Dime el nombre de 5 productos\n");
  20.    
  21.     for (i=0; i<=4; i++)
  22.     {
  23.         for (j=0; j<=14; j++)
  24.         {
  25.         scanf ("%d", &invetario.nombrep[i][j])
  26.         }
  27.     }
  28.  
  29.     printf ("Dime sus 5 precios\n");
  30.  
  31.     for (i=0; i<=4; i++)
  32.     {
  33.         scanf ("%d", &inventario.precio[i]);
  34.     }
  35.  
  36.     printf ("Dime cuantas unidades son\n");
  37.    
  38.     for (i=0; i<=4; i++)
  39.     {
  40.         scanf ("%d", &inventario.unidades[i]);
  41.     }
  42.     j=0;
  43.  
  44.     for (i=0; i<=4; i++)
  45.     {
  46.         inventario.codigo[i]=inventario.nombrep[i][j]+inventario.nombrep[i][j+1]+inventario.nombrep(strlen(inventario.nombrep[i][j]);
  47.     }
  48.  
  49.     printf ("El inventario muestra lo siguiente:\n");
  50.  
  51.     printf ("Nombre\t\tprecio\tunidades\tcodigo\n");
  52.    
  53.  
  54.     i=0;
  55.     j=0;
  56.     while (i<=4)
  57.     {
  58.         while (j<=14)
  59.         {
  60.             printf("%d\t\t", &inventario.nombrep[i][j]);
  61.             printf ("%d\t", &inventario.precio[i]);
  62.             printf ("%d\t", &inventario.unidades[i]);
  63.             printf ("%d", inventario.codigo[i]);
  64.  
  65.             j++
  66.         }
  67.         i++;
  68.         printf ("\n");
  69.     }
  70.  
  71.     getch();
  72. }

Enunciado:

Ejercicio 29: Diseña un programa que sea capaz de contener los datos básicos de dos artículos de una ferretería. En concreto se almacenará el nombre del artículo, el número de unidades disponibles, su precio y su código. Los datos de cada artículo, excepto su código, se leerán de teclado. El código de cada artículo estará compuesto por los dos primeros caracteres de su nombre seguidos del último carácter del mismo. Al final se visualizarán en pantalla, de forma apropiada, los datos de cada artículo.


Gracias.
  #2 (permalink)  
Antiguo 27/04/2010, 11:57
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Registros, estructuras C

Una checada rapida al codigo no te vendria mal.
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h> /*Quita esto*/
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. void main()
  7. {
  8.     struct inventario
  9.     {
  10.         char nombrep[5][15];
  11.         int precio[5];
  12.         char codigo]5]; /*codigo[5]*/
  13.         int unidades[5];
  14.     } /*falta punto y coma*/
  15.  
  16.     /*Asi no declaras una variable tipo inventario*/
  17.     struct muestrario inventario;
  18.     int i, j;
  19.  
  20.     printf ("Dime el nombre de 5 productos\n");
  21.  
  22.     for (i=0; i<=4; i++)
  23.     {
  24.         for (j=0; j<=14; j++)
  25.         {
  26.         /*usa scanf("%s", inventario[i]);*/
  27.         scanf ("%d", &invetario.nombrep[i][j])
  28.         }
  29.     }
  30.  
  31.     printf ("Dime sus 5 precios\n");
  32.  
  33.     for (i=0; i<=4; i++)
  34.     {
  35.         scanf ("%d", &inventario.precio[i]);
  36.     }
  37.  
  38.     printf ("Dime cuantas unidades son\n");
  39.  
  40.     for (i=0; i<=4; i++)
  41.     {
  42.         scanf ("%d", &inventario.unidades[i]);
  43.     }
  44.     j=0;
  45.  
  46.     for (i=0; i<=4; i++)
  47.     {
  48.         /*en el strlen usa strlen(inventario.nombre[i])*/
  49.         inventario.codigo[i]=inventario.nombrep[i][j]+inventario.nombrep[i][j+1]+inventario.nombrep(strlen(inventario.nombrep[i][j]);
  50.     }
  51.  
  52.     printf ("El inventario muestra lo siguiente:\n");
  53.  
  54.     printf ("Nombre\t\tprecio\tunidades\tcodigo\n");
  55.  
  56.  
  57.     i=0;
  58.     j=0;
  59.     while (i<=4)
  60.     {
  61.         while (j<=14)
  62.         {
  63.             printf("%d\t\t", &inventario.nombrep[i][j]); /*Aqui imprimes un puntero*/
  64.             printf ("%d\t", &inventario.precio[i]); /*Otravez imprimes otro puntero*/
  65.             printf ("%d\t", &inventario.unidades[i]); /*Lo mismo*/
  66.             printf ("%d", inventario.codigo[i]); /*aqui, esta bien!*/
  67.  
  68.             j++
  69.         }
  70.         i++;
  71.         printf ("\n");
  72.     }
  73.  
  74.     getch(); /*Usa getchar*/
  75. }
  #3 (permalink)  
Antiguo 27/04/2010, 12:00
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Registros, estructuras C

Los parentesis cuadrados hay q balancearlos, mira detenidamente la linea 12.
Los structs son tipos, al definirlos, hay que terminar con un ;
La definicion de structs hazla, en general, afuera de main.
La definicion de variables se hace asi: <tipo> <nombre>; , ejemplo int i;
sin embargo, en la linea 16, supongo que quieres usar el tipo que definiste recien, que se llama struct inventario, no se llama struct muestrario. Por como esta el codigo mas abajo, parece que usas mucho la variable "inventario", de modo que sugiero que mejor le cambies el nombre a la struct para que se llame muestrario.

A veces en vez de escribir inventario, escribes invetario.
  #4 (permalink)  
Antiguo 27/04/2010, 13:20
 
Fecha de Ingreso: abril-2010
Mensajes: 13
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Registros, estructuras C

gracias a los dos, esta casi listo, solo hay un erro en esta linea
Código c:
Ver original
  1. inventario.codigo[i]=inventario.nombrep[i][j]+inventario.nombrep[i][j+1]+inventario.nombrep(strlen(inventario.nombrep[i]));

error2064 El termino no se evalua como una funcion con 1 argumenntos

Yo no quiero llamar a ninguna funcion....
  #5 (permalink)  
Antiguo 27/04/2010, 16:19
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Registros, estructuras C

si pones nombrep( ...
es una funcion.

Etiquetas: estructuras, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:05.