#include <stdio.h>
#include <string.h>
#define MAX_ELEMENTS 10
#define EMPTY_ELEMVAL 0
#define ARR_ISEMPTY(arr) ( (arr)[0] == EMPTY_ELEMVAL )//εάν το πρώτο τμήμα του arr είναι 0 τότε επέστρεψε 0 αλλιώς 1
#define ARR_ISFULL(arr, len) ( (arr)[(len)-1] != EMPTY_ELEMVAL )//εάν το τελευταίο τμήμα του arr είναι γεμάτο τότε επέστρεψε 0 αλλιώς 1
typedef enum { FALSE= 0 , TRUE } Bool; //Δημιούργησε ένα enum με τις μεταβλητές TRUE FALSE και τις τιμές 0 1 αντίστοιχα
// -------------------------------------------------------------------------------------
void arr_print( int arr[ ] , int maxelems )
{
register int i;
for ( i= 0 ; i < maxelems; i++ ) //ενώ(i=0;i είναι μικρότερο του maxelems;i++)
printf ( "%d " , arr
[ i
] ) ; //Εκτύπωσε το iοστό του arr
return ;
}
// -------------------------------------------------------------------------------------
int arr_append( int arr[ ] , int maxelems, int val)
{
if ( ARR_ISFULL( arr, maxelems) ) //εάν είναι γεμάτο το arr
return - 1 ;
if ( ARR_ISEMPTY( arr) ) { //εάν είναι άδειο το arr
arr[ 0 ] = val; //το val εκχωρείται στο arr[0]
return 0 ;
}
register int i;
for ( i= maxelems- 1 ; arr[ i] == EMPTY_ELEMVAL; i-- ) //ενώ(i=maxlems-1;το iοστό του arr = 0;i--)
;
arr[ ++ i] = val; //στο i+1 του arr εκχωρείται η τιμή του val
return i;
}
// -------------------------------------------------------------------------------------
Bool arr_prepend( int arr[ ] , int maxelems, int val)
{
if ( ARR_ISFULL( arr, maxelems) ) //εάν είναι γεμάτο το arr
return FALSE; //επέστρεψε 1
memmove ( & arr
[ 1 ] , & arr
[ 0 ] , ( maxelems
- 1 ) * sizeof ( int ) ) ; arr[ 0 ] = val; //το πρώτο του arr ισούται με 0
return TRUE; //επέστρψε 0
}
// --------------------------------------------------------------------------------------
int arr_elemindex( int arr[ ] , int maxelems, int val )
{
register int i;
for ( i= 0 ; i < maxelems && arr[ i] != val; i++ ) //ενώ(i=0;i είναι μικτρότερο του maxlems και το iοστό του arr δεν είναι ίσο με το val;i++)
;
return i == maxelems ? - 1 : i; //σε περίπτωση που το i είναι ίσο με το maxlems επέστρεψε -1 αλλιώς i
}
// -------------------------------------------------------------------------------------
Bool arr_delete( int arr[ ] , int maxelems, int val)
{
register int i;
register int elem = arr_elemindex( arr, maxelems, val) ;
if ( elem == - 1 ) //εάν το elem ισούται με -1
return FALSE; //επέστρεψε 1
for ( i= elem; arr[ i+ 1 ] != EMPTY_ELEMVAL && i < maxelems- 1 ; i++ ) //ενώ(i=elem;το (i+1)ιοστό του arr δεν είναι 0 και το i είναι μικρότερο του (maxlems-1);i++)
arr[ i] = arr[ i+ 1 ] ; //Το iοστό του arr είναι ίσο με το επόμενό του
arr[ i] = EMPTY_ELEMVAL; //Το iοστό του arr είναι 0
return TRUE;
}
// -------------------------------------------------------------------------------------
int delete_all( int arr[ ] , int maxelems) {
register int i;
for ( i= 0 ; i< maxelems; i++ ) { //ενώ(i=0;i είναι μικρότερο του maxelems;i++)
arr[ i] = 0 ; //το iοστό του arr = 0
}
return TRUE;
}
int main( void )
{
int arr[ MAX_ELEMENTS ] = { 10 , 20 , 30 , 40 , 50 , 60 , 70 , 80 , 0 , 0 } ;
arr_print( arr, MAX_ELEMENTS ) ;
delete_all( arr, MAX_ELEMENTS) ;
arr_print( arr, MAX_ELEMENTS ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYX0VMRU1FTlRTCTEwCiNkZWZpbmUgRU1QVFlfRUxFTVZBTAkwCgojZGVmaW5lIEFSUl9JU0VNUFRZKGFycikJKCAoYXJyKVswXSA9PSBFTVBUWV9FTEVNVkFMICkvL861zqzOvSDPhM6/IM+Az4HPjs+Ezr8gz4TOvM6uzrzOsSDPhM6/z4UgYXJyIM61zq/Ovc6xzrkgMCDPhM+Mz4TOtSDOtc+Azq3Pg8+Ez4HOtc+IzrUgMCDOsc67zrvOuc+Oz4IgMQojZGVmaW5lIEFSUl9JU0ZVTEwoYXJyLCBsZW4pCSggKGFycilbKGxlbiktMV0gIT0gRU1QVFlfRUxFTVZBTCApLy/Otc6szr0gz4TOvyDPhM61zrvOtc+Fz4TOsc6vzr8gz4TOvM6uzrzOsSDPhM6/z4UgYXJyIM61zq/Ovc6xzrkgzrPOtc68zqzPhM6/IM+Ez4zPhM61IM61z4DOrc+Dz4TPgc61z4jOtSAwIM6xzrvOu865z47PgiAxCgp0eXBlZGVmIGVudW0geyBGQUxTRT0wLCBUUlVFIH0gQm9vbDsvL86UzrfOvM65zr/Pjc+BzrPOt8+DzrUgzq3Ovc6xIGVudW0gzrzOtSDPhM65z4IgzrzOtc+EzrHOss67zrfPhM6tz4IgVFJVRSBGQUxTRSDOus6xzrkgz4TOuc+CIM+EzrnOvM6tz4IgMCAxIM6xzr3PhM6vz4PPhM6/zrnPh86xCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZvaWQgYXJyX3ByaW50KCBpbnQgYXJyW10sIGludCBtYXhlbGVtcyApCnsKCXJlZ2lzdGVyIGludCBpOwoKCWZvciAoaT0wOyBpIDwgbWF4ZWxlbXM7IGkrKykvL861zr3PjihpPTA7aSDOtc6vzr3Osc65IM68zrnOus+Bz4zPhM61z4HOvyDPhM6/z4UgbWF4ZWxlbXM7aSsrKQoJCXByaW50ZigiJWQgIiwgYXJyW2ldKTsvL86VzrrPhM+Nz4DPic+DzrUgz4TOvyBpzr/Pg8+Ez4wgz4TOv8+FIGFycgoJcHV0Y2hhcignXG4nKTsvL86VzrrPhM+Nz4DPic+DzrUgJ1xuJwoKCXJldHVybjsKfQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmludCBhcnJfYXBwZW5kKCBpbnQgYXJyW10sIGludCBtYXhlbGVtcywgaW50IHZhbCkKewoJaWYgKCBBUlJfSVNGVUxMKGFyciwgbWF4ZWxlbXMpICkvL861zqzOvSDOtc6vzr3Osc65IM6zzrXOvM6sz4TOvyDPhM6/IGFycgoJCXJldHVybiAtMTsKCglpZiAoIEFSUl9JU0VNUFRZKGFycikgKSB7ICAgICAgIC8vzrXOrM69IM61zq/Ovc6xzrkgzqzOtM61zrnOvyDPhM6/IGFycgoJCWFyclswXSA9IHZhbDsJCQkJLy/PhM6/IHZhbCDOtc66z4fPic+BzrXOr8+EzrHOuSDPg8+Ezr8gYXJyWzBdCgkJcmV0dXJuIDA7Cgl9CglyZWdpc3RlciBpbnQgaTsKCWZvciAoaT1tYXhlbGVtcy0xOyBhcnJbaV0gPT0gRU1QVFlfRUxFTVZBTDsgaS0tKS8vzrXOvc+OKGk9bWF4bGVtcy0xO8+Ezr8gac6/z4PPhM+MIM+Ezr/PhSBhcnIgPSAwO2ktLSkKCQk7CglhcnJbKytpXSA9IHZhbDsvL8+Dz4TOvyBpKzEgz4TOv8+FIGFyciDOtc66z4fPic+BzrXOr8+EzrHOuSDOtyDPhM65zrzOriDPhM6/z4UgdmFsCglyZXR1cm4gaTsKfQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkJvb2wgYXJyX3ByZXBlbmQoIGludCBhcnJbXSwgaW50IG1heGVsZW1zLCBpbnQgdmFsKQp7CglpZiAoIEFSUl9JU0ZVTEwoYXJyLCBtYXhlbGVtcykgKS8vzrXOrM69IM61zq/Ovc6xzrkgzrPOtc68zqzPhM6/IM+Ezr8gYXJyCgkJcmV0dXJuIEZBTFNFOwkJCQkvL861z4DOrc+Dz4TPgc61z4jOtSAxCgoJbWVtbW92ZSggJmFyclsxXSwgJmFyclswXSwgKG1heGVsZW1zLTEpICogc2l6ZW9mKGludCkgKTsKCWFyclswXSA9IHZhbDsgICAgICAgICAgICAgICAgICAvL8+Ezr8gz4DPgc+Oz4TOvyDPhM6/z4UgYXJyIM65z4POv8+Nz4TOsc65IM68zrUgMAoKCXJldHVybiBUUlVFOwkJCQkgICAvL861z4DOrc+Dz4TPgc+IzrUgMAp9Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmludCBhcnJfZWxlbWluZGV4KCBpbnQgYXJyW10sIGludCBtYXhlbGVtcywgaW50IHZhbCApCnsKCXJlZ2lzdGVyIGludCBpOwoJZm9yIChpPTA7IGkgPCBtYXhlbGVtcyAmJiBhcnJbaV0gIT0gdmFsOyBpKyspLy/Otc69z44oaT0wO2kgzrXOr869zrHOuSDOvM65zrrPhM+Bz4zPhM61z4HOvyDPhM6/z4UgbWF4bGVtcyDOus6xzrkgz4TOvyBpzr/Pg8+Ez4wgz4TOv8+FIGFyciDOtM61zr0gzrXOr869zrHOuSDOr8+Dzr8gzrzOtSDPhM6/IHZhbDtpKyspCgkJOwoJcmV0dXJuIGkgPT0gbWF4ZWxlbXMgPyAtMSA6IGk7ICAgICAgICAgICAgICAgLy/Pg861IM+AzrXPgc6vz4DPhM+Jz4POtyDPgM6/z4Ugz4TOvyBpIM61zq/Ovc6xzrkgzq/Pg86/IM68zrUgz4TOvyBtYXhsZW1zIM61z4DOrc+Dz4TPgc61z4jOtSAtMSDOsc67zrvOuc+Oz4IgaQp9Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQm9vbCBhcnJfZGVsZXRlKCBpbnQgYXJyW10sIGludCBtYXhlbGVtcywgaW50IHZhbCkKewoJcmVnaXN0ZXIgaW50IGk7CglyZWdpc3RlciBpbnQgZWxlbSA9IGFycl9lbGVtaW5kZXgoIGFyciwgbWF4ZWxlbXMsIHZhbCk7CglpZiAoIGVsZW0gPT0gLTEgKS8vzrXOrM69IM+Ezr8gZWxlbSDOuc+Dzr/Pjc+EzrHOuSDOvM61IC0xCgkJcmV0dXJuIEZBTFNFOy8vzrXPgM6tz4PPhM+BzrXPiM61IDEKCglmb3IgKGk9ZWxlbTsgYXJyW2krMV0gIT0gRU1QVFlfRUxFTVZBTCAmJiBpIDwgbWF4ZWxlbXMtMTsgaSsrKS8vzrXOvc+OKGk9ZWxlbTvPhM6/IChpKzEpzrnOv8+Dz4TPjCDPhM6/z4UgYXJyIM60zrXOvSDOtc6vzr3Osc65IDAgzrrOsc65IM+Ezr8gaSDOtc6vzr3Osc65IM68zrnOus+Bz4zPhM61z4HOvyDPhM6/z4UgKG1heGxlbXMtMSk7aSsrKQoJCWFycltpXSA9IGFycltpKzFdOy8vzqTOvyBpzr/Pg8+Ez4wgz4TOv8+FIGFyciDOtc6vzr3Osc65IM6vz4POvyDOvM61IM+Ezr8gzrXPgM+MzrzOtc69z4wgz4TOv8+FCglhcnJbaV0gPSBFTVBUWV9FTEVNVkFMOy8vzqTOvyBpzr/Pg8+Ez4wgz4TOv8+FIGFyciDOtc6vzr3Osc65IDAKCglyZXR1cm4gVFJVRTsKfQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppbnQgZGVsZXRlX2FsbChpbnQgYXJyW10saW50IG1heGVsZW1zKQl7CglyZWdpc3RlciBpbnQgaTsKCWZvcihpPTA7aTxtYXhlbGVtcztpKyspICAgIHsgICAgICAgICAgICAgICAgICAgICAvL861zr3PjihpPTA7aSDOtc6vzr3Osc65IM68zrnOus+Bz4zPhM61z4HOvyDPhM6/z4UgbWF4ZWxlbXM7aSsrKQoJYXJyW2ldID0gMDsJCQkJCSAvL8+Ezr8gac6/z4PPhM+MIM+Ezr/PhSBhcnIgPSAwCgl9CglyZXR1cm4gVFJVRTsKfQoKaW50IG1haW4oIHZvaWQgKQp7CglpbnQgYXJyWyBNQVhfRUxFTUVOVFMgXSA9IHsxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDAsIDB9OwoKCWFycl9wcmludCggYXJyLCBNQVhfRUxFTUVOVFMgKTsKCglkZWxldGVfYWxsKGFycixNQVhfRUxFTUVOVFMpOwoJCglhcnJfcHJpbnQoIGFyciwgTUFYX0VMRU1FTlRTICk7CgkKCXJldHVybiAwOwp9Cgo=