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

question-closed Rodzaj palindroma w C++

0 głosów
507 wizyt
pytanie zadane 9 grudnia 2024 w C i C++ przez Jerzy Użytkownik (950 p.)
zamknięte 9 grudnia 2024 przez adrian17
Co to jest fufsopalindromem. ?
komentarz zamknięcia: nie rozumie czym jest "samodzielny konkurs"

1 odpowiedź

0 głosów
odpowiedź 9 grudnia 2024 przez adrian17 Mentor (354,880 p.)
...nazwa zadania z uruchomionego wczoraj konkursu?

https://szkopul.edu.pl/c/mistrz-programowania-2025/p/
komentarz 9 grudnia 2024 przez Jerzy Użytkownik (950 p.)
Napisałem program i wyskakuje błąd że Oczekuje TAK a pojawia się NIE
 

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    int i,n,N,cyfra,dlugosc;
    bool palindrom=true;
    vector <int> slowo;
    cin>>n;
    if(n<1 || n>1000)
    {
        cout<<"NIE"<<endl;
    return 0;
    }

    for(i=0;i<n;i++)
    {
        cin>>cyfra;
        slowo.push_back(cyfra);

    }

     N=slowo.size();
    dlugosc=N/2;

    for(i=0;i<dlugosc;i++)
    {
        if(slowo[i]!=slowo[N-1-i])
        {
            palindrom=false;
            break;

        }
    }

    if(palindrom)
    {
        cout<<"TAK";
    }
    else
    {
        cout<<"NIE";
    }
    return 0;
}
komentarz 9 grudnia 2024 przez adrian17 Mentor (354,880 p.)
Po pierwsze, to ma być robione samodzielnie.

Po drugie, poczytaj jeszcze treść zadania kilka razy.

Po trzecie, ten kod nawet wejścia nie wczytuje poprawnie, wpisuję "2<nowa linia>22" jak w treści i mi nic nie wypisuje. Odpalałeś go w ogóle, czy wkleiłeś prosto na stronę?
komentarz 9 grudnia 2024 przez Jerzy Użytkownik (950 p.)
Odpala ten program   i dostałem 5 punktów  .
Gdzieś jest błąd bo odczytuje na odwót . Program uważa za palindrom a nie jest
Mam nowszy z lustrzanym odbiciem :
 

#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;

int main() {
    int n, cyfra;
    vector<int> liczba;
    unordered_map<int, int> mirror_map = {
        {1, 1}, {6, 9}, {8, 8}, {9, 6}
    };

    // Wczytaj długość liczby
    cin >> n;

    // Sprawdź zakres n
    if (n < 1 || n > 1000) {
        cout << "NIE" << endl;
        return 0;
    }

    // Wczytaj cyfry liczby
    for (int i = 0; i < n; i++) {
        cin >> cyfra;

        // Sprawdź, czy cyfra ma "lustro"
        if (mirror_map.find(cyfra) == mirror_map.end()) {
            cout << "TAK" << endl;
            return 0;
        }

        liczba.push_back(cyfra);
    }

    // Sprawdź, czy liczba jest fufsopalindromem
    for (int i = 0; i < n / 2; i++) {
        if (mirror_map[liczba[i]] != liczba[n - 1 - i]) {
            cout << "NIE" << endl;
            return 0;
        }
    }

    // Jeśli wszystko przeszło, liczba jest fufsopalindromem
    cout << "TAK" << endl;
    return 0;
}
komentarz 10 grudnia 2024 przez TOWaD Mądrala (6,800 p.)
edycja 11 grudnia 2024 przez TOWaD
Edit: Dobra usunięty, jak zbędne/nie na temat. To parę znaków na serwerze mniej.
komentarz 10 grudnia 2024 przez adrian17 Mentor (354,880 p.)

Nie wiem czemu akurat o tym wspominasz, ten kod nie opierał się na posortowaniu unordered_map... no i zdecydowana większość programów używających hashmapy nie opiera się na tym. To nie był błąd w kodzie. Efektywnie wrzuciłeś trivię nie na temat, a ta customowa HashMap jest... dziwna pod wieloma względami i raczej nikomu bym nie radził uczyć się z tego kodu.

Kod wygenerowany automatycznie

Tym bardziej. Nie rób proszę takich losowych komentarzy.

komentarz 18 grudnia 2024 przez TOWaD Mądrala (6,800 p.)

@Jerzy, skoro straciłem tyle czasu na to pytanie to odpowiem. (ale ja bym tak tego nie napisał).

#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;

int main() {
    int n, cyfra;
    vector<int> liczba;
    // unordered_map<int, int> mirror_map = {
    //     {1, 1}, {6, 9}, {8, 8}, {9, 6}

    // }; to co to robi ? Lepiej tak:
    const string zakazane_numery = "3....";

    // Wczytaj długość liczby
    cin >> n; 

    // Sprawdź zakres n -  Ale po co?
    // if (n < 1 || n > 1000) {
    //     cout << "NIE" << endl;
    //     return 0;
    // }

    // Wczytaj cyfry liczby
    cin.ignore();// z igroruj enter;
    for (int i = 0; i < n; i++) {
        // cin >> cyfra; wczytuje całą linię 22222 
        cyfra=cin.get();

        // Sprawdź, czy cyfra ma "lustro"
        if (zakazane_numery.find(static_cast<char>(cyfra)) !=std::string::npos){
         //   cout << "TAK" << endl;
            cout << "NIE" << endl;
            return 0;
        }

        liczba.push_back(cyfra);
        cout<<"dodano"<<endl;
    }
    // if(/*cos rówa się zero to*/) { cout << "NIE" << endl;
    //         return 0;}

    // Sprawdź, czy liczba jest palindromem
    for (int i = 0; i < n / 2; i++) {
       // if (mirror_map[liczba[i]] != liczba[n - 1 - i]) 
       if(liczba[i] != liczba[n - 1 - i]) // chyba to miałeś na myśli
        {
            cout << "NIE" << endl;
            return 0;
        }
    }

    // Jeśli wszystko przeszło, liczba jest fufsopalindromem
    cout << "TAK" << endl;
    return 0;
}

tak na maginesie

1)

#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;

int main() {
    int n, cyfra;
    vector<int> liczba;
    unordered_map<int, int> mirror_map = {
        {1, 1}, {6, 9}, {8, 8}, {9, 6}
    };
    unordered_map<int, int> pusta_mapa;
    string pusty_string;
cout<<sizeof(n)<<endl;
cout<<sizeof(pusty_string)<<endl;
cout<<sizeof(cyfra)<<endl;
cout<<sizeof(liczba)<<endl;
cout<<sizeof(mirror_map)<<endl;
cout<<sizeof(pusta_mapa)<<endl;
cout<<sizeof(cin)<<endl;
cout<<sizeof(cout)<<endl;
 
    return 0;
}

2) cin.get()

a i w ogóle nie wiem czy działa, bo nie można sprawdzić konkretnego zadania

Podobne pytania

0 głosów
0 odpowiedzi 706 wizyt
0 głosów
0 odpowiedzi 171 wizyt
pytanie zadane 6 czerwca 2016 w C i C++ przez Macek Kolo Mądrala (5,480 p.)
0 głosów
1 odpowiedź 437 wizyt

93,727 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,287 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...