• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyrównanie tekstu w konsoli

Object Storage Arubacloud
0 głosów
2,521 wizyt
pytanie zadane 17 marca 2016 w C i C++ przez easytodo Mądrala (5,380 p.)

Witam, napisałem program gromadzący w pliku .txt dane o uczniów:
-numer ucznia
-imię
-nazwisko
-srednia ocen

Dane zapisane są w strukturze, funkcja wyświetlająca spełnia swoje zadanie w ten sposób:

Nr ucznia     Imie     Nazwisko     Srednia ocen
            1       Marcin      Gortat                6
            2       Jakub        Moch                 5
            3       Adrian       Nowakowski             3 (!!!)

KOD:

cout<<"Nr ucznia    Imie    Nazwisko    Srednia ocen"<<endl;

for (i=0;i<n;i++)
    {
        cout<<"\t"<<a[i].nr_u;
        cout<<"\t"<<a[i].imie;
        cout<<"\t"<<a[i].nazwisko;
        cout<<"\t\t"<<a[i].ocena<<endl;
    }

(!!!) - tutaj pojawia się problem. Imię i nazwisko to tablice char mające 15 znaków. Sęk w tym, że przy zbyt długim nazwisku ocena ucieka o 1 tabulator dalej. Tak więc w jaki sposób mogę zastąpić tabulatory i zrobić wyświetlanie w taki sposób, żeby zrobić sobie "margines bezpieczeństwa" w odległości i sprawić, aby wszystko było wyświetlanie 1 pod drugim bez takich przeskoków przy dłuższych nazwiskach/imionach?
 

@EDIT: Wszystko powinno być równo 1 pod drugim w przykładzie, tylko tutaj na forum ciężko to zrobić :)

2 odpowiedzi

+1 głos
odpowiedź 18 marca 2016 przez Sebastian Fojcik Nałogowiec (43,020 p.)
wybrane 24 marca 2016 przez easytodo
 
Najlepsza

Jeden TAB jest zbyt krótki by zmieścić nazwisko Nowakowski. Tab w konsoli ma długość 8 znaków. To znaczy, że jeśli nazwisko jest dłuższe, to zajmie tabelka się zepsuje. Nie ma na to rady. Konsola nie jest środowiskiem do wypisywania danych w taki sposób. Jedyne co mogę Ci polecić, to użycie modyfikatora strumienia setw(). Ustala on, na jakim polu ma zostać wypisany tekst / liczba.

Podam Ci teraz kod, Ty go przeanalizujesz i będziesz mógł dokładniej o tej funkcji doczytać. W razie problemów, pytaj :-)

#include <iomanip>

cout << right << setw( 5 ) << a[ i ].nr_u;
cout << " " << right << setw( 10 ) << a[ i ].imie;
cout << " " << right << setw( 10 ) << a[ i ].nazwisko;
cout << " " << right << setw( 5 ) << a[ i ].ocena << endl;

Wyjaśnienie do przykładu:
right / left wyrównanie do prawej lub do lewej
setw( n ) wypisane dane zajmą dokładnie n pól (chyba, że np. nazwisko będzie dłuższe niż 10 znaków, to wtedy musisz zwiększyć to pole)

–2 głosów
odpowiedź 17 marca 2016 przez niezalogowany
Ehh, Google jest aż tak trudne do opanowania?

http://bfy.tw/4oDK

Podobne pytania

0 głosów
1 odpowiedź 3,637 wizyt
pytanie zadane 21 listopada 2017 w C i C++ przez Kabuuz Bywalec (2,820 p.)
0 głosów
2 odpowiedzi 4,419 wizyt
pytanie zadane 3 kwietnia 2016 w C i C++ przez chet Nowicjusz (170 p.)
0 głosów
1 odpowiedź 547 wizyt
pytanie zadane 17 lutego 2020 w HTML i CSS przez j.cob_21 Początkujący (350 p.)

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...