Kezdőoldal » Számítástechnika » Programozás » Hogyan kell megszámolni...

Hogyan kell megszámolni C++-ban és egy mátrixban minden sornál a saját átlagánál nagyobb számorkat?

Figyelt kérdés

Tehát van egy

3 5

10 15 12 10 10

12 16 16 16 18

11 11 11 11 20


Mátrixom és

az átlaga az oszloponak:

11.4 helye: 1

15.6 helye: 2

12.8 helye: 3



na tehát meg szeretném számolni minden sorban hány db olyan elem van ami nagyobb a saját átklagánál:

PL.:

1 oszlopban van 2 db szám ami nagyobb a saját átlagánál

2 oszlop 1 db

3 oszllop 4 db



Kódom lent

#include <iostream>


int main()

{

setlocale(LC_ALL,"hun");

int N; // oszlop

int M; // sor

using namespace std;

cin >> N;

cin >> M;


int tomb[N][M] ;

for(int i=0; i<N ;i++)

{

for(int j=0; j<M ; j++)

{


cin >> tomb[i][j];

}

}

cout << N <<" " << M <<" " << endl ;

for(int i=0; i<N ;i++)

{

for(int j=0; j<M ; j++)

{

cout << tomb[i][j] << " " ;

}

}

cout << endl;

// Helyek


int hely[10000];

cout << "\n------------------------tommbbell----------------------"<< endl;

for ( int i=1; i<N+1; i++)

{

hely[i]=i;


}



for ( int i=1; i<N+1; i++)

{

cout <<hely[i] << " ";

}



cout << endl;


cout << endl;



//Átlag


{

double atlag[1000];


double tmp;

double x;


int i, j, min;


//A átlag kezdete

for (i = 0; i < N; i++)

{

tmp = 0;

for (j = 0; j < M; j++)

{

tmp = tmp + tomb[i][j];

}

atlag[i] = tmp / M;

}



//A átlag vége

cout << "-----Átlagok:------------" << endl;

for (i = 0; i < N; i++) {

cerr << atlag[i] << " ";

}

cout << "\n------------------------Átlag és hely: --------------" << endl;

for (i = 0; i < N; i++)

{

cerr << atlag[i] << " helye: " << hely[i]+1 << endl;

}



cout << endl;

cout << endl;

//---------------------------------------------------innen rossz

//MEgszámolás: innen rossz

//Megszámolom a saját átlagánál melegebb napokat :)

//int i,j,szamlalo=0;

int szamlalo;

szamlalo =0;


for (int i=0; i<N; i++)

{

for(int j=0; j<M; j++)

{

if(tomb[i][j] >atlag[i] )

{

szamlalo++;

}

}

}

cout << "\n---------------------------számláló kiírása --------------------" << endl;


cout << szamlalo ;

return 0;

}



2017. nov. 25. 14:32
 1/4 uno20001 ***** válasza:
Minden sor után nullázni kellene a számlálót, és kiírni az eredményt. A másik, mi az, hogy az átlag "helye"?
2017. nov. 25. 18:59
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
összeadogatod egy sornak az értékeit és elosztod az összeadogatott értékek számával(darabjával) ezzel az egyik sornak az átlaga meg is van ez után végigmész egy ciklussal újból a sor elemein és közben vizsgálod hogy az aktuális elem amin vagy éppen a sorban nagyobb e mint az átlag ha igen megnövelsz eggyel egy számláló változót a ciklus befejeztével pedig kiíratod a számlálót vagy bele rakod egy tömbbe aztán jöhet a 2 sor és így tovább.
2017. nov. 25. 19:55
Hasznos számodra ez a válasz?
 3/4 tabaki ***** válasza:

Jószerivel érthetetlen a leírásod, szerintem követhetetlen, miről beszélsz. Következetesen 3 oszlopot emlegetsz, holott a példaként felírt mátrixnak láthatólag 5 oszlopa és 3 sora van, Ennek megfelelően az ÖT oszlop átlaga rendre: 11, 14, 13, 12.3333 és 16. A HÁROM sorban pedig 1, 5, 1 olyan elem található, amely nagyobb a vele azonos oszlopban található elemek átlagánál. Azon túl, hogy ezeket az értékeket nem tudtam egyeztetni az általad közöltekkel, a leírás végén teljesen elvesztettem a fonalat. A sorokban kell összeszámolnunk az oszlopátlagoknál nagyobb értékeket, ehhez képest:

„PL.:

1 oszlopban van 2 db szám ami nagyobb a saját átlagánál

2 oszlop 1 db

3 oszllop 4 db”

Hogy jönnek ide az oszlopok? Kész, feladom. Azt reméltem, hogy legalább a kódodból világosabbá válik a szándék, de csak megfájdult tőle a fejem. Inkább írtam egy sajátot, amely talán azt csinálja, amit kéne, de az ismertetőd alapján ki tudja... Ha nem, akkor próbáld meg pontosabban leírni a feladatot.

Elnézést mindazoktól, akik értenek is hozzá, nyilván lehetne sokkal szebben is csinálni:


#include <iostream>

using namespace std;


int main(){

setlocale(LC_ALL,"hun");

int x, y, i, j = 0; // sor, oszlop, ciklusszámlálók


cout << "A tömb méreteinek megadása...\n";

cout << "A sorok száma: ";

cin >> y;

cout << "Az oszlopok száma: ";

cin >> x;


int tomb[y][x];

double atlag[x];

unsigned int darab[y];


cout << "A tömb feltöltése. Az adatokat szóközökkel elválasztva add meg.\n";

for(i = 0; i < y; i++){

      cout << i+1 << ". sor adatai: ";

      for(j = 0; j < x; j++) cin >> tomb[i][j];

}


for(j = 0; j < x; j++){

      atlag[j] = 0.0;

      for(i = 0; i < y; i++) atlag[j] += tomb[i][j];

      atlag[j] = atlag[j] / y;

}


for(i = 0; i < y; i++){

      darab[i] = 0;

      for(j = 0; j < x; j++) if (tomb[i][j] > atlag[j]) darab[i]++;

}


cout << "\nA tömb mérete: " << y << " sor, " << x << " oszlop.\n";

cout << "Adatai:\n";

for(i = 0; i < y; i++){

      for(j = 0; j < x; j++) cout << tomb[i][j] << ' ';

      cout << " A sorban " << darab[i] << " elem nagyobb az oszlopának átlagánál.\n";

}

cout << "\nAz oszlopátlagok:\n";

for(j = 0; j < x; j++) cout << atlag[j] << ' ';

cout << endl;


return 0;

}

2017. nov. 26. 00:57
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:

KÖszönöm a válaszoat és ment a zöld pacsi mindeninek

#3-as igazad van a kódom valóban egy kicsit táányleg átláthatatlan, javítom .

Köszi

2017. nov. 26. 14:20

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!