elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con codigo C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con codigo C++  (Leído 16,230 veces)
rjobel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ayuda con codigo C++
« en: 6 Abril 2011, 02:00 am »

Buen día. Estoy estudiando programación, apenas iniciando.
Nos pidieron un programa donde usemos struct. Consultando ejemplos hice un programa, pero no compila. Me marca errores en la linea final. La verdad no se donde esta el problema. Los errores y el codigo completo abajo. ¿Podrían ayudarme para que el programa compile? Gracias por adelantado.

Errores:
 error: expected `while' at end of input
 error: expected `(' at end of input
 error: expected primary-expression at end of input
 error: expected `)' at end of input
 error: expected `;' at end of input
 error: expected `}' at end of input

Codigo:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

main(){
       struct prod{
              char nomProd[30];
              char fecha[10];
              char categoria[20];
              float costo;
              float pVenta;
              } prod[50];
              int cv=0, opc, clave; /*Arreglo de tipo estructura*/
             
       do{
              printf ("Abarrotes Bel-Yes - Registro de Productos \n\n");
              printf ("Opciones \n");
              printf ("1) Registrar producto \n");
              printf ("2) Buscar prudcto \n");
              printf ("3) Salir \n\n");
              printf ("Elige una opcion");
              scanf ("%d", &opc);
             
              switch (opc){      /*Opciones*/
                     case 1:   /*Entrada de datos del producto*/
                          if (cv>=50)
                          printf ("No hay espacio para mas productos en el abarrotes \n");
                          else {
                               printf ("Ingresa los datos del producto \n");
                               printf ("Clave %d \n", cv);
                               printf ("Nombre del Producto: ");
                               fflush (stdin);
                               gets (prod[cv].nomProd);
                               printf ("Fecha de Entrada: [dd/mm/aa]");
                               gets (prod[cv].fecha);
                               printf ("Categoria del Producto: ");
                               gets (prod[cv].categoria);
                               printf ("Costo del Producto: ");
                               scanf ("%f", &prod[cv].costo);
                               cv=cv+1;
                               }
                               break;
                      case 2:  /*Busqueda de producto por clave*/
                           printf ("introduzca la clave a buscar \n");
                           scanf ("%d", &clave);
                           while (clave<0 || clave>=50){
                                 printf ("Nombre del Producto: %s \n", prod[clave].nomProd);
                                 printf ("Fecha de Entrada: %s \n", prod[clave].fecha);
                                 printf ("Categoria: %s \n", prod[clave].categoria);
                                 printf ("Costo del Producto: %f \n", prod[clave].costo);
                                 break;
                      case 3:
                           break;
                           
                      default:
                              printf ("Esa es una opcion invalida \n");
                              break;
                             
                              system("pause");
                              }
                              }while (opc!='3');
                              }


En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Ayuda con codigo C++
« Respuesta #1 en: 6 Abril 2011, 03:09 am »

Existe algo llamado GESHI


En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Ayuda con codigo C++
« Respuesta #2 en: 6 Abril 2011, 10:09 am »

1) No tienes todas las llaves cerradas. Revísalas
2) Eso no es programación estructurada, eso son muchos espacios. Usa el tabulador y estructura bien el código.
3) Tienes faltas de ortografía en los printf ();
4) Usas las funciones inseguras fflush () y gets ().
5) El código es muy largo, se puede acortar.
6) NUNCA uses Conio.
7) Main se debe declarar como un "int main".

PS: La próxima vez usa las etiquetas GeShi
Código
  1. #include <stdio.h>
  2. int main ()
  3. {
  4. printf ("Esto es un ejemplo de etiqueta GeShi.\n");
  5. printf ("A que se ve mejor?\n");
  6. return 0;
  7. }
  8.  

Un saludo. Sagrini
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Ayuda con codigo C++
« Respuesta #3 en: 6 Abril 2011, 10:45 am »

Eso no es C++. Así me compila sin problemas y creo que hace lo que deseas. Como te han dicho, si no tabulas correctamente, se hace complicado leer. No incluyas cabeceras por que suenen bien si luego no haces uso de ellas... :xD (conio!)
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. main(){
  5.       struct prod
  6.       {
  7.              char nomProd[30];
  8.              char fecha[10];
  9.              char categoria[20];
  10.              float costo;
  11.              float pVenta;
  12.              } prod[50];
  13.       int cv=0, opc, clave;
  14.       do
  15.       {
  16.              printf ("Abarrotes Bel-Yes - Registro de Productos \n\n");
  17.              printf ("Opciones \n");
  18.              printf ("1) Registrar producto \n");
  19.              printf ("2) Buscar prudcto \n");
  20.              printf ("3) Salir \n\n");
  21.              printf ("Elige una opcion");
  22.              scanf ("%d", &opc);
  23.  
  24.              switch (opc)
  25.              {    
  26.                     case 1: if (cv>=50) printf ("No hay espacio para mas productos en el abarrotes \n");
  27.                             else
  28.                             {
  29.                               printf ("Ingresa los datos del producto \n");
  30.                               printf ("Clave %d \n", cv);
  31.                               printf ("Nombre del Producto: ");
  32.                               fflush (stdin);
  33.                               gets (prod[cv].nomProd);
  34.                               printf ("Fecha de Entrada: [dd/mm/aa]");
  35.                               gets (prod[cv].fecha);
  36.                               printf ("Categoria del Producto: ");
  37.                               gets (prod[cv].categoria);
  38.                               printf ("Costo del Producto: ");
  39.                               scanf ("%f", &prod[cv].costo);
  40.                               cv=cv+1;
  41.                               }
  42.                               break;
  43.                      case 2:  /*Busqueda de producto por clave*/
  44.                           printf ("introduzca la clave a buscar \n");
  45.                           scanf ("%d", &clave);
  46.                           while (clave>0 || clave<=50){
  47.                                 printf ("Nombre del Producto: %s \n", prod[clave].nomProd);
  48.                                 printf ("Fecha de Entrada: %s \n", prod[clave].fecha);
  49.                                 printf ("Categoria: %s \n", prod[clave].categoria);
  50.                                 printf ("Costo del Producto: %f \n", prod[clave].costo);
  51.                                 break;
  52.  
  53.                      default:
  54.                              printf ("Esa es una opcion invalida \n");
  55.                              break;
  56.  
  57.                              system("pause");
  58.                              }
  59.                              }
  60.                              }
  61.                              while(opc!='3');
  62. }
« Última modificación: 6 Abril 2011, 10:50 am por Tzhed » En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
elviscaspa

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #4 en: 7 Abril 2011, 19:00 pm »

Hola, soy nuevo en esto y quería pedir ayuda.
Sabriaís como puedo insertar un espacio en un string cuando detecte "_"
____________________________________________________
...
..
.

 else {
   if(depth==1)
   {    
     cout<<n->info.get_label()<<"_[ ";
        }

El problema es que no se como se puede declarar n->info.get_label() a string y posteriormente tratarlo, de modo que si encuentra una barra_baja haga una cosa u otra.


Gracias de antemano.
Un saludo
En línea

rjobel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #5 en: 7 Abril 2011, 19:58 pm »

Gracias a todos por sus respuestas.

Encontre que le faltaba una llave antes del último while.
Apenas tengo unos meses estudiando C++ (y programación en realidad), así que estoy en pañales aun. Espero ir mejorando mis códigos.

Dos duda solamente:

1) ¿Es posible crear una version modular (usando funciones) de ese programa?

2) ¿Como uso GESHI? Ya lo descargue pero no se como instalarlo o usarlo. Disculpen mi ignorancia, pero si no pregunto no voy a saber como hacerlo.

Saludos
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Ayuda con codigo C++
« Respuesta #6 en: 7 Abril 2011, 20:49 pm »

Gracias a todos por sus respuestas.

Encontre que le faltaba una llave antes del último while.
Apenas tengo unos meses estudiando C++ (y programación en realidad), así que estoy en pañales aun. Espero ir mejorando mis códigos.

Dos duda solamente:

1) ¿Es posible crear una version modular (usando funciones) de ese programa?

2) ¿Como uso GESHI? Ya lo descargue pero no se como instalarlo o usarlo. Disculpen mi ignorancia, pero si no pregunto no voy a saber como hacerlo.

Saludos

Estas son las Etiquetas GeSHi:

Las encuentras en el editor de texto del foro, y te generaran unas etiquetas para poner tu codigo.


Y si puedes resolver cualquier problema de manera funcional o modular (imagino que hasta cierto grado de complejidad, donde otro paradigma seria más efectivo y flexible), por ejemplo, y es solo un ejemplo porque no he visto el código puedes convertir el proceso lógico de cada una de las operaciones correspondientes a cada item del menú en una función diferente.

Saludos
« Última modificación: 7 Abril 2011, 21:01 pm por gankutsuo » En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Ayuda con codigo C++
« Respuesta #7 en: 7 Abril 2011, 21:36 pm »

Remarcaré mi respuesta, seguís teniendo fallos ya indicados. Y de paso ya indico lo del GeShi...
1) No tienes todas las llaves cerradas. Revísalas
2) Eso no es programación estructurada, eso son muchos espacios. Usa el tabulador y estructura bien el código.
3) Tienes faltas de ortografía en los printf ();
4) Usas las funciones inseguras fflush () y gets ().
5) El código es muy largo, se puede acortar.
6) NUNCA uses Conio.
7) Main se debe declarar como un "int main".

PS: La próxima vez usa las etiquetas GeShi
Código
  1. #include <stdio.h>
  2. int main ()
  3. {
  4. printf ("Esto es un ejemplo de etiqueta GeShi.\n");
  5. printf ("A que se ve mejor?\n");
  6. return 0;
  7. }
  8.  
[/b]

Y luego... sí, piensa cómo quieres dividirlas. Mira ejemplos, no hay forma...
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
rjobel

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #8 en: 9 Abril 2011, 07:11 am »

Bueno, aqui esta de nuevo el código pero ahora con funciones. El programa compila, pero no funciona, pues no ejecuta cada una de las funciones.

Como les comenté antes, soy nuevo en esto y no dispongo de un profesor (estudio online), así que si ven donde está el error les voy a agradecer mucho me lo hagan saber.

Se supone que mañana durante el día debo enviar esta tarea y de verdad necesito su ayuda.

Se que aun tengo que mejorar en las tabulaciones, pero al menos ahora si use GESHI.

Este es el código.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. /*Declaración de Variables*/
  6.       struct prod{
  7.              char nomProd[30];
  8.              char fecha[10];
  9.              char categoria[20];
  10.              float costo;
  11.              } prod[50];/*Arreglo de tipo estructura*/
  12.  
  13.  
  14.              int entrada(void);
  15.              int buscar(void);
  16.              int precio(void);
  17.  
  18.       main()
  19.       {
  20.             int c=0, opc, clave;
  21.  
  22.             do{
  23.              printf ("Abarrotes Bel-Yes - Registro de Productos \n\n");
  24.              printf ("Opciones \n");
  25.              printf ("1) Registrar producto \n");
  26.              printf ("2) Buscar producto \n");
  27.              printf ("3) Precio de venta \n");
  28.              printf ("4) Salir \n\n");
  29.              printf ("Elige una opcion: \n");
  30.              scanf ("%d", &opc);
  31.              }
  32.  
  33.             while (opc!=4); {  
  34.  
  35.                   switch (opc){      /*Opciones*/
  36.                     case 1:
  37.                          entrada();
  38.                          break;
  39.                     case 2:
  40.                          buscar();
  41.                          break;
  42.                     case 3:
  43.                          precio();
  44.                          break;  
  45.                     default:
  46.                              printf ("Esa es una opcion invalida \n");
  47.                              return 0;
  48.                              break;                              
  49.                          }
  50.                     }        
  51.       }  
  52.       /*Declaracion de Funciones*/
  53.       int entrada()
  54.       {
  55.           int c=0;
  56.  
  57.            if (c>=50)
  58.                          printf ("No hay espacio para mas productos en el abarrotes \n");
  59.                          else {
  60.                               printf ("Ingresa los datos del producto \n");
  61.                               printf ("Clave %.2d \n", c);
  62.                               printf ("Nombre del Producto: ");
  63.                               fflush (stdin);
  64.                               gets (prod[c].nomProd);
  65.                               printf ("Fecha de Entrada[dd/mm/aa]: ");
  66.                               gets (prod[c].fecha);
  67.                               printf ("Categoria del Producto: ");
  68.                               gets (prod[c].categoria);
  69.                               printf ("Costo del Producto: ");
  70.                               scanf ("%f", &prod[c].costo);
  71.                               c=c+1;
  72.                               }
  73.                               system ("pause");
  74.                               system ("cls");
  75.                                           }
  76.  
  77.       int buscar()
  78.       {
  79.           int clave;
  80.          printf ("Ingresa la clave a buscar [0-50] \n");
  81.                           scanf ("%d", &clave);
  82.                           while (clave<=50 || clave>0){
  83.                                 printf ("Nombre del Producto: %s \n", prod[clave].nomProd);
  84.                                 printf ("Fecha de Entrada: %s \n", prod[clave].fecha);
  85.                                 printf ("Categoria: %s \n", prod[clave].categoria);
  86.                                 printf ("Costo del Producto: %.2f pesos\n\n\n", prod[clave].costo);
  87.                                 system ("pause");
  88.                                 system ("cls");
  89.  
  90.          }  }
  91.  
  92.       int precio()
  93.       {
  94.           int clave;
  95.            printf ("Ingresa la clave a buscar [0-50] \n");
  96.                           scanf ("%d", &clave);
  97.                           while (clave<=50 || clave>0){
  98.                           printf ("Nombre del Producto: %s \n", prod[clave].nomProd);          
  99.                           printf ("El precio sugerido de Venta es: %.2f pesos\n\n\n", (prod[clave].costo)*1.30);
  100.                           system ("pause");
  101.                           system ("cls");
  102.                           break;
  103.            }
  104.  
  105.            }
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Ayuda con codigo C++
« Respuesta #9 en: 9 Abril 2011, 10:16 am »

Tu do while está mal organizado, me da la impresión:

ejemplo:
Código
  1. do{
  2. lo_que_sea()
  3. }while(algo);
  4. //todo lo que siga no tiene que ver con el bucle


Mientras que tu código se organiza de la siguiente manera:
Código
  1. do{
  2. imprimir
  3. }while(opción!=4);
  4. switch(opcion)

Resultado? Cuando salgas del bucle, tu programa sale, porque la propia opción 4, es la que según tu switch finaliza el programa.

Corrección? el switch debería ir dentro del do:while

Código
  1.  do{
  2.              printf ("Abarrotes Bel-Yes - Registro de Productos \n\n");
  3.              printf ("Opciones \n");
  4.              printf ("1) Registrar producto \n");
  5.              printf ("2) Buscar producto \n");
  6.              printf ("3) Precio de venta \n");
  7.              printf ("4) Salir \n\n");
  8.              printf ("Elige una opcion: \n");
  9.              scanf ("%d", &opc);
  10.              }
  11.                   switch (opc){      /*Opciones*/
  12.                     case 1:
  13.                          entrada();
  14.                          break;
  15.                     case 2:
  16.                          buscar();
  17.                          break;
  18.                     case 3:
  19.                          precio();
  20.                          break;  
  21.                     default:
  22.                              printf ("Esa es una opcion invalida \n");
  23.                              return 0;
  24.                              break;                              
  25.                          }
  26.  
  27.             }while (opc!=4);  
  28.  


Y a menos que me haya dejado alguna llave por abrir o cerrar al copiar y corregir la posición del switch, eso debería funcionarte.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Codigo
Programación Visual Basic
Mitsu_POWA 1 2,004 Último mensaje 26 Julio 2005, 00:25 am
por byebye
Ayuda Con Un Codigo
Programación Visual Basic
Nichas 3 2,102 Último mensaje 26 Agosto 2005, 02:23 am
por ZEALOT
Ayuda con codigo en C (no me ejecuta un for y necesito ayuda) « 1 2 3 »
Programación C/C++
Søra 22 11,585 Último mensaje 22 Mayo 2010, 00:22 am
por Littlehorse
¿Cuál es la diferencia entre código objeto, código máquina y código binario?
Programación General
Aikanáro Anário 9 29,019 Último mensaje 23 Diciembre 2010, 15:19 pm
por pucheto
Ayuda con código mutante C
Programación C/C++
NeoB 4 3,962 Último mensaje 28 Enero 2014, 21:54 pm
por systemfirst97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines