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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/12/03(水) 23:08:12
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 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
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

前スレ
C/C++の宿題を片付けます 118代目
http://pc11.2ch.net/test/read.cgi/tech/1226847424/
0002デフォルトの名無しさん2008/12/03(水) 23:19:16
>>1乙

[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8198.c
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 08/12/04 正午

33行目からのint btree_find内で2分探索木にないデータを打ったとき早々にNo.で
探索を終了させるようにしたいのですがどう書いたらいいんでしょうか?
実行結果の例は
Input number: -20
*****No.
になっています
int btree_findの訂正をお願いします。
0003デフォルトの名無しさん 2008/12/03(水) 23:47:21
>>980
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8201.txt
0004デフォルトの名無しさん2008/12/04(木) 00:18:59
前スレ http://pc11.2ch.net/test/read.cgi/tech/1226847424
>>988
問題文だけ読んだら

./cal 5 + 6 [Enter]
11
./cal 8*7 [Enter]
56

とかいう感じのプログラムを想像した
0005デフォルトの名無しさん2008/12/04(木) 00:29:52
>>2

int btree_find(int root, int *data, int *left, int *right, int num)
{
printf("*");
if (root != -1) {
if (data[root] == num)
return 1;
if (data[root] < num){
if (btree_find(right[root], data, left, right, num) > 0)
return 1;
return 0;
} else {
if (btree_find(left[root], data, left, right, num) > 0)
return 1;
return 0;
}
}
return 0;
}

btree_print よくできたね
勉強になったわ
0006デフォルトの名無しさん2008/12/04(木) 00:30:51
前スレの914の者です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8189.txt


前半の部分はできたのですがbtree_find()の改良がうまくいかないので誰か助けてください。
お願いします。
0007デフォルトの名無しさん2008/12/04(木) 00:33:12
前スレ>>988はテンプレ無視してるだけでなく、過去レスすら見てないな。
前スレ>>958-959に問題と答えある。全く同じ課題。H大学。
0008デフォルトの名無しさん2008/12/04(木) 00:46:39
>>2,6
おまいら別人?
見た感じ同じ課題か
なんかこういうことでないかと思うが。
int btree_find(int root, int *data,int *left,int *right,int num)
{
int hoge = data[root];
printf("*");
if (root == -1)
return 0;
if(hoge == num)
return 1;
if (hoge > num)
return btree_find(left[root],data,left,right,num);
return btree_find(right[root],data,left,right,num);
}
000982008/12/04(木) 00:48:28
あ、ごめん
解答済みだったか・・・
001022008/12/04(木) 00:58:01
>>5
ありがとうございます。
>>8
どうみても同じ大学です。本当にありがとうございました。
0011デフォルトの名無しさん2008/12/04(木) 02:01:43
>>926

881で質問した者です。解いていただいて本当にありがとうございます。
ただ、[5] のその他の制限の通りwhileのループを用いないといけないのですが、
教えていただけますでしょうか。(まだfor whileの導入が終わった段階なので)
重ね重ねもうしわけありません。
0012デフォルトの名無しさん2008/12/04(木) 02:47:50
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・シーザー暗号を作成するプログラムを作る
・シーザー暗号
  -アルファベットを一定文字数だけ順方向にずらして暗号を作成
・英小文字のみからなる単語と鍵(何文字ずらすか)を入力するとシーザー暗号を作成するプログラムを作成せよ

実行例
単語を入力してください
zoo ↓
鍵となる整数を入力してください
1 ↓
暗号は app です.

単語を入力してください
crypt ↓
鍵となる整数を入力してください
10 ↓
暗号は mbizd です.

[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年12月8日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
             逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
            配列の初期化、2次元配列、文字コード、文字データ(char型)
            getchar、putcharは習いました。
お願いします。
0013デフォルトの名無しさん2008/12/04(木) 02:51:25
Visual C++でコマンドライン入力ってできる?
0014デフォルトの名無しさん2008/12/04(木) 03:21:24
>>12
当方の環境は cygwin/WindowsXP, 処理系は 3.4.4 です。
一行入力に fgets() を使いました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8202.txt

>>13
コマンドラインアプリだと思うのですが。

>>http://pc11.2ch.net/test/read.cgi/tech/1226847424/944
こんどはどうですか?
0015前スレ9752008/12/04(木) 03:37:38
>>984
ありがとうございました。
0016デフォルトの名無しさん2008/12/04(木) 08:17:16
>>13
引数にしたいってこと?
それともビルドをDOSでやりたいの?
0017デフォルトの名無しさん2008/12/04(木) 09:41:22
>>12
#include <stdio.h>
#define N 256
int main(void)
{
char str[N];
int key;
int i;

printf("単語を入力してください "); scanf("%s", str);
printf("鍵となる整数を入力してください "); scanf("%d", &key);
printf("暗号は ");
for (i = 0; (i < N) && (str[i] != '\0'); i++)
putchar('a' + (str[i] - 'a' + key) % 26);
printf(" です.\n");

return 0;
}
0018デフォルトの名無しさん 2008/12/04(木) 11:03:19
>>12
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8203.txt
0019デフォルトの名無しさん2008/12/04(木) 13:11:49
前スレ>>997

[1] 授業単元: プログラミング入門演習
[2] 問題文:生年月日から今日までの経過日数計算簡易プログラム
      誕生日と今日の日付を西暦・月・日の順にスペースで区切りながら入力。
      誕生日が今日の日付より後になっていた場合はエラーメッセージを表示する。
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 12月5日(金)
[5] その他:日数計算のとこはすでに出来ています。
      エラーメッセージ表示のとこの条件がわかりません><
      どなたかお願いします!
0020デフォルトの名無しさん2008/12/04(木) 13:44:42
>>19
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8205.c
0021デフォルトの名無しさん2008/12/04(木) 14:40:53
[1] 授業単元: C++ template
[2] 問題:

コンパイラ時に出るエラーが良く分かりません
原因と解決策を教えてください↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8206.txt

[3] 環境
 [3.1] OS:windowsヴィスタ
 [3.2] コンパイラ名とバージョン:ボーランド
 [3.3] 言語: C++
[4] 1分以内
[5] その他:特になし
0022デフォルトの名無しさん2008/12/04(木) 14:51:11
【質問テンプレ】
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク):99文字までの文字列を入力し,アルファベットの小文字は大文字に,アルファベットの大文字は小文字に,またアルファベット以外の文字はアスタリスク’*’に変換した文字列を出力するプログラムを作成せよ.
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:わからないです
 [3.3] 言語:c++
[4] 期限: 今日の夜
[5] その他の制限:ライブラリ関数は使用せずにお願いします。
0023デフォルトの名無しさん2008/12/04(木) 15:03:35
>>22
#include <stdio.h>
#define SIZE 100
int main(void)
{
char input[SIZE];
char * c = input;
gets(input);
while (*c != '\0')
{
if (*c >= 'A' && *c <= 'Z')
putchar(*c - 'A' + 'a');
else if (*c >= 'a' && *c <= 'z')
putchar(*c - 'a' + 'A');
else
putchar('*');
c++;
}
return 0;
}
0024デフォルトの名無しさん2008/12/04(木) 15:04:05
>>14
やってくれたのは有り難いんですが、思うような結果が出なかったので、お手数ですがもう一度やって貰えないでしょうか?
お願いします。
0025デフォルトの名無しさん2008/12/04(木) 15:04:41
>>22
#include <iostream>
using namespace std;
int main()
{
char buf[256];
cin >> buf;
for(int i =0; buf[i] != '\0' ; i++){
if(buf[i] >= 'a' && buf[i] <= 'z')
buf[i] += 'A' - 'a';
else if(buf[i] >= 'A' && buf[i] <= 'Z')
buf[i] += 'a' - 'A';
else
buf[i] = '*';
}
cout << buf << endl;
}
0026デフォルトの名無しさん2008/12/04(木) 15:27:23
>>21もお願いします
0027デフォルトの名無しさん2008/12/04(木) 15:40:06
>>26
アンダーバーが抜けてる
0028デフォルトの名無しさん2008/12/04(木) 15:44:14
>>24
>>14じゃないがどう思うような結果と違ったのか書けよ禿げ
同じソースが出てくるかもしれんぞ

・・・・ fgets と scanf を組み合せたために '\n' が残ってしまっているんだとは思うけど
0029デフォルトの名無しさん2008/12/04(木) 16:47:16
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8207.c
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名: gcc
 [3.3] 言語: C
[4] 期限: 本日午後8時半頃までに教えていただけると助かります。

「ファイルから文章を読み込み、その中で出現した文字記号数字の出現回数が多い順にヒープソートで並べ替え、
出現した文字と、その出現数、出現確率を出力する
但し、英大文字は小文字、数字は0、タブ改行はスペースに置換し、計数する(それ以外の文字についてはそのまま扱う)
ものとする。」という問題なのですが、
自分なりに書いたコードでは大量のエラーが出てしまい困っています。
どうすれば正しく動くようになるでしょうか?
0030292008/12/04(木) 16:59:29
抽出元のデータは、英語の文章で、構造体へ入れる段階で取ったデータはこれです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8208.txt
最後によくわからない記号が含まれていましたので、
もしかしたら入れる段階から間違っているのかもしれません。
よろしくお願いします。
0031デフォルトの名無しさん2008/12/04(木) 17:06:03
swap!
0032デフォルトの名無しさん2008/12/04(木) 17:08:08
>>29
struct data{
int result;
char data;
float percent;
}result2[size],swap;
の,swapを削除
swap2(result2[c],result2[r]);
を
swap2(&result2[c],&result2[r]);
にするとエラーはなくなるかな
しかし
a,b,c,d,e,f,gとかいう変数名はやめろ
0033デフォルトの名無しさん2008/12/04(木) 17:16:24
>>28
ご指摘有り難う御座います。
>>17-18を見落としていたので、>>17-18を一回コンパイラしてみます。
何だかすいません。
0034デフォルトの名無しさん2008/12/04(木) 18:32:26
[1] 授業単元: 情報
[2] 問題文(含コード&リンク): http://crossmatic.hp.infoseek.co.jp/img003.jpg
[3] 環境
 [3.1] OS: knoppix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年12月05日22:00まで
[5] その他の制限:
#include<stdio.h>
#define N 4
#define M 5
int main(void)
{
double xi[N]={0.5,1.0,2.0,2.5};
double fi[N]={2.0,3.5,5.0,4.5};
double xxi[M*(N-1)+1];
double ffi[M*(N-1)+1];
"空白部分"
return(0);
}

ここの"空白部分"を埋めていただけないでしょうか。
for文を4重で使うってヒントを貰いました。
int型とdouble型なら使用OKです。
実行結果→http://crossmatic.hp.infoseek.co.jp/001.txt
よろしくお願いします。
003535 ◆z66TI33ApM 2008/12/04(木) 19:29:18
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
θ''=-(g/l)sinθ、θ'(0)=0、θ(0)=Θ
の厳密な数値解を初期振れ角Θを起動時に指定して、
アニメーション表示させるプログラムを作成してください。
gnuplotにパイプ接続してグラフィックを実現する方法を用いてください。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限:[2008年12月11日まで]
[5] その他の制限:以前にここで答えを教えてもらったのですが、ダメだしを貰い
問題文に最後の一文を追加されました。そのときの回答はこちらです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8209.txt
尚、そのときのトリップは忘れてしまったので適当につけています
0036222008/12/04(木) 19:29:21
つけたしで本当に申し訳ないんですが、
printf scanf int char a[100] for while ぐらいしか習ってないので
これらでやってもらってもよろしいですか?
あと実行結果を
「99文字以下の文字列を入力してください
変換された文字列は  です。」
としてくれたら助かります。
本当にごめんなさい。
0037デフォルトの名無しさん2008/12/04(木) 19:32:07
1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
3次関数f(x)=x(x-a)(x-b)とx軸、および直線x=0とx=c(c>0)とで囲まれる部分の面積の近似値
を求めるプログラムを次のように書け。
(1)定数a,bおよびcを整数データとして標準入力から入力する
(2)区間[0、c]をn等分して、その分点を順にX0=0、X1,X2,...,Xn=c、分点の間隔をΔx=x/nとして、
求める免責を Σf(Xk)Δxで計算する。んは1000とし、記号定数Nとして定義せよ
(シグマの上はnで下はk=1)
(3)F(Xk)を計算する部分を関数にする。変数Xkと関数値f(Xk)はdoubleとして扱うこと。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 今日の8時まで!!
[5] その他の制限:どこまでかわからないですが、基礎的なことしか習ってません。



本当にじかんがないので速攻でよろしくお願いします。
0038デフォルトの名無しさん2008/12/04(木) 19:46:02
>>36
言語は本当に「C++」なの?
0039デフォルトの名無しさん2008/12/04(木) 19:50:55
>>36 習った内容から推測して「C言語」と仮定した解
#include <stdio.h>
int main(void)
{
int i;
char a[100];
printf("99文字以下の文字列を入力してください。\n");
scanf("%s", a);
for(i = 0; a[i] != '\0'; i++) {
if (a[i] >= 'A' && a[i] <= 'Z')
a[i] = a[i] - 'A' + 'a';
else if (a[i] >= 'a' && a[i] <= 'z')
a[i] = a[i] - 'a' + 'A';
else
a[i] = '*';
}
printf("変換された文字列は %s です。\n", a);
return 0;
}
0040デフォルトの名無しさん2008/12/04(木) 19:51:12
>>37
マルチするな馬鹿野郎
0041デフォルトの名無しさん2008/12/04(木) 19:59:37
>>37
答えあってるかわからんが30秒で確認すれ
#include <stdio.h>
#define N 1000
double f(double Xk, int a, int b)
{
return Xk*(Xk - a)*(Xk - b);
}
int main()
{
int a, b, c, k;
double dx, Xk, S = 0.0;
printf("定数 a b c:");
scanf("%d %d %d", &a, &b, &c);
dx = c / (double)N;
Xk = 0.0;
for(k = 1; k <= N; k++){
S += f(Xk, a, b) * dx;
Xk += dx;
}
printf("面積: %f\n", S);
return 0;
}
0042222008/12/04(木) 20:01:48
>>38 c++・・・だと思います。
>>39 とっても助かりました。いけました。

みなさんありがとうございました。
自分で作ってみたのと比較して勉強してきます。
0043デフォルトの名無しさん2008/12/04(木) 20:32:28
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 5桁の整数A,Bの四則演算をするプログラム
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:日曜日
[5] その他の制限: scanfを使わずにgetchar関数を使う


getcharだと・・・
よろしくお願いします。

0044デフォルトの名無しさん2008/12/04(木) 20:51:14
>>35
本当にwindowsでVCなんだろうな、その環境というかwin32apiのパイプでいいのか?
あとgnuplotへのパスは通ってると思っていておk?
004535 ◆z66TI33ApM 2008/12/04(木) 20:56:17
>>44
すいません、間違えていました
自宅の環境を書いていましたが、大学の環境を書くべきでしたね

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
θ''=-(g/l)sinθ、θ'(0)=0、θ(0)=Θ
の厳密な数値解を初期振れ角Θを起動時に指定して、
アニメーション表示させるプログラムを作成してください。
gnuplotにパイプ接続してグラフィックを実現する方法を用いてください。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2008年12月11日まで]
[5] その他の制限:以前にここで答えを教えてもらったのですが、ダメだしを貰い
問題文に最後の一文を追加されました。そのときの回答はこちらです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8209.txt
尚、そのときのトリップは忘れてしまったので適当につけています

