fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. #include <locale.h>
  5. #include <stdbool.h>
  6. struct complexch
  7. {
  8. int Re;//действительная часть
  9. int Im;//мнимая часть
  10. };
  11. struct dynamic_array {
  12. void* data; //указатель на начало массива, какого типа массив неизвестно
  13. int length; //размер массива
  14. int item_size; //размер одного элемента
  15. };
  16. void readcomplex(void* element)
  17. {
  18. struct complexch* p= (struct complexch*)element;
  19. printf("Введите целую часть числа\n");
  20. printf("Re:");
  21. scanf("%d", &(p->Re));
  22. printf("Введите мнимую часть числа\n");
  23. printf("Im:");
  24. scanf("%d", &(p->Im));
  25. }
  26. struct dynamic_array* readarray (int n, int size, void (*readelement)(void*))
  27. {
  28. struct dynamic_array* array1=malloc(sizeof(struct dynamic_array));
  29. array1->data=malloc(n*size);
  30. array1->item_size=size;
  31. array1->length=n;
  32. for (int i=0;i<n;i++)
  33. {
  34. readelement(((char*)array1->data)+i*size);
  35. }
  36.  
  37. return array1;
  38. };
  39. void complexarray_output(struct dynamic_array* array1)
  40. {
  41. for (int i=0; i<array1->length; i++)
  42. {
  43. printf("element %d = %d+i%d\n", i, ((struct complexch*)array1->data)[i].Re, ((struct complexch*)array1->data)[i].Im);
  44. }
  45. };
  46.  
  47. int main()
  48. {
  49. int n=5;
  50. struct dynamic_array* p1=readarray(n,sizeof(struct complexch),readcomplex);
  51. complexarray_output(p1);
  52.  
  53. return 0;
  54. }
Success #stdin #stdout 0s 4440KB
stdin
1
2
1
2
1
2
2
2
3
3
stdout
Введите целую часть числа
Re:Введите мнимую часть числа
Im:Введите целую часть числа
Re:Введите мнимую часть числа
Im:Введите целую часть числа
Re:Введите мнимую часть числа
Im:Введите целую часть числа
Re:Введите мнимую часть числа
Im:Введите целую часть числа
Re:Введите мнимую часть числа
Im:element 0 = 1+i2
element 1 = 1+i2
element 2 = 1+i2
element 3 = 2+i2
element 4 = 3+i3