• Domingo 22 de Diciembre de 2024, 08:11

Autor Tema:  problemilla con matriz  (Leído 1548 veces)

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
problemilla con matriz
« en: Miércoles 10 de Septiembre de 2008, 06:46 »
0
bueno amigos kisiera saber si me pueden guiar a saber klual es mi error se supone k el programa tiene k ver kuantas veces se repite un numero dado por un usuario en la matriz pero tengo 2 errores los kuales no detecto segun eso me falta una llave kreo pero no c en donde cierooo y sigue igual les agradeceria me guiaran de antemano gracias
Código: Text
  1. [code]
#include<conio.h>
#include<stdio.h>
void main ()
int n,f,c,m,y,mat[3][3];
void buskar();
{
 
 
    clrscr();
    printf("Introduce el valor de m: ");
    scanf("%i",&m);
    printf("Introduce el valor de n: ");
    scanf("%i",&n),
    clrscr();
    for (f=0;f<m;f++)
{
    for (c=0;c<n;c++)
{
    printf(" Introdusca los valores para la matriz A en la posicion %d y %d : ",f,c);
    scanf("%d",&mat[f][c]),y++;
    buskar(mat[f][c]);
}
}
void buskar()
{
    for (int c=0;c<3;c++)
    for(int c1=0;c1<3;c1++)
{
    printf("Introduce el numero a buscar: ");
    scanf("%d",&mat[c][c1]);
}
    for(int s=0,q=0;s<3;s++)
    for(int s1=0;s1<3;s1++)
    if (mat[s1]==mat[f][c])  {
    q++
}
    printf("El numero se repite %d veces",q);
}
}
[/code]
me siento komo este monito>>> :hitcomp:

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: problemilla con matriz
« Respuesta #1 en: Miércoles 10 de Septiembre de 2008, 13:43 »
0
uff... te recomiendo usar algun editor que coloree la sintaxis donde te marque que llave termina con cual.

fijate q tu codigo dice:

