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

Wyrównanie tekstu w konsoli

VPS Starter Arubacloud
0 głosów
2,517 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,611 wizyt
pytanie zadane 21 listopada 2017 w C i C++ przez Kabuuz Bywalec (2,820 p.)
0 głosów
2 odpowiedzi 4,390 wizyt
pytanie zadane 3 kwietnia 2016 w C i C++ przez chet Nowicjusz (170 p.)
0 głosów
1 odpowiedź 513 wizyt
pytanie zadane 17 lutego 2020 w HTML i CSS przez j.cob_21 Początkujący (350 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...