おねがいします
0046292008/12/04(木) 21:16:10
>>32
御指摘ありがとうございます。
教えていただいたところを書き換えたのですが、
相変わらず以下のようなエラーが発生しています。

heapsort.c:9: 警告: `struct data' declared inside parameter list
heapsort.c:9: 警告: its scope is only this definition or declaration, which is probably not what you want
heapsort.c: 関数 `heapify' 内:
heapsort.c:79: 警告: 互換性のないポインタ型からの引数 1 個の `swap2' を渡しますです
heapsort.c:79: 警告: 互換性のないポインタ型からの引数 2 個の `swap2' を渡しますです
heapsort.c: トップレベル:
heapsort.c:100: error: conflicting types for `swap2'
heapsort.c:9: error: previous declaration of `swap2'

swap2のプロトタイプ宣言が通らず、
それによって後々出現する全てのswap2でエラーが返されてしまっているのかなと
思うのですが、何度修正しても宣言自体が間違っているかのようなエラーが出つづける有り様で、
どう修正すればよいか分かりません。

よろしくお願いします。
0047デフォルトの名無しさん2008/12/04(木) 21:30:30
[1] 授業単元:C言語入門
[2] 問題文:月曜日から始まる月のカレンダーを出力するプログラムを作成しなさい。
ただし、7日毎に出力を改行すること。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 2005
 [3.3] 言語:C++
