Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
Blocuri cu apartamente de 5+ camere

Ce marca si model de DVD-RW sa cu...

Achizitie camera video auto (II)

Baza de date cu imagini pe bani
 Robotul martian european, revigor...

Geoana: „Sistemul de vot es...

Imprimare mai multe pagini intr-o...

trebuie sa depun declaratie unica...
 Ruse vs Rusesti

Le mai putem da pe brazda? tipsuri

Recomandari gips carton tavane. (...

ce fel de activitate intretinere ...
 Se poate imbunatati o poza sa se ...

Folosește cineva syncthing? ...

Închidere fereastra dupa deschidere.

Kit AC contine brate Unitatea ext...
 

[TEMA] Sa se afiseze numărul liniei din matrice care are cea mai mare suma a elementelor

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
4 răspunsuri în acest subiect

#1
MateiGafita

MateiGafita

    Junior Member

  • Grup: Junior Members
  • Mesaje: 83
  • Înscris: 08.05.2019
Bună! Sunt nou pe acest forum, dar as vrea sa ma ajutați la aceasta problema de informatica de clasa a 10. Se citește o matrice de la tastatură de dimensiuni n*m. Sa se afiseze numărul liniei din matrice care are cea mai mare suma a elementelor.
Ce am rezolvat pana acum :

#include <iostream>
using namespace std;

int a[10][10],n,i,j,Max,l ,S,S1;
int main()
{
  cout<<"n= ";cin >>n;

   for (i = 1; i <=n; i++)
      for (j = 1; j <=n; j++)           {cout <<"a["<<i<<"]["<<j<<"]= ";cin>>a[i][j];}

  for(i=1;i<=n;i++)
        {for(j=1;j<=n;j++)
         cout<<a[i][j]<<" ";cout << endl;}
         cout<<endl ;
           //afiseaza matricea in forma ei//
     
for (j=1;j<=n; j++)
            S=S+a[1][j];
  Max=S;
  l=1;//linia

for (i=2;i<=n; i++)
        {S1=0;
        for (j=1;j<=n;j++)  
              S1=S1+a[i][j];

           if (S1>Max) Max=S1;

         }
   cout<<Max;cout<<endl;
   cout<<l;

return 0;
}


#2
Betwixt

Betwixt

    Junior Member

  • Grup: Members
  • Mesaje: 81
  • Înscris: 01.12.2013
Iti lipseste o acolada de inchis la un for (dupa cout << endl, inainte de //afiseaza matricea in forma ei//).

Mai trebuie sa actualizezi "l": if (S1>Max) {Max=S1; l = i; }

#3
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Mesaje: 27.268
  • Înscris: 10.08.2006
Invata sa formatezi codul. Pune { si } pe o singura linie dedicata, si aliniaza / indenteaza blocurile folosind spatii sau tasta tab.

Codul tau reformatat ar arata asa, mai usor de citit si urmarit:
#include <iostream>
using namespace std;
int a[10][10], n, i, j, Max, l, S, S1;
int main()
{
	cout << "n= ";
	cin >> n;
	for (i = 1; i <= n; i++)
		for (j = 1; j <= n; j++) {
			cout << "a[" << i << "][" << j << "]= ";
			cin >> a[i][j];
		}
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++)
			cout << a[i][j] << " ";
		cout << endl;
	}
	cout << endl;
	//afiseaza matricea in forma ei//
	for (j = 1; j <= n; j++)
		S = S + a[1][j];
	Max = S;
	l = 1; //linia
	for (i = 2; i <= n; i++) {
		S1 = 0;
		for (j = 1; j <= n; j++)
			S1 = S1 + a[i][j];
		if (S1 > Max)
			Max = S1;
	}
	cout << Max;
	cout << endl;
	cout << l;
	return 0;
}


Iar pentru problema ai scris prea mult cod.

Poti calcula suma pentru fiecare linie pe masura ce citesti, si compara cu suma precedenta. Ai nevoie doar de variabilele:

current_sum;
max_sum;
max_row_number;
current_row;

Pe current_sum o initializezi cu 0 la inceputul unei linii.
Pe max_sum o initializezi cu std::numeric_limits<int>::min() la inceputul programului
pe max_row_number o initializezi cu -1 la inceputul programului si o updatezi cu valoarea lui current_row cand gasesti un nou maxim (cand current_sum > max_sum).


Nu tu matrice, nu tu bucle peste bucle, ci doar buclele de citire.

Pseudocod:

	 1 #!/usr/bin/env python
	 2
	 3 n = int(input("n="))
	 4
	 5 print(n)
	 6
	 7 max_sum = float("-inf")
	 8 max_row_number = -1
	 9
	10 for current_row in range(n):
	11	 current_sum = 0
	12	 for current_column in range(n):
	13		 current_sum += int(input("value:"))
	14	 if current_sum > max_sum:
	15		 max_sum = current_sum
	16		 max_row_number = current_row
	17
	18 print("Max sum", max_sum, "on row", max_row_number)



#4
MateiGafita

MateiGafita

    Junior Member

  • Grup: Junior Members
  • Mesaje: 83
  • Înscris: 08.05.2019
Vă mulțumesc mult pentru ajutor!! Chiar am înțeles.

#5
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Mesaje: 27.268
  • Înscris: 10.08.2006

View PostMateiGafita, on 09 mai 2019 - 08:38, said:

Vă mulțumesc mult pentru ajutor!! Chiar am înțeles.
Ai inteles doar daca vii cu noul cod. Altfel doar ai impresia ca ai inteles.

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate