#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct {
int ** array;
int ** pointers;
int stacks_number;
int size;
} Stacks_array;
void init_array( Stacks_array * array) {
// Ввод числа стеков
int N;
printf ( "\n Type number of stacks: " ) ; if ( ( scanf ( "%d" , & N
) == 0 ) || ( N
< 3 ) ) { }
array-> stacks_number = N;
// Ввод начальных размеров стеков
( * array
-> pointers
) = ( int ** ) malloc ( sizeof ( int * ) ) ; array
-> pointers
= ( int * ) malloc ( sizeof ( int ) * N
) ; array-> pointers[ 0 ] = 0 ;
for ( int i = 0 ; i < N; i++ ) {
int tmp;
printf ( "\n Type size of stack number %d: " , i
) ; if ( ( scanf ( "%d" , & tmp
) == 0 ) || ( tmp
< 2 ) ) { printf ( "\n Error. Try again.\n " ) ; i--;
continue ;
}
array-> pointers[ i + 1 ] = array-> pointers[ i] + tmp;
if ( i != N - 1 )
array-> size += tmp;
}
// Инициализация массива
array
-> array
= ( int * ) malloc ( sizeof ( int ) * array
-> size
) ; }
int main( ) {
Stacks_array array;
init_array( & array) ;
return 0 ;
}
// Инициализация массива
array
-> array
= ( int * ) malloc ( sizeof ( int ) * array
-> size
) ; }
int main( ) {
Stacks_array array;
init_array( & array) ;
return 0 ;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxtYWxsb2MuaD4KCnR5cGVkZWYgc3RydWN0ewogICAgaW50ICoqYXJyYXk7CiAgICBpbnQgKipwb2ludGVyczsKICAgIGludCBzdGFja3NfbnVtYmVyOwogICAgaW50IHNpemU7Cn1TdGFja3NfYXJyYXk7Cgp2b2lkIGluaXRfYXJyYXkoU3RhY2tzX2FycmF5ICphcnJheSl7CiAgICAvLyDQktCy0L7QtCDRh9C40YHQu9CwINGB0YLQtdC60L7QsgogICAgaW50IE47CiAgICBwcmludGYoIlxuVHlwZSBudW1iZXIgb2Ygc3RhY2tzOiAiKTsKICAgIGlmICgoc2NhbmYoIiVkIiwgJk4pID09IDApIHx8IChOIDwgMykpewogICAgICAgIHByaW50ZigiXG5FcnJvci4qXG4gIik7CiAgICAgICAgZXhpdCgtMSk7CiAgICB9CiAgICBhcnJheS0+c3RhY2tzX251bWJlciA9IE47CiAgICAvLyDQktCy0L7QtCDQvdCw0YfQsNC70YzQvdGL0YUg0YDQsNC30LzQtdGA0L7QsiDRgdGC0LXQutC+0LIKICAgICgqYXJyYXktPnBvaW50ZXJzKSA9IChpbnQqKiltYWxsb2Moc2l6ZW9mKGludCopKTsKICAgIGFycmF5LT5wb2ludGVycyA9IChpbnQqKW1hbGxvYyhzaXplb2YoaW50KSpOKTsKICAgIGFycmF5LT5wb2ludGVyc1swXSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGludCB0bXA7CiAgICAgICAgcHJpbnRmKCJcblR5cGUgc2l6ZSBvZiBzdGFjayBudW1iZXIgJWQ6ICIsIGkpOwogICAgICAgIGlmICgoc2NhbmYoIiVkIiwgJnRtcCkgPT0gMCkgfHwgKCB0bXAgPCAyKSkgewogICAgICAgICAgICBwcmludGYoIlxuRXJyb3IuIFRyeSBhZ2Fpbi5cbiAiKTsKICAgICAgICAgICAgaS0tOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgYXJyYXktPnBvaW50ZXJzW2kgKyAxXSA9IGFycmF5LT5wb2ludGVyc1tpXSArIHRtcDsKICAgICAgICBpZiAoaSAhPSBOIC0gMSkKICAgICAgICAgICAgYXJyYXktPnNpemUgKz0gdG1wOwogICAgfQogICAgLy8g0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0LzQsNGB0YHQuNCy0LAKICAgIGFycmF5LT5hcnJheSA9IChpbnQqKSBtYWxsb2Moc2l6ZW9mKGludCkqYXJyYXktPnNpemUpOwp9CgppbnQgbWFpbigpIHsKICAgIFN0YWNrc19hcnJheSBhcnJheTsKICAgIGluaXRfYXJyYXkoJmFycmF5KTsKICAgIHJldHVybiAwOwp9CiAgICAvLyDQmNC90LjRhtC40LDQu9C40LfQsNGG0LjRjyDQvNCw0YHRgdC40LLQsAogICAgYXJyYXktPmFycmF5ID0gKGludCopIG1hbGxvYyhzaXplb2YoaW50KSphcnJheS0+c2l6ZSk7Cn0KCmludCBtYWluKCkgewogICAgU3RhY2tzX2FycmF5IGFycmF5OwogICAgaW5pdF9hcnJheSgmYXJyYXkpOwogICAgcmV0dXJuIDA7Cn0=
compilation info
prog.c: In function 'init_array':
prog.c:23:24: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
(*array->pointers) = (int**)malloc(sizeof(int*));
^
prog.c:24:21: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
array->pointers = (int*)malloc(sizeof(int)*N);
^
prog.c:39:18: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
array->array = (int*) malloc(sizeof(int)*array->size);
^
prog.c: At top level:
prog.c:48:10: error: expected '=', ',', ';', 'asm' or '__attribute__' before '->' token
array->array = (int*) malloc(sizeof(int)*array->size);
^
prog.c:49:1: error: expected identifier or '(' before '}' token
}
^
prog.c:51:5: error: redefinition of 'main'
int main() {
^
prog.c:42:5: note: previous definition of 'main' was here
int main() {
^
stdout