Peršokti į turinį

c++ 11kl užduotis


Shiv3r

Recommended Posts

Sveiki, padariau programą, kaip mokytojas prašė (C++ mokinuos individualiai, pats, nes turiu tik vieną savaitinę pamoką, nėra sąlygų sudaryt daugiau A lygiu. Programuoju nuo rugsėjo pradžios). 

Mokytojas paskyrė užduotį, sukurti programą kuri atpažintų keturženklį skaičių ir jį atvaizduotų iš kitos pusės (Pvz: 1234 - 4321). 

Gerai, viskas normaliai, išgaunu kiekvieną skaičių, beeet norėjau paklaust dviejų klausimų, gal žinot kaip tą  gautą skaičių galima deklaruot? Ta prasme kokią jam tada reikšmę priskirt kad atvaizduojant nereiktų rašyt: << d << c << b << a << , o tiesiog vieną kintamąjį? 

Btw noriu paklaust kaip apsaugot programą nuo įvesto neketurženklio skaičiaus, any ideas?

kodas:

 

#include <iostream>

using namespace std;

int main()
{
    int skaicius;

    cout << "Iveskite skaiciu: " ;
    cin >> skaicius;

    int a = skaicius / 1000, b = skaicius / 100 % 10, c = skaicius / 10 % 10, d = skaicius % 10;

    cout << "Skaicius is kitos puses: " << d << c << b << a << endl;
}

 

 

EDIT: 

 

apsaugą sukūriau, beliko tik tas kintamasis :///

 

#include <iostream>

using namespace std;
int main()
{
    int skaicius;
        cout << "Iveskite skaiciu sudaryta is keturiu skaitmenu: ";
            cin >> skaicius;

    int a = skaicius / 1000, b = skaicius / 100 % 10, c = skaicius / 10 % 10, d = skaicius % 10;
    
    if (skaicius <= 9999)
        cout << "Skaicius is kitos puses: " << d << c << b << a << endl;
    else
        cout << "Skaicius turi but keturzenklis!" << endl;
}

 

Redaguota , nario Shiv3r
Nuoroda į komentarą
Dalintis per kitą puslapį

Tavo 'apsauga' nekokia, nes žmogus gali įvesti skaičių 1 ir jį laikys kaip keturženklį.

Pakeisk:

if (skaicius <= 9999)

Ä®:

if ( skaicius > 999 && skaicius < 10000 )

Plius, nebūtų geriau tikrinti, ar skaičius keturženklis prieš visą skaičiavimą, kad bereikšmiškai neapkrautum programos?

O norint sujungti visus skaičius (https://stackoverflow.com/a/2611223/7115125):

int Combine( int a, int b )
{
	int times = 1;

	while ( times <= b )
	{
		times *= 10;
	}

	return a * times + b;
}

 

Redaguota , nario Memories
Nuoroda į komentarą
Dalintis per kitą puslapį

while (x > 0) // kol skaičius egzistuoja
{
pask = x % 10; // gaunam paskutinį skaičiaus skaitmenį
cout << pask;
x = x / 10 // sumažinam skaičių
}

Va tau kodas, kaip su vienu kintamuoju prasisukti ir atspausdinti atvirkštinį skaičių. Tik pirma patikrink, ar jis keturženklis su if.

Nuoroda į komentarą
Dalintis per kitą puslapį

Pas tave apsauga nesuveikt, jei įvesi neigiamą skaičių (nebent tai būtų validu) ar mažesnį. Žodžiu, yra ką taisyti...

Del bendro kintamojo, tai:

int rezultatas = skaicius % 10 * 1000 + skaicius / 10 % 10 * 100 + skaicius / 100 % 10 * 10 + skaicius / 1000 % 10;

cout << "Skaicius is kitos puses: " << rezultatas << endl;

Redaguota , nario Developer
Nuoroda į komentarą
Dalintis per kitą puslapį

Svečias
Ši tema yra užrakinta.
  • Å iame puslapyje narÅ¡o:   0 nariai

    • Nėra registruotų narių peržiÅ«rinčių šį forumą.

×
×
  • Sukurti naują...