SOS, informatica, olimpiada, din interes
Răspunsuri la întrebare
Sunt facute in C++. Sa iti fie de folos! Programele merg. Te poti inspira si poate gasesti solutii mai bune / optimizari de cod.
1.
#include <iostream>
using namespace std;
int main()
{
int m,n;
cin>>n;cin>>m;
int sumaPerimetru = 0;
//Declarare matrice si elementele ei
int **ma;
ma = new int*[n];
for(int i = 0;i<n;i++)
{
ma[i] = new int[m];
}
//Citeste si afiseaza instant maximul de pe fiecare linie si suma elem perimetru
//Citire elemente matrice
for(int i = 0;i<n;i++)
{
int max = 0;
for(int j=0;j<m;j++)
{
cout<<"ma["<<i<<","<<j<<"]=";
cin>>ma[i][j];
if(j==0)
max = ma[i][j];
else
{
if (ma[i][j] > max)
max = ma[i][j];
}
if (i == 0 || i == n-1)
sumaPerimetru += ma[i][j];
else if(j==0 || j==m-1)
sumaPerimetru += ma[i][j];
}
cout<<"Elem. max de pe linia "<<i<<" este :"<<max<<endl;
}
cout<<endl;
//Afisare matrice
for(int i = 0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<ma[i][j]<<" ";
}
cout<<endl;
}
cout<<"Suma elem de pe perimetrul matricei este: "<<sumaPerimetru<<endl;
//Aceasta este idem doar ca se proceseaza dupa ce s-au citit elementele matricei
//Am zis sa le pun ambele sa alegi tu in functie de ce iti cere.
//Daca nu ai restrictie de timp faci cum e mai jos altfel daca ai as recomanda cum
//este mai sus pt ca executi algoritmul fara a mai parcurge inca odata matricea
//inafara de parcurgerea de citire.
sumaPerimetru=0;
for(int i = 0;i<n;i++)
{
int max = ma[i][0];
for(int j=0;j<m;j++)
{
if (i == 0 || i == n-1)
sumaPerimetru += ma[i][j];
else if(j==0 || j==m-1)
sumaPerimetru += ma[i][j];
if (ma[i][j] > max)
max = ma[i][j];
}
cout<<"Elem. max de pe linia "<<i<<" este :"<<max<<endl;
}
cout<<"Suma elem de pe perimetrul matricei este: "<<sumaPerimetru<<endl;
return 0;
}
2.
#include <iostream>
using namespace std;
int fib(int x) {
if (x == 0)
return 0;
if (x == 1)
return 1;
return fib(x-1)+fib(x-2);
}
int main()
{
int n = 32000;
int sum=0;
while(n>0)
{
int uc = n % 10;
n/=10;
sum += uc*uc;
}
cout<<sum<<endl;
int i = 0;
while(fib(i) < sum)
{
i++;
}
if(fib(i) == sum)
cout<<"DA";
else
cout<<"NU";
return 0;
}
3.
// Example program
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
//Declarare matrice si elementele ei
int **ma;
ma = new int*[n];
for(int i = 0;i<n;i++)
{
ma[i] = new int[n];
}
//Citeste si afiseaza instant maximul de pe fiecare linie si suma elem perimetru
//Citire elemente matrice
for(int i = 0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<"ma["<<i<<","<<j<<"]=";
cin>>ma[i][j];
}
}
cout<<endl;
//Afisare matrice // si calculare cerinta
float maxMA = -INT_MAX;
float minMA = INT_MAX;
for(int i = 0;i<n;i++)
{
float tempMinMA = 0;
float s1 = 0;
float tempMaxMA = 0;
float s2 = 0;
for(int j=0;j<n;j++)
{
cout<<ma[i][j]<<" ";
s1+=(float)ma[i][j];
s2+=(float)ma[j][i];
}
tempMinMA = s1/(float)n;
tempMaxMA = s2/(float)n;
if(tempMinMA < minMA)
minMA = tempMinMA;
if(tempMaxMA > maxMA)
maxMA = tempMaxMA;
cout<<endl;
}
cout<<endl;
cout<<minMA<<endl;
cout<<maxMA<<endl;
cout<<"Diferenta este: "<<maxMA-minMA;
}