Kezdőoldal » Számítástechnika » Programozás » C++ beadandó, tanácstalan...

C++ beadandó, tanácstalan vagyok. Hogyan tudnám ezt a kódot tökéletes működésre bírni?

Figyelt kérdés

A feladat a következő lenne:

[link]


Tehát én úgy értelmezem, hogy meg kell nézni minden nap, hogy melyik településen van a legalacsonyabb hőmérséklet, és hogy ugyanezen a településen van-e az előre jósolt hőmérsékletek közül a legmagasabb. Ezeket az eseteket meg kell számolni, és kiírni a képernyőre.


Eddig ezt hoztam össze:

[link] (zárójeleket értelemszerűen törölni)


Tehát megpróbáltam kikeresni és egy tömbben eltárolni minden napra a minimum, és a maximum előre jósolt hőmérsékletet. Aztán pedig for ciklussal leellenőrizni, hogy előfordul-e, hogy adott napon ez a kettő egy sorban van-e. Van 2 darab mintabemenetem, az elsőt azt a fenti képen láthatjátok, arra működik a program, viszont van egy másik (1000x1000-es) minta bemenet, amire már teljesen mást ír ki (sokkal többet számol, és vannak ismétlődő elemek is, valamint nagyjából ugyanez a helyzet, ha minden sor ugyanaz), mint kéne (ezt máshova kell feltöltenem, mert a pastebin már nem engedte:


[link]


Alapból azt se értem, hogy ennél pl. hogy lehet az utolsó nap egy megfelelő eset, hiszen ott már nincs is előre jelzett hőmérséklet. Valaki ezt érti? Esetleg rá tudnátok mutatni, hogy hogy lehetne megjavítani ezt a kódot? Egyáltalán jó úton haladok?


Tudom, a kód nem valami szép, de majd szépítgetem, miután rendesen működik.


Előre is köszönöm a válaszokat!


2018. dec. 28. 15:24
 1/3 A kérdező kommentje:
[link] Közben írtam egy ilyet is, talán kicsit átláthatóbb, de ez még mindig nem akaródzik rendesen működni, a sulis tesztelő is 0/100-at dob vissza...
2018. dec. 28. 18:14
 2/3 anonim válasza:

/******************************************************************************


Online C++ Compiler.

Code, Compile, Run and Debug C++ program online.

Write your code in this editor and press "Run" button to compile and execute it.


*******************************************************************************/


#include <iostream>

#include <sstream>

#include <string>

using namespace std;

string s = "3 5\n10 15 12 10 10\n11 11 11 11 20\n12 16 16 16 20\n";


void parse (string s)

{

stringstream ss (s);

stringstream resultstrm;


int M; // napok szama

int N; // telepulesek szama

int t; // kiolvasott homerseklet

int K = 0; // kimenet elso szamjegyehez szamlalo

int Tmin; // legkisebb homerseklet adott napon

int Tmax; // eddigi legmagasabb minimum homerseklet

ss >> N;

ss >> M;


int hok[M][N];


int n, m;


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

for (m = 0; m < M; m++) {

ss >> hok[m][n];

}

}


Tmax = -10000; // inicializaljuk egy jo kicsi szamra

for (m = 0; m < M; m++) {

Tmin = 10000; // inicializaljuk egy jo nagy szamra

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

Tmin = hok[m][n] < Tmin ? hok[m][n] : Tmin;

}

if (Tmin < Tmax) { // ha ezen a napon nagyobb a minimum homerseklet, mint az eddigi csucs, akkor ez lesz az uj csucs

continue;

}

if ( Tmin == Tmax ) { // ezen a napon ugyanolyan meleg a leghidegebb hely, mint az elozo ilyennel, tehat megy az eredmenybe.

resultstrm << m + 1 << " ";

K++;

}

if ( Tmin > Tmax ) { // ezen a napon az eddigi legmelegebbnel is melegebb a leghidegebb telepules, tehat az eredmenyt nullazzuk es ujrakezdjuk.

Tmax = Tmin;

resultstrm.str("");

resultstrm << m + 1 << " ";

K=1;

}

}

cout << K << " " << resultstrm.str();

}


int main ()

{

parse (s);


return 0;

}

2018. dec. 29. 03:55
Hasznos számodra ez a válasz?
 3/3 anonim válasza:
2018. dec. 29. 03:57
Hasznos számodra ez a válasz?

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!