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

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

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

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

28.08.2013, 17:08. Просмотров 829. Ответов 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++ В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию
C++ Переписать данные файла input.txt в output.txt, отсортировав их
Исправить программу, чтоб считывала текст из файла Input.txt и выводит в файл Output.txt C++
C++ Переписать данные файла input.txt в файл output.txt, отсортировать их в алфавитном порядке по фамилии
C++ Найти минимальное и максимальное числа из input.txt и записать его в файл output.txt
C++ Давно не писала ничего на Dev C++ выдает ошибки не могу понять как их исправить
Почему в файл значение дублируется (записывается дважды)? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5415 / 4811 / 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
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
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
2321 / 1947 / 192
Регистрация: 03.07.2012
Сообщений: 6,970
Записей в блоге: 1
28.08.2013, 17:55     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #5
Похоже на задачи с тестовых сайтов, а по условию прохоже на проверку, входит ли число в ряд фибоначчи (кстати, 8-ка входит). Но условие изложено столь невразумительно, что точно сказать нельзя.
ValeryS
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
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
5415 / 4811 / 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
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
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
5415 / 4811 / 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
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
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
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:33     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #11
Цитата Сообщение от ValeryS Посмотреть сообщение
break то зачем?
i == (n - 1) итак последняя итерация
Зачем лишние действия, если все равно выход?
zer0mail
2321 / 1947 / 192
Регистрация: 03.07.2012
Сообщений: 6,970
Записей в блоге: 1
28.08.2013, 18:36     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #12
Зачем смотреть код ТС - он все равно "кривой" ТС уже новую тему создал для этой задачи. Похоже, хочет "порешать" задачи через форум (как будто это поможет стать программистом)
"Разруха начинается головах" (с) Преображенский. Невозможно с расплывчатыми невнятными мыслями написать ясную, правильно работающую программу.
ValeryS
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
28.08.2013, 18:47     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #13
Цитата Сообщение от alsav22 Посмотреть сообщение
Зачем лишние действия, если все равно выход?
это ты меня спрашиваешь ?
тот же вопрос я и задал
Цитата Сообщение от zer0mail Посмотреть сообщение
Зачем смотреть код ТС - он все равно "кривой"
ну-к я думал указать человеку на ошибки
даже целую портянку расписал
Цитата Сообщение от zer0mail Посмотреть сообщение
ТС уже новую тему создал для этой задачи.
да уже вижу
и самоустроняюсь
но не для вас alsav22 и zer0mail
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 18:51     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #14
ValeryS, вы, наверное, не поняли про лишние действия. Если break, то сразу выход. Если без break, то обращение к параметрам цилка, увеличение i, сравнение с n, и только потом выход. Я про эти лишние действия спросил. Зачем они?
ValeryS
Модератор
6511 / 4977 / 460
Регистрация: 14.02.2011
Сообщений: 16,486
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
5415 / 4811 / 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
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.08.2013, 19:11     Не могу понять почему в файл OUTPUT.TXT ничего не записывается #18

Не по теме:

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



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

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

Не по теме:

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

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

C++ Курсовая работа. В файл *.txt не записывается текст
Переписать данные файла input.txt в файл output, отсортировав их по возрастанию средней оценки методом выбора C++
Работа с файлами. Найти среднее арифметическое всех чисел и записать его в файл output.txt C++
Не всё записывается в файл. Ничего не понимаю C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5415 / 4811 / 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