Премини към съдържанието
Kristian Panov

ПОМОЩ! C++ Проблем със записване на данни във текстов файл!

Препоръчан отговор


Хора, имам нужда от помощ.
Така, това е програма, която генерира шест случайни числа, които не се повтарят.
Обаче, искам генерираните числа да ги запиша в един текстов файл.
Това е елементартно, но нещо съм зацепил.
Ето този код изпълнява записването:  
         
            myfile << "[" << date << "]" << "\n";
            myfile << "Numbers: " << numbers << " " << "\n";
            myfile << "---------------------" << "\n";
            myfile.close();

А генерирането на числата се изпълнява тук:         

        for (i = 0; i < sizeof(numbers) / sizeof(*numbers); i++)
        {

            cout << numbers << " ";

        }

Абе вие ще си разгледате кода.
Та искам, числата, котито се генерират да се записват в текстовият файл.
Обаче, това - " myfile << "Numbers: " << numbers[ i ] << " " << "\n";" не работи.
Защото например ако се генерират "3, 46, 23, 11, 20, 15".
То като отворя файла ми извежда "1", просто някаква единица вместо шестте генерирани числа.



Кодът:

#include<fstream>
#include<iostream>
#include<windows.h>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>

using namespace std;

void setcolor(unsigned short color)
{
    HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hcon,color);
}

static void getSix (int *dst)
{
    int sz, pos, i, src[50];
    for (i = 0; i < sizeof(src) / sizeof(*src); i++)
        src = i + 1;
    sz = 50;
    for (i = 0; i < 6; i++)
    {
        pos = rand() % sz;
        dst = src[pos];
        src[pos] = src[sz - 1];
        sz--;
    }
}

int main()
{

    system("chcp 1251 > nul");
    system("title LotteryWin");

    ofstream myfile("Data.txt", ios::app);
    string date;
    string line;

    int choice;
    cout << "1.Generate Ticket Numbers" << endl;
    cout << "2.List Previous Ticket Numbers" << endl;
    cout << "3.Exit" << endl << endl;
    cout << "Please, enter your choice: ";
    cin >> choice;

    if(choice == 1)
    {

        system("cls");

        cout << "Please, enter the date." << endl;
        cout << "Date: ";
        cin.clear();
        cin.ignore(0xffff, '\n');
        getline(cin, date);

        system("cls");

        srand (time (NULL));
        int i, numbers[6];
        getSix (numbers);

        setcolor(10);
        cout << "Numbers are:" << endl;
        setcolor(7);

        for (i = 0; i < sizeof(numbers) / sizeof(*numbers); i++)
        {

            cout << numbers << " ";

        }
            myfile << "[" << date << "]" << "\n";
            myfile << "Numbers: " << numbers << " " << "\n";
            myfile << "---------------------" << "\n";
            myfile.close();

    }
    system("pause > nul");
    return 0;
}
 

