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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


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

Desconectado Desconectado

Mensajes: 3


Ver Perfil
[C++] Necesito una mano :D
« en: 21 Febrero 2014, 01:58 am »

Bueno, hola gente, soy nuevo, ya me estaré presentando.
Tengo que rendir programación, la verdad es que siempre odie el tema porque no lograba entenderlo. Estos últimos dos meses, me puse a estudiar, y creanme, me enamoré de esto, me encanta hacer programitas todo el tiempo, esucuchando música y relajandome jaja.
Bien, vayamos al punto en cuestión. Hice este programa, y tengo un solo error. Me considero un "Novato" o "Principiante" y estoy aprendiendo mucho, pero nunca termino este programa.
Aquí el code:

Citar
/* Trabajo Práctico de Programación FEBRERO 18/*/

#include <stdlib.h>
#include <stdio.h>
#include "string.h"

int main(){
   int cant,c,dni;
   char nomb[150][10],ape[150][10],ts[150][10];
   int cargar(){
   printf ("Ingrese la cantidad de empleados :");
   scanf ("%i",&cant);
   
    for(c=1;cant>=10;c++){
      system("cls");
      printf ("Ingrese el nombre del empleado:",c);
      scanf ("%s",&nomb[c]);
      printf ("Ingrese el apellido del empleado:",c);
      scanf ("%s",&ape[c]);
      printf ("Ingrese el DNI del empleado :",c);
      scanf ("%s",&dni);
      printf ("Ingrese el Tipo de sangre del empleado (POSITIVA-NEGATIVA)",c);
      scanf ("%s",&ts[c]);
      }
   }
int ver(){

     if(cant==0){
                                   printf("No ingreso los empleados");
                                   }
                       else{
                       printf("Empleados:\n");
                       for(c=1;c<=cant;c++){
                                            printf("\n %s %s %s",nomb[c],ape[c],ts[c]);
                                            }
                       }
     }
   
int menu(){
   int opc;
   do{
      system ("cls");
      printf ("Cargar\n Ver\n2 Salir\n3");
      scanf ("%d",&opc);
      switch(opc){
         case 1: cargar();
         break;
         case 2: ver();
         break;
         case 3: printf ("Fin del programa");
         break;
         default: printf ("La opcion es incorrecta");
         break;
         while (opc!=3);
      system ("pause");
      }
      
   }
      }

El error:

Citar
C:\Users\Miguel\Desktop\Nueva carpeta\santi!!!!.c In function `menu':
58 C:\Users\Miguel\Desktop\Nueva carpeta\santi!!!!.c syntax error before '}' token

Como verán, es el último "Corchete" en el que sale el error marcado. Con muchas ansias, espero su respuesta!
Muchas gracias!


En línea

xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: [C++] Necesito una mano :D
« Respuesta #1 en: 21 Febrero 2014, 02:27 am »

Bienvenido. Varias recomendaciones iniciales:
- No escribas todo el texto en negrita: Úsalo para remarcar palabras clave.
- Deja el texto alineado a la izquierda. Es más fácil de leer.
- Usa las etiquetas GeSHi para introducir código.

En cuanto al código, tienes mal puestos los corchetes en la función menú:
Código
  1. int menu(){
  2.   int opc;
  3.   do{
  4.      system ("cls");
  5.      printf ("Cargar\n Ver\n2 Salir\n3");
  6.      scanf ("%d",&opc);
  7.      switch(opc){
  8.         case 1: cargar();
  9.         break;
  10.         case 2: ver();
  11.         break;
  12.         case 3: printf ("Fin del programa");
  13.         break;
  14.         default: printf ("La opcion es incorrecta");
  15.         break;
  16.         while (opc!=3);
  17.      system ("pause");
  18.      }
  19.  
  20.   }

pasaría a ser:
Código
  1. int menu()
  2. {
  3.   int opc;
  4.   do{
  5.      system ("cls");
  6.      printf ("Cargar\n Ver\n2 Salir\n3");
  7.      scanf ("%d",&opc);
  8.      switch(opc){
  9.         case 1: cargar();
  10.         break;
  11.         case 2: ver();
  12.         break;
  13.         case 3: printf ("Fin del programa");
  14.         break;
  15.         default: printf ("La opcion es incorrecta");
  16.         break;
  17.      };
  18.    } while (opc!=3);
  19.    system ("pause");
  20. }
  21.  

Fallos:
- No habías cerrado el switch.
- El corchete para cerrar el bucle do..while estaba mal colocado.

Saludos


En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
Gh057


Desconectado Desconectado

Mensajes: 1.190



Ver Perfil
Re: [C++] Necesito una mano :D
« Respuesta #2 en: 21 Febrero 2014, 02:37 am »

Hola santiagolo justamente, estaba indicándote lo mismo, solo agrego a la excelente explicación de xaps de que el compilador cuando hay un error en la sintaxis, puede informarte en la línea inmediatamente inferior al mismo, ténlo en cuenta ya que puedes estar buscando un error y puede pasar por ejemplo que en la superior le falta el fin de sentencia ";" (para él es la continuación de la misma) o por un fin de bucle o función, etc. Saludos!
« Última modificación: 21 Febrero 2014, 02:40 am por Gh057 » En línea

4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: [C++] Necesito una mano :D
« Respuesta #3 en: 21 Febrero 2014, 02:43 am »

Otros errores son:

* Definir la función "cargar" dentro de la función main:
Código
  1. int main()
  2. {
  3.   int cant,c,dni;
  4.   char nomb[150][10],ape[150][10],ts[150][10];
  5.  
  6. int cargar()
  7. {
  8.   printf ("Ingrese la cantidad de empleados :");
  9.   scanf ("%i",&cant);
  10.  
  11.   for(c=1;cant>=10;c++){
  12.      system("cls");
  13.      printf ("Ingrese el nombre del empleado:",c);
  14.      scanf ("%s",&nomb[c]);
  15.      printf ("Ingrese el apellido del empleado:",c);
  16.      scanf ("%s",&ape[c]);
  17.      printf ("Ingrese el DNI del empleado :",c);
  18.      scanf ("%s",&dni);
  19.      printf ("Ingrese el Tipo de sangre del empleado (POSITIVA-NEGATIVA)",c);
  20.      scanf ("%s",&ts[c]);
  21.   }
  22. }

* Bucle do ... while mal estructurado en la función "menu".

* En la función "cargar" tienes un bucle infinito:
Código
  1. for(c=1;cant>=10;c++){
  2.   /* Bucle infinito ya que no se modifica el valor de cant */

* En esa misma función no puedes utilizar la variable "cant" ya que esta la declaras en la función main.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
santiagolo

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: [C++] Necesito una mano :D
« Respuesta #4 en: 21 Febrero 2014, 04:14 am »

Uy, quedé sumamente sorprendido con sus respuestas, no esperaba tanta ayuda jajaja. Muchísimas gracias!

Por otro lado, surgió otro problemita, cuando compilo el programa, se cierra automáticamente!
¿A qué se debe esto?


Citar
Código:
/* Trabajo Práctico de Programación FEBRERO 18/*/

#include <stdlib.h>
#include <stdio.h>
#include "string.h"
int main()
{
   int cant,c,dni;
   char nomb[150][10],ape[150][10],ts[150][10];
 
int cargar()
{
   printf ("Ingrese la cantidad de empleados :");
   scanf ("%i",&cant);
 
   for(c=1;cant>=10;c++){
      system("cls");
      printf ("Ingrese el nombre del empleado:",c);
      scanf ("%s",&nomb[c]);
      printf ("Ingrese el apellido del empleado:",c);
      scanf ("%s",&ape[c]);
      printf ("Ingrese el DNI del empleado :",c);
      scanf ("%s",&dni);
      printf ("Ingrese el Tipo de sangre del empleado (POSITIVA-NEGATIVA)",c);
      scanf ("%s",&ts[c]);
   }
}
int ver(){

     if(cant==0){
                                   printf("No ingreso los empleados");
                                   }
                       else{
                       printf("Empleados:\n");
                       for(c=1;c<=cant;c++){
                                            printf("\n %s %s %s",nomb[c],ape[c],ts[c]);
                                            }
                       }
     }

int menu()
{
   int opc;
   do{
      system ("cls");
      printf ("Cargar\n Ver\n2 Salir\n3");
      scanf ("%d",&opc);
      switch(opc){
         case 1: cargar();
         break;
         case 2: ver();
         break;
         case 3: printf ("Fin del programa");
         break;
         default: printf ("La opcion es incorrecta");
         break;
      };
    } while (opc!=3);
    system ("pause");
}
}


PD: Los colores del texto, se me desconfiguraron, pero logré colocarlos en Herramientas/OpcionesDelEditor/Sintaxis, y acá no funcionan :(
En línea

xaps

Desconectado Desconectado

Mensajes: 157



Ver Perfil
Re: [C++] Necesito una mano :D
« Respuesta #5 en: 21 Febrero 2014, 11:32 am »

Me autocito:
Varias recomendaciones iniciales:
- No escribas todo el texto en negrita: Úsalo para remarcar palabras clave.
- Deja el texto alineado a la izquierda. Es más fácil de leer.
- Usa las etiquetas GeSHi para introducir código.

Para los colores del código usa GeSHi como ya te he dicho, lo tienes justo encima de la opción de cambiar color.

Y el programa se cierra por una simple razón: No tiene ninguna pausa. Se ejecutan las instrucciones del main y finaliza. Si quieres que no se te cierre solo, puedes hacer que se mantenga a la espera de un input.

Por cierto, desde el main no llamas a ninguna de las funciones que has programado, repásalo.
En línea

"The programmers of tomorrow are the wizards of the future" - Gave Newel
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[GUI] Necesito una mano (Solucionado)
Programación Visual Basic
Data Seek3r 4 2,351 Último mensaje 28 Abril 2010, 08:25 am
por Data Seek3r
Hola Gente... necesito una mano « 1 2 »
Ingeniería Inversa
capjacksparrow 15 8,994 Último mensaje 14 Mayo 2011, 01:06 am
por capjacksparrow
Necesito una mano . [Función en PHP]
Hacking
TheStroker 0 2,080 Último mensaje 2 Agosto 2012, 03:38 am
por TheStroker
sorri necesito una mano
Hacking Wireless
txaske 4 2,538 Último mensaje 9 Diciembre 2013, 09:44 am
por txaske
Necesito una mano para calcular distancias XY « 1 2 »
Java
WHK 13 6,180 Último mensaje 23 Octubre 2016, 22:14 pm
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines