Czytam sobie teraz jedną książkę o programowaniu - i doszedłęm do jakiegoś programu o nazwie "szybkie mnożenie" - może ktoś mi pomóc:
Mam taki kod:
//Szybkie mnożenie
#include<stdio.h>
#include<conio.h>
int szybkie_mnozenie (int, int);
int main()
{
int a, b, c;
printf("podaj liczby do mnozenia: \na= ");
scanf ("%d", &a);
printf ("b= ");
scanf("%d", &b);
c=szybkie_mnozenie(a,b);
printf("%d*%d=%d", a,b,c);
getch();
return 0;
}
int szybkie_mnozenie(int a, int b)
{
int c=0;
while(b!=0)
{
if(b%2!=0)
c=c+a;
a=a*2;
b=b/2;
}
return (c);
}
1. jeżeli "b" = 0 to program kończy swoje działanie i zwraca jako wynik mnożenia "c" czyli "0" - a czy nie powinno być : while(b!=0&&a!=0) żeby jeśli a=0 to też wynik był równy 0 ?????
2. I czy może mi ktoś wyjaśnić jak działa program ten gdy b jest różne 0 - chodzi mi o tę część kodu:
if(b%2!=0)
c=c+a;
a=a*2;
b=b/2;
o co w tym chodzi - jeśli reszta z dzielenia b przez 2 jest różna 0 to c przyjmuje wartość c+a..... przecież to jest bez sensu bo co jeśli reszta z dzielenia b przez 2 = 0 - nie rozumiem
?????
Mam taki kod:
//Szybkie mnożenie
#include<stdio.h>
#include<conio.h>
int szybkie_mnozenie (int, int);
int main()
{
int a, b, c;
printf("podaj liczby do mnozenia: \na= ");
scanf ("%d", &a);
printf ("b= ");
scanf("%d", &b);
c=szybkie_mnozenie(a,b);
printf("%d*%d=%d", a,b,c);
getch();
return 0;
}
int szybkie_mnozenie(int a, int b)
{
int c=0;
while(b!=0)
{
if(b%2!=0)
c=c+a;
a=a*2;
b=b/2;
}
return (c);
}
1. jeżeli "b" = 0 to program kończy swoje działanie i zwraca jako wynik mnożenia "c" czyli "0" - a czy nie powinno być : while(b!=0&&a!=0) żeby jeśli a=0 to też wynik był równy 0 ?????
2. I czy może mi ktoś wyjaśnić jak działa program ten gdy b jest różne 0 - chodzi mi o tę część kodu:
if(b%2!=0)
c=c+a;
a=a*2;
b=b/2;
o co w tym chodzi - jeśli reszta z dzielenia b przez 2 jest różna 0 to c przyjmuje wartość c+a..... przecież to jest bez sensu bo co jeśli reszta z dzielenia b przez 2 = 0 - nie rozumiem