• 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
449 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 Mądrala (7,210 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ź 100 wizyt
pytanie zadane 18 maja 2023 w C i C++ przez fsfxvcxv Obywatel (1,160 p.)
+1 głos
1 odpowiedź 201 wizyt
pytanie zadane 15 grudnia 2023 w C i C++ przez Wojo772233 Początkujący (350 p.)
0 głosów
1 odpowiedź 163 wizyt

92,455 zapytań

141,263 odpowiedzi

319,100 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...