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

[C++] Zadanie maturalne "Obrazki"

Object Storage Arubacloud
0 głosów
1,450 wizyt
pytanie zadane 9 lutego 2016 w C i C++ przez Dronojad Obywatel (1,980 p.)

Witam forumowiczów. Mam pewien problem z maturalnym zadaniem C++.

Treść zadania: Zad. 64.1, str 121-122 LINK

Dane: dane_obrazki.txt

Mój kod C++: http://wklej.org/id/1933240/

Mój program zwraca błędną wartość (dokładnie 0). Niestety nie mogę znaleźć błędu, który to powoduje. Prawidłowy wynik to 13.

Z góry dziękuję za pomoc.

3 odpowiedzi

+1 głos
odpowiedź 9 lutego 2016 przez Noak Mądrala (5,900 p.)
wybrane 9 lutego 2016 przez Dronojad
 
Najlepsza
znalazłem dwa błedy.

1.musisz zerować zmienne licznik1 i licznik0 aby naliczać wartości od 0.

2. musisz czytać też pusty wiersz
komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
Dzięki wielkie za pomoc.

Więc tak: dodałem zerowanie zmiennych licznik1 i licznik0 i program ruszył. Jedynie wynik wyszedł 12, a powinien 13. Gdzieś jeszcze musi być błąd.
komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
Jeśli możesz to rozwiń trochę punkt 2, bo nie do końca rozumiem.
komentarz 9 lutego 2016 przez Noak Mądrala (5,900 p.)
a dodałeś wczytywanie pustego wiersza. możesz to zrobić w if(i==19) ??
komentarz 9 lutego 2016 przez Noak Mądrala (5,900 p.)
Zauważ że w danych wejściowych po każdym obrazku znajduje się pusta linia. Ją też trzeba odzielnnie wczytać.
komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
Więc tak, usunąłem cały warunek if(i==19) i wynik wyszedł poprawny. Możliwe, że przez przypadek :D

Kod wygląda tak: http://wklej.org/id/1933666/
komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
Dodałem wiersz z wczytywaniem pustej linii. Czy tak to powinno wyglądać? http://wklej.org/id/1933671/
komentarz 9 lutego 2016 przez Noak Mądrala (5,900 p.)
Wydaje mi się że przez przypadek. http://wklej.org/id/1933673/

Dodałem cout w 10 linii pokazuje on długość wczytanego wiersza. Jeśli program wczytywał by poprawnie dane każda wczytana linia miała by 21 znaków. A w tym przypadku niektóre wczytywane mają 20. W danych wejściowych 20 znaków mają linnie które zliczają parzystość 1.

Tutaj http://wklej.org/id/1933682/ jest dodana kolejna linia wejścia (47 linijka kodu )Wczytuje ona ten pusty wiersz. Mozesz dodać podobnego couta co wcześniej i zobaczysz że wszystkie linie mają po 21 znaków.

Jak na zadanie maturalne to trochę zagmatwane bo na maturze trudno wychwycić takie rzeczy.
komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
Dzięki za wskazówki.

Też uważam że te zadania są nieco zagmatwane. Z tego co wiem to pierwszy raz dali taki zbiór zadań do ćwiczenia przed maturą (do każdego przedmiotu). Jak na razie ćwiczę, za 3 miesiące zobaczę jaki będzie efekt :)
komentarz 9 lutego 2016 przez Noak Mądrala (5,900 p.)
Jeśli przygotowujesz się do matury to zachęcam do odwiedzenia tej strony http://algorytm.edu.pl/arkusze-maturalne.html

są tu arkusze z wcześniejszych lat.
komentarz 9 lutego 2016 przez Noak Mądrala (5,900 p.)
Ja też piszę maturę z informatyki w tym roku :) O ile z c++ nie mam problemu to z accesem i exelem trochę kłopotów jest.
komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
Hehe, no to bratnia dusza :) Stronkę znam, ale dotychczas wykorzystywałem ją jedynie do przypominania algorytmów. Na pewno przejrzę te arkusze z poprzednich lat. Ty tylko z nich się uczysz?
komentarz 9 lutego 2016 przez Noak Mądrala (5,900 p.)
Głównie tak. Strona jest stworzona przez mojego nauczyciela informatyki. Do matury trzeba ćwiczyć, a zadania z exela i accesa chyba trudno znaleźć, więc z nauczycielem omawiamy zadania z poprzednich matur.

