[C++] Długość liczby w zapisie

Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[C++] Długość liczby w zapisie

Post autor: Peter Zof »

Cześć! Mam taki oto program (:

Kod: Zaznacz cały

#include <iostream>
#include <stdlib.h>
#include <ctime>
#include <math.h>
using namespace std;

int main()
{
    srand(time(NULL));
    int tab[4][5];
    int i,j,c;



        for (j=0;j<5;j++)
        {
         for (i=0;i<4;i++)
            tab[i][j]=(rand()%20)-10;
        }

          for (j=0;j<5;j++)
            {
            for (i=0;i<4;i++)
            cout << "  " << tab[i][j];
            cout << endl;

            }
return 0;

}
Program generuje do tablicy 4x5 liczby z zakresu <-10;10> jednak mam pewien problem. Chcialbym aby za pomoca jakiejs zmiennej dowiadywal sie ile liczba z danej pozycji tablicy ma "znakow". Np. gdy pod [0][0] wartosc bedzie wynosila: -4 to tamta zmienna (zliczajaca) ilosc znakow przyjmie wartosc: 2. Z gory dzieki za pomoc! (:
Ostatnio zmieniony 5 lis 2012, o 21:40 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] Długość liczby w zapisie

Post autor: Althorion »

Chcialbym aby za pomoca jakiejs zmiennej dowiadywal sie ile liczba z danej pozycji tablicy ma "znakow". Np. gdy pod [0][0] wartosc bedzie wynosila: -4 to tamta zmienna (zliczajaca) ilosc znakow przyjmie wartosc: 2.
Nie rozumiem niestety, co chcesz uzyskać.
Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[C++] Długość liczby w zapisie

Post autor: Peter Zof »

Ok to teraz napisze powoli (:

Jak wiadomo liczby do tablicy generowane sa losowo: pierwszy element tablicy to: [0][0]...i temu elementowi zostaje przypisana wartosc z zakresu liczb: <-10;10>. Tak samo jest z kazdym innym elementem tablicy, a wiec mam cala tablice zapelniona liczbami. Chce ja sobie wydrukowac na ekranie...jednak wydruk jest brzydki z takiej racji, ze. Jedna liczba zajmuje jeden znak (np. cyfra trzy). Inna z kolei zajmuje dwa znaki (np. cyfra minus trzy). a inna z kolei trzy znaki (np. -10) (: Przez co wydruk jest brzydki (bo sie jakby przepychaja). Chcialbym uzyc takiej funkcji czy tam warunku dzieki ktoremu wiedzielbym z ilu znakow sklada sie poszczegolny element tablicy (:
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] Długość liczby w zapisie

Post autor: Althorion »

1. Jeśli chodzi o sam wydruk, to wystarczą Ci formatery wyjścia, konkretnie ten -> ... tors/setw/
2. Jeśli nie, to możesz na przykład tak:

Kod: Zaznacz cały

unsigned int ileZnakow (int liczba) {
  unsigned int dlugosc = 1;
  
  if (liczba < 0) {
    ++dlugosc;
    liczba = -liczba;
  }
  while (liczba /= 10)
    ++dlugosc;
  
  return (dlugosc);
}
Rozumiesz co ten kod robi i dlaczego działa?
Awatar użytkownika
Peter Zof
Użytkownik
Użytkownik
Posty: 585
Rejestracja: 30 cze 2012, o 16:07
Płeć: Mężczyzna
Lokalizacja: Warszawa (MIMUW) / Pułtusk
Podziękował: 88 razy
Pomógł: 66 razy

[C++] Długość liczby w zapisie

Post autor: Peter Zof »

Tak rozumiem i sorka że tak późno odpisałem ale nie było mnie na forum
Dzięki wielkie, spróbuje najpierw z formaterami wyjścia Jeszcze raz wielkie dzięki
ODPOWIEDZ