Kezdőoldal » Számítástechnika » Programozás » Jól oldottam -e meg ezt a...

Bencekft kérdése:

Jól oldottam -e meg ezt a feladatot? Help!

Figyelt kérdés

Sziasztok!


A feladat fájlkezelés. Be kellett olvasni az áru.txt nevű szöveges állományt! ( ez megvan :) )

Ez az állomány egy raktárt jelenít meg, 10*10 -es méretben. Itt 3 db szám található: 0, 1, 2.

A 0 jelenti piros színű termékeket, az 1 jelenti a sárga színűeket, és a 2 jelenti a zöld színű árukat.

a. Irassa ki a képernyőre, hogy hány termék piros, hány termék sárga, és hány termék zöld színű! ( ezt megcsináltam, egyszerű volt, három db nevű, int típusú változót létrehoztam, megszámoltam őket, és kiírattam. )

b. Állapítsa meg, hogy a raktár hány % -a sárga színű! ( megint csak könnyű volt. Megszámoltam a sárgákat, majd mivel 10*10 -es a raktár, ezért 100 termék van összesen. Vagyis a sárga színűek darabját kiírattam :) )

c. Melyik sorban található a legtöbb piros színű áru?

Na igen, itt akadtam meg. Viszont van egy valamiféle megoldásom ( a megfejtés amúgy a 7 ) és azt szeretném megkérdezni, hogy vajon jó -e?

Először is maga a raktár:


1110002222

1111110000

1012201200

0021022120

0120112002

1111111111

0012000012

2222111012

2111111100

0212101201


És most maga a program:


static string[] aru = File.ReadAllLines("áru.txt");


static int[] nagyobb = new int[10];


static int[] seged = new int[10];


static void feladat1()

{

for (int i = 0; i < aru.Length; i++)

Console.WriteLine(aru[i]);

}

static void feladat1c()

{

Console.WriteLine("1/c rész:");

int db = 0;

int i = 0;

int j = 0;

while (i!= 10)

{

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

{

if(aru[i][j] == '0')

{

db++;

}

}

nagyobb[i] = db;

db = 0;

i++;

}


int k = 0;

for (i = 1; i < 10; i++)

{

if(i>1)

{

if(nagyobb[i] > nagyobb[seged[k]])

{

seged[k] = i;

k++;

}

}

else if (nagyobb[i] < nagyobb[i-1])

{

seged[k] = i-1;

k++;

}

else if(nagyobb[i] > nagyobb[i-1])

{

seged[k] = i;

k++;

}

else

{

k++;

}

}

/*

//ez az i értékeit írja ki

for (i = 0; seged[i] != 0; i++)

{

Console.WriteLine(seged[i]);

}


//buborékrendezés

int potlo = 0;

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

{

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

{

if(seged[j+1] > seged[j])

{

potlo = seged[j+1];

seged[j+1] = seged[j];

seged[j] = potlo;

}

}

}


//csökkenő sorrend

for (i = 0; seged[i] != 0; i++)

{

Console.WriteLine(seged[i]);

}

*/

Console.WriteLine("A legtöbb piros színű termék a(z) {0}. sorban található meg.", seged[0] + 1);

}



2017. febr. 15. 21:45
 1/5 A kérdező kommentje:

Oh, most látom, hogy a raktár nem lett fullosan odarakva:


1110002222

1111110000

1012201200

0021022120

0120112002

1111111111

0012000012

2222111012

2111111100

0212101201

2017. febr. 15. 21:47
 2/5 A kérdező kommentje:

Na mind1

A lényeg az, hogy ahol végig egyes van, de nincs végig, ott csak 1 -es szerepel, és az utolsó előtti sorban még egy 1 -es lemaradt.


Nem tudom, hogy miért írja ki így :(

2017. febr. 15. 21:49
 3/5 anonim ***** válasza:
100%

Nézd meg az első sorban hány piros van. Mentsd el a pirosak számát egy "max" változóba, egy "sorszam" változóba pedig, hogy hányadik sor.


Utána menj soronként, számold össze, hogy hány piros van a másodikban, nézd meg, hogy több van-e, mint az elsőben és ha igen akkor a maxot és a sorszamot is kicseréled a másodikra. Utána jön a harmadik sor.

2017. febr. 15. 22:58
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
100%

Első javaslatra az ún. jagged array helyett (int[][]) használj rendes kétdimenziós tömböt (int[,]). Az előbbi ugyanis semmilyen garanciát nem ad arra, hogy a tömb altömbjei ugyanakkora méretűek lesznek, szóval simán lehet ilyet csinálni:

int[][] tomb = new int[] {

new int[3],

new int[4]

};

Míg a rendes tömbnél garantálva van, hogy minden sora ugyanakkora lesz.


A megoldás a következő:

1) Tárolni kell azt, hogy az éppen kiválasztott sorban hány piros termék van:

int Pirosak = 0;

2) Tárolni kell azt is, hogy melyik sor tartalmazta eddig a legtöbb piros terméket és az hány piros termékből állt:

int LegtobbPiros = 0;

int LegtobbPirosDarab = 0;

3) Most sorra kell venni a raktár minden sorát és összeszámolom, hogy az aktuális sorban hány pirosat találtam:

for (int Sor = 0; Sor < 10; Sor++) {

.. for (int Oszlop = 0; Oszlop < 10; Oszlop++) {

.. .. if (aru[Sor][Oszlop] == 3)

.. .. Pirosak++;

.. }

..

.. //Ld. 4)

.. if (LegtobbPirosDarab < Pirosak) {

.. .. LegtobbPiros = Sor;

.. .. LegtobbPirosDarab = Pirosak;

.. }

}

4) Ha olyan sorba futottál bele, ahol több pirosat találtál, mint eddig bárhol máshol, tárolod.

2017. febr. 15. 23:03
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

Nagyon szépen köszönöm a válaszokat! :)

Az első válaszolóét használtam, mert az nekem könnyebb volt, és lám működött. Ja és erre tudtok -e megoldást találni?:

e, Melyik oszlopban van a legkevesebb sárga?


Megcsináltam, és működik, viszont nagyon hosszú lett. Rövidítve is meg lehet ezt csinálni?

2017. febr. 18. 20:25

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

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!