matematykaszkolna.pl
c++ hiko: zadanie c++ kod: #include <iostream> using namespace std; int main(int argc, char* argv[]) { char t[] = "AB"; cout << argc << endl; cout << t << endl; t[1] = t[0]; if (argc >= 0) main(−1, NULL); return 0; } nie rozumiem, dlaczego wynikiem tego programu jest: 1 AB −1 AB <− a dlaczego nie AA, przeciez dokonano podmiany
26 paź 20:07
jc: Bo najpierw piszesz, a potem zamieniasz.
26 paź 20:27
hiko: a no tak, dzieki jeszcze jakby ktos mi mogl objasnic działanie funkcji swap w kodzie: #include <iostream> using namespace std; void swap(char t[], int i, int j) { t[i] = t[j]; t[j] = t[i]; t[i] = t[j]; } void inv(char t[], int a) { int i = 0; while (i<a/2) { swap(t, i, a − i − 1); i++; } } int main() { char t[] = "A NA KEI ZDUNA FELA"; inv(t, (sizeof t) − 1); cout << t << endl; return 0; } rozumiem, ze jest to działanie XOR, ale jak to wygląda na char?
26 paź 20:39
hiko: poprawiony fragment kodu: t[i] ^^= t[j]; t[j] ^^= t[i]; t[i] ^^= t[j]; oczywiscie w ^^ powienien być pojedynczy znak
26 paź 20:42
jc: ^^ działa na każdym bicie niezależnie: 1100 ^^ 1010 = 0110 a ← a ^^ b b ← b ^^ a = b ^^ a ^^ b = a a ← a ^^ b = a ^^ b ^^ a = b czyli faktycznie zachodzi zamiana
26 paź 21:15
hiko: a jak to sie liczy np. dla A i B ?
26 paź 21:20
hiko: nie zauwazylem posta wyzej
26 paź 21:20
hiko: dzieki
26 paź 21:22