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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.76
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
#1

Ввод данных из файла - C++

14.03.2011, 23:13. Просмотров 4671. Ответов 19
Метки нет (Все метки)

Всем доброго времени суток! Написала программку: расчет формулы, в которой 6 переменных, данные вводила с клавиатуры. Но нужно чтобы данные были введены с файла, причем значения всех переменных, необходимых для решения находятся в одном файле (последовательно через пробел). Помогите разобраться, как ввести данные из файла и так чтобы значения соответствовали переменным.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2011, 23:13     Ввод данных из файла
Посмотрите здесь:

C++ Ввод данных, добавление данных, получение информации из файла по заданным критериям выборки
ввод структурированных данных в файл и вывод данных из этого файла на экран (сделать хра-нилище данных в файле). C++
C++ Ввод данных из файла
C++ Ввод данных в массив с файла с++
Ввод данных из файла в двумерный массив C++
Ввод данных в структуру из файла C++
C++ Ввод данных из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DANON
35 / 22 / 3
Регистрация: 27.06.2010
Сообщений: 86
14.03.2011, 23:21     Ввод данных из файла #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <fstream>
#include <iostream>
using namespace std;
 
// Global variables here
 
// Opening file
ifstream cin("input.txt")
 
 
int main(){
  // reading data from the file
  cin>>var1>>var2>>var3>>var4>>var5>>var6;
  // ....
  // ....
 
}
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
14.03.2011, 23:44  [ТС]     Ввод данных из файла #3
А переменные (которым присвоятся значения var1...var5)предварительно ведь надо объявить?
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
14.03.2011, 23:49     Ввод данных из файла #4
Естесственно.
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
14.03.2011, 23:52  [ТС]     Ввод данных из файла #5
Еще один глупый вопрос: объявлять ведь до чтения файла?=)
З.Ы.:просто уже сутки пытаюсь разобраться.....голова уже плохо соображает...=)


