Skocz do zawartości


Zdjęcie

[c]spoj, zliczanie wystąpień


  • Zamknięty Temat jest zamknięty
10 odpowiedzi w tym temacie

#1 jarzabek89

jarzabek89

    Stały użytkownik

  • 284 postów

Napisano 11 11 2008 - 21:59

Witam.
Mam napisać taki program.
http://pl.spoj.pl/problems/KC004/
Napisałem to dla jednego zestawu, ale nie bardzo wiem jak przerobić program, tak by w pełni się zgadzał z treścią zadania.
Oto mój kod:

#include <stdio.h>
int main()
{
int a,b,c,d = 0;
scanf ("%d" ,&a);
scanf ("%d" ,&b);
while (b--)
{
scanf ("%d" ,&c);
if(a==c)
{d++;
}
}
printf ("%d" ,d);
return 0;
}


  • 0

#2 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 11 11 2008 - 22:30

a gdzie petla??

mozesz dac while(true) obejmujacy wszystko poczawszy od pierwszego scanfa a konczac na ostatnim printfie

a zamiast pierwszego scanfa dac warunek: if( scanf("%d", &a) == EOF ) return 0;


i w zasadzie ostatni return jest wtedy niepotrzebny..


wyjasnic cos??

edit:
aha i zapomnialem o czyms, znak nowej lini przy printfie i czyszczenie d, mam nadzieje ze rozuemisz o czym mowie..

  • 0

#3 jarzabek89

jarzabek89

    Stały użytkownik

  • 284 postów

Napisano 11 11 2008 - 22:57

Coś mi nie chce działać :)
Podaj kod już po wszystkich zmianach :)
  • 0

#4 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 11 11 2008 - 23:06

ehhh, wkradl sie blad, ale sam mogles do tego dojsc..
CODE-BOX
#include <stdio.h>
int main()
{
int a,b,c,d;
while(true) {
if( scanf ("%d", &a) == EOF ) return 0;
scanf ("%d", &:);
d=0;
while (b--)
{
scanf ("%d" ,&c) ;
if(a==c) d++;
}
printf ("%d\n" ,d);
}
}

  • 0

#5 jarzabek89

jarzabek89

    Stały użytkownik

  • 284 postów

Napisano 11 11 2008 - 23:11

aaa... d ja nie wyczyścił :D
Dzięki wielkie :) Piwo stawiam.

Edit:
Generalnie wszystko byłoby ok :) Nie wiem, czy treść zadania dobrze zrozumiałem. Najpierw podaje zestawy a później zwracane są wartości. A nie jak jest teraz, zestaw-wartość itd.

Ale ok, różnie można to interpretować:D Dzięki jeszcze raz :)
  • 0

#6 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 11 11 2008 - 23:25

tu nie chodzi o to czy najpierw wczytasz czy w czasie wczytywania bedziesz "wypluwal" dane, to jest tak na prawde nie wazne
zadaniem programu jest wypisanie prawidlowego wyniku na standardowe wyjscie, a to czy on zrobi to wczesniej czy pozniej to nie ma wiekszego znaczenia..
  • 0

#7 jarzabek89

jarzabek89

    Stały użytkownik

  • 284 postów

Napisano 11 11 2008 - 23:26

No racja :) Ma poprawnie zwracać dla x zestawów i zwraca.
  • 0

#8 adambak

adambak

    Nowy

  • 1 postów

Napisano 12 11 2008 - 22:35

Akurat na SPOJ-u odradzałbym używania pętli "while(true)", ponieważ kilka już razy mimo że kod mój zasługował na ACC dostał TLE :) używanie np.: "while(cin>>liczba)" (nie wiem jak to się tam u Was w zwykłym C pisze bo pozapominałem jego podstawy nawet) załatwia sprawę. Tak na przyszłość :)
  • 0

#9 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 12 11 2008 - 22:49

na jedno wychodzi, dales tylko przyklad skrocenia kodu, bo mozna zamiast tego ifa dac scanfa do while i koniec..
  • 0

#10 jarzabek89

jarzabek89

    Stały użytkownik

  • 284 postów

Napisano 13 11 2008 - 00:29

Pan profesor powiedział, że używanie EOF w tym przypadku jest bez sensu.Pętla ta generalnie nigdy się nie skończy, a jak się wpisze złą wartość dla warunków powstanie chaos itp.. W c jeszcze trzeba dopisać w zmiennych true=1, tak na marginesie, c++to skompiluje, c już nie.
  • 0

#11 fernandez

fernandez

    150% normy

  • 1 866 postów

Napisano 13 11 2008 - 09:36

nigdy sie nie skonczy jesli bedziesz wpisywal dane "z palca"
natomiast w zadaniach typu SPOJ, Potyczki Algorytmiczne itp. dane wejsciowe maja zawsze swoj koniec, bo sa przekierowywane z pliku na standardowe wejscie..
trudno zebys nacisnal za pomoca klawiatury "koniec strumienia"..

poza tym zawsze zakladamy ze dane wejsciowe sa poprawne, zupelnie co innego jest robic program "idiotoodporny" :)

  • 0

Zobacz więcej tematów z tagiem: język C



Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych