• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Witam... może ktoś mi podpowiedzieć czemu nie zapisuje mi sumy w notatniku?

VPS Starter Arubacloud
0 głosów
166 wizyt
pytanie zadane 24 maja 2020 w C i C++ przez Marten Nowicjusz (120 p.)
edycja 24 maja 2020 przez ScriptyChris
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;

int main() {
    int sum = 0;
    int num;
 
    fstream file("file.txt");
    for (int i = 0; i < 3; ++i) {
        file >> num;
        cout << num << std::endl;
        sum += num;
    }
    cout << sum << std::endl;
 file.open("file.txt", ios::out | ios::app);
    if(file.good() == true)
    {
        file << "Suma powyższych liczb wynosi: "<<sum;
        file.close();
    }

    
    
    system ("PAUSE");
    return 0;
}

 

komentarz 24 maja 2020 przez VBService Ekspert (255,800 p.)

Powinieneś napisać, że nie zapisuje się w pliku tekstowym (rozszerzenie txt). wink

Notatnik to nazwa programu "wbudowanego" w Windows do otwierania m.in. tego typu plików.

komentarz 24 maja 2020 przez Marten Nowicjusz (120 p.)

Ok, dziękujęsmiley

2 odpowiedzi

0 głosów
odpowiedź 24 maja 2020 przez adrian17 Ekspert (349,240 p.)

`file` jest już otwartym plikiem.

If the stream is already associated with a file (i.e., it is already open), calling this function fails.

Zamiast próbować używania tego samego obiektu i dodawania close(), sugerowałbym raczej używać osobnych obiektów:

    ifstream infile("int.txt");
    for (int i = 0; i < 3; ++i) {
        fileinfile>> num;
        cout << num << std::endl;
        sum += num;
    }
    cout << sum << std::endl;

    ofstream outfile("out.txt");
    if(!outfile)
        // obsluga bledu
    file << "Suma powyższych liczb wynosi: "<<sum;

 

0 głosów
odpowiedź 24 maja 2020 przez VBService Ekspert (255,800 p.)
edycja 7 lipca 2020 przez VBService

Może taki przykład Tobie pomoże.


#include <random>
#include <iostream>
#include <fstream>
#include <cstdlib>
 
using namespace std;

void clear_cmd_screen()
{
  cout << ("\033[H\033[2J");
  fflush(stdin);
}

int losuj_fn_mt19937(int minimum, int maximum)
{
  // generator liczb pseudolosowych
  mt19937 mt(random_device{}());
  // rozkład wylosowanych liczb wraz z zakresem
  uniform_int_distribution<int> dist(minimum, maximum);
  // losowanie liczb
  return dist(mt);
}

void zapisz_tablice_do_pliku(int* tablica, int ile, string nazwa_pliku)
{
    ofstream plik(nazwa_pliku);
    for(int i=0; i < ile; i++)
    {
      plik << tablica[i] << endl;
    }

    plik.close();
}

int main () {
  int suma = 0;
  int liczba = 0;
  int ile = 10;
  int t_suma[ile];

  string kolumna1 = " | ";
  string kolumna2 = "  | ";
  string separator ="";

  static string ANSI_GREEN = "\u001B[32m";
  static string ANSI_RESET = "\u001B[0m";

  int min = 10;
  int max = 125;  
  string f_name = "dane.txt";

  clear_cmd_screen();
  cout << endl;
  cout << "Zaczynam sumowanie liczb" << endl;
  cout << "------------------------" << endl;
  cout << endl;
  cout << "Dane | Suma" << endl;
  cout << "-----|-----" << endl;

  for (int i = 0; i < ile; i++)
  {
    liczba = losuj_fn_mt19937(min, max);
    suma += liczba;

    if (liczba >=10 && liczba <=99)
    {
      separator = kolumna2;
    }
    else if (liczba >=100 && liczba <=999)
    {
      separator = kolumna1;
    }

    cout << " " << liczba << separator << ANSI_GREEN << suma << ANSI_RESET << endl;
    t_suma[i] = suma; 
  }

  cout << endl;
  cout << "Zapisuje wartości sumowania do pliku: " << ANSI_GREEN << f_name << ANSI_RESET << endl;
  zapisz_tablice_do_pliku( t_suma, ile, f_name);
  cout << endl;

  system ("PAUSE");
  return 0;
}

Output:

Podobne pytania

0 głosów
1 odpowiedź 129 wizyt
0 głosów
2 odpowiedzi 94 wizyt
pytanie zadane 4 maja 2020 w C i C++ przez Pabllo26 Obywatel (1,280 p.)
+5 głosów
5 odpowiedzi 528 wizyt

92,979 zapytań

141,941 odpowiedzi

321,185 komentarzy

62,303 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...