Afişează mesaje
|
Pagini: [1]
|
1
|
infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Din C++ in Pascal
|
: Martie 20, 2014, 15:31:26
|
Adaptarea facuta de mine, pare sa functioneze: type sir=array[1..100]of integer; int=integer; var a,b:sir; n,k,max:int; procedure tip(max:int;a:sir); var i:int; begin for i:=1 to max do write(a[i],' '); end;
procedure aranj(k,len,max:int); var i:int; begin if (k-1) = max then begin tip(max,a); writeln; end else for i:=1 to len do if (a[k-1] >= i) then begin a[k]:=i; b[i]:=1; aranj(k+1,len,max); b[i]:=0; end; end; Begin{PP} readln(n,k); aranj(1,n,k); End.
|
|
|
2
|
infoarena - concursuri, probleme, evaluator, articole / Teme / Din C++ in Pascal
|
: Martie 20, 2014, 14:34:03
|
Salut! Cine ma poate ajuta cu o rescriere al acestui algoritm in pascal? Manualul il prezinta in C++ dar la scoala studiem pascal. #include<cstdio> int a[19],b[19]; void back(int k,int len,int max) { if(k-1 == max) //afisam solutia { for(int i = 1; i <= max;i++) printf("%d ",a[i]); printf("\n"); } else { for(int i = 1; i <= len; i++) if(!b[i] && a[k-1] < i) //ne asiguram ca generam solutiile crescatoare si unice { a[k] = i; b[i] = 1; //o folosim back(k+1,len,max); //trecem la pasul urmator b[i] = 0; //o eliberam } } } int main() { freopen("combinari.in","r",stdin); freopen("combinari.out","w",stdout); int n,k; scanf("%d %d",&n,&k); back(1,n,k); fclose(stdin); fclose(stdout); return 0; } Multumesc anticipat!
|
|
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Problema clasa IX
|
: Mai 19, 2013, 11:14:52
|
Sursa finala: var n,i,a,g,aux,b,k:longint; ok:boolean; s:array[1..1000] of longint; f1,f2:text; Begin assign(f1,'camion.in');reset(f1); assign(f2,'camion.out');rewrite(f2); readln(f1,g,n); for i:=1 to n do read(f1,s[i]); b:=0;
repeat ok:=true; for i:=1 to n-1 do if s[i]>s[i+1] then begin aux:=s[i]; s[i]:=s[i+1]; s[i+1]:=aux; ok:=false; end; until ok;
a:=0; for i:=1 to n do if a + s[i]<g then begin a:=a+s[i]; k:=i; end;
writeln(f2,k,' ',a); if (s[k+1]-s[k])>=(g-a) then write(f2,'NU') else write(f2,'DA'); close(f1); close(f2); End.
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Problema clasa IX
|
: Mai 19, 2013, 10:03:44
|
Nu cred ca e suficient sa nu existe saci de aceeasi greutate cu ultimul pentru ca solutia sa fie unica.
De exemplu pe testul:
1 2 3 4 cu G = 7 solutia nu este unica.
mihaipopa12, pentru cerinta b am spus "daca suma tuturor greutatilor este > G atunci solutia nu e unica.", se aplica si la exemplul tau: 1+2+3+4>7 => solutia nu este unica
|
|
|
9
|
infoarena - concursuri, probleme, evaluator, articole / Teme / Problema clasa IX
|
: Mai 19, 2013, 00:56:30
|
Salutare! Vreau sa cer indicatii/ajutor pentru problema de mai jos. N-am nici o idee de cum as putea sa adun de fiecare dac aun numar cat mai mare de obiecte, iar cerinta b, nu imi este prea clara. Va rog sa ma ajutati. Intr-un depozit sunt N saci cu alimente. Pentru fiecare sac se cunoaște greutatea. Avem la dispoziție un camion care poate transporta o greutate maximă G. Să se determine: a) Numărul maxim de saci care pot fi transportați cu ajutorul camionului la o singură cursă. b) Să se verifice dacă modalitatea de transport a unui număr maxim de saci la o singură cursă este unică.
Date de intrare: De la tastatură se citesc în ordine: G – greutatea maximă ce poate fi încărcată în camion, N – numărul de saci, apoi N numere naturale care reprezintă greutățile sacilor. Date de ieșire: Pe ecran se va afișa mai întâi numărul de la cerința a). Pe următoarea linie se va afișa mesajul DA dacă există o singură modalitate de a transporta număr maxim de saci la o singură cursă respectiv mesajul NU dacă sunt cel puțin două modalități (două transporturi se consideră distincte dacă există cel puțin un sac pe care îl folosim la un transport și nu îl folosim la celălalt).
Restrictii: Greutățile sacilor sunt distincte Există cel puțin un sac cu greutatea ≤ G 2<=n<=20 1<=G<=2*10^9 1<=g<=10^9
|
|
|
11
|
infoarena - concursuri, probleme, evaluator, articole / Teme / Freedom
|
: Decembrie 11, 2012, 21:34:02
|
Salutare! Stiu ca problema asta nu tine de acest forum si-mi cer scuze c-o postez aici, dar n-am gasit in alt loc ajutor pentru ea.
Sunt 2 usi, una duce spre libertate, alta spre inchisoare.Cele 2 usi sunt pazite de cate 1 gardian, unul spune doar minciuni, altul doar adevarul.Nu stim care este usa spre libertate, care spre inchisoare si care gadieni le pazesc.Putem adresa o intrebare unuia dintre gardieni. Ce intrebare putem adresa pentru a afla usa care duce spre libertate?
|
|
|
13
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Problema Multimi
|
: Octombrie 07, 2012, 12:10:39
|
Salutare! Am o problema cu rezolvarea problemei multimi pentru multimile 5-10, 4-11, 2-9 imi afiseaza intersectia 2-9, n-am reusit sa gasesc greseala facuta... Las fragmentul corespunzator. if n>2 then begin read(a); read(b); read(c); read(d); if a<c then x:=c; if b<d then y:=b;
for i:=1 to (n-2) do begin read(a); read(b); if a>x then x:=a if b<y then y:=b end;
if x>=y then begin writeln('Intersectia este multimea vida'); readln; readln; end else begin writeln('Intersectia celor ',n,' multimi este: ',x,',',y); readln; readln; end; end;
|
|
|
16
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Mai sunt si alte metode?
|
: Septembrie 20, 2012, 18:04:42
|
Buna ziua, am primit o problema la scoala care trebuie rezolvata in 2 moduri, am reusit intr-unul dar nu am gasit un al doilea mod... Ea e simpla si se enunta astfel Aranjati in ordine crescatoare a,b,c citite de la tastatura.Las mai jos modul care l-am gasit... in pseudocod Va rog sugerati-mi inca o metoda! alg cresc citeste a,b,c daca a>b atunci aux:=a a:=b b:=aux sfd daca a>c atunci aux:=a a:=c c:=aux sfd daca b>c atunci aux:=b b:=c c:=aux sfd scrie a,b,c stop
|
|
|
17
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: problema C++
|
: Iunie 28, 2012, 14:29:37
|
Salutare! Cu toate ca darkseeker ti-a oferit o solutie, vreau sa-ti arat cum am procedat eu in aceiasi situatie. Creezi o variabila de tip caracter(char). Dupa ce ti-ai precizat toate variabilele, adaugi codul: Care va desemna punctul de unde programul sa va relua. Dupa care, la sfarsitul codului, daca folosesti scrierea cu streamuri poti avea ceva in genul asta: cout <<"\n Doriti ca programul sa se execute inca odata? d/n > "; cin >>rasp; switch(rasp) { case 'd': case 'D': system("cls"); goto restart; break; case 'n': case 'N': cout <<"\n Programul se va inchide, apasati enter.\n"<<endl; EXIT_SUCCESS; break; default: cout <<"\n"; cout <<" EROARE:Nu exista optiunea aleasa!"<<endl; cout <<" EROARE:Programul se va inchide!"<<endl; break; } system("pause"); }
In functie cazul specificat, codul executa indicatiile date.Iar, daca raspunsul nu e d,D,n sau N, executa indicatiile specificate dupa linia: Poate vei fi nevoit sa modifici pe alocuri, in functie de IDE-ul folosit de tine. Bafta!
|
|
|
|