» Utilizator
Salut, vizitatorule!

SkullBox este o comunitate formata din programatori si administratori de sisteme sau retele care iti sta la dispozitie cand ai o problema legata de calculatoare. Daca esti un utilizator existent, autentifica-te.

Daca nu te-ai inregistrat inca pe forum, alatura-te noua astfel marind comunitatea si ajutandu-i pe cei care au nevoie de informatii.

Daca te-ai inregistrat dar inca nu ai primit codul de activare, il poti cere aici.




Autentifica-te cu numele de utilizator si parola pentru a putea posta pe forum sau pentru a accesa ariile disponibile doar utilizatorilor inregistrati.
» Promovam
» Parteneri » Statistici
  • 59774 de mesaje.
  • 7153 de topicuri.
  • 1001 de utilizatori.
  •  
  • germaniaservis e ultimul utilizator inregistrat.
[Detalii]

 
Pagini: [1]
Print
[Incepatori][Concurs nr. 30] Turneu de sah [951 afisari]
emi
*


Mesaje: 1560
OfflineOffline


Se organizeaza un turneu de sah, la care participa n jucatori ( 2<=n<=20 ).
Fiecare jucator joaca o partida de sah cu toti ceilalti n-1 jucatori, dar nu mai mult de o partida pe zi.
Sa se organizeze turneul astfel incit numarul de zile de desfasurare a turneului sa fie minim.

Exemplu:
Jucatori: A,B,C,D.
Ziua 1: A cu B, C cu D
Ziua 2: A cu C, B cu D
Ziua 3: A cu D, B cu C

Se da un fisier de intrare sah.in in care e specificat numarul de jucatori, apoi numele lor optional ! (daca nu sunt specificate numele jucatorilor se vor afisa: jucator1, jucator2, .., jucator_n )
Exemplu:
sah.in
6
Emi
Agkelos
Claudiu
Payne
Smash
DarkByte

Se afiseaza in sah.out cine cu cine joaca:
sah.out
ziua1: Emi cu Agkelos; Claudiu cu Smash; Payne cu DarkByte
ziua2: Emi cu Claudiu; Agkelos cu DarkByte; Payne cu Smash
ziua3: Emi cu Payne; Agkelos cu Claudiu; Smash cu DarkByte
ziua4: Emi cu Smash; Agkelos cu Payne; Claudiu cu DarkByte
ziua5: Emi cu DarkByte; Agkelos cu Smash; Claudiu cu Payne
Logged
15-06-2009, 16:27 Twitt ::
Th3 P!mp
*


Mesaje: 186
OfflineOffline

WWW

salut emi .. sper ca nu are nimic ca am pus eu pt avansati ... a zis asera tw8 sa pun  Tongue

.. lasa si problema asta ... suna bine .. Tongue
Logged

15-06-2009, 16:47 Twitt ::
Claudiu
*


Mesaje: 1368
OfflineOffline

WWW

pana cand?
Logged

15-06-2009, 16:48 Twitt ::
Th3 P!mp
*


Mesaje: 186
OfflineOffline

WWW

pana cand?

pana cand sa lasi problema asta ? .. daca da eu zic ca ar fi destul o saptamana
Logged

15-06-2009, 16:51 Twitt ::
emi
*


Mesaje: 1560
OfflineOffline


Eu zic sa nu ne grabim, sa o lasam pina la sfirsitul lunii, si pe 1 iulie se voteaza.
Logged
15-06-2009, 16:57 Twitt ::
Claudiu
*


Mesaje: 1368
OfflineOffline

WWW

^ cum zice emi, nu toti avem destul timp liber Smile
Logged

15-06-2009, 17:00 Twitt ::
Th3 P!mp
*


Mesaje: 186
OfflineOffline

WWW

un mic test citeste doar numarul de jucatori de la tastatura ... si scrie intr-un fisier .. Tongue
Logged

15-06-2009, 20:32 Twitt ::
emi
*


Mesaje: 1560
OfflineOffline


Bine ca am pus concursul ca altfel nu ma apucam de problema asta  Laughing
Logged
17-06-2009, 07:14 Twitt ::
nosferatu
*


Mesaje: 67
OfflineOffline


Nu ar fii mai bine ca datele, respectiv nr. si numele jucatorilor, sa se citeasca de la tastatura?

le: ma  intrebam daca este neaparat nevoie ca datele sa se citeasca neaparat dintr-un fisier si nu de la tastatura...
Logged

Cantitatea de inteligenta este constanta pe pamant;;;populatia este in continua crestere.
17-06-2009, 13:58 Twitt ::
emi
*


Mesaje: 1560
OfflineOffline


^ de obicei la un concurs se dau niste seturi de date sub forma fisier.in si se cer rezultatele in fisier.out. Nu e inventia mea.
Logged
17-06-2009, 14:09 Twitt ::
emi
*


Mesaje: 1560
OfflineOffline


Pentru ca este concurs de incepatori, va dau o sugestie:

Code:
    | j1| j2| j3| j4| j5| j6| j7
----+---+---+---+---+---+---+---
 j1 | 7 | 1 | 2 | 3 | 4 | 5 | 6
----+---+---+---+---+---+---+---
 j2 |   | 2 | 3 | 4 | 5 | 6 | 7
----+---+---+---+---+---+---+---
 j3 |   |   | 4 | 5 | 6 | 7 | 1
----+---+---+---+---+---+---+---
 j4 |   |   |   | 6 | 7 | 1 | 2
----+---+---+---+---+---+---+---
 j5 |   |   |   |   | 1 | 2 | 3
----+---+---+---+---+---+---+---
 j6 |   |   |   |   |   | 3 | 4
