Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

SPOJ- liczby pierwsze

Ostatnio zmodyfikowano 2016-05-18 18:48
Autor Wiadomość
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:
C/C++
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?
P-148226
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.
P-148228
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.
C/C++
#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
P-148239
carlosmay
» 2016-05-15 01:01:12
Chodziło mi o to http://pl.spoj.com/problems/SUMA/ zadanie.
"Drobne" niedopatrzenie.

P-148240
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!!!

C/C++
#include <iostream>
int main() {
    int liczba, suma = 0;
    while( std::cin >> liczba ) {
        //ładuj liczbę do tablicy, zdejmni liczbę z tablicy. To są zbędne działania
        suma += liczba;
        std::cout << suma << std::endl;
    }
}



jeszcze sytuację gdy najpierw czytam do tablicy a potem obrabiam tablicę bym zrozumiał
C/C++
#include <iostream>
#include <vector>
using namespace std;

int main() {
   
    vector < int > tablica;
    int liczba;
    while( cin >> liczba ) tablica.push_back( liczba );
    // wczytałem do tablicy a potem ją obrabiam
    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.
C/C++
#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 ) {
        //ładuj liczbę do tablicy, zdejmni liczbę z tablicy. To są zbędne działania
        suma += liczba;
        cout << suma << endl;
    }
}
P-148244
carlosmay
» 2016-05-15 09:30:13
Do sumowania:
int sum = std::accumulate( vec.cbegin(), vec.cend(), 0 );
P-148247
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!
P-148383
1 « 2 »
Poprzednia strona Strona 2 z 2