Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie]Jak rozwiązywać zadania ze SPOJ


Rekomendowane odpowiedzi

Opublikowano

Zacząłem dziś bawić się w serwisie polski spoj tylko że mam mały problem ze zrozumieniem jak te zadania rozwiązywać! 

Dla przykładu proste zadanie:

http://pl.spoj.com/problems/RNO_DOD/

Wykonałem je można powiedzieć po swojemu bo SPOJ go nie akceptuje i wywala błędną odpowiedz, tylko dla tego że ja nie wiem jak to działa! 

 

Mój kod: 

#include <iostream>

using namespace std;
int a,b,c,d,e,f,g;
int main()
{
    cin>>a; cin>>b; cin>>c; cin>>d; cin>>e;
    cout<<a+b+c+d+e<<endl;
    cin>>f; cin>>g;
    cout<<f+g<<endl;
    return 0;
}

W konsoli efekt jest okej bo najpierw wczytuje kolejno cyfry od 1 do 5 wyświetla mi wynik, a następnie podaje dwie cyfry -100 i 100 i pokazuje wynik! Na pierwszy rzut oka jest okej bo wyliczyło co trzeba, w pierwszym wychodzi 15, a w drugim 0, tylko że program sprawdzający na SPOJ tego nie rozumie! :) Może ktoś korzysta z tego serwisu i wytłumaczy mi jak te zadania rozwiązywać. Bo chciałbym korzystać z tego serwisu bo można się podszkolić w języku! 

 

PS: to jest kod uzyskany przy 3 próbie! 

Cześć...

Opublikowano

Bo żle rozwiązujesz, kod na szybko który teoretycznie działa:

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

int main() {
	int t;
	vector <int> sumy;
	cin >> t;
	for(int i = 0; i < t; i++) {
		sumy.push_back(0);
		int liczb;
		cin >> liczb;
		for(int j = 0; j < liczb; j++) {
			int temp;
			cin >> temp;
			sumy[0] += temp;
		}
	}
	for(int i = 0; i < t; i++) cout << sumy[i] << endl;
} 

Musisz pobrać wszystkie liczby, obliczyć sumę i ją podać na wyjściu. Nie wiesz ile zawsze będzie liczb...

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

źle zrozumiałeś treść zadania, to jest tak:

 

1. wczytujesz ilość testów i robisz pętlę która wykona się podaną ilość razy np.tak

int ile;
cin >> ile
for(int i = 0; i < ile; ++i)
{
}

Później co przebieg tej pętli podana jest ilość liczb do zsumowania, czyli możesz teraz

a) zalokować tablicę dynamiczną i zrobić drugą pętlę (mozna tez vector)

B) zrobić drugą pętle i w niej wczytujesz zmienną

 

Ja na Twoim miejscu wybrał bym a bo w końcu chcę się czegoś nauczyć.

//wewnatrz poprzedniej pętli
int dlTablicy;
cin >> dlTablicy;
int *tab = new int[dlTablicy]; //dynamicznie alokowana tablica, z uzyciem wskaznika
 
int suma = 0;
for(int j = 0; j < dlTablicy; ++j)
{
cin >> tab[j];
suma+=tab[j];
}

3. jak już stworzyłeś dynamiczną tablicę teraz ją musisz usunąć

delete [] tab;

cały kod by wyglądał tak (spróbuj sam rozwiązać nie zaglądając, choć i tak już bardzo dużo podpowiedziałem)

 

 

#include <iostream>

using namespace std;

int main()
{
    int testy;
    cin>>testy;
    for(int i = 0; i < testy; ++i)
    {
        int dlTablicy;
        cin >> dlTablicy;
        int *tab = new int[dlTablicy];
        int suma = 0;
        for(int j = 0; j < dlTablicy; ++j)
        {
            cin >> tab[j];
            suma+= tab[j];
        }
        delete[]tab;
        cout << suma << endl;
    }
    return 0;
}

 

 

 

zaglądaj na forum spoja i czytaj komentarze pod zadaniem to ci ułatwi zadanie

 

@@nie używaj zmiennych globalnych

Opublikowano

@1361622928-U485574.pngkrulcelulozy3

 

Ooo widzisz miałem zły tok rozumowania co do tych zadań.

Teraz już chyba będzie mi lepiej szło z rozwiązywaniem zadań (mam nadzieje) Przeanalizuje jeszcze twój kod i @OczkoSX i następnym razem może nie będę mieć problemów.

Cześć...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...