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