Форум программистов, компьютерный форум CyberForum.ru

Где ошибка? Чтение массива из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как такое может быть? (вызов функции-члена без объекта) http://www.cyberforum.ru/cpp-beginners/thread807056.html
собственно вопрос озвучен. #include <iostream> using namespace std; class Test { public: void print() {
C++ Написать рекурсивную функцию, которая вначале печатает все отрицательные числа, а затем все положительные числа Дана последовательность ненулевых чисел, в конце которой следует 0. Написать рекурсивную функцию, которая вначале печатает все отрицательные числа, а затем все положительные числа http://www.cyberforum.ru/cpp-beginners/thread807054.html
Проверить, принадлежит ли введенная точка заданной области C++
Помогите с программой, очень нужно! Разработка алгоритма решения Первым шагом алгоритма должен быть ввод координат точки: x и y. Для большего удобства при анализе результатов можно вывести введенные значения на экран. Добавлено через 1 час 2 минуты нужно найти, принадлежит ли введенная точка данной области!
C++ Принадлежит ли введенная точка данной области?
Помогите с программой, очень нужно! Разработка алгоритма решения Принадлежит ли введенная точка данной области? вот условие задачи Первым шагом алгоритма должен быть ввод координат точки: x и y. Для большего удобства при анализе результатов можно вывести введенные значения на экран.
C++ Перевод с системы в систему http://www.cyberforum.ru/cpp-beginners/thread807028.html
Даны три целых числа А=(101)2 и В=(101)3 и С=(101)4. Найти новое десятичное число Х=(А+В)*С. На экран вывести значение Х в десятичном и пятеричном виде.
C++ Ошибка при возвращении ссылки из функции Когда функция возвращает ссылку, то ее можно использовать с левой стороны от знака "=". Только не пойму почему не работает \main.cpp|7|error: invalid initialization of reference of type 'int&' from expression of type 'const int'| #include <iostream> #include <cstdlib> template <typename T> T &GetMax(const T &a, const T &b) подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2013, 05:27     Где ошибка? Чтение массива из файла
Путь к файлу:
C++
1
Read_From_File("D:\\programming\\MPI\\Matrica_Na_Vector\\Debug\\Input.txt", _array, _vector, n, m)
Проверьте открытие файла. Все дальнейшие действия будут, если файл открылся для чтения:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
//Считывание матриц из файла, Принимает имя файла, массив, вектор, размеры n и m
bool Read_From_File(string FileName, int** &_array, int* &_vector, int &n, int &m)
{ 
    ifstream reads; 
    reads.open(FileName);//открываем файл
    if (!reads.is_open()) 
    {
        cout << "Error!" << endl;
        return false;
    }
    else
    {
        reads >> n >> m;//считываем n и m
        _vector = new int[m];//Создаём вектор размера m
        _array=new int*[n]; //объявляем массив
        for (int i=0; i<n;i++)
        { 
            _array[i]=new int [m];
        }; 
        //считываем вектор
        for (int j = 0; j < m; j++)
        {
            reads >> _vector[j]; //считываем вектор из файла
        }
        //Считываем массив
        for (int i = 0; i < n; i++) 
        {
            for (int j = 0; j < m; j++)
            {
                reads >> _array[i][j]; //считываем массив из файла
            }
        }
        reads.close();//закрываем файл
        return true;
    }
} 
 
//Запись матрицы в файл, Принимает вектор выходных данных и его размер
int** Write_To_File(int m, int* _vector, string FileName)
{ 
    ofstream writes;
    writes.open(FileName);//открываем файл
    for (int i=0; i<m; i++) 
    { 
        writes<<_vector[i]; //пишем вектор в файл
    }; 
    writes.close();//закрываем файл
} 
 
//Функция возвращает вектор который является результатом умножения вектора на столбцы
//длинна вектора должна равняться количеству столбцов в матрице
int* Multiply(int* vectors, int len_vector, int** mass, int mass_n)
{
    int* Return_Vektor = new int[mass_n];
    for(int i=0; i<mass_n; i++)
    {
        Return_Vektor[i]=0;//обнуляем значение
        for (int j=0; j<len_vector; j++)
        {
            Return_Vektor[i]+=mass[i][j]*vectors[j];//умножение вектора на столбцы
        }
    }
    return Return_Vektor;//возвращая результат
}
 
