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

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

Войти
Регистрация
Восстановить пароль
 
 
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 117
#1

Чтение чисел из файла.Что делаю не так? - C++

13.11.2013, 11:48. Просмотров 735. Ответов 15
Метки нет (Все метки)

По заданию нужно чтоб читались значения в виде массива из файла и провести с массивом в дальнейшем различные операции(формулами,графиком) и сразу ошибка.
12 `f' undeclared (first use this function)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
 
int main()
{int const n=10; int i=0;
float *x[n];
 
ifstream("1.txt");
while(!f.eof())
   {if (i==n) 
   {i++; cout<<endl;}
   f=*x[i];
   cout<<x[i]<<" ";
   }
system("pause");   
}
как правильно вести чтение из файла в моем случае?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 11:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение чисел из файла.Что делаю не так? (C++):

Что не так?. Чтение из файла и нужно посчитать средний балл - C++
// Лаба №5.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;math.h&quot; #include &quot;stdio.h&quot; ...

Что-то не то с Майкрсофт визуал студио 2010 или я что-то не так делаю - C++
Дело в том что при запуске вот этой программы: #include &lt;iostream&gt; using namespace std; int main () { for (int i=100; i&lt;=999;...

Что я делаю не так? - C++
Не запускается программа, код взят полностью из рабочего примера но на моем компьютере не запускается #include &lt;iostream.h&gt; #include...

Что я делаю не так? - C++
Хай всему форуму, новичек как в си так и тут ;) Не прошу сделать за меня, а тыкнуть где я налажал :( С дуру шила в жо решился взять...

что не так делаю?! - C++
почему не правильно! помогите! #define SIZE 4 #include&lt;iostream.h&gt; int main() { int matrix; for (int i=0; i&lt;0; i++) ...

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

15
newbie666
Заблокирован
13.11.2013, 12:10 #2
Цитата Сообщение от Милашечка Посмотреть сообщение
12 `f' undeclared (first use this function)
ну тут то понятно, ты ж забыл её дописать после ifstream тут ifstream("1.txt");, должно быть ifstream f("1.txt");

Хотя тут море ошибок в горстке кода. Что конкретно тебе надо! Только КОНКРЕТНО !

Добавлено через 3 минуты
хочешь прочитать за раз данные в файле сразу в массив? Ну тоесть чтоб не парсить файл, а за одну операцию заполнить свой массив? Такое возможно только с бинарными файлами если что
0
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 798
Записей в блоге: 10
13.11.2013, 12:24 #3
C++
1
2
3
4
5
6
7
8
9
   ifstream fin("fileName.fileExtension"); 
   char ch;
   while(fin >> ch)
   {
     cout << ch;                 
   }
 
   fin.close();   
//показать весь фаил по чарам
Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
ifstream fin("fileName.fileExtension"); 
   float fvar;
   while(fin >> ch)
   {
     cout << fvar;                 
   }
 
   fin.close();   
