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

Matura 2020 zadanie 4.1

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,078 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,260 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 1,750 wizyt
pytanie zadane 22 kwietnia 2020 w Algorytmy przez ritit Nowicjusz (150 p.)
0 głosów
1 odpowiedź 728 wizyt
0 głosów
0 odpowiedzi 513 wizyt
pytanie zadane 13 maja 2021 w C i C++ przez szymal22 Nowicjusz (140 p.)

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...