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

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

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

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

07.12.2013, 02:59. Просмотров 1241. Ответов 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
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 15:13 #2
Вот это компилируется?
C++
1
int a = fs.getline;
Добавлено через 1 минуту
Данные в файле - это строка чисел, расположенных через пробел? Что вам длина такой строки скажет о количестве чисел в ней?
1
Alex5
1086 / 747 / 116
Регистрация: 12.04.2010
Сообщений: 1,907
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();
0
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
07.12.2013, 16:45  [ТС] #4
alsav22,
1) не компилируется
2) да, это матрица чисел, расположенных через пробел
3) я как раз и спрашиваю - как правильно задать условие "Если размерность матрицы больше, чем объём данных в файле", понимая, что
C++
1
if(s > a)
неверно

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

Добавлено через 2 минуты
После подсчёта не забудьте сделать:
C++
1
2
fs.clear();
fs.seekg(0);
1
Кротяка
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й строки
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 19:45 #9
Цитата Сообщение от Кротяка Посмотреть сообщение
//если размерность массива больше размерности файла
Как это может быть, если создавать массив под размер данных в файле?
Цитата Сообщение от alsav22 Посмотреть сообщение
сначала подсчитал количество чисел в файле (не длину строки!), потом, под это количество, создал бы массив.
Добавлено через 2 минуты
И проверьте правильность подсчёта, там есть ньюансы выхода из цикла чтения.
0
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
07.12.2013, 20:22  [ТС] #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Как это может быть, если создавать массив под размер данных в файле?
сначала задаётся размерность массива, только потом идёт считывание. И если число столбцов и строк массива больше, чем число столбцов и строк(чисел, без пробелов) в файле, то недостающие элементы должны заполниться рандомными значениями.
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
07.12.2013, 20:31 #11
Цитата Сообщение от Кротяка Посмотреть сообщение
сначала задаётся размерность массива,
Кем?

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

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

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

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

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


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

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

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