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

Загрузка чисел из файла - C++

Восстановить пароль Регистрация
 
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 17:21     Загрузка чисел из файла #1
Здрасти, как загрузить матрицу из файла?
если есть такой txt-файл:

3 3
1 2 3
4 5 6
7 8 9

первая строка-размерность матрицы(3 3)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2010, 17:21     Загрузка чисел из файла
Посмотрите здесь:

C++ загрузка файла в дерево
C++ [C++] Загрузка файла
Загрузка файла в массив C++
Загрузка чисел в массив из файла C++
Загрузка данных из файла с возможностью выбора файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hypafrag
 Аватар для Hypafrag
25 / 24 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 18:07     Загрузка чисел из файла #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
 
int SizeX, SizeY, **Matr;
FILE *f;
 
f = fopen("filename.txt", "rt");
 
fscanf(f, "%d %d", &SizeX, &SizeY);
Matr = (int**)malloc(sizeof(int*) * SizeX);
for (int i = 0; i < SizeX; i++)
{
    Matr[i] = (int*)malloc(sizeof(int) * SizeY);
}
for (int i = 0; i < SizeX; i++)
{
    for (int j = 0; j < SizeY; j++)
    {
       fscanf(f, "%d", &Matr[i][j]);
    }
}
fclose(f);
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:12  [ТС]     Загрузка чисел из файла #3
а как вывести на экран только что считанный символ? printf(...)
Hypafrag
 Аватар для Hypafrag
25 / 24 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:33     Загрузка чисел из файла #4
После fscanf(f, "%d", &Matr[i][j]); добавь printf("%d", Matr[i][j]);
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:35  [ТС]     Загрузка чисел из файла #5
а на с++ не переведете?
Hypafrag
 Аватар для Hypafrag
25 / 24 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:39     Загрузка чисел из файла #6
Так, оно и на с++ работает
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:40  [ТС]     Загрузка чисел из файла #7
ну а что такое rt значит?
C++
1
f = fopen("filename.txt", "rt");
Hypafrag
 Аватар для Hypafrag
25 / 24 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:42     Загрузка чисел из файла #8
r - открыть для чтения
t - текстовый режим
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:44  [ТС]     Загрузка чисел из файла #9
чего то я неправильно значит сделал, - нули все выводится(
stratovarius
13 / 13 / 0
Регистрация: 12.07.2009
Сообщений: 114
26.03.2010, 19:45     Загрузка чисел из файла #10
Цитата Сообщение от PointsEqual Посмотреть сообщение
ну а что такое rt значит?
C++
1
f = fopen("filename.txt", "rt");
то, что ты открываешь текстовый файл для чтения
Hypafrag
 Аватар для Hypafrag
25 / 24 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:50     Загрузка чисел из файла #11
Имя файла правильно введено?

После f = fopen(...) не плохо бы проверку поставить:
C
1
2
3
4
if (f == NULL)
{
    //обработка ошибки открытия файла
}
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 21:05  [ТС]     Загрузка чисел из файла #12
проверка прошла удачно, я думаю чтото в создании массива, т.к вместо malloc я использовал своё создание матрицы:

C++
1
2
3
4
5
6
7
8
9
float** CreateMatrix(int count_row,int count_col){
    float** Matrix=new float*[count_row];
    for (int i=0; i<count_row; i++)
    Matrix[i]=new float[count_col];
    for (int i=0; i<count_row; i++)
    for (int j=0; j<count_col; j++)
    Matrix[i][j]=0;
    return &Matrix[0];
}
Hypafrag
 Аватар для Hypafrag
25 / 24 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 21:40     Загрузка чисел из файла #13
Ситуация такая - в scanf("%d", &Matr[i][j]) %d означает, что считываются целые числа.
Чтобы считывать вещественные, %d нужно заменить на %f.
Это относится и к printf.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2010, 10:53     Загрузка чисел из файла
Еще ссылки по теме:

C++ Загрузка структуры из файла
Загрузка файла из интернета C++
C++ Загрузка файла на хостинг

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
27.03.2010, 10:53  [ТС]     Загрузка чисел из файла #14
Hypafrag, я вот так сделал на с++:

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
 ifstream in(pathToFileLoad.c_str(), ios::in | ios:: binary);
                if (!in){
                    cout<<"Error open file "<<pathToFileLoad<<std::endl;
                    return 1;
                }
                int row=0;
                int col=0;
                int it=0;
                in>>count_supplier;//row;
                in>>count_consumer;//col;
                float** MatrixPostav=CreateMatrix(count_supplier,count_consumer);
                    int i=0;
                    int j=0;
                   for (int g=1; g<count_consumer*count_supplier+1; g++){
                       in>>it;
                       cout<<it;
 
                       MatrixPostav[i][j]=it;
                       j++;
                       if ((g)%count_consumer==0){
                           j=0;
                           i++;
                       }
 
                   }
cout<<endl;
                       for (int i=0; i<count_supplier; i++){
                        for (int j=0; j<count_consumer; j++){
                            cout<<MatrixPostav[i][j]<<" ";
                        }
                        cout<<endl;
                        }
                        getch();
работает
Yandex
Объявления
27.03.2010, 10:53     Загрузка чисел из файла
Ответ Создать тему
Опции темы

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