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

question-closed Zadanie z policzeniem ilości fragmentów dwu-cyfrowych WIĘKSZYCH OD 90. (matura)

Object Storage Arubacloud
0 głosów
72 wizyt
pytanie zadane 5 listopada 2023 w C i C++ przez Wojo772233 Początkujący (420 p.)
zamknięte 5 listopada 2023 przez Wojo772233

Rozwiązuję zadanie 3.1 z tegorocznej matury z informatyki. Należy dla każdego fragmentu składającego się z dwóch liczb, policzyć ile jest takich fragmentów zapisanych w systemie dziesiętnym które są większe od 90. Poprawną odpowiedzią jest 903 a mój program wypisuje 899. Program wydaje się być poprawnie napisany, a w dodatku dla testu przykładowego czyli dla pierwszych 100 wierszy wypisuje poprawny wynik czyli 13. Liczę na waszą pomoc Informatycy, oto kod:
 

#include <iostream>

#include <fstream>



using namespace std;



char A[10000+70];



int main()

{

    ifstream plik("pi.txt");

    int najmniejsza = 1000000;



    for(int i = 0; i < 10000; i++)

    {

        char znak;

        plik >> znak;

        A[i] = znak;

        //B[i] = znak;

    }



    char a = A[0];

    char b = A[1];

    int ile = 0;

    string fragment = "";

    fragment.push_back(a);

    fragment.push_back(b);

    int liczba_start = 0;



    for(int i = 0; i < fragment.size(); i++)

    {

        char znak = fragment[i];

        if(i == 0)

        {

            liczba_start += znak - '0';

        }

        else

        {

            if(i == 1)

            {

                liczba_start += (znak - '0') * 10;

            }

        }

    }

    if(liczba_start < najmniejsza && liczba_start > 90)

    {

        najmniejsza = liczba_start;

    }

    if(liczba_start > 90)

        ile++;



    for(int i = 2; i < 10000; i++)

    {

        liczba_start = 0;

        fragment = "";

        a = b;

        b = A[i];

        fragment.push_back(a);

        fragment.push_back(b);

       

        // sprawdzamy czy zapis jest liczbą większą niż 90

        for(int j = 0; j < fragment.size(); j++)

        {

            char znak = fragment[j];

            if(j == 0)

            {

                liczba_start += znak - '0';

            }

            else

            {

                if(j == 1)

                {

                    liczba_start += (znak - '0') * 10;

                }

            }

        }

        if(liczba_start > 90)

            ile++;

    }



    cout << ile << '\n';



    return 0;

}

 

komentarz zamknięcia: zadanie rozwiązanie.

1 odpowiedź

+1 głos
odpowiedź 5 listopada 2023 przez Wojo772233 Początkujący (420 p.)

Już wiem. Źle zamieniam ciąg znaków na int'a. Powinienem pierwszą cyfrę (minus '0' pomnożyć razy 10) a drugą dodać (-'0'). Fajnie że wyłapałem sam. Pozdro

Podobne pytania

0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 12 kwietnia 2018 w Java przez Moras Obywatel (1,620 p.)
0 głosów
0 odpowiedzi 628 wizyt
pytanie zadane 20 maja 2020 w Rozwój zawodowy, nauka, praca przez Zabijaka3230 Początkujący (300 p.)
0 głosów
1 odpowiedź 642 wizyt

92,757 zapytań

141,677 odpowiedzi

320,429 komentarzy

62,101 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

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!

...