For the life of me, I cannot figure out my my program is parsing out and not compiling. All my brackets seem on point. Thanks!
My task at hand is:
You are required to write a C program that accepts two decimal integers, say d and r. You may assume that the rst decimal integer d is nonnegative and that the second decimal integer r which represents the radix, will be one of 2, 3, 4, : : :, 15, 16. The program should convert the rst decimal integer d into its representation in radix r and print the result. Examples: (i) Suppose the rst decimal integer is 138 and the second decimal integer is 16. In this case, the output produced by your program should be 8A, which is the hexadecimal (radix 16) representation of the decimal integer 138. (ii) Suppose the rst decimal integer is 284 and the second decimal integer is 13. In this case, the output produced by your program should be 18B, which is the radix 13 representation of the decimal integer 284. (In base 13, the digits used are 0, 1, 2, : : :, 9, A, B and C, where A, B and C represent 10, 11 and 12 respectively.) Your program should be written so that it handles just one pair of integers. Thus, the outline for your program is as follows. (Note that no error checks are needed.) 1. Prompt the user to type two decimal integers. 2. Read the two integers. 13. Convert the rst integer into its representation in the radix specied by the second integer. 4. Print the representation and stop. Your program must read the two integers from stdin and write the answer to stdout. You may assume that when prompted, the user will type two integers separated by one or more spaces. Note: Recall that for any radix r 2, the digits to be used are 0, 1, : : :, r 1. Use the letters A, B, C, D, E and F to represent 10, 11, 12, 13, 14 and 15 respectively, as done in the hexadecimal system. Thus, representations in radix 11 can use the digits 0, 1, : : :, 9, A; representations in radix 12 can use 0, 1, : : :, 9, A, B, and so on.� Blockquote
My code thus far is:
#include <stdio.h>
#include <stdlib.h>
#define OFFA 55
#define OFF0 48
struct charNode{
char digit;
struct charNode *next;}; struct charNode *head;
int NextParse(int *, int);
char charint( int ); char pop();
void push( char );
struct charNode *newCharNode( );
int main(void)
{int decimal,radix;
printf( "Two num required:\n" );
scanf( "%d%d", &decimal, &radix );
do{push( charint( NextParse( &decimal, radix )));}
while( decimal >0 );
while( head != NULL )
{printf( "%c", pop( ) );}
printf( "\n" ); return 0;}
int NextParse( int *decimal,int radix )
{ int digit=*decimal%radix; *decimal = *decimal/radix;
return digit;
char (int x) {
if ( x > 35 )
{
printf("This radix is too large, try again"); exit(1);
}
else if (x > = 10) return (char) (x + OFFA);
else return (char) (x + OFF0);
}
void push(char digit) {
struct charNode *temp;
if (head == NULL) {
head = newCharNode(); head -> digit = digit; head -> next = NULL;}
else {temp= newCharNode( ); temp -> digit=digit; temp -> next=head;head=temp;}
}
char pop(void) {
char digit; struct charNode *temp;
if (head == NULL) {
printf("Cannot complete this task. Empty s tack");
exit(2);}
else {
temp = head; digit = head -> digit;
head = head -> next; free(temp); return digit;}}
struct charNode *newCharNode(void) {
struct charNode *memory = (struct charNode *) malloc(sizeof(struct charNode)); //memory adress for new node
if (memory == NULL) {
printf("Could not allocate memory"); exit(3);
}
else return memory;
}
Thanks for helping out.