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

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

Восстановить пароль Регистрация
 
spone379
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 41
20.05.2014, 15:46     Переделать ввод программы для получения данных из текстового файла. #1
Надеюсь кто то поймет задание.
Есть программа и ее нужно модифицировать таким образом, чтобы значение считывались с текстового
файла, а результат вычислений записывался в файл.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{setlocale (LC_ALL, "russian");
  int a[5];
  int i, k;
 
  cout << "После ввода каждого числа нажмите <ENTER>\n";
  for( i = 1; i < 6; i++ )
    {
    cout << "A[" << i << "] = ";
    cin >> a[i];
    }
  k = 0;
  for( i = 1; i < 6; i++ )
    if( a[i] != 0 )
      k += 1;
  cout << "В массиве " << k << " ненулевых элементов";
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 15:46     Переделать ввод программы для получения данных из текстового файла.
Посмотрите здесь:

C++ ввод данных, добавление данных, получение информации из файла по заданным критериям выборки
переделать программу из ввода с клавиатуры в ввод из файла C++
Ввод данных из файла для решения симплекс метода C++
C++ Ввод массива из текстового файла
C++ Переделать программу под ввод данных из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4318 / 3739 / 1260
Регистрация: 14.04.2014
Сообщений: 14,664
20.05.2014, 16:05     Переделать ввод программы для получения данных из текстового файла. #2
Используй ifstream и ofstream.
spone379
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 41
20.05.2014, 16:09  [ТС]     Переделать ввод программы для получения данных из текстового файла. #3
Цитата Сообщение от nmcf Посмотреть сообщение
Используй ifstream и ofstream.
а как в код воплотить? просто #include<ofstream.h> ?
nmcf
4318 / 3739 / 1260
Регистрация: 14.04.2014
Сообщений: 14,664
20.05.2014, 16:14     Переделать ввод программы для получения данных из текстового файла. #4
C++
1
2
3
4
5
ifstream ifs("infile.txt");
for(i = 0; i < 5; i++)
{
    ifs >> a[i];
}
spone379
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 41
20.05.2014, 16:28  [ТС]     Переделать ввод программы для получения данных из текстового файла. #5
Цитата Сообщение от nmcf Посмотреть сообщение
C++
1
2
3
4
5
ifstream ifs("infile.txt");
for(i = 0; i < 5; i++)
{
    ifs >> a[i];
}
я не силен в этом деле. Можете поконкретнее пожалуйста
nmcf
4318 / 3739 / 1260
Регистрация: 14.04.2014
Сообщений: 14,664
20.05.2014, 16:51     Переделать ввод программы для получения данных из текстового файла. #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Создаёшь файл с таким именем, вводишь в него 5 чисел через пробел. Потом они считываются в массив.
Darkos
5 / 5 / 4
Регистрация: 16.05.2014
Сообщений: 74
20.05.2014, 17:54     Переделать ввод программы для получения данных из текстового файла. #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от spone379 Посмотреть сообщение
C++
1
2
for( i = 1; i < 6; i++ ) { cout << "A[" << i << "] = "; cin >> a[i]; } k = 0; 
for( i = 1; i < 6; i++ ) if( a[i] != 0 ) k += 1;
Во первых:
в вашем коде ошибка: индексы в массиве начинаются с 0. Поэтому в циклах нужно писать так:
C++
1
2
3
  .  .  .
for( i = 0; i < 5; i++ )
  .  .  .
А полностью программа выглядит так:
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
39
40
41
/*test.txt*/ // Сюда записываем данные перед началом работы программы
15 0 -5 145 54 
 
/*main.cpp*/ // Собственно наша программа
#include <iostream>
#include <fstream>
using namespace std;
 
/* Сохраняем данные в файл */ void save(int k)
{
    ofstream fout("test.txt", ios::app);
    // Запись в файл
    fout << k << endl;
    fout.close();     // Закрываем файл
}
 
int main()
{setlocale (LC_ALL, "russian");
  int a[5];
  int i, k;
 
  ifstream fin("test.txt", ios::in);  // Открываем файл для чтения
 
  k = 0;
  for( i = 0; i < 5; i++ )
    {
    cout << "A[" << i << "] = ";
    fin >> a[i];
    cout << a[i] << endl;
    if( a[i] != 0 )
      k += 1;
    }
  cout << "В массиве " << k << " ненулевых элементa(ов)" << endl;
  save(k);
  cin.get();
  fin.close();
  return 0;
}
/*test.txt*/ // После выполнения программы
15 0 -5 145 54 
4 // Добавили количество ненулевых елементов
Все! Перед следующим запуском программы удалить содержимое test.txt и ввести туда 5 чисел.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2014, 18:46     Переделать ввод программы для получения данных из текстового файла.
Еще ссылки по теме:

Чтение данных из текстового файла C++
C++ Переделать ввод данных
C++ Ввод элементов в стек из текстового файла

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

Или воспользуйтесь поиском по форуму:
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
20.05.2014, 18:46     Переделать ввод программы для получения данных из текстового файла. #8
spone379, есть вариант попроще - переопределить стандартные потоки ввода\вывода.

C++
1
2
3
4
5
6
7
8
9
#include <iostream>
 
int main () {
    std::freopen("input", "r", stdin);
    std::freopen("output", "w", stdout);
    int value;
    std::cin >> value;
    std::cout << value;
}
Bash
1
2
ruslan@TFTM-K53TA:~/Programming/c++/cyberforum$ make && ./main 
clang++ main.cpp -o main -std=c++11 -W
Добавлено через 2 минуты
P.S. переопределять потоки удобно когда пишешь что-то на контесте, перед отправкой задачи просто удаляешь или комментируешь строку переопределения потоков вввода\вывода.
Yandex
Объявления
20.05.2014, 18:46     Переделать ввод программы для получения данных из текстового файла.
Ответ Создать тему
Опции темы

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