トップページ⇒tech
1001コメント427KB

C/C++の宿題を片付けます 53代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
C/C++の宿題を片付けます 52代目
http://pc8.2ch.net/test/read.cgi/tech/1130431335/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0153デフォルトの名無しさん2005/11/20(日) 01:08:04
[1] 授業単元: プログラミング演習
[2] 問題文: あらかじめ定義した文字列がキーボードから入力した文字列で始まっているかどうかを
      判定して表示するプログラムを作成せよ
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日中
[5] その他の制限:ポインタを使わずに
お願いします
0154デフォルトの名無しさん2005/11/20(日) 01:49:38
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
長さが3以上の文字列が5つ入力されるまで繰り返し入力を受け付ける。
最後にこれら5つの文字列を出力しなさい。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC++6.0
 [3.3] 言語: C++
[4] 期限:2005,11,24
[5] その他:二次元配列?

よろしくお願いします。
0155デフォルトの名無しさん2005/11/20(日) 04:50:55
>>153
#include <stdio.h>
#include <string.h>

#define BUF_SIZE 1024

int isHajimatteru(const char arakajime[], const char buf[], const int buf_len)
{
    int i;

    for (i=0 ; i<buf_len ; i++)
    {
        if (arakajime[i] != buf[i])
        {
            return 0;
        }
    }
    return 1;
}
0156デフォルトの名無しさん2005/11/20(日) 04:51:19
>>155の続き
int main()
{
    const char arakajime[]="hello, world";
    char buf[BUF_SIZE];
    int buf_len;

    fgets(buf, sizeof(buf)-1, stdin);

    buf_len=strlen(buf);
    if (buf[buf_len-1]=='\n')
    {
        buf[buf_len-1]='\0';
        buf_len--;
    }

    if(isHajimatteru(arakajime, buf, buf_len))
    {
        printf("はじまってます\n");
    }
    else
    {
        printf("はじまってません\n");
    }

    return 0;
}
0157デフォルトの名無しさん2005/11/20(日) 05:10:38
>>154
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUF_SIZE 1024

int main()
{
    char *buf;
    char *mojiretufive[5];
    int i;
    int buf_len;

    i=0;
    while (i<5)
    {
        buf=malloc(BUF_SIZE);
        fgets(buf, BUF_SIZE-1, stdin);

        buf_len=strlen(buf);
        if (buf[buf_len-1]=='\n')
        {
            buf[buf_len-1]='\0';
        }
        buf=realloc(buf, strlen(buf)+1);
0158デフォルトの名無しさん2005/11/20(日) 05:10:58
>>157の続き
        if (strlen(buf)>=3)
        {
            mojiretufive[i]=buf;
            i++;
        }
        else
        {
            free(buf);
        }
    }

    for (i=0 ; i<5 ; i++)
    {
        printf("%s\n", mojiretufive[i]);
    }
    for (i=0 ; i<5 ; i++)
    {
        free(mojiretufive[i]);
    }

    return 0;
}
0159デフォルトの名無しさん2005/11/20(日) 05:11:31
>>153
出来るだけ簡潔に書いたつもり
#include <stdio.h>
int startsWith(const char input[], const char test[])
{
    for (; *input && *test; ++input, ++test) {
        if (*input != *test) {
            return 0;
        }
    }

    return *test == '\0';
}
int main(void)
{
    const char s1[] = "The quick brown fox jumps over the lazy dog.";
    char s2[128];

    scanf("%[^\n]", s2);
    printf("%s", startsWith(s1, s2) ? "始まる" : "始まらない");

    return 0;
}
01601592005/11/20(日) 05:16:05
一見ポインタ使ってないように見せるの忘れてた…
int startsWith(const char input[], const char test[])
{
    for (; input[0] && test[0]; ++input, ++test) {
        if (input[0] != test[0]) {
            return 0;
        }
    }

    return test[0] == '\0';
}
こっちを使ってくれ。
(´-`).。oO(にしても何でポインタ使っちゃいけないんだろう…)
01611592005/11/20(日) 05:42:38
>>154
暇だからこっちもやってみた
#include <iostream>
#include <iterator>
#include <functional>
#include <vector>
#include <string>
#include <algorithm>
namespace {
    const int NUM_INPUT = 5;
    const int MIN_LENGTH = 3;
    struct StringsGenerator : std::unary_function<void, std::string> {
        const std::string operator()() const
        {
            std::string s;
            do {
                std::getline(std::cin, s);
            } while (s.length() < MIN_LENGTH);
            return s;
        }
    };
}
int main()
{
    std::vector<std::string> strings(NUM_INPUT);
    std::generate(strings.begin(), strings.end(), StringsGenerator());
    std::copy(strings.begin(), strings.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
    return 0;
}
(´-`).。oO(こんなん出したら胡散臭そうな目で見られるだろうなぁ…)
0162デフォルトの名無しさん2005/11/20(日) 05:46:19
朝から元気だなおまいらw
0163デフォルトの名無しさん2005/11/20(日) 06:54:12
[1] 授業単元:情報処理演習
[2] 問題文(含コード&リンク)::ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1118.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++どちらでも可
[4] 期限: 12月1日まで
[5] その他の制限: なし

