Компиляцию проходит, но прога не запускается(

defex04

#include <fstream>
#include <iostream>
#include <iomanip>
 
#define MIN_NEGATIVE_INT -2147483648//Максимальное отрицательное для int
#define MAX_POSITIVE_INT 2147483647//Максимальное положительное для int
 
using namespace std;
 
void matrixmem(int N, int M, int **pa);
void readMatrix(fstream &in, int &N, int &M, int **pa);
void print(fstream &out, int N, int M, int **pa);
void SaveResultToFile(fstream &out, int N, int **result, int **pa);
int FindMinPositiveAndMaxNegative(int N, int M, int **pa, int **result);
void openFile(fstream &in,char *filename, ios_base::openmode mode);
void closeFile(fstream &file); 
void readSize(fstream &in,int &N,int &M); 
 
 
 
int main()
{
    setlocale(LC_CTYPE,".1251");
 
    int N,M; // N - количество строк, M - количество столбцов матрицы
    int **pa; // Двумерный массив который считываем с файла
    int **result; // Двумерный массив для хранения результата
 
    fstream in,out;
    
    openFile(in,"in.txt",ios::in);
    openFile(out,"out.txt",ios::out);
    
    readSize(in,N,M); 
    matrixmem(N,M,pa);
    readMatrix(in,N,M,pa);
    
    
    out<<" Исходные данные"<<endl;
    print(out,N,M,pa);
    FindMinPositiveAndMaxNegative(N,M,pa,result);
 
    out<<" Задание: Составить программу нахождения максимального элемента среди отрицательных"<<endl;
    out<<" и минимального среди положительных для каждой строки матрицы."<<endl;
    out<<" "<<endl;
    out<<" Результат:"<<endl;
    SaveResultToFile(out,N,result,pa);
 
    closeFile(in);
    closeFile(out);
 
    
    return 0;
}
// Функция открытия фаила
void openFile(fstream &in,char *filename, ios_base::openmode mode) //Открытие файла
{
    in.open(filename,mode);
    if (!in)
    {
        cout<<"Ошибка 1. Ошибка открытия файла. Файл"<< filename <<"не найден"<<endl;
        exit(1);
    }
}
// Функция закрытия фаила
void closeFile(fstream &file)
{
    file.close();
    if (!file)
    {
        cout<<"Ошибка 2. Ошибка закрытия файла"<<endl;
    }
}
 
//Выделение динамической памяти
void matrixmem(int N,int M, int **pa)
{
    pa=new int*[N];
    for (int i=0;i<N;i++)
        pa[i]=new int[M];
}
 
 
//Считывание матрицы
void readMatrix(fstream &in, int &N, int &M, int **pa)
{
    int i=0;
    int j=0;
    for (int i=0;i<N;i++)
        for (int j=0;j<M;j++)
        {
            in>>pa[i][j];
            
            
            if (!in)
            {
                cout<<"Ошибка 3. Неправильные значения матрицы"<<endl;
                exit(3);
            }
        }
        return;
}
 
//Печать данной матрицы в файл вывода
void print(fstream &out, int N, int M, int **pa)
{
    out<<N<<"x"<<M<<endl;
    for (int i=0;i<N;i++)
    {
        for(int j=0;j<M;j++)
            out<< setw(5)<<pa[i][j];
        out<<endl;;
    }
}
 
// Считываем размерность матрицы
void readSize(fstream &in,int &N,int &M)
{
    in>>ws>>N>>ws;
    in.ignore(1,'x');
    in>>ws>>M;
    if (N<=0||M<=0)
    {
        cout<<"Ошибка 4. Неверные значения N и M"<<endl;
        exit(2);
    }
}
 
// Функция нахождения max и min
int FindMinPositiveAndMaxNegative(int N, int M, int **pa, int **result)
    {
        result=new int*[N];
 
        for(int i=0;i<N;i++)
        {
            result[i]=new int[2];
            result[i][0]=MAX_POSITIVE_INT;
            result[i][1]=MIN_NEGATIVE_INT;
        }
 
        for(int i=0;i<N;i++)
        {
            for(int j=0;j<M;j++)
            {
                if(pa[i][j] > 0)
                {
                    if(pa[i][j]<result[i][0])
                        result[i][0]=pa[i][j];
                    return result[i][0];
                }
 
                else if(pa[i][j]>result[i][1])
                        result[i][1]=pa[i][j];  
                return result[i][1];
            }
    }
}
 
// Сохраняем результат в файл вывода
void SaveResultToFile(fstream &out, int N, int **result, int **pa)
    {
 
 
    
        for(int i=0;i<N;i++)
        {
 
            
            if(result[i][0]==MAX_POSITIVE_INT)
            {
                
                out<<"Строка № "<<i+1<<" Положительных чисел нет ";
            }
 
            else
            {
                
                out<<"Строка № "<<i+1<<" Минимальное положительное число:"<<result[i][0]<<" ";
            }
 
            if(result[i][1]==MIN_NEGATIVE_INT)
            {
                
                out<<"Отрицательных чисел нет\n";
            }
            else
            {
                
                out<<"Максимальное отрицательное число:"<<result[i][1]<<endl;
            }
 
        }
}
Помогите пожалуйста найти ошибку(
4 ответа

defex04

но прога не запускается(
Откуда видите? Перед exit-ами в коде сделайте паузу. Иначе, зачем перед ними вывод ссобщений, которые не успеешь прочитать?


defex04

http://savepic.net/4010205.htm вот что выдает программа при попытке ее запустить
for (int i=0;i>pa[i][j];
вроде отладчик ругается на этот момент


defex04

попробуйте поменять сигнатуру void matrixmem(int N,int M, int **pa) на void matrixmem(int N,int M, int**&pa)


defex04

Удалил.