Lista 4 -- Wstęp do informatyki, W. Hebisch
#include <stdio.h> #include <stdlib.h> #define ILOSC_CYFR 40 void wczytaj_liczbe(char a[ILOSC_CYFR]) { int c; int i, j; for(i=0; i < ILOSC_CYFR; i = i + 1) { a[i] = 0; } c = getchar(); /* Zapisujemy cyfry w tablicy a, zaczynając od końca */ i = ILOSC_CYFR; while( c >= '0' && c <= '9' ) { if( i == 0) { printf("Zbyt duża ilość cyfr, maksymalnie %d\n", ILOSC_CYFR); exit(1); } i = i - 1; a[i] = c - '0'; c = getchar(); } /* Przesuwamy liczbę do początku tablicy a */ for(j=i; j < ILOSC_CYFR; j = j + 1) { a[j - i] = a[j]; } for(j=ILOSC_CYFR-i; j < ILOSC_CYFR; j = j + 1) { a[j] = 0; } } int main(void) { char a[ILOSC_CYFR]; char b[ILOSC_CYFR]; char c[ILOSC_CYFR]; int i; int przeniesienie=0; printf("Podaj pierwszą liczbę:\n"); wczytaj_liczbe(a); printf("Podaj drugą liczbę:\n"); wczytaj_liczbe(b); for(i=0; i<ILOSC_CYFR; i=i+1) { c[i] = a[i] + b[i] + przeniesienie; if( c[i]>9 ) { przeniesienie = 1; c[i] = c[i] - 10; } else { przeniesienie = 0; } } if( przeniesienie != 0) { printf("Nadmiar!!\n"); exit(1); } printf("Wynik = "); for(i=ILOSC_CYFR-1; i>=0; i=i-1) { putchar(c[i]+'0'); } putchar('\n'); return 0; }Wypróbować program. Pominąć drukowanie nieznaczących cyfr wyniku. Sprawdzić że zmiana stałej ILOSC_CYFR zmienia maksmalną dostępną ilość cyfr. Przerobić program tak by:
int zagadka(int a, int b) { int c = 0; if(b<0) { a = -a; } while( b>0 ) { c = c + a; b = b - 1; } return c; }Czy jest to dobra metoda?