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

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

Войти
Регистрация
Восстановить пароль
 
 
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
#1

Не могу понять почему в файл OUTPUT.TXT ничего не записывается - C++

28.08.2013, 17:08. Просмотров 863. Ответов 21
Метки нет (Все метки)

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 <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    
    int n,i;
    ifstream in("INPUT.TXT");
    in >> n;
    int a=0, b=0;
    int s;
    ofstream out("OUTPUT.TXT");
    for(i=0; i<n; i++){
        s=a+(a+1);
    b=b+1;
    a=a+1;
        if(n==s){
            out << "1" << '\n' << b;
        }
        else {
            if(i==n)
                out << '0';
            continue;
        }
    }
    return 0;
    }
Не могу понять почему в файл OUTPUT.TXT ничего не записывается, а по идее должно...
Т.е. в файле INPUT.TXT лежит число, и надо определить равно ли оно сумме двух предшествующих чисел, если да
то вывести 1 и порядковый номер числа в данной последовательности, если нет то вывести 0.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 17:08     Не могу понять почему в файл OUTPUT.TXT ничего не записывается
Посмотрите здесь:

Не всё записывается в файл. Ничего не понимаю - C++
Здравствуйте. У меня появилась такая проблема: нужно записать в один файл данные из двух функций. Казалось бы, что ничего сложного. Но вот...

Курсовая работа. В файл *.txt не записывается текст - C++
В общем, в файл *.txt не записывается текст, который напечатан после пробела. Вот скрины: Очень нужна помощь... Заранее,...

Давно не писала ничего на Dev C++ выдает ошибки не могу понять как их исправить - C++
#include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; int main() { float xa,xb,xc,ya,yb,yc; ...

Работа с файлами. Найти среднее арифметическое всех чисел и записать его в файл output.txt - C++
Помогите написать, пожалуйста 2 программы на C++. В файле input.txt записаны числа, сколько их – неизвестно. «3»: Найти среднее...

Почему в файл значение дублируется (записывается дважды)? - C++
Суть: при чтении с файла f записываю данные(числа) в массив a. Потом значения этого массива по очереди записываю в файл f1 и f2. Все...

Переписать данные файла input.txt в файл output, отсортировав их по возрастанию средней оценки методом выбора - C++
В файле input.txt содержатся сведения о группе студентов в формате: номер группы; запись о каждом студенте группы содержит следующие...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 17:32     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #2
Файл "INPUT.TXT" существует? И что, например, в нём?

Добавлено через 13 минут
Если так:
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    
    int n,i;
    ifstream in("INPUT.TXT");
    in >> n;
    int a=0, b=0;
    int s;
    ofstream out("OUTPUT.TXT");
    for(i = 0; i < n; i++)
    {
        s = a + (a + 1);
        b = b + 1;
        a = a + 1;
        if(n == s)
        {
            out << "1" << '\n' << b;
            break;
        }
        else 
        {
            if(i == (n - 1))
            {
                out << '0';
                break;
            }
        }
    }
    
    system("pause");
    return 0;
}
Toshik_
1 / 1 / 0
Регистрация: 17.08.2013
Сообщений: 91
28.08.2013, 17:32  [ТС]     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #3
существует, 8
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
28.08.2013, 17:51     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #4
интересная конструкция
Цитата Сообщение от Toshik_ Посмотреть сообщение
C++
1
2
3
4
5
else {
 if(i==n)
  out << '0';
  continue;
   }
зачем здесь continue и без него идем на следующюю итерацию
далее
Цитата Сообщение от Toshik_ Посмотреть сообщение
C++
1
2
3
4
5
6
7
for(i=0; i<n; i++){
...............
if(i==n)
 out << '0';
 continue;
}
}
в цикле никогда i не будет равна n из за условия в заголовке цикла i<n значит 0 не записывается в файл
далее

Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
s = a + (a + 1);
 b = b + 1;
 a = a + 1;
