Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2013, 01:31   #1
AnthonyB
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 38
Стрелка Нарушение доступа(Ошибка сегментации)

Здравствуйте,ошибка в программе.
Компилируется,запускается,но выдает "Ошибка в выполнении программы" как только перехожу в функцию "sum" .

При отладке пишет:"Ваша программа вызвала нарушение доступа(ошибку сегментации)"

Заранее спасибо!

P.s
на остальное не функции или мелкие недочеты не обращайте внимание
P.s.s
Если кто-то захочет запустить программу сам,то пожалуйста вводите матрицу 3*3 и необходимо иметь 2 текстовых файла matr1.txt и matr2.txt




Код:
#include <iostream>
#include <fstream>
#include <iomanip> 

using namespace std;

void enter_matr();
void sum();
void multiply();
void division();
void grade();
void inverse();

 int *pM=0,*pN=0,*pM1=0,*pN1=0;

int main()
{
  setlocale(LC_ALL, "Russian");

  enter_matr();

  int menu_choose;
 cout<<"1.Sum Matrix\n";   
 cout<<"2.Multiply Matrix \n";   
 cout<<"3.Divide matrix \n"; 
 cout<<"4.Grade \n";
 cout<<"5.Inverse \n";
 cout<<"6.Exit\n";
 cin>>menu_choose;
 
 switch(menu_choose) {
        case 1 :
            
            sum();
            break;
        case 2 :
            multiply();
            break;
        case 3 :
            division();
            break;
        case 4 :
            grade();
            break;
        case 5 :
            inverse();
            break;
      /*  case 6 :
           close;
            break;
*/
        case default:
            ñout<<"Wrong!Error!";
           break;
            
            }
       
  system("pause");          
return 1;
}


void enter_matr()
{
 int i,j,n,m,n1,m1;

 pM=&m;pN=&n;pM1=&m1;pN1=&n1;
 cout<<"=======1 Matrix=======\n";
  cout<<"Кол-во столбцов:";
 cin>>m;
 cout<<"Кол-во рядков:";
 cin>>n;
 int matr1[n][m],matr2[n1][m1];


   
ofstream matr_1("matr1.txt"); 
cout<<"Введите первую матрицу: \n";
for(i=0;i<=*pN-1;i++){
 for (j=0;j<=*pM-1;j++){
  cin>>matr1[i][j];
  matr_1<<setw(2)<<matr1[i][j]<<" "; 
 }
matr_1<<"\n";
}
matr_1.close ();

//Âòîðàÿ Ìàòðèöà
 cout<<"=======Матрица 2======= \n";
 cout<<"Кол-во столбцов:";
 cin>>m1;
 cout<<"Кол-во рядков:";
 cin>>n1;
 
ofstream matr_2("matr2.txt"); 
cout<<"Введите вторую матрицу: \n";
for(i=0;i<=*pN1-1;i++){
 for (j=0;j<=*pM1-1;j++){
  cin>>matr2[i][j];
  matr_2<<setw(2)<<matr2[i][j]<<" "; 
 }
 matr_2<<"\n";
}
matr_2.close ();

cout<<"\n \n \n";
  
     
}




void sum()                                                          //ЗДЕСЬ УЖЕ НЕ ВЫПОЛНЯЕТСЯ!!!
{
   /*  cout<<"*pN="<<*pN<<"\n";
      cout<<"*pN1="<<*pN1<<"\n";
       cout<<"*pM="<<*pM<<"\n";
       cout<<"*pM1="<<*pM1<<"\n"; 
 if ((*pN!=*pN1)||(*pM!=*pM1))
 {cout<<"Bad!";}else{cout<<"Good!";} */
 
int n=3,m=3,n1=3,m1=3,i,j,i1,j1,k,l;
int matr1[n][m],matr2[n1][m1],matr_sum[l][k];

cout<<"Íà÷àëî! \n";

  //Ìàòðèöà 1,ñ÷èòûâàåì
ifstream matr_1("matr1.txt"); // Îòêðûëè ôàéë 
for(i=0;i<=n-1;i++){
 for(j=0;j<=m-1;j++){
matr_1>>matr1[i][j]; // Ñ÷èòàëè ýëåìåíò
 }
}
matr_1.close();

  //Ìàòðèöà 2,ñ÷èòûâàåì
ifstream matr_2("matr2.txt"); // Îòêðûëè ôàéë 
for(i1=0;i1<=n1-1;i1++){
 for(j1=0;j1<=m1-1;j1++){
matr_2>>matr2[i1][j1]; // Ñ÷èòàëè ýëåìåíò
 }
}
matr_2.close();

//Ñóìèðóåì
for(l=0;l<=n-1;l++){
 for(k=0;k<=m-1;k++){
 matr_sum[l][k]=matr1[l][k]+matr2[l][k];//Ñóììà ñîîòâåòñòâóþùèõ (l,k)åë-òîâ
 }
}

for(l=0;l<=n-1;l++){
 for(k=0;k<=m-1;k++){
 cout<<matr_sum[l][k];
 }
 cout<<"\n";
}

 
  system("pause");   
}








void multiply()
{cout<<"Multi";}
void division()
{cout<<"Division";}
void grade()
{cout<<"Grade";}
void inverse()
{cout<<"Inversei";}

Последний раз редактировалось AnthonyB; 15.04.2013 в 01:34.
AnthonyB вне форума Ответить с цитированием
Старый 15.04.2013, 02:11   #2
AnthonyB
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 38
По умолчанию

Не знаю как удалить тему,но решение уже нашел!)))))
Кому интересен,ответ,то в функции sum .
я объявил массив вот таким способом matr_sum[l][k] (,это не правильно!
AnthonyB вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ваша программа вызвала нарушение доступа (ошибку сегментации) Fatal Error Общие вопросы C/C++ 2 28.06.2012 20:00
Нарушение прав доступа Simito Общие вопросы C/C++ 1 03.06.2011 12:06
Нарушение прав доступа Hemul Qt и кроссплатформенное программирование С/С++ 1 08.04.2011 20:02
Ошибка: Нарушение доступа к памяти. VladimirAleks Общие вопросы Delphi 6 03.11.2009 14:42
Нарушение доступа Perception Помощь студентам 9 11.07.2008 14:44