elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Consulta] Programa lenguaje C resultado incorrecto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Consulta] Programa lenguaje C resultado incorrecto  (Leído 4,295 veces)
neron991

Desconectado Desconectado

Mensajes: 17


Ver Perfil
[Consulta] Programa lenguaje C resultado incorrecto
« en: 16 Junio 2015, 03:04 am »

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:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.    int contra = 1997;
  8.    int pass, i, j, n, op, sum, may, g, h, k, f, aux, x, y, z, sumar, num;
  9.    int m[3][3];
  10.    int SUMA [3];
  11.    int MAYOR [3];
  12.    char palabra[20];
  13.    int faltan=3;
  14. do {
  15.    printf ("\nIngrese la contraseña: ");
  16.    scanf ("%d",&pass);
  17.    if (pass == contra)
  18.    {
  19. do {
  20.  
  21.        printf ("\nDe que tamaño va ser la matriz, no mayor a 3: ");
  22.        scanf ("%d",&n);
  23.   if (n<=3){
  24.        for (i=0;i<n;i++)
  25.        {
  26.            for (j=0;j<n;j++)
  27.            {
  28.                do
  29.                {
  30.                    printf ("\nIngrese el elemento de la Fila %d, columna %d ", i, j);
  31.                    scanf ("%d", &num);
  32.                    if (num > 0)
  33.                        m[i][j] = num;
  34.                    else
  35.                        printf ("El numero deber ser positivo");
  36.                }while (num < 0);
  37.            }
  38. }
  39. }
  40.     else
  41. printf ("\n\nTiene que ser un elemento menor a 3");
  42. } while (n>3);
  43.  
  44.  
  45.        for (g=0;g<n;g++)
  46.        {
  47.            for (h=0;h<n;h++)
  48.                printf ("%d\t", m[g][h]);
  49.            printf ("\n");
  50.        }
  51.        do
  52.        {
  53.            printf ("\nMenú\n");
  54.            printf ("1.- Calcular la suma de cada fila\n");
  55.            printf ("2.- Determinar el mayor elemento de cada columna\n");
  56.            printf ("3.- Sumar los elementos por encima de la diagonal principal\n");
  57.            printf ("4.- Ordenar el arreglo SUMA de mayor a menor y el artreglo MAYOR de menor a mayor\n");
  58.            printf ("5.- Introduzca una palabra para determinar si es palindromo\n");
  59.            printf ("6.- Salir\n");
  60.            printf ("\nSeleccion una opción: ");
  61.            scanf ("%d", &op);
  62.            switch (op)
  63.            {
  64. default: printf ("\nOPCIÓN NO DENTRO DE LOS PARAMETROS");
  65.            case 1:
  66.                for (i=0;i<n;i++)
  67.                {
  68.                    sum = 0;
  69.                    for (j=0;j<n;j++)
  70.                    {
  71.                        sum = sum + m[i][j];
  72.                    }
  73.                    SUMA[i]=sum;
  74.                }
  75.                printf ("La suma de cada fila es:\n ");
  76.                for (k=0;k<n;k++)
  77.                    printf ("%d\n", SUMA[k]);
  78.                break;
  79.            case 2:
  80.                for (j=0;j<n;j++)
  81.                {
  82.                    may = 0;
  83.                    for (i=0;i<n;i++)
  84.                    {
  85.                        if (m[i][j] > may)
  86.                            may = m[i][j];
  87.                    }
  88.                    MAYOR[j] = may;
  89.                }
  90.                printf ("\nEl elemento mayor de cada columna es: \n");
  91.                for (k=0;k<n;k++)
  92.                    printf ("%d\n", MAYOR[k]);
  93.                break;
  94.            case 3:
  95.                sumar = 0;
  96.                for (i=0;i<n;i++)
  97.                {
  98.                    for (j=0;j<n-1;j++)
  99.                    {
  100.                        if (j == i)
  101.                            sumar = sumar + m[i][j+1];
  102.                    }
  103.                }
  104.                printf ("\nLa suma de los elementos es: %d\n", sumar);
  105.                break;
  106.            case 4:
  107.                for (i=0;i<n;i++)
  108.                {
  109.                    for (j=0;j<n;j++)
  110.                    {
  111.                        if (SUMA[j] <= SUMA[i])
  112.                        {
  113.                            aux = SUMA[i];
  114.                            SUMA[i] = SUMA[j];
  115.                            SUMA[j] = aux;
  116.                        }
  117.                    }
  118.                }
  119.                printf ("\nEl orden de la suma es: \n");
  120.                for (g=0;g<n;g++)
  121.                    printf("%d\n",SUMA[g]);
  122.  
  123.                for (h=0;h<n;h++)
  124.                {
  125.                    for (k=0;k<n;k++)
  126.                    {
  127.                        if (MAYOR[k] >= MAYOR[h])
  128.                        {
  129.                            aux = MAYOR[h];
  130.                            MAYOR[h] = MAYOR[k];
  131.                            MAYOR[k] = aux;
  132.                        }
  133.                    }
  134.                }
  135.                printf ("\nEl orden de mayor es: ");
  136.                for (f=0;f<n;f++)
  137.                    printf("%d\n",MAYOR[f]);
  138.                break;
  139.            case 5:
  140.                printf ("\nIngrese una Palabra: ");
  141.                scanf("%s", palabra);
  142.                x=strlen(palabra);
  143.                x=x-1;
  144.                for(y=0,z=x;y<=x/2;y++,z--)
  145.                    if(palabra[y]==palabra[z])
  146.                    {
  147.                        printf("Es palindromo\n");
  148.                        break;
  149.                    }
  150.                else
  151.                    {
  152.                        printf("No es palindromo\n");
  153.                        break;
  154.                    }break;
  155.            case 6:
  156.                printf ("Integrantes:\n  *Castillo Luis\n  *Rodriguez Ronald\n  *Moreno Jose Daniel\n");
  157.                op = 6;
  158.            }
  159.  
  160.  
  161.        }while (op != 6);
  162.        break;
  163.  
  164.    }
  165.    else
  166.        printf ("\n\t\tContraseña Incorrecta");
  167.        faltan--;
  168.  
  169. }
  170. while (faltan>0);
  171. if(faltan==0)
  172. printf("\n\n\tNumero de intentos maximos alcanzados hasta luego =D");
  173.  
  174.    return 0;
  175. }
  176.  


