Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2011, 12:41   #1
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию Вывод данных в файл

Здравствуйте!

Подскажите, как реализовать корректный вывод в файл для следующей программы. Чтобы файл записалось все, что выводиться на консоль (это был бы наилучший вариант) ну или хотя бы только все числа в двоичной форме представления.

Код:
#include <iostream>
#include <conio.h>


using namespace std;

void disp_binary (int x);

int main ()
{
    int x;
    for (x=0; x<10; x++)
    {
        cout << "X in dec: " <<x << " " << endl;
        cout << "X in bin: ";
        disp_binary (x);
        cout << endl;
    }    
    
    getch ();
    return 0;
}

void disp_binary (int x)
{

     register int t;
     for (t=32; t>0; t=t/2)
         if (x & t) cout << "1";
         else cout << "0";
     cout << endl;
}
У меня выводиться только последние число в двоичной форме то есть текстовый файл каждый раз в цикле перезаписываться (а не до записывается), а стоит задача вывести все числа

Код:

#include <iostream>
#include <conio.h>
#include <fstream>

using namespace std;

void disp_binary (int x);

int main ()
{
    ofstream  out ("res.txt");
    int x;
    for (x=0; x<10; x++)
    {
        out << "X in dec: " <<x << " " << endl;
        out << "X in bin: ";
        disp_binary (x);
        out << endl;
    }    
     out. close ();
    getch ();
    return 0;
}

void disp_binary (int x)
{
     ofstream out ("res.txt");
     register int t;
     for (t=32; t>0; t=t/2)
         if (x & t) out << "1";
         else out << "0";
     out. close ();
     out << endl;
}
PS: Заранее приношу извинения, если такая тема на форуме уже рассматривалась, но я такой темы не нашел.
Corvette вне форума Ответить с цитированием
Старый 09.09.2011, 14:55   #2
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Только вот так получается два разных файла (а хочется в один):

Код:
#include <iostream>
#include <conio.h>
#include <fstream>

using namespace std;

//void disp_binary (int x);

int main ()
{
    ofstream  out ("res.txt");
    int x;
    for (x=0; x<10; x++)
    {
        out << "X in dec: " <<x << " " << endl;
        out << "X in bin: ";
        //disp_binary (x);
        out << endl;
    }    
     out. close ();
    
    ofstream myfile;
    myfile.open ("example.txt");
    for (x=0; x<10; x++)
    {
        register int t;
        for (t=32; t>0; t=t/2)
         if (x & t) 
         myfile << "1";
         else 
         myfile << "0";
    }
    myfile.close();
    
    
    
    getch ();
    return 0;
}

/*void disp_binary (int x)
{
     ofstream out ("res.txt");
     register int t;
     for (t=32; t>0; t=t/2)
         if (x & t) 
         out << "1";
         else 
         out << "0";
     out. close ();
     out << endl;
} */
Может у кого то есть более рациональные варианты??? Чтобы все записывалось в один файл и осталась отдельная функция.

Последний раз редактировалось Corvette; 09.09.2011 в 14:58.
Corvette вне форума Ответить с цитированием
Старый 09.09.2011, 15:36   #3
FelixXXI
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 48
По умолчанию

Надеюсь, я правильно понял, что надо было сделать.
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;

void disp_binary (int x);
ofstream  out ("res.txt");

int main ()
{
    int x;
    for (x=0; x<10; x++)
    {
        out << "X in dec: " <<x << " " << endl;
        out << "X in bin: ";
        disp_binary (x);
        out << endl;
    }    
     out. close ();
    getch ();
    return 0;
}

void disp_binary (int x)
{
     register int t;
	for (t=32; t>0; t=t/2)
         if (x & t) out << "1";
         else out << "0";
}
FelixXXI вне форума Ответить с цитированием
Старый 09.09.2011, 15:54   #4
Corvette
Пользователь
 
Регистрация: 31.07.2011
Сообщений: 55
По умолчанию

Спасибо!!! Да, правильно!!!
Corvette вне форума Ответить с цитированием
Старый 23.09.2011, 21:06   #5
Alkagolik
Пользователь
 
Аватар для Alkagolik
 
Регистрация: 03.08.2009
Сообщений: 77
По умолчанию

некорректное условие выхода из цикла, равно как и шаг. хотя и работать будет, но все же. Вдруг какой из компиляторов (или энтузиастов) выкинет 1 / 2 = 1.
Код:
void disp_binary (int x)
{
     register int t;
	for (t=32; t>0; t=t/2)
         if (x & t) out << "1";
         else out << "0";
}
мне кажется так будет стабильнее, для любого компилятора и архитектуры
Код:
	for (t = 32; t != 0; t >>= 1)
так же неплохо было бы обработать исключение открытия и закрытия файла.
Код:
if(!out.is_open()){
      std::cerr << "something error";
      return 1;
}
Alkagolik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать вывод данных после всего ввода данных. Donatello Общие вопросы C/C++ 6 16.01.2011 16:32
Вывод данных в новый файл ahvahsky2008 Microsoft Office Excel 11 21.12.2010 20:32
Вывод данных в файл. Mambakremen Помощь студентам 4 19.12.2010 17:55
ввод/вывод данных из/в файл для данной программы? Tetramorf Общие вопросы C/C++ 0 14.05.2010 17:03
Построение правильного алгоритма, вывод данных в файл, freggat Общие вопросы C/C++ 1 11.01.2010 21:33