Почему это пропущенные числа, когда я делю это? - PullRequest
0 голосов
/ 18 октября 2018

Вот код:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define BUFFER 512


void getCount(int *numCount, int *count);
int sumNumbers(int *numSum, int *sumNumOutput);

int main(void) {

  printf("Enter a number greater than 0: ");

  char string[BUFFER]; 
  int numMain = 0;
  int countMain = 0;
  int sumNumMain = 0;

  fgets(string, BUFFER, stdin); // gets user input and stores it in string

  numMain = atoi(string); // converts the string to numerical and sets sum to the value. If there is a letter in the string, it will be zero.

  int numCountMain = numMain;


int numSumNum = numMain;

  getCount(&numCountMain, &countMain); // gets how many integers there are
  sumNumbers(&numSumNum, &sumNumMain); 

  printf("Count: %d\n", countMain);
//  printf("Sum: %d\n", sumNumMain);
  return 0;
}

//shows how many integers were entered
void getCount(int *numCount, int *count){

  while(*numCount > 0){

  *numCount /= 10;
  ++*count;
}
return;
}

int sumNumbers(int *numSum, int *sumNumOutput){ // make it so that it isolates a number, then adds it to a universal sum variable
  int increment = 1;
  int count = 0;

  while(*numSum > 0){ // gets the count of the number

    while(*numSum > 0){

      *numSum /= increment;
      ++count;
      printf("numSum: %d\n",*numSum);
      increment *= 10;
    }
  }
}

Допустим, я поставил 12345 как число.Он отлично подсчитывает количество цифр, но когда он выделяет отдельные цифры с помощью деления, он пропускает третье число.В случае 12345 это будет: 12345 1234 12 0

Я думаю, что это случай инкремента, запущенного amok, но я не могу найти решение для этого.Также я знаю, что когда я это исправлю, это не решит проблему, заключающуюся в том, что я должен выделить отдельные номера.Вот тут-то и начинается приращение, и я знаю, что должен использовать модуль, но если кто-то может помочь мне с этим после того, как я позабочусь об этом, это тоже было бы здорово.

Кроме того, если это не такНе очевидно, что код, который имеет проблему, я предполагаю, это нижние строки.

1 Ответ

0 голосов
/ 18 октября 2018

Вы делите на 1, 10, 100, 1000. Таким образом, вы получаете 12345, 1234, 12.

Попробуйте

while (*numSum > 0) {
  ++count;
  printf("numSum: %d\n",*numSum);
  *numSum /= 10; 
}
...