プログラム代行

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
炎王龍

プログラム代行

#1

投稿記事 by 炎王龍 » 9年前

プログラムについて
ポインタ、構造体、ファイル処理、2次元配列、switch文のなかから二種類以上
関数main含めて二種類以上
50行から100行まで
この条件でプログラム組める方いますか?
自分は四則計算できるプログラム作ろうと思ったのですがきつかったです。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: プログラム代行

#2

投稿記事 by みけCAT » 9年前

いるとは思いますが、課題の丸投げは禁止です。
フォーラムルールをお読みください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: プログラム代行

#3

投稿記事 by みけCAT » 9年前

炎王龍 さんが書きました:ポインタ、構造体、ファイル処理、2次元配列、switch文のなかから二種類以上
関数main含めて二種類以上
50行から100行まで
この条件でプログラム組める方いますか?
とりあえずいることを示すため、条件を満たすプログラムを書いてみました。

コード:

void
sub
(
int
*
a
)
{
*
a
=
10
;
}
int
main
(
void
)
{
int
n
;
sub
(
&
n
)
;
switch
(
n
)
{
case
0
:
return
1
;
break
;
case
10
:
n
=
0
;
break
;
case
100
:
return
2
;
break
;
default
:
return
3
;
break
;
}
return
n
;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)


かずま

Re: プログラム代行

#5

投稿記事 by かずま » 9年前

炎王龍 さんが書きました: ポインタ、構造体、ファイル処理、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;
}
どういう入力を与えたら、どういう実行結果になるのかを考えてください。
理解できない場合は、プログラムのどの部分が分からないのかを質問してください。

炎王龍

Re: プログラム代行

#6

投稿記事 by 炎王龍 » 9年前

かずまさん
このプログラムは、このまま実行すると四則計算ができるプログラムですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: プログラム代行

#7

投稿記事 by softya(ソフト屋) » 9年前

かずまさんは、フォーラムルールをご熟読ください。
もし賛同できないことがあれば、Dixqさんと相談してください。
行動的にはフォーラムルールを無視されている様にしか見えません。

炎王龍さん。この掲示板では宿題代行は行っておりません。
ここで作り方について相談していただくことは出来ますが、他人任せで宿題をしてくれるのは知恵袋ぐらいだと思ってください。
よろしくお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1889
登録日時: 11年前

Re: プログラム代行

#8

投稿記事 by usao » 9年前

オフトピック
>この条件でプログラム組める方いますか?
これが質問内容

>自分は…きつかったです。
ここは単なる自身の経験談

…ということで実は雑談なのかもしれない.
(タイトルが全然そうなってないけど)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: プログラム代行

#9

投稿記事 by softya(ソフト屋) » 9年前

オフトピック
まぁ、このまま出したところで本人が考えたんじゃないってレベルなのでモロバレなんですけどね。
会社の課題だったりしたら、自分で自分を追い込むことになりかねません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: プログラム代行

#10

投稿記事 by Dixq (管理人) » 9年前

softyaさん
確かにかずまさんの投稿はフォーラムの方針とは違いますが、
回答者に回答の仕方を指図する権利は無いとフォーラムルールに記述しているので、
回答のやり方は自由にして頂いていいと思っています。
このようなやり取りが増えると丸投げも増えるでしょうけど・・。

炎王龍さん
名前を統一して投稿してください。
似た様なトピックを連立させないでください。
またフォーラムルールを守った投稿をお願いします。
もう一つのトピックの方に回答を書きますね。

閉鎖

“C言語何でも質問掲示板” へ戻る