A venit si ziua jurizarii

.
v0id - programul este foarte bine facut, inclusiv pe partea de verificare a inputului;
DarkByte - de asemenea, un program bine scris;
Ciresel - se pare ca nu ai mai apucat sa modifici dupa ce am adaugat si limitele (imi asum vina pentru asta, pentru ca nu le-am publicat de la inceput). Totusi, problema majora la programul tau este complexitatea mare: n
2.
Castigatorul este v0id. Sursele programelor inscrise in concurs:
v0id:- unit frmMain;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
-
- type
- TForm1 = class(TForm)
- memNumbers: TMemo;
- btnGetMax: TButton;
- Label1: TLabel;
- btnSave: TButton;
- btnLoad: TButton;
- dlgLoad: TOpenDialog;
- dlgSave: TSaveDialog;
- procedure btnGetMaxClick(Sender: TObject);
- procedure btnSaveClick(Sender: TObject);
- procedure btnLoadClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.btnGetMaxClick(Sender: TObject);
- var
- iCounter: integer;
-
- lSum: int64;
- lFinal: string;
-
- lMaxNumbers: integer;
-
- const
- MAX_NUMBERS = 10000;
- begin
- lSum := 0;
- lFinal := EmptyStr;
-
- try
- // Verificare numar de elemente
- lMaxNumbers := memNumbers.Lines.Count;
- if (lMaxNumbers > MAX_NUMBERS) then
- begin
- lMaxNumbers := MAX_NUMBERS;
- ShowMessage('Lista contine mai mult de ' + IntToStr(MAX_NUMBERS) + ' numere.' + #13#10 +
- 'Numai primele ' + IntToStr(MAX_NUMBERS) + ' numere vor fi considerate.');
- end;
-
- // Iteratie pe lista de numere
- for iCounter := 0 to lMaxNumbers - 1 do
- begin
- try
- // Verificare daca numarul este mai mic decat 2^32
- if (StrToInt64(memNumbers.Lines.Strings[iCounter]) < 1) or
- (StrToInt64(memNumbers.Lines.Strings[iCounter]) > High(Cardinal)) then
- begin
- ShowMessage('Numarul ' + memNumbers.Lines.Strings[iCounter] + ' nu se incadreaza in conditia ' + #13#10 +
- '"0 < n <= 2^32". Numarul va fi ignorat.');
- Continue;
- end;
- except
- on E: Exception do
- begin
- // Daca am avut o exceptie la conversia in integer, ignoram sirul de caractere
- if E is EConvertError
- then
- begin
- ShowMessage('"' + memNumbers.Lines.Strings[iCounter] + '" nu este un numar natural. Sir de caractere ignorat.');
- Continue;
- end
- else
- raise;
- end
- end;
-
- // Verificare daca numarul curent trebuie adaugat la rezultatul final
- if (lSum < StrToInt(memNumbers.Lines.Strings[iCounter])) then
- lFinal := lFinal + memNumbers.Lines.Strings[iCounter] + '; ';
-
- // Incrementare suma numere
- Inc(lSum, StrToInt(memNumbers.Lines.Strings[iCounter]));
- end;
-
- // Curatenie la finalul string-ului de afisat
- Delete(lFinal, Length(lFinal) - 1, 2);
-
- // Afisare rezultat
- if (lFinal <> EmptyStr)
- then ShowMessage(lFinal)
- else ShowMessage('Nu s-a gasit nici un numar maxim care sa corespunda conditiilor!')
- except
- on E: Exception do
- ShowMessage('S-a intalnit o exceptie: ' + E.Message);
- end;
- end;
-
- procedure TForm1.btnLoadClick(Sender: TObject);
- begin
- if dlgLoad.Execute then
- memNumbers.Lines.LoadFromFile(dlgLoad.FileName);
- end;
-
- procedure TForm1.btnSaveClick(Sender: TObject);
- begin
- if dlgSave.Execute then
- memNumbers.Lines.SaveToFile(dlgSave.FileName);
- end;
-
- end.
DarkByte:- uses crt;
-
- var sir: array[1..10000] of cardinal;
- N, i: integer;
- max: cardinal;
- corect: Boolean;
-
- begin
- corect := True;
- repeat
- clrscr;
- if corect
- then write('Dati N: ')
- else
- begin
- writeln('N invalid ! Reintroduceti o valoare intre 1 si 10000 !');
- write('Dati N: ');
- end;
- readln(N);
- corect := False;
- until (N > 0) and (N < 10001);
-
- for i := 1 to N do
- begin
- write('Dati elementul ', i, ': ');
- readln(sir[i]);
- end;
-
- max := sir[1];
- write(#13#10'Lista numerelor maxime din sirul introdus este: ', max);
-
- for i := 2 to N do
- begin
- if sir[i] > max then
- write(' - ', sir[i]);
- max := max + sir[i];
- end;
-
- writeln(#13#10#13#10, 'Apasa orice tasta pentru a iesi ...');
- readkey;
- end.
-
Ciresel:-
- #include<iostream>
- #include<cstdio>
- using namespace std;
-
- int main()
- {
- int n;
- cout<<"dati n=";
- cin>>n;
- int v[100];
- for(int i=0;i<n;i++)
- {
- cin>>v[i];
- cout<<" ";
- }
- cout<<"\n"<<v[0]<<" ";
- int s;
- for(int i=1;i<n;i++)
- {
- s=0;
- for(int j=0;j<i;j++)
- {
- s=s+v[j];
- }
- if(v[i]>s) cout<<v[i]<<" ";
- }
- return 0;
- }
-
P.S.: v0id, te asteptam maine cu noua tema

.