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:
Cod:
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.
 
Cod:
#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:
Cod:
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.
4  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Problema clasa IX : Mai 19, 2013, 10:18:02
Datele de intrare din exemplu sunt:
11 3
8 1 3 2
5  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Problema clasa IX : Mai 19, 2013, 10:05:36
De ce oare n=3 dar sunt 4 greutati pe linia 2?
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
7  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Problema clasa IX : Mai 19, 2013, 01:13:05
La b, oare e atat de simplu? E destul sa calculez greutatea totala a sacilor ca sa-mi dau seama de fiecare daca daca e nevoie de un transport unic?
8  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Problema clasa IX : Mai 19, 2013, 01:03:54
Ma gandeam la cerinta a, sa numar sacii astfel:
Cod:
for i:=1 to n do
    if s[i]<=g div n then k:=k+1;

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
10  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Freedom : Decembrie 12, 2012, 15:04:27
Multumesc! N-as fi reusit sa gasesc singur raspunsul prea curand  Applause
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?
12  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Problema Multimi : Octombrie 07, 2012, 13:06:07
Multumesc! Very Happy
Vai  Aha nu mi-as fi dat seama...
Am corectat, acum functioneaza!
Cod:
   if a<c then
      x:=c
   else x:=a;
   if b<d then
      y:=b
   else y:=d;
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.
Cod:
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;
14  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Mai sunt si alte metode? : Septembrie 21, 2012, 16:44:41
Am gasit o a doua metoda, "chicita" era faptul ca nu aveam voie sa folosim altceva decat structuri decizionale(prima lectie de info' si prima tema).Multumesc pentru sugesti si imi pare rau daca am gresit sectiunea, de abia acum am vazut ca exista una speciala pentru teme  Very Happy
15  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Mai sunt si alte metode? : Septembrie 20, 2012, 18:28:06
 sad N-avem manual dar am sa caut pe 'net! Multumesc!
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!

Cod:
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).
Cod:
char rasp;
Dupa ce ti-ai precizat toate variabilele, adaugi codul:
Cod:
restart:
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:
Cod:
     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:
Cod:
default:

Poate vei fi nevoit sa modifici pe alocuri, in functie de IDE-ul folosit de tine.

Bafta!



Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines