I have made this simpletron code:
Code:
#include<stdio.h>
/*****************/
#define SIZE 100
#define READ 10
#define WRITE 11
#define LOAD 20
#define STORE 21
#define ADD 30
#define HALT 43
/*****************/
void inputArry( int * );
void code( int *, int *, int *, int *, int *, int * );
void printArray( int * );
int valid( int );
/*****************/
int main()
{
int memory[ SIZE ] = { 0 };
int opC = 0, oper = 0;
int acc = 0, instReg = 0;
int instC = 0;
int i;
inputArry( memory );
code( memory, &instReg, &opC, &oper, &acc, &instC );
printf( "\n\n" );
printArray( memory );
printf( "\n\n" );
return 0;
} /* End Main */
/*****************/
/****************************/
void inputArry( int *memoryPtr )
{
long int inst;
int i = 0;
printf( "00 ? " );
scanf( "%ld", &inst );
while( inst != -99999 )
{
if( !valid( inst ) )
{
printf( "Invalid number!!\nEnter Again!\n\n" );
}
else
{
memoryPtr[ i ] = inst;
i++;
}
printf( "%02d ? ", i );
scanf( "%ld", &inst );
}
}
/****************************/
void code( int *memoryPtr, int *instRegPtr, int *opCPtr, int *operPtr, int *accPtr, int *instCPtr )
{
int a;
*instRegPtr = memoryPtr[ *instCPtr ];
*opCPtr = *instRegPtr / 100;
*operPtr = *instRegPtr % 100;
while( *opCPtr != HALT )
{
switch( *opCPtr )
{
case READ:
{
printf( "Enter Integer: " );
scanf( "%d", &a );
memoryPtr[ *operPtr ] = a;
( *instCPtr )++;
break;
}
case WRITE:
{
printf( "%02d contains = %d\n", *operPtr, memoryPtr[ *operPtr ] );
( *instCPtr )++;
break;
}
case LOAD:
{
*accPtr = memoryPtr[ *operPtr ];
( *instCPtr )++;
break;
}
case STORE:
{
memoryPtr[ *operPtr ] = *accPtr;
( *instCPtr )++;
break;
}
case ADD:
{
*accPtr = a + memoryPtr[ *operPtr ];
( *instCPtr )++;
break;
}
} /* End Switch */
*instRegPtr = memoryPtr[ *instCPtr ];
*opCPtr = *instRegPtr / 100;
*operPtr = *instRegPtr % 100;
} /* End While */
} /* End code */
void printArray( int *memoryPtr )
{
int i;
for( i = 0; i <= 9 ; i++ )
{
printf( " %5d ", i );
}
for( i = 0; i < SIZE; i++ )
{
if( i % 10 == 0 )
{
printf( "\n\n%2d", i );
}
printf( " %+05d ", memoryPtr[ i ] );
}
}
int valid( int word )
{
return word >=-99999 && word <= 99999;
}
the problem is that whenever i enter the sentinel "-99999" the program stays idle and doesn't print the array
it should print the array
please help!
i am really sorry for the long code, but please! i need help on this!