CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
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 }