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

zadanie maturalne c++

VPS Starter Arubacloud
0 głosów
495 wizyt
pytanie zadane 5 marca 2022 w C i C++ przez fsfxvcxv Obywatel (1,160 p.)

Nie wie ktoś w którym miejscu moze znajdowac sie blad? Zadanie 6.2 z matury. Link do zadanie: https://cke.gov.pl/images/_EGZAMIN_MATURALNY_OD_2015/Arkusze_egzaminacyjne/2017/formula_od_2015/informatyka/MIN-R2_1P-172.pdf

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

string palindrom(string napis)
{
    string pom="";
    for(int i=napis.size()-1; i>=0; i--)
    {
        pom=pom+napis[i];
    }
    return pom;
}

int main()
{
    ifstream infile("dane.txt");
    string cyfra;
    string nowy="";
    int licznik=0;
    for(int i=0; i<200; i++)
    {
        for(int j=0; j<320; j++)
        {
            infile>>cyfra;
            nowy=nowy+cyfra;
        }
        if(nowy!=palindrom(nowy))
        {
            licznik++;
        }
        nowy="";
    }
    cout<<licznik;
    return 0;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 5 marca 2022 przez toko Dyskutant (8,030 p.)
wybrane 7 marca 2022 przez fsfxvcxv
 
Najlepsza

Porównujesz po kolei wszystkie znaki w linii (bez spacji) a nie liczby. Przykład: 12 2 12 jest symetryczne, ale twój program porównuje znaki 12212, co po odwróceniu nie daje samego siebie - 21221

#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
 
bool czy_symetryczne(vector<int> linia) // funkcja sprawdzająca czy linia jest symetryczna
{
    for(int i = 0; i < linia.size(); i++) { // idziemy po wszystkich liczbach w linii
        if(linia[i] != linia[linia.size()-i-1]) // jeśli jest różne od początku i końca to zwracamy że nie
            return false;
    }
    return true; // jeśli nie zwrócilismy że nie to zwracamy tak
}
 
int main()
{
    ifstream infile("dane.txt");
    int licznik=0;
    for(int i = 0; i < 200; i++) // idziemy po wszytkich liniach
    {
        vector<int> linia (320); // tworzymy wektor w którym będziemy trzymać liczby z linii
        for(int j = 0; j < 320; j++) // idziemy po wszystkich liczbach
            infile >> linia[j]; // wczytujemy liczbę
        if(!czy_symetryczne(linia)) // jeśli linia jest niesymetryczna to znaczy że trzeba ją usunąć i zwiększamy licznik
            licznik++;
    }
    cout << licznik << endl; // wypisujemy wynik
    return 0;
}
// KOD NIESPRAWDZONY. MOŻE BYĆ JAKIŚ BŁĄD
+1 głos
odpowiedź 5 marca 2022 przez TOM_CPP Pasjonat (22,640 p.)

Źle zrozumiałeś zadanie. Według definicji:

Obraz ma pionową oś symetrii, jeśli w każdym wierszu i-ty piksel od lewej strony
przyjmuje tę samą wartość.

To oznacza że powinieneś wczytywać wartości liczb do tablicy i następnie sprawdzać ich symetryczność.

Na przykład wiersz 245 23 0 23 245 jest symetryczny, ale używając rozwiązania z Twojego kodu już nie jest,

gdyż 24523023245 nie jest palindromem!

 

Podobne pytania

0 głosów
1 odpowiedź 120 wizyt
pytanie zadane 18 maja 2023 w C i C++ przez fsfxvcxv Obywatel (1,160 p.)
+1 głos
1 odpowiedź 356 wizyt
pytanie zadane 15 grudnia 2023 w C i C++ przez Wojo772233 Początkujący (480 p.)
0 głosów
1 odpowiedź 181 wizyt

92,965 zapytań

141,930 odpowiedzi

321,163 komentarzy

62,299 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!

...