Wyrównanie liczb do prawej w C++

0

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

2
123
1

chciałbym otrzymać

  2
123
  1

Jak to zrobić?

0

<iomanip> + manipulatory setw i right

0
#include <iostream>
using namespace std;

int main () {
  int n;
  n=-77;
  cout.width(6); cout << left << n << endl;
  cout.width(6); cout << internal << n << endl;
  cout.width(6); cout << right << n << endl;
  return 0;
}
0
#include <stdio.h>

int main ()
{
	printf("%3d\n", 2);
	printf("%3d\n", 123);
	printf("%3d\n", 1);

  return 0;
}
0

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 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. Jest to zadanie 11. z "Pracy domowej" po rozdziale 3. w książce Stroustrupa "Programowanie. Teoria i praktyka z wykorzystaniem C++".

0

Ale skąd my mamy wiedzieć co umiesz a co nie?
Może chodzi o to żebyś sprawdził ile znaków ma najdłuższa liczba a następnie dla liczby krótszej dopisuje na początku za pomocą pętli spacje?

0

Najprawdopodobniej chodzi właśnie o dopisanie spacji, ale nie za pomocą pętli, bo ich jeszcze w tym rozdziale nie ma. Ja wiem o co chodzi w pętlach, ale autor dając to zadanie już po tym rozdziale pokazuje, że da się to zrobić najprostszymi metodami i takimi właśnie chciałbym to zrobić. Przy zadaniu jest napisane: "Aby wyrównać liczby do prawej, trzeba użyć wyobraźni, ale spróbuj - da się to zrobić." Więc nie jest to proste. Długo już nad tym siedzę, ale nie udało mi się tego zrobić. Stąd prośba o pomoc tutaj. Możesz pokazać jak chciałbyś wstawiać spacje przed liczbą? Z tym mam problem.

0
printf(" ");
// albo
cout<<" ";
//+
printf("%d",liczba);
//lub
cout<<liczba;

Ciężko mi cokolwiek zaproponować nie wiedząc co już umiesz a czego nie ;]

0

Mogę powiedzieć jeszcze, że mam to zrobić z użyciem biblioteki standardowej. Może podam kod, choć nie wiem czy to coś pomoże:

#include "std_lib_facilities.h"
int main()
{
    system ("chcp 1250");
    int a=1, b=1, c=1, d=1, e=1, f=1, g=1, h=1, i=1, j=1, k=1, l=1, m=1, n=1;
    string k1="kę", k2="kę", k3="kę", k4="kę", k5="kę", k6="kę", k7="kę";
    cout << "Ile masz jednogroszówek?\n";
    cin >> a;
    cout << "Ile masz dwugroszówek?\n";
    cin >> b;
    cout << "Ile masz pięciogroszówek?\n";
    cin >> c;
    cout << "Ile masz dziesięciogroszówek?\n";
    cin >> d;
    cout << "Ile masz dwudziestogroszówek?\n";
    cin >> e;
    cout << "Ile masz pięćdziesięciogroszówek?\n";
    cin >> f;
    cout << "Ile masz złotówek?\n";
    cin >> g;
    h=a/10;
    if (a==1)
    k1="kę";
    if ((a-10*h==2 || a-10*h==3 || a-10*h==4) && a!=12 && a!=13 && a!=14)
    k1="ki";
    if (a-10*h==0 || a-10*h==5 || a-10*h==6 || a-10*h==7 || a-10*h==8 || a-10*h==9 || a==11 || a==12 || a==13 || a==14)
    k1="ek";
    i=b/10;
    if (b==1)
    k2="kę";
    if ((b-10*i==2 || b-10*i==3 || b-10*i==4) && b!=12 && b!=13 && b!=14)
    k2="ki";
    if (b-10*i==0 || b-10*i==5 || b-10*i==6 || b-10*i==7 || b-10*i==8 || b-10*i==9 || b==11 || b==12 || b==13 || b==14)
    k2="ek";
    j=c/10;
    if (c==1)
    k3="kę";
    if ((c-10*j==2 || c-10*j==3 || c-10*j==4) && c!=12 && c!=13 && c!=14)
    k3="ki";
    if (c-10*j==0 || c-10*j==5 || c-10*j==6 || c-10*j==7 || c-10*j==8 || c-10*j==9 || c==11 || c==12 || c==13 || c==14)
    k3="ek";
    k=d/10;
    if (d==1)
    k4="kę";
    if ((d-10*k==2 || d-10*k==3 || d-10*k==4) && d!=12 && d!=13 && d!=14)
    k4="ki";
    if (d-10*k==0 || d-10*k==5 || d-10*k==6 || d-10*k==7 || d-10*k==8 || d-10*k==9 || d==11 || d==12 || d==13 || d==14)
    k4="ek";
    l=e/10;
    if (e==1)
    k5="kę";
    if ((e-10*l==2 || e-10*l==3 || e-10*l==4) && e!=12 && e!=13 && e!=14)
    k5="ki";
    if (e-10*l==0 || e-10*l==5 || e-10*l==6 || e-10*l==7 || e-10*l==8 || e-10*l==9 || e==11 || e==12 || e==13 || e==14)
    k5="ek";
    m=f/10;
    if (f==1)
    k6="kę" ;
    if ((f-10*m==2 || f-10*m==3 || f-10*m==4) && f!=12 && f!=13 && f!=14)
    k6="ki";
    if (f-10*m==0 || f-10*m==5 || f-10*m==6 || f-10*m==7 || f-10*m==8 || f-10*m==9 || f==11 || f==12 || f==13 || f==14)
    k6="ek";
    n=g/10;
    if (g==1)
    k7="kę";
    if ((g-10*n==2 || g-10*n==3 || g-10*n==4) && g!=12 && g!=13 && g!=14)
    k7="ki";
    if (g-10*n==0 || g-10*n==5 || g-10*n==6 || g-10*n==7 || g-10*n==8 || g-10*n==9 || g==11 || g==12 || g==13 || g==14)
    k7="ek";
    cout << "\nMasz " << a << " jednogroszów" << k1 << "."
            "\nMasz " << b << " dwugroszów" << k2 << "."
            "\nMasz " << c << " pięciogroszów" << k3 << "."
            "\nMasz " << d << " dziesięciogroszów" << k4 << "."
            "\nMasz " << e << " dwudziestogroszów" << k5 << "."
            "\nMasz " << f << " pięćdziesięciogroszów" << k6 << "."
            "\nMasz " << g << " złotów" << k7 << ".\n";
    double o=a, u=b, p=c, r=d, s=e, t=f, w=g, suma=0;
    suma=(o+u*2+p*5+r*10+s*20+t*50+w*100)/100;
    cout << "Wartość wszystkich Twoich monet: " << o+u*2+p*5+r*10+s*20+t*50+w*100 << " gr. ( " << suma << " zł.)\n\n";
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

std_lib_facilities.h to plik, który Stroustrup stworzył na potrzeby książki. Na razie nie ma różnic między nim a biblioteką standardową. Chodzi o to, żeby liczby tych poszczególnych monet były wyrównane do prawej. Myślę, że patrząc na ten program można dostrzec prymitywizm wiedzy czytelnika po przeczytaniu dopiero tego rozdziału

0

odpowiedz podal Ci juz Shalom oraz 9-ta linijka kodu javauser'a

1 użytkowników online, w tym zalogowanych: 0, gości: 1