//Выводит вектор на экран консоли, принимает вектор и его размер
void Print_Vector_To_Screen(int*_vector,int m)
{
    printf("Vector:\n");
    for(int i = 0; i<m; i++)
        printf("%i ",_vector[i]);
    printf("\n");
}
 
//Выводит массив на экран консоли, принимает сам массив, и его размеры
void Print_Array_To_Screen(int** _array, int n, int m)
{
    printf("Array:\n");
    for(int i = 0; i<n; i++)
    {
        for(int j = 0; j<m; j++)
        {
            printf("%i ",_array[i]);
        }
        printf("\n");
    }
}
 
int main(int argc, char* argv[])
{
    setlocale( LC_ALL,"Russian" );
 
    int myrank = 0;//Свой номер в группе
    int ranksize = 0;//кол-во процессов
 
    //инициализация куска MPI
    MPI_Init(&argc, &argv);
    //Определяем свой номер в группе:
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
    //Определяем количество процессов
    MPI_Comm_size(MPI_COMM_WORLD, &ranksize);
 
    if(myrank==0)//если это главный процесс
    {   
        int n=0, m=0;//Количество элементов в массиве
        int** _array,*_vector;//входной массив и вектор
        int* _out_vector = new int[m];//выходной вектор
        if (Read_From_File("D:\\programming\\MPI\\Matrica_Na_Vector\\Debug\\Input.txt", _array, _vector, n, m))//если файл открылся, считываем данные из файла
        {
 
    #pragma region отображение считанных данных на экран
            printf("Show  vector on screen? Y-1 / N-0:\n");
            bool flag=0;
            cin>>flag;
            if(flag==1)//если юзвер согласился
            {
                Print_Vector_To_Screen(_vector,m);//Выводим вектор на экран
                Print_Array_To_Screen(_array,n,m);//выводим массив на экран
            }
    #pragma endregion
 
            int _count = m/(ranksize-1);//Количество столбцов для отправки
            //отправляем элементы массива
            for (int i =1 ; i<ranksize;i++)
            {
                MPI_Send(&n,1,MPI_INT,i,i,MPI_COMM_WORLD);//отправляем количество строк
                if(i+1!=ranksize)//если это не последний процесс
                {
                    MPI_Send(&_count,1,MPI_INT,i,i,MPI_COMM_WORLD);//отправляем количество столбцов
                    //MPI_Send(Array+cou*(i-1),n/(ranksize-1),MPI_INT,i,i,MPI_COMM_WORLD);//элементы массива
                }
                else //если это последний процесс
                {
                    int t =( n-_count*(ranksize-2));
                    MPI_Send(&t,1,MPI_INT,i,i,MPI_COMM_WORLD);//отправляем количество столбцов включая оставшиеся
                    //MPI_Send(Array+cou*(i-1),t,MPI_INT,i,i,MPI_COMM_WORLD);//элементы массива
                }
            }
 
            MPI_Status stat;//статус
            for (int i =1 ; i<ranksize;i++)
            {
                /*int *retur;//ответ от сервера вектор
                MPI_Recv(&retur,1,MPI_INT,i,i,MPI_COMM_WORLD,&stat);//принимаем ответ от процесса*/
 
            }
 
        }
        else //иначе если это не главный то получаем,
        {
            MPI_Status status;//Статус процесса получения
            int n=0, m=0;//количество строк количество столбцов
            MPI_Recv(&n, 1, MPI_INT, 0, myrank, MPI_COMM_WORLD,&status);
            MPI_Recv(&m, 1, MPI_INT, 0, myrank, MPI_COMM_WORLD,&status);
            int* _vector= new int[m];//вектор кусок общего
            int** _array; //массив кусок общего массива (несколько столбцов) 
            //получаем вектор
            MPI_Recv(_vector,m, MPI_INT, 0, myrank,MPI_COMM_WORLD,&status);
            printf("Get count elements vector %i im  %i\n",m,myrank);
            /*
            дописать получение массива (столбцов) потом сделаю
            */
        }   
        MPI_Barrier(MPI_COMM_WORLD);
        MPI_Finalize();
    
    }
    
    system("pause");
    return 0;
}

Добавлено через 6 минут
С исправлениями нормально выводит файл.
 
Текущее время: 14:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru