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ć?
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ć?
<iomanip> + manipulatory setw i right
#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;
}
#include <stdio.h>
int main ()
{
printf("%3d\n", 2);
printf("%3d\n", 123);
printf("%3d\n", 1);
return 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++".
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?
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.
printf(" ");
// albo
cout<<" ";
//+
printf("%d",liczba);
//lub
cout<<liczba;
Ciężko mi cokolwiek zaproponować nie wiedząc co już umiesz a czego nie ;]
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
odpowiedz podal Ci juz Shalom oraz 9-ta linijka kodu javauser'a