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


 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Imprimir bien la matriz
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Imprimir bien la matriz  (Leído 297 veces)
QuieroAprender

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Imprimir bien la matriz
« en: 28 Marzo 2020, 04:04 »

Hola buenas noches, podrían decirme por favor, porque esto me imprime las posiciones y no los valores que deberían.
#include<stdio.h>
#include<stdlib.h>
    main()
    { int m,n,p,o,x=0,y=0;
        printf("......Primera matriz (A).....\n Fila:");
        scanf("%d",&m);
        printf(" Columnas:");
        scanf("%d",&n);
        printf("......Segunda matriz (B).....\n Fila:");
        scanf("%d",&p);
        printf(" Columnas:");
        scanf("%d",&o);
        printf("\n Por favor introduzca los elementos de (A):\n");
        if(n!=p){
            printf("No cumple la condicion de multiplicacion");
        }else{
    int a[20][20],b[20][20],c[20][20],S,mul=0;
        for(x=1;x<=m;x++)
            for(y=1;y<=n;y++)
        {
            printf("A[%d][%d]:",x,y);
            scanf("%d",&a
  • [y]);
        }
        printf("Introduzca los valores de (B):\n");
       for(x=1;x<=p;x++)
            for(y=1;y<=o;y++)
        {
            printf("B[%d][%d]:",x,y);
            scanf("%d",&b
  • [y]);
        }
        for(x=1;x<=m;x++)
            for(y=1;y<=o;y++)
                for(S=1;S<=o;S++)
{


            mul=mul+(a
  • *b[y]);
            c
  • [y]=mul;}

        system("cls");
        printf("....Matriz resultante....\n");
        for(x=1;x<=m;x++)
        {   printf("\n");
            for(y=1;y<=o;y++)
                {printf("%d",c
  • [y]);
                    printf("\n");
        }
    }}}



En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 796



Ver Perfil
Re: Imprimir bien la matriz
« Respuesta #1 en: 28 Marzo 2020, 04:36 »

Utiliza las etiquetas de Código GeSHi para insertar tu código. Las puedes seleccionar encima del cuadro de texto en el desplegable que dice Código GeSHi (selecciona las del lenguaje de programación apropiado, en tu caso C). Si te fijas has creado listas y tachados en tu código por utilizar letras entre corchetes sin ponerlo dentro de etiquetas de Código GeSHi. Así es muy complicado poder ver bien tu código.

Veo varias cosas importantes:
  • Deberías utilizar nombres de variables descriptivos. Así no hay manera de acordarse de qué representa cada variable.
  • Primero muestras el mensaje para introducir los valores de A y después compruebas que las matrices sean válidas. Hazlo mejor en el orden inverso.
  • Utiliza constantes para guardar los números sueltos que aparezcan en el programa. Harán tu código más fácil de modificar.
Código
  1. #include <stdio.h>
  2. //...
  3. #define MAX_SIZE 20
  4. //...
  5. int main(){ // LA FUNCION MAIN RETORNA UN VALOR ENTERO (INT) NORMALMENTE 0 CUANDO TODO VA BIEN
  6.    //...
  7.    int matriz1[MAX_SIZE][MAX_SIZE]; // Uso de la constante para los tamaños
  8.    //...
  9.    return 0;
  10. }

  • Los índices en C/C++ (y en otros lenguajes de programación) empiezan en 0. El primer elemento de un array o de una matriz es el elemento 0, no el 1.
  • Con respecto al anterior punto, el último elemento de un array de longitud n, no es array[n] sino array[n-1]. En tus bucles estás accediendo a posiciones fuera de memoria.

Ejemplo de programa con matriz:
Código
  1. #include <stdio.h>
  2.  
  3. #define MAX_SIZE 20
  4.  
  5. int main(){
  6.    int matriz[MAX_SIZE][MAX_SIZE];
  7.    int filasUtiles = 10, columnasUtiles = 10; // Lo defino aqui aunque lo suyo seria pedirlo por teclado ya que se presupone que no conocemos la longitud util de la matriz aun
  8.    // Si se pide por teclado seria conveniente comprobar que dichos valores no son superiores a MAX_SIZE ya que sino tendriamos un problema
  9.  
  10.    for(int i = 0; i < filasUtiles; ++i){
  11.        for(int j = 0; j < columnasUtiles; ++j){
  12.            printf("Introduce el valor del elemento [" + i + "][" + j + "]: ");
  13.            scanf("%d", &matriz[i][j]);
  14.        }
  15.    }
  16.  
  17.    printf("\n***** Matriz resultante: *****\n");
  18.    for(int i = 0; i < filasUtiles; ++i){
  19.        for(int j = 0; j < columnasUtiles; ++j){
  20.            printf("%d\t", matriz[i][j]); // \t indica un tabulador. Tambien puedes usar un espacio simplemente
  21.        }
  22.        printf("\n");
  23.    }
  24.  
  25.    return 0; // Si esta linea no se pone, se pondra implicitamente. Pero la funcion main() siempre devolvera un int.
  26. }


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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