[4] 期限:今日の23:30まで
[5] その他の制限:for文とif文を使って作れと言われました

何年の何月のカレンダー、という制限はありませんでした。
単なる月曜日が1日で始まるカレンダーを作れ、ということなのでしょうが・・・
どなたかよろしくお願いします
0048デフォルトの名無しさん2008/12/04(木) 21:34:47
>>46
・関数名と変数名がどこかで被ってる
・swap2はプロトタイプ宣言ではなく呼び出し方がまちがってる
エラー以外については見てないから知らないけど

ちなみにbccでコンパイルだけしてみたけど
以下のたいへんわかりやすいエラーメッセージがでた。
> エラー E2356 hoge.c 18: 'swap' の再宣言で型が一致していない
> エラー E2344 hoge.c 8: 一つ前の 'swap' の定義位置
> 警告 W8065 hoge.c 53: プロトタイプ宣言のない関数 'print_reverse' の呼び出し(関数 main )
> 警告 W8004 hoge.c 56: 'n' に代入した値は使われていない(関数 main )
> エラー E2342 hoge.c 79: パラメータ 'data1' は data * 型として定義されているので data は渡せない(関数 heapify )
> エラー E2342 hoge.c 79: パラメータ 'data2' は data * 型として定義されているので data は渡せない(関数 heapify )
> *** 4 errors in Compile ***
0049デフォルトの名無しさん2008/12/04(木) 21:35:24
>>46
流し読み程度だが、swap2の宣言は前のままでいい。
ただ、構造体を引数に取ってるのにその後に構造体を定義しちゃいかんだろ。
あと、swapはポインタ渡してねーから多分思ってるとおりの動きせんよ。

