С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
#1

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

26.03.2010, 17:21. Просмотров 770. Ответов 13
Метки нет (Все метки)

Здрасти, как загрузить матрицу из файла?
если есть такой txt-файл:

3 3
1 2 3
4 5 6
7 8 9

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

Загрузка чисел в массив из файла - C++
Есть файл с числами (19 29 0), разделенными пробелами (разного количества). Считывается строка из файла, и в цикле считываются числа из...

Загрузка данных из файла с возможностью выбора файла - C++
Всем доброго времени суток. У меня возник такой вопрос как организовать выбор файла с данными на языке СИ, пришла мысль в голову, что можно...

[C++] Загрузка файла - C++
#include "stdafx.h" #include <windows.h> #include <urlmon.h> #pragma comment(lib, "urlmon.lib") int main() { HRESULT hr...

Загрузка bmp файла - C++
установил RAD 2010, auxDIBImageLoad перестал работать(символ не найден пишет мне студия). можете пожалуйста скинуть замену этой функции,...

Загрузка bitmap файла - C++
Как побайтово загрузить bitmap-файл, для дальнейшей работы с ним (сравнение цветов и т.п.) в массив? Пытался как то так: ...

Файлы, загрузка с файла - C++
Есть два класса. нужно сохранить данные в базу и загрузить. Сохранение сделал. Подскажите как сделать загруску с файла чтобы данные можно...

13
Hypafrag
26 / 25 / 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);
1
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:12  [ТС] #3
а как вывести на экран только что считанный символ? printf(...)
0
Hypafrag
26 / 25 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:33 #4
После fscanf(f, "%d", &Matr[i][j]); добавь printf("%d", Matr[i][j]);
1
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:35  [ТС] #5
а на с++ не переведете?
0
Hypafrag
26 / 25 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:39 #6
Так, оно и на с++ работает
0
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:40  [ТС] #7
ну а что такое rt значит?
C++
1
f = fopen("filename.txt", "rt");
0
Hypafrag
26 / 25 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:42 #8
r - открыть для чтения
t - текстовый режим
1
PointsEqual
ниначмуроФ
837 / 521 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
26.03.2010, 19:44  [ТС] #9
чего то я неправильно значит сделал, - нули все выводится(
0
stratovarius
13 / 13 / 0
Регистрация: 12.07.2009
Сообщений: 114
26.03.2010, 19:45 #10
Цитата Сообщение от PointsEqual Посмотреть сообщение
ну а что такое rt значит?
C++
1
f = fopen("filename.txt", "rt");
то, что ты открываешь текстовый файл для чтения
1
Hypafrag
26 / 25 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 19:50 #11
Имя файла правильно введено?

После f = fopen(...) не плохо бы проверку поставить:
C
1
2
3
4
if (f == NULL)
{
    //обработка ошибки открытия файла
}
0
PointsEqual
ниначмуроФ
837 / 521 / 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];
}
0
Hypafrag
26 / 25 / 1
Регистрация: 19.03.2010
Сообщений: 57
26.03.2010, 21:40 #13
Ситуация такая - в scanf("%d", &Matr[i][j]) %d означает, что считываются целые числа.
Чтобы считывать вещественные, %d нужно заменить на %f.
Это относится и к printf.
0
PointsEqual
ниначмуроФ
837 / 521 / 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();
работает
0
27.03.2010, 10:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2010, 10:53
Привет! Вот еще темы с ответами:

Двойная загрузка файла - C++
Помогите понять, в чем тут дело. Код пишу в среде QT Creator под OS X, компилятор - CLang. При компиляции такого кода, появляется ошибка...

Загрузка из файла в списки - C++
Добрый вечер, нужно создать БД студентов используя списки. Уже работает добавление студентов, вывод, сохранение в файл, но не работает...

Загрузка файла в дерево - C++
надо загрузить фаил в дерево и произвести продвижение по дереву на ходя минимальное значение ,также надо ввести инфо в фаил помогите...

Загрузка файла на хостинг - C++
Доброго времен суток, уважаемые посетители cyberforum! Хотелось бы узнать, каким образом можно залить файл на хостинг? (http://rghost.ru/...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.