Wyrównanie liczb do prawej w C++

wdsk90
Użytkownik
Użytkownik
Posty: 183
Rejestracja: 4 maja 2010, o 11:22
Płeć: Mężczyzna
Podziękował: 25 razy
Pomógł: 10 razy

Wyrównanie liczb do prawej w C++

Post autor: wdsk90 »

Jak wyrównać tekst do prawej w C++? To znaczy, mam program, który wczytuje trzy liczby i drukuje je na ekranie. Dla liczb 2, 123, 1 zamiast standardowego

Kod: Zaznacz cały

2
123
1
chciałbym otrzymać

Kod: Zaznacz cały

  2
123
  1
Jak to zrobić?
wawek91
Użytkownik
Użytkownik
Posty: 795
Rejestracja: 2 cze 2010, o 08:56
Płeć: Mężczyzna
Lokalizacja: Tarnów
Podziękował: 14 razy
Pomógł: 66 razy

Wyrównanie liczb do prawej w C++

Post autor: wawek91 »



Mam nadzieje, że się przyda.
wdsk90
Użytkownik
Użytkownik
Posty: 183
Rejestracja: 4 maja 2010, o 11:22
Płeć: Mężczyzna
Podziękował: 25 razy
Pomógł: 10 razy

Wyrównanie liczb do prawej w C++

Post autor: wdsk90 »

Też umiem szukać w googlach, ale nie o to mi chodziło.
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

Wyrównanie liczb do prawej w C++

Post autor: Sokół »

... de110.html
słabo szukasz
wdsk90
Użytkownik
Użytkownik
Posty: 183
Rejestracja: 4 maja 2010, o 11:22
Płeć: Mężczyzna
Podziękował: 25 razy
Pomógł: 10 razy

Wyrównanie liczb do prawej w C++

Post autor: wdsk90 »

Może wyjaśnię: moja wiedza o C++ jest bardzo mała, dopiero zaczynam się uczyć i chcę to zrobić w możliwie najprostszy sposób, bez używania funkcji, flag i innych bardziej zaawansowanych rzeczy. To zadanie znajduje się w książce po rozdziale, w którym omówione są tylko takie rzeczy jak podstawowe typy i konwersje między nimi (bezpieczne i niebezpieczne), obiekty, itp.
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

Wyrównanie liczb do prawej w C++

Post autor: Sokół »

Z jakiej książki korzystasz? Bez użycia manipulatora czy flag można chyba to zrobić tylko w sposób algorytmiczny. Przyjmujesz jaką maksymalnie liczba może mieć długość (ilość znaków), sprawdzasz ile znaków ma podana liczba, i drukujesz odpowiednią ilość spacji przed tą liczbą. Do zbadania ile liczba ma znaków posłuży zaokrąglony w górę logarytm dziesiętny (biblioteka cmath). Do wydrukowania takiej ilości spacji przyda się pętla for albo while.

żeby przedstawić ideę (nie kompilowałem, może nie być do końca poprawnie):

Kod: Zaznacz cały

cin >> liczba;for(int i=0; i< maks_znakow-ceil((log10(liczba)) ); i++){cout << " ";}cout << liczba
dla liczb ujemnych użyj wartości bezwzględnej et caetera.
wdsk90
Użytkownik
Użytkownik
Posty: 183
Rejestracja: 4 maja 2010, o 11:22
Płeć: Mężczyzna
Podziękował: 25 razy
Pomógł: 10 razy

Wyrównanie liczb do prawej w C++

Post autor: wdsk90 »

"Programowanie. Teoria i praktyka z wykorzystaniem C++." Bjarne Stroustrupa. Już dałem sobie z tym radę.
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

Wyrównanie liczb do prawej w C++

Post autor: Sokół »

Znalazłeś inny sposób?
wdsk90
Użytkownik
Użytkownik
Posty: 183
Rejestracja: 4 maja 2010, o 11:22
Płeć: Mężczyzna
Podziękował: 25 razy
Pomógł: 10 razy

Wyrównanie liczb do prawej w C++

Post autor: wdsk90 »

Nie, też zrobiłem to z pętlami i wstawieniem spacji, z tym, że napierw sprawdzałem, która liczba jest najdłuższa (za pomocą dzielenia przez 10) i przed krótszymi wstawiałem spacje.
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

Wyrównanie liczb do prawej w C++

Post autor: spajder »

A modyfikatory takie fajne są i łatwe:

Kod: Zaznacz cały

#include <iomanip>
...
cout << setw(10) << right << 1234 << "
";
cout << setw(10) << right << 98 << "
";
ODPOWIEDZ