私の力ではできません。どなたか教えてください。よろしくお願いします。
0164デフォルトの名無しさん2005/11/20(日) 07:05:31
んー。よくわからん。図解入りで頼む>163
0165デフォルトの名無しさん2005/11/20(日) 09:28:17
>>163
状態3が定義されていません。
適当に改行をしましょう。

01661512005/11/20(日) 10:37:39
>>152
ありがとうございました。

できればどなたか(3)のほうもお願いいたします。
0167デフォルトの名無しさん2005/11/20(日) 11:59:18
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):
エコーサーバとクライアントを作成する。
サーバ側の要件
「end+return」を受け付けるとサーバは終了する。
それ以外の文字の場合は、クライアントに再送信する。
終了時には、終了メッセージをクライアントに送信する。
通信が終了した場合は、クライアントのリソースは解放すること。

クライアント側の要件
行の先頭で「q+return」を入力するとクライアントは終了する。
一行づつサーバに入力文字を送信する。
サーバから受信した文字列は画面に表示する。

通信規約は任意のものでよい
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 11月末
[5] その他の制限: 無し

ソケットはやったことがないのです。。。
0168デフォルトの名無しさん2005/11/20(日) 12:17:56
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):
csv形式(カンマ区切り、ダブルコートなし)のファイルがある。
このファイルを読み込んでデータを表示する。ただし、表示は各アイテム毎に改行する事。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 11月末
[5] その他の制限: 無し
0169デフォルトの名無しさん2005/11/20(日) 14:14:53
>>168
ダブルコートって何だ?ダブルバイトなら聞いたこともあるが
01701632005/11/20(日) 14:43:31
改訂しました。まだ至らぬところもあれば指摘して下さい。お願いします。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1119.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1120.zip
0171デフォルトの名無しさん2005/11/20(日) 14:52:08
>>169
double-quoteだと思う。
0172デフォルトの名無しさん2005/11/20(日) 14:52:32
>>169
ダブルクォート(")だと思われ。
0173デフォルトの名無しさん2005/11/20(日) 14:52:56
うはwかぶったwww
0174デフォルトの名無しさん2005/11/20(日) 15:04:25
>>171-172
そういうことか
日本語(とゆうかダブルバイト文字)の有り無しで変わってくるがどうなんだ?>>168
0175デフォルトの名無しさん2005/11/20(日) 15:11:50
サンプルの入力ファイルがないといまいちわかりづらいな。
0176デフォルトの名無しさん2005/11/20(日) 15:25:23
>CSVの人 入力出力例
入力:
1st,2nd,3rd
a,b,c
出力:
line 1, item 1, '1st'
line 1, item 2, '2nd'
/* 略。質問側は略しちゃだめよ */
とか。出力の形がわからんと組みようがないわ。

>XORでパリティの人
・授業なら「適当に並べ替え」ってところが肝で説明受けてるはず。なんで、それ書きましょう。
・ああ・・・それから、パリティって普通、パリティビットつけるものです。
・誤り訂正符合を考え提出せよってネタだったら、そのままだしたほうがいいよ。
0177デフォルトの菜無しさん2005/11/20(日) 15:47:40
[1]授業単元:プログラミング
[2]問題文(含コード&リンク):
1.実数型変数a, b を宣言し、そのアドレスを画面に表示するプログラムを作成。
2.上記のプログラムでポインタ変数 *pa, *pb を準備し、それぞれに変数 a, b のアドレスを入力して、それを画面に表示させる。
3.上記のプログラムで変数 a, b にキーボードから数値を入力し、その和 sum を計算して画面に表示させる。ただしポインタ *pa, *pb を用いて和を計算する。
4.実数型変数a, b を宣言し、和と差を計算して、結果を画面に表示するプログラムを考える。このとき、ポインタ変数 *pwa, *psa をmain関数内で準備し、関数 wasa に a, b, &pwa, &psa を引数として渡して、関数 wasa 内で「アドレス内のデータ」として和と差を計算する。
0178デフォルトの菜無しさん2005/11/20(日) 15:48:27
↑続きです��
 [3.1]OS:Windows
 [3.2]コンパイラ名:gcc
 [3.3]言語:C言語
[4] 期限:明日のお昼3時
[5] その他の制限:ポインタ変数を使うらしいです。
2番の問題までゎかるのですが、3番からが全然謎なので是非お願いします。
0179デフォルトの名無しさん2005/11/20(日) 15:51:13
>>177-178
Cスレにスレ違いのポストしておいてこっち来るんじゃねーよネカマが
0180デフォルトの名無しさん2005/11/20(日) 15:53:58
>>178
おっぱいうp
01811682005/11/20(日) 15:59:53
>>174
ダブルバイトていうか多分スペース区切りでいいんじゃないでしょか
==============
1111 2222 3333
4444 5555 6666
==============
上記を

1111
2222
3333
4444
5555
.....
見たいに。だからスペースの有無とファイル中の改行を見て
コード内で1アイテムづつ改行を行うんじゃないかと...
0182デフォルトの名無しさん2005/11/20(日) 15:59:54
じゃあ、男のフリすればいいんですよね。
0183デフォルトの名無しさん2005/11/20(日) 16:02:26
おっぱいと聞いて駆けつけました
うpはまだでつか?
0184デフォルトの名無しさん2005/11/20(日) 16:02:39
>>181
カンマ区切りじゃないのか?
それと日本語云々は、(本当にあるのかは知らないが)2バイト目とカンマの文字コードが
一致する場合を避ける必要がある
0185デフォルトの名無しさん2005/11/20(日) 16:05:22
1)
double a, b;
printf("&a %p, &b %p\n", &a, &b);

