parciales/2022-2C-1p/1.cpp (1782B)
1 #include <iostream> 2 3 #define ULTIMO_DIGITO_PADRON 8 4 5 int main(){ 6 int *A, *C, *F; 7 int **B; 8 int H = 20 + ULTIMO_DIGITO_PADRON; 9 10 A = new int[3]; 11 12 for (int i = 0; i < 3; i++) { 13 A[i] = H + i; 14 } 15 16 C = new int; 17 (*C) = A[1]; // C = 20 + ULTIMO_DIGITO_PADRON + 1 18 F = A + 2; // es equivalente a F = &A[2] (aritmética de punteros) 19 20 std::cout << (*F) << (*C) << A[0] << std::endl; 21 // (*F) = A[2] == 20 + ULTIMO_DIGITO_PADRON + 2 == 30 22 // (*C) = A[1] == 20 + ULTIMO_DIGITO_PADRON + 1 == 29 23 // A[0] = 20 + ULTIMO_DIGITO_PADRON = 28 24 // la linea anterior imprime `302928\n` 25 26 B = new int*[3]; // arreglo de punteros a int 27 B[0] = C; // B[0] = C = A + 1 28 B[1] = F; // B[1] = F = A + 2 29 B[2] = &H; // B[2] = *(B + 2) = &H = 20 + ULTIMO_DIGITO_PADRON 30 31 std::cout << *B[1] << **B << *B[2] << std::endl; 32 // *B[1] = *(*(B + 1)) = *F = A[2] = 20 + ULTIMO_DIGITO_PADRON + 2 33 // **B = *(B[0]) = *C = A[1] = 20 + ULTIMO_DIGITO_PADRON + 1 34 // *B[2] = H = 20 + ULTIMO_DIGITO_PADRON 35 // la linea anterior imprime `302928\n` 36 37 (*B[0]) = (*F) + 3; // *B[0] = *F + 3 == A[2] + 3 38 H++; 39 A[2] = (*C) + 1; // A[2] = *C + 1 = A[1] + 1 == 29 + 1 40 41 std::cout << *C << *B[1] << *B[2] << std::endl; 42 // *C = *B[0] = (*F) + 3 = A[2] + 3 == 20 + ULTIMO_DIGITO_PADRON + 2 + 3 43 // *B[1] = *F = A[2] = (*C) + 1 = *(B[0]) + 1 == 33 + 1 44 // *B[2] = H = 20 + ULTIMO_DIGITO_PADRON + 1 (++); 45 // la linea anterior imprime `333429\n` 46 47 F = C; 48 C = A + 2; 49 (**B) = A[0]; 50 A[2] = ** (B + 2); 51 52 std::cout << H << (*C) << (*F) << std::endl; 53 // H == 20 + ULTIMO_DIGITO_PADRON + 1 (++) 54 // *C = A[2] = *(*(B+2)) = *B[2] = H = 20 + ULTIMO_DIGITO_PADRON + 1 (++) 55 // *F = *C = 20 + ULTIMO_DIGITO_PADRON 56 // la linea anterior imprime `292928\n` 57 58 delete[] B; 59 delete F; 60 delete[] A; 61 return 0; 62 }
