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

Файловый ввод-вывод - "A + B" - C++

Восстановить пароль Регистрация
 
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 17:44     Файловый ввод-вывод - "A + B" #1
Казалось бы простенькая задача, а решить я её не могу
Пробовал несколько вариантов, всё равно не выходит
Накидал такое:
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
#include <stdafx.h>
# include <iostream>
# include <fstream>
#include <conio.h>
using namespace std;
int d[1000000], n;
int sum (int l, int r)
{
   int ans = 0;
   n = r - l + 1;
   for (int i = l, j = 1; i <= r; ++i, ++j)
    d[j] = i;
   for (int i = 1; i <= n; ++i)
    ans += d[i];
   return ans;
}
int main()
{
    ifstream read_file ("input.txt");
    ofstream write_file ("output.txt");
    int a, b;
    read_file >> a >> b;
    write_file << sum (a, b) << "\n";
    for (int i = 1; i <= n; ++i)
     write_file << d[i] << " ";
    getch();
    return 0;
}
Создаю в папке (в папке с программой) файл input.txt, пишу туда 2 числа через пробел "20 10"
Но ничего не происходит, т.е. программа компилируется, я её запускаю, но ничего не происходит, результат не записывается в файл output.txt (такой файл вообще не создается)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
28.07.2013, 18:31     Файловый ввод-вывод - "A + B" #2
Я правильно понял, вы так извращенски находите сумму двух чисел?
У вас в цикле i = 20; i < 10
Попробуйте считать, закрыть поток : read_file.close () и потом открыть поток write_file
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 18:59  [ТС]     Файловый ввод-вывод - "A + B" #3
Я не очень люблю эти извращения с ЯП, но решил хоть разок побаловаться...))
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 19:08     Файловый ввод-вывод - "A + B" #4
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Создаю в папке (в папке с программой) файл input.txt
Что за папка?
Во-первых, нужно всегда проверять открытие файла для чтения:
C++
1
2
ifstream read_file ("input.txt");
if (!read_file.is_open()) cout << "Error!" << endl;
Во-вторых, где ищите файл "output.txt"? Может не там? Не может не создаваться.
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
28.07.2013, 19:20     Файловый ввод-вывод - "A + B" #5
Цитата Сообщение от Даниил1991 Посмотреть сообщение
Я не очень люблю эти извращения с ЯП, но решил хоть разок побаловаться...))
Я просто не понимаю, зачем так сложно находить сумму двух чисел?
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 19:44  [ТС]     Файловый ввод-вывод - "A + B" #6
Цитата Сообщение от Ryabchik Посмотреть сообщение
Я просто не понимаю, зачем так сложно находить сумму двух чисел?
Дело в том, что нужно именно записать сумму двух чисел в файл
Так то конечно, мелочь, написать
C++
1
2
3
4
5
int main(){
int a, b;
cin >> a >> b;
cout << a + b;
}
Но тут нужно чтоб сумма ввелась в файл

Добавлено через 2 минуты
alsav22, А, точно, не там искал
файл то появился, но...
Короче, код:
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
#include <stdafx.h>
# include <iostream>
# include <fstream>
#include <conio.h>
using namespace std;
int d[1000000], n;
int sum (int l, int r)
{
   int ans = 0;
   n = r - l + 1;
   for (int i = l, j = 1; i <= r; ++i, ++j)
    d[j] = i;
   for (int i = 1; i <= n; ++i)
    ans += d[i];
   return ans;
}
int main()
{
    ifstream read_file ("input.txt");
    ofstream write_file ("output.txt");
    /*
       для считывания с файла input.txt мы будем 
       использовать функцию read_file, 
       можете заменить ее на что-нибудь другое
    */
    int a, b;
    read_file >> a >> b;
    write_file << sum (a, b) << "\n";
    for (int i = 1; i <= n; ++i)
     write_file << d[i] << " ";
    getch();
    return 0;
}
Файл input.txt:
10 20

