suma de matrices

Iniciado por flony, 2 Diciembre 2012, 22:06 PM

0 Miembros y 1 Visitante están viendo este tema.

flony

tengo este codigo que me hice para practicar suma de matrices...compila pero en algun lado no  deja que se ejecute..me podrian decir cual es el error
#include <iostream>
using namespace std;
int main()
{
int i,j;
int matriz[1][1];
int matriz1[1][1];
int matrizresultado[1][1];

cout<<"cargar primer matriz"<<endl;
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
cin>>matriz[i][j];
}
}
//carga matriz1
cout<<"cargamos segunda matriz"<<endl;
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
cin>>matriz1[i][j];
}
}
//suma matrice
for (int i = 0; i < 1; i++)
{
for (int j = 0; j <= 1; j++)
{
matrizresultado[i][j]=matriz[i][j]+matriz1[i][j];
}
}
//resultado matrices
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
cout<<"el resultado es :"<<matrizresultado[i][j];
}
}
getchar();
return 0;
}

Citar'matrices.exe' (Win32): 'C:\Users\flony\Documents\Visual Studio 2012\Projects\hola mundo\Debug\matrices.exe' cargado. Símbolos cargados.
'matrices.exe' (Win32): 'C:\Windows\SysWOW64\ntdll.dll' cargado. No se puede encontrar o abrir el archivo PDB.
'matrices.exe' (Win32): 'C:\Windows\SysWOW64\kernel32.dll' cargado. No se puede encontrar o abrir el archivo PDB.
'matrices.exe' (Win32): 'C:\Windows\SysWOW64\KernelBase.dll' cargado. No se puede encontrar o abrir el archivo PDB.
'matrices.exe' (Win32): 'C:\Windows\SysWOW64\msvcp110d.dll' cargado. Símbolos cargados.
'matrices.exe' (Win32): 'C:\Windows\SysWOW64\msvcr110d.dll' cargado. Símbolos cargados.
Run-Time Check Failure #2 - Stack around the variable 'matrizresultado' was corrupted.
El programa '[4656] matrices.exe' terminó con código 0 (0x0).
si un problema no tiene solucion entonces no es un problema...es algo inevitable

durasno

La condicion en los for debe ser "<" y no "<="
Ahorrate una pregunta, lee el man

rir3760

El error principal ya lo comento durasno: utilizar en los bucles el operador "<=" cuando debería ser "<".

Ello porque cuando declaras un array:
Código (cpp) [Seleccionar]
int num[N];
Se indica el numero de elementos N y se accede a estos mediante los indices 0 .. N-1.

Como declaras un array de un elemento que a su vez es un array de un elemento de tipo int:
Código (cpp) [Seleccionar]
int matriz[1][1];
El único indice valido al acceder a ese array es cero, mismo caso con los otros dos arrays.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

jhousef_innovador

Que tal amigo aqui esta tu codigo resuelto

Código (cpp) [Seleccionar]
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
int i,j;
int matriz[10][10];
int matriz1[10][10];
int matrizresultado[10][10];

cout<<"cargar primer matriz"<<endl;
for (i=0; i<=1; i++) {
        for (j=0; j<=1; j++) {
            cout<<"Ingresa numero: "; cin>> matriz[i][j];
            }
        }
//carga matriz1
cout<<"cargamos segunda matriz"<<endl;
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
cin>>matriz1[i][j];
}
}
//suma matrice
for (int i = 0; i <=1; i++)
{
for (int j = 0; j <= 1; j++)
{
matrizresultado[i][j]=matriz[i][j]+matriz1[i][j];
}
}
//resultado matrices

     system("CLS");       
cout<<"Matriz A: \n\n";
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
cout<<"["; cout<<matriz[i][j]; cout<<"]";
}
cout<<"\n";
}
cout<<"\n\n";

cout<<"Matriz B: \n\n";
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
cout<<"["; cout<<matriz1[i][j]; cout<<"]";
}
cout<<"\n";
}


cout<<"\n\nEl Resultado Es: \n\n";
for (int i = 0; i <= 1; i++)
{
for (int j = 0; j <= 1; j++)
{
cout<<"["; cout<<matrizresultado[i][j]; cout<<"]";
}
cout<<"\n";
}
getch();
return 0;
}