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

 

 


Tema destacado:


+  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 2,125 veces)
QuieroAprender

Desconectado Desconectado

Mensajes: 1


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

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: 1.008



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

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:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con imprimir diagonales en matriz bidimensional
.NET (C#, VB.NET, ASP)
greenselves 2 8,231 Último mensaje 19 Marzo 2010, 16:34 pm
por greenselves
Imprimir matriz de enteros en un jTextArea
Java
falko0n 5 16,793 Último mensaje 26 Marzo 2012, 20:08 pm
por Proteus1989
Ayuda con imprimir una matriz en arreglo bidimensional
Programación C/C++
conker93 1 8,050 Último mensaje 6 Octubre 2012, 04:13 am
por shellb_c0de
Como imprimir coordenadas de una matriz???
.NET (C#, VB.NET, ASP)
omar_tijoux 0 3,362 Último mensaje 26 Octubre 2016, 03:12 am
por omar_tijoux
Error al imprimir una matriz por teclado
Programación C/C++
victiman 6 2,257 Último mensaje 17 Enero 2017, 19:19 pm
por victiman
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines