Propuneri de teme pentru concursurile desktop

Propuneri de teme pentru concursurile desktop

Postby DarkByte » 02 Sep 2010, 13:03

Similar cu propunerile pentru web, dar pentru concursurile desktop.

Prima propunere:
Sa se parseze un fisier sursa (codul sursa) si sa fie indentat corespunzator (nu conteaza in ce limbaj - dar trebuie specificat limbajul pentru care poate fi folosit).

Se puncteaza aspectul fisierului de iesire.

Nu conteaza aspectul programului sau in ce fel isi primeste parametrii.
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 136

Re: Propuneri de teme pentru concursurile desktop

Postby jolgau » 12 Dec 2010, 14:46

Avem trei numere a,b,c.

Noi le introducem si calculatorul trebuie sa spuna care este cel mai mare,care este cel mijlociu si cel mai mic oricare numar ar fi a,b si c.

Dar fara sa se foloseasca functia "for"

Ex: a>b<c
0,0p / 0 votes
Last edited by jolgau on 12 Dec 2010, 16:30, edited 1 time in total.
User avatar
jolgau
Bit
 
Joined: 11 Dec 2010
Status: 0

Re: Propuneri de teme pentru concursurile desktop

Postby DarkByte » 12 Dec 2010, 15:26

Mi se pare cam usor pentru concursuri, dar sa vedem ce zic si altii :)
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 136

Re: Propuneri de teme pentru concursurile desktop

Postby sventek » 12 Dec 2010, 16:43

De ce sa nu dam cate o sansa la fiecare sugestie, chiar daca e foarte simpla.


L.E. (-- 12 Dec 2010, 15:43 --)

Gigel este elev in clasa a IX-a si a participat la un concurs de informatica. La acelasi concurs au mai participat inca n concurenti din toata tara. Stiind ca fiecare concurent are un identificator format din 3 cifre: prima cifra reprezinta orasul (Gigel este in orasul 4), a doua cifra reprezinta judetul (Gigel este in judetul 7) si a treia cifra reprezinta sexul (0 pentru masculin si 1 pentru feminin).

Cerinta

Scrieti un program care sa determine care concurenti sunt din orasul si judetul in care este si Gigel, sunt de sexul masculin si au luat peste 50 de puncte.

Date de intrare

Din fisierul concurs.in se citesc de pe prima linie se citeste numarul natural n iar de pe urmatoarele n linii se citesc d (identificatorul) fiecarui concurent si p (punctajul acestuia).

Date de iesire

In fisierul concurs.out se vor scrie pe fiecare linie numarul de concurenti care indeplinesc cerinta.

Restrictii

3≤ n ≤1000
100≤ i ≤999
1≤ p ≤100

Exemplu

concurs.in
6
250 25
470 65
651 3
911 100
360 56
470 16

concurs.out
1

P.S. O problema destul de buna pentru incepatori.
P.S.2 De indicatii nu cred ca este nevoie.
0,0p / 0 votes
User avatar
sventek
Bit
 
Joined: 04 Feb 2010
Status: 2

Re: Propuneri de teme pentru concursurile desktop

Postby cata45 » 15 Jun 2011, 18:33

Gicu a primit la matematica o tema de vacanta de n exercitii. Fiecare exercitiu are o anumita cerinta,
dar lui Gicu ii e asa de lene incat nici nu citeste cerintele, insa a auzit in clasa ca la fiecare exercitiu se
dau 5 numere si trebuie sa completeze cu inca 3 daca acestea sunt in progresie aritmetica, geometrica
sau daca sunt numere fibb. Gicu nici nu vrea sa se gandeasca la tema in timpul vacantei asa ca va roaga sa i-o rezolvati.

gicu.in
2
1 2 3 4 5
2 4 6 8 10

gicu.out
6 7 8
12 14 16
0,0p / 0 votes
You are unique, just like everyone else...
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Location: Campulung Romania AG
Status: 9

Re: Propuneri de teme pentru concursurile desktop

Postby DarkByte » 15 Jun 2011, 18:39

Good one, I like it :D
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 136

Re: Propuneri de teme pentru concursurile desktop

Postby cata45 » 15 Jun 2011, 19:56

Ma gandeam sa pun si "Numerele date nu au mai mult de 64 cifre" :"> dar oricum numerele fibb cresc extrem de repede. fib(50)=multe cifre, dar incape in long long.
0,0p / 0 votes
You are unique, just like everyone else...
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Location: Campulung Romania AG
Status: 9

Re: Propuneri de teme pentru concursurile desktop

Postby DarkByte » 15 Jun 2011, 20:18

Merge chiar mai departe pe long long - din cate imi amintesc, peste 90. However, 64 cifre e mult peste long long - nu face confuzii !
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 136

Re: Propuneri de teme pentru concursurile desktop

Postby Mihai » 15 Jun 2011, 20:28