Файл output.txt (который создался после запуска программы):
-858993460
-858993460

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 20:12     Файловый ввод-вывод - "A + B" #7
Ещё раз:
Цитата Сообщение от alsav22 Посмотреть сообщение
Во-первых, нужно всегда проверять открытие файла для чтения:
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 21:34  [ТС]     Файловый ввод-вывод - "A + B" #8
Думаете что проблема в том что программа не может открыть файл?
А как же такое исправить?
Ах, я думаю что понял
Я нашел файл output.txt в другой папке, т.е. input.txt был в одной, а output.txt в другой, так что я сейчас попробую поместить input.txt туда же
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 21:35     Файловый ввод-вывод - "A + B" #9
И ещё раз:
Цитата Сообщение от alsav22 Посмотреть сообщение
Во-первых, нужно всегда проверять открытие файла для чтения:
C++
1
2
ifstream read_file ("input.txt");
if (!read_file.is_open()) cout << "Error!" << endl;
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 22:01  [ТС]     Файловый ввод-вывод - "A + B" #10
Сумма 10 и 20 это 0?Может я считать разучился?))
Проверил, вставил ваш, alsav22, код (проверка на открытие файла), файл открывается
Но сумма 10 и 20 не может быть 0, ведь так?

Добавлено через 24 минуты
Только что попробовал вставить два однозначных числа (5 и 5) в файл input.txt, но результат:
В файл output.txt записалось:
5
5
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 22:15     Файловый ввод-вывод - "A + B" #11
Если отладчиком пользоваться не умеете, то хотя бы так напишите:
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
# include <iostream>
# include <fstream>
#include <conio.h>
using namespace std;
int d[1000000], n;
int sum (int l, int r)
{
   int ans = 0;
   n = r - l + 1;
   for (int i = l, j = 1; i <= r; ++i, ++j)
    d[j] = i;
   for (int i = 1; i <= n; ++i)
    ans += d[i];
   return ans;
}
int main()
{
    ifstream read_file ("input.txt");
    if (!read_file.is_open()) cout << "Error!" << endl;
    else
    {
        ofstream write_file ("output.txt");
        int a, b;
        read_file >> a >> b;
        cout << "a = " << a << ' ' << "b = " << b << endl;
        int s = sum(a, b);
        cout << "sum = " << s << endl;
        write_file << s << "\n";
        for (int i = 1; i <= n; ++i)
         write_file << d[i] << " ";
    }
    getch();
    return 0;
}
В input.txt:
10 20

В output.txt:
165
10 11 12 13 14 15 16 17 18 19 20
Миниатюры
Файловый ввод-вывод - "A + B"  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.07.2013, 22:16     Файловый ввод-вывод - "A + B" #12
Если непонятно пчему 165, то обратитесь к автору функции sum().
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 22:20  [ТС]     Файловый ввод-вывод - "A + B" #13
Не надо меня уже в школоло-ламеры записывать

Добавлено через 34 секунды
Ладно, спасибо, хоть это и не совсем правильное решение задачи, но всё равно, спасибо
alsav22
28.07.2013, 22:22
  #14

Не по теме:

Цитата Сообщение от Даниил1991 Посмотреть сообщение
Не надо меня уже в школоло-ламеры записывать
Кто посмел?

Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
28.07.2013, 22:25  [ТС]     Файловый ввод-вывод - "A + B" #15
Видимо я вас не так понял
))
Просто вы меня тоже правильно поймите, я новичёк, и это вполне нормально - допускать ошибки
"Кто не допускает ошибок, тот не работает"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2013, 23:04     Файловый ввод-вывод - "A + B"
Еще ссылки по теме:

Элементарный ввод/вывод - ошибка "Cout undeclared" C++
C++ Структура "Телефонная книга", файловый ввод/вывод
C++ Класс "Матрица": ввод/вывод, умножение, сложение/вычитание, транспонирование, сдвиг

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

Или воспользуйтесь поиском по форуму:
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
28.07.2013, 23:04     Файловый ввод-вывод - "A + B" #16
Я же спать плохо буду: ну зачем такая функция страшная?...
Yandex
Объявления
28.07.2013, 23:04     Файловый ввод-вывод - "A + B"
Ответ Создать тему
Опции темы

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