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

Oczekiwano EOLN, wczytano EOF a oczekiwano 1

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
1,356 wizyt
pytanie zadane 13 grudnia 2021 w C i C++ przez Xodi Początkujący (280 p.)

Mam pewien problem, mianowicie, sędzia oczekuje EOLN, a czasami przyjmuje EOF.

Jak ten drugi błąd jestem w stanie zrozumieć to oczekiwanie EOLN nie ma dla mnie sensu.

Proszę o pomoc.

Zadanie:

Napisz program, który wczyta listę podzielników obydwu liczb i znajdzie odpowiedź na postawione wyżej pytanie.

Dane wejściowe:

Pierwszy wiersz danych wejściowych zawiera jedną liczbę naturalną n oznaczającą ilość wszystkich podzielników obydwu liczb (2 ¬ n ¬ 128). Kolejny wiersz zawiera n liczb naturalnych (z zakresu od 1 do 104 ) – podzielników obydwu liczb podanych w losowej kolejności. Liczby w wierszu oddzielone są pojedynczymi odstępami.

Wynik programu:

Program powinien wypisać wiersz tekstu zawierający dwie liczby naturalne, których podzielniki wczytano. Liczby powinny być oddzielone pojedynczym odstępem i wypisane w kolejności nierosnącej.

Przykład :

#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;





int main()
{   
    int n;
    cin >> n;
    vector<int>tab2(n);
    unordered_map<int,int>tab;
    int w;
    for (int i = 0; i < n; i++) {
        cin >> w;
        tab2[i] = w;
        tab[w] = 1;
    }
   
    
    
    bool end=0;
    int b = 0;
   

    for (;;) { // main loop
        end = true;
        b = 0;

        for (auto a : tab) {// najwieksza
            if (a.second == 0) {
                continue;
            }
            else if (b < a.first) {
                b = a.first;
            }
        }cout << b;

        for (auto t : tab2) { // dzielenie
            if (tab[t] == 0) {
                continue;
            }
            else if (b % t == 0) {
                tab[t] = 0;
            }

            else {
                end = false;
                tab[t] = 1;
            }
        }






        if (end == true) {
            break;
        }
        cout << " ";


        //-------------------------------------

    }
    return 0;
}

Dla danych wejściowych: 12 4 2 1 1 5 10 24 8 12 2 6 3 prawidłowym wynikiem jest: 24 10 Istotnie, liczby 1, 2, 3, 4, 6, 8, 12 oraz 24 są podzielnikami liczby 24, zaś liczby 1, 2, 5 oraz 10 są podzielnikami liczby 10.

komentarz 13 grudnia 2021 przez Oscar Nałogowiec (29,360 p.)
Nie wiem, w jakim środowisku uruchamiasz program, ale przyjęte jest, że program kończy swoje wyniki nową linią. Inaczej, taki program uruchomiony w konsoli spowoduje że prompt doklei się do wyników programu.
komentarz 14 grudnia 2021 przez Xodi Początkujący (280 p.)
edycja 14 grudnia 2021 przez Xodi

No ok, tylko nie wiem co z tym dalej zrobić.

Zapomniałem jeszcze dodać 1 istotną rzecz,

 

  • 1 wczytano EOF, a oczekiwano '1'
  • 3 wczytano EOF, a oczekiwano '1'
  • 4 wczytano EOF, a oczekiwano '1'
  • 5 wczytano EOF, a oczekiwano '1'
  • 6 wczytano EOF, a oczekiwano '1'
  • 8 wiersz 1: wczytano '30', a oczekiwano EOLN
  • 9 wiersz 1: wczytano '8', a oczekiwano EOLN
  • 11 wiersz 1: wczytano '8', a oczekiwano EOLN
  • 15 wiersz 1: wczytano '71', a oczekiwano EOLN
  • 16 wiersz 1: wczytano '2', a oczekiwano EOLN
  • 17 wiersz 1: wczytano '24', a oczekiwano EOLN
  • 18 wczytano EOF, a oczekiwano '1'
  • 20 wiersz 1: wczytano '10', a oczekiwano EOLN
  • 21 wiersz 1: wczytano '160', a oczekiwano EOLN
  • 22 wiersz 1: wczytano '172', a oczekiwano EOLN
  • 23 wiersz 1: wczytano '12', a oczekiwano EOLN
  • 24 wiersz 1: wczytano '58', a oczekiwano EOLN
  • 25 wiersz 1: wczytano '88', a oczekiwano EOLN
  • 26 wiersz 1: wczytano '792', a oczekiwano EOLN
  • 27 wiersz 1: wczytano '450', a oczekiwano EOLN
  • 29 wiersz 1: wczytano '304', a oczekiwano EOLN
  • 30 wiersz 1: wczytano '2968', a oczekiwano EOLN

takie wyniki dostałem 

komentarz 14 grudnia 2021 przez Xodi Początkujący (280 p.)

@Oscar, Dobra już wiem o co chodzi. Faktycznie twoja odpowiedz bardzo pomogła, bo teraz wiem, że program po prostu się nie kończył kiedy trzeba, i tak w poleceniu jest napisane "program powinien wypisać DWIE liczby naturalne, czyli nawet gdy wszystkie się dzielą przez jedną liczbę trzeba dopisać jeszcze kolejną.

Dzięki za pomoc :)

komentarz 21 października 2023 przez Jerzy Użytkownik (950 p.)
Co wprowadziłeś aby wprowadzić EOLN?

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

Podobne pytania

0 głosów
1 odpowiedź 485 wizyt
pytanie zadane 16 lutego 2023 w Python przez skyynet Początkujący (410 p.)
0 głosów
1 odpowiedź 1,119 wizyt
pytanie zadane 13 marca 2019 w JavaScript przez west_kolo Nowicjusz (230 p.)
0 głosów
1 odpowiedź 193 wizyt

93,440 zapytań

142,431 odpowiedzi

322,679 komentarzy

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

...