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

Matura 2020 zadanie 4.1

0 głosów
1,290 wizyt
pytanie zadane 26 kwietnia 2021 w C i C++ przez Pawolo122 Początkujący (330 p.)

Pomoże ktoś znaleźć błąd w zadaniu? Wynik dla pierwszego przykładu jest ok, a potem się wywala.

Zadanie 4.1: https://arkusze.pl/maturalne/informatyka-2020-czerwiec-matura-rozszerzona-2.pdf

Plik tekstowy: https://arkusze.pl/maturalne/informatyka-2020-czerwiec-matura-rozszerzona-zalaczniki.zip

bool czy_pierwsza(int a)
{
    if(a<2)
        return false;
    for(int i=2; i<a; i++)
    {
        if(a%i==0)
            return false;
    }
    return true;
}

void zadanie1()
{
    int a;
    string b;
    int max_r = INT_MIN;
    int max_j = INT_MIN;
    int max_k = INT_MIN;
    ifstream in("pary.txt");
    ofstream of("wyniki4.txt");

    for(int i=0; i<100; i++)
    {
        in >> a >> b;
        for(int j=2; j<a; j++)
        {
            for(int k=2; k<a; k++)
            {
                if(a>4 && a%2==0)
                {
                    if(czy_pierwsza(j) && czy_pierwsza(k) && j!=2 && k!=2)
                    {
                        if(a==(j+k))
                        {
                            int r = abs(k-j);
                            if(r>max_r)
                            {
                                max_r = r;
                                max_j = j;
                                max_k = k;
                            }
                        }
                    }
                }
            }
        }
        if(a>4 && a%2==0) cout << a << " " << max_j << " " << max_k <<" " <<  max_r<< endl;
    }
}

 

komentarz 27 kwietnia 2021 przez j23 Mędrzec (195,220 p.)

Może to:

int main()
{
    int a, max_r, max_j, max_k;
    
    ifstream in("przyklad.txt");
 
 	while ((in >> a).ignore(666, '\n')) {
        max_r = max_j = max_k = INT_MIN;
        
        if(a % 2) continue;
        
        for(int j = 2; j < a; j++) {
        	if(!czy_pierwsza(j)) continue;
        	
        	int k = a - j;
        	
        	if(czy_pierwsza(k)) {
                int r = abs(k - j);
                if(r > max_r) {
                    max_r = r;
                    max_j = j;
                    max_k = k;
                }
        	}
        }
        
        cout << a << " " << max_j << " " << max_k << '\n';
    }
}

 

komentarz 28 kwietnia 2021 przez Pawolo122 Początkujący (330 p.)
Ok, działa aczkolwiek wciąż nie widzę błędu w tamtym rozwiązaniu. Pewnie jakaś głupota.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 2,093 wizyt
pytanie zadane 22 kwietnia 2020 w Algorytmy przez ritit Nowicjusz (150 p.)
0 głosów
1 odpowiedź 846 wizyt
0 głosów
0 odpowiedzi 698 wizyt
pytanie zadane 13 maja 2021 w C i C++ przez szymal22 Nowicjusz (140 p.)

93,633 zapytań

142,558 odpowiedzi

323,058 komentarzy

63,141 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...