+ 1
C - Store Adjacent Digits in Single int Variable
My code accepts strings of characters and digits. Any characters will be converted to ASCII value, and each digit will be printed. So the input c35a will output: “ASCII value of c: 99” “3” “5” “ASCII value of a: 97” However, I would like to store all adjacent digits in a single int variable, then print the variable, so the output would be: “ASCII value of c: 99” “35” “ASCII value of a: 97” Here is the code: https://code.sololearn.com/c3ml5rK0ckF8/?ref=app
8 ответов
+ 7
NULL Editied the code, now the output is just like you need
https://code.sololearn.com/cqExXxtsX2In/?ref=app
+ 7
Here, my try
commented every thing that I have included you can set it according to your need :)
https://code.sololearn.com/cqExXxtsX2In/?ref=app
+ 2
int* numbers = malloc(inputSize);
const int IN = 1;
const int OUT = 0;
double num = 0.0;
double inc = 0.1;
int count = 1, c = 0, state = OUT;
for (i = 0; i < inputSize; i++) {
if (!isdigit(input[i])) {
letters[i] = input[i];
getASCII(letters[i]);
state = OUT;
}
else {
num += (input[i] - '0') * inc;
printf("\n%f", num); // shows every step
inc *= .1;
count *= 10;
state = IN;
}
if ( (state == OUT && num > 0.0) ||
(i == inputSize-1 && num > 0.0) ) {
numbers[c++] = (int)(num * count);
num = 0.0;
inc = 0.1;
count = 1;
}
}
for (i = 0; i < c; ++i)
printf("\ninteger is %d", numbers[i]);
+ 2
previous one was wrong. This one might not be elegant but does the job anyway and stores each integer group in an element of the container.
+ 2
nAutAxH AhmAd
Wow!!!! It’s perfect!! Thanks a ton!
+ 1
@C++ Soldier (Babak)
Okay, this is definitely a step forward. But how do I then clear the num variable for reuse? When entering “c25g89”, the num variable continues to store “25” along with “89.” So I end up with:
ASCII value of c: 99
52
ASCII value of g: 103
9852
Also, why does the num variable store the digits backwards? This part isn’t such an issue, I’m just wondering.
Thanks!
+ 1
@C++ Soldier (Babak)
Thanks! This works nicely! I’ll play around with it :)
+ 1
nAutAxH AhmAd
Great fix! Thanks!
How could I print the sum variable for adjacent digits only, rather than all the digits at the end of the function? For example, for the input “h98j76”, the program outputs the ASCII values of h and j, then prints “9876.” How could I print “ASCII of h”, “98”, “ASCII of j”, “76”?