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

Piesze program który wypisze z pliku liczby palindroniczne

Object Storage Arubacloud
+1 głos
175 wizyt
pytanie zadane 29 stycznia 2021 w C i C++ przez BedrisK Użytkownik (600 p.)
edycja 29 stycznia 2021 przez BedrisK

Liczby palindroniczne, to takie, które czytane od lewej i od prawej jest taka sama czyli np. 5445, 67976, 1, 5. 

Muszę wypisać z pliku liczby właśnie takie, nie wiem za bardzo gdzie popełniłem błąd.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream plik;
    plik.open("liczby.txt", ios::in);
    int a[1000], b=0;

    if(plik.good()==false)
    {
        cout << "Plik nie jest dostepny!";
    }

    else
    {
        while(!plik.eof())
        {
            plik >> a[b];
            b++;
        }
    }

    cout << a[b] << endl;
    plik.close();

    b=0​​​​​​​

    while(a[b]>0)
    {
        cout << endl << a[b]%10;
        a[b]=a[b]/10;
    }

    return 0;
}

2
komentarz 29 stycznia 2021 przez j23 Mędrzec (194,920 p.)
Kod od linii 26 do 33 jest bez sensu. Tutaj tablica nie jest w ogóle potrzebna. Wystarczy czytać (w pętli) liczbę, sprawdzić i wypisać. Następna rzecz to czytanie liczby. Czytaj ją do stringa jako tekst i porównuj cyfry.
komentarz 29 stycznia 2021 przez BedrisK Użytkownik (600 p.)
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    fstream plik;
    plik.open("liczby.txt", ios::in);
    int a[1000], b=0;
 
    if(plik.good()==false)
    {
        cout << "Plik nie jest dostepny!";
    }
 
    else
    {
        while(!plik.eof())
        {
            plik >> a[b];
            b++;
        }
    }
    plik.close();
 
    b=0
 
    while(a[b]>0)
    {
        cout << endl << a[b]%10;
        a[b]=a[b]/10;
    }
 
    return 0;
}

a nie dało by się tego z pętlą while zrobić?

 

1
komentarz 29 stycznia 2021 przez j23 Mędrzec (194,920 p.)

Nie rozumiem pytania? Przecież masz dwie pętle while.

Niewiele zmieniłeś w kodzie. Jeśli dobrze rozumiem to zadanie, masz wyświetlić tylko te liczby, które są palindromiczne.

Popraw pętlę z linii 19 na while(plik >> a[b]) { ++b; }

Zrób tak, jak pisałem - użyj stringa. Będzie prościej.

komentarz 30 stycznia 2021 przez BedrisK Użytkownik (600 p.)
ok, dobrze, dziękuje
komentarz 30 stycznia 2021 przez BedrisK Użytkownik (600 p.)
nie wiem za bardzo jak działa ten string, ja chciałbym to zrobić tak
komentarz 30 stycznia 2021 przez BedrisK Użytkownik (600 p.)
czy wyjaśnisz mi jak? Potrzebuje pomocy
2
komentarz 30 stycznia 2021 przez j23 Mędrzec (194,920 p.)
std::string s;

while (plik >> s) {
    if (std::equal(s.begin(), s.end(), s.rbegin())) {
        std::cout << s << '\n';
    }
}

W zasadzie to cały program... i żadnych tablic ;)

1
komentarz 31 stycznia 2021 przez VBService Ekspert (253,140 p.)

Dzięki sugestii @j23, mogło by to wyglądać tak: wink

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

/*
    Liczby palindroniczne
    liczby.txt
    
    678
    5445  - TA
    56
    24
    67976 - TA
    1
    5
    333   - TA
    6791
    987

*/
 
int main()
{
    fstream plik;
    plik.open("liczby.txt", ios::in);
    
    if (! plik.good()) {
        cout << "Plik nie jest dostepny!";
    } else {
        string s;
        while (plik >> s) {
            if (s.size() > 1)
                if (equal(s.begin(), s.end(), s.rbegin()))
                    cout << s << '\n';
        }
    }
    
    plik.close();
    
    return 0;
}

 

komentarz 31 stycznia 2021 przez BedrisK Użytkownik (600 p.)
o dziękuje bardzo, życzę miłego dnia

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 242 wizyt
–2 głosów
1 odpowiedź 395 wizyt

92,556 zapytań

141,404 odpowiedzi

319,562 komentarzy

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

...