Hogyan kell megszámolni C++-ban és egy mátrixban minden sornál a saját átlagánál nagyobb számorkat?
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;
}
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;
}
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
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!