あと、警告も直せ、おおむね間違ったこと書いてないし、後のためになることが多々あるだろうから。
0050デフォルトの名無しさん2008/12/04(木) 21:40:20
あと、変数全体にもいえることだけど、特にループカウンタはグローバルにするな。
ループ内で関数読んで、呼び出し先でもループ使ってたらロクでもない結果になる。
0051デフォルトの名無しさん2008/12/04(木) 21:45:39
>>47
まあ他にもいろんな解釈が出来そうだけど
これで問題あればまた言って。
#include <stdio.h>
int main(void)
{
int i;
printf("月 火 水 木 金 土 日\n");
for (i=1; i<=31; i++)
{
printf("%2d ", i);
if (i % 7 == 0)
printf("\n");
}
return 0;
}
0052デフォルトの名無しさん2008/12/04(木) 21:56:07
[1] 授業単元:プログラミング�U
[2] 問題文(含コード&リンク):

アルファベット小文字4文字からなる文字列データ50個が保存されたファイルdata6.txtがある.チェイン法による探索プログラムをもとに,このファイル内の文字列データを探索するプログラムを以下の条件に従って作成しなさい.

・main( ) 関数内でデータファイル data9.txt を読み込み,データをバケットに一つずつ追加する.
・データを追加する関数を,insert( )とする.ハッシュ表の先頭アドレスと文字列の先頭アドレスを引数とし,戻り値はなし.
・ハッシュ関数の関数名を,hash( )とする.文字列の先頭アドレスを引数とし,生成されたハッシュ値を戻り値とする.
・探索する関数の関数名を,searchData( )とする.ハッシュ表の先頭アドレスと文字列の先頭アドレスを引数とし,探索によって見つかったデータの個数を戻り値とする.
・必要に応じて,ハッシュ表のすべてのバケットを表示する関数 showData( ) を作成する.
・ハッシュ表のサイズ TABLE_SIZE は,各自で決めること.
・main( )関数内で searchData( )関数を使用して "abcc", "daba", "wxyz"を探索し,以下のような探索結果を表示すること.

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8210.txt

