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

Wysrodkowanie tabeli C++

Object Storage Arubacloud
0 głosów
1,239 wizyt
pytanie zadane 4 grudnia 2016 w C i C++ przez godlo9888 Nowicjusz (210 p.)
​​​​​​#include <iostream>

using namespace std;

int main()
{
    cout <<"N "<<" 10*N "<<" 100*N "<<" 1000*N "<<" N^2 "<<" N^3 "<< endl;

    for (int i=1; i<=15; i++)
    {
        cout<<i<<"   "<<i*10<<"    "<<i*100<<"    "<<i*1000<<"    "<<i*i<<"    "<<i*i*i<<endl;
    }
    return 0;
}

 

 

Witam

Chce uzyskać efekt wyśrodkowania kolumn. Mam jakoś użyć if czy jak? 

3 odpowiedzi

+2 głosów
odpowiedź 4 grudnia 2016 przez plkpiotr Stary wyjadacz (12,420 p.)
wybrane 5 grudnia 2016 przez godlo9888
 
Najlepsza

Możemy to zrobić za pomocą cout.width() lub setw(), wpisując jako argument szerokość pola jaki ma zająć wyświetlany typ danych.

#include<iostream>
#include<iomanip>
using namespace std;

int main() {
    cout << setw(2) << "N" << setw(7) << "10*N" << setw(8) << "100*N" << setw(9) << "1000*N" << setw(6) << "N^2" << setw(7) << "N^3" << endl;
    for (int i = 1; i <= 15; i++)
        cout << setw(2) << i << setw(7) << i * 10 << setw(8) << i * 100 << setw(9) << i * 1000 << setw(6) << i*i << setw(7) << i*i*i << endl;
    return 0;
}

W moim przykładzie użyłem drugiego rozwiązania, przy którym musimy pamiętać o dołączeniu nagłówka <iomanip>, uzyskując tym samym na wyjściu:

 N    10*N   100*N   1000*N   N^2    N^3
 1     10     100     1000     1      1
 2     20     200     2000     4      8
 3     30     300     3000     9     27
 4     40     400     4000    16     64
 5     50     500     5000    25    125
 6     60     600     6000    36    216
 7     70     700     7000    49    343
 8     80     800     8000    64    512
 9     90     900     9000    81    729
10    100    1000    10000   100   1000
11    110    1100    11000   121   1331
12    120    1200    12000   144   1728
13    130    1300    13000   169   2197
14    140    1400    14000   196   2744
15    150    1500    15000   225   3375

Więcej o formatowaniu strumienia możesz poczytać tutaj: CPP0X - Obsługa strumienia cout


Edycja: Najprostsze z rozwiązań printf():

#include<stdio.h>

int main() {
    for (int i = 1; i <= 15; i++)
        printf("%2d %4d %5d %6d %4d %5d\n",i,i*10,i*100,i*1000,i*i,i*i*i);
    return 0;
}
komentarz 4 grudnia 2016 przez godlo9888 Nowicjusz (210 p.)
A z tym cout.width() to jak to będzie wyglądało?

PS:

Musze to samo zadanie zrobić w Javascript to w javie masz pomysł jak to zrobić?
komentarz 4 grudnia 2016 przez plkpiotr Stary wyjadacz (12,420 p.)

Z cout.width(), będziemy mieli stosunkowo nieczytelny kod dlatego, że dotyczy ona tylko najbliżej operacji wyjścia, czyli musielibyśmy przy każdej danej do wyświetlania napisać tą funkcję. Funkcję cout.width() widzę bardziej przy pojedynczych danych.

JavaScript nie znam - w odróżnieniu od podstaw Javy, jednak jeśli potrzebujesz uzyskać coś podobnego w Javie użyj starej, wdzięcznej funkcji printf() znanej jeszcze z C ; ) 

C/C++:

#include<stdio.h>

int main() {
    int a = 13;
    int b = 44;
    printf("Wyswietlam zmienna a: %4d oraz zmienna b: %4d", a, b);
    return 0;
}

Java:

public static void main(String[] args) {
   int a = 13;
   int b = 44;
   System.out.printf("Wyswietlam zmienna a: %4d oraz zmienna b: %4d", a, b);
}

Gdzie pomiędzy specyfikatorem dostępu %, a typem wpisujesz szerokość pola dla danej.

1
komentarz 4 grudnia 2016 przez godlo9888 Nowicjusz (210 p.)
Ok, dzięki już sobie poradziłem z Javscript.
+1 głos
odpowiedź 4 grudnia 2016 przez JAKUBW Nałogowiec (33,470 p.)
Tak, zrób funkcję, która doda odpowiednią ilość zer przed liczbą (jeżeli liczba jest mniejsza od 10 pisz 3 zera i tą liczbę itd.). I przy wpisywaniu liczb użyj tej funkcji.
+1 głos
odpowiedź 4 grudnia 2016 przez Paweł Głomski Obywatel (1,650 p.)

Po prostu użyj tabulacji:

	for (int i = 1; i <= 15; i++)
		std::cout << i << "\t"<< i * 10 << "\t" << i * 100 << "\t" << i * 1000 << "\t" << i*i << "\t" << i*i*i << "\t" << std::endl;

 

komentarz 5 grudnia 2016 przez godlo9888 Nowicjusz (210 p.)
W javascript też jest takowa tabulacja? Jeżeli nie to moze wiesz czym to zastąpić?
komentarz 5 grudnia 2016 przez Paweł Głomski Obywatel (1,650 p.)
Przykro mi, nigdy nie interesowałem się tym językiem...

Podobne pytania

0 głosów
3 odpowiedzi 1,166 wizyt
pytanie zadane 13 stycznia 2019 w C i C++ przez VinVix Nowicjusz (240 p.)
0 głosów
1 odpowiedź 687 wizyt
pytanie zadane 15 sierpnia 2019 w SQL, bazy danych przez Yousarian Nowicjusz (140 p.)
+1 głos
1 odpowiedź 200 wizyt
pytanie zadane 8 września 2016 w SQL, bazy danych przez polishbandit Początkujący (330 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...