Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program w c++ pomocy

Ostatnio zmodyfikowano 2012-11-02 14:33
Autor Wiadomość
kanarus
Temat założony przez niniejszego użytkownika
Program w c++ pomocy
» 2012-11-02 13:47:17
Witam jestem studentem informatyki a konkretnie grafiki 3D pech chciał że w naszym programie znalazło się programowanie w języku c++ o którym nie mam pojęcia a dostałem następujące zadanie.

Cytat:

Tworzenie tekstów
1.Korzystając z tablic opisanych w rozdziale 2.1.5 podręcznika, napisz program, który wypisze słownie liczbę całkowitą z przedziału od 1 do 999.
2.Program zmodyfikuj tak, aby najpierw stworzył cały tekst, a potem go wydrukował jednym wywołaniem funkcji printf.
3.Program zmodyfikuj tak, aby powtarzał wczytywanie liczby i drukowanie jej tekstem tak długo, jak długo wartość podanej liczby mieści się w przedziale od 1 do 999.


co do tablic z podręcznika wygląda to tak :

Cytat:
Drukowanie tekstu liczby całkowitej z przedziału od 1 do 999.
Aby usprawnić składanie tekstu, zdefiniujemy tablice wskaźników zainicjowane wskazaniami na teksty jednostek, dziesiątek i setek.
C/C++
int * Jednostki[] = { , jeden , dwa , trzy ,..., dziewiec ,
    dziesiec , jedenascie ,..., dziewietnascie };
int * Dziesiatki[] = { , , dwadziescia , trzydziesci ,...,
    osiemdziesiat , dziewiecdziesiat };
int * Setki[] = { , sto , dwiescie , trzysta , czterysta ,
    , piecset ,..., osiemset , dziewiecset };
Aby nie powtarzać tworzenia, inicjowania i usuwania tych tablic, należy je zdefiniować na poziomie globalnym (na zewnątrz funkcji) lub lokalnie jako statyczne (static int). Zauważmy, że początkowe elementy tych tablic wskazują na teksty puste, aby nie drukować słowa „zero”.
W rozbieraniu liczby na setki, dziesiątki i jednostki (liczby mniejsze od 20 traktujemy jako jednostki) wykorzystamy operator reszty z dzielenia (%) oraz operator dzielenia całkowitego (gdy oba argumenty operatora / są całkowite, operator odrzuca część ułamkową wyniku). Jeżeli zmienna Liczba jest całkowita o wartości od 1 do 999, to tę wartość wydrukuje następujący ciąg instrukcji.
C/C++
int k = Liczba;
printf( Setki[ k / 100 ] );
k %= 100;
if( k > 19 ) {
    printf( Dziesiatki[ k / 10 ] );
    k %= 10;
}
printf( Jednostki[ k ] );

Jeżeli chcemy dokonać syntezy tekstu w tablicy, to zamiast funkcji printf użyjemy funkcji strcat. Wcześniej musimy jednak o odpowiedni rozmiar tablicy wynikowej. Najdłuższy tekst, to zapis wartości 999 i razem ze spacjami ma on 38 znaków. Musimy też uwzględnić ogranicznik końca tekstu. Potrzebujemy zatem tablicy na 40 znaków (dokładnie 39). Nasz algorytm będzie następujący.
C/C++
char T[ 40 ] = { );
    int k = Liczba;
    strcat( T, Setki[ k / 100 ] );
    k %= 100;
    if( k > 19 ) {
        strcat( T, Dziesiatki[ k / 10 ] );
        k %= 10;
    }
    strcat( T, Jednostki[ k ] );
Ponieważ teksty inicjujące tablice kończą się spacjami, ostatnim znakiem złożonego tekstu jest spacja. Możemy ją usunąć nadpisując ją bajtem zerowym.
C/C++
k = strlen( T );
if( k > 0 ) T[ k - 1 ] = ;

Teraz możemy wydrukować cały tekst
C/C++
printf( % d = % s\n , Liczba, T );

ja nic z tego nie rozumiem proszę o pomoc w tym zadaniu bedę bardzo wdzięczny
P-68186
matka5432
» 2012-11-02 14:33:46
1.Stworz sobie 3 tablice poleceniem std::string nazwa_tablicy[10] -->> http://cpp0x.pl/kursy/Kurs-C++/Poziom-2 /Tablice-jednowymiarowe/292
W kursie bedziesz mial: int nazwa_tablicy[jakas_wartosc];    ja ci mowie, zebys zamiast int wpisal std::string, poniewaz string to format najprosciej mowiac znakow (ty wlasnie to potrzebujesz), a int to format liczb.
do kazdej zapisz kolejno jednosci, dziesiatki, setki. Do zerowej nie zapisuj nic.

2. Zagniezdz 3 petle for czyli:  (n_z - nazwa zmiennej)    -->> http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Zagniezdzanie-petli/347


C/C++
for( n_z1 = 0; n_z1 > 9; n_z1++ )
{
   
   
    for( n_z2 = 0; n_z2 > 9; n_z2++ )
    {
       
        for( n_z3 = 0; n_z3 > 9; n_z3++ )
        {
            std::cout << tablica_setki[ n_z1 ];
            std::cout << tablica_dziesiatki[ n_z2 ];
            std::cout << tablica_jednosci[ n_z3 ] << endl; // endl oznacza przeskok do nastepnej linijki, czyli enter ;)
        }
    }
}
P-68196
« 1 »
  Strona 1 z 1