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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
#1

Считать длину строки текстового файла - C++

07.12.2013, 02:59. Просмотров 1255. Ответов 26
Метки нет (Все метки)

Есть квадратная матрица, которая заполняется данными из файла. Если размерность матрицы больше, чем объём данных в файле, то нужно заполнить недостающие элементы матрицы случайными числами. Пытаюсь сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
cout<<"Введите размерность квадартной матрицы: ";
cin>>s;
int **mas = new int*[s];
 
ifstream fs;
fs.open("input.txt");
int a = fs.getline;
 
if(s > a){
    for(i = a + 1; i < s; i++)
        for(j = a + 1; j < s; j++)
            mas[i][j] = rand() % 19 - 9;
}
Предполагаю, что неправильно считывается длина строки. Вопрос: как правильно её считать? Чтобы условие задачи выполнялось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2013, 02:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать длину строки текстового файла (C++):

Считать из текстового файла только определенные строки - C++
считать из текстового файла например строки с 6 по 9, или с 3 по 19 и записать их в другой текстовый файл

Как считать с текстового файла? - C++
Подскажите, пожалуйста, как можно считать предложение из текстового файла. Вот задачка: Написать программу, подсчитывающую число...

Считать матрицу из текстового файла - C++
в текстовом файле дана матрица 4 9 5 5 9 2 9 2 9 как считать этот двумерный массив и вывести его на экран? подскажите плиз(c++)

Считать данные текстового файла в массив - C++
Здравствуйте знатоки. Есть файл file.txt в котором содержатся числа например массив из 5 символов (сам массив не определён и чисел на...

Как считать информацию с текстового файла? - C++
Нужна помощь! Мне необходимо создать пользовательскую функцию, которая будет считывать информацию с текстового файла.

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

26
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
08.12.2013, 01:22  [ТС] #16
alsav22, а можно наглядно это увидеть? просто честно говоря уже башка не варит
0
MrCold
857 / 755 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
08.12.2013, 02:30 #17
Цитата Сообщение от Кротяка Посмотреть сообщение
alsav22, а можно наглядно это увидеть? просто честно говоря уже башка не варит
Этож просто
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
#include <iostream>
#include <ctime>
#include <fstream>
 
int main()
{
    srand(time(NULL));
    std::ifstream infile("File.txt");
    int **arr, M , N;
    std::cin >> M >> N;
 
 
    arr = new int*[M];
    for( int i = 0; i < M; i++)
    arr[i] = new int[N];
 
 
    for( int i = 0; i < M; i++)
        for( int j = 0; j < N; j++)             
            if( ! infile.eof())
              infile >> arr[i][j];
            else
              arr[i][j] = rand() % 100 + 1;
 
 
            for( int i = 0; i < M; i++)
            {
               std::cout  << std::endl;
             for( int j = 0; j < N; j++)
               std::cout << arr[i][j] << ' ';
            }
 
 
    for(int i = 0; i < M; ++i) 
    delete [] arr[i];
     delete [] arr;
     system("pause");
}
2
Alex5
1102 / 763 / 119
Регистрация: 12.04.2010
Сообщений: 1,936
08.12.2013, 14:54 #18
Цитата Сообщение от MrCold Посмотреть сообщение
C++
1
2
3
4
5
6
for( int i = 0; i < M; i++)
 for( int j = 0; j < N; j++) 
 if( ! infile.eof())
 infile >> arr[i][j];
 else
 arr[i][j] = rand() % 100 + 1;
Последние символы файла могут быть пробелами. eof() вернёт false и мы попытаемся прочитать число, когда в файле остались одни пробелы. См.рис. ( В файле: "1111 2222 3333 " )
1
Миниатюры
Считать длину строки текстового файла  
Alex5
1102 / 763 / 119
Регистрация: 12.04.2010
Сообщений: 1,936
08.12.2013, 15:18 #19
Цитата Сообщение от Кротяка Посмотреть сообщение
- При вводе из файла при недостаточном объеме данных элементы матрицы, для которых не хватило

значений, заполняются случайными значениями;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    for( i ... )
        for( j ... )             
        {
            if( ! ( fs >> arr[i][j] ) )
            {
                /* если не удалось прочитать из файла 
                ( например, потому что файл закончился ), 
                то запишем случайное число */
                arr[i][j] = rand();
            }
 
            //cout << "    " << arr[i][j]; 
        }
2
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
09.12.2013, 18:03  [ТС] #20
MrCold, спасибо большое. Ваш вариант очень помог.

Добавлено через 1 минуту
Цитата Сообщение от Alex5 Посмотреть сообщение
Последние символы файла могут быть пробелами. eof() вернёт false и мы попытаемся прочитать число, когда в файле остались одни пробелы. См.рис. ( В файле: "1111 2222 3333 " )
нужно просто в фигурные скобки добавить для циклов
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.12.2013, 18:08 #21
Цитата Сообщение от Кротяка Посмотреть сообщение
нужно просто в фигурные скобки добавить для циклов
Это о чём?
1
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
09.12.2013, 23:26  [ТС] #22
alsav22, скобки фигурные, вот так
C++
1
2
3
4
5
6
7
8
            for(i = 0; i < s; i++){
                for(j = 0; j < s; j++){
                    if(!fs.eof())
                        fs>>mas[i][j];
                    else
                        mas[i][j] = rand() % 19 - 9;
                }
            }
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
09.12.2013, 23:31 #23
И что от этого изменится?

Добавлено через 1 минуту
Недостаток такого варианта (if(!fs.eof())) поняли?
Цитата Сообщение от Alex5 Посмотреть сообщение
Последние символы файла могут быть пробелами. eof() вернёт false и мы попытаемся прочитать число, когда в файле остались одни пробелы. См.рис. ( В файле: "1111 2222 3333 " )
1
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
09.12.2013, 23:58  [ТС] #24
alsav22, не будет пустого поля
по крайней мере мне помогло

Добавлено через 11 секунд
недостатка не выявил

Добавлено через 10 секунд
возможно пока ещё
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.12.2013, 00:00 #25
Цитата Сообщение от Кротяка Посмотреть сообщение
не будет пустого поля
В файле не будет?
1
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
10.12.2013, 00:03  [ТС] #26
alsav22, в сформированной матрице

Добавлено через 1 минуту
ну т.е. не будет значения -8234414....(и т.д.)
как на скриншоте
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.12.2013, 00:23 #27
Если в файле, то смотря как его создавать. Если вручную, то как напишите, так и будет. Если в коде записывать в файл числа через пробел, то будет. Поэтому рекомендую вариант, предложенный Alex5, который будет правильно работать в обоих случаях.

Добавлено через 19 минут
Цитата Сообщение от Кротяка Посмотреть сообщение
ну т.е. не будет значения -8234414....(и т.д.)
как на скриншоте
Значит в файле нет пробела за последним числом.
1
10.12.2013, 00:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2013, 00:23
Привет! Вот еще темы с ответами:

Считать из текстового файла предложения в односвязный список - C++
Считать из текстового файла предложения в односвязный список. Переставить в первых и последних словах предложений в списке попарно слева и...

Считать из текстового файла числа и вывести их сумму - C++
всем привет! такая задача надо с файла .TXT считать числа и вывести их сумму на екран!? помогите пожайлуста!!! спасибо

Из текстового файла считать массив целых чисел - C++
Из текстового файла input.txt считать массив целых чисел. Предполагается, что количество чисел в массиве не превышает 10. Дописать в...

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


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

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

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