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

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

Восстановить пароль Регистрация
 
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 13:59     Добавить числа из файла #1
Суть задания : создать файл, записать туда 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;    }
Олсо, считать нужно обязательно из файла, то есть добавить наш массив а - нельзя.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
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 либо работать с бинарным файлом
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 14:27  [ТС]     Добавить числа из файла #3
abit, спасибо конечно, всё работает, но очень много нюансов я не понял. + много чего из написанного мне еще неизвестно. Могли бы вы подсказать что не так у меня, как исправить ?
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
03.05.2013, 14:47     Добавить числа из файла #4
я вам предложил аж три способа как исправить)
по нормальному - это вообще всё переписать

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

Цитата Сообщение от abit Посмотреть сообщение
while (fin.good())
* * {
* * * * * sum += tmp;
* * * * * fin>>tmp;
* * }
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
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';
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 15:17  [ТС]     Добавить числа из файла #7
abit, неправильно цитату написал, интересова только while
Спасибо еще раз
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 15:38  [ТС]     Добавить числа из файла #8
abit, Слушай, ошибку какую-то нашел. Вывел на экран переменную tmp. И вот что вышло:
Миниатюры
Добавить числа из файла  
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2013, 15:54     Добавить числа из файла
Еще ссылки по теме:

C++ Как добавить числа в массив ?
C++ Добавить заголовок для произвольного файла
C++ Как добавить запись в два файла

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

Или воспользуйтесь поиском по форуму:
PEVELASKA
3 / 3 / 0
Регистрация: 20.09.2012
Сообщений: 57
03.05.2013, 15:54  [ТС]     Добавить числа из файла #10
abit, Всё, извините, что отнял у вас так много времени. Всё прекрасно работает, еще раз спасибо.
Yandex
Объявления
03.05.2013, 15:54     Добавить числа из файла
Ответ Создать тему
Опции темы

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