Kezdőoldal » Számítástechnika » Programozás » C++ hogyan kéne ezt megcsináln...

C++ hogyan kéne ezt megcsinálni? (középiskolás feladat)

Figyelt kérdés

Feladat: írj egy olyan programot, ami megadja azoknak a városoknak a sorszámát, amelyek Budapesttől legalább 50 km-re és Szegedtől maximum 200 km-re vannak. A kimenet egy sorba írjon ki mindent, az első szám a városok darabszáma, utána pedig csökkenő sorrendben a sorszámok legyenek.


Odáig eljutottam, hogy beolvasom a bemeneti adatokat..

ennyi a kódom eddig:


#include <iostream>

using namespace std;


int main(){

int N; /* varosok szama */

cin >> N;

int tavolsag1[N];

int tavolsag2[N];

int darabszam = 0;


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

cin >> tavolsag1[N];

cin >> tavolsag2[N];

}


if(tavolsag1[N] >=50 && tavolsag2[N] <=200){

cout << "nem tudom hogyan tovabb";

}

}


Innen hogyan kéne folytatnom? Vagy az sem jó amit eddig írtam?



2018. okt. 17. 19:55
 1/3 anonim ***** válasza:

Ahelyett hogy megmondom mit kellene csinálnod, inkább kérdezek.


Abban a for ciklusban, ahol i a ciklus valtozoja, miért nem használod az i-t?


Mivel a feladat kéri, hogy először írd ki a kritériumnak megfelelt városok darabszámát és csak utána a sorszamukat, először meg kell szamolnod őket és utána kiiratni a helyes indexeket.

Tehát hanyszor kell elvégezni a "vedd a következő várost és allapitsd meg hogy megfelel e a kritériumnak" folyamatot? Mi erre a legalkalmasabb forma? El akarod e tárolni az egyes városokra vonatkozó eredményt? Ha igen, hogyan, ha nem, akkor hogy lehet anélkül megoldani a feladatot?

2018. okt. 17. 20:34
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:

Köszi a választ, egy kicsit sikerült vele haladnom, a darabszámos rész azthiszem megvan.


int main(){

int N; /* varosok szama */

cin >> N;

int tavolsag1[N];

int tavolsag2[N];

int darabszam = 0;


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

cin >> tavolsag1[i];

cin >> tavolsag2[i];

}


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

if(tavolsag1[i] >=50 && tavolsag2[i] <=200){

darabszam = darabszam + 1;

}

}

cout << darabszam;

}


Viszont innen már tényleg nem tudom, hogy hogyan tovább (tömb indexek kiírása csökkenő sorrendben). Az a baj, hogy hiányoztam az előző 2 óráról, mert kórházban voltam. :/

2018. okt. 17. 22:32
 3/3 anonim ***** válasza:

Így már sokkal jobb a kód. A csökkenő sorrendben való kiírásra több lehetőség is van, ezek közül egy az, hogy a tombbon másodszor fordított sorrendben mész végig (tehát a ciklisvaltozo kezdetben (N-1)-nel egyenlő, majd csökken 0-ig, és amelyik indexre igaz a megadott feltétel, azt kiirod.


Ehhez jó tudni, hogy a ++ operatorhoz hasonlóan létezik a -- operator is.

Ha több memória használattal de kevesebb számolással szeretnéd megírni a programot, akkor el is tárolhatod egy N elemu tömbben hogy melyik indexre igaz a feltétel és másodszor csak azon kell végig menned csökkenő sorrendben.


Ugyanakkor azt is megjegyezném, hogy a fordítási időben ismeretlen elemszamu tömbök a C++ szabvány szerint nem hozhatóak létre, bár sok fordító megengedi az ilyen tömbök létrehozását.

2018. okt. 18. 00:01
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!