[3] 環境
 [3.1] OS:Win XP
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語: C
[4] 期限: 12/4 23:59
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

警告 W8075 課題6.c 37: 問題のあるポインタの変換(関数 main )
と出て何が問題なのかよく分からない状態です。
searchDataはまだ作成していません。
0053デフォルトの名無しさん2008/12/04(木) 22:01:06
>>51
これであってると思います
ありがとうございました!
0054デフォルトの名無しさん2008/12/04(木) 22:05:05
>>45
popenして流し込む簡単な仕様でいいか?
あと一応gnuplotのバージョン教えれ
言わないと4.0だと思ってつくる
0055デフォルトの名無しさん2008/12/04(木) 22:07:31
>>43 こんなのでいいのかな?
途中の処理を関数化したほうがすっきりしていいかも
#include "stdafx.h"
#include <stdio.h>
int main(void){
int i,sum,num,a,b;
char ch;
printf("a ○ bの演算をします\n");
printf("aを入力:");
sum=0;
for(i=0;i<4;i++){
ch = getchar();
num = ch - '0';
sum = sum + num;
sum = sum * 10;}
ch = getchar();
num = ch - '0';
a = sum + num;
fflush(stdin);
printf("bを入力:");
sum=0;
for(i=0;i<4;i++){
ch = getchar();
num = ch - '0';
sum = sum + num;
sum = sum * 10;}
ch = getchar();
num = ch - '0';
b = sum + num;
printf("a+b=%d\na-b=%d\na*b=%d\na/b=%d\n",a+b,a-b,a*b,a/b);
return 0;
}
005635 ◆z66TI33ApM 2008/12/04(木) 22:07:31
>>54
それで構いません。
バージョンはちょっとわかりません、すいません
0057デフォルトの名無しさん2008/12/04(木) 22:10:58
>>52
data6.txtうpまだー
それとも、その警告の意味を解説してほしいとか?
0058デフォルトの名無しさん2008/12/04(木) 22:13:49
>>57
すみません、すっかり失念してました。
これです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8211.txt

