#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <locale.h>
#include <stdbool.h>
struct complexch
{
int Re; //действительная часть
int Im; //мнимая часть
} ;
struct dynamic_array {
void * data; //указатель на начало массива, какого типа массив неизвестно
int length; //размер массива
int item_size; //размер одного элемента
} ;
void readcomplex( void * element)
{
struct complexch* p= ( struct complexch* ) element;
printf ( "Введите целую часть числа\n " ) ; printf ( "Введите мнимую часть числа\n " ) ; }
struct dynamic_array* readarray ( int n, int size, void ( * readelement) ( void * ) )
{
struct dynamic_array
* array1
= malloc ( sizeof ( struct dynamic_array
) ) ; array1-> item_size= size;
array1-> length= n;
for ( int i= 0 ; i< n; i++ )
{
readelement( ( ( char * ) array1-> data) + i* size) ;
}
return array1;
} ;
void complexarray_output( struct dynamic_array* array1)
{
for ( int i= 0 ; i< array1-> length; i++ )
{
printf ( "element %d = %d+i%d\n " , i
, ( ( struct complexch
* ) array1
-> data
) [ i
] .
Re , ( ( struct complexch
* ) array1
-> data
) [ i
] .
Im ) ; }
} ;
int main( )
{
int n= 5 ;
struct dynamic_array* p1= readarray( n, sizeof ( struct complexch) , readcomplex) ;
complexarray_output( p1) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hbGxvYy5oPgojaW5jbHVkZSA8bG9jYWxlLmg+CiNpbmNsdWRlIDxzdGRib29sLmg+CnN0cnVjdCBjb21wbGV4Y2gKICAgICAgICAgewogICAgICAgICAgICAgaW50IFJlOy8v0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90LDRjyDRh9Cw0YHRgtGMCiAgICAgICAgICAgICBpbnQgSW07Ly/QvNC90LjQvNCw0Y8g0YfQsNGB0YLRjAogICAgICAgICB9OwpzdHJ1Y3QgZHluYW1pY19hcnJheSB7CnZvaWQqIGRhdGE7IC8v0YPQutCw0LfQsNGC0LXQu9GMINC90LAg0L3QsNGH0LDQu9C+INC80LDRgdGB0LjQstCwLCDQutCw0LrQvtCz0L4g0YLQuNC/0LAg0LzQsNGB0YHQuNCyINC90LXQuNC30LLQtdGB0YLQvdC+CmludCBsZW5ndGg7IC8v0YDQsNC30LzQtdGAINC80LDRgdGB0LjQstCwCmludCBpdGVtX3NpemU7IC8v0YDQsNC30LzQtdGAINC+0LTQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwCn07CnZvaWQgcmVhZGNvbXBsZXgodm9pZCogZWxlbWVudCkKewoJc3RydWN0IGNvbXBsZXhjaCogcD0gKHN0cnVjdCBjb21wbGV4Y2gqKWVsZW1lbnQ7CiAgICBwcmludGYoItCS0LLQtdC00LjRgtC1INGG0LXQu9GD0Y4g0YfQsNGB0YLRjCDRh9C40YHQu9CwXG4iKTsKICAgICBwcmludGYoIlJlOiIpOwogICAgIHNjYW5mKCIlZCIsICYocC0+UmUpKTsKICAgICBwcmludGYoItCS0LLQtdC00LjRgtC1INC80L3QuNC80YPRjiDRh9Cw0YHRgtGMINGH0LjRgdC70LBcbiIpOwogICAgIHByaW50ZigiSW06Iik7CiAgICAgc2NhbmYoIiVkIiwgJihwLT5JbSkpOwp9CnN0cnVjdCBkeW5hbWljX2FycmF5KiByZWFkYXJyYXkgKGludCBuLCBpbnQgc2l6ZSwgdm9pZCAoKnJlYWRlbGVtZW50KSh2b2lkKikpCnsKCXN0cnVjdCBkeW5hbWljX2FycmF5KiBhcnJheTE9bWFsbG9jKHNpemVvZihzdHJ1Y3QgZHluYW1pY19hcnJheSkpOwoJYXJyYXkxLT5kYXRhPW1hbGxvYyhuKnNpemUpOwoJYXJyYXkxLT5pdGVtX3NpemU9c2l6ZTsKCWFycmF5MS0+bGVuZ3RoPW47Cglmb3IgKGludCBpPTA7aTxuO2krKykKCXsKCQlyZWFkZWxlbWVudCgoKGNoYXIqKWFycmF5MS0+ZGF0YSkraSpzaXplKTsKCX0KCQoJcmV0dXJuIGFycmF5MTsKfTsKCXZvaWQgY29tcGxleGFycmF5X291dHB1dChzdHJ1Y3QgZHluYW1pY19hcnJheSogYXJyYXkxKQogewogICAgIGZvciAoaW50IGk9MDsgaTxhcnJheTEtPmxlbmd0aDsgaSsrKQogICB7CiAgICAgICBwcmludGYoImVsZW1lbnQgJWQgPSAlZCtpJWRcbiIsIGksICgoc3RydWN0IGNvbXBsZXhjaCopYXJyYXkxLT5kYXRhKVtpXS5SZSwgKChzdHJ1Y3QgY29tcGxleGNoKilhcnJheTEtPmRhdGEpW2ldLkltKTsKICAgfQogfTsKCmludCBtYWluKCkKewoJaW50IG49NTsKCXN0cnVjdCBkeW5hbWljX2FycmF5KiBwMT1yZWFkYXJyYXkobixzaXplb2Yoc3RydWN0IGNvbXBsZXhjaCkscmVhZGNvbXBsZXgpOwogICAgY29tcGxleGFycmF5X291dHB1dChwMSk7CiAgICAKICAgIHJldHVybiAwOwp9