2)
double a, b, *pa, *pb;
pa = &a;
pb = &b;
printf("pa %p, pb %p\n", pa, pb);

3)
double a, b, *pa, *pb. sum;
pa = &a;
pb = &b;
printf("input a b:");
scanf("%lf %lf", pa, pb); /* scanf("%lf %lf", &a, &b);とどちらがよいだろう? */
sum = *pa + *pb;
printf("pa %p, pb %p\n", pa, pb);

4) はC言語スレで頑張ってた人が居るので宣言考えるだけであとはパス。
double a, b, *pa = &a, *pb = &b, wa, sa, pwa = &wa, psa = &sa;
0186デフォルトの名無しさん2005/11/20(日) 16:06:08
絶対しませんよ。
0187デフォルトの名無しさん2005/11/20(日) 16:06:21
[1] 授業単元:プログラム演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1121.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語:C
[4] 期限:2005年11月22日12:00まで
[5] その他の制限:特に無し
01881872005/11/20(日) 16:06:53
よろしくお願いします
01891682005/11/20(日) 16:07:05
==============
1111,2222,3333
4444,5555,6666
==============
こうっすね すいません。 日本語云々はどうなんでしょうか...
それこそ宿題程度のものなので作る側の任意で良いと思います。
日本語関係にも対応している高尚なものであればそっちの方がいいとは思いますが。。。
0190デフォルトの名無しさん2005/11/20(日) 16:07:32
185番さんありがとうございます!!
コンパイルしてみます!
0191デフォルトの名無しさん2005/11/20(日) 16:08:16
>181 (CSVではない気がするが)
#include <stdio.h>
int main(void) { char buf[100]; while(scanf("%99s", buf) == 1) printf("%s\n", buf); return 0;}
0192デフォルトの名無しさん2005/11/20(日) 16:11:57
>>191
ファイルじゃ?
0193デフォルトの名無しさん2005/11/20(日) 16:12:07
>189 やっぱしカンマありか・・・
#include <stdio.h>
int main(void) { int c; while ((c = getchar()) != EOF) {if (c == ',' || c == '\n') putchar('\n'); else putchar(c);} return 0;}
0194デフォルトの名無しさん2005/11/20(日) 16:19:36
ああ・・・ファイルを読み込む方法か・・・>191
コマンドラインから
a.exe <file
とか
a.out <file
としてくれ。リダイレクトとかリダイレクションとかいう機能だ。
手抜きプログラムで必須の方法だ。
01951682005/11/20(日) 16:23:27
>194
ちゃんとやってください
0196デフォルトの名無しさん2005/11/20(日) 16:27:38
なにか不備でも?
0197デフォルトの名無しさん2005/11/20(日) 16:49:44
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
N個の要素よりなる配列をmain関数に宣言する。配列にデータを読み込む関数(例えばinput)
をmainから呼んで入力を行いデータを書き出す関数(例えばoutput)を呼んで出力するプログラムを
配列で呼んで配列で受け取るやり方を書け。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限:2005年11月21日
[5] その他の制限:
ヘルプです
0198デフォルトの名無しさん2005/11/20(日) 16:56:10
void input(int *a){int i;for(i=0;i<N;i++){scanf("%d",&(a[i]));}}
void output(int *a){int i;for(i=0;i<N;i++){printf("%d\n",a[i]);}}
int main(){int a[N];input(a);output(a);return 0;}
0199デフォルトの名無しさん2005/11/20(日) 18:04:43
[1] 授業単元:プログラム
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1123.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visualC++6
 [3.3] 言語:C