« Última modificación: 16 Junio 2015, 05:39 am por neron991 » En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #1 en: 16 Junio 2015, 10:31 am »

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 Desconectado

Mensajes: 14


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #2 en: 16 Junio 2015, 18:19 pm »

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 Desconectado

Mensajes: 17


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #3 en: 17 Junio 2015, 22:57 pm »

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 Desconectado

Mensajes: 14


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #4 en: 19 Junio 2015, 00:05 am »

Puedes mostrar un ejemplo de como seria esta suma? ya que no te entiendo lo que quieres hacer xD, con esto verificamos el programa   :silbar:
En línea

neron991

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #5 en: 19 Junio 2015, 17:38 pm »

Ejemplo: tenemos el caso de que la matriz sea tres por tres

1   2   3
2   4   2
1   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 Desconectado

Mensajes: 14


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #6 en: 19 Junio 2015, 21:30 pm »

mmm creo que si entendi jajaj haber prueba este cambio en tu case 3:


Código
  1.  
  2. for (i=0;i<=n-2;i++)
  3.                {
  4.                    for (j=1;j<=n-1;j++)
  5.                    {
  6.                      if (j != i)
  7.                            sumar = sumar + m[i][j];
  8.                    }
  9.                }
  10.  
  11.  
En línea

banwave_

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #7 en: 23 Junio 2015, 19:43 pm »

Man, jalo o no jalo?
En línea

neron991

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #8 en: 25 Junio 2015, 20:16 pm »

Gracias hermano me sirvió!! Eres el amo :o :o
En línea

banwave_

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: [Consulta] Programa lenguaje C resultado incorrecto
« Respuesta #9 en: 14 Julio 2015, 19:47 pm »

Pueden cerrar este tema... esta solucionado.
Gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines