Your task is to develop a C program, called ascii2bin, that
reads a string of 1's and 0's as ASCII digits, and
outputs the equivalent decimal number
Your program must
exercises the read() system call to read a single byte, at a time, from stdin
validate that the read byte is appropriate for conversion, e.g., it must be either an ASCII '0' or '1'
converts each byte into an integer value via a mathematical expression
uses the resulting integer as part of the calcuation to determine the final number
identifies the end of a input string by either end of file or by a new line
End of file is detected when read() returns the value '0'
A new line is identified in the ASCII table as either: newline, nl, LF, or \n'
prints this final number on stdout
returns a value of 0 upon success and 1 otherwise
The Algorithm
offset = ?;
number = 0;
retval = read(0, &ascii_value, 1);
while (retval == 1)
digit = ascii_value - offset;
number = number << 1 + digit;
retval = read(0, &ascii_value, 1);
printf("%d\n", number);
return 0;
Validation Checks:
You should add additional validation checks to your code to catch potential errors. At a minimum, validate the following:
that each ASCII input character is one of the following characters: '0', '1', or '\n'
that the calculated number does not exceed 2^32
I am having trouble with this program I have most of the code but my output does not match the Professors completely:
#include <stdio.h>
#include <unistd.h>
int main()
{
int offset = 48; // ascii value of '0'
int number = 0;
char ascii_value;
int retval = read(0, &ascii_value, 1);
while ((retval == 1) && (ascii_value != '\n')) {
int digit = ascii_value - offset;
if ((digit == 1) || (digit == 0))
number = (number << 1) + digit;
retval = read(0, &ascii_value, 1);
}
printf("%u\n", number);
return 0;
}
These are his test file information:
$ script [login to view URL]
$ ascii2bin
0101
^d
5
$ cat [login to view URL] | ./ascii2bin ; echo $?
54356
0
$ cat [login to view URL] | ./ascii2bin ; echo $?
138
0
$ cat [login to view URL] | ./ascii2bin ; echo $?
2863311530
0
$ cat [login to view URL] | ./ascii2bin ; echo $?
4294967295
0
$ cat [login to view URL] | ./ascii2bin ; echo $?
1
I already did it. It works fine. Let me know if you need any help. Proposed code is below. I can swap out that "switch" for a simpler "if" statement if you like.
#include <stdio.h>
#include <unistd.h>
int main()
{
int offset = 48; // ascii value of '0'
int number = 0;
char ascii_value;
int digit;
int retval;
retval = read(0, &ascii_value, 1);
while (retval==1 && ascii_value != '\n') {
switch (ascii_value) {
case ('0'): //if ascii_value is 0 or 1 and number is not too big, break out of switch
case ('1'):
if (!(number & 0x80000000)) break;
default: return 0; //return 0 upon failure
}
digit = ascii_value - offset;
number = (number << 1) + digit;
retval = read(0, &ascii_value, 1);
}
printf("%u\n", number);
return 1;
}
$10 USD 1 gün içinde
0,0 (0 değerlendirme)
0,0
0,0
9 freelancers are bidding on average $22 USD for this job
HI..i am proficient in C/C++ programming with data structures, algorithms and can help you write the console program for reading strings of 0's and 1's and convert it to decimal.
###### Having Teaching Experience in C, Python, Data structure, Algorithm Design and Analysis ########
Hi, Greetings.
I am a computer engineer having masters in Mathematics, Computer Science and PhD in Computer Science. I have more than 10 years experience in developing algorithms of mathematical problems as well as computer related problems and their implementation using C, C++, Java, Python programming language.
I am teaching online now several student on data structure and algorithm, C, C++, Java, Python programming etc.
I would like to discuss in more detail with you to get your exact requirements. I am confident I can provide you efficient solution.
Here I put a tentative bid amount and days that can be fixed after understanding the project details.
I'm looking forward to your response.
Best regards,
Dear Sir.
As an experienced algorithm expert, it is very interesting to me.
I have been working on several data structure & algorithm projects such yours for over 7+ years.
Since having programming contestant experience, I have powerful algorithm skills and full knowledge on several languages on such as c/c++, python, java, etc...
I think i could be the right person for your project, because of my past experience and skills.
I would be very appreciated if i have a chance to show you how could i help you to meet your goals.
Thank you.
Viktor.
MASTERS IN COMPUTER ENGINEERING
EXPERT IN C
HELLO DEAR CLIENT
I have gone through your project details and the work is DOABLE since its within my area of EXPERTISE.I will tackle are required guideline to deliver desired goal Please consider my bid. THANKS.
Hi
I'm a senior software engineer with 3 years experience. I think I can help you with debugging your code. Please share the test case that is failing
Regards