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

Matura 2014 Grudzien

Object Storage Arubacloud
+1 głos
1,388 wizyt
pytanie zadane 12 lutego 2017 w C i C++ przez silnyjakzubr Nowicjusz (240 p.)
edycja 12 lutego 2017 przez silnyjakzubr

Witam,
Mam problem z zadaniem 5.1 z matury próbnej 2014/2015:

Mateusz cały rok przygotowuje się do zawodów sportowych w skoku w dal. Codziennie
trenuje, a wynik – długość najdłuższego skoku podaną w centymetrach – zapisuje w pliku
tekstowym dziennik.txt. W pliku tym znajduje się 310 liczb odpowiadających
długościom najlepszych skoków Mateusza w kolejnych dniach treningowych. Każda liczba
jest zapisana w osobnym wierszu.

Przykład:
436
571
569
435

Pozytywną serią treningową Mateusz nazywa każdy ciąg kolejnych dni treningowych,
w czasie których uzyskuje on każdego następnego dnia treningu lepszy rezultat niż dnia
poprzedniego i którego to ciągu nie można przedłużyć (jest to ostatni zanotowany wynik albo
wynik z następnego dnia jest gorszy).

Przykład:
478 475 470 480 481 481 475 477 480 482 470
W tym przypadku najdłuższa pozytywna seria treningowa (podkreślona) trwała 4 dni,
a Mateusz w jej trakcie poprawił swój wynik o 482–475=7 centymetrów.

W wybranym przez siebie języku programowania napisz program, za pomocą którego
uzyskasz odpowiedzi na poniższe pytania.

Zadanie 5.1.
Ile Mateusz miał pozytywnych serii treningowych dłuższych niż 3 dni?

Napisalem taki kod:

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


int main()
{
    int a[310];
    int licznik1=1;
    int licznik2=0;
    ifstream dane;
    dane.open("dziennik.txt");
    for(int i=0;i<310;i++)
    {
        dane>>a[i];
    }
    for(int i=0;i<310;i++)
    {
        if(a[i]<a[i+1])
        {
            licznik1++;
            continue;
        }
        if(licznik1>3)
        {
            licznik2++;
            licznik1=1;
        }
        else
        {
            licznik1=1;
        }
    }
    cout<<licznik2;
}

 

Wychodzi 11, a w odpowiedziach jest 14. 

 

Link do danych: DANE

komentarz 12 lutego 2017 przez Ehlert Ekspert (212,670 p.)

Polecam Ci nie deklarowac statycznych tablic na maturze. Zdaza się że w "sprawdzonym" pliku są puste linie albo po ostatniej z danymi jest jeszcze \n. 

Używaj std::vector

2 odpowiedzi

0 głosów
odpowiedź 12 lutego 2017 przez Knayder Nałogowiec (37,640 p.)
Nie jest to raczej bezpośredni powód błędu ale:

for(int i=0;i<310;i++)
{
    if(a[i]<a[i+1])
    ...
}

W momencie w którym i==309, czyli największa możliwa wartość w tej pętli to:
if(a[309] < a[309+1]) sprawia że odwołujesz się do elementu 310 tablicy, której ostatnim elementem jest 309.
Pozdrawiam
0 głosów
odpowiedź 13 lutego 2017 przez silnyjakzubr Nowicjusz (240 p.)
Sprawdziłem klucz z innej strony i wynik to 11, czyli rozwiazanie zdaje sie prawidłowe. Zamykam

Podobne pytania

0 głosów
2 odpowiedzi 3,205 wizyt
pytanie zadane 1 lutego 2016 w C i C++ przez Drakusman Nowicjusz (150 p.)
0 głosów
5 odpowiedzi 1,228 wizyt
pytanie zadane 19 marca 2016 w C i C++ przez Hannn Nowicjusz (190 p.)
0 głosów
1 odpowiedź 415 wizyt
pytanie zadane 9 kwietnia 2021 w C i C++ przez Pawolo122 Początkujący (330 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...