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

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

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

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

07.12.2013, 02:59. Просмотров 1189. Ответов 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;
}
Предполагаю, что неправильно считывается длина строки. Вопрос: как правильно её считать? Чтобы условие задачи выполнялось
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2013, 02:59     Считать длину строки текстового файла
Посмотрите здесь:
Считать из текстового файла только определенные строки C++
C++ Считать матрицу из текстового файла
Как считать с текстового файла? C++
C++ Считать данные текстового файла в массив
Как считать информацию с текстового файла? C++
C++ Считать из текстового файла числа и вывести их сумму
Считать из текстового файла целые числа в массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 15:13     Считать длину строки текстового файла #2
Вот это компилируется?
C++
1
int a = fs.getline;
Добавлено через 1 минуту
Данные в файле - это строка чисел, расположенных через пробел? Что вам длина такой строки скажет о количестве чисел в ней?
Alex5
1049 / 712 / 105
Регистрация: 12.04.2010
Сообщений: 1,792
07.12.2013, 16:21     Считать длину строки текстового файла #3
Цитата Сообщение от Кротяка Посмотреть сообщение
заполняется данными из файла
C++
1
2
3
4
5
6
7
8
9
10
11
    ifstream fs;
    fs.open("input.txt");
 
    // читаем числа из файла 
    int n;
    while( fs >> n )
    {
        cout << n << endl;
    }
 
    fs.close();
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
07.12.2013, 16:45  [ТС]     Считать длину строки текстового файла #4
alsav22,
1) не компилируется
2) да, это матрица чисел, расположенных через пробел
3) я как раз и спрашиваю - как правильно задать условие "Если размерность матрицы больше, чем объём данных в файле", понимая, что
C++
1
if(s > a)
неверно

Добавлено через 59 секунд
Alex5, это я и сам давным давно сделал
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 16:49     Считать длину строки текстового файла #5
Цитата Сообщение от Кротяка Посмотреть сообщение
3) я как раз и спрашиваю - как правильно задать условие "Если размерность матрицы больше, чем объём данных в файле", понимая, что
Я бы так сделал: сначала подсчитал количество чисел в файле (не длину строки!), потом, под это количество, создал бы массив.
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
07.12.2013, 17:07  [ТС]     Считать длину строки текстового файла #6
Цитата Сообщение от alsav22 Посмотреть сообщение
Я бы так сделал: сначала подсчитал количество чисел в файле (не длину строки!)
не подскажите, как это сделать?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 17:11     Считать длину строки текстового файла #7
Через fs >> читайте и считайте.

Добавлено через 2 минуты
После подсчёта не забудьте сделать:
C++
1
2
fs.clear();
fs.seekg(0);
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
07.12.2013, 19:36  [ТС]     Считать длину строки текстового файла #8
вобщем сделал так, работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//считаем количество чисел в строке
            count = 0;
 
            while(fs>>a)
                count = count + 1;
            count = sqrt(count);
            cout<<count<<endl;
 
            fs.clear();
            fs.seekg(0);
 
//если размерность массива больше размерности файла
            if(s > count){
                for(i = 0; i < count; i++)
                    for(j = 0; j < count; j++)
                        fs>>mas[i][j];
                
                for(i = 0; i < s; i++)
                    for(j = 0; j < s; j++)
                        if(mas[i][j] == -842150451)
                            mas[i][j] = rand() % 19 - 9;
            }
но написано немного криво, и хотелось бы это исправить. Это касается 20й строки
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 19:45     Считать длину строки текстового файла #9
Цитата Сообщение от Кротяка Посмотреть сообщение
//если размерность массива больше размерности файла
Как это может быть, если создавать массив под размер данных в файле?
Цитата Сообщение от alsav22 Посмотреть сообщение
сначала подсчитал количество чисел в файле (не длину строки!), потом, под это количество, создал бы массив.
Добавлено через 2 минуты
И проверьте правильность подсчёта, там есть ньюансы выхода из цикла чтения.
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
07.12.2013, 20:22  [ТС]     Считать длину строки текстового файла #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Как это может быть, если создавать массив под размер данных в файле?
сначала задаётся размерность массива, только потом идёт считывание. И если число столбцов и строк массива больше, чем число столбцов и строк(чисел, без пробелов) в файле, то недостающие элементы должны заполниться рандомными значениями.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 20:31     Считать длину строки текстового файла #11
Цитата Сообщение от Кротяка Посмотреть сообщение
сначала задаётся размерность массива,
Кем?

Добавлено через 2 минуты
Глупо сначала создавать массив, неизвестно под какое количество данных, а потом подсчитывать данне, которые нужно поместить в этот массив.
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
08.12.2013, 00:13  [ТС]     Считать длину строки текстового файла #12
alsav22, размерность задаётся пользователем вводом с клавиатуры. Понимаю, что глупо, но того требует задание. Более того, повторюсь
Цитата Сообщение от Кротяка Посмотреть сообщение
Если размерность матрицы больше, чем объём данных в файле, то нужно заполнить недостающие элементы матрицы случайными числами
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.12.2013, 00:57     Считать длину строки текстового файла #13
Цитата Сообщение от Кротяка Посмотреть сообщение
размерность задаётся пользователем вводом с клавиатуры
Я не об этом спросил. Код вы пишите, а не какой-то пользователь. Как напишите, так и будет. Текст задания полностью можно увидеть?
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
08.12.2013, 01:02  [ТС]     Считать длину строки текстового файла #14
alsav22,
- Размер матрицы должен вводиться с клавиатуры;
- Под элементы матрицы выделить динамическую память требуемого размера.
- При формировании матриц предусмотреть выбор варианта: случайным образом, вводом с клавиатуры или вводом из файла;
- При выборе ввода матрицы с клавиатуры, должен быть предусмотрен удобный интерфейс ввода данных;
- При вводе из файла при недостаточном объеме данных элементы матрицы, для которых не хватило значений, заполняются случайными значениями;
- Сформированную матрицу необходимо отобразить на экране;
- Предусмотреть вывод промежуточных результатов и результатов обработки на экран и/или в файл.
- При выводе на экран выделять другим цветом элементы, удовлетворяющие условию обработки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 01:03     Считать длину строки текстового файла
Еще ссылки по теме:
C++ Считать из текстового файла предложения в односвязный список
C++ Из текстового файла считать массив целых чисел
Из текстового файла считать слова и превратить их в линейный список C++
C++ Считать из текстового файла 3 предложения и вывести их в обратном порядке
Из текстового файла считать матрицу и записать ее в бинарный файл C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.12.2013, 01:03     Считать длину строки текстового файла #15
При таком задании, нет смыла лишний раз файл читать для подсчёта данных. Нужно заполнение матрицы данными из файла так сделать, чтобы после заполнения было видно, по какому условию произошёл выход из цикла: закончились данные в файле или закончилась матрица. Если произошёл выход из-за того, что данных в файле меньше, чем размер матрицы, то тогда продолжить заполнение матрицы случайными числами.
Yandex
Объявления
08.12.2013, 01:03     Считать длину строки текстового файла
Ответ Создать тему
Опции темы

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