[4] 期限:2005年11月24日まで
[5] その他の制限:無し

宜しくお願いします
02001632005/11/20(日) 18:44:51
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1125.txt
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1120.zip
再三の変更となり申し訳ありません。
1119.txtからの変更点は
�@:1つのブロックを 100000/誤りの数 bitとする。つまり最初は1/e bit。
�K:誤りがなくなるまで
です。�Aの意味がシャッフルした時に繋がってませんでした。�Kはプログラムの終点を言ってませんでした。
1120.zipと共にどうか宜しくお願いします。
0201デフォルトの名無しさん2005/11/20(日) 20:28:41
>>177 の4 問題文に沿った回答
#include <stdio.h>
void wasa(double a, double b, double **ppwa, double **ppsa)
{ **ppwa = a + b; **ppsa = a - b; }
int main(void) {double a, b, wa, sa, *pwa, *psa;
pwa = &wa; psa = &sa;
printf("a b: "); scanf("%lf %lf", &a, &b);
wasa(a, b, &pwa, &psa);
printf("wa %f, sa %f\n", wa, sa);
return 0; }

多分・・・の回答
#include <stdio.h>
void wasa(double a, double b, double *pwa, double *psa)
{ *pwa = a + b; *psa = a - b; }
int main(void) {double a, b, *pa, *pb, wa, sa;
printf("a b: "); scanf("%lf %lf", &a, &b);
wasa(a, b, &wa, &sa);
printf("wa %f, sa %f\n", wa, sa);
return 0; }
0202デフォルトの名無しさん2005/11/20(日) 20:58:18
>200 やっぱりよくわからんな・・・
状態1〜3が発生して、手順が全て示されるように、初期データを書いて、
実際に手順を適用してみてくれ。
ああ・・・ブロックサイズは説明用に小さくしてくれ。
0203デフォルトの名無しさん2005/11/20(日) 21:08:36
>>200
パリティの意味が解らない。

ためしに、16bit、e=1/16でどんなことを求められているのか説明してくれ。
0204デフォルトの名無しさん2005/11/20(日) 21:33:53
パリティーを用いた誤り訂正方法について とかいう卒論だったらイヤン。
0205デフォルトの名無しさん2005/11/20(日) 23:26:55
201番の方、ありがとうございますw
コンパイルしてみますね。
0206デフォルトの名無しさん2005/11/20(日) 23:41:21
#include <stdio.h>
void wasa(double a, double b, double *pwa, double *psa)
{ *pwa = a + b; *psa = a - b; }
int main(void) {double a, b, *pa, *pb, wa, sa;
printf("a b: "); scanf("%lf %lf", &a, &b);
wasa(a, b, &wa, &sa);
printf("wa %f, sa %f\n", wa, sa);
return 0; }
↑で、できましたw
本当にありがとうござぃます〜
また、お世話になると思いますがよろしくお願いしますw
0207デフォルトの名無しさん2005/11/21(月) 01:38:40
>>167 みたいなソケット絡むと誰も解かないね この板。
ボクは知らないからダケド。
0208デフォルトの名無しさん2005/11/21(月) 03:20:58
[1] 授業単元: プログラミング入門
[2] 問題文(含コード&リンク):
文字列10個を入力として受け付け、長さ上位3つを長い順に出力する。
同じ長さの文字列が入った場合には、後に入力されたものが高位とする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限: 2005年11月24日
[5] その他の制限:
http://www9.plala.or.jp/sgwr-t/
ここの9章あたりまでしか習っていません