あと、何故この警告が出るのか教えていただきたいです。
0059デフォルトの名無しさん2008/12/04(木) 23:21:20
>>58
int hash(char *data)
{ 略
}

void insert(CELL *table[], char *data[])
{
略
int h = hash(*data);
}

hash()の呼び出しで型が合って無いから
0060432008/12/04(木) 23:26:32
>>55

返答ありがとうございます。
今は試す環境がないので、明日さっそくやってみます。
0061デフォルトの名無しさん2008/12/04(木) 23:30:29
>>58
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8212.txt
いちおうできるだけ元の形を保ちつつ
>以下のような探索結果
が不明だったので適当にやった
0062デフォルトの名無しさん2008/12/04(木) 23:34:36
>>59,>>61
ありがとうございます。
期限が迫っていたので、既に不完全なままで提出してしまいましたが、
今後の学習のために参考にさせていただきます。
0063デフォルトの名無しさん2008/12/04(木) 23:36:52
[1] 授業単元: C
[2] 問題文:
(1)1729を求める最小値の式が12^3+1^3 = 10^3+9^3以外に成り立たないことを証明するプログラム。
(2)1729.3の立方根を求めるプログラム。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 12月5日08:00
[5] その他の制限: 特になし
0064デフォルトの名無しさん2008/12/05(金) 00:12:01
>>63
最小の式が意味不明
N^3 + M^3 = 1729 を満たす自然数 N M の組み合わせが (12, 1) (10, 9) 以外にないことを言いたいのか?
0065デフォルトの名無しさん2008/12/05(金) 00:19:19
>>46
はいそうです。
0066デフォルトの名無しさん2008/12/05(金) 00:27:44
>>63
(1)#include <stdio.h>
int main()
{
int n, m;
for(n = 1; n <= 1729; n++)
for(m = 1; m <= n; m++)
if(n*n*n + m*m*m == 1729)
printf("%d^3 + %d^3 = 1729\n", n, m);
return 0;
}
0067デフォルトの名無しさん2008/12/05(金) 00:31:25
>>63
#include <stdio.h>

int main()
{
int a[14], i, j;
for (i = 0; i < 14; ++i) {
a[i] = i * i * i;
}
for (i = 0; i < 14; ++i) {
for (j = i; j < 14; ++j) {
if (a[i] + a[j] == 1729)
printf("%2d^3 + %2d^3 = 1729\n", i, j);
}
}
printf("%d", 1729 *1729*1729);
return 0;
}
13の三乗が1729を超えることを前提にしてる
0068デフォルトの名無しさん2008/12/05(金) 00:47:46
>>63
(2)
#include <stdio.h>
/* ニュートン法による解法 */
int main()
{
double num = 1729.3, cbrt;
for(cbrt = num; fabs(cbrt*cbrt*cbrt - num) > 1e-10; cbrt = (num - 2*cbrt*cbrt*cbrt) / 3 / cbrt / cbrt);
printf("%f^(1/3) = %.8f\n", num, cbrt);
}
0069デフォルトの名無しさん2008/12/05(金) 00:52:15
[1] 授業単元: PROGRAMING:C
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8217.txt
ソースプログラムと、簡単に「動作・アルゴリズム説明文」もお願いします。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Cygwin
 [3.3] 言語: C
[4] 期限: 12月7日23:00
[5] その他の制限: 初歩的なレベルらしいです。 

何卒よろしくおねがいします。
0070デフォルトの名無しさん2008/12/05(金) 00:57:09
[1]授業単元:基礎プログラミング
[2]問題文
 99文字までの文字列を入力し,アルファベットの小文字は大文字に,アルファベットの大文字は小文字に,またアルファベット以外の文字はアスタリスク’*’に変換した文字列を出力するプログラム
