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

Ayuda con este programa?

Estas en el tema de Ayuda con este programa? en el foro de C/C++ en Foros del Web. Primero que nada me presento, soy nuevo en este foro y veo que es el más completo de C y C++ que hay. He estado ...
  #1 (permalink)  
Antiguo 10/07/2010, 16:37
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 4 meses
Puntos: 0
Ayuda con este programa?

Primero que nada me presento, soy nuevo en este foro y veo que es el más completo de C y C++ que hay.
He estado quebrandome la cabeza con este programa, al compilarlo me dice que hay un error de sintaxis donde a mi parecer no existe ningún error, cual puede ser el error aquí? Otra cosa, no se como modificar y eliminar un dato que he ingresado ya que el programa trata de eso: capturar, modificar y eliminar datos.

Aquí está el código:

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. // |------------------------------------------------|
  7. // |Programa de la escuela Universidad de Occidente |
  8. // |Mostrará el nombre y matrícula del alumno y     |
  9. // |posteriormente su promedio general, al final    |
  10. // |muestra en la columna si está acreditado o no.  |
  11. // |------------------------------------------------|
  12.  
  13. char menu();
  14. int capturar();
  15. int modificar();
  16. int eiminar();
  17. int imprimir();
  18.  
  19. int main()
  20. {
  21.     char nombre[20],res;
  22.     int matricula[8];
  23.     int opcion;
  24.     int i;
  25.     int cal1,cal2,cal3;
  26.     float promedio,resultado;
  27.     {
  28.         char opcion='6';
  29.         do{
  30.             opcion=menu();
  31.         }
  32.         while (opcion!='5');
  33.         return 0;
  34.     }
  35.    
  36.     char menu()
  37.     { //Aqui me marca el error
  38.         char opc;
  39.         system("cls");
  40.         printf("\t\t\t=========================================");
  41.         printf("\t\t Universidad de Occidente 2010 ");
  42.         printf("Capturar datos............[1]");
  43.         printf("Modificar datos...........[2]");
  44.         printf("Eliminar datos............[3]");
  45.         printf("Imprimir datos............[4]");
  46.         printf("Salir.....................[5]");
  47.         printf("========================================");
  48.         scanf("%c",&opc);
  49.         system("cls");
  50.        
  51.         switch(opc)
  52.         {
  53.             case '1':{
  54.                 capturar();
  55.                 getch();
  56.                 break;
  57.             }
  58.                
  59.             case '2':{
  60.                 modificar();
  61.                 getch();
  62.                 break;
  63.             }
  64.                
  65.             case '3':{
  66.                 eliminar();
  67.                 getch();
  68.                 break;
  69.             }
  70.            
  71.             case '4':{
  72.                 imprimir();
  73.                 getch();
  74.                 break;
  75.             }
  76.            
  77.             case '5':{
  78.                 printf("Gracias, que tenga buen dia");
  79.                 getch();
  80.             }
  81.            
  82.             return opc;
  83.         }
  84.        
  85.         int capturar();
  86.         {
  87.             int ac,na;
  88.         system("cls");
  89.         do
  90.         {
  91.             printf("Ingresa el nombre del alumno: ");
  92.             scanf("%c",&nombre[i]);
  93.             printf("\n Ingresa la matrícula del alumno: ");
  94.             scanf("%d",&matricula);
  95.             printf("\n Ingresa la calificación 1: ");
  96.             scanf("%d",&cal1);
  97.             printf("\n Ingresa la calificación 2: ");
  98.             scanf("%d",&cal2);
  99.             printf("\n Ingresa la calificación 3: ");
  100.             scanf("%d",&cal3);
  101.             printf("\n ¿Desea realizar otra captura?: (S/N)");
  102.             scanf("%s",&res);
  103.            
  104.         while((res=='S') || (res=='s'));
  105.         system("cls");
  106.         promedio=(cal1+cal2+cal3)/3;
  107.         if (promedio<70)
  108.         {
  109.             scanf("%d",&na);
  110.         }
  111.        
  112.         else
  113.         {
  114.             scanf("%d",&ac);
  115.     }
  116.    
  117.     int modificar();
  118.     {  
  119.         system("cls");
  120.         int modifica;
  121.         printf("Estos son los datos guardados: \n");
  122.         printf("\n1.- %c",nombre);
  123.         printf("\n2.- %d",matricula);
  124.         printf("\n3.- %d",cal1);
  125.         printf("\n4.- %d",cal2);
  126.         printf("\n5.- &d",cal3);
  127.         printf("\n ¿Qué dato desea modificar?: (1-5)");
  128.         scanf("%d",&modifica);
  129.     }
  130.    
  131.     int eliminar();
  132.     {
  133.         printf("Estos son los datos guardados: \n");
  134.         printf("\n1.- %c",nombre);
  135.         printf("\n2.- %d",matricula);
  136.         printf("\n3.- %d",cal1);
  137.         printf("\n4.- %d",cal2);
  138.         printf("\n5.- &d",cal3);
  139.         printf("\n ¿Qué dato desea eliminar?: (1-5)");
  140.     }
  141.    
  142.     int imprimir();
  143.     {
  144.        
  145.     printf("Nombre del Alumno:")
  146.     printf("%c",alumno);
  147.     printf("Matricula: ");
  148.     printf("%d",matricula);
  149.     printf("Promedio: ");
  150.     printf("%f",promedio);
  151.     printf("AC / NA");
  152.     if (promedio<70)
  153.     printf("No acreditado");
  154.    
  155.     else (promedio>=70)
  156.     printf("Acreditado");
  157. }
  158. return 0;
  159.  
  160. }
Si alguien me pudiera ayudar se lo agradecería bastante, tengo menos de una semana para entregar este programa.

Última edición por AdolfoMX; 10/07/2010 a las 16:45
  #2 (permalink)  
Antiguo 10/07/2010, 19:47
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Ayuda con este programa?

A simple vista veo que tienes problemas con las llaves. Por ejemplo, fijate que cuando definis el main abris llave y despues de las variables locales volves a abrir las llaves. Checkea eso en todo el programa. Al tener estos problemas de llaves tus funciones quedan anidadas una adentro de la otra y esto en c no esta permitido.

Segundo seria bueno que nos transcriba los errores que tenes.
  #3 (permalink)  
Antiguo 12/07/2010, 01:11
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 14 años, 5 meses
Puntos: 73
Respuesta: Ayuda con este programa?

Como dice sam90, has anidado tus funciones dentro de main(), lo cual no puede hacerse en C. Algunas sugerencias:

Elimina las llaves de las líneas 17 y 34, no las necesitas.

Pon la llave de cierre de main() después del primer return, justo antes de la implementación de la función menu(). Con esto, desaparece el anidamiento de funciones.

Lo que hay desde la línea 158 en adelante ya no es necesario, salvo la llamada a getch(), que tendrás que ponerla justo antes del return de la función main().

Saludos,
  #4 (permalink)  
Antiguo 12/07/2010, 19:15
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda con este programa?

Gracias, en verdad me han servido sus respuestas, el programa ahora corre bien pero al momento de ingresar 2 datos (nombre,matricula,cal1,cal2,cal3) osea mas de dos nombres y dos matrículas y así sucesivamente, en las funciones de modificar, eliminar e imprimir solo me muestra los últimos datos que capturé, como puedo solucionarlo?
  #5 (permalink)  
Antiguo 13/07/2010, 07:50
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Ayuda con este programa?

Podrias pasar el codigo de nuevo, haber como quedo..... porque por lo que se ve arriba deberias tener varios fallos de compilacion sobre deficicion de variables....habri que corregir eso.

Ademos por esta definiciones parece uqe solo guardaste espacio para ingresar datos para una sola persona. Al capturear la segunda esta pisa a la primera
  #6 (permalink)  
Antiguo 16/07/2010, 04:20
 
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda con este programa?

Este es el nuevo código que hice, lo que no puedo hacer es que con un file me imprima todos los datos que tengo guardados ahí. Al momento de capturar captura los N datos y los guarda en el archivo que creé con el FILE. Tengo la función de imprimir y cuando imprime solo imprime el último numero que ingrese al file en vez de imprimir todos los que tengo ahí. Otra cosa, al momento de iniciar una búsqueda el programa quiebra y ya no me permite hacer nada, ojala me pudieran ayudar con esto que tengo ya 3 noches sin dormir para poder hacerlo.

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <fstream.h>
  6. #include <dos.h>
  7. #include <string.h>
  8.  
  9. char menu();
  10. int capturar();
  11. char modificar();
  12. int eliminar();
  13. int imprimir();
  14.  
  15.     struct alumnos
  16.     {
  17.     char nombre[20];
  18.     int cal1,cal2,cal3;
  19.     char matricula[7];
  20.     }datos;
  21.  
  22.     int i,a,res;
  23.     float promedio;
  24. int main ()
  25. {
  26. textcolor(15);
  27. textbackground(BLUE);
  28.  
  29.     {
  30.     char opcion='7';
  31.     do{
  32.         opcion=menu();
  33.     }
  34.  
  35.     while (opcion!='5');
  36.     return 0;
  37.     }
  38. }
  39.     char menu()
  40.     {
  41.     char opc;
  42.     clrscr();
  43.     gotoxy(30,3);printf("  -*-*-*-*-*-*-*-*-*-*-*-");
  44.     gotoxy(30,4);printf("   Bienvenidos al sistema ");
  45.     gotoxy(30,5);printf("  -*-*-*-*-*-*-*-*-*-*-*-");
  46.     gotoxy(30,8);printf("*------------------------*");
  47.     gotoxy(30,9);printf("| Capturar...........[1] |");
  48.     gotoxy(30,11);printf("| Modificar..........[2] |");
  49.     gotoxy(30,13);printf("| Eliminar...........[3] |");
  50.     gotoxy(30,15);printf("| Imprimir...........[4] |");
  51.     gotoxy(30,17);printf("| Salir..............[5] |");
  52.     gotoxy(30,18);printf("*------------------------*");
  53.     gotoxy(32,19);printf("¨Que opcion desea?: ");
  54.     scanf("%c",&opc);
  55.  
  56.     clrscr();
  57.  
  58.     switch(opc)
  59.     {
  60.         case '1':{
  61.         capturar();
  62.         break;
  63.         }
  64.  
  65.         case '2':{
  66.         modificar();
  67.         break;
  68.         }
  69.  
  70.         case '3':{
  71.         eliminar();
  72.         break;
  73.         }
  74.  
  75.         case '4':{
  76.         imprimir();
  77.         getch();
  78.         break;
  79.         }
  80.  
  81.         case '5':{
  82.         gotoxy(27,10);printf("-----------------------------------");
  83.         gotoxy(27,11);printf("| Gracias por su preferencia. ¸UDO |");
  84.         gotoxy(27,12);printf("-----------------------------------");
  85.         delay(1000);
  86.  
  87.         }
  88.       }
  89.     return opc;
  90.     }   //cierra char
  91.  
  92.      int capturar()
  93.      {
  94.       FILE *DATOS;
  95.      DATOS = fopen("datos2.txt","at+");
  96.  
  97.     do
  98.     {
  99.      clrscr();
  100.      printf("\t\t\t| Sistema de calificaciones UDO |");
  101.      printf("\n--------------------------------------------------------------------------------");
  102.      printf("\n");
  103.      printf("\n");
  104.      printf("Archivo creado\n");
  105.      printf("Ingresa el nombre del alumno:\n ");
  106.      scanf("%s",&datos.nombre);
  107.      fprintf(DATOS,"\n%s ",datos.nombre);
  108.      printf("Ingresa la matricula: ");
  109.      scanf("%s",&datos.matricula);
  110.      fprintf(DATOS,"%s ",datos.matricula);
  111.      printf("Ingresa la calificacion del primer mes: ");
  112.      scanf("%d",&datos.cal1);
  113.      fprintf(DATOS,"%d ",datos.cal1);
  114.      printf("Ingresa la calificacion del segundo mes: ");
  115.      scanf("%d",&datos.cal2);
  116.      fprintf(DATOS,"%d ",datos.cal2);
  117.      printf("Ingresa la calificacion del tercer mes: ");
  118.      scanf("%d",&datos.cal3);
  119.      fprintf(DATOS,"%d ",datos.cal3);
  120.      printf("Desea realizar otra captura?: (S/N) ");
  121.      scanf("%s",&res);
  122.  
  123.      }
  124.     while((res=='S') || (res=='s'));
  125.  
  126.  
  127.      fclose(DATOS);
  128.  
  129.      getch();
  130.      return 0;
  131.      }
  132.  
  133.  
  134.      char modificar()
  135.      {
  136.      clrscr();
  137.      char modifica;
  138.      char a;
  139.      printf("\t\t\t| Sistema de calificaciones UDO |");
  140.      printf("\n--------------------------------------------------------------------------------");
  141.      printf("\n");
  142.      printf("\n");
  143.      printf("Ingresa la matricula del alumno: ");
  144.      scanf("%s",&modifica);
  145.      getch();
  146.      FILE *DATOS;
  147.      DATOS = fopen("datos2.txt","r");
  148.      while(fread(&datos,sizeof(datos),1,DATOS)==1)
  149.      {
  150.      fscanf(DATOS,"%s",&a);
  151.      if(a==modifica){
  152.      printf("Encontrado");
  153.      break;
  154.      }
  155.  
  156.      if(a==NULL){
  157.      printf("No encontrado");
  158.      break;
  159.      }
  160.  
  161.      /*while(fread(&datos,sizeof(datos),1,DATOS)==1)
  162.      {
  163.      if(modifica==datos.matricula)
  164.        {
  165.           printf("Nombre: %s",datos.nombre);
  166.           printf("matricula: %s",datos.matricula);
  167.           printf("cal1: %d",datos.cal1);
  168.           printf("cal2: %d",datos.cal2);
  169.           printf("cal3: %d",datos.cal3);
  170.           printf("\n");*/
  171.           }
  172.  
  173.           fclose(DATOS);
  174.           getch();
  175.  
  176.      return 0;
  177.   }
  178.  
  179.    int eliminar()
  180.    {    int elimina;
  181.    printf("\t\t\t| Sistema de calificaciones UDO |");
  182.      printf("\n--------------------------------------------------------------------------------");
  183.      printf("\n");
  184.      printf("\n");
  185.      printf("Ingresa la matricula del alumno: ");
  186.  
  187.  
  188.      return 0;
  189.    }
  190.  
  191.    int imprimir()
  192.    {
  193.  
  194.   printf("\t\t\tSistema de calificaciones UDO");
  195.    printf("\n");
  196.    printf("\n");
  197.    gotoxy(4,2);
  198.    printf("----------------------------------------------------------------------");
  199.    gotoxy(4,4);
  200.    printf("----------------------------------------------------------------------");
  201.    gotoxy(5,3);
  202.    printf("Nombre del alumno  |");
  203.    gotoxy(5,5);
  204.    printf("%s",&datos.nombre);
  205.    gotoxy(24,5);printf("|"); //alumno
  206.    gotoxy(24,6);printf("|");
  207.    gotoxy(24,7);printf("|");
  208.    gotoxy(24,8);printf("|");
  209.    gotoxy(24,9);printf("|");
  210.    gotoxy(24,10);printf("|");
  211.    gotoxy(24,11);printf("|");
  212.    gotoxy(24,12);printf("|");
  213.    gotoxy(24,13);printf("|");
  214.    gotoxy(39,5);printf("|"); //matricula
  215.    gotoxy(39,6);printf("|");
  216.    gotoxy(39,7);printf("|");
  217.    gotoxy(39,8);printf("|");
  218.    gotoxy(39,9);printf("|");
  219.    gotoxy(39,10);printf("|");
  220.    gotoxy(39,11);printf("|");
  221.    gotoxy(39,12);printf("|");
  222.    gotoxy(39,13);printf("|");
  223.    gotoxy(52,5);printf("|");  //promedio
  224.    gotoxy(52,6);printf("|");
  225.    gotoxy(52,7);printf("|");
  226.    gotoxy(52,8);printf("|");
  227.    gotoxy(52,9);printf("|");
  228.    gotoxy(52,10);printf("|");
  229.    gotoxy(52,11);printf("|");
  230.    gotoxy(52,12);printf("|");
  231.    gotoxy(52,13);printf("|");
  232.    gotoxy(27,3);
  233.    printf("Matricula   |");
  234.    gotoxy(27,5);
  235.    printf("%s",&datos.matricula);
  236.    gotoxy(42,3);
  237.    printf("Promedio  |");
  238.    gotoxy(27,0);
  239.    promedio=(datos.cal1+datos.cal2+datos.cal3)/3;
  240.    if (promedio==0)
  241.    {printf(" ");
  242.    }
  243.  
  244.  
  245.    else if (promedio<70)
  246. {
  247.    gotoxy(56,5);
  248.    printf("No acreditado");
  249.    }
  250.    else {
  251.    gotoxy(56,5);
  252.    printf("Acreditado");
  253. }   //cierra imprimir
  254.    if (promedio==0.00)
  255.    { printf(" ");
  256.    }
  257.    else {
  258.    gotoxy(42,5);printf("%.2f    ",promedio);
  259.    }
  260.    gotoxy(56,3);
  261.    printf("AC/NA");
  262.    gotoxy(42,24);printf("[Presionar Enter para regresar al menu]");
  263.  
  264.  
  265.    return 0;
  266. }  //cierra todo

Etiquetas: programa
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 22:16.