C++ hogyan kéne ezt megcsinálni? (középiskolás feladat)
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?
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?
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. :/
Í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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!