Объявила переменные...теперь пишет "cin: вероятно, инициализатор, использующий стиль функции, является определением функции"...=(
DANON
35 / 22 / 3
Регистрация: 27.06.2010
Сообщений: 86
14.03.2011, 23:58     Ввод данных из файла #6
Объявлять переменные надо до того, как они первый раз используются, то есть в данном случае - перед чтением
LaГushan
124 / 124 / 14
Регистрация: 12.03.2011
Сообщений: 227
14.03.2011, 23:59     Ввод данных из файла #7
Код-то вряд ли скомпилируется, даже если объявить переменные. Лучше записать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <fstream>
#include <iostream>
 
 
int main(){
    int var1,var2,var3,var4,var5,var6;
        ifstream cin("input.txt");
    if(cin.is_open())
       std::cin>>var1>>var2>>var3>>var4>>var5>>var6;
  // ....
  // ....
 
}
DANON
35 / 22 / 3
Регистрация: 27.06.2010
Сообщений: 86
15.03.2011, 00:02     Ввод данных из файла #8
Минуточку. Разве std::cin>>... не из консоли будет читать?
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
15.03.2011, 00:03     Ввод данных из файла #9
Минуточку. Разве std::cin>>... не из консоли будет читать?
C++
1
 ifstream cin("input.txt");
же. Только вот зачем так называть...?

А так - правильней было бы использовать cin и тогда программу вызывать так:
progname < D:\\input.txt > D:\\output.txt
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
15.03.2011, 00:12  [ТС]     Ввод данных из файла #10
Цитата Сообщение от LaГushan Посмотреть сообщение
#include <fstream>
#include <iostream>
int main(){
* * * * int var1,var2,var3,var4,var5,var6;
* * * * ifstream cin("input.txt");
* * * * if(cin.is_open())
* * * * * *std::cin>>var1>>var2>>var3>>var4>>var5>>var6;
* // ....
* // ....
теперь выдает еще одну ошибку: " is_open: не является членом "std::basic_istream<_Elem,_Traits>"
with
[
_Elem=char,
_Traits=std::char_traits<char>
]"

Добавлено через 3 минуты
По идее должно быть так: объявление переменных, открытие файла, чтение из него, присвоение значений из файла переменным, потом расчет формулы и вывод результата...
Загвоздка именно в чтении и присвоении значений, чтоб не перепутались.
Подскажите как правильней будет=(
DANON
35 / 22 / 3
Регистрация: 27.06.2010
Сообщений: 86
15.03.2011, 00:14     Ввод данных из файла #11
Цитата Сообщение от LaГushan Посмотреть сообщение
Код-то вряд ли скомпилируется, даже если объявить переменные.
Все тут скомпилируется!

C++
1
2
3
4
5
6
7
8
9
10
#include <fstream>
#include <iostream>
 
using namespace std;
 
int main(){
    ifstream cin("input.txt");
    int n;
    cin>>n;
}
Это компилится.

А cin я назвал входной поток, потому что если у Эриксо читалось до этого из консоли - теперь стоб читалось из файла. Можно конечно перенаправление сделать, но ведь Эриксо просит чтобы программно читалось из файла.
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
15.03.2011, 00:19  [ТС]     Ввод данных из файла #12
Не совсем поняла, можно небольшое пояснение?
LaГushan
124 / 124 / 14
Регистрация: 12.03.2011
Сообщений: 227
15.03.2011, 00:20     Ввод данных из файла #13
Цитата Сообщение от DANON Посмотреть сообщение
Минуточку. Разве std::cin>>... не из консоли будет читать?
Да-да, вы правы, без std конечно.
DANON
35 / 22 / 3
Регистрация: 27.06.2010
Сообщений: 86
15.03.2011, 00:25     Ввод данных из файла #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <fstream>
#include <iostream>
using namespace std;
 
int main(){
    // Объявление переменных
    int var1,var2,var3,var4,var5,var6;
    // Объявляем переменную (входной поток) и открываем файл
    ifstream in("input.txt");
    // Читаем из файла
    in>>var1>>var2>>var3>>var4>>var5>>var6;     
    
    // Вычисляем значение функции по формуле    
    int f = var1+var2+var3+var4+var5+var6;
    
    // Выводим ответ    
    cout<<f<<endl;
    
    return 0;
}
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
15.03.2011, 00:38  [ТС]     Ввод данных из файла #15
Спасибо, заработало.=)
только вот проблема с форматом вывода результата...
Изначально входные данные - дробные числа а не целые (например 0.3, 0.1, 0.17 и т.д)...я заменила тип данных int на float. По идее результат должен быть 0,245556 а получается "-1,07374е+008"..

Попыталась проверить, правильно считались значения с файла....в итоге выводится шесть "-1,07374е+008"...В чем может быть ошибка?
Вот то что у меня получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "StdAfx.h"
#include <fstream>
#include <iostream>
using namespace std;
 
int main(){
    // Объявление переменных
    float r1, r2, r0, l, g;
    // Объявляем переменную (входной поток) и открываем файл
    ifstream in("input.txt");
    // Читаем из файла
    in>>r1>>r2>>r0>>l>>g;     
    cout<<r1<<r2<<r0<<l<<g;
    // Вычисляем значение функции по формуле    
    float v = (g * l * l)/r0;
    cout<<v<<endl;
    float R = ((g * l * l)/v)*((1 + r1/r2 + pow(r1/r2,2))/(3*r1/r2));
    // Выводим ответ    
    cout<<R<<endl;
    system ("pause");
        return 0;
}
исходные значения: 0.3, 0.1, 0.17, 1, 1.05
DANON
35 / 22 / 3
Регистрация: 27.06.2010
Сообщений: 86
15.03.2011, 13:08     Ввод данных из файла #16
Тогда надо так перед тем как выводить делать так:
C++
1
2
  cout.precision(5); // устанавливаем 5 знаков после запятой
  cout<<fixed<<f<<endl; // fixed - выводить в формате с фиксированной точкой (не через e)
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
15.03.2011, 15:40  [ТС]     Ввод данных из файла #17
Всм данные в файле записаны без запетых...=)

Добавлено через 2 часа 5 минут
Цитата Сообщение от DANON Посмотреть сообщение
1
2
3
4
cout.precision(5); // устанавливаем 5 знаков после запятой
* cout<<fixed<<f<<endl; // fixed - выводить в формате с фиксированной точкой (не через e)
Получается, вместо f нужно подставить обозначение моей переменной?

Добавлено через 5 минут
Добавила строку с fixed....теперь выдает такой результат: -107374176.000000...=(
MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
15.03.2011, 17:02     Ввод данных из файла #18
Эриксо,
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
//#include "StdAfx.h"
#include <fstream>
#include <cmath>
#include <iomanip>
#include <cstdlib>
#include <iostream>
using namespace std;
 
int main(){
    // Объявление переменных
    double r1, r2, r0, l, g;
    // Объявляем переменную (входной поток) и открываем файл
    ifstream in("d:\\1.txt");
    // Читаем из файла
    in>>r1>>r2>>r0>>l>>g;
    cout<<setprecision(3);
    cout<<r1<<"  "<<r2<<"  "<<r0<<"  "<<l<<"  "<<g;
    // Вычисляем значение функции по формуле
    double v = (g * l * l)/r0;
        cout<<endl<<"V = "<<v<<endl;
    double R = ((g * l * l)/v)*((1 + r1/r2 + pow(r1/r2,2))/(3*r1/r2));
    // Выводим ответ
    cout<<setprecision(5);
    cout<<"R="<<R<<endl;
    system ("pause");
        return 0;
}
Вложения
Тип файла: txt 1.txt (21 байт, 24 просмотров)
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 340
15.03.2011, 17:05     Ввод данных из файла #19
Эриксо,
добавьте ДО int main() строчку
C++
1
using namespace std;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2011, 17:12     Ввод данных из файла
Еще ссылки по теме:

Ввод/вывод данных в/из файла C++
Ввод данных в динамический массив из файла C++
Ввод данных с файла C++
Почему не работает ввод данных из файла? C++
C++ Ввод данных в динамический массив из файла

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

Или воспользуйтесь поиском по форуму:
Эриксо
0 / 0 / 0
Регистрация: 12.03.2011
Сообщений: 110
15.03.2011, 17:12  [ТС]     Ввод данных из файла #20
Цитата Сообщение от instagib Посмотреть сообщение
Эриксо,
добавьте ДО int main() строчку
C++
1
using namespace std;
Эта строка есть...

Добавлено через 6 минут
Цитата Сообщение от MILAN Посмотреть сообщение
Эриксо,
C++
1
//#include "StdAfx.h"
Без этой строки отказывается компилировать, но после добавления все работает как надо!=)
Спасибо=)
Yandex
Объявления
15.03.2011, 17:12     Ввод данных из файла
Ответ Создать тему
Опции темы

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