プログラムについて
ポインタ、構造体、ファイル処理、2次元配列、switch文のなかから二種類以上
関数main含めて二種類以上
50行から100行まで
この条件でプログラム組める方いますか?
自分は四則計算できるプログラム作ろうと思ったのですがきつかったです。
プログラム代行
Re: プログラム代行
とりあえずいることを示すため、条件を満たすプログラムを書いてみました。炎王龍 さんが書きました:ポインタ、構造体、ファイル処理、2次元配列、switch文のなかから二種類以上
関数main含めて二種類以上
50行から100行まで
この条件でプログラム組める方いますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: プログラム代行
炎王龍 さんが書きました: ポインタ、構造体、ファイル処理、2次元配列、switch文のなかから二種類以上
関数main含めて二種類以上
50行から100行まで
#include <stdio.h> // fopen, fgets, printf, puts, FILE
#include <stdlib.h> // strtod
#include <ctype.h> // isspace
typedef struct {
unsigned char c;
const char *p;
} Expr;
const char o[] = "+-*/";
int get(Expr *e)
{
do e->c = *e->p++; while (isspace(e->c));
return e->c;
}
double expr(Expr *e, const char *b)
{
double v;
if (*b)
for (v = expr(e, b+2); e->c == b[0] || e->c == b[1]; )
switch (e->c) {
case '+': v += expr(e, b+2); break;
case '-': v -= expr(e, b+2); break;
case '*': v *= expr(e, b+2); break;
case '/': v /= expr(e, b+2); break;
}
else
switch (get(e)) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9': case '.':
v = strtod(e->p-1, (char**)&e->p); get(e); break;
case '(': v = expr(e, o); e->c == ')' ? get(e) : (e->c = 1); break;
case '+': v = expr(e, b); break;
case '-': v = -expr(e, b); break;
default: v = e->c = 1;
}
return v;
}
int calc(const char *s, double *v)
{
Expr e;
e.p = s;
*v = expr(&e, o);
return e.c;
}
int main(int argc, char *argv[])
{
char buf[4][256]; double v; FILE *fp = stdin;
if (argc == 2) {
fp = fopen(argv[1], "r");
if (!fp) return 1;
}
while (fgets(buf[0], sizeof buf, fp) && buf[0][0] != '.')
calc(buf[0], &v) ? puts(" error") : printf(" %.15g <== %s", v, buf);
return 0;
}
理解できない場合は、プログラムのどの部分が分からないのかを質問してください。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: プログラム代行
かずまさんは、フォーラムルールをご熟読ください。
もし賛同できないことがあれば、Dixqさんと相談してください。
行動的にはフォーラムルールを無視されている様にしか見えません。
炎王龍さん。この掲示板では宿題代行は行っておりません。
ここで作り方について相談していただくことは出来ますが、他人任せで宿題をしてくれるのは知恵袋ぐらいだと思ってください。
よろしくお願いします。
もし賛同できないことがあれば、Dixqさんと相談してください。
行動的にはフォーラムルールを無視されている様にしか見えません。
炎王龍さん。この掲示板では宿題代行は行っておりません。
ここで作り方について相談していただくことは出来ますが、他人任せで宿題をしてくれるのは知恵袋ぐらいだと思ってください。
よろしくお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: プログラム代行
オフトピック
>この条件でプログラム組める方いますか?
これが質問内容
>自分は…きつかったです。
ここは単なる自身の経験談
…ということで実は雑談なのかもしれない.
(タイトルが全然そうなってないけど)
これが質問内容
>自分は…きつかったです。
ここは単なる自身の経験談
…ということで実は雑談なのかもしれない.
(タイトルが全然そうなってないけど)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: プログラム代行
オフトピック
まぁ、このまま出したところで本人が考えたんじゃないってレベルなのでモロバレなんですけどね。
会社の課題だったりしたら、自分で自分を追い込むことになりかねません。
会社の課題だったりしたら、自分で自分を追い込むことになりかねません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: プログラム代行
softyaさん
確かにかずまさんの投稿はフォーラムの方針とは違いますが、
回答者に回答の仕方を指図する権利は無いとフォーラムルールに記述しているので、
回答のやり方は自由にして頂いていいと思っています。
このようなやり取りが増えると丸投げも増えるでしょうけど・・。
炎王龍さん
名前を統一して投稿してください。
似た様なトピックを連立させないでください。
またフォーラムルールを守った投稿をお願いします。
もう一つのトピックの方に回答を書きますね。
確かにかずまさんの投稿はフォーラムの方針とは違いますが、
回答者に回答の仕方を指図する権利は無いとフォーラムルールに記述しているので、
回答のやり方は自由にして頂いていいと思っています。
このようなやり取りが増えると丸投げも増えるでしょうけど・・。
炎王龍さん
名前を統一して投稿してください。
似た様なトピックを連立させないでください。
またフォーラムルールを守った投稿をお願いします。
もう一つのトピックの方に回答を書きますね。