Kezdőoldal » Számítástechnika » Programozás » Kérj be egy számot, ami...

Kérj be egy számot, ami legalább 3. Ez megadja a kirajzolandó rombuszod méretét. A legteteje egy karakterből (". ") áll, és minden emelet 2-vel nő egészen a szám feléig (-1), ami után minden emelet kettővel csökken?

Figyelt kérdés

Mit javítsak a kódon, mert nem működik?


#include <iostream>

#include <iomanip>

#include <cstdlib>

using namespace std;

int main()

{

int szam,adott,R1,R2;

cout << "Rombusz nagysaga: ";

cin >> szam;

adott = (szam * 2) - 1;


for (int i = 0; i < adott; i++)

{

R1 = szam - i;

R2 = szam + i;

}

for (int j = 1; j < szam; j++)

{

if (j == R1 || j == R2)

{

cout << ".";

}

else

{

cout << " ";

}

cout << endl;

}


system("pause");

}


2015. aug. 9. 18:17
 1/10 A kérdező kommentje:

Na kész a fele, de a másik fele nem megy.

int szam,adott,R1,R2;

cout << "Rombusz nagysaga: ";

cin >> szam;

adott = (szam * 2) - 1;


for (int i = 0; i <= adott; i++)

{

R1 = szam - i;

R2 = szam + i;


for (int j = 1; j <= adott; j++)

{

if (j == R1 || j == R2)

{

cout << ".";

}

else

{

cout << " ";

}


}

cout << endl;

}

2015. aug. 9. 18:29
 2/10 anonim ***** válasza:
Akkor várunk még egy kicsit, hátha azt is megoldod saját magad és így a kisujjunkat sem kell mozdítani :)
2015. aug. 9. 18:33
Hasznos számodra ez a válasz?
 3/10 A kérdező kommentje:
Sajnos nem sikerül, ezért írtam ki a kérdést. Csak elkezdtem hogy ne az legyen hogy meg se próbálom csak bemásolom a feladatot.
2015. aug. 9. 19:00
 4/10 anonim ***** válasza:
Első tipp: használj értelmes változó neveket, hogy tudd mi a fenét is csinál a programod.
2015. aug. 9. 20:11
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:

Ehhez egy kis megjegyzés:

A feladat szövegében a bekért szám magasságú rombusz kell, de te egy nagyobb rombuszt kezdesz el kirajzolni. Az adott helyett a szam változót kellene használnod.

A szam változót felezd el.

Az első sorban középre kell tenned egy jelet, elé szóközöket kell írnod. A következőben eggyel korábban kell kezdened, és eggyel később végezned (ez valami fel - i). Aztán ugyanez fordítva.

2015. aug. 9. 20:19
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

Most kipróbáltam a kódot, ez amúgy a program melyik fele?

Mert ez mást nem nagyon csinál csak összevissza kirak egy-egy pontot meg üres sort, ez elég nehezen nevezhető fél rombusznak.

2015. aug. 9. 20:40
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
Bocsánat, visszavonom. :)
2015. aug. 9. 20:43
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:

Ezt írtam át, mert így kitöltötte:

[link]


int h, i, j;


cout << "Please enter the hight : " << endl;

cin >> h;


for (i = 1;i <= h;i++) {


for (j = i;j < h;j++) {

cout << " ";

}


for (j = 1;j <= i + i - 1; j++) {

if (j < 2 || j > i + i - 2)

cout << ".";

else

cout << " ";

}


cout << endl;

}


for (i = h - 1;i >= 0;i--) {


for (j = i;j < h;j++) {

cout << " ";

}


for (j = 1;j <= i + i - 1; j++) {

if(j < 2 || j > i + i -2)

cout << ".";

else

cout << " ";

}

cout << endl;

}


return 0;

2015. aug. 9. 21:28
Hasznos számodra ez a válasz?
 9/10 SimkoL ***** válasza:

Az eredeti javítva:


#include <cstdlib>

#include <iostream>


using namespace std;


int main()

{

int szam, adott, R1, R2;

cout << "Rombusz nagysaga: ";

cin >> szam;

adott = (szam * 2 ) - 1;

for (int i = 0; i <= szam; i++)

{

R1 = szam - i;

R2 = szam + i;

if (i > szam / 2)

{

R1 = i;

R2 = (2 * szam) - i;

}

for (int j = 1; j <= adott; j++)

if (j == R1 || j == R2) cout << ".";

else cout << " ";

cout << endl;

}

system("PAUSE");

return 0;

}

2015. aug. 9. 21:35
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:

Rövidebb megoldás hibakezeléssel:


#include <iostream>

#include <cmath>


using namespace std;


int main() {

int hossz, X, Y;


cout << "Oldalhossz (3<=): ";

while (!(cin >> hossz) || hossz < 3) {

cout << "Hibas input, ujra: ";

cin.clear();

cin.ignore(INT_MAX, '\n');

}


for (int i = 1; i < hossz * 2; ++i) {

for (int j = 1; j < hossz * 2; ++j) {

X = abs(j - hossz);

Y = abs(i - hossz);

cout << (((X + Y) == (hossz - 1)) ? '.' : ' ');

}

cout << endl;

}

return 0;

}

2015. aug. 9. 22:17
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!