Răspuns :
Exista doua variante, una mai putin eficienta si una ceva mai eficienta.
Metoda 1, mai putin eficienta:
#include <iostream>
using namespace std;
int main()
{
int n, a[100];
cin >> n;
//citire
for (int i=0; i<n; i++) cin >> a[i];
//afisare
for (int i=0; i<n; i++) cout << a[i] << " ";
cout << "\n";
//suma elemente pare respectiv impare
int sPar=0, sImp=0;
for (int i=0; i<n; i++)
if (a[i]%2==0) sPar+=a[i];
else sImp += a[i];
cout << "sPar: " << sPar << " | sImp: " << sImp << "\n";
//minimul
int min=a[0];
for (int i=1; i<n; i++)
if (a[i]<min) min = a[i];
cout << "min: " << min << "\n";
//produsul elementelor
int p=1;
for (int i=0; i<n; i++)
p*=a[i];
cout << "p: " << p << "\n";
//sortare descrescatoare + afisare
for (int i=0; i<n-1; i++)
for (int j=i+1; j<n; j++)
if (a[i]<a[j]) swap(a[i], a[j]);
for (int i=0; i<n; i++) cout << a[i] << " ";
return 0;
}
Metoda 2, ceva mai eficienta (in for-ul in care se citesc elementele se afla toate datele, precum suma numerelor pare si impare):
#include <iostream>
using namespace std;
int main()
{
int n, a[100];
int sPar=0, sImp=0, min, p=1;
cin >> n;
//citire + aflare sume + minim + produs
for (int i=0; i<n; i++)
{
cin >> a[i];
//minim
if (i==0) min=a[i];
else if (a[i]<min) min = a[i];
//suma elemente pare respectiv impare
if (a[i]%2==0) sPar+=a[i];
else sImp += a[i];
//produsul elementelor
p*=a[i];
}
for (int i=0; i<n; i++) cout << a[i] << " ";
cout << "\n" <<
"sPar: " << sPar << " | sImp: " << sImp << "\n" <<
"min: " << min << "\n" <<
"p: " << p << "\n";
//sortare descrescatoare + afisare
for (int i=0; i<n-1; i++)
for (int j=i+1; j<n; j++)
if (a[i]<a[j]) swap(a[i], a[j]);
for (int i=0; i<n; i++) cout << a[i] << " ";
return 0;
}
O alegi pe care vrei, cel mai important e sa intelegi fiindca nu e tocmai nevoie de cine stie ce eficienta :).
Metoda 1, mai putin eficienta:
#include <iostream>
using namespace std;
int main()
{
int n, a[100];
cin >> n;
//citire
for (int i=0; i<n; i++) cin >> a[i];
//afisare
for (int i=0; i<n; i++) cout << a[i] << " ";
cout << "\n";
//suma elemente pare respectiv impare
int sPar=0, sImp=0;
for (int i=0; i<n; i++)
if (a[i]%2==0) sPar+=a[i];
else sImp += a[i];
cout << "sPar: " << sPar << " | sImp: " << sImp << "\n";
//minimul
int min=a[0];
for (int i=1; i<n; i++)
if (a[i]<min) min = a[i];
cout << "min: " << min << "\n";
//produsul elementelor
int p=1;
for (int i=0; i<n; i++)
p*=a[i];
cout << "p: " << p << "\n";
//sortare descrescatoare + afisare
for (int i=0; i<n-1; i++)
for (int j=i+1; j<n; j++)
if (a[i]<a[j]) swap(a[i], a[j]);
for (int i=0; i<n; i++) cout << a[i] << " ";
return 0;
}
Metoda 2, ceva mai eficienta (in for-ul in care se citesc elementele se afla toate datele, precum suma numerelor pare si impare):
#include <iostream>
using namespace std;
int main()
{
int n, a[100];
int sPar=0, sImp=0, min, p=1;
cin >> n;
//citire + aflare sume + minim + produs
for (int i=0; i<n; i++)
{
cin >> a[i];
//minim
if (i==0) min=a[i];
else if (a[i]<min) min = a[i];
//suma elemente pare respectiv impare
if (a[i]%2==0) sPar+=a[i];
else sImp += a[i];
//produsul elementelor
p*=a[i];
}
for (int i=0; i<n; i++) cout << a[i] << " ";
cout << "\n" <<
"sPar: " << sPar << " | sImp: " << sImp << "\n" <<
"min: " << min << "\n" <<
"p: " << p << "\n";
//sortare descrescatoare + afisare
for (int i=0; i<n-1; i++)
for (int j=i+1; j<n; j++)
if (a[i]<a[j]) swap(a[i], a[j]);
for (int i=0; i<n; i++) cout << a[i] << " ";
return 0;
}
O alegi pe care vrei, cel mai important e sa intelegi fiindca nu e tocmai nevoie de cine stie ce eficienta :).
program s1;
uses crt;
type tab=array[1..100] of integer;
var x,i,n,k,f,m:integer; a:tab;
begin
clrscr;
read(n);
f:=0;
k:=0;
m:=1;
for i:=1 to n do
read(a[i]);
for i:=1 to n do
write(a[i]:5);
writeln;
for i:=1 to n do
if a[i] mod 2=0 then f:=f+a[i]; { suma elemntelor pare}
writeln(f);
for i:=1 to n do
if a[i] mod 2<>0 then k:=k+a[i]; {suma elemntelor impare}
writeln(k);
for i:=1 to n do {suma tuturor elementelor}
m:=m*a[i];
writeln(m);
readkey;
end.
la celelalte 2 n-am inteles ...
uses crt;
type tab=array[1..100] of integer;
var x,i,n,k,f,m:integer; a:tab;
begin
clrscr;
read(n);
f:=0;
k:=0;
m:=1;
for i:=1 to n do
read(a[i]);
for i:=1 to n do
write(a[i]:5);
writeln;
for i:=1 to n do
if a[i] mod 2=0 then f:=f+a[i]; { suma elemntelor pare}
writeln(f);
for i:=1 to n do
if a[i] mod 2<>0 then k:=k+a[i]; {suma elemntelor impare}
writeln(k);
for i:=1 to n do {suma tuturor elementelor}
m:=m*a[i];
writeln(m);
readkey;
end.
la celelalte 2 n-am inteles ...
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!