Stai linistit Victor, sunt *sigur* că se referea la 64 de cifre în baza 2 :)).
0,0p / 0 votes
User avatar
Mihai
Byte
 
Joined: 29 Dec 2009
Status: 25

Re: Propuneri de teme pentru concursurile desktop

Postby cata45 » 15 Jun 2011, 21:11

Problema este destul de simpla. Si ma refeream la 64 de cifre in baza 10 pentru a lucra cu numere mari. long long e pana la 2^64.
0,0p / 0 votes
You are unique, just like everyone else...
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Location: Campulung Romania AG
Status: 9

Re: Propuneri de teme pentru concursurile desktop

Postby Mihai » 15 Jun 2011, 21:30

Atât eu cât și Victor am înțeles din postul tău că un număr de 64 de cifre ar încăpea pe long long - nu spun că asta ai zis tu, spun doar că asta s-a înțeles.
long long e pana la 2^64

Ținând cont de faptul că numerele ar putea fi și negative (în cazul în care este vorba de o progresie aritmetică sau geometrică), folosești un bit pentru semnul lor. Deci numerele vor fi în intervalul [-2^63,2^63) - ca o observație la afirmația ta de mai sus :).
0,0p / 0 votes
User avatar
Mihai
Byte
 
Joined: 29 Dec 2009
Status: 25

Re: Propuneri de teme pentru concursurile desktop

Postby DarkByte » 15 Jun 2011, 21:46

cata45 wrote:Problema este destul de simpla. Si ma refeream la 64 de cifre in baza 10 pentru a lucra cu numere mari. long long e pana la 2^64.

2^64 ... nu 10^64 (care are, though, 65 de cifre). 2^64 = 18446744073709551616 (si imparti asta la 2 daca folosesti numere cu semn) ... nici pe departe 64 de cifre.
0,0p / 0 votes
User avatar
DarkByte
11011011
 
Joined: 29 Dec 2009
Status: 136

Re: Propuneri de teme pentru concursurile desktop

Postby Mihai » 15 Jun 2011, 21:50

^
Cred (sau sper) că prin "a lucra cu numere mari" nu se referea la tipul de date long long ci la o implementare artificială cum e aceasta.
0,0p / 0 votes
User avatar
Mihai
Byte
 
Joined: 29 Dec 2009
Status: 25

Re: Propuneri de teme pentru concursurile desktop

Postby sharky92 » 15 Jun 2011, 22:25

Muzeu

Un muzeu are forma patratica si contine N*N camere ce pot fi vizitate. Unele camere sunt deschise si contin opere de arta, altele sunt inchise (sunt folosite pentru alte scopuri). In unele din camerele libere, se afla paznici. Directorul muzeului se teme de eventualitatea unei spargeri si de aceea doreste sa evalueze cat de bine au fost asezati paznicii in camerele libere. Mai precis, el doreste sa afle, pentru fiecare camera libera, care este distanta minima pana la cel mai apropiat paznic (numarul minim de camere prin care trebuie sa intre un paznic pentru a ajunge la camera respectiva). Paznicii se pot deplasa numai in camerele libere din Nord, Est, Sud sau Vest (cu conditia sa nu paraseasca muzeul).

Date de Intrare

Pe prima linie a fisierului muzeu.in se afla numarul intreg N, reprezentand numarul de linii (si de coloane) ale muzeului (muzeul avand N*N camere). Urmatoarele N linii contin cate N caractere fiecare:

`.' pentru camera libera in care nu se afla paznic
`P' pentru camera libera in care se afla paznic
`#' pentru camera inchisa (prin care nu pot trece nici paznicii, dar in care nu pot intra nici hotii)

Date de Iesire

In fisierul muzeu.out veti afisa N linii, fiecare din ele continand N numere intregi (separate prin spatii). Fiecare numar afisat corespunde camerei de pe linia si coloana corespunzatoare din fisierul de intrare. Pentru fiecare camera libera veti afisa distanta minima pana la cel mai apropiat paznic (sau -1 daca nici un paznic nu poate ajunge in aceasta camera). Pentru camerele inchise, veti afisa -2.

muzeu.in
8
...#....
#..#..#.
.##.P..#
..#.#.#.
........
........
###...##
..P.....

muzeu.out
-1 -1 -1 -2 2 3 4 5
-2 -1 -1 -2 1 2 -2 6
8 -2 -2 1 0 1 2 -2
7 6 -2 2 -2 2 -2 6
6 5 4 3 4 3 4 5
6 5 4 3 4 4 5 6
-2 -2 -2 2 3 4 -2 -2
2 1 0 1 2 3 4 5
0,0p / 0 votes
User avatar
sharky92
Bit
 
Joined: 09 Nov 2010
Status: 2

Re: Propuneri de teme pentru concursurile desktop

Postby cata45 » 16 Jun 2011, 22:28

^^ da, la asa ceva ma refeream. Stiu ca 2^64 are mult mai putin de 64 de cifre.
^ Ma gandeam ca ar fi bine ca la problmele propuse sa nu existe solutii pe net. ( http://infoarena.ro/problema/muzeu ) -printre comentariile de la acea problema exista solutie completa. [-X
0,0p / 0 votes
You are unique, just like everyone else...
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Location: Campulung Romania AG
Status: 9

Re: Propuneri de teme pentru concursurile desktop

Postby cata45 » 02 Jan 2012, 22:52

Se dau N puncte de coordonate x,y in ordine trigonometrica si un punct M de coordonate Xm Ym. Sa se afiseze mesajul " YES" daca M apartine poligonului ale carui varfuri sunt cele N puncte date sau mesajul "NO" in caz contrar. :)
0,0p / 0 votes
You are unique, just like everyone else...
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Location: Campulung Romania AG
Status: 9

Re: Propuneri de teme pentru concursurile desktop

Postby cata45 » 14 Jan 2012, 19:19

Aici este rezolvarea la problema propusa de mine mai sus. :)
Am calculat si aria...
  1. #include<fstream>
  2. #include<iomanip>
  3. #include<cmath>
  4. using namespace std;
  5. #define IN "poligon.in"
  6. #define OUT "poligon.out"
  7. #define MaxN 1000
  8. fstream f(IN, ios::in), g(OUT, ios::out);
  9. int M_X, M_Y, n, i, A1, N_X, N_Y, I;
  10. struct{
  11.     int x;
  12.     int y;
  13. }point[MaxN];
  14. int Area(int n, int x, int y)
  15. {
  16.     int i;
  17.     int A=0;
  18.     for(i=1; i<=n; i++)
  19.         A+=(x*point[i].y)+(point[i].x*point[i+1].y)+(point[i+1].x*y)-(point[i].x*y)-(point[i+1].x*point[i].y)-(x*point[i+1].y);
  20.     return A;
  21. }
  22. int Count_Intersection(int mx, int my, int nx, int ny, int n)
  23. {
  24.     int i, i1, i2;
  25.     int c=0;
  26.     for(i=1; i<=n; i++)
  27.     {
  28.         if(point[i].x>mx || point[i+1].x>mx)
  29.         {
  30.             i1=(mx*ny)+(nx*point[i].y)+(point[i].x*my)-(nx*my)-(point[i].x*ny)-(mx*point[i].y);
  31.             if(i1<0) i1=-1;
  32.             else if(i1==0) i1=0;
  33.             else i1=1;
  34.            
  35.             i2=(mx*ny)+(nx*point[i+1].y)+(point[i+1].x*my)-(nx*my)-(point[i+1].x*ny)-(mx*point[i+1].y);
  36.             if(i2<0) i2=-1;
  37.             else if(i2==0) i2=0;
  38.             else i2=1;
  39.            
  40.             if(i1 != i2 && i1!=0 && i2!=0)
  41.                 c++;
  42.         }
  43.     }
  44.     return c;
  45. }
  46. int main()
  47. {
  48.     f>>n;
  49.     for(i=1; i<=n; i++)
  50.         f>>point[i].x>>point[i].y
  51.     f>>M_X>>M_Y;
  52.     f.close();
  53.    
  54.     n++;
  55.     point[n].x=point[1].x;
  56.     point[n].y=point[1].y;
  57.     N_X=M_X+1;
  58.     N_Y=M_Y;
  59.  
  60.     A1=Area(n,M_X,M_Y);
  61.     I=Count_Intersection(M_X,M_Y,N_X,N_Y,n);
  62.    
  63.     g<<"Area: "<<setprecision(5)<<fixed<<abs(double(A1/2))<<endl;
  64.     if(I%2==0) g<<"NO\n";
  65.     else g<<"YES\n";
  66.     g.close();
  67.     return 0;
  68. }


Mai propune cineva concurs? Parca imi e dor de asa ceva ... :)
0,0p / 0 votes
You are unique, just like everyone else...
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Location: Campulung Romania AG
Status: 9

Re: Propuneri de teme pentru concursurile desktop

Postby jolgau » 14 Jan 2012, 20:54

Am eu subiectele si testele de la olimpiada de informatica faza locala Cluj clasele 9 - 12...daca doriti putem sa le facem ca si concurs...
0,0p / 0 votes
User avatar
jolgau
Bit
 
Joined: 11 Dec 2010
Status: 0

Re: Propuneri de teme pentru concursurile desktop

Postby cata45 » 14 Jan 2012, 20:59

Pai atunci selecteaza o problema si propune urmatorul concurs.
0,0p / 0 votes
You are unique, just like everyone else...
User avatar
cata45
Byte
 
Joined: 02 Sep 2010
Location: Campulung Romania AG
Status: 9


Return to Concursuri de programare desktop

Who is online

Users browsing this forum: No registered users and 0 guests