すいません 急ぎで解答をお願いします。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tennga
記事: 13
登録日時: 7年前

すいません 急ぎで解答をお願いします。

#1

投稿記事 by tennga » 7年前

コーヒー豆の名前と100gあたりの値段をメンバとして持つ構造体
を定義し,以下の3種の豆を定義する.
• Mocha 350円/100g
• Kona 450円/100g
• Blend 300円/100g
標準入力からコーヒー豆の名前と重量(g)を入力したときに,価格
を標準出力に出力するプログラムを作成せよ.

出力がこうなります。
$ ./a.out
豆の種類: Blend
分量(g): 350
価格: 1050

冷やかしなどはいりません
すみません雑な質問ですけど解答していただければ助かります、、、

アバター
asd
記事: 319
登録日時: 13年前

Re: すいません 急ぎで解答をお願いします。

#2

投稿記事 by asd » 7年前

オフトピック
tennga さんが書きました: 冷やかしなどはいりません
すみません雑な質問ですけど解答していただければ助かります、、、
過去、質問するだけしておいて解決しようとしない「冷やかし質問」ばかりしておいてそれはないですよ。

http://dixq.net/forum/viewtopic.php?f=3&t=19203
http://dixq.net/forum/viewtopic.php?f=3&t=19179
http://dixq.net/forum/viewtopic.php?f=3&t=19156
http://dixq.net/forum/viewtopic.php?f=3&t=19103

自分の望む解答(回答ではない)以外を「冷やかしなど」と表現されているようでは、
まともな回答はつかないと思います。
構造体の定義は分かりますか?
実際にコーヒー豆の構造体を定義するところから始めてはいかがでしょうか。
それが分かれば実行中にキーボードから入力を受け付け受け取る部分を追加し、
入力された値に応じて適切な構造体から100g単価を取得した上で入力されたグラム数から合計額を計算し出力する流れになるかと思います。

ここは仕様を書くと自動でプログラムが作成される場ではないと思いますので、
まずはできるところからやってみてください。
Advanced Supporting Developer
無理やりこじつけ(ぉ

アバター
purin52002
記事: 235
登録日時: 7年前
連絡を取る:

Re: すいません 急ぎで解答をお願いします。

#3

投稿記事 by purin52002 » 7年前

まずは自分で書けるところまで書いてみてください。
そのあとデバッグしていきましょう。

、、、というのもやっぱり冷やかしになってしまうのかしらorz
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

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

Re: すいません 急ぎで解答をお願いします。

#4

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

tennga さんが書きました:標準入力からコーヒー豆の名前と重量(g)を入力したときに,価格
を標準出力に出力するプログラムを作成せよ.
これは質問ではなく命令ではないですか?
tennga さんが書きました:すみません雑な質問ですけど解答していただければ助かります、、、
質問はどこですか?

(これが課題かはわかりませんが)課題の丸投げは禁止です。
フォーラムルールを読んで従ってください。
どう質問していいか解らない時は、以下のテンプレをコピペして、

各項目に対して答える形で記載して下さい。

[hr]
[1] 質問文
 [1.1] 自分が今行いたい事は何か
 [1.2] どのように取り組んだか(プログラムコードがある場合記載)
 [1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
 [1.4] 今何がわからないのか、知りたいのか

[2] 環境  
 [2.1] OS : Windows, Linux等々
 [2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々

[3] その他
 ・どの程度C言語を理解しているか
 ・ライブラリを使っている場合は何を使っているか
[hr]
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 13年前

Re: すいません 急ぎで解答をお願いします。

#5

投稿記事 by box » 7年前

tennga さんが書きました: 冷やかしなどはいりません
じゃあ、冷やかしでないのを。

コード:

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

#define LEN (20)

typedef struct {
    char name[LEN];
    int price;
} Coffee;

void get_price(Coffee *coffee, int kind)
{
    char name[LEN];
    int weight, i;

    printf("豆の種類:"), scanf("%s", name);
    printf("分量(g):"), scanf("%d", &weight);
    for (i = 0; i < kind; i++) {
        if (strcmp(name, coffee[i].name) == 0) {
            printf("価格:%.0f\n", (double) coffee[i].price * weight / 100);
            return;
        }
    }
    printf("その豆は売ってません。\n");
}

int main(void)
{
    Coffee coffee[] = {
        { "Mocha", 350 },
        { "Kona",  450 },
        { "Blend", 300 },
    };

    get_price(coffee, sizeof(coffee) / sizeof(coffee[0]));
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

かずま

Re: すいません 急ぎで解答をお願いします。

#6

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

box さんが書きました:

コード:

    Coffee coffee[] = {
        { "Mocha", 350 },
        { "Kona",  450 },
        { "Blend", 300 },
    };
これは、次のように実行時に初期化が行われます。

コード:

    Coffee coffee[3];
    memcpy(coffee[0].name, "Mocha\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
    coffee[0].price = 350;
    memcpy(coffee[1].name, "Kona\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
    coffee[1].price = 450;
    memcpy(coffee[2].name, "Blend\0\0\0\0\0\0\0\0\0\0\0\0\0\0", LEN);
    coffee[2].price = 300;
次のように static を付けると、実行時には何もしません。

コード:

    static Coffee coffee[] = {
        { "Mocha", 350 },
        { "Kona",  450 },
        { "Blend", 300 },
    };
box さんが書きました:

コード:

            printf("価格:%.0f\n", (double) coffee[i].price * weight / 100);
分量が奇数の時、Mocha と Kona は 1円未満の端数が出て切り上げに
なってしまいます。
客商売では端数切捨てにしてほしいなあ、と思います。

コード:

#include <stdio.h>

struct { const char *種類; int 価格; } 表[] = {
    { "Mocha", 350 }, { "Kona",  450 }, { "Blend", 300 }
};
const int 個数 = sizeof 表 / sizeof *表;

int main(void)
{
    char 種類[100]; int 分量, i;

    printf("豆の種類: ");
    scanf("%99s", 種類);
    printf("分量(g): ");
    if (scanf("%d", &分量) != 1) return 1;
    for (i = 0; i < 個数 && strcmp(種類, 表[i].種類); i++) ;
    if (i < 個数) printf("価格: %d\n", 表[i].価格 * 分量 / 100);
    return 0;
}
VC++ では名前に日本語が使えます。

tennga さんには、すべての回答者にコメントや質問や感謝の言葉などを
返信されることを希望します。解決へのチェックも忘れずに。

返信

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