• Viernes 8 de Noviembre de 2024, 20:02

Autor Tema:  2 Dudas  (Leído 1131 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
2 Dudas
« en: Lunes 6 de Abril de 2009, 18:48 »
0
Código: C++
  1.  
  2. #include<stdio.h>
  3. #include<time.h>
  4. #define FILES 7
  5. #define COLUMNES 5
  6.  
  7. int menu();
  8. void mostrarhorari(int horari[FILES][COLUMNES],char dies[6][20]);
  9. void dieshorescredit(int horari[FILES][COLUMNES]);
  10. void totalhores(int horari[FILES][COLUMNES]);
  11. void inicialitza_matriu(int horari[FILES][COLUMNES]);
  12. void printa_dia(int);
  13. void printa_hora(int);
  14.  
  15. int main()
  16. {
  17.     char horari[FILES][COLUMNES];
  18.     char dies[6][20]={"Hores ", "Dilluns ", "Dimarts ", "Dimecre ", "Dijous ", "Divendres n"};
  19.     int fin,opcio;
  20.    
  21.     inicialitza_matriu(horari);
  22.     do
  23.     {
  24.         opcio=menu();
  25.         fin=0;
  26.        
  27.         switch(opcio)
  28.         {
  29.               case 1:
  30.                    mostrarhorari(horari,dies);
  31.                    break;
  32.               case 2:
  33.                    dieshorescredit(horari);
  34.                    break;
  35.               case 3:
  36.                    totalhores(horari);
  37.                    break;
  38.               case 4:
  39.                    fin=1;
  40.               default:
  41.                       printf("Opcio Incorrecte n");
  42.         }        
  43.               if(fin==0)
  44.               {
  45.                   printf("nn");
  46.                   getchar();
  47.                   getchar();
  48.               }
  49.     }while(fin==0);
  50. }
  51. int menu()
  52. {
  53.     int op;
  54.  
  55.     printf("Programa per a la creacio de un horari n");
  56.     printf("1) Mostrar Horarin");
  57.     printf("2) Dies i Hores d'un determinat creditn");
  58.     printf("3) Hores setmanals d'un determinat creditn");
  59.     printf("4) Sortir n");
  60.    
  61.      do
  62.      {
  63.         printf("Escull una opción: ");
  64.         scanf("%d", &op);
  65.         if ((op != 1) && (op !=2) && (op != 3) && (op != 4))
  66.         {
  67.                 printf("Opcio incorrecte n");
  68.         }              
  69.      }while (op < 1 || op > 4);
  70.      return op;
  71. }
  72. void mostrarhorari(int horari[FILES][COLUMNES],char dies[6][20])
  73. {
  74.      
  75.     int i,j,h;
  76.     for(h=0;h<=6;h++){
  77.           printf("%s",dies[h]);
  78.     }
  79.     for(i=0;i<FILES;i++)
  80.     {      
  81.           printf("%d:00",15+i);
  82.           for(j=0;j<COLUMNES;j++)
  83.           {
  84.                      
  85.               printf(" %s  ",horari[i][j]);
  86.               h++;
  87.           }
  88.           printf("n");
  89.     }
  90. }
  91. void dieshorescredit(int horari[FILES][COLUMNES])
  92. {
  93.      int i,j;
  94.      char credit[10];
  95.      
  96.      printf("nnDies i hores que s'imparteix un credit n");
  97.      do
  98.      {
  99.           printf("nnEscull el credit (Introdueix la primera lletra en mayuscula): n");
  100.           printf("-Matesn-Cataln-Socian-Fisicn-Casten");  
  101.           fflush(stdin);
  102.           scanf("%s", &credit);
  103.           printf("%s",credit);
  104.               if((credit!='Mates') || (credit!='Catal') || (credit!='Socia') || (credit!='Fisic') || (credit!='Caste'))
  105.                   printf("Error no has escollit una opcio correcte.n RECORDA: La primera lletra te que se mayuscula.n");
  106.      }while((credit!='Mates') || (credit!='Catal') || (credit!='Socia') || (credit!='Fisic') || (credit!='Caste'));
  107.      
  108.     for(i=0;i<FILES;i++)
  109.     {
  110.           for(j=0;j<COLUMNES;j++)
  111.           {
  112.                 if (credit==horari[i][j])
  113.                 {
  114.                    printa_dia(j);
  115.                    printa_hora(i);
  116.                 }
  117.           }
  118.     }
  119.      
  120. }
  121. void totalhores(int horari[FILES][COLUMNES])
  122. {
  123.      int i,j,hora1=0,hora2=0,hora3=0,hora4=0,hora5=0;
  124.      
  125.      printf("nnSuma d'hores setmanals de cada credit: nn");
  126.      
  127.      for(i=0;i<FILES;i++)
  128.      {
  129.           for(j=0;j<COLUMNES;j++)
  130.           {
  131.                     if (horari[i][j]=='Mates')
  132.                         hora1=hora1+1;
  133.                    if (horari[i][j]== 'Catal')
  134.                         hora2=hora2+1;
  135.                    if (horari[i][j]=='Socia')
  136.                         hora3=hora3+1;
  137.                    if (horari[i][j]=='Fisic')
  138.                         hora4=hora4+1;
  139.                    if (horari[i][j]== 'Caste')
  140.                         hora5=hora5+1;
  141.           }
  142.     }
  143.     printf("El numero de hores setmanals de Matematiques es: %d horesn",hora1);
  144.     printf("El numero de hores setmanals de Catala es: %d horesn",hora2);
  145.     printf("El numero de hores setmanals de Socials es: %d horesn",hora3);
  146.     printf("El numero de hores setmanals de Fisica es: %d horesn",hora4);
  147.     printf("El numero de hores setmanals de Castella es: %d horesn",hora5);
  148. }
  149. void inicialitza_matriu(int horari[FILES][COLUMNES])
  150. {
  151.      int i,j;
  152.      
  153.      srand(time(NULL));
  154.      for(i=0;i<FILES;i++)
  155.      {
  156.           for(j=0;j<COLUMNES;j++)
  157.           {
  158.               horari[i][j]=rand()%5+1;
  159.               switch(horari[i][j])
  160.               {
  161.                    case 1:
  162.                         horari[i][j]=("Mates");;
  163.                         break;
  164.                    case 2:
  165.                         horari[i][j]=("Catal");
  166.                         break;
  167.                    case 3:
  168.                         horari[i][j]=("Socia");
  169.                         break;
  170.                    case 4:
  171.                         horari[i][j]=("Fisic");
  172.                         break;
  173.                    case 5:
  174.                         horari[i][j]=("Caste");
  175.                         break;
  176.               }
  177.           }
  178.     }
  179. }
  180. void printa_dia(int dia)
  181. {
  182.      switch(dia)
  183.      {
  184.                 case 0:
  185.                      printf("Dilluns ");
  186.                      break;
  187.                 case 1:
  188.                      printf("Dimarts ");
  189.                      break;
  190.                 case 2:
  191.                      printf("Dimecres ");
  192.                      break;
  193.                 case 3:
  194.                      printf("Dijous ");
  195.                      break;
  196.                 case 4:
  197.                      printf("Divendres ");
  198.                      break;
  199.      }
  200. }
  201. void printa_hora(int hora)
  202. {
  203.      switch(hora)
  204.      {
  205.                  case 0:
  206.                       printf("15:00n");
  207.                       break;
  208.                  case 1:
  209.                       printf("16:00n");
  210.                       break;
  211.                  case 2:
  212.                       printf("17:00n");
  213.                       break;
  214.                  case 3:
  215.                       printf("18:00n");
  216.                       break;
  217.                  case 4:
  218.                       printf("19:00n");
  219.                       break;
  220.                  case 5:
  221.                       printf("20:00n");
  222.                       break;
  223.                  case 6:
  224.                       printf("21:00n");
  225.                       break;
  226.      }
  227.                      
  228. }
  229.  
  230.  

El if((credit!='Mates') || (credit!='Catal') || (credit!='Socia') || (credit!='Fisic') || (credit!='Caste'))
                  printf("Error no has escollit una opcio correcte.n RECORDA: La primera lletra te que se mayuscula.n");
esta bien escrito, quiero decir va con comilla simple o como pq es q lo e probado con dos tb, y siempre me entra aqui, y veo que le bien la array.
Y luego en los ifs de totalhores,tp me entra en ningun caso :s, lo iba hacer con switch pero segun e leido no se puede utilizar cadena de caracteres en el switch :S

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: 2 Dudas
« Respuesta #1 en: Lunes 6 de Abril de 2009, 19:02 »
0
Asi comparas direcciones de memoria, tenes que usar strcmp o derivados.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: 2 Dudas
« Respuesta #2 en: Lunes 6 de Abril de 2009, 19:05 »
0
Las comparaciones de los if estan mal hechas...ya que alli lo que el compilador esta haciendo es comparar las direcciones en memoria...no los contenidos

Si quieres hacer comparaciones de cadenas deberas utilizar metodos apropiados como utilizar strcmp

Saludos

Upss escribimnos a la par con Eternal

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: 2 Dudas
« Respuesta #3 en: Lunes 6 de Abril de 2009, 19:28 »
0
Porfin lo acabe, muchas gracias  :D  :D