Autor
|
Tema: [Consulta] Programa lenguaje C resultado incorrecto (Leído 4,340 veces)
|
neron991
Desconectado
Mensajes: 17
|
Hola nuevamente yo jaja xD esta vez tengo otro programa en lenguaje c de tarea sobre matrices ya hice todo pero al querer usar la opcion 4 o Case 4: del programa me marca numeros negativos que no estan en la matriz, quisiera saber si me pueden ayudar a resolver ese pequeño detalle gracias:#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int contra = 1997; int pass, i, j, n, op, sum, may, g, h, k, f, aux, x, y, z, sumar, num; int m[3][3]; int SUMA [3]; int MAYOR [3]; char palabra[20]; int faltan=3; do { printf ("\nIngrese la contraseña: "); if (pass == contra) { do { printf ("\nDe que tamaño va ser la matriz, no mayor a 3: "); if (n<=3){ for (i=0;i<n;i++) { for (j=0;j<n;j++) { do { printf ("\nIngrese el elemento de la Fila %d, columna %d ", i , j ); if (num > 0) m[i][j] = num; else printf ("El numero deber ser positivo"); }while (num < 0); } } } else printf ("\n\nTiene que ser un elemento menor a 3"); } while (n>3); for (g=0;g<n;g++) { for (h=0;h<n;h++) } do { printf ("1.- Calcular la suma de cada fila\n"); printf ("2.- Determinar el mayor elemento de cada columna\n"); printf ("3.- Sumar los elementos por encima de la diagonal principal\n"); printf ("4.- Ordenar el arreglo SUMA de mayor a menor y el artreglo MAYOR de menor a mayor\n"); printf ("5.- Introduzca una palabra para determinar si es palindromo\n"); printf ("\nSeleccion una opción: "); switch (op) { default: printf ("\nOPCIÓN NO DENTRO DE LOS PARAMETROS"); case 1: for (i=0;i<n;i++) { sum = 0; for (j=0;j<n;j++) { sum = sum + m[i][j]; } SUMA[i]=sum; } printf ("La suma de cada fila es:\n "); for (k=0;k<n;k++) break; case 2: for (j=0;j<n;j++) { may = 0; for (i=0;i<n;i++) { if (m[i][j] > may) may = m[i][j]; } MAYOR[j] = may; } printf ("\nEl elemento mayor de cada columna es: \n"); for (k=0;k<n;k++) break; case 3: sumar = 0; for (i=0;i<n;i++) { for (j=0;j<n-1;j++) { if (j == i) sumar = sumar + m[i][j+1]; } } printf ("\nLa suma de los elementos es: %d\n", sumar ); break; case 4: for (i=0;i<n;i++) { for (j=0;j<n;j++) { if (SUMA[j] <= SUMA[i]) { aux = SUMA[i]; SUMA[i] = SUMA[j]; SUMA[j] = aux; } } } printf ("\nEl orden de la suma es: \n"); for (g=0;g<n;g++) for (h=0;h<n;h++) { for (k=0;k<n;k++) { if (MAYOR[k] >= MAYOR[h]) { aux = MAYOR[h]; MAYOR[h] = MAYOR[k]; MAYOR[k] = aux; } } } printf ("\nEl orden de mayor es: "); for (f=0;f<n;f++) break; case 5: printf ("\nIngrese una Palabra: "); x=x-1; for(y=0,z=x;y<=x/2;y++,z--) if(palabra[y]==palabra[z]) { break; } else { break; }break; case 6: printf ("Integrantes:\n *Castillo Luis\n *Rodriguez Ronald\n *Moreno Jose Daniel\n"); op = 6; } }while (op != 6); break; } else printf ("\n\t\tContraseña Incorrecta"); faltan--; } while (faltan>0); if(faltan==0) printf("\n\n\tNumero de intentos maximos alcanzados hasta luego =D"); return 0; }
|
|
« Última modificación: 16 Junio 2015, 05:39 am por neron991 »
|
En línea
|
|
|
|
user-marcos
Desconectado
Mensajes: 159
|
El vector MAYOR, no tiene ningún valor asignado, los valores que te da, son los valores "basura", cuando accedes a la posición de memria reservada por el compilador, sin antes haber asignado valor, obtienes los valores que están en memoria probablemente usado antes por otro programa.
|
|
|
En línea
|
|
|
|
banwave_
Desconectado
Mensajes: 14
|
Veo que para la opcion 4, nunca asignas valores a tus vectores: SUMA[] y MAYOR[], por lo que contienen basura es por esto los numeros negativos, tienes que pasar los valores de tu vetor m[] donde almacenas los valores capturados para su manipulacion.
|
|
|
En línea
|
|
|
|
neron991
Desconectado
Mensajes: 17
|
Gracias, ahora mi ultima duda esta en el case 3 de la suma por encima de la diagonal, me di cuenta que tampoco me da el resultado esperado he intentado todo colocar == tambien < y nada que me suma los numeros por encima de la diagonal principal, eso seria todo xD
|
|
|
En línea
|
|
|
|
banwave_
Desconectado
Mensajes: 14
|
Puedes mostrar un ejemplo de como seria esta suma? ya que no te entiendo lo que quieres hacer xD, con esto verificamos el programa
|
|
|
En línea
|
|
|
|
neron991
Desconectado
Mensajes: 17
|
Ejemplo: tenemos el caso de que la matriz sea tres por tres 1 2 32 4 21 3 1 y se requiera sumar todo por encima de la diagonal principal de esa matriz que en este caso vendria siendo 2 3 y 2, pero el detalle esta en que el programa me suma es la diagonal principal que seria 2 y 2 en vez de toda la diagonal principal que comprende el 2 3 y 2, no se si me entiendas xD
|
|
|
En línea
|
|
|
|
banwave_
Desconectado
Mensajes: 14
|
mmm creo que si entendi jajaj haber prueba este cambio en tu case 3: for (i=0;i<=n-2;i++) { for (j=1;j<=n-1;j++) { if (j != i) sumar = sumar + m[i][j]; } }
|
|
|
En línea
|
|
|
|
banwave_
Desconectado
Mensajes: 14
|
Man, jalo o no jalo?
|
|
|
En línea
|
|
|
|
|
banwave_
Desconectado
Mensajes: 14
|
Pueden cerrar este tema... esta solucionado. Gracias!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Aspx.NET] Resultado consulta SQL
.NET (C#, VB.NET, ASP)
|
Shell Root
|
1
|
2,978
|
8 Marzo 2010, 15:33 pm
por [D4N93R]
|
|
|
seleccionar indice del resultado de la consulta sql
PHP
|
diego_lp
|
1
|
3,842
|
27 Abril 2010, 08:51 am
por Nakp
|
|
|
¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C?
Programación C/C++
|
GisiNA
|
2
|
4,202
|
8 Abril 2014, 16:00 pm
por GisiNA
|
|
|
Multiplicar 2 cedenas y poner el resultado en otra cadena (lenguaje C)
« 1 2 »
Programación C/C++
|
NOB2014
|
10
|
7,292
|
1 Octubre 2014, 18:32 pm
por Shout
|
|
|
Consulta: ¿que lenguaje o programa podria serme util para programar esto?
Programación General
|
p4p4z0t3
|
1
|
2,467
|
6 Diciembre 2014, 00:12 am
por engel lex
|
|