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

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

Войти
Регистрация
Восстановить пароль
 
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
#1

Добавить числа из файла - C++

03.05.2013, 13:59. Просмотров 351. Ответов 9
Метки нет (Все метки)

Суть задания : создать файл, записать туда 10 рандомных чисел, закрыть файл, открыть файл, взять оттуда числа и посчитать их сумму. Проблема собсно в том, что считаю я аски кода этих чисел, а не сами числа. Прилагаю код, он немного криво написано, но уж извиняйте :

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
42
43
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <fstream>
using namespace std;
int main ()
{
ofstream fout ;
fout.open("test.txt");
if(!fout)
{
cout<<"cant open file\n";
return 1;}
int a[10];
for (int i = 0; i < 10; i++)     {
a[i] = rand ()%10;
fout<<a[i];       }
fout.close ();
ifstream fin("test.txt");
if(!fin) {
cout<<"Cant open file\n";
return 1;
}
char ch[10];
 
 
fin.unsetf(ios::skipws);
int c=0,d[10]    ;
 
for(int k = 0; k <10; k++)
{
fin>>ch[k];
 
c+=ch[k];
 
if(fin.eof())
 break;
 cout<<ch[k]<<' ';}
  cout<<endl<<c;
 
   getch();
return 0;    }
Олсо, считать нужно обязательно из файла, то есть добавить наш массив а - нельзя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2013, 13:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавить числа из файла (C++):

Добавить в конец первого файла содержимое второго файла - C++
Text6. Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла. Помогите пожалуйста с решением, а желательно с...

Добавить в конец первого текстового файла содержимое второго текстового файла - C++
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

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

Из одного файла считать целые числа, в другие файлы записать четные и нечетные числа - C++
Нужно с одного файла считать целые числа и в другие файлы записать четные и нечетные числа. Вот код, но почему-то не работает...и как...

Как добавить числа в массив ? - C++
Задача такая, найти простые числа (в интервале от A до B) и вставить их в массив. Вот у меня есть такой набросок: #include &lt;iostream&gt; ...

Добавить расширение к имени файла - C++
т.е. чтобы постоянно не писать его в программе... void vvod(char name) { char dat=&quot;.dat&quot;; fstream FileOutput; ...

9
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
03.05.2013, 14:17 #2
что-то вы намудрили мне кажется, я бы глядел в такую сторону
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 <iostream>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
 
int main()
{
    srand (time(NULL));
    
    ofstream fout("test.txt");
    for(size_t i=0; i!=10; ++i) fout<<(rand ()%10)<<endl;
    fout.close();
    
    ifstream fin("test.txt");
    long sum=0,tmp;
    fin>>tmp;
    while (fin.good()) 
    {
          sum += tmp; 
          fin>>tmp;
    }
    cout << sum << endl;
    system("pause");
    return 0;
};
Добавлено через 2 минуты
а с кодами дело так - вам надо либо в переменную int читать либо преобразовывать к целым числам char либо работать с бинарным файлом
1
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 14:27  [ТС] #3
abit, спасибо конечно, всё работает, но очень много нюансов я не понял. + много чего из написанного мне еще неизвестно. Могли бы вы подсказать что не так у меня, как исправить ?
0
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
03.05.2013, 14:47 #4
я вам предложил аж три способа как исправить)
по нормальному - это вообще всё переписать

если нужен костыль именно на это, попробуйте так считать сумму
C++
1
c+=ch[k]-(int)'0';
0
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 15:00  [ТС] #5
Хорошо, спасибо, но тогда такой вопрос: что это такое ? Можно ли это переписать более понятным образом ?

Цитата Сообщение от abit Посмотреть сообщение
while (fin.good())
* * {
* * * * * sum += tmp;
* * * * * fin>>tmp;
* * }
0
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
03.05.2013, 15:07 #6
while (fin.good()) = while (!fin.eof())

sum += tmp; - в переменной sum аккумулируется последнее прочитанное значение

fin>>tmp - из входного файлового потока читается следующее значение

по сути у вас аналогичные инструкции есть в вашем коде, не задавались вопросом что они значат?

т.е.
C++
1
2
if(fin.eof())
 break;
тождественно тому, что я вынес проверку в инвариант цикла а две оставшиеся вот:
C++
1
2
3
fin>>ch[k];
 
c+=ch[k]-(int)'0';
1
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 15:17  [ТС] #7
abit, неправильно цитату написал, интересова только while
Спасибо еще раз
0
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 15:38  [ТС] #8
abit, Слушай, ошибку какую-то нашел. Вывел на экран переменную tmp. И вот что вышло:
0
Миниатюры
Добавить числа из файла  
abit
271 / 270 / 34
Регистрация: 03.02.2013
Сообщений: 754
03.05.2013, 15:43 #9
вы как-то не так вывели, я сложил числа из вашего блокнота - получил 39 как и в программе, какой конструкцией вы водили?

если говорить о моём коде вывод tmp должен выглядеть как-то так:
C++
1
2
3
4
5
6
7
    while (fin.good()) 
    {
          cout<<tmp<<" ";
          sum += tmp; 
          fin>>tmp;
    }
    cout<<endl;
1
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 15:54  [ТС] #10
abit, Всё, извините, что отнял у вас так много времени. Всё прекрасно работает, еще раз спасибо.
0
03.05.2013, 15:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2013, 15:54
Привет! Вот еще темы с ответами:

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

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

Записать в третий файл только те пары чисел, в которых число из первого файла меньше соответствующего числа из второго файла. - C++
Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только те пары чисел, в которых число из...

Добавить после каждого максимального числа число x - C++
Как написать программу, выполняющую следующие операции: 1) ввод одномерного массива из n целых чисел (1&lt;=n&lt;=100); 2) добавление...


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

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

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