よろしくお願いします
0209デフォルトの名無しさん2005/11/21(月) 04:38:13
>>208
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1127.c
0210デフォルトの名無しさん2005/11/21(月) 05:57:20
>>207
正直面倒くさいしなあ.ネットワーク絡むと下手なプログラム書くとどこかで迷惑になるかもしれんし.
……167,コンパイラが bcc ってことは,winsock でいいんかな?
0211デフォルトの名無しさん2005/11/21(月) 07:23:12
>>207
>>210が書いてるように面倒+ちゃんと書かないと何処かの迷惑になりかねないし
そもそも完全に環境依存だからみんな及び腰になるんじゃまいか?

まぁそういう俺はまだソケットの扱い方分からないんだけどな
どこかにソケット関連のヘッダとそれで宣言されてる命令の一覧無い?
0212デフォルトの名無しさん2005/11/21(月) 09:14:59
1] 授業単元: C++
[2] 問題文:
以下のクラス MyPair に対し, 演算子 == , !=, >=, >, <=, < を定義して下さい. ただし, これらの演算子は以下の性質を満たすようにして下さい.
これらは全て MyPair 同士の比較である.
fst が等しいとき, snd を比べてその比較の結果とする.
fst が異なるとき, fst を比べてその比較の結果とする.
class MyPair {
int fst;
int snd;
public:
MyPair(int f=0, int s=0) {
fst = f;
snd = s;
}
int get_fst() const { return fst; }
int get_snd() const { return snd; }
};

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
 [3.3] 言語: C++
[4] 期限: 11月28日
[5] その他の制限:
0213デフォルトの名無しさん2005/11/21(月) 09:31:24
1] 授業単元: C言語研究
[2] 問題文:
以下の条件を満たす template 関数 replicate を定義して下さい.
template 引数(型引数) は一つであり, 以下の説明ではこれを T とする.
replicate の引数は2つあり, 第一引数は T型, 第二引数は int型である.
replicate はTの配列を第二引数で表される長さ分確保し, 各要素を第一引数の値で初期化した後, その配列の先頭へのポインタを返す.
メモリ確保失敗等, 異常がある場合, replicate は NULL を返す.