// в принципе тоже должно прокатить
// тут просто вывод .Если тебе заранее известно длина массива то вместо while() используй for()/
// иначе либо стек ,либо заведомо больший массив
0
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
13.11.2013, 12:26 #4
Цитата Сообщение от Милашечка Посмотреть сообщение
По заданию нужно чтоб читались значения в виде массива из файла и провести с массивом в дальнейшем различные операции(формулами,графиком) и сразу ошибка.
12 `f' undeclared (first use this function)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
 
int main()
{int const n=10; int i=0;
float *x[n];
 
ifstream("1.txt");
while(!f.eof())
   {if (i==n) 
   {i++; cout<<endl;}
   f=*x[i];
   cout<<x[i]<<" ";
   }
system("pause");   
}
как правильно вести чтение из файла в моем случае?
на счет ifstream("1.txt") уже писали выше, должно быть ifstream f("1.txt");
а вот чтение из файла в массив я бы посоветовал сделать вот таким образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    int const n=10; 
    float x[n];
 
    ifstream f("1.txt");
    if(f.is_open())
    {
        for(int i = 0; i < n; i++)  //чтение чисел
            f >> x[i];              //     из файла
 
        for(int i = 0; i<n; i++)                            //вывод 
            cout << "x[" << i+1 << "] => "<< x[i] << '\n';          //      в консоль
    }
    system("pause");   
}
к стати, объявление массива правильно сделать как у меня float x[n]; вместо float *x[n]; так как ты создаешь не динамический массив.
0
newbie666
Заблокирован
13.11.2013, 12:29 #5
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
for(int i = 0; i < n; i++) *//чтение чисел
* * * * * * f >> x[i]; * * * * * * *// * * из файла
гадание на кофейной гуще, не известно же в каком формате данные там лежат...
Так что пока отсутствуют разъяснения ТС по этому поводу, смысла гадать не вижу...
0
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
13.11.2013, 12:32 #6
Цитата Сообщение от newbie666 Посмотреть сообщение
гадание на кофейной гуще, не известно же в каком формате данные там лежат...
Так что пока отсутствуют разъяснения ТС по этому поводу, смысла гадать не вижу...
в принципе я с вами согласен, но судя по описанию задания, это простейшая лабораторная работа для студента 1 курса, а там скорее всего в файле просто написаны числа "1 2 3 4 5 6 7 8 9 0", исходя из этого и предложил такой вариант
0
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 798
Записей в блоге: 10
13.11.2013, 12:34 #7
ifstream - this is class exactly the same as iostream ,therefore fin is ibject to it ,exactly the same as cin or cout
0
newbie666
Заблокирован
13.11.2013, 12:51 #8
Я вообще этим ifstream барахлом не пользуюсь, использую просто:
для ввода данных
std::fstream fs(L"file_name", std::ios::in);
для вывода данных
std::fstream fs(L"file_name", std::ios::out);

это намного удобней, т.к. ты можешь после ввода данных закрыть файловый поток и то же имя переменной использовать для вывода
0
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
13.11.2013, 13:04 #9
Цитата Сообщение от newbie666 Посмотреть сообщение
Я вообще этим ifstream барахлом не пользуюсь, использую просто:
для ввода данных
std::fstream fs(L"file_name", std::ios::in);
для вывода данных
std::fstream fs(L"file_name", std::ios::out);

это намного удобней, т.к. ты можешь после ввода данных закрыть файловый поток и то же имя переменной использовать для вывода
не знаю, может я еще не на столько продвинулся в изучении, не слышал еще о таком методе, обязательно почитаю
0
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 117
13.11.2013, 15:29  [ТС] #10
Конкретное условие - дан файл с вещественными числами(20 чисел) типа 0,00000(числа любые можно). Сделать так чтоб они считывались с файла как одномерный динамический массив. Найти минимум , максимум, сумму после максимума ,разности и подставив некоторые значения элементов массива в уравнение(их пока не раздали правда) - построить графики т. д. Ну это я сделаю,это не так тяжело.. если "стартовать" получиться правильно из файла..
Мне главное понять как с файла считывать данные и пользоваться ими.. Я вроде и понимаю как надо, но как до написания кода доходит - вечно ошибки
0
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
13.11.2013, 15:33 #11
Цитата Сообщение от Милашечка Посмотреть сообщение
Конкретное условие - дан файл с вещественными числами(20 чисел) типа 0,00000(числа любые можно). Сделать так чтоб они считывались с файла как одномерный динамический массив. Найти минимум , максимум, сумму после максимума ,разности и подставив некоторые значения элементов массива в уравнение(их пока не раздали правда) - построить графики т. д. Ну это я сделаю,это не так тяжело.. если "стартовать" получиться правильно из файла..
Мне главное понять как с файла считывать данные и пользоваться ими.. Я вроде и понимаю как надо, но как до написания кода доходит - вечно ошибки
попробуй моим способом(который я описал выше, только значение n замени на 20), чтобы просто считать числа из файла его точно хватит. а потом уже работа идет с массивом, в принципе еще 3 цикла for решат описанную тобой задачу.
0
newbie666
Заблокирован
13.11.2013, 15:35 #12
Цитата Сообщение от Милашечка Посмотреть сообщение
Мне главное понять как с файла считывать данные и пользоваться ими
Ну если файл текстовой и твои вещественные числа идёт там через пробел, то обычно читают как - так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
std::vector<float> dataBase;
std::fstream fs(L"INFO.txt", std::ios::in);
if(fs.is_open())
{
    while (!fs.eof())
    {
        float tmp;
        fs >> tmp;
        dataBase.push_back(tmp);
    }
    fs.close();
}
P.S.: там есть нюанс на счёт последнего символа, если он пробел )))) но это уже другая история
0
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
13.11.2013, 15:38 #13
Цитата Сообщение от newbie666 Посмотреть сообщение
Ну если файл текстовой и твои вещественные числа идёт там через пробел, то обычно читают как - так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
std::vector<float> dataBase;
std::fstream fs(L"INFO.txt", std::ios::in);
if(fs.is_open())
{
    while (!fs.eof())
    {
        float tmp;
        fs >> tmp;
        dataBase.push_back(tmp);
    }
    fs.close();
}
P.S.: там есть нюанс на счёт последнего символа, если он пробел )))) но это уже другая история
судя по заданию, нужно использовать именно массив, но если можно использовать вектор то это намного упрощает решение, так как в STL уже реализованы почти все эти задачи
0
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 117
13.11.2013, 21:45  [ТС] #14
Pokemon_93, попробовала вашим способом - данные выводятся на экран, но не те, которые в файле находятся,какие-то другие..пробовала для 5 чисел - скрины чуть ниже. Почему так??
Я программу почти написала. если массив задавать в программе в ручную или случайными числами - у меня все работает, а вот как по заданию надо- с файла чтоб массив задавался - не получается почему то... воюю
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
если можно использовать вектор то это намного упрощает решение
- мы STL еще не изучали
Цитата Сообщение от Pokemon_93 Посмотреть сообщение
это простейшая лабораторная работа для студента 1 курса
- для тех , кто первый курс уже закончил или хотя б консультации имеет...У нас их отменили - вот и воюем самостоятельно с вашей помощью..
Все просто становится постепенно, познаваясь в сравнении..
0
Миниатюры
Чтение чисел из файла.Что делаю не так?  
Изображения
 
Pokemon_93
9 / 5 / 1
Регистрация: 19.01.2013
Сообщений: 74
13.11.2013, 21:57 #15
Цитата Сообщение от Милашечка Посмотреть сообщение
данные выводятся на экран, но не те, которые в файле находятся,какие-то другие..пробовала для 5 чисел - скрины чуть ниже. Почему так??
странно, сейчас проверю еще раз, может че то не так со студией у вас? насколько я помню у меня все работало.

Добавлено через 5 минут
Цитата Сообщение от Милашечка Посмотреть сообщение
Pokemon_93, попробовала вашим способом - данные выводятся на экран, но не те, которые в файле находятся,какие-то другие..пробовала для 5 чисел - скрины чуть ниже. Почему так??
Я программу почти написала. если массив задавать в программе в ручную или случайными числами - у меня все работает, а вот как по заданию надо- с файла чтоб массив задавался - не получается почему то... воюю
- мы STL еще не изучали
- для тех , кто первый курс уже закончил или хотя б консультации имеет...У нас их отменили - вот и воюем самостоятельно с вашей помощью..
Все просто становится постепенно, познаваясь в сравнении..
прошу прощения, на пример чисел с запятой не проверял, сейчас пересмотрю решение.
0
13.11.2013, 21:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2013, 21:57
Привет! Вот еще темы с ответами:

Подскажите что я делаю не так? - C++
Дан массив целых чисел. Все его элементы уменьшить на 20 #include &lt;iostream&gt; using namespace std; int f(const int*mas, const int...

Getch - что не так делаю? - C++
Всем привет. Не могу понять почему не выполняется getch() после верного ввода пункта. int name ::menu() { cout &lt;&lt; &quot;Выберите...

PlaySound: что я делаю не так? - C++
Казалось бы, элементарно: PlaySound(&quot;1.wav&quot;, NULL, SND_FILENAME); Неизменно &quot;превосходный&quot; результат: Error C2664: 'PlaySoundW' :...

Подскажите что я не так делаю - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;math.h&gt; ...


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

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

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