первая итерация
s = a + (a + 1);=0+1=1
b = b + 1; 0+1=1;
a = a + 1; 0+1=1
вторая
s = a + (a + 1);=1+2=3
b = b + 1; 1+1=2;
a = a + 1; 1+1=2
третья
s = a + (a + 1);=2+3=5
b = b + 1; 2+1=3;
a = a + 1; 2+1=3
четвертая
s = a + (a + 1);=3+4=7
b = b + 1; 3+1=4;
a = a + 1; 3+1=4
пятая
s = a + (a + 1);=4+5=9
b = b + 1; 4+1=5;
a = a + 1; 4+1=5

следовательно и эта ветка
Цитата Сообщение от Toshik_ Посмотреть сообщение
C++
1
2
if(n==s){
out << "1" << '\n' << b;
никогда не запишет в файл при n=8

легко увидеть что
s = a + (a + 1); тоже что и s = i+ (i + 1);
s=2*i+1;
число нечетное
значит для записи в файл n должен быть нечетным
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,012
Записей в блоге: 1
28.08.2013, 17:55     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #5
Похоже на задачи с тестовых сайтов, а по условию прохоже на проверку, входит ли число в ряд фибоначчи (кстати, 8-ка входит). Но условие изложено столь невразумительно, что точно сказать нельзя.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
28.08.2013, 18:10     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #6
Цитата Сообщение от zer0mail Посмотреть сообщение
по условию прохоже на проверку, входит ли число в ряд фибоначчи (кстати, 8-ка входит).
ну если смотреть на
Цитата Сообщение от Toshik_ Посмотреть сообщение
s=a+(a+1);
да похоже на Фибоначчи
но только тогда следующее число ни как не
Цитата Сообщение от Toshik_ Посмотреть сообщение
a=a+1;
а так же
a=a+(a+1);
или попроще
то
a=2*a+1;

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
или попроще
то
a=2*a+1;
наврал я не все так просто
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:14     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #7
Цитата Сообщение от ValeryS Посмотреть сообщение
никогда не запишет в файл при n=8
При 8 разве в файл должна записаться 1?
Цитата Сообщение от Toshik_ Посмотреть сообщение
надо определить равно ли оно сумме двух предшествующих чисел,
Если я правильно понял, то 6 + 7 != 8, записываем 0. Но логику расчётов я вообще не смотрел, сделал, чтобы запись была в двух случаях. С логикой пусть ТС сам разбирается. Вопрос был про запись в файл.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
28.08.2013, 18:19     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #8
Цитата Сообщение от alsav22 Посмотреть сообщение
Если я правильно понял, то 6 + 7 != 8, записываем 0.
нет не записываем
из-за
Цитата Сообщение от Toshik_ Посмотреть сообщение
C++
1
2
if(i==n)
 out << '0';
а i не равна n, по крайней мере в цикле из-за
Цитата Сообщение от Toshik_ Посмотреть сообщение
C++
1
for(i=0; i<n; i++)
если записать хотя бы вот так
C++
1
for(i=0; i<=n; i++)
то запишется
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:24     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #9
Цитата Сообщение от ValeryS Посмотреть сообщение
нет не записываем
из-за
Вы мой код смотрели?
Цитата Сообщение от alsav22 Посмотреть сообщение
else
{
if(i == (n - 1))
{
out << '0';
break;
}
}
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
28.08.2013, 18:30     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Вы мой код смотрели?
нет
я оригинальный смотрел и все ошибки относятся к нему
мы же ошибки ТС разбираем

Добавлено через 2 минуты
кстати
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
if(i == (n - 1))
 {
 out << '0';
 break;
 }
break то зачем?
i == (n - 1) итак последняя итерация без бряка из цикла выйдем
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:33     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #11
Цитата Сообщение от ValeryS Посмотреть сообщение
break то зачем?
i == (n - 1) итак последняя итерация
Зачем лишние действия, если все равно выход?
zer0mail
2330 / 1956 / 192
Регистрация: 03.07.2012
Сообщений: 7,012
Записей в блоге: 1
28.08.2013, 18:36     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #12
Зачем смотреть код ТС - он все равно "кривой" ТС уже новую тему создал для этой задачи. Похоже, хочет "порешать" задачи через форум (как будто это поможет стать программистом)
"Разруха начинается головах" (с) Преображенский. Невозможно с расплывчатыми невнятными мыслями написать ясную, правильно работающую программу.
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
28.08.2013, 18:47     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #13
Цитата Сообщение от alsav22 Посмотреть сообщение
Зачем лишние действия, если все равно выход?
это ты меня спрашиваешь ?
тот же вопрос я и задал
Цитата Сообщение от zer0mail Посмотреть сообщение
Зачем смотреть код ТС - он все равно "кривой"
ну-к я думал указать человеку на ошибки
даже целую портянку расписал
Цитата Сообщение от zer0mail Посмотреть сообщение
ТС уже новую тему создал для этой задачи.
да уже вижу
и самоустроняюсь
но не для вас alsav22 и zer0mail
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:51     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #14
ValeryS, вы, наверное, не поняли про лишние действия. Если break, то сразу выход. Если без break, то обращение к параметрам цилка, увеличение i, сравнение с n, и только потом выход. Я про эти лишние действия спросил. Зачем они?
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
28.08.2013, 18:58     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #15
Цитата Сообщение от alsav22 Посмотреть сообщение
Если без break, то обращение к параметрам цилка, увеличение i, сравнение с n, и только потом выход.
ну да, но это копейки а логика уже не столь стройная
этак можно в любом цикле писать
C++
1
2
3
4
5
6
for(int i=0; i<n; i++)
{
 ...............................
if(i==(n-1)
  break;
}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 19:02     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #16

Не по теме:

Если копейки, зачем тогда про break писать? break - это рубли?



Добавлено через 3 минуты

Не по теме:

Причём здесь любой цикл? Есть конкретный. Цель в цикле достигнута, продолжать цикл нет смысла, делается выход. Всё логично. В других циклах всё может быть по другому. О чём разговор? Может закончим?

asdf1100
0 / 0 / 0
Регистрация: 28.08.2013
Сообщений: 10
28.08.2013, 19:07     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #17
Возможно в файл ничего не записывается, так как этот файл не закрывается(насколько я понял). После записи в файл нужно его обязательно корректно закрыть.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 19:11     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #18

Не по теме:

Хотя, я сделал бы тут по другому. В данном случае, я просто код ТС подправил, а не свой написал.



Добавлено через 1 минуту
asdf1100, тут уже всё выяснили об этом. Запишется, когда программа закроется, но, согласен, лучше самому (для порядка).

Добавлено через 1 минуту

Не по теме:

Что-то форум глючит, цитирование не делается. Только у меня?

ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
28.08.2013, 19:16     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #19
и потом этим бряком ьы можешь не убыстрить а замедлить работу программы
во первых ослепляешь оптимизатор
а во вторых сбиваешь предсказатель процессора
вот он сделал сто итераций и понимает что условие не выполняется
на сто первый думает что не выполнится загоняет в кэш последовательность инструкций и... не угадал
из кэша все выгружаем и загоняем заново
в общем оптимизация циклов задача нетривиальная
и каждый раз нужен новый подход
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2013, 19:19     Не могу понять почему в файл OUTPUT.TXT ничего не записывается
Еще ссылки по теме:

Почему на экран выводится 5 элементов массива, а в файл записывается 1 элемент (последний) - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include &lt;fstream&gt; using namespace std; int main() { int...

Не могу понять почему... - C++
#include &quot;stdafx.h&quot; void main() { funct(); _getch(); } void funct() {

Не могу понять, почему? - C++
Доброго времени суток=) Такая печаль. Создается класс Окружность с полями радиус, площадь и длина окружности. Нужно создать функции...

Не могу понять почему - C++
Есть кода программы(код взят разобраться): #include&lt;iostream&gt; using namespace std; class coord { protected: public: int x,y; ...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 19:19     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #20

Не по теме:

ValeryS, я это для кого пишу?

Хотя, я сделал бы тут по другому. В данном случае, я просто код ТС подправил, а не свой написал.



Добавлено через 1 минуту

Не по теме:

Лучше на это ответьте:

Что-то форум глючит, цитирование не делается. Только у меня?

Yandex
Объявления
28.08.2013, 19:19     Не могу понять почему в файл OUTPUT.TXT ничего не записывается
Ответ Создать тему
Опции темы

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