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

zapisywanie danych do pliku

Object Storage Arubacloud
+1 głos
475 wizyt
pytanie zadane 31 marca 2021 w C i C++ przez newone Nowicjusz (220 p.)

Witam, piszę program, który ma za zadanie przypisać wyniki rozkładu liczby na czynniki pierwsze do nowego pliku. Wszystko działa, aż do zaznaczonej na jasno-niebieski kolor linijki. Czy ktoś mógłby mi powiedzieć, na czym polega mój błąd?

#include <iostream>
#include <fstream>
#include <cmath>
#include <conio.h>
using namespace std;
void liczby(int x)
{
    int pom=floor(x/2);
    bool flaga=false;
    for(int i=2;i<=pom;i++)
    {
        int potega=0;
        while(x%i==0)
        {
            potega++;
            x/=i;
        }
       
        if(potega>0 && !flaga)
            cout<<i<<"^"<<potega;
        if(potega>0 && flaga)
            cout<<"*"<<i<<"^"<<potega;
        flaga=true;
    }
}

int main()
{
	int n;
    cout<<"Podaj liczbe: ";
    cin>>n;
	ofstream f("wyniki.txt");
	f<<liczby(n);
	f.close();
	return 0;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 1 kwietnia 2021 przez Bondrusiek Maniak (61,370 p.)

Cześć,

strumień powiązany z plikiem nic mu nie przesyła. Możesz to rozwiązać na dwa sposoby edytować funkcje tak aby zwracała tekst, który chcesz przesłać do pliku lub przesłać strumień jako argument funkcji. Tutaj drugie rozwiązanie:

#include <iostream>
#include <fstream>
#include <cmath>
#include <conio.h>
using namespace std;
void liczby(int x, ostream& os)
{
    int pom=floor(x/2);
    bool flaga=false;
    for(int i=2;i<=pom;i++)
    {
        int potega=0;
        while(x%i==0)
        {
            potega++;
            x/=i;
        }

        if(potega>0 && !flaga)
            os << i <<"^"<<potega;
        if(potega>0 && flaga)
            os <<"*"<<i<<"^"<<potega;
        flaga=true;
    }
}

int main()
{
    int n;
    cout<<"Podaj liczbe: ";
    cin>>n;
    ofstream f("wyniki.txt");
    liczby(n, f);
    f.close();
    return 0;
}

 

komentarz 1 kwietnia 2021 przez VBService Ekspert (253,340 p.)

Przykład do rozwiązania pierwszego, które podał @Bondrusiek  smiley

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

string some_function(int x)
{
    return "Wartosc z funkcji: " + to_string(x);
}

int main()
{
    int n;
     
    ofstream f("wyniki.txt");
    while (true)
    {
        cout << "Podaj liczbe [0 - koniec]: ";
         cin >> n;
         
        if (n == 0) break;
        f << some_function(n) << endl;
    }
    f.close();
    
    return 0;
}

zawartość pliku wyniki.txt

komentarz 1 kwietnia 2021 przez newone Nowicjusz (220 p.)

Dziękuję za pomoc! laugh

–1 głos
odpowiedź 1 kwietnia 2021 przez Eriss69 Gaduła (4,470 p.)
o ktorej linijcie mowisz?

I Dlaczego w kodzie c++ masz html??
komentarz 1 kwietnia 2021 przez VBService Ekspert (253,340 p.)

Bo  @newone

Wszystko działa, aż do zaznaczonej na jasno-niebieski kolor linijki.

użył kolorowania czcionki  w "bloczku" przeznaczonym na kod.  wink

1
komentarz 1 kwietnia 2021 przez newone Nowicjusz (220 p.)

Ah faktycznie, przepraszam - późna godzina dała o sobie znać indecision

komentarz 2 kwietnia 2021 przez Eriss69 Gaduła (4,470 p.)
my bad sorry

Podobne pytania

+1 głos
1 odpowiedź 580 wizyt
pytanie zadane 26 kwietnia 2022 w Java przez cfaniaczek Nowicjusz (200 p.)
0 głosów
0 odpowiedzi 317 wizyt
0 głosów
1 odpowiedź 349 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...