[3]
[3.1]OS:Vista
[3.2]コンパイラ:VisualC++2008ExpressEdition
[3.3]言語:C++
[4]期限:本日a.m3
[5]その他の制限:課題に適したライブラリ関数もあるが,それらを使用せずにプログラムを作成


誰かこれお願いします。今日までにやらなきゃいけないんですけど全く分かりませんorz
0071デフォルトの名無しさん2008/12/05(金) 00:58:58
>>70
#include <stdio.h>
int main()
{
int i;
char s[100];
printf("99文字以下の文字列を入力してください.\n");
scanf("%99s",&s);
for( i=0; s[i]!='\0'; ++i )
if( 'a' <= s[i] && 'z' >= s[i] )
s[i] += 'A' - 'a';
else if( 'A' <= s[i] && 'Z' >= s[i] )
s[i] -= 'A' - 'a';
else
s[i] = '*';
printf("変換された文字列は%sです.\n",s);
return 0;
}
0072デフォルトの名無しさん2008/12/05(金) 00:59:27
>>70
このスレを99で検索すると幸せになれるよ。
0073682008/12/05(金) 01:01:56
>>63
ごめん、式間違ってた
math ライブラリの fabs も使わないようにしたバージョン
#include <stdio.h>
/* ニュートン法による解法 */
int main()
{
double num = 1729.3, cbrt, eps = 1e-10;
cbrt = num;
while(cbrt*cbrt*cbrt - num > eps || cbrt*cbrt*cbrt - num < -eps){
cbrt = (num + 2*cbrt*cbrt*cbrt) / 3 / cbrt / cbrt;
printf("%25.15f\n", cbrt);
}
printf("%f^(1/3) = %.15f\n", num, cbrt);
return 0;
}
eps が 1e-12 あたりまでなら収束する
0074デフォルトの名無しさん2008/12/05(金) 01:03:33
>>71
> scanf("%99s",&s);
> for( i=0; s[i]!='\0'; ++i )
におうぜ
0075712008/12/05(金) 01:12:38
>>74
もしかしてどこか間違ってる?
0076デフォルトの名無しさん2008/12/05(金) 01:22:36
>>71
ありがとうございます、助かりました。

>>72
あぁ既に質問されていた方がいたのですか。失礼いたしました。
0077デフォルトの名無しさん2008/12/05(金) 01:24:05
[1] 授業単元:ハードウェア設計
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8204.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual C++
 [3.3] 言語:C++
[4] 期限:2008年12月8日10:40まで

よろしくお願いします。
0078デフォルトの名無しさん2008/12/05(金) 01:25:24
>>66>>67>>73
ありがとうございます。助かりました。
0079デフォルトの名無しさん2008/12/05(金) 01:49:49
>>77
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8218.txt
0080デフォルトの名無しさん2008/12/05(金) 01:51:18
>>74
あぁ、臭うぜ、お前から、あの臭いが。カレーでも食べたか?
0081デフォルトの名無しさん2008/12/05(金) 01:58:19
>>75
> scanf("%99s", &s);
「&」はいらないよね
0082デフォルトの名無しさん2008/12/05(金) 02:00:43
>>81
・・・
0083712008/12/05(金) 02:03:41
>>81
なる

ども
0084デフォルトの名無しさん2008/12/05(金) 02:05:34
アドレス演算子について理解した方が良さそうだ。
配列、ポインタだとしても、その記述はちとまずい点もあるが・・・
0085デフォルトの名無しさん2008/12/05(金) 03:32:10
&の省略が可能なのか、&をつけても無視されることが多いのか
規格上はどっちなんだろ
0086デフォルトの名無しさん2008/12/05(金) 03:41:19
というか配列そのもののアドレス指すことになる
番地自体は先頭アドレスと同じ

無視はしねーし、省略が可能なわけでもない
0087デフォルトの名無しさん2008/12/05(金) 10:51:47
[1] 授業単元: 信号処理実習
[2] 問題文(含コード&リンク): http://data1.xiz.cx/img/uncho/200812054255.jpg
[4] 期限: 12/8

ここに書くべき問題かどうかわかりませんが…
急ぎですのでどなたかお願いします。。
0088872008/12/05(金) 10:54:18
あ、答えは式だけで結構です。
0089デフォルトの名無しさん2008/12/05(金) 11:13:34