[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
 [3.3] 言語: C++
[4] 期限: 12月5日
[5] その他の制限:
0214デフォルトの名無しさん2005/11/21(月) 09:55:34
>>213
#include <new>
#include <algorithm>
template <class T>
class auto_array {
public:
    typedef T element_type;
    explicit auto_array(int size) : pointee_(new T[size]) {}
    ~auto_array() throw() { delete[] pointee_; }
    T* get(int n = 0) const { return &pointee_[n]; }
    T* release()
    {
        T* oldPointee = pointee_;
        pointee_ = 0;
        return oldPointee;
    }
private:
    T* pointee_;
};
template <class T>
T* replicate(T t, int n)
{
    try {
        auto_array<T> p(n);
        std::fill_n(p.get(), n, t);
        return p.release();
    }
    catch (std::bad_alloc&) {
        return 0;
    }
}
0215デフォルトの名無しさん2005/11/21(月) 10:12:59
>>212
>>213
の書き出しは
#include <iostream>
#include <string>
でおねがいします。
答えを書いてもらった後なのにすみません
0216デフォルトの名無しさん2005/11/21(月) 10:38:13
[1] 授業単元:
初級C言語
[2] 問題文(含コード&リンク):
1から500までの整数から、3の倍数を1行に10個ずつ表示するプログラムを書きなさい。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 学校のpcなんでわかりません
 [3.3] 言語: C
[4] 期限: 2005年11月22日12:40まで
[5] その他の制限: for文を使えと指示されました。

初歩の初歩で申し訳ないんですけど、馬鹿文系の私をどなたか助けて下さい。
0217デフォルトの名無しさん2005/11/21(月) 10:41:43
>>216
#include <stdio.h>

int main(void)
{
int i, j=0;
for (i=3;i<500;i=i+3) {
if (++j > 10) {
putchar('\n');
j = 0;
}
printf("%d ", i);
}
return 0;
}

脳内コンパイラだからエラーでるかもしれん
しかし文系でもCやるんだな
0218デフォルトの名無しさん2005/11/21(月) 10:42:48
>>215
死ねよ
0219デフォルトの名無しさん2005/11/21(月) 11:22:02
>>215
iostream も string も使わないじゃん。何で必要なんだよ?
0220デフォルトの名無しさん2005/11/21(月) 11:31:26
>>217
即レスありがとうございます。学校行ったら実行してみます。
0221デフォルトの名無しさん2005/11/21(月) 11:39:38
>>215
つーか、足したきゃ自分で勝手に足せよ。
0222デフォルトの名無しさん2005/11/21(月) 11:54:00
1] 授業単元: C言語研究
[2] 問題文:
このプログラムで
#include <iostream>
using namespace std;
int main()
{
Quadratic q1(1,2,3);
for(double i=0; i < 10 ; i += 0.5)cout << q1(i) << endl;

return 0;
}


出力が
3 4.25 6 8.25 11 14.25 18 22.25 27
32.25 38 44.25 51 58.25 66 74.25 83 92.25 102 112.25


となるようにクラスQuadraticの定義とそれを実行するためのmain文を書いて下さい. ただし, Quadraticは二次式を表すクラスです.
この場合, q1は f(x) = 1*x*x + 2*x + 3 を意味します.
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio.NET
 [3.3] 言語: C++
[4] 期限: 12月5日
[5] その他:
0223デフォルトの名無しさん2005/11/21(月) 11:56:35
>>222
書き忘れ
数字の出力は横ではなく縦一列でかまいません。
02241672005/11/21(月) 12:24:21
>>167 の問題について
bcc でも gcc でもとりあえずそのように動いてくれれば仕様はどんなものでも良いです。
宿題なのでホント動いてくれるコードならなんでも・・・。
bcc なら winsock ですし gcc なら sys/sock ですし。出来れば bcc がよいと言う意味で bcc とは書きましたが。
0225デフォルトの名無しさん2005/11/21(月) 12:56:39
>>224
とりあえず作って見たけどこんな感じでいいのかな。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1128.zip
0226デフォルトの名無しさん2005/11/21(月) 13:03:13
>>222
// main()はそのままでいいんじゃないの?
struct Quadratic {
Quadratic(double a, double b, double c) : a(a), b(b), c(c) {}
double operator()(double x) {return a * x * x + b * x + c;}
private:
double a, b, c;
};
0227デフォルトの名無しさん2005/11/21(月) 13:03:36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1, 1/2, 1/3, 1/4, ..., 1/100の値をそれぞれ
配列に保存し、保存した値を全て足し合わせること
によって、
1 + 1/2 + 1/3 + ... + 1/100
を求めるプログラムを書きなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月23日12:00まで
[5] その他の制限: お願いします
02281672005/11/21(月) 13:21:00
>>225
ありがと〜!!感謝です
0229デフォルトの名無しさん2005/11/21(月) 13:42:26
#include <stdio.h>
int main(void){
int i;
double n[100], sum = 0.0;
for (i = 0; i < 100; i++){
n[i] = (double)1 / (i + 1);
sum = sum + n[i];
}
printf("%f\n", sum);
return 0;
}
0230むぅ2005/11/21(月) 13:51:17
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):ファイルを読み込み、空白が早く現れる順に各行を並べ替えるプログラムを作成したいと思います。
空白とはスペース記号 0x20 とタブ 0x9 を意味します。空白の無い行は 0 番目に空白が現れたことにして下さい。
以下の手順にしたがって作成
�@始めに文字列を入れたら最初に空白が来る位置を求める関数を作りたいと思います。
その関数をテストするための文字列をいくつか作り、関数が出力しなければいけない値をそれぞれ求めなさい。
�A文字列を入れたら最初に空白が来る位置を求める関数を作りなさい。但し、空白で始まる文字列には 1,
空白がなければ 0 を返しなさい。
次に題意を満たすプログラムを作成しようと思います。そのプログラムをテストするようなファイルをいくつか作りなさい。
そして完成したプログラムが出力すると予想した値を書きなさい。
�B上で作成した関数を利用して、題意を満たすプログラムを実際に作成しなさい。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 2.9
 [3.3] 言語: C,C++
