始めたばかりでよくわからないんですけど、
最初にnの値を入力して、各入力を行った後、目的を実行する以下のプログラムを作成しなさい。ただし、nの大きさは100を超えないものとする。n枚の伝票の金額を入力した後、その合計を求めるプログラムにおいて一次元配列を引数で渡すと各計算をして結果を返してくれる関数を作り、この関数を使って、その計算を表示するプログラムを作りなさい。という問題です。よろしくお願いします。
C言語でわからない問題があります。
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: C言語でわからない問題があります。
このフォーラムでは課題の丸投げは禁じられています。コンペ さんが書きました:始めたばかりでよくわからないんですけど、
最初にnの値を入力して、各入力を行った後、目的を実行する以下のプログラムを作成しなさい。ただし、nの大きさは100を超えないものとする。n枚の伝票の金額を入力した後、その合計を求めるプログラムにおいて一次元配列を引数で渡すと各計算をして結果を返してくれる関数を作り、この関数を使って、その計算を表示するプログラムを作りなさい。という問題です。よろしくお願いします。
まず、コンペさんがどこまで書けたか、またどこから分からないのかを明示してくださいますか?フォーラムルール さんが書きました:
課題の丸投げ(問題文だけ書く事)は禁止です。
ただし上のように記載してもらえればこれは当てはまりません。
自分でどこまでやったのか、今どこが解らないのかを明確にして下さい。
さっぱり解らず、手も足も出ない時は、その事を明記の上、
勉強方法からアドバイスを受けましょう。
どうしても提出期限の関係で答えが欲しい時はその事をしっかり明記の上、
回答者さん達の理解を求めるようにしましょう。
また、解決した時は、「解決しました」とだけ言って去らず、ソースコードや解決した方法を明記して下さい。
同じ事で困っている人の為に過去ログに有用な情報を残すようお願いします。
例えば、nは読み込めるけどそれ以降の伝票の金額の入力の受け取り方が分からないなどです。
フォーラムルールにあるテンプレートを使っていただいても構いません。
詳しくはフォーラムルールをお読みください。
ソースコード投稿時はインデントをしっかりと行ったうえcodeタグで囲ってください。これについてもフォーラムルールに書かれているので確認してください。
Re: C言語でわからない問題があります。
暇だったのでざっくり書いてみました。
まともに書くとちょっと長くなるのでだいぶ手抜きです。 おかげでちょっと汚いです。
金額の上限が分からなかったのでとりあえず1024桁まで対応してみました。
10兆円でも高々13桁なので、1024桁もあれば金額としては十分だという判断です。
これだけあれば、地球丸ごと買えます。 多分。
関数に1次元配列を渡します。 関数は結果を返します。 条件は満たしていると思います。
まともに書くとちょっと長くなるのでだいぶ手抜きです。 おかげでちょっと汚いです。
金額の上限が分からなかったのでとりあえず1024桁まで対応してみました。
10兆円でも高々13桁なので、1024桁もあれば金額としては十分だという判断です。
これだけあれば、地球丸ごと買えます。 多分。
関数に1次元配列を渡します。 関数は結果を返します。 条件は満たしていると思います。
#include <stdio.h>
#include <string.h>
#define BSIZE 1024
char* sum(char *base, char *add)
{
int i, j, len = strlen(add);
for(i = 0; i < len; i++){
int tmp = (base[i] ? base[i] - '0' : 0) + add[len - i - 1] - '0';
base[i] = tmp % 10 + '0';
for(j = i + 1; tmp /= 10; j++){
tmp = base[j] + 1 - (base[j] ? '0' : 0);
base[j] = tmp % 10 + '0';
}
}
return base;
}
int main(void)
{
int i, n;
char *ans, buf1[BSIZE] = "", buf2[BSIZE];
scanf("%d", &n);
//n回入力して計算
for(i = 0; i < n; i++){
scanf("%s", buf2);
ans = sum(buf1, buf2);
}
//結果の出力
ans += strlen(ans) - 1;
while(ans >= buf1){
printf("%c", *ans--);
}
printf("%s", "\n");
return 0;
}