アプリ版:「スタンプのみでお礼する」機能のリリースについて

すいません、今授業の課題で下のような課題をもらったんです。

数字を読み込み、カンマ編集して出力する。

例) 入力:1000000 出力:1,000,000

注) メイン処理のみで製作すること
   ポインタも使わない
   入力はscanfで

三桁区切りのカンマは、後ろから入れていくということは分かるのですが、書きかたがいまいちわかりません。どなたか教えてください。お願いします。

A 回答 (3件)

Cmachineという事はC言語を使うという事ですね? 言語や環境を書いておかないと適切な回答は得られませんよ。



-------------------------------------------------
#include <stdio.h>
#include <string.h>

#define ARRAY_SIZE 128

int main()
{
  char input[ARRAY_SIZE];
  char output[ARRAY_SIZE];
  int len;
  int i = 0;
  int j = 0;

  memset(input, 0, ARRAY_SIZE);
  memset(output, 0, ARRAY_SIZE);

  scanf("%s", input);
  len = strlen(input);

  while (i < len) {

    output[j] = input[i];
    i++;
    j++;
    if ( (len - i) % 3 == 0 ) {
      output[j] = ',';
      j++;
    }
  }

  if (output[j - 1] == ',') {
    output[j - 1] = '\0';
  }

  printf("output = %s\n", output);
  return 0;
}
-------------------------------------------------

エラーチェックが甘いけど、入力が正しければ、正常に動作すると思います。全角スペース入りなので、削除してからコンパイルしてください。

この回答への補足

書き込みありがとうございます。

すいません、言語はCで、コンパイラはCmachineです。

gimmikさんのプログラムできちんと動きましたが、#define ARRAY_SIZE 128 というのがまだ教わってないのでよくわかりません。

#define を使わずに実行する方法は無いでしょうか?

質問ばかりで申し訳ありません。

補足日時:2003/04/23 09:39
    • good
    • 0

はじめまして。



>、#define ARRAY_SIZE 128 というのがまだ教わってないのでよくわかりません。
ARRAY_SIZEは128です。って事です。宣言文でこれ以降ARRAY_SIZEが出てきたら128と読み替えてね。

>#define を使わずに実行する方法は無いでしょうか?
ARRAY_SIZEと記述されている部分を全て128に変更してください。#defineの行を削除。
    • good
    • 0
この回答へのお礼

ありがとうございます。

教えていただいたソースを参考に、自分なりに考えてみたら、できました!!

みなさん、どうもありがとうございました。

お礼日時:2003/04/24 18:15

文字列として処理しても良ければ、、、



#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
char chrInput[128];
scanf( "%s", &chrInput );

int nLen = strlen( chrInput );
int nParts = nLen / 3;
int nOdd = nLen % 3;

char chrOutput[128];
chrOutput[0] = '\0';
if( nOdd )
{
strncat( chrOutput, chrInput, nOdd );
}
for( int i=0; i<nParts; i++ )
{
strcat( chrOutput, "," );
strncat( chrOutput, &chrInput[nOdd+i*3], 3 );
}

printf( "Result = %s", chrOutput );return 0;
}

この回答への補足

書きこみありがとうございます!

初心者の研修なので、コンパイラはCmachineを使うことを義務付けられています。

Cマシーンでは9行目、int nLen = strlen(chrInput);
の所でエラーが出てしまいます…。

どうしたらいいでしょう?

補足日時:2003/04/23 06:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています