Autor
|
Tema: Determinar si dos matrices son iguales (Leído 9,265 veces)
|
estudiante_1
Desconectado
Mensajes: 47
|
Hola, he hecho un programa que me diga si dos matrices son iguales, y no me compila debido a la unica funcion que hay. El error que dice el compilador es unknown type a. este es el codigo: #include<stdio.h> #include<stdlib.h> int iguales(int m[3][3],a[3][3],int i,int j){
for(i=0;i<3;i++){ for(j=0;j<3;j++){ if(m[i][j]==a[i][j]) return 1; else return 0; } }
}
int main(void){ int m[3][3],i,j; int a[3][3];
for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&m[i][j]); }
} printf("\n\t");
for(i=0;i<3;i++){ printf("\n"); for(j=0;j<3;j++){
printf("%6d ",m[i][j]);
} }
printf("\n"); for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[i][j]); } } printf("\n\t"); for(i=0;i<3;i++){ printf("\n"); for(j=0;j<3;j++){ printf("%6d ",a[i][j]); } } printf("\n");
if(iguales(m,a,i,j)) printf("Son iguales\n"); else printf("No son iguales\n");
system("pause"); return(0); }
|
|
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
ienes que poner int antes del 'a'. Tal como dice el compilador, no se sabe el tipo de 'a'.
|
|
|
En línea
|
|
|
|
JavierScars
Desconectado
Mensajes: 116
|
Exacto, además te recomendaría trabajar más limpio y ordenado.
|
|
|
En línea
|
Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad, y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
|
|
|
estudiante_1
Desconectado
Mensajes: 47
|
si, es verdad de todas maneras no me funciona el programa, me dice que son iguales aunque la matrices sean distintas.
|
|
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
No te funciona porque a la primera iteración, la primera comparación, ya retornas de la función. Solo comparas el primer elemento. return termina la función sí o sí. Debes rehacer la función.
Recomendación: establece una variable con un valor tal que indica que la función ha tenido éxito en ver que los dos arrays son iguales. Empieza a realizar la comparación de forma iterativa. Si encuentras que en algún momento son diferentes cambias el valor de la anterior variable y sales del bucle. Retorna ek valor.
|
|
|
En línea
|
|
|
|
estudiante_1
Desconectado
Mensajes: 47
|
No te funciona porque a la primera iteración, la primera comparación, ya retornas de la función. Solo comparas el primer elemento. return termina la función sí o sí. Debes rehacer la función.
Recomendación: establece una variable con un valor tal que indica que la función ha tenido éxito en ver que los dos arrays son iguales. Empieza a realizar la comparación de forma iterativa. Si encuentras que en algún momento son diferentes cambias el valor de la anterior variable y sales del bucle. Retorna ek valor.
Y cómo lo harías en código? no entiendo establecer una variable con un valor
creo que te refieres a algo así, aunque todavía sigue sin salir correcto, pues al introducir dos matrices iguales me dice que no lo son: #include<stdio.h> #include<stdlib.h> int compi(int m[3][3],int a[3][3]){ int i,j,comparacion; for(i=0;i<3;i++){ for(j=0;j<3;j++){ if(m[j]==a[j]) comparacion++; } } return(comparacion);
} int soniguales(int m[3][3],int a[3][3],int comparacion){ compi(m,a); if(comparacion==9) return 1; else return 0;
}
int main(void){ int m[3][3],i,j; int a[3][3]; int comparacion;
for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&m[j]); }
} printf("\n\t");
for(i=0;i<3;i++){ printf("\n"); for(j=0;j<3;j++){
printf("%6d ",m[j]);
} }
printf("\n"); for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[j]); } } printf("\n\t"); for(i=0;i<3;i++){ printf("\n"); for(j=0;j<3;j++){ printf("%6d ",a[j]); } } printf("\n"); compi(m,a);
if(soniguales(m,a,comparacion)) printf("Son iguales\n"); else printf("No son iguales\n");
system("pause"); return(0); }
|
|
« Última modificación: 3 Enero 2016, 22:34 pm por Eternal Idol »
|
En línea
|
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Fallas en las llamadas y retornos de las funciones. Antes de continuar con este programa vuelve a revisar el tema de las funciones: Cómo llamarlas Cómo pasarles patámetros y usarlos en la función Cómo devolver un valor con la función y usarlo en el código llamante Paso de valores por referencia a argumentos
Cuándo manejes bien estos aspectos, es media horita, vuelve al programa.
|
|
|
En línea
|
|
|
|
JavierScars
Desconectado
Mensajes: 116
|
Pana te estas enredando más para algo tan censillo... Primero guiate por el primer código que posteaste y sigue esto. 1) En la declaración de la función iguales declara el tipo del array a es decir ponle int adelante. 2) Crea una variable o algo en la función iguales que al primer dato que no sea igual entre las dos matrices deje de conpara puesto que así como lo tienes solo debería comparar el primer dato. "Creo, me parece" 3)El if que revisa a la función iguales tienes que darle algo con que compararlo es decir if (igual(matrices) ==1) {imprimir iguales} 4)DIOS SE NAS ORDENADO no se si es porque soy un poco noob pero me parece que deberías aunque sea comentar las cosas y para que sirven, identar, dejar espacio, saltos de línea, etc. Además usa los prototipos de las funciones y luego escribe las al final deja el main siempre de primero.
Saludos
|
|
|
En línea
|
Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad, y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Rnd iguales
Programación Visual Basic
|
monro
|
3
|
2,664
|
7 Abril 2010, 21:23 pm
por monro
|
|
|
IPs iguales
Dudas Generales
|
the_lokadio
|
9
|
5,731
|
24 Junio 2010, 13:25 pm
por the_lokadio
|
|
|
¿determinar multiplos?
« 1 2 »
Programación C/C++
|
Bledniss
|
17
|
34,600
|
27 Abril 2011, 20:26 pm
por RyogiShiki
|
|
|
numeros iguales
Programación C/C++
|
Ander123
|
1
|
2,132
|
25 Agosto 2012, 13:22 pm
por The Swash
|
|
|
Ayuda a determinar avería en hd
Hardware
|
JW2
|
9
|
9,743
|
18 Septiembre 2012, 23:35 pm
por simorg
|
|