SPOJ- liczby pierwsze
Ostatnio zmodyfikowano 2016-05-18 18:48
sparklemo7ion Temat założony przez niniejszego użytkownika |
» 2016-05-14 22:59:54 1. To jak można inaczej zrobić taką tablicę, której rozmiar poznajemy dopiero w trakcie kompilacji, aby nic złego nie działo się z programem? 2. Czytałem też, o tablicach robionych za pomocą wektorów. Przykład: vector < int > vec; int x; while( cin >> x ) { vec.push_back( x ); }
Tylko pytanie.. Czy można taką pętlę zatrzymać inaczej niż poprzez wpisanie jakiejś litery do strumienia? |
|
carlosmay |
» 2016-05-14 23:05:21 1 nie ładuj w tablicę bo i po co. |
Tylko pytanie.. Czy można taką pętlę zatrzymać inaczej niż poprzez wpisanie jakiejś litery do strumienia? |
Dodaj do warunku pętli sprawdzanie licznika (w końcu liczba testów jest podana). Poza tym, zadania na spoju są do samodzielnego rozwiązywania, wymyślania algorytmów. Pomoc z zewnątrz, rzadko na dłużej zostaje w zwojach. |
|
sparklemo7ion Temat założony przez niniejszego użytkownika |
» 2016-05-15 00:53:02 Jakby była podana liczba testów to dodałbym taki warunek, ale np w pewnym zadaniu pisze: "Na wejście programu podana zostanie pewna nieokreślona, ale niewielka ilość małych liczb całkowitych". No i pomyślałem, że właśnie skorzystam z tych wektorów, tylko że pętla kończy się tylko wtedy jak podam jakiś znak, a wtedy kompilator spoja pewnie wywali mi błąd :P Tak, tak wiem, w miarę możliwości próbuje rozwiązywać sam. Algorytmy jedno, ale przede wszystkim nauka praktycznego programowania no i poznawanie jakichś nowych rzeczy bo na razie moja wiedza jest uboga :D EDIT: Chodziło mi o to http://pl.spoj.com/problems/SUMA/ zadanie. #include <iostream> #include <vector> using namespace std;
int main() { vector < int > vec; int liczby; int suma = 0; int i = 0; while( cin >> liczby ) { vec.push_back( liczby ); suma += vec[ i ]; cout << suma << endl; i++; } return 0; }
Zdziwienie. Mimo iż nie zatrzymałem pętli to spoj mi to uznał :p |
|
carlosmay |
» 2016-05-15 01:01:12 Chodziło mi o to http://pl.spoj.com/problems/SUMA/ zadanie. |
"Drobne" niedopatrzenie. |
|
mateczek |
» 2016-05-15 07:19:14 a co Cie tak napadło na te tablice !!! w prostych zadaniach w których nie są wogóle potrzebne!!! #include <iostream> int main() { int liczba, suma = 0; while( std::cin >> liczba ) { suma += liczba; std::cout << suma << std::endl; } } jeszcze sytuację gdy najpierw czytam do tablicy a potem obrabiam tablicę bym zrozumiał #include <iostream> #include <vector> using namespace std;
int main() { vector < int > tablica; int liczba; while( cin >> liczba ) tablica.push_back( liczba ); int suma = 0; for( int element: tablica ) { suma += element; cout << suma << endl; } }
ale ładować liczbę do tablicy. A zaraz potem ją od razu odczytać by dodać do sumy to trochu dziwne :P Nie ma potrzeby zatrzymywania pętli. Na spoju sama się zatrzyma gdy w strumieniu braknie danych. A u siebie na kompie możesz ctrl+D (linux) i strumień nie będzie czekał na kolejne dane. gdy cię to nie zadowala możesz skorzystać ze strstream jako pomocniczego strumienia. #include <iostream> #include<strstream> #include<string> using namespace std; int main() { int liczba, suma = 0; string s; strstream ss; getline( cin, s ); ss << s; while( ss >> liczba ) { suma += liczba; cout << suma << endl; } }
|
|
carlosmay |
» 2016-05-15 09:30:13 Do sumowania: int sum = std::accumulate( vec.cbegin(), vec.cend(), 0 ); |
|
sparklemo7ion Temat założony przez niniejszego użytkownika |
» 2016-05-18 18:48:32 Ha, dzięki za wyleczenie z tych tablic, teraz już myślę normalnie przed następnym zadaniem :P Bo gdy zobaczyłem "Wczytaj kilka liczb bla bla bla" to zawsze miałem gdzieś w głowie chęć, żeby te wszystkie zmienne pozapisywaać i mówiłem sobie "Aha! No to zrobimy tablice!" :D Dzięki za odpowiedzi! |
|
1 « 2 » |