0

そのため、問題を解決するためのより小さな単純なプログラムを作成しようとしています。このため、ユーザーが 1 と 0 のみを含む数値を入力したことを確認してから、この数値を使用して除算を実行します。たとえば、数値 11010 または 10111 です。ここで私の問題は、この数値を格納するために整数を宣言した場合 (次のように)、すべての数字が 1 または 0 であることを確認する方法がないことです。

int userInput;

これで、配列を使用できます。(これを行う方法は知っていますが、これは2番目の問題につながります。)そのようです:

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

int main (int argc, char *argv[]){
    int myArray[20];
    int i, input, length;
    printf("Please enter how long your number is: \n");
    scanf("%d", &length);
    for (i = 0; i < length; i++){
        printf("Please enter digit %d of your array\n", i+1);
        scanf("%d", &input);
        assert ((input == 1) || (input ==0));


    }

たとえば、ユーザーが最初の数字に「1」を入力し、2 番目の数字に「0」を入力し、3 番目の数字に「0」を入力します。ただし、この番号を「取得」する必要があります。この数字「100」を取得して算術演算を実行するにはどうすればよいでしょうか。これが理にかなっていることを願っています。モデレーターでない場合は、解決する機会をください。

編集:多くの人がモジュロアプローチを提案しています。しかし、配列でこれを行うことができるかどうかはまだ知りたいです。つまり、ユーザーが配列に入力した各要素に等しい整数変数とセットを作成しています。

4

6 に答える 6

1

これはもっと簡単だと思います:

bool is_zeros_and_ones(int n) {
  for (; n != 0; n /= 10) {
    int mod = n % 10;
    if (0 != mod && 1 != mod) {
      return false;
  }
  return true;
}

したがって、整数を入力して、配列なしでテストできます。

于 2013-08-03T14:09:08.460 に答える
0

たぶん、このようなもので十分でしょう

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

int main (int argc, char *argv[]){
    int myArray[21];
    printf("Please enter your number (max 20 digits)\n");
    scanf("%s", myArray);
    for (i = 0; i < strlen(myArray); i++){
        assert ((myArray[i] == 1) || (myArray[i] == 0));
    }
于 2013-08-03T14:10:00.940 に答える