C - program do tablicowania cyfr

0

Witam zaczynam właśnie swoją przygodę z C. Chcę napisać program któremu będę podawał 10 różnych cyfr a on każdą z nich powiększoną o 8 razy zapisze do tablicy pod indeks od 0 do 9. Jak na razie mam taki kod jak poniżej i wydaję mi się, że powinien działać jednak zwraca on jakieś głupoty... Gdy podaje pokolei cyfry 1-10 to przyjmuje tylko do 6 i wyrzuca takie cuś:

Wartosc pola 0 w tablicy wynosi 392
Wartosc pola 1 w tablicy wynosi 80
Wartosc pola 2 w tablicy wynosi 400
Wartosc pola 3 w tablicy wynosi 80
Wartosc pola 4 w tablicy wynosi 408
Wartosc pola 5 w tablicy wynosi 80
Wartosc pola 6 w tablicy wynosi 416
Wartosc pola 7 w tablicy wynosi 80
Wartosc pola 8 w tablicy wynosi 424
Wartosc pola 9 w tablicy wynosi 80

Proszę o sprawdzenie kodu i napomknięcie co jest jest źle i o jakieś krótkie wytłumaczenie.

#include <stdio.h>
#define ROZMIAR 10

int tab_lica[ROZMIAR];
int c, i, a;

main()
{
     while((c = getchar()) != EOF && i<ROZMIAR) {
                                  a=(putchar(c))*8;
                                  tab_lica[i] = a;
                                  i=i+1;
      }

       for(i=0;i<ROZMIAR;i++)
                      printf("Wartosc pola %d w tablicy wynosi %d \n \n", i, tab_lica[i])
}

return 0;
 

pozdrawiam

1

Najpierw zdecyduj się, czy liczba ma być powiększona o 8, czy 8 razy, bo to różnica :)
Zmienne nazywaj zgodnie z ich przeznaczeniem, a nie a,b,c,d...
Po co zmienne globalne? Walnij je w mainie, niech się nie pałętają byle gdzie :)

A teraz przeczytaj jakie warningi i errory wyrzuca Ci po próbie kompilacji.
http://ideone.com/T2mJV

0

sorrki przepisywałem ten kod z lapka bez dostępu do sieci a nie kopiowałem i popełniłem byki :P u mnie program się kompiluje tylko zwraca głupoty - poprawiony kod:

#include <stdio.h>
#define ROZMIAR 10
 

 
main()
{
     int tab_lica[ROZMIAR];
     int c, i, a;
     i=0;

     while((c = getchar()) != EOF && i<ROZMIAR) {
                                  a=(putchar(c))*8;
                                  tab_lica[i] = a;
                                  i=i+1;
      }
 
       for(i=0;i<ROZMIAR;i++) {
                      printf("Wartosc pola %d w tablicy wynosi %d \n \n", i, tab_lica[i]);
       }
}

Np. przy wejściu "123456789" na wyjściu dostaje

123456789Wartosc pola 0 w tablicy wynosi 392 
 
Wartosc pola 1 w tablicy wynosi 400 
 
Wartosc pola 2 w tablicy wynosi 408 
 
Wartosc pola 3 w tablicy wynosi 416 
 
Wartosc pola 4 w tablicy wynosi 424 
 
Wartosc pola 5 w tablicy wynosi 432 
 
Wartosc pola 6 w tablicy wynosi 440 
 
Wartosc pola 7 w tablicy wynosi 448 
 
Wartosc pola 8 w tablicy wynosi 456 
 
Wartosc pola 9 w tablicy wynosi 0 
0

Mnożysz wartość kodu ascii znaku razy 8. Wszystko się zgadza. Pobierasz wcześniej typ char, a później rzutujesz go na int.

0

zapewne chcesz coś takiego: a=(putchar(c)-'0')*8;

1 użytkowników online, w tym zalogowanych: 0, gości: 1