[4] 期限: [2005年11月30日12:00まで
[5] その他の制限: ファイルのサイズに上限を設けてはいけません。
何 MB のファイルでも読めるようになってなければいけません。
(配列は使うなということですか…)
但し、一行の文字制限が無いと入力バッファの処理が複雑になる場合、一行を高々 80 文字と仮定し、
一行を表す文字列としてだけ配列を使っても良い。

長くなってしまい申し訳ありません。
よろしくお願いします。
0231デフォルトの名無しさん2005/11/21(月) 14:08:20
int itiban(const char* pline)
{
int a, b;
char* space = strstr(" ", pline);
char* tab = strstr("\t", pline);

if(space && tab)
{
a = space - pline;
b = tab - pline;

return min(a, b);
}
else if(spacel)
return space - pline;
else if(tab)
return tab - pline;

retrun 0;
}

空白位置を返す関数
こうですか?わかりません 
0232& ◆R7PNoCmXUc 2005/11/21(月) 14:34:07
[1] 授業単元:プログラミング
[2] 問題文(s構造体配列のプログラムであるがこのプログラムを正しく直しなさい)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語: C
[4] 期限:11月20日
#include<stdio.h>

main(void){
int idx;
struct s_type{
int i;
long l;
}s[10];

for (idx=0;idx<10;idx++){
s.i[idx]=0;
s.l[idx]=0;
}
return 0;
}
どう直せばいいのか分かりません。
よろしくお願いします。
0233デフォルトの名無しさん2005/11/21(月) 14:47:24
ヒント:間違い探しレベル
0234デフォルトの名無しさん2005/11/21(月) 15:07:15
>>232
s.i[idx]=0; → s[idx].i=0;
s.l[idx]=0; → s[idx].l=0;


0235デフォルトの名無しさん2005/11/21(月) 15:16:12
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/12.htm
通常課題2問、応用課題1問

[3] 環境
 [3.1] OS: WinXp
 [3.2] コンパイラ名とバージョン: VC6.0
 [3.3] 言語: C++
[4] 期限: 早ければ早いほど助かります。
0236デフォルトの名無しさん2005/11/21(月) 15:18:26
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int idx;
struct s_type {
int i;
long l;
} s[10];

for (idx = 0; idx < sizeof(s) / sizeof(*s); ++idx) {
s[idx].i = 0;
s[idx].l = 0;
}
return EXIT_SUCCESS;
}
0237デフォルトの名無しさん2005/11/21(月) 15:24:04
>>231
ダメ。
・(どうでもいいけど)typoがある。
・strstr()ではなくstrchr()を使うべき。つーかそもそも、もっと便利な関数がある。
・先頭が空白のときに1を返すと言う問題の仕様を満たしていない。
#問題も蛸なんだけどね。
0238デフォルトの名無しさん2005/11/21(月) 15:28:28
5-1
void initialize(int* acc)
{
int i;
for(i=0; i < 5; i++)
acc[i] = 0;

}

void dairy_input(int* acc)
{
int input, i;
const char name[5][] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク",};

for(i=0; i < 5; i++)
{
printf("%s: ", name[i]);
scanf("%d", &input);
printf("\n");
}
}

