Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

C++ programozás

617
Informatikából lenne kérdésem.
Az a feladat, hogy írni kell egy prgramot, amely a számokat 1től "n"ig a következő képpen irja ki:
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
.... stb...
Esetleg valami ötlet?
A feladatban "for" utasitást kell használni.
Előre is köszönöm :)
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Középiskola / Informatika

Válaszok

3
Ez két for lesz. Az egyik a sorokon megy végig, a másik pedig a a sorban szereplő számokon. Az a trükk, hogy a számokért felelős for ciklus határa a másik for ciklusig fog futni, így érheted el azt, hogy minden sorban annyi szám legyen ahányadik sor.
0

Két ciklus problémás... szerintem
C#-ban
https://pastebin.com/VH6pmeri

Módosítva: 6 éve
0

A megoldás lényege az, ahogy mondták, hogy annyi karaktert kell kiírni minden sorban, ahányadik sorban vagy: :)
Tehát lesz egy for, ami számolja a soraid, és egy másik for, ami a sorban az adott sorszámig kiírja a számokat. :)
Na n-ig akarjuk kiírni a számokat, akkor nyilván n szám úgy fog előállni, hogy egyrészt csinálunk valahány teljes sort, majd elkezdünk egyet, és ott megyünk valamennyit.
k darab teljes sor csinálásához ennyi karakter kell:
Mivel a sorok számtani sorozatot alkotnak, (1 + 2+ 3+ 4 .. + k) melynek kezdete 1, és differenciája 1, így a leírt számok száma, k sor esetán: k*(k+1)/2 < n

int main() {

int szam = 1;
int N = 1;
for(int i = 1; i*(i-1)/2 <= N; i++) { //itt az i*(i-1)/2 azt jelenti, hogy az utolsó előtti sorig biztosan teljes sorod van, és még egy sort le kell írni
for(int j = 1; j <= i && j<= (N-i*(i-1)/2); j++) { //Itt a j vagy addig megy, míg megtelik a sor, vagy amíg az N-ig hátralevő számok el nem fogynak
std::cout<<szam<<"\t"; //A számokat külön tartjuk nyilván
szam++; //Miután kiíruk, növeljük. :)
}
//Most a két ciklus között vagyunk, itt sorváltás van, itt kell egy újsor karakter
std::cout<<std::endl;
}
return 0;
}

Az előző által írt megoldás, lekódolva: szerintem ezt használd ;)
int main() {
int sor, db, N;
N = 100;
sor = db = 1;
for (int i = 1; i <= N; i++) {
std::cout<<i<<"\t";
if(db == sor) {
sor++; //Ha a sorba leírt számok darabszáma == a sorszámmal, akkor következő sorba megyünk
db = 1; //És a sorbeli darabszámot 1-be állítjuk
std::cout<<std::endl; //És elkezdjük az új sort
}
else {//Különben a sor közepén vagyunk, kiíruk a számot, csak a számlálót kell növelni.
db++;
}
}
return 0;
}



Ezzel végeztünk. :)
Módosítva: 6 éve
0