[1] 授業単元: プログラミング
> [2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8219.txt
> [3] 環境
>  [3.1] OS: Linux
>  [3.2] コンパイラ名とバージョン: gcc
>  [3.3] 言語: C
> [4] 期限: 2008年12月12日23:59
> [5] その他の制限:
>
> よろしくお願いします
0090デフォルトの名無しさん2008/12/05(金) 11:25:52
>>87
完全にスレ違い
わかっててやってるだろ詩ね
0091デフォルトの名無しさん2008/12/05(金) 11:35:07
>>89
http://www.uploader.jp/dl/mouse/mouse_uljp00331.txt.html
0092デフォルトの名無しさん2008/12/05(金) 12:47:24

[1] 授業単元:C++ テンプレート
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8220.txt
[3] 環境
 [3.1] OS:Windowsヴィスタ
 [3.2] コンパイラ名とバージョン:borland
 [3.3] 言語:C++
[4] 期限:2時間以内

どこがどう違うのかまったく見当がつきません
何がエラーを起こすのかと解決するにあたっての助言を下さい
よろしくお願いします。
0093デフォルトの名無しさん2008/12/05(金) 13:52:44
ん?問題文はどこに?
それとも「エラーを修正せよ」って課題なのか。
0094デフォルトの名無しさん2008/12/05(金) 14:41:14
>>93
問題文は英語なんで微妙かな・・・と思って載せませんでした
ただ基本的なテンプレートの問題らしいので
どうしてコンパイラエラーが起こるのかについて解説してもらえたらなーと思って
0095デフォルトの名無しさん2008/12/05(金) 14:57:40
もう時間切れだから用はないだろ?はい、次―
0096デフォルトの名無しさん2008/12/05(金) 15:00:23
[1] 授業単元:プログラミング(C++)
[2] 問題文(含コード&リンク):ニューラルネットのBPアルゴリズムを満足できるクラスを作成せよ。ただし、関数はできるところまででよい。
[3] 環境
 [3.1] OS: Linux(Fedora8)
 [3.2] コンパイラ名とバージョン:g++ 4.1.2
 [3.3] 言語:C++
[4] 期限: 2008年12月19日13:00まで
[5] その他の制限: プレーンCのポインタと構造体、C++のクラスの概念と簡単な設計方法まで

class Weight{};
class Unit{};
・・・
class Layer{
 int num; // 層数を格納
 Unit unit[]; //各ユニットのクラス
};

class NeuralNet{
 int NumLayer;  //層数を格納
 int NumUnit[]; //各層のユニット数を格納
 double XXX;      //各種係数等
 ・・・
public:
 Layer layer[]; // 各層のクラス(配列数は層数が格納)
};

構造体を使ったものはできているのですが、
・全ての層でユニット数が同じになってしまっていて、リソースを考慮した設計にしたい。つまり、指定した層数と各層のユニット数を指定したい。
・構造体からクラスに置き換えた場合に、" Layer layer[]"と"Layer::num"をどうやって表現したらいいのかで躓いている。

※BPアルゴリズムは、配列ベースのプログラムで別に作っているので、問題ありません。
0097デフォルトの名無しさん2008/12/05(金) 17:18:45
>>14,>>17-18
本当に有難う御座いました。
大変助かりました。
0098デフォルトの名無しさん2008/12/05(金) 17:27:26
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):
・シーザー暗号を作成するプログラムを作る(復号)
・英小文字のみからなる暗号と鍵を入力するとシーザー暗号を元の単語に戻すプログラムを作成せよ

実行例
暗号を入力してください
app ↓
鍵となる整数を入力してください
1 ↓
単語は zoo です.

暗号を入力してください
mbizd ↓
鍵となる整数を入力してください
10 ↓
単語は crypt です.

[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年12月8日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数
             逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)、scanf関数、アドレス演算子(&)、キャスト演算子
            配列の初期化、2次元配列、文字コード、文字データ(char型)
            getchar、putcharは習いました。
お願いします。
0099デフォルトの名無しさん2008/12/05(金) 17:31:58
>>98
>>18
0100デフォルトの名無しさん2008/12/05(金) 17:34:16
もはや荒氏だな
0101デフォルトの名無しさん2008/12/05(金) 17:51:13
>>99-100
荒らすつもりは全然無かったのですが、荒らしみたいな行為をしてしまいすいませんでした。
>>18なんですが、やっていただいたのは大変有難いのですが>>17のように出来るだけ簡略化してもらえないでしょうか?
■ このスレッドは過去ログ倉庫に格納されています