----+---+---+---+---+---+---+---
 j7 |   |   |   |   |   |   | 5
in tabel este completat ziua cind jucatorul x joaca cu jucatorul y
in cazul in care n este impar, ce e pe diagonala se ignora
Logged
22-06-2009, 17:54 Twitt ::
nytr0gen



Mesaje: 4
OfflineOffline


Nu e terminat pentru ca nu ma lasa lenea sa fac un algoritm(mai bun) pentru numere pare Sad
Logged
28-06-2009, 17:21 Twitt ::
emi
*


Mesaje: 1560
OfflineOffline


Pentru ca nu imi place sa vad probleme neterminate...

In cazul tabelului de mai sus, ce e pe diagonala principala arata cind jucatorul x ia o pauza pentru n impar. Ok, dar in acea zi ar putea juca cu jucatorul numarul 8...  Big grin
Logged
28-06-2009, 18:30 Twitt ::
Th3 P!mp
*


Mesaje: 186
OfflineOffline

WWW

eu l-am facut altcumva nu cu matrice ... cu un for dublu ceva de genu'
i=0; i<n-1; i++ si j=i+1; j<n; j++
asa pur si simplu o sa ai [i, j] pentru toate jocurile ... singurul lucru ce va mai trebui de facut este sa le ordonezi pe zile Tongue
Logged

28-06-2009, 19:40 Twitt ::
emi
*


Mesaje: 1560
OfflineOffline


Well, se pare ca timpul a expirat.

Th3 P!mp nu a trimis sursa la ce a lucrat.
Programul afiseaza rezultate corecte pentru cazurile n = 2, 3, 4

Sursa lui nytr0gen:
Code:
#include <fstream>
#include <string>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))

using namespace std;

int main() {
int N;
string p[21];
int d[21][21];

ifstream fin("sah.in");
fin >> N;

if(N < 1 || 20 < N) return 0;

for(int i = 1; i <= N; i++) {
if(!fin.eof()) fin >> p[i];
if(p[i] == "") {
p[i] = "jucatorul";
if(i < 10) { p[i] += i+'0'; }
else       { p[i] += i/10+'0'; p[i] += i%10+'0';}
}
}

for(int l = 1; l <= N; l++)
for(int c = 1; c <= N; c++)
d[l][c] = 0;

for(int l = 2; l <= N; l++) {
for(int c = 1, x = l-1; c < l; c++, x++) {
if(x > N) x = 1;
d[l][c] = x;
}
}

ofstream fout("sah.out");

for(int i = 1; i <= N; i++) {
fout << "Ziua " << i << ": ";
for(int j = 1; j <= N; j++)
for(int x = 1; x < j; x++)
if(d[j][x] == i)
fout << p[min(x,j)] << " cu " << p[max(x,j)] << "; ";
fout << "\n";
}

fout.close();
fin.close();

return 0;
}

Functioneaza corect, dar nu optim pentru numar par de jucatori

Daca doriti sa vedeti si sursa mea:
Code:
Program C30;

var
  sah_in,sah_out:text;
  n,nz:word;
  jucator:array[1..20] of string;
  zile:array[1..20] of record
    p:byte; {partide =0 pentru inceput}
    joc:array[1..10] of record j1,j2:byte end;
  end;


Procedure Die(s:string);
begin
  writeln(s);
  writeln('Press Enter...');
  readln;
  halt;
end;

Procedure Init;
var i:word;
    nume:string;
begin
  assign(sah_in,'sah.in');
  {$i-} reset(sah_in); {$i+}
  if ioresult<>0 then Die('Nu am gasit fisierul SAH.IN');
  readln(sah_in,n);
  if (n<2) or (n>20) then Die('Numarul de jucatori trebuie sa fie intre 2 si 20');
  for i:=1 to n do begin
    str(i,nume); nume:='Jucator'+nume;
    if not eof(sah_in) then readln(sah_in,nume);
    jucator[i]:=nume;
  end;
  close(sah_in);
  for i:=1 to 20 do zile[i].p:=0;
end;

Procedure Run;
var i,j,z:word;
begin
  nz:=n;
  if not odd(n) then dec(nz);

  for i:=1 to nz do for j:=i to nz do begin
    z:=(i+j-2) mod nz; if z=0 then z:=nz;
    if(i<>j) then begin
      inc(zile[z].p);
      zile[z].joc[zile[z].p].j1:=i;
      zile[z].joc[zile[z].p].j2:=j;
    end else
    if (i=j) and (nz<n) then begin
      inc(zile[z].p);
      zile[z].joc[zile[z].p].j1:=i;
      zile[z].joc[zile[z].p].j2:=n;
    end;
  end;
end;

Procedure Done;
var z,p:word;
begin
  assign(sah_out,'sah.out');
  rewrite(sah_out);
  for z:=1 to nz do begin
    write(sah_out,'Ziua',z,': ');
    for p:=1 to zile[z].p do begin
      write(sah_out,Jucator[zile[z].joc[p].j1], ' cu ', Jucator[zile[z].joc[p].j2], '; ');
    end;
    writeln(sah_out);
  end;
  close(sah_out);
end;

begin
  Init;
  Run;
  Done;
end.
Logged
02-07-2009, 10:30 Twitt ::
Reclama
VIP

Hosting

Mesaje: 25.90
OnlineOnline

WWW
 

   Pe ABCDomenii: 250MB spatiu + 20GB trafic + 5 subdomenii = 0.95 €
 
 

The problem with troubleshooting is that trouble shoots back.
Azi 
Pages: [1]
Print
SkullBox Forum  |  Development  |  Concursuri de programare (Moderator: tw8)  |  Topic: [Incepatori][Concurs nr. 30] Turneu de sah
Jump to: