• 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?

Object Storage Arubacloud
0 głosów
155 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 (253,520 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 (345,160 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 (253,520 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ź 117 wizyt
0 głosów
2 odpowiedzi 85 wizyt
pytanie zadane 4 maja 2020 w C i C++ przez Pabllo26 Obywatel (1,280 p.)
+5 głosów
5 odpowiedzi 502 wizyt

92,596 zapytań

141,446 odpowiedzi

319,720 komentarzy

61,981 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...