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.