Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: flony en 2 Diciembre 2012, 22:06 PM

Título: suma de matrices
Publicado por: flony en 2 Diciembre 2012, 22:06 PM
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).
Título: Re: suma de matrices
Publicado por: durasno en 3 Diciembre 2012, 01:02 AM
La condicion en los for debe ser "<" y no "<="
Título: Re: suma de matrices
Publicado por: rir3760 en 3 Diciembre 2012, 02:13 AM
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
Título: Re: suma de matrices
Publicado por: jhousef_innovador en 6 Diciembre 2012, 03:30 AM
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;
}