• Domingo 5 de Mayo de 2024, 07:24

Autor Tema:  Error  (Leído 780 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Error
« en: Lunes 26 de Enero de 2009, 23:45 »
0
Código: Text
  1.  
  2. #include<stdio.h>
  3.  
  4. int mostrarmenu();
  5. int calculrectangle(int,int,char);
  6. int calculrectanglebuit(int,int,char);
  7. int calculquadrat(int,char);
  8. int calculquadratbuit(int,char);
  9. int calcultriangle(int,char);
  10. int calcultrianglebuit(int,char);
  11.  
  12. int main()
  13. {
  14.     int fin=0;
  15.     int op,m,n;
  16.     char carac;
  17.    
  18.     do
  19.     {
  20.                op = mostrarmenu();
  21.                switch(op)
  22.               {
  23.               case 1:
  24.                     printf("Introdueix el tamany de un costat: n");
  25.                     scanf("%d", &m);
  26.                     printf("Introduiex el tamany de l'altre costat: n");
  27.                     scanf("%d", &n);
  28.                     fflush(stdin);
  29.                     printf("Introdueix el caracter per fer la figura: n");
  30.                     scanf ("%c", &carac);
  31.                     calculrectangle(m,n,carac);
  32.                     break;
  33.               case 2:
  34.                     printf("Introdueix el tamany de un costat: n");
  35.                     scanf("%d", &m);
  36.                     printf("Introduiex el tamany de l'altre costat: n");
  37.                     scanf("%d", &n);
  38.                     fflush(stdin);
  39.                     printf("Introdueix el caracter per fer la figura: n");
  40.                     scanf ("%c", &carac);
  41.                     calculrectanglebuit(m,n,carac);
  42.                     break;
  43.               case 3:
  44.                     printf("Introdueix el tamany del costat: n");
  45.                     scanf("%d", &m);
  46.                     fflush(stdin);
  47.                     printf("Introdueix el caracter per fer la figura: n");
  48.                     scanf ("%c", &carac);
  49.                     calculquadrat(m,carac);
  50.                     break;
  51.               case 4:
  52.                    printf("Introdueix el tamany del costat: n");
  53.                    scanf("%d", &m);
  54.                    fflush(stdin);
  55.                    printf("Introdueix el caracter per fer la figura: n");
  56.                    scanf ("%c", &carac);
  57.                    calculquadratbuit(m,carac);
  58.                    break;
  59.               case 5:
  60.                    printf("Introdueix l'alcada: n");
  61.                    scanf("%d", &m);
  62.                    fflush(stdin);
  63.                    printf("Introdueix el caracter per fer la figura: n");
  64.                    scanf ("%c", &carac);
  65.                    calcultriangle(m,carac);
  66.                    break;
  67.               case 6:
  68.                    printf("Introdueix l' alcada: n");
  69.                    scanf("%d", &m);
  70.                    fflush(stdin);
  71.                    printf("Introdueix el caracter per fer la figura: n");
  72.                    scanf ("%c", &carac);
  73.                    calcultrianglebuit(m,carac);
  74.                    break;
  75.               case 7:
  76.                    fin=1;
  77.                    break;
  78.               default:
  79.                       printf("Opcio incorrecten");
  80.               }      
  81.               if (!fin)
  82.               {
  83.               printf("nn");
  84.               getchar();
  85.               getchar();
  86.               }
  87.     }while(!fin);
  88. }
  89. int mostrarmenu ()
  90. {
  91.     int op;
  92.    
  93.     printf("Programa que dibuixa la figura que has escollit: n");
  94.     printf("n");
  95.     printf("n");
  96.     printf("1) Rectangle: n");
  97.     printf("2) Rectangle buit: n");
  98.     printf("3) Quadrat: n");
  99.     printf("4) Quadrat buit: n");
  100.     printf("5) Triangle: n");
  101.     printf("6) Trinangle buit: n");
  102.     printf("7) Salir: n");
  103.    
  104.     do
  105.      {
  106.         printf("Escull una opcio: ");
  107.         scanf("%d", &op);
  108.         if ((op != 1) && (op !=2) && (op != 3) && (op != 4) && (op != 5) && (op != 6) && (op != 7))
  109.         {
  110.                 printf("Opcio incorrecte n");
  111.         }              
  112.      }while (op < 1 || op > 7);
  113.      return op;
  114. }
  115. int calculrectangle (int m, int n, char carac)
  116. {
  117.     int i,j;
  118.    
  119.     for(i=1;i<=n;i++)
  120.     {
  121.         for(j=1;i<=m;j++)
  122.         {
  123.               printf("%c",carac);
  124.         }
  125.         printf("n");
  126.     }
  127. }
  128. int calcurrectanglebuit(int m, int n, char carac)
  129. {
  130.     int i,j,espai;
  131.    
  132.     for (i=1;i<=n;i++)
  133.     {
  134.         if (i==1 || i==n)
  135.         {
  136.                  for(j=1;j<=m;j++)
  137.                  {
  138.                        printf("%c",carac);
  139.                  }
  140.         }
  141.         else
  142.         {
  143.             printf("%c",carac);
  144.            
  145.             for (espai=1;espai<=n-2;espai++)
  146.             {
  147.                 printf(" ");
  148.             }
  149.             printf("%c",carac);
  150.         }
  151.     }
  152. }
  153. int calculquadrat(int m, char carac)
  154. {
  155.     int i,j;
  156.    
  157.     for (i=1; i<=m;i++)
  158.     {
  159.         for (j=1;j<=m;j++)
  160.         {
  161.             printf("%c",carac);
  162.         }
  163.         printf("n");
  164.     }
  165. }
  166. int calculquadratbuit(int m, char carac)
  167. {
  168.     int i,j,espai;
  169.    
  170.     for (i=1; i<=m;i++)
  171.     {
  172.         if(i==1 || i==m)
  173.         {
  174.                 for (j=1;j<=m;j++);
  175.                 {
  176.                     printf("%c",carac);
  177.                 }
  178.         }
  179.         else
  180.         {
  181.             printf("%c",carac);
  182.             for( espai=1;espai<=m-2;espai++)
  183.             {
  184.                  printf(" ");
  185.             }
  186.             printf("%c",carac);
  187.         }
  188.         printf("n");
  189.     }
  190. }
  191. int calcultriangle(int m, char carac)
  192. {
  193.     int i,j,espai;
  194.    
  195.     for (i=1;i<=m;i++)
  196.     {
  197.           for(espai=1;espai<=m-i;espai++)
  198.           {
  199.                 printf(" ");
  200.           }
  201.           for (j=1;j<=i*2-1;j++)
  202.           {
  203.               printf("%c",carac);
  204.           }
  205.           printf("n");
  206.     }
  207. }
  208. int calcultrianglebuit (int m, char carac)
  209. {
  210.     int i,j,espai;
  211.    
  212.     for (i=1; i<=m;i++);
  213.     {
  214.         for (espai=1; espai<=m-i;espai++);
  215.         {
  216.             printf(" ");
  217.         }
  218.         for (j=1;j<=m*2-1;j++);
  219.         {
  220.             if (i==1 || i==m)
  221.             {
  222.                      printf("%c",carac);
  223.             }
  224.             else
  225.             {
  226.                 printf(" ");
  227.             }
  228.         }
  229.         printf("n");
  230.     }
  231. }
  232.                      
  233.  
  234.  
El calcul trianglebuit no me printa nada :S

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Error
« Respuesta #1 en: Martes 27 de Enero de 2009, 08:58 »
0
Primero, no sé por qué usas funciones que devuelven int cuando no devuelves nada. Usa void.

En cuanto a tu cuestión, ojo dónde pones los ;

Código: C
  1. int calcultrianglebuit (int m, char carac)
  2. {
  3.     int i,j,espai;
  4.    
  5.     for (i=1; i<=m;i++);
  6.     {
  7.         for (espai=1; espai<=m-i;espai++);
  8.         {
  9.             printf(" ");
  10.         }
  11.         for (j=1;j<=m*2-1;j++);
  12.         {
  13.             if (i==1 || i==m)
  14.             {
  15.                      printf("%c",carac);
  16.             }
  17.             else
  18.             {
  19.                 printf(" ");
  20.             }
  21.         }
  22.         printf("n");
  23.     }
  24.  
  25.    return 0;
  26. }
  27.  
Por ejemplo, este bucle:

Código: C
  1. for (espai=1; espai<=m-i;espai++);
  2. {
  3.     printf(" ");
  4. }
  5.  
No ejecuta printf() m-i veces, sino que primero hace el bucle sin nada dentro, luego ejecuta printf(). Ello debido al ; que le has puesto al final. Tienes varias veces más el mismo error. Te aconsejo que antes de pedir ayuda, primero repases bien lo que tengas hecho.

P.D: Tus algoritmos no funcionan para lo que quieres hacer.

Salud  :hitcomp:

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Error
« Respuesta #2 en: Martes 27 de Enero de 2009, 10:01 »
0
Código: Text
  1.  
  2. #include<stdio.h>
  3.  
  4. int mostrarmenu();
  5. int calculrectangle(int,int,char);
  6. int calculrectanglebuit(int,int,char);
  7. int calculquadrat(int,char);
  8. int calculquadratbuit(int,char);
  9. int calcultriangle(int,char);
  10. int calcultrianglebuit(int,char);
  11.  
  12. int main()
  13. {
  14.     int fin=0;
  15.     int op,m,n;
  16.     char carac;
  17.    
  18.     do
  19.     {
  20.                op = mostrarmenu();
  21.                switch(op)
  22.               {
  23.               case 1:
  24.                     printf("Introdueix el tamany de un costat: n");
  25.                     scanf("%d", &m);
  26.                     printf("Introduiex el tamany de l'altre costat: n");
  27.                     scanf("%d", &n);
  28.                     fflush(stdin);
  29.                     printf("Introdueix el caracter per fer la figura: n");
  30.                     scanf ("%c", &carac);
  31.                     calculrectangle(m,n,carac);
  32.                     break;
  33.               case 2:
  34.                     printf("Introdueix el tamany de un costat: n");
  35.                     scanf("%d", &m);
  36.                     printf("Introduiex el tamany de l'altre costat: n");
  37.                     scanf("%d", &n);
  38.                     fflush(stdin);
  39.                     printf("Introdueix el caracter per fer la figura: n");
  40.                     scanf ("%c", &carac);
  41.                     calculrectanglebuit(m,n,carac);
  42.                     break;
  43.               case 3:
  44.                     printf("Introdueix el tamany del costat: n");
  45.                     scanf("%d", &m);
  46.                     fflush(stdin);
  47.                     printf("Introdueix el caracter per fer la figura: n");
  48.                     scanf ("%c", &carac);
  49.                     calculquadrat(m,carac);
  50.                     break;
  51.               case 4:
  52.                    printf("Introdueix el tamany del costat: n");
  53.                    scanf("%d", &m);
  54.                    fflush(stdin);
  55.                    printf("Introdueix el caracter per fer la figura: n");
  56.                    scanf ("%c", &carac);
  57.                    calculquadratbuit(m,carac);
  58.                    break;
  59.               case 5:
  60.                    printf("Introdueix l'alcada: n");
  61.                    scanf("%d", &m);
  62.                    fflush(stdin);
  63.                    printf("Introdueix el caracter per fer la figura: n");
  64.                    scanf ("%c", &carac);
  65.                    calcultriangle(m,carac);
  66.                    break;
  67.               case 6:
  68.                    printf("Introdueix l' alcada: n");
  69.                    scanf("%d", &m);
  70.                    fflush(stdin);
  71.                    printf("Introdueix el caracter per fer la figura: n");
  72.                    scanf ("%c", &carac);
  73.                    calcultrianglebuit(m,carac);
  74.                    break;
  75.               case 7:
  76.                    fin=1;
  77.                    break;
  78.               default:
  79.                       printf("Opcio incorrecten");
  80.               }      
  81.               if (!fin)
  82.               {
  83.               printf("nn");
  84.               getchar();
  85.               getchar();
  86.               }
  87.     }while(!fin);
  88. }
  89. int mostrarmenu ()
  90. {
  91.     int op;
  92.    
  93.     printf("Programa que dibuixa la figura que has escollit: n");
  94.     printf("n");
  95.     printf("n");
  96.     printf("1) Rectangle: n");
  97.     printf("2) Rectangle buit: n");
  98.     printf("3) Quadrat: n");
  99.     printf("4) Quadrat buit: n");
  100.     printf("5) Triangle: n");
  101.     printf("6) Triangle buit: n");
  102.     printf("7) Salir: n");
  103.    
  104.     do
  105.      {
  106.         printf("Escull una opcio: ");
  107.         scanf("%d", &op);
  108.         if ((op != 1) && (op !=2) && (op != 3) && (op != 4) && (op != 5) && (op != 6) && (op != 7))
  109.         {
  110.                 printf("Opcio incorrecte n");
  111.         }              
  112.      }while (op < 1 || op > 7);
  113.      return op;
  114. }
  115. int calculrectangle (int m, int n, char carac)
  116. {
  117.     int i,j;
  118.    
  119.     for(i=1;i<=n;i++)
  120.     {
  121.         for(j=1;j<=m;j++)
  122.         {
  123.               printf("%c",carac);
  124.         }
  125.         printf("n");
  126.     }
  127. }
  128. int calculrectanglebuit(int m, int n, char carac)
  129. {
  130.     int i,j,espai;
  131.    
  132.     for (i=1; i<=m;i++)
  133.     {
  134.         if((i==1) || (i==m))
  135.         {
  136.                 for (j=1;j<=n;j++)
  137.                 {
  138.                     printf("%c",carac);
  139.                 }
  140.         }
  141.         else
  142.         {
  143.             printf("%c",carac);
  144.             for (espai=1;espai<=n-2;espai++)
  145.             {
  146.                  printf(" ");
  147.             }
  148.             printf("%c",carac);
  149.         }
  150.         printf("n");
  151.     }
  152. }
  153. int calculquadrat(int m, char carac)
  154. {
  155.     int i,j;
  156.    
  157.     for (i=1; i<=m;i++)
  158.     {
  159.         for (j=1;j<=m;j++)
  160.         {
  161.             printf("%c",carac);
  162.         }
  163.         printf("n");
  164.     }
  165. }
  166. int calculquadratbuit(int m, char carac)
  167. {
  168.     int i,j,espai;
  169.    
  170.     for (i=1; i<=m;i++)
  171.     {
  172.         if((i==1) || (i==m))
  173.         {
  174.                 for (j=1;j<=m;j++)
  175.                 {
  176.                     printf("%c",carac);
  177.                 }
  178.         }
  179.         else
  180.         {
  181.             printf("%c",carac);
  182.             for (espai=1;espai<=m-2;espai++)
  183.             {
  184.                  printf(" ");
  185.             }
  186.             printf("%c",carac);
  187.         }
  188.         printf("n");
  189.     }
  190. }
  191. int calcultriangle(int m, char carac)
  192. {
  193.     int i,j,espai;
  194.    
  195.     for (i=1;i<=m;i++)
  196.     {
  197.           for(espai=1;espai<=m-i;espai++)
  198.           {
  199.                 printf(" ");
  200.           }
  201.           for (j=1;j<=i*2-1;j++)
  202.           {
  203.               printf("%c",carac);
  204.           }
  205.           printf("n");
  206.     }
  207. }
  208. int calcultrianglebuit (int m, char carac)
  209. {
  210.     int i,j,espai;
  211.    
  212.      for (i = 1; i<=m; i++)
  213.       {
  214.           for (espai=1; espai<=m-i; espai++)
  215.           {
  216.               printf(" ");
  217.           }
  218.           if (i == 1 || i == m)
  219.           {
  220.                for (j = 1; j<=i*2-2; j++)
  221.                {
  222.                    printf("%c",carac);
  223.                }
  224.           }
  225.           if (i != 1 || i != m)
  226.           {
  227.              printf("%c",carac);
  228.          
  229.               for (j = 1; j<=i*2-1-2; j++)
  230.               {
  231.                  
  232.                      printf(" ");
  233.  
  234.                  
  235.               }
  236.               printf("%c",carac);
  237.            }
  238.  
  239.        printf("n");          
  240.       }          
  241.  
  242. }    
  243.  
  244.  
  245.  

Ahora si me printa el triangulo, pero no se pq en la primera linea me printa dos simbolos y luego en la ultima hace una cosa rara, pq me printa bien todos los simbolos, pero me deja despues bastante espacios y m printa un simbolo todo separado :S