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

Problem z rozwiązaniem zadania

Ostatnio zmodyfikowano 2011-11-20 12:07
Autor Wiadomość
programista12
Temat założony przez niniejszego użytkownika
Problem z rozwiązaniem zadania
» 2011-11-20 11:32:31
Zapisałem się na Olimpiadę Informatyczną Gimnazjalistów. Dla treningu postanowiłem zrobić zadania z tej strony: http://informatyka.wroc.pl/konkursywpi/stale/zadania?page=4. Udało mi się napisać algorytm, ale nie działa tak, jak trzeba. W przykładzie ostatnia liczba ma być 50, ale u mnie wychodzi -66. Dodam, że pierwszy raz robię tego typu zadanie. Z góry dzięki za pomoc. Oto kod programu:
C/C++
#include <iostream>
#include <vector>
#include <conio.h>
#include <math.h>
#include <time.h>

using namespace std;

struct Stworek
{
    int k, p;
    long long w;
    Stworek()
    {
        k = p = 0;
        w = 0;
    }
    Stworek( int nk, long long nw, int np )
    {
        k = nk;
        w = nw;
        p = np;
    }
};

void main()
{
    int ilosc_stworkow = 0;
    vector < Stworek > stworki;
    cout << "Podaj ilosc stworkow: ";
    cin >> ilosc_stworkow;
    if( ilosc_stworkow < 1 || ilosc_stworkow > 100 )
    {
        cout << "Podano zbyt mala lub zbyt duza liczbe!\n";
        _getch();
        return;
    }
    for( int i = 0; i < ilosc_stworkow; ++i )
    {
        int tmp_k = 0, tmp_p = 0;
        long long tmp_w = 0;
        cout << "Podaj wartosci dla k, w, p: ";
        cin >> tmp_k;
        cin >> tmp_w;
        cin >> tmp_p;
        if( tmp_k < 1 || tmp_k > 1000000000 || tmp_p < 1 || tmp_p > 1000000000 )
        {
            cout << "Podano niewlasciwe liczby!\n";
            _getch();
            return;
        }
        stworki.push_back( Stworek( tmp_k, tmp_w, tmp_p ) );
        tmp_k = tmp_p = 0;
        tmp_w = 0;
    }
   
    int c1, c2;
    c1 = clock();
    for( int i = 0; i < ilosc_stworkow; ++i )
    {
        int ilosc_lapek =( int ) pow(( double ) stworki[ i ].k,( double ) stworki[ i ].w );
        cout << ilosc_lapek % stworki[ i ].p << endl;
    }
    c2 = clock();
    cout << "Czas wykonania: " << c2 - c1 << endl;
    _getch();
    return;
}
P-44377
szyx_yankez
» 2011-11-20 12:07:32
Kilka ważnych informacji dla Ciebie, jeżeli chcesz brać udział w konkursach informatycznych/algorytmicznych.
Po 1, konkursy informatyczne nie sprawdzają znajomości języka, a wiedzę z zakresu algorytmiki, matematyki, fizyki - trzeba mieć o tym trochę pojęcia, nie tak hop siup, w przeciwnym wypadku nawet najprostszego zadania nie zrobisz, choćbyś język znał perfekcyjnie.
Po 2, kodu nie sprawdzają ludzie tylko maszyny(automat), zapis
cout << "Podaj ilosc stworkow: ";
 jest co najmniej nie na miejscu - zadanie nie zostanie zaliczone,
To samo z:
C/C++
if( ilosc_stworkow < 1 || ilosc_stworkow > 100 )
{
    cout << "Podano zbyt mala lub zbyt duza liczbe!\n";
    _getch();
    return;
}
Informacja
(1 ≤ t ≤ 100)
 co najwyżej podpowiada Ci jakiego typu zmiennej użyć - nic nie musisz sprawdzać.(no chyba, że w zadaniu zostanie to wyszczególnione)
Masz podany przykład:
Wejście:
3
2 2 7
3 4 97
1234 567891011121314 97
Wyjście
4
81
50
 Widzisz tam jakieś zdania?


Po 3,
C/C++
void main()
return;
Co to? Każdy normalny program w c++ musi zwracać int'a - zadanie niezaliczone.

Po 4,
cin, cout
 nie tędy droga.

I wiele innych błędów których mi się nie chcę wymieniać.
Po za tym na trening polecam http://pl.spoj.pl/ jeżeli rozwiążesz, zaliczysz - powiedzmy 20 zadań(łatwych) to można mieć nadzieje że ten np. 600/1000 osób będziesz.

P-44380
« 1 »
  Strona 1 z 1