Código: Text
  1. void main ()
  2. int n,f,c,m,y,mat[3][3];
  3.  
  4. void buskar();{
  5.  

al void main() tendrias que agregarle las llaves, pq sino no te va a andar, dspues dice
Código: Text
  1. void buskar();{
  2.  
osea, prototipo funcional, pero despues llaves, eso esta mal,  y despues como  que volves a declarar la void buskar :o

En C no se pueden anidar subprogramas como si se puede en Pascal, osea, no podes declrarar dentro del main() un void buscar(){ ... }

lo que puedo interpretar es quiza, que deberias poner las el void buskar(); antes que el main (como el prototipo funcional), o solamente la declaracion de tal funcion (como tenes una sola funcion no hace falta declarar el prototipo, excepto que quieras escribirla debajo del main).
y despues agregarle a tu void main() unas llaves..


espero que te sirva



saludos!

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re: problemilla con matriz
« Respuesta #2 en: Miércoles 10 de Septiembre de 2008, 16:43 »
0
bueno gracias por responderme pero ya lo cambie y aun me salen errores me dice  k me falta un ;  y k hay parametros extras en k falle??
Código: Text
  1. #include<conio.h>
  2. #include<stdio.h>
  3. int n,f,c,m,y,mat[3][3];
  4. void buskar();
  5. void main ()
  6. {
  7.  
  8.  
  9.     clrscr();
  10.     printf("Introduce el valor de m: ");
  11.     scanf("%i",&m);
  12.     printf("Introduce el valor de n: ");
  13.     scanf("%i",&n),
  14.     clrscr();
  15.     for (f=0;f<m;f++)
  16. {
  17.     for (c=0;c<n;c++)
  18. {
  19.     printf(" Introdusca los valores para la matriz A en la posicion %d y %d : ",f,c);
  20.     scanf("%d",&mat[f][c]);
  21.     y++;
  22.     buskar(mat);
  23. }
  24. }
  25. void buskar()
  26. {
  27.     for (int c=0;c<3;c++)
  28.     for(int c1=0;c1<3;c1++)
  29. {
  30.     printf("Introduce el numero a buscar: ");
  31.     scanf("%d",&mat[c][c1]);
  32. }
  33.     for(int s=0,q=0;s<3;s++)
  34.     for(int s1=0;s1<3;s1++)
  35.     if (mat[s][s1]==mat[f][c])  {
  36.     q++;
  37. }
  38.     printf("El numero se repite %d veces",q);
  39.     getch();
  40. }
  41. }
  42.  

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: problemilla con matriz
« Respuesta #3 en: Miércoles 10 de Septiembre de 2008, 17:06 »
0
Fijate que en la linea 13 escribiste:

Código: Text
  1. scanf("%i",&n),
  2.  

pusiste coma en vez de puto y coma.

cuando compilas que te dice los errores le das doble click al error y te marca en que linea esta.
enotnces es mas facil detectarlos ;)

bien, lo acomode un poco con indentados mas """"correctos"""" (muchas comillas pq esto es muy relativo) asi se puede ver bien que llave deberia cerrar que cosa:

Código: Text
  1. #include<conio.h>
  2. #include<stdio.h>
  3. int n,f,c,m,y,mat[3][3];
  4. void buskar();
  5. void main () {
  6.     clrscr();
  7.     printf("Introduce el valor de m: ");
  8.     scanf("%i",&m);
  9.     printf("Introduce el valor de n: ");
  10.     scanf("%i",&n);
  11.     clrscr();
  12.     for (f=0;f<m;f++){
  13.         for (c=0;c<n;c++){
  14.             printf(" Introdusca los valores para la matriz A en la posicion %d y %d : ",f,c);
  15.             scanf("%d",&mat[f][c]);
  16.             y++;
  17.             buskar(mat);
  18.         }
  19.     }
  20.     void buskar(){
  21.         for (int c=0;c<3;c++)
  22.             for(int c1=0;c1<3;c1++){
  23.                 printf("Introduce el numero a buscar: ");
  24.                 scanf("%d",&mat[c][c1]);
  25.             }
  26.         for(int s=0,q=0;s<3;s++)
  27.             for(int s1=0;s1<3;s1++)
  28.                 if (mat[s][s1]==mat[f][c]) {
  29.                     q++;
  30.                 }
  31.     printf("El numero se repite %d veces",q);
  32.     getch();
  33.     }
  34. }
  35.  


aqui sigues haciendo lo de anidar subprogramas, esto no se puede hacer en C, osea, la definicion de  void buskar(){ .... } no puede estar dentro del main.

si la podes llamar dentro del main, pero no puede estar el cuerpo de esa funcion ahi dentro ;)

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re: problemilla con matriz
« Respuesta #4 en: Miércoles 10 de Septiembre de 2008, 17:24 »
0
ps aun me sigue markando los mismos errores ya le he cambiado muchas veces haber kual es kito parametros me fijo en las komillas en llaves en todo me marka error k puede ser??? siempre son los pramateros un ; y declaracion de sintaxis :S
Código: Text
  1. #include<conio.h>
  2. #include<stdio.h>
  3. int n,f,c,m,y,mat[3][3];
  4. void buskar();
  5. void main ()
  6. {
  7.     clrscr();
  8.         printf("Introduce el valor de m: ");
  9.         scanf("%i",&m);
  10.         printf("Introduce el valor de n: ");
  11.     scanf("%i",&n);
  12.     clrscr();
  13.        for (f=0;f<m;f++){
  14.        for (c=0;c<n;c++){
  15.            printf(" Introdusca los valores para la matriz A en la posicion %d y %d : ",f,c);
  16.            scanf("%d",&mat[f][c]);
  17.            y++;
  18.           buskar(mat);//aki de parametros
  19.        }
  20.        }
  21. void buskar()
  22. {//aki de sintaxis
  23.       for (int c=0;c<3;c++)
  24.            for(int c1=0;c1<3;c1++){
  25.            printf("Introduce el numero a buscar: ");
  26.            scanf("%d",&mat[c][c1]);
  27.          }
  28.       for(int s=0,q=0;s<3;s++)
  29.           for(int s1=0;s1<3;s1++)
  30.           if (mat[s][s1]==mat[f][c]) {
  31.              q++;
  32.            }
  33.        printf("El numero se repite %d veces",q);
  34.        getch();
  35.        }
  36.    }//aki me marca error de ";"
  37.  

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
Re: problemilla con matriz
« Respuesta #5 en: Miércoles 10 de Septiembre de 2008, 17:45 »
0
bien, perdon por no haberlo mirado mas a fondo, pero el error de parametro que te tira es pq vos le estas pasando mat como parametro, pero el prototipo funcional de buskar(); es void como parametro, osea si le queres pasar mat el prototipo deberia ser int buscar(mat_t mat[][M]);

digo que es de tipo int porque calculo que seria de gran utilidad que devuelva verdadero si lo encontro y falso si no.

y el error de sintaxis es porque como dije las dos veces anteriores, en C no se puede anidar subprogramas.

el cuerpo de la funcion buskar(); deberia estar, o bien antes del main, o bien, despues, no dentro de la funcion main.

una onda asi:
Código: Text
  1. void buskar(int mat[3][3]){
  2.     for (c=0;c<3;c++)
  3.         for(c1=0;c1<3;c1++){
  4.             printf("Introduce el numero a buscar: ");
  5.             scanf("%d",&mat[c][c1]);
  6.         }
  7.     for(s=0,q=0;s<3;s++)
  8.         for( s1=0;s1<3;s1++)
  9.             if (mat[s][s1]==mat[f][c]) {
  10.                 q++;
  11.             }
  12.     printf("El numero se repite %d veces",q);
  13.     getchar();
  14. }
  15.  
  16. void main (void) {
  17.     ...
  18.     ...
  19. }
  20.  

o bien:

Código: Text
  1. void buskar(int mat[3][3]);
  2.  
  3. void main (void) {
  4.     ...
  5.     ...
  6. }
  7.  
  8. void buskar(int mat[3][3]){
  9.     for (c=0;c<3;c++)
  10.         for(c1=0;c1<3;c1++){
  11.             printf("Introduce el numero a buscar: ");
  12.             scanf("%d",&mat[c][c1]);
  13.         }
  14.     for(s=0,q=0;s<3;s++)
  15.         for( s1=0;s1<3;s1++)
  16.             if (mat[s][s1]==mat[f][c]) {
  17.                 q++;
  18.             }
  19.     printf("El numero se repite %d veces",q);
  20.     getchar();
  21. }
  22.  
  23.  


no me fije todo lo que es algoritmia, solo esos problemas que te tiraba, si te sigue dando problemas avisame ;)