Редактирано от Kristian Panov (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Направи цикъл да записва 6-те числа едно по едно 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 24 минути, ined написа:

Направи цикъл да записва 6-те числа едно по едно 

Ясно.
Ама как да направя цикълът да записва, някакъв пример ще дадеш ли?
Съжалявам, от съвсем скоро започнах да работя с файлове.
Имам предвид, да записва във файла точно там, където е текста "Numbers: ", тоест там където ги изброява.

Редактирано от Kristian Panov (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 3 часа, Kristian Panov написа:

myfile << "Numbers: " << numbers << " " << "\n";

Какво ти е ясно ?

Човека ти каза да замениш това от цитата с това долу:

myfile << "Numbers: ";

for (int i = 0; i < 6; i++) myfile << numbers[i] << " ";

myfile << "\n";

 

Редактирано от Реджеп Иведик (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход


  • Горещи теми в момента

  • Подобни теми

    • от HelloWorld
      Здравейте,
      Някой може ли да помогне с презаписването на масив в друг масив, т.е входните данни се записват в даден масив, но след това трябва да се прехвърлят на друг в отделна функция. 
    • от ValentinMitev1
      Здравейте!
      Трябва да направя програма на анимиран дигитален часовник в c++(graphics.h). Целта е числата да се променят анимирано-  да се показват отдолу и да се скриват горе (флип часовник).  Ще съм благодарен, ако някой може да ми помогне.
       
    • от Магдаленаг
      Здравейте!
      Please accept the challenge
      Зададена ми е следната задача:
      Дадени са две големи цели числа N1 и N2(до 100 цифри). Да се напишат програмни фрагменти за:
      а) представяне на числата чрез списъци;
      б) сравнение на двете числа и отпечатване на резултата - N1>N2 или N1<N2.
      Упътване: Големи числа се наричат цели положителни числа с К цифри, където К>255. Големите цели числа могат да се представят с помощта на линеен едносвързан списък, всеки елемент на който съдържа точно една цифра от числото.
      Език: С++
      Компилатор: Windows Visual Studio C++
      Благодаря предварително!
    • от windowsv
      Добър вечер! Задачата ми е следната: имам динамичен масив от обекти-градове с надморска височина, географска дължина и ширина. Сортирам ги по метода на мехурчето по географската дължина/от запад на изток/ и извеждам сортираните дължини във възходящ ред. Проблемът е,че в самото извеждане трябва да ми излизат сортирани градовете по имена, а не само техните дължини. Понеже член-данните са ми в секция private, няма как в main() да ги достъпя /пробвах с метод на класа, връщащ само географската дължина и така да направя сортирането, но не се получава/ и затова създадох втори масив само за дължините. Преподавателката ми каза, че трябва да имам конструктор за копиране и да предефинирам операция равно. Последните две неща мога да ги направя, но не мога да схвана идеята как това се включва в моята програма.Ето кодът ми:
      #include "stdafx.h"
      #include<iostream>
      #include<math.h>
      using namespace std;

      class City{
      private: char *name;
      double width;
      double length;
      double height;
      public:
      void Input();
      void Output();
      City();
      ~City();
      double GetLength();
      };
      City::City()
      {
      char ime[20];
      cout << "Name= ";
      cin >> ime;
      name = new char[strlen(ime) + 1];
      for (int i = 0; i <=strlen(ime); i++)
      name = ime;

      cout << "Width= ";
      cin >> width;
      cout << "Length= ";
      cin >> length;
      cout << "Height= ";
      cin >> height;
      }
      void City::Input()
      {
      char ime[25];
      cout << "Input name of city:" << endl;
      cin >> ime;
      name = new char[strlen(ime) + 1];
      for (int i = 0; i < strlen(ime); i++)
      {
      name = ime;
      cout << name;
      }
      cout << "Input height of city " << endl;
      cin >> height;
      cout << "Input length of city " << endl;
      cin >> length;
      cout << "Input width of city " << endl;
      cin >> width;



      return;
      }
      void City::Output()
      {
      cout << "Name is: " << name << endl;
      cout << " Width is: " << width <<" deg"<< endl;;
      cout << " Length is: " << length << " deg"<<endl;
      cout << " Height is: " << height <<" m"<<endl;
      return;
      }
      City::~City()
      {
      cout << " " << endl;
      cout << "Destructor of City!" << endl;
      delete[] name;
      }
      double City::GetLength()
      {
      return length;
      }
      int main()
      {
      //City town;

      //town.Input();
      //town.Output();
      int n;
      City *mA;
      cout << "Input number of cities: " << endl;
      cin >> n;
      mA = new City[n];
      for (int j = 0; j < n; j++)
      {
      mA[j].Output();
      }
      cout << "Cities from west to east, sorted by their length" << endl;
      double *Lengths = new double[n];
      for (int j = 0; j < n; j++)
      {
      Lengths[j] = mA[j].GetLength();

      }


      int k = 0;//counter
      double max = Lengths[0];
      for (int j = 1; j < n; j++)
      {
      if (Lengths[j - 1] >Lengths[j])
      {
      max = Lengths[j - 1];
      Lengths[j - 1] = Lengths[j];
      Lengths[j] = max;
      }
      }


      for (int j = 0; j < n; j++)//cycle for output
      {
      cout << Lengths[j] << "\n";
      }


      delete[]mA;
      return 0;

      }
      Моля за някакви насоки ако е възможно стигнал съм до задънена улица. Пробвах с указатели, все не се получава.
       
    • от Nero AN
      Здравейте, някои може ли да ми помогне с тази задача?
      Благодаря предварително!
      Задачата е следната:

  • Разглеждащи в момента   0 потребители

    Няма регистрирани потребители разглеждащи тази страница.

  • Дарение

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.