int zagadka(int a, int b)
{
int c = 0;
if(b < 0) {
a = -a;
b = -b;
}
while(b > 0) {
c = c + a;
b = b - 1;
}
return c;
}
Czy jest to dobra metoda?
#include <iostream>
using namespace std;
int fun(int a[])
{
int b;
b=a[0]+a[1];
return b;
}
int main(void)
{
int a[2]={5,2};
int b = 3;
fun(a);
cout << b << endl;
return 0;
}
{
int nowe_a = a + b;
int nowe_b = a - b;
a = nowe_a;
b = nowe_b;
}
Powiemy że inny fragment kodu jest równoważny z danym jeśli
dla dowolnych wartości zmiennych a i b przed wykonaniem
fragmentu po wykonaniu wartości a i b zmienią się tak samo
zaś inne zmienne zachowają wartości. Podaj fragment
równoważny który używa tylko jedną zmienną pomocniczą
i zawiera te same obliczenia. Uzasadnij że nie da
się zrobić równoważnego fragmentu zawierającego te same
instrukcje obliczeniowe (tzn. jedną operację dodawania
i jedno odejmowanie) i nie używającego zmennych pomocniczych.
Napisz treść funkcji (zastąp kropki kodem) która dla zadanego wektora liczb całkowitych i liczby całkowitej k przesunie o k pozycji w prawo elementy wektora liczb całkowitych. Elementy na początku wektora należy zastąpić zerami. Wynik ma zastąpić (zniszczyć) elementy wektora wejściowego. Zakładamy że k jest nieujemne (nie sprawdzać tego).
#includeusing namespace std; void mininmum(vector <int> t, int k) { ... }
NWD(a, a) = a NWD(a, b) = NWD(r, b)gdzie r jest resztą z dzielenia a przez b. Użyj tą równość do napisania rekursywnej procedury obliczania wspólnego dzielnika. Następnie przerób to na wersję z pętlą 'while'. Użyj bibliotekę GMP by móc obliczać wspólny dzielnik dużych liczb.