void dairy_output(const int* acc)
{
int i;
const char name[5][] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク",};

for(i=0; i < 5; i++)
printf("%s: %d\n", name[i], acc[i]);

}
あとマンドクセ('A`)
0239デフォルトの名無しさん2005/11/21(月) 15:29:44
void dairy_input(int* acc) 
{ 
int input, i; 
const char name[5][] = {"りんご", "みかん", "イチゴ", "ナシ", "イチジク",}; 

for(i=0; i < 5; i++) 
{ 
printf("%s: ", name[i]); 
scanf("%d", &input); 
acc[i] = input; // 抜けてた
printf("\n"); 
} 
} 
0240デフォルトの名無しさん2005/11/21(月) 15:34:48
>>212
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1129.txt
0241デフォルトの名無しさん2005/11/21(月) 15:42:08
3をx86のショート実数にして16進数化するとどうなるんですか><
0242デフォルトの名無しさん2005/11/21(月) 15:45:25
ショート実数なんていう言葉はない
0243デフォルトの名無しさん2005/11/21(月) 15:47:39
仁志になるらしい
0244デフォルトの名無しさん2005/11/21(月) 15:49:40
問題解けた人とセクロス
http://ex14.2ch.net/test/read.cgi/news4vip/1132550835/
この問題出してた奴が池沼なだけでしたか><
0245デフォルトの名無しさん2005/11/21(月) 15:55:24
[1] 授業単元: C++演習
[2] 問題文(含コード&リンク):複数の整数が格納されたnumbers.datというファイルから読み込んだ各整数を整数型の配列に順に格納していき、
              それらの整数をバブルソートとマージソートを用いてそれぞれ降順で整列するプログラムを作成しなさい。
               この時、バブルソートはbubblesortという関数を、マージソートはmargesortという関数を作成し、
               そこで各アルゴリズムに基づいた整列作業を実行させなさい。また、2つの整数の交換作業はswap関数という
               関数を作成しそこで実行させなさい。 
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語:C++
[4] 期限:2005年11月22日12時まで
[5] その他の制限:よろしくお願いします。
0246デフォルトの名無しさん2005/11/21(月) 16:54:51
[1] 授業単元: 情報特講
[2] 問題文(含コード&リンク):
自己参照構造体を使用したプログラムの作成:
キーボードより、名前と身長を次々に入力し、
名前の入力がリターンのみのとき、入力を終了し、身長の一番高い人の
名前と身長、身長の一番低い人の名前と身長及び入力された人数を出力する。
ただ、名前はスペース入力が可能で、身長は実数での入力が可能とする。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 2005年11月24日11:00まで
[5] その他の制限: 条件:関数の使用、mallocの使用。
また、リストの中身も出力する。リストの形式は自由。

氏名 ? ああ ああ
身長 ? 170


氏名 ? AA AA
身長 ? 175


氏名 ?


入力は 2人です。
一番低い人は ああ ああ さん 170センチです。
一番高い人は AA AA さん 175センチです。

出力はこのような形でお願いします。よろしくお願いします。
0247デフォルトの名無しさん2005/11/21(月) 17:04:59
[1] 授業単元:C言語�T
[2] 問題文(含コード&リンク):引数4個のハノイの塔の再帰プログラムを作成しなさい
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC++6.0
 [3.3] 言語:C
[4] 期限:2005年11月25日まで
[5] その他の制限:特に無し

よろしくお願いします
0248デフォルトの名無しさん2005/11/21(月) 17:06:55
>>238
エラーが出てしまいました。
error C2087: '<Unknown>' : 添字が不正です。
(14) : error C2117: 'りんご' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'みかん' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'イチゴ' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'ナシ' : 指定された配列には、初期化子が多すぎます。
(14) : error C2117: 'イチジク' : 指定された配列には、初期化子が多すぎます。
(28) : error C2087: '<Unknown>' : 添字が不正です。
: error C2117: 'りんご' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'みかん' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'イチゴ' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'ナシ' : 指定された配列には、初期化子が多すぎます。
(28) : error C2117: 'イチジク' : 指定された配列には、初期化子が多すぎます。

0249デフォルトの名無しさん2005/11/21(月) 17:09:40
>>248
×const char name[5][]
○const char name[][9]
0250デフォルトの名無しさん2005/11/21(月) 17:09:55
自分で修正汁('A`)
0251デフォルトの名無しさん2005/11/21(月) 17:10:40
ハノイの塔って初めて知った
ttp://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/Hanoi.html
0252デフォルトの名無しさん2005/11/21(月) 17:14:04
void hanoi(int n, int a, int b, int c)
{
if (n > 0) {
hanoi(n - 1, a, c, b);
printf("Disk %d is moved from No.%d to %d\n", n, a, b);
hanoi(n - 1, c, b, a);
}
}
■ このスレッドは過去ログ倉庫に格納されています