Co to algorytmów to bardziej się przydadzą do części teoretycznej. Bo w praktycznej to i tak trzeba samemu kombinować (to tylko takie moje spostrzeżenie).
komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
Ja ze swojej strony mogę Ci polecić tę stronę: http://www.maturainformatyka.pl/

Są tam rozwiązania zadań z poprzednich matur wraz z opisem, są też z excela i accessa :)

No i jeszcze polecę Ci ten zbiór zadań od CKE, są tam też zadania z excela i accessa z rozwiązaniami: http://www.cke.edu.pl/images/_EGZAMIN_MATURALNY_OD_2015/Materialy/Zbiory_zadan/Matura_Zbi%C3%B3r_zada%C5%84_Informatyka.pdf

 

I jeszcze mam pytanko, Ty chodzisz do liceum czy technikum? Obstawiam że technikum skoro masz informatykę :D

Ja chodzę do liceum i informatyki niestety nie mam już w ogóle :( co mnie trochę boli. Dlatego muszę się uczyć sam w domu. Dobrze że w szkole mam matematykę na wysokim poziomie, to może jakoś ta matura pójdzie :D
+1 głos
odpowiedź 9 lutego 2016 przez Porcupine Nałogowiec (31,560 p.)

Hej! 

Wieczorem będe miec trochę więcej czasu żeby sprawdzić, więc jeśli nikt do tego czasu nie udzieli satysfakcjonującej odpowiedzi to postaram się pomóc. Z rzeczy, które widzę teraz: 
 

  •  Wydaje mi się, że w zły sposób wczytujesz dane. Tak jakby wczytujesz tylko jeden, dziewiętnasty wiersz każdego obrazka. 
  • Fajnym pomysłem byłoby zastąpienie dwóch funkcji ile0() i ile1() jedną, ponieważ są one prawie identyczne. Mógłbyś zrobić funkcję, która będzie mieć dodatkowy paretr char znak; który w zależności od wywołanie będzie równy '0' lub '1'. 

 

Pozdrawiam,

komentarz 9 lutego 2016 przez Dronojad Obywatel (1,980 p.)
No właśnie z tym miałem mały problem, nie wiedziałem jak dokładnie sprawić aby program odczytywał dokładnie 20 linii z pliku wyjściowego dla każdego obrazka.

Dlatego dodałem tego ifa sprawdzającego czy i==19, jeśli tak to pobierz tą wartość ale nie wliczaj jej do wyniku. Myślałem że takie rozwiązanie będzie OK, no ale jak widać nie działa :(

Dodatkowo trzeba też pominąć ostatni znak w każdej linii pliku wyjściowego.

Dlatego do funkcji zliczającej jedynki i zera dodałem pętlę for, która wykonuje się do i<s.length()-1
0 głosów
odpowiedź 10 lutego 2016 przez Dronojad Obywatel (1,980 p.)

Chciałbym jeszcze zapytać jak to jest z tymi pustymi liniami w pliku wejściowym.

Czy trzeba je uwzględniać podczas wczytywania do programu czy nie?

Napisałem taki mały program dla testu, stworzyłem plik wejściowy z dwoma wierszami - pierwszy pusty i drugi z tekstem.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream wejscie("input.txt");
    string lala;
    wejscie >> zmienna;

    cout << zmienna;
    return 0;
}

Powyższy program wyświetlił tekst z drugiego wiersza. Czy dobrze myślę, że program ignoruje puste wiersze?

Podobne pytania

+1 głos
2 odpowiedzi 4,243 wizyt
pytanie zadane 7 stycznia 2016 w C i C++ przez stivi212 Nowicjusz (230 p.)
0 głosów
1 odpowiedź 2,863 wizyt
pytanie zadane 27 lutego 2018 w C i C++ przez Scypyon Gaduła (3,450 p.)
0 głosów
0 odpowiedzi 1,143 wizyt

92,624 zapytań

141,478 odpowiedzi

319,822 komentarzy

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

...