【質問テンプレ】 [1] 授業単元:高校 [2] 問題文(含コード&リンク): 自然数を入力してその自然数の約数を全て画面に表示させるプログラムを作成せよ [3] 環境 ポケコン [3.3] 言語: C++ [4] 期限: ([2007年01月24日04:00まで]
【重要】 ・課題に動作で必要なファイルがある場合にはロダにUPする事、回答者に作らせてはならない なければ質問者が作る ・回答の督促は禁止 但し、スレ中の全未回答問題レス番号を張る場合のみ許可とする
期限まであと41分
>>2 低速版
#include<iostream>
int main(void){
int i, value;
std::cout << "Input value : ";
std::cin >> value;
for(i=1;i<=value;i++)
if(value%i==0)
std::cout << i << std::endl;
return 0;
}
あれ?前スレ時刻が逆転してる こんなことあるのか 999 :デフォルトの名無しさん :2007/01/24(水) 06:28:14 1000 :デフォルトの名無しさん :2007/01/24(水) 06:28:13
そんなことはとっくの昔っからあること。
9 :
デフォルトの名無しさん :2007/01/24(水) 11:23:44
整数を入力し,それを10進,16進(8桁),8進(11桁)で, 次のように並べて表示するプログラムを作成せよ。16進,8進についてはビ ット処理を行うこと。繰返し文を用いることにより,幾つかのデータで実行を 確認してみよ。 12 0000000C 000000000014 -1 FFFFFFFF 37777777777 これ教えてください!! お願いしますm(__)m
[1] 授業単元:画像処理 [2] 問題文(含コード&リンク):bmp画像の画素数を数え、数えた画素数を表示するプログラムを作れ [3] 環境 [3.1] OS:WindowsXP [3.2] Borland C++ Builder 5.0 [3.3] 言語:どちらでも可 [4] 期限: 2007年01月25日00:00まで [5] その他の制限: 無し よろしくお願いしますm(__)m
12 :
デフォルトの名無しさん :2007/01/24(水) 12:22:00
[1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク):入力テキスト中の指定された文字列を含む 行だけを出力する。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual studio 2005 [3.3] 言語:C++ [4] 期限:2007年1月26日 [5] その他の制限:@:変数は全て局所変数とする。 A:文字列の指定はキーボードから入力 できるようにする。 B:行単位での入力を基本構造にすること。 「当該行が指定された文字列を含む」ことを判定するためには、 find関数を用いる。 C++の入門ページをいろいろ探して考えてみましたが、 どうしたらいいのか、わかりませんでした。 よろしくお願いします。
>>12 #include <iostream>
#include <string>
int main() {
std::string target, line;
std::cout << "target:" << std::flush;
std::cin >> target;
while (std::getline(std::cin, line))
if (line.find(target) != std::string::npos)
std::cout << line << std::endl;
return 0;
}
14 :
デフォルトの名無しさん :2007/01/24(水) 13:04:22
>>13 答えてもらってありがとうございます。
せっかく答えてもらって申し訳ないんですが、
いくつかわからない所があって。
string型は習ったのですが、std::string の std と flushu
っていうのをまだ習ってなくて、使うとマズいです。
(他は大丈夫なんですが)
この関係で習ったモノを挙げると、
string, find, find_first_find, substr, size, replaceと
<fstream> のファイル操作くらいなんですが、
そのへんのモノを使ってお願いできないでしょうか?
甘ったれたことを言ってすみません。
>>14 何で習ってないもの使ったらまずいの?
そもそもstd::stringはstringのことだ
>>14 stdを習ってないってヤバくね?先生に抗議した方がいいよ
>>14 習ったことに気付いてないだけじゃないの?
今までにも using namespace std; ←この辺で std 出てこなかった?
19 :
デフォルトの名無しさん :2007/01/24(水) 13:26:24
>>14 , 15さん
アドバイスありがとうございます。
はい、使うとマズいんです。
理由は以前にクラスメイトが今回の自分のように他の人から教えて
もらったプログラムをそのまま提出して、全員に厳重注意があった
からです。
std::string のところはそのままstring にしていいってことですか?
それと、そういえば、自分の授業では
using namespace stdをプログラムの最初の方に使ってるんですけど、
このstdと何か関係ありますか?
どんな機能があるかは詳しくは習っていません。
今回も厳重注意決定だな
>>14 4月5月ならともかく、この時期になって習ってないハズはないw
もうじき進級・・・・テラオソロシス
>>19 using namespace std の std と、std::string の std は全く同じものなので
:: を習ってないとか言い出すのでなければ使ってもかまわない。
>>9 #include <stdio.h>
void print_num(int a){printf("%d %08X %016O\n",a,a,a);}
int main(){
int a=0;
printf("整数を入力\x82\xb5\x82\xeb\x83\x7b\x83\x50");
scanf("%d",&a);
print_num(a);
return 0;
}
>>19 >他の人から教えてもらったプログラムをそのまま提出して、
>全員に厳重注意があったからです。
当たり前だろ…
>using namespace stdをプログラムの最初の方に使ってるんですけど、
英語のまんま。stdの名前空間を使いますよって事。
これを最初に宣言しておけばstd::stringって書かなきゃいけない所のstd::を省略出来る。
>>13 のソースみたいにいちいちstd::付けるのめんどくさいだろ?
だからusing namespaceを宣言して「これからstd::を省略しますからそこんとこよろしく」ってしておくわけ。
>>19 using namespace std の検索結果 約 1,270,000 件中 1 - 10 件目 (0.18 秒)
25 :
デフォルトの名無しさん :2007/01/24(水) 13:39:17
すいません、師匠
>>13 の flush っていうのはどういう機能なんですか?
stdにそういう意味があったとは…
鬼教官にそういう重要な事をなぜ教えてくれなかったのか
抗議しておきます。
>>19 個々にstd付けて書いとけば評価上がるそ
usingの意味が判ってる証拠だからな
>>19 > はい、使うとマズいんです。
> 理由は以前にクラスメイトが今回の自分のように他の人から教えて
> もらったプログラムをそのまま提出して、
アホか
それは習ってないことを使ったからではなくて、他人のぱくったからだろ
>>25 わからないことあるなら自分で調べろよ
いつまで小学生気分でいるんだ
釣れましたか?
習ってないものを使ったらやばいとか 教えない教官が悪いとかっていう考えはやばいぞ 何か言われたら説明して見せりゃいいんだよ 自分で調べて色々使えなきゃこの業界ではやってけないよ まぁこの業界に来ないかもしれんけど。 てか来るな。
32 :
デフォルトの名無しさん :2007/01/24(水) 13:45:20
調べましたけど、調べたものがなんか全部プロっぽくて わからないものが増えたって感じで
まぁusing namespace stdでぐぐったら 出てくるのは主にusing namespace問題だわな。
34 :
デフォルトの名無しさん :2007/01/24(水) 13:56:55
ここに来て一番疑問なことがあります。 2chに限らずこの類の掲示板には 色んないじめっ子がいて自分はよくタコタコといじめられますが、 なぜここの人たちはこんなにまともに答えてくれるんですか?
釣られ慣れてないから
>>25 flushはバッファをフラッシュする。簡単に言えば、出力を催促するようなもんだ。
>>34 質問者のことを本当にどうでもいいと思ってるから。それこそ不正がばれて退学になってもね。
よそで丸投げして叩かれるというのなら、(中には面白半分でやってる人もいるだろうけど)
それは質問者の事を心配して丸投げをあきらめさせようとしてる人がいるからだよ。
38 :
デフォルトの名無しさん :2007/01/24(水) 14:10:16
>>13 のプログラムで質問なんですけど、
用意されたテキストファイルをfile.openで呼び出す場合も
基本的に13のプログラムのままで大丈夫ですか?
ちょっと付け足したり変えたりして。
>>38 いろいろイジってみ
それが課題以上に力になる
>>38 #include <fstream>
#include <iostream>
#include <string>
int main() {
std::ifstream ifs("data.txt");
if (!ifs) return 1;
std::string target, line;
std::cout << "target:" << std::flush;
std::cin >> target;
while (std::getline(ifs, line))
if (line.find(target) != std::string::npos)
std::cout << line << std::endl;
return 0;
}
42 :
11 :2007/01/24(水) 14:19:07
11で質問したものです コンパイラにBorland C++ BUilderと書いていましたが、それともうひとつVC6.0追加です… お願いします。
>>42 画素数を数えるってどういうこと?
普通はヘッダに横幅と縦幅あるけど、それを読み取って掛け合わせるの?
>16 free_nodeのところを埋めればいいの? void free_node(node_t *p) { if(p==NULL) return; free_node(p->left); free_node(p->right); free(p); }
46 :
デフォルトの名無しさん :2007/01/24(水) 15:11:48
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク) 自由製作課題で ・ぽきぽきアニメ ・多角形の描画 ・キーフレームアニメーション 以上のいずれかのプログラムを作成。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:1月31日 [5] その他の制限 ヒープまで一通り習いました。自由製作課題なので、多少習ってないのを使ってもおkです。
47 :
デフォルトの名無しさん :2007/01/24(水) 15:12:55
ぽきぽきアニメってなんだ?
>>30 そんなあなたの部下に
>>25 をつけて
あなたのプロジェクトの足を引っ張らせるためにこのスレがあるのですよ。
53 :
11 :2007/01/24(水) 16:24:46
>>42 すみません説明不足でした。
やりたいことは簡単な画像(例えば円とか四角とか)を読み込んで、画像の面積を求めたいのです。
面積=画素数と思ったので、それで画素数を数えたいと言ったのです…
最終的には読み込んだ画像の周辺長を求めたいな、と思っています…これは期限と関係ないんですが。
>>34 普通の掲示板では課題丸投げは禁止事項
叩かれるのが一般的です
55 :
デフォルトの名無しさん :2007/01/24(水) 16:28:22
宿題がどうしても解けないので教えてもらいたいです。 お願いします。 [1] 授業単元:プログラミング [2] 問題文(含コード&リンク):ポインタ配列を用いて、ユーザの入力した数字をもとに次の表に対応するメッセージを表示するプログラムを作成せよ。 ただし、0〜2以外の数値が入力されたらエラーメッセージを表示すること。 これが表です。 入力された数字 メッセージ 0 おはよう 1 こんにちは 2 こんばんは [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: Borland C++Compiler [3.3] 言語:C++ [4] 期限: 出来るだけ早くお願いしたいです。 [5] その他の制限: シンプルにお願いしたいです。C言語の基礎しか習ってないので・・・ 【出力例】 数字を入力してください(0−2):0 おはよう 数字を入力してください(0−2):1 こんにちは 数字を入力してください(0−2):2 こんばんは 数字を入力してください(0−2):3 正しい値(0−2)を入力してください
56 :
デフォルトの名無しさん :2007/01/24(水) 16:29:48
[1] 授業単元:コンピュータ実習 [2] 問題文(含コード&リンク): ls -R もどきを作る。 現在のディレクトリ(または指定したディレクトリ)内のファイルを表示するようにする。 サブディレクトリの内容も再帰的に表示するようにする。 できれば、ファイル名・ディレクトリ名をアルファベット順にソートして表示。 また、getopt をつかって -R を指定したときだけサブディレクトリを表示するようにしてもよい。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:1月31日 [5] その他の制限:得になし
>>53 まだ説明不足
>やりたいことは簡単な画像(例えば円とか四角とか)を読み込んで、画像の面積を求めたいのです。
画像の面積じゃなくて図形の面積ね
で、その図形部分の色がわからないと、どうしようもないと思うのだけど?
>>55 どうしても解けないと言うくらいだから様々な努力したのだろう
途中まででも良いから書いたプログラムを見せてくれ
59 :
デフォルトの名無しさん :2007/01/24(水) 16:52:42
>>58 様々な努力を頭の中でしましたが、さっぱりわかりませんでした。
>>55 「問題によると何度も入力を求めるようですがループ内でscanfを使った場合は
予期しない入力を想定して、入力毎にバッファをフラッシュする必要があると思うのですが、
その処理は必要でしょうか?授業では習わなかったのですが」
って質問すると評価高くなると思うよ^^
C++と書いてある
>>56 #include <stdio.h>
#include <fts.h>
int main()
{
FTS *fts;
FTSENT *ftsent;
char *path[] = { ".", 0 };
fts = fts_open(path, FTS_PHYSICAL|FTS_NOCHDIR|FTS_NOSTAT, 0);
while (ftsent = fts_read(fts))
puts(ftsent->fts_path);
fts_close(fts);
return 0;
}
64 :
11 :2007/01/24(水) 17:03:08
>>53 何度もすいません;
今までの段階でできているプログラムを、上の方に提示してあるアップロード板の方に載せます。
「C/C++の宿題を片付けます 82代目スレ」の中のUnit1.cppです。
これに画素を表示するプログラムを作りたいのです。
65 :
デフォルトの名無しさん :2007/01/24(水) 17:07:19
>>60 出力例では何回も書いてますが、
1回で出力は終わります。
この説明では意味不明ですね・・・。
とりあえず、簡単な感じでお願いします。
>>64 うpすると元ファイル名が消えてしまうのだが。
67 :
11 :2007/01/24(水) 17:22:01
>>67 リロードしてなかった。ごめ
今後はリンクを張ってくれ
なんじゃこりゃ。これがいわゆるVCLってやつか。 んなもん知らんよ。
71 :
デフォルトの名無しさん :2007/01/24(水) 17:29:27
質問じゃないんですが、教えてください。超初歩的で申し訳ないです。 #include <stdio.h> int main(void) { int twod[4][5]; int count=0, kakunou[20] = {0}; int i,j; for(i=0; i<4; i++) for(j=0; j<5; j++) { if((i!=0) && (i==j)) { kakunou[count] = i*j; count++; } } for(i=0; i<count; i++) printf("%d ", kakunou[count]); printf("\n"); return 0; } を実行すると0 0 0 0 になってしまいます。 ぼくとしては 1 4 9 と表示したいのですが。。
72 :
デフォルトの名無しさん :2007/01/24(水) 17:29:35
グローバルで仮引数を設定したあと、 ローカルでその引数をいろいろ変えていった場合 それは関数をまたいで保存されるのでしょうか?
73 :
41 :2007/01/24(水) 17:29:45
>>51 助かりました。本当にありがとうございました!
>>71 kakunou[count] に0が格納されてるからw
kakunou[count]じゃなくて kakunou[i] としたかったのでは?w
>>64 >コンパイラにBorland C++ BUilderと書いていましたが、それともうひとつVC6.0追加です…
VCL使ってるのにVCは無理だろ
>>76 最終的にはBCBで作りたいのですが、自分もよく分かってないのでまずVCで作ってみたいということです。
で、それは宿題なの?
>>77 わけわからんので、VCLやその辺を省いて元々の
>>11 に戻るぞ
画像を配列に読み込めてるとする
int sum=0;
for(i=0;i<width;i++){
for(j=0;j<height;j++){
if(pic[i][j] == 16777215){
sum++;
}
}
}
>>79 ありがとうございます。早速やってみます。
すいません、前スレの835ですけど、ほかにも制限とかあって、やってもらったのがちょっと違うみたいなんでもう一回おねがいします。 [1] 授業単元: アルゴリズム [2] 問題文(含コード&リンク): アカウント名とパスワードのデータ管理をするために、チェイン法を用いたハッシュ表をつくり、辞書操作(データ削除、検索、挿入)とリスト長のヒストグラム表示 [3] 環境 [3.1] OS:MacOSX [3.2] コンパイラ名とバージョン: gcc [3.3] 言語:C [4] 期限:今週中 [5] その他の制限: アカウント名、1〜6文字で構成される英子文字 ハッシュ内でアカウント名の重複はダメ パスワード、1〜10文字で構成される英数字
データファイルに基づきチェイン法によるハッシュ表を構築。 それに対してのコマンド指定ファイルを作り、指定した操作を行い、結果を表示。 実行形式 $ ./a.out データファイル 結果を書き込む出力ファイル コマンド指定ファイル データファイルの形式 アカウント名1 アカウント名1のパスワード アカウント名2 アカウント名2のパスワード 以下くり返し 結果を書き込むファイルも上記と同様の形式に。 挿入操作のプログラム動作 コマンド指定ファイルでの形式 i 挿入するアカウント名 挿入するパスワード 実験結果の表示形式:データを挿入できたとき (挿入したアカウント名 ) was inserted in slot (挿入したスロットのハッシュ値)
削除操作 コマンド指定ファイルでの形式 d 削除するアカウント名 指定されたアカウント名をキーとしてもつデータをハッシュ表から削除 検索操作 s 検索するアカウント名 リスト長のヒストグラム表示 コマンド指定ファイルでの形式 h 現時点で構成されているハッシュ表の全スロットのリスト長を調べ、長さに基づくヒストグラムを作成 表示形式 0: 8 1:36 …
データファイルの一部 A zcve d pndf gztXIDv ny 42865gd oed 6oY5e0ELw zz 1tbXb0jkF qziwo 8kzTT8mV gmvn UaV lqky 6z hvuung ux8B6gEwRO rnlykf ojlz6 hqsm DlF49xR
85 :
デフォルトの名無しさん :2007/01/24(水) 18:32:37
>>81-84 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
もう付け足しは無いな?これで作業してまだ制限があったとか言われたらキレちゃうぞ?
>>86 完璧な用件定義/仕様を最初から提示できるユーザはいない。
請負仕事をやってみりゃ分かる。こんなケースばっかりだ。
>>87 いや宿題だろ
教官があとから追加したわけでもなく
問題のTEXTあるんだから、そのまんま提示すればいいんじゃないか?
質問者が勝手に問題文削ってるだけだろう
請負仕事の仕事とはちと違う気がする
実用プログラムを作りなさいという課題があったのですが 先ほど課題提出時に、ここの過去スレで回答されていた良プログラムを 流用して提出させていただきました。 直接的に質問した者ではないですが このスレの回答者さんにはとても感謝しているので 感謝の意を表します。 プログラムの宿題に手伝ってくださってる方々お疲れ様です。 そしてありがとうございました。
世の中、利用できるものを利用した者勝ちだぜ?w
>>86 はい、これ以上ないです。
ほんとにすいません。
俺は利用される側><
>>55 これ以上分かりやすくは作れない。
#include <iostream>
int main() {
char* str[] = {"おはよう", "こんにちは", "こんばんは"};
for (; ; ) {
std::cout << "\n数字を入力してください(0−2):" << std::flush;
int m;
std::cin >> m;
if (m < 0 || m > 2)
std::cout << "正しい値(0−2)を入力してください" << std::endl;
else
std::cout << str[m] << std::endl;
}
}
95 :
71 :2007/01/24(水) 20:37:09
>>74 できました!どうもありがとうございます。お礼が遅れてすみません。自分は最近ようやく
自分でプログラムがくめる段階まできたので、できて本当にうれしいです。ありがとうございます。
>>75 すみません。これからは、そっちのスレで聞きます。
すいません、誰かお願いします。 自分でやってみたんですがうまく動きません。 [1] 授業単元:C言語 [2] 問題文(含コード&リンク):改行が多いと言われたので次の書き込みでお願いします。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン:Borland C/C++ Compiler だと思う。 [3.3] 言語: C言語 [4] 期限: 1月26日 [5] その他の制限:特になし。
97 :
96 :2007/01/24(水) 20:50:04
>>96 です。
問題は
行数と列数を指定して以下の用に表示せよ。
行数、列数は最大10までとする。
表示するデータは二次元配列に格納し、その内容を表示すること。
(例)
8 5
1 2 3 4 5
22 23 24 25 6
21 36 37 26 7
20 35 38 27 8
19 34 39 28 9
18 33 40 29 10
17 32 31 30 11
16 15 14 13 12
と、こんな感じです。
お願いします。
>>97 >表示するデータは二次元配列に格納し、その内容を表示すること
数値が外側から渦巻状になるようにするのね?
99 :
96 :2007/01/24(水) 20:57:10
>>98 そう、それです!!
って、
>>97 で表示がくずれてますね…。
申し訳ないです。
わかってくれて助かります。
[1] 授業単元:c言語実習 [2] 問題文(含コード&リンク): シェルソートは単純挿入法を改良し、ソートの効率を上げたものである。 全ての要素を1度にソートするのではなく、間隔dをあけて要素を比較して大まかなソートを繰り返したのち、最後にd = 1でソートを実行する。 データ数をnとしたときの、効率の良い間隔d[i]の計算法として、Knuthによる次の式が知られている。 t = log2n - 1 (整数に切り捨て) d[t-1] = 1 d[i-1] = 2d[i] + 1 この式を使って、与えられた要素数nに対し t、配列dの値を計算する関数を作成しなさい。 n = 100としたときの、tおよびdの要素を画面に出力しなさい。 【ヒント】 logの計算を行うには、math.hをインクルードする [3] 環境 [3.1] OS: xppro [3.2] visual studio2003 [3.3] 言語: C [4] 期限: あさってまでに [5] その他の制限: 特になし よろしくお願いします
[1] 授業単元: 画像処理
[2] 問題文(含コード&リンク):後述
[3] 環境
[3.1] WinXP
[3.2] VC6.0
[3.3] 言語: C
[4] 期限:2007/1/27
------------プログラム仕様--------------
100*100の数値行列(csv形式ファイル)を読み込む。
各値に5*5の範囲でガウスフィルタ(距離による重み付け平滑化)をかけ注目値を変更する。
結果を同形式の別ファイルとして書き出す。
---------------------------------------
とりあえず
ファイルオープン→行列読込、書出のプログラムはなんとか書けたのですが、
肝心のフィルタ処理がさっぱり判りません・・・どなたか御教授お願いします。
現在ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3511.txt
[1] 授業単元:c言語実習 [2] 問題文(含コード&リンク): クイックソートは単純交換法を改良した高速なソート法である。 要素数10の配列key[10]を用意し初期値として{51, 32, 67, 85, 36, 99, 21, 64, 13, 77}を与えソートを実行しなさい。 途中経過を出力して処理を確認すること。 交換の回数を数えて出力すること。 同じ配列を単純交換法でもソートして結果を比較し、 どちらが効率的か答え、プログラムを作成し、そして理由を考察しなさい。 ↑のプログラムを作成して、発展に拡張する問題です。↑の理由と発展を含めたプログラムに発展の理由コメントを提出します 【発展】 クイックソートの改良法として、 アルゴリズムのテキストp.147〜149に幾つかの方法が紹介されている。 (教科書の内容では非再帰版?と書かれています 他にもあるのですが、アルゴリズムで書かれているので) まず、(既に作成した)再帰を利用したクイックソートのコードを使って 要素数を増やしてテストを繰り返し、時間計算量の平均を調べなさい。 次に、クイックソートを改良し、同様に時間計算量の平均を調べなさい。 アルゴリズムをどの様に改良したか 結果はどの様に変化したか、プログラムを作成し、またその理由をコメント欄に書きなさい。 コメントは/* コメント分文*/とする。 [3] 環境 [3.1] OS: xppro [3.2] visual studio2003 [3.3] 言語: C [4] 期限: あさってまでに [5] その他の制限: 特になし 連投ですが、よろしくお願いします。
103 :
55 :2007/01/24(水) 21:49:15
>>94 プログラムありがとうございました。
助かりました。
105 :
104 :2007/01/24(水) 22:13:17
>96 #include <stdio.h> #include <stdlib.h> int main(void){ int i, j, m, n, t, count = 1, **p; scanf("%d%d", &m, &n); if(n>10 || m>10) return 1; p = (int **)malloc(sizeof(int *)*m); for(i=0;i<m;i++) *(p+i) = (int *)malloc(sizeof(int)*n); t = m > n ? n : m; for(i=0; i<t/2; i++) { for(j=i; j<=n-i-1; j++) p[i][j] = count++; for(j=i+1; j<m-i-1; j++) p[j][n-i-1] = count++; for(j=n-i-1; j>i; j--) p[m-i-1][j] = count++; for(j=m-i-1; j>i; j--) p[j][i] = count++; } if(t%2) { for(j=i; j<=n-i-1; j++) p[i][j] = count++; for(j=i+1; j<m-i; j++) p[j][n-i-1] = count++; } for(i=0; i<m; i++) { for(j=0; j<n; j++) { printf("%3d ", p[i][j]); } putchar('\n'); } return 0; }
107 :
96 :2007/01/24(水) 22:15:24
>>104 おぉ!!これですよ!!
ありがとうございます!!!!
さらにこのソースを見て勉強させてもらいます!!
誰が勉強していいと言った? 勝手にするな。
109 :
デフォルトの名無しさん :2007/01/24(水) 22:24:24
[1] 授業単元: 画像処理 [2] 問題文(含コード&リンク): 画質256×256で画素がグレースケール256段階の画像の画素値が ptr[256][256]の配列に入ってるとするとき、この画素のヒスト グラムの均等化を行うプログラムを作れ。 [3] 環境 [3.1] OS: WinXP [3.2] コンパイラ名とバージョン:gcc [3.3] 言語: C [4] 期限:2007/1/25 8:00 [5] ptr[256][256]に画素値が入っていると仮定し、均等化の処理をするプログラムを 書けばよい。
[1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): ローマ記法では整数を以下のように表す。 1:I 2:II 3:III 4:IV 5:V 6:VI 7:VII 8:VIII 9:IX 10:X 50:L 100:C 500:D 1000:M 1〜4999までの整数をローマ記法に変換するプログラムを作成せよ。 1,2,4,8,32,64,128,・・・・,4096を変換した結果を確認しなさい。 [3] 環境 [3.1] OS:WindowsXP [3.2] VC++ 2005 [3.3] 言語:C [4] 期限: ([2007年01月25日16:30まで] [5] その他:特になし よろしくお願いします
鹿児島大
>>14 制限があるなら書けっつっただろうが糞
紙ねよ
鹿児島大ってそういう学校なんだ・・
鹿児島大の奴がやけに来るなw
118 :
104 :2007/01/24(水) 22:45:32
過疎化 進行中
試験前で一気に宿題が来ただけだろ
121 :
デフォルトの名無しさん :2007/01/25(木) 02:29:31
[1] 授業単元:プログラミング基礎 [2] 問題文(含コード&リンク): 一単語一行の入力テキストを、指定された桁数(70)以内で、 できるだけ少ない行数に納まるように調整して出力する。 ただし、単語の途中で改行してはいけない。 例えば、【縦】に America, Japan, England, Jamaica,と並んでいたら、 それを、【横】に America Japan England Jamaica と表示し直せるようにする。 |____________________________| ここは70以内、末尾で文字列が切れてはいけない。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: Visual Studio 2005 [3.3] 言語: C++ [4] 期限:1月25日 [5] その他の制限:入力ファイルは用意されたテキストファイルを プログラム中で適切な位置をよく考えて開くこと。 int型 ⇔ string型などの変換をしないこと。 ファイルから行単位で文字列を入力するループ構造を 基本構造とし、ループの中で必要な処理を行うこと。 よろしくお願いします
>>121 前スレの終わりのほうに同じ課題出てたぞ
123 :
デフォルトの名無しさん :2007/01/25(木) 02:54:36
>>122 答えてもらったんですけど、コンパイル通らなくてどうしようかと。
もう一度お願いでないでしょうか?
どこにどういうエラーが出てるんだよ
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
126 :
デフォルトの名無しさん :2007/01/25(木) 03:04:00
c:\enshu1\jikken_rast_2\jikken_rast_2\jikken_rast_2.cpp(15) : warning C4267: '+=' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。 c:\enshu1\jikken_rast_2\jikken_rast_2\jikken_rast_2.cpp(18) : warning C4267: '+=' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。 c:\enshu1\jikken_rast_2\jikken_rast_2\jikken_rast_2.cpp(21) : warning C4267: '=' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。
前スレ950をコピペしただけで コンパイルも動作もOK
128 :
デフォルトの名無しさん :2007/01/25(木) 03:06:04
rast… last?
>>126 まさか拡張子 cか?w
cppにしてみw
130 :
デフォルトの名無しさん :2007/01/25(木) 03:09:52
いえ、cppにしてます 確かに動作しましたけど、課題の要求が満たされてません
その警告がどう問題なんだよ
132 :
デフォルトの名無しさん :2007/01/25(木) 03:14:00
どの条件をどう満たしていないのか説明しろ
134 :
デフォルトの名無しさん :2007/01/25(木) 03:26:26
課題では、入力したファイルの文字列(1行に1個の英単語)を 操作しなさいと言われてますが、 前スレのはキーボードから入力した文字を操作するように なっています。 それと、スペースを含めた文字列の長さが70に達する前に 改行されてしまいます。 文字を入力する度に改行されてしまいます。
宿題スレだからってあんまり気を許して釣られすぎんなよ。 それじゃおやすみノシ
ワロス って言ってほしい?
137 :
デフォルトの名無しさん :2007/01/25(木) 03:30:03
助けてください
とりあえず、どんなエラーが出たか教えろ
>>134 // int ncol = 0;
size_t ncol = 0;
これでええやろw
jikken_rast_2 < hogehoge.txt
と操作してファイルから食わせろ
140 :
デフォルトの名無しさん :2007/01/25(木) 03:33:44
女の子だから優しくしてください
宿題を○投げする女の子は嫌われますw
「女の子だから優しくしなくてはいけない」ってことを証明できたらなw
143 :
デフォルトの名無しさん :2007/01/25(木) 03:36:54
泣きそう
そんなことは俺らには関係ない
145 :
デフォルトの名無しさん :2007/01/25(木) 03:40:27
じゃあどうすればいいの?
で、なぜ女の子だから優しくしなくてはいけないんだ?
>140- VIPでやれ (AA略
>>96-97 回答あるけど別解
#include <stdio.h>
int main(){
int x,y,i=0,j=0,k[10][10]={0},cnt;
printf("y:"); scanf("%d",&y);
printf("x:"); scanf("%d",&x);
for ( cnt=1; cnt<=x*y; cnt++){
k[j][i]=cnt;
if ( i<x-1 && k[j][i+1]==0){
if ( k[j-1][i]==0 && k[j+1][i]== cnt-1 )
j--;
else
i++;
}
else if ( j<y-1 && k[j+1][i]==0)
j++;
else if ( i>0 && k[j][i-1]==0)
i--;
else if ( j>0 && k[j-1][i]==0)
j--;
}
for (j=0;j<y;j++){
for (i=0;i<x;i++)
printf("%3d",k[j][i]);
printf("\n");
}
return 0;
}
>>148 int main(void)
{
node_t *top=NULL;
int data;
while(1) {
data=0;
printf("データ: ");
scanf("%d",&data);
if(data==0) break;
top=insert_node(top,data);
display_node(top); // 表示追加
}
display_node(top);
free_node(top);
}
中間まとめ 未回答問題があれば補完よろ(漏れ・no違いが在ったら直してくれ) >9 >23 >11 >79 ※>80で返礼あり >12 >13 >16 >45 ※>50で返礼あり >38 >40 ※>85で返礼あり >41 >51 ※>73で返礼あり >46 「ぽきぽきアニメ」謎の仕様でスルー >55 >94 ※>103で返礼あり >56 >62 >71 >74 ※>95で返礼あり >85 前スレ893で済み 「やってもらったのがちょっと違う」と謎の仕様でスルー >96 >106 >118 >149 >100 >101 ぼかし作業の仕様が不明の為スルー >102 結局何を作るのかが不明の為スルー >109 >110 >111 前スレ903で済み >114で補足 >121 前スレ950で済み >139で補足 >148 >150で回答
>>151 前スレの
>>893 と
>>86 を書いた香具師だけど、
急に忙しくなったので漏れはできない。他の人がやるのを気長に待つか自分でガンガレ
>>153 肝心なとこが違うw
×>85 前スレ893で済み 「やってもらったのがちょっと違う」と謎の仕様でスルー
○>85 前スレ893で済み 督促うざ〜でスルー
158 :
155 :2007/01/25(木) 14:00:25
補足。 UDPだけどただパケット丸投げするだけで、チェックや再送の仕組み作りこんで ないから、ファイル送ってもデータ飛ぶかも知れんよ。 流石にそこまで宿題でやっとれん。
159 :
109 :2007/01/25(木) 14:18:42
160 :
デフォルトの名無しさん :2007/01/25(木) 15:04:20
strstream s; s << "abc"; この後で s を初期化して、バッファの内容をクリアすることは可能でしょうか?
前スレ835 >81-84,>151 動作に必要な「データファイル」「コマンド指定ファイル 」をロダにUPしろ なければ作れ コマンドフィル・・・なんで別やねんorz データファイルの中身が i acount1 pass1 i acount2 pass2 i acount3 pass3 i acount4 pass4 h i acount5 pass5 i acount6 pass6 : : : : : : i XXXXXX pasXXX s acountX s acountXX h d acountY d acountY h と作ってたが、既に改造もメンドイ それとハッシュ値の算出は?素数の剰余でええのか? 「結果ファイル」の出力フォーマットもわかんね
>>160 悪いことは言わないからstringstreamを使え。
[1] 授業単元:C言語の基本 [2] 問題文(含コード&リンク): 1から1000までの範囲で7の倍数を求め、その合計を表示するプログラムを組みなさい [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:BCC Developer Ver1.2.21 [3.3] 言語:C言語 [4] 期限:1月30日 よろしくお願いします。
>>163 そうですね。いろいろ調べているうちにそれがいいと思いました。
ありがとうございました。
>165 #include<stdio.h> int a=1,j=1000/7; int main(){ for(int i=2;i<=j;i++){a+=i;} printf("%d",a*7); return 0; } こうかな?
#include <stdio.h>
int main(void) {
int n, sum = 0;
for( n = 7 ; n <= 1000 ; n += 7 ) sum += n;
printf("%d\n", sum);
return 0;
}
>>168 ネタ解答は構わんが、妙なスタイルが癖になるようなのは止めてくれ。
>>169 ネタ解答は構わんが、妙なスタイルが癖になるようなのは止めてくれ。
#include <stdio.h> void main() { int i,sum=0; for(i=1; i*7<=1000; sum+=(i++)*7); printf("%d\n",sum);} 変な臭ぇ〜ソースでも良いから俺のを採用してくれw
>165 7の倍数は表示しなくていいの?
173 :
デフォルトの名無しさん :2007/01/26(金) 01:03:27
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 構造体の配列を使って、5人分の氏名番号点数を記録し、入力された点数以上の氏名番号点数を出力するプログラミングを書け。 必ずprint_student(struct sutudents)という学生1人分の情報を1行に表示する関数を作成、それを利用せよ。 [3] 環境 [3.1] OS:Linux [3.2] gcc [3.3] 言語:c [4] 期限: 26日午後4時 [5] その他の制限:ポインタやってない よろしくお願いします
流れに乗って俺も。 #include <stdio.h> int main() { int n = 1000 / 7; printf("%d", (n+1)*n*7/2 ); return 0; }
いや、まぁ、初項7、項差7の等差数列の和でもええけどさw
176 :
デフォルトの名無しさん :2007/01/26(金) 02:13:49
178 :
173 :2007/01/26(金) 04:13:37
あ、条件忘れてました。 5人分の名前と番号と点数を全て入力しなくちゃいけません
後から言うなカス
180 :
デフォルトの名無しさん :2007/01/26(金) 04:29:57
ちょっと質問があります 改行するときは \n とか \f とか使うと思うんですけど、 これらは cout << '\n'; とかみたいに cout といっしょに使うんですよね? 単独で '\n' みたいにではなくて それと cout << "\n"; でもできますよね?
それ宿題?
182 :
デフォルトの名無しさん :2007/01/26(金) 05:09:19
はい宿題です 改行できたことは出来ましたけど どうやるのが正しいのか知りたくて聞いてみました
184 :
デフォルトの名無しさん :2007/01/26(金) 08:28:56
[1] 授業単元: Cプログラミング演習 [2] 問題文(含コード&リンク): キーボードから入力した文字列の大文字と小文字を入れ替える。 1)void関数strchg(char *sp)を定義し、spの参照する内容が'\0'に等しく なるまで順に大文字と小文字を入れ替え、最後にspに'\0'を付け加える 2)char型配列str[100]にscanf()関数により文字列をキーボードから読み込み、 strchg()関数を適用し結果を表示する。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Visual Basic [3.3] 言語:C [4] 期限:本日13時(急ぎですいませんorz [5] その他の制限: 特にありません
>>184 #include <stdio.h>
#include <ctype.h>
char *strchg(char *str)
{
char *p;
for ( p=str;*p!=NULL;p++ ) {
if ( islower(*p ) )
*p=toupper(*p);
else if ( isupper(*p) )
*p=tolower(*p);
}
return(str);
}
void main(void)
{
char str[100]={0};
scanf( "%s", str );
printf( "%s\n", strchg(str) );
}
>>184 おそらくVisual Studioの間違いだとは思うが
1)
void strchg(char *sp){
if(*sp=='\0')return;
*sp>='a'&&*sp<='z'?*sp+='A'-'a':(*sp>='A'&&*sp<='Z'?*sp+='a'-'A':0);
strchg(sp+1);
}
2)
#include<stdio.h>
void strchg(char *sp){
if(*sp=='\0')return;
*sp>='a'&&*sp<='z'?*sp+='A'-'a':(*sp>='A'&&*sp<='Z'?*sp+='a'-'A':0);
strchg(sp+1);
}
int main(){
char str[100];
scanf("%s",str);
strchg(str);
printf("%s\n",str);
return 0;
}
voidだったかorz char *にしちゃったm(_ _)m
188 :
デフォルトの名無しさん :2007/01/26(金) 09:18:12
>>186 (´゚u゚):;*.':;.
Visual Studioのまちがいです(汗
*sp>='a'&&*sp<='z'?*sp+='A'-'a':(*sp>='A'&&*sp<='Z'?*sp+='a'-'A':0);
の:とか?の使い方がよくわからないんですが…よろしければ説明して頂けないでしょうか?
>>185 islower ->小文字
isupper ->大文字 で
アドレスpの文字をfor文で入れ替えてるという解釈であってますか?
使ったことないやり方なので^^;
三項演算子。 a = b?c:d; これは if(b) a=c; else a=d; と同じ
190 :
デフォルトの名無しさん :2007/01/26(金) 12:22:40
夏・冬季オリンピックの開催年求めるのはこれでいいですか #include <stdio.h> int main(void) { int year; printf("西暦入力:\n"); scanf("%d",&year); if(year % 4 == 0) printf("夏期オリンピック"); else if(year % 2 == 0 && year % 4 != 0) printf("冬季オリンピック"); else printf("開催しない"); return 0; }
191 :
デフォルトの名無しさん :2007/01/26(金) 12:25:43
else if(year % 2 == 0 && year % 4 != 0) は else if(year % 4 == 2) ほうがいいですか、これは同じ働きですか いくつか入力してみたらそうっぽいんですがあ
>>183 ありがとうございます!
がんばります。
>>191 プログラムは素直に作らないとくどくなるからな。
if (year % 4 == 0) {
} else if (year % 2 == 0) {
}
でおけ。else ifに入った時点で前の条件は弾かれているから判定する必要なし。
ちょ
>>190 過去にさかのぼるならアルベールビルとリレハメルの間で場合分け。
あと厳密に開催したかどうかを判定するなら第二次世界大戦で場合分け。
単純な計算では判断できないので、 夏季オリンピックの年であるかどうか 冬季オリンピックの年であるかどうか を判断する関数をそれぞれ作る。
>>189 同じではないなぁ。a = b?c:dは左辺値だけど、ifの方は文だし。
199 :
198 :2007/01/26(金) 13:38:11
右辺値だった。
初心者と突っ込み所を探したい人向けに端折った説明だから
201 :
デフォルトの名無しさん :2007/01/26(金) 14:25:41
任意の整数に続けて、比率(例えばaとする)を入力したあと、元の数 の「a倍」と「a分の1」の2つの値を計算して、表示するプログラムを作成 せよ。なお、「a分の1」の値は小数点以下2桁で表示すること。
202 :
デフォルトの名無しさん :2007/01/26(金) 14:32:43
任意の文字列を入力し、先頭文字は大文字、それ以外は小文字にして 表示するプログラムを作成せよ。ただしアルファベット以外の文字は そのまま表示すること。 お願いいたします。
断る
205 :
デフォルトの名無しさん :2007/01/26(金) 15:07:00
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): 中心の要素は a[(left+right)/2] で求めることができます。 この要素を左側の要素と交換すれば、同じプログラムを利用できます。 クイックソートの軸として、中心の要素の値を使うことが一般的です。 quicksort 関数を変更してください。 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (gcc 3.4) [3.3] 言語: (C) [4] 期限: (明後日) [5] その他の制限: void quicksort(int a[], int left, int right) から始まる関数です。
206 :
デフォルトの名無しさん :2007/01/26(金) 15:30:37
>>205 m9(^Д^)
void swap(int a[], int i, int j)
{
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
void quicksort(int a[], int left, int right)
{
int i, last;
if (left >= right) {
return;
}
swap(a, left, (left + right)/2);
last = left;
for (i = left + 1; i <= right; i++) {
if (a[i] < a[left]) {
swap(a, ++last, i);
}
}
swap(a, left, last);
qsort(a, left, last-1);
qsort(a, last+1, right);
}
function fx for i = 1 to N do f(x) := x+ 1;
208 :
デフォルトの名無しさん :2007/01/26(金) 15:52:31
質問テンプレ】 [1] 授業単元:c言語 [2] 問題文(含コード&リンク):3行3列のマトリックスA、B のデータをファイル(A.dat,B.dat)から読み込み、C=ABを計算し、 ファイル(C.dat)に出力するプログラムを作成しなさい。 但し、入力ファイル、出力ファイルのフォーマットは下記に従いなさい。 また、行列の乗算の部分はユーザー定義関数としなさい。 フォーマット例(A.dat) 3 4 (注:3行4列の意味) 3 4 5 7 1 3 5 2 2 1 3 3 [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: (C) [4] 期限: ([2007年1月30日16:10まで] [5] その他の制限: (ポインタの利用{学生のための基礎Cの教科書を利用}までしました。}
>>208 「3行3列のマトリックスA、B 」だと3×3固定の様だが?
「フォーマット例(A.dat)3行4列 」だと3×4と読込むファイルによって変るようだが?
どうなん?
>>208 APLのベクター演算使えばA×Bで終り
但し書きでファイル指定っぽい サラス?なのか?
212 :
165 :2007/01/26(金) 17:48:07
213 :
208 :2007/01/26(金) 18:22:53
すいません 皆様208に対して書き込みありがとうございます>< 209さん>もともとはn行m列という問題だったんですが講師が「n,mは自分で決めていいですが最低3x3でしてください。3x3が一番簡単ですよ。」 っとゆう発言がありましたので、3x3で固定して書き込みをしました。。 最初に問題文をそのままっとあったのですがその発言があったので3x3で自分で改変してしまったのですが。。これだめでしたかね? もしこれが疑問の元であったのなら謝罪いたします。>< なので疑問のところの3x4でも問題を解くには支障はないです^^;ほんとうにすいません;; (同じ学科の99人が危機にひんしていますので是非またご協力いただけることを心待ちにしています;;。 99人で連絡取り合ってしてるんですがどうにも授業のスピードが最後らへん早くて99人手が出せない状況です) 210さん>ご協力いただきありがとうございます。 「APLのベクター演算子」って言葉の意味が自分わかってないので今から調べてみます!すいませんありがとうございました。 211さん>書き込みどうもありがとうございます。ファイルが指定かどうか不明なので講師に質問を送ってみます。 あと講師は「一番君たちが知ってる簡単な計算方法はサラスですよね?それでやってもかまいませんよ」と確かいってた覚えがあります。。。 すいません ご協力ほんとうにありがとうございます;;
>>213 99人皆が皆手を出せないってどんな低脳集団だよw
実はわかってるのに教えてくれないんじゃね?
APL使えばベクトル演算簡単だよ
>>205 で、quicksort関数の中身はどこにあるんだ?
変更してくださいって言ってるんだから、元のプログラムがあるんだろ?
>>206 ちょwwwおまwww qsort使うなら引数ちゃんとしておけよ。
219 :
デフォルトの名無しさん :2007/01/26(金) 18:54:54
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 最初に月の1日の曜日を入力し、次に曜日を求めたい日付を入力することで、 任意のつきの日付に対して曜日を出力するプログラムを作成せよ。 ただし、日にちの上限を31日とする。また、間違った日付を入力すると「正しい日付を入力してください」と出力すること。 ヒント:ポインタ配列を使用します。char *p_day[ ]=... 1日は何曜日ですか(0:月,1:日,2:水,3:木,4:金,5:土,6:日):4 日付を入力してください:24 24日は日曜日です こんな感じで表示をお願いします。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Borland C++ Compiler [3.3] 言語: C言語 [4] 期限: 1月29日まで [5] その他の制限: 基本情報の試験に出る範囲くらいまで(あいまいですみません) 宜しくお願い致します。
220 :
208 :2007/01/26(金) 19:01:16
214さん>いえマジでみなさんわかってないんです^^; もしできているなら誰かにまわされてそのあと皆に 拡散しているはずなので^^; 多相当笑える話なんですが^^;w(自分もバガですはい><) 215さん>ありがとうございます。wikiなどでしらべて今からやってみますね^^b ご協力ありがとうございました^^
>>219 #include <stdio.h>
const char *p_day[] = {"月", "火", "水", "木", "金", "土", "日"};
int main(void) {
unsigned w, d;
printf("1日は何曜日ですか (0:月,1:火,2:水,3:木,4:金,5:土,6:日):");
scanf("%u", &w);
if(6 < w) {
fputs("正しい曜日を入力してください", stderr);
return 1;
}
printf("日付を入力してください:");
scanf("%u", &d);
if(31 < d) {
fputs("正しい日付を入力してください", stderr);
return 1;
}
printf("%u日は%s曜日です\n", d, p_day[(w + d - 1) % 7]);
return 0;
}
222 :
デフォルトの名無しさん :2007/01/26(金) 19:27:20 BE:74824122-2BP(0)
【質問テンプレ】
[1] 授業単元: 応用プログラミング
[2] 問題文(含コード&リンク):
http://new1314.freespace.jp/log/up/log/2817.jpg [3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: c++
[4] 期限: 2007/1/28
[5] その他の制限:標準ライブラリは使ってはいけない。与えられているヒントに沿って。
実習とレポート課題の両方をお願いします。というか実習のプログラムをを使って課題をやる感じです。
実習で指定されているコードは置いておきます。多少の改変はアリです。
いくらやってもなぜかできません。もうお手上げです∩(・∀・)∩
よろしくお願いします。
223 :
222 :2007/01/26(金) 19:31:02 BE:1515178499-2BP(0)
#include<iostream> #include<string> using namespace std; class set{ static const int max=100; string elem[max]; int num_elem; public: set(); set(string e[],int); bool contains(string e); void insert(string e); void print(); }; //ここにメンバ関数 int main(){ const int n=4; string a[n]={"a","b","c","d"}; set s(a,n); s.print(); if (s.contains("e")) cout<<"e is an element\n"; s.insert("e"); s.print(); if (s.contains("e")) cout<<"e is an element\n"; string a2[n][n]={{"r","t","s","s"},{"s","t","r","s"},{"t","s","t","r"},{"s","r","s","t"}}; set s2[n]; for(int i=0;i<n;i++) s2[i]=set(a2[i],n); for(int i=0;i<n;i++) s2[i].print(); return 0; }
224 :
208 :2007/01/26(金) 19:34:11
すいません^^;APLってC言語じゃないんですね>< C言語でとかないといけないんですぅ;; もう1回もんだい 貼り付けていいですか><? 一様自分のひ弱な頭で考えたんですが nxm行列となっているんですが 例で A.datが3x4行列で、 フォーマットはこれに従うようになので問題のA.datは3x4であると決定? なんですかね?で、A.datと計算できるB.datの行列は4x3しかないですよね? なのでc=ABとなっているのでCは3x3行列って考えていいですかね><? 書き込みが質問になってしまって申しわけございません;; 質問テンプレ】 [1] 授業単元:c言語 [2] 問題文(含コード&リンク):n行m列のマトリックスA、B のデータをファイル(A.dat,B.dat)から読み込み、C=ABを計算し、 ファイル(C.dat)に出力するプログラムを作成しなさい。 但し、入力ファイル、出力ファイルのフォーマットは下記に従いなさい。 また、行列の乗算の部分はユーザー定義関数としなさい。 フォーマット例(A.dat) 3 4 (注:3行4列の意味) 3 4 5 7 1 3 5 2 2 1 3 3 [3] 環境 [3.1] OS: (Linux) [3.2] コンパイラ名とバージョン: (gcc 3.4 ) [3.3] 言語: (C) [4] 期限: ([2007年1月30日16:10まで] [5] その他の制限: (ポインタの利用{学生のための基礎Cの教科書を利用}までしました。}
225 :
219 :2007/01/26(金) 19:36:51
>>221 早速の返答ありがとうございました。
まだ、2,3問残っているのでその時は宜しくお願い致します。
>>224 A.dat が 3 x 4 であるとき、計算できる B.dat の行列は 4 x ? だよ (?は任意の自然数)
>>222 問題文のダウンロードが
いくらやってもなぜかできません。もうお手上げです∩(・∀・)∩
229 :
デフォルトの名無しさん :2007/01/26(金) 20:02:03
>>218 単なる再帰だお。関数名が元のとちょっと違うだけだお。
ちょーっとした手違いだお m9(^Д^)
void swap(int a[], int i, int j)
{
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
void quicksort(int a[], int left, int right)
{
int i, last;
if (left >= right) {
return;
}
swap(a, left, (left + right)/2);
last = left;
for (i = left + 1; i <= right; i++) {
if (a[i] < a[left]) {
swap(a, ++last, i);
}
}
swap(a, left, last);
quicksort(a, left, last-1);
quicksort(a, last+1, right);
}
230 :
デフォルトの名無しさん :2007/01/26(金) 20:05:04
( ^ω^)S ( ^ω^ )o (^ω^ )r (ω^ )t (^ )す ( )る ( ^)お ( ^ω)〜 ( ^ω^)!
課題は、quicksort関数を「作る」じゃなくて「変更する」なんだよな?
232 :
デフォルトの名無しさん :2007/01/26(金) 22:44:38
どなたかお願いします。
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):
http://up.spawn.jp/file/up68630.zip.html zip内のimage03.ppm,image04.ppmについて
1.image03.ppmを左右反転せよ。
2.image04.ppmを時計回りに90°回転せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 1月29日9:00まで
235 :
デフォルトの名無しさん :2007/01/27(土) 01:57:48
>>235 BTREE *insert_bt(int x, BTREE *y){
BTREE **pmember;
if(y==NULL) return new_bt(x, NULL, NULL);
*pmember=y;
while(*pmember!=NULL){
if(x > (*pmember)->data) pmember=&((*pmember)->right);
else if(x < (*pmember)->data) pmember=&((*pmember)->left);
else return y;
}
*pmember=new_bt(x, NULL, NULL);
return y;
}
237 :
1/3 :2007/01/27(土) 10:18:54
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { const charinput[] = "image03.ppm"; const charoutput[] = "image03_1.ppm"; char*src; FILE*fp; charp6[4]; charcomment[256]; intwidth, height, color; inti, j; fp = fopen(input, "rb"); if (fp == NULL) { fprintf(stderr, "Can't open file %s", input); return 1; } /* ファイルIDの読み込みと確認 */ fgets(p6, 4, fp); if (strcmp("P6\n", p6) == 0) { printf("ppm ファイル(%s)を開きました type=%s", input, p6); } else { fprintf(stderr, "No ppm header (%s)", p6); return 1; }
238 :
1/3 :2007/01/27(土) 10:21:20
TABが消えたのでやりなおし #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { const char input[] = "image03.ppm"; const char output[] = "image03_1.ppm"; char *src; FILE *fp; char p6[4]; char comment[256]; int width, height, color; int i, j; fp = fopen(input, "rb"); if (fp == NULL) { fprintf(stderr, "Can't open file %s", input); return 1; } /* ファイルIDの読み込みと確認 */ fgets(p6, 4, fp); if (strcmp("P6\n", p6) == 0) { printf("ppm ファイル(%s)を開きました type=%s", input, p6); } else { fprintf(stderr, "No ppm header (%s)", p6); return 1; }
239 :
2/3 :2007/01/27(土) 10:22:36
/* コメント部分の読み込み */ fgets(comment, 255, fp); printf("%s", comment); /* 画像の幅、高さ、色調の読み込み */ fscanf(fp, "%d %d\n%d\n", &width, &height, &color); printf("幅:%d\n高さ:%d\n色:%d\n", width, height, color); /* 画像データ分のメモリを確保(画素数 * 3) */ src = (char *)malloc(width * height * 3); /* 画像データをメモリに読み込み */ fread(src, sizeof(char), width * height * 3, fp); fclose(fp); /* 書き込み用のファイルを開きID、コメント、幅、高さ、色を書き込み */ fp = fopen(output, "wb"); if (fp == NULL) { fprintf(stderr, "Can't open file %s", output); return 1; } fputs(p6, fp); fputs(comment, fp);
240 :
3/3 :2007/01/27(土) 10:23:22
/* 高さ分ループ */ for (i = 0; i < height; i++) { /* 幅分ループ */ for (j = width; j; j--) { /* 1ドット(3バイト)読み込んでファイルへ書き込む */ fwrite((src+(i*width*3)+(j-1)*3), sizeof(char), 3, fp); } } fclose(fp); free(src); printf("左右反転終了 %s\n", output); return 0; }
241 :
デフォルトの名無しさん :2007/01/27(土) 10:47:35
90度回転 ここまでファイル名以外は同じ /* 幅と高さ入れ替え */ fprintf(fp, "%d %d\n%d\n", height, width, color); /* 幅分ループ */ for (i = 0; i < width; i++) { /* 高さ分ループ */ for (j = height; j; j--) { /* 1ドット(3バイト)読み込んでファイルへ書き込む */ fwrite((src+((j-1)*width+i)*3), sizeof(char), 3, fp); } } fclose(fp); free(src); printf("90度回転終了 %s\n", output); return 0; }
242 :
2.5/3 :2007/01/27(土) 10:50:44
2/3と3/3の間に↓が抜けてた fprintf(fp, "%d %d\n%d\n", width, height, color);
243 :
デフォルトの名無しさん :2007/01/27(土) 11:10:28
[1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): 10人の身長デ−タ data[10]={ 173.8,168.2,180.3,166.0,189.7,167.4,159.8,170.5,167.5,167.4} を背の高い順に並べ換えた後で書き出すプログラムです。正しく動くように虫を取って下さい。 どこが間違っていたのか分かるようにコメントをつけること。 #include<stdio.h> #define num=10; int i; double data[num]={ 173.8,168.2,180.3,166.0,189.7,167.4,159.8,170.5,167.5,167.4} int main(void) { for(i=1;i<=num;i++){ max=i; for(j=i+1;j<=num;j++) if (data[max]<data[j])max=j; data[i]=data[max];data[max]=data[i]; } for(i=1;i<=num;i++)printf("%7.1f ",data[i]); return 0; } [3] 環境 [3.1] OS:WindowsXP [3.2] VC++ 2005 [3.3] 言語:C [4] 期限: 1月29日まで [5] その他:特になし
244 :
デフォルトの名無しさん :2007/01/27(土) 11:30:50
>>243 #define num=10;
↓
#define num 10
または
int num=10;
あとループの初期値が1になってる
245 :
235 :2007/01/27(土) 11:32:07
>>236 ご協力ありがとうございます。
ただ、結果が最終的に
69
61
46
40
35
21
13
となればよいのですが、この方法だと
9447620
69
61
46
40
21
13
となり、結果がおかしくなってしまいます。どのように改善すればいいのでしょうか??
>>243 試してないけどパッと診こんな感じ?
ってゆうか蟲大杉
#include<stdio.h>
#define num=10;
int i;
double data[num]={ 173.8,168.2,180.3,166.0,189.7,167.4,159.8,170.5,167.5,167.4}
int main(void)
{
'for(i=1;i<=num;i++){
for(i=0;i<=num;i++){
max=i;
for(j=i+1;j<=num;j++)
if (data[max]<data[j]) {
'max=j;
double work = data[i];
data[i]=data[max];
'data[max]=data[i];
data[max]=work;
}
}
'for(i=1;i<=num;i++)printf("%7.1f ",data[i]);
for(i=0;i<=num;i++)printf("%7.1f ",data[i]);
return 0;
}
>>246 訂正 「'」はコメント「//」にしる。VBと間違えた
>>245 (
>>235 )
ごめ、間違えた
>>236 で最初に pmember の指す先の領域が無かった
BTREE *insert_bt(int x, BTREE *y){
BTREE **pmember;
pmember=&y;
while(*pmember!=NULL){
if(x > (*pmember)->data) pmember=&((*pmember)->right);
else if(x < (*pmember)->data) pmember=&((*pmember)->left);
else return y;
}
*pmember=new_bt(x, NULL, NULL);
return y;
}
249 :
235 :2007/01/27(土) 11:49:12
>>243 #include<stdio.h>
#define num 10 /* 定数が代入式になっている */
inti,j,max,tmp; /* 宣言されてない変数がある */
double data[num]={ 173.8,168.2,180.3,166.0,189.7,167.4,159.8,170.5,167.5,167.4}; /* 文末の ; が抜けている */
int main(void)
{
for(i=0;i<num;i++){ /* ループの初期値、最大値が間違っている */
max=i;
for(j=i+1;j<num;j++)
if (data[max]<data[j])max=j;
tmp=data[i];data[i]=data[max];data[max]=tmp; /* 入れ替えになっていない */
}
for(i=0;i<num;i++)printf("%7.1f ",data[i]); /* ループの初期値、最大値が間違っている */
return 0;
}
251 :
250 :2007/01/27(土) 11:51:57
double tmp; だった
252 :
232 :2007/01/27(土) 11:56:16
253 :
デフォルトの名無しさん :2007/01/27(土) 12:00:36
うん、sageを覚えような^^
なんかもうグチャグチャだなぁ、回答者の質も低下 >237-242 1レスに納まらないならロダ使え 使い方判らないなら無理に回答せんでよろしい
>>255 そんな高品質な質問者はこのスレにあまりこないとオモワレ
回答者は善意で答えてるんだから批判すんなよ
☆字下げしたい使徒は全角スペース等を使用すべし
>>256 >☆字下げしたい使徒は全角スペース等を使用すべし
nobackspase使えよ・・
259 :
デフォルトの名無しさん :2007/01/27(土) 13:01:18
nobackspaseに該当するページが見つかりませんでした。
>>256 ここに質問するやつはそのままコピーしてエラー出すからな
でどう
>>259 まぁ検索してもでないけど
spase -> space
俺はnobreakspaceと呼んでいる(本当かどうかは知らない) 質問者のレベルにあった質の低い回答の方がばれにくいからいいんじゃないの
>>262 ひでーよ ;;
もう少しソフトな表現を…
ひで〜お ひで〜え〜お
>>256 とりあえず オマエは回答するなって事だw
, -=〜=―- 、 ミ ヽ 二 i 三 ⌒ へ /` | 二 _ _ | 三 ┰ ┰ | l^ ( } ! ヽ / {\ ノ l i ( 、 , ) { ∪、 j | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ‐――――┴、 < 次いってみよ〜 |  ̄`ー―ァ'′ \_______ \______)
>>256 おいおい、宿題丸投げスレだから質はどうでもよく回答さえした「こと」になればいいのかよ。
回答になってない回答は回答と呼べないし。
質問者を混乱させる回答も回答じゃない。
テンプレ読めない質問者はダメで、回答者はテンプレ読めなくても良いなんてことも無いはずで。
なんか、「おれは回答してんだ、文句言うな」的なすごい思い上がりを感じるけどね?
全角スペースなんて使えば「コンパイルできないー」だって言われかねないしな。
どうでもいいよ そんなマジメなスレじゃないだろ、ここ。
今、質問しちゃまずい空気ですか
>>269 それは、ぼるjy・・・うぁなにをふじこ
>>268 別にここは宿題に回答するスレじゃないよ。
宿題に回答するという名目で「暇つぶし」するだけのスレだから。
回答者の思いあがりとか言ってるけど、、
そもそもこのスレに書けば宿題をやってもらえる、なんてのが
依頼者の思い上がりであり心得違い。
>>272 暇潰しは一向に構わないが、暇潰しだからといって、回答を成してないような回答でスレを汚しちゃイカン。
277 :
264 :2007/01/27(土) 14:37:16
278 :
デフォルトの名無しさん :2007/01/27(土) 15:47:42
先輩方、宜しくお願いします。 [1] 授業単元:プログラミング実習 [2] 問題文(含コード&リンク):以下のフローチャートからプログラムを作る ================================ 1.e=0.0010856 Mt=4.631808924494756 ↓ 2.A=Mt+e*sin(Mt) ↓ 3.E=Mt+e*sin(A) ↓ 4.|E-A| < 10^-12 →YESならSTOPでEを表示 ↓ NOなら ↓ 5.A=E で3.に戻り繰り返す ================================ [3] 環境 [3.1] OS:WindowsXP [3.2] Visual C++ 6.0 [3.3] 言語:どちらでも可 [4] 期限: 2007年01月27日中 [5] その他の制限: 無し
>>278 #include<iostream>
#include<cmath>
int main(){
double e = 0.0010856, Mt = 4.631808924494756;
double A = Mt+e*sin(Mt);
double E;
while(1){
E = Mt+e*sin(A);
if(abs(E-A) < pow(10,-12)) break;
A = E;
}
std::cout << E << std::endl;
return 0;
}
280 :
デフォルトの名無しさん :2007/01/27(土) 16:22:34
[1] 授業単元:情報処理演習 [2] 問題文(含コード&リンク): ポインタ int pivoting(a, m) float *a[20][21]; int m; { float b[21]; int k, l; if (m + 1 != n) for (k = m + 1 ; k < n ; ++k) if (*a[k][m] != 0) { for (l = 0 ; l < n + 1 ; ++l) { b[l] = *a[m][l]; *a[m][l] = *a[k][l]; *a[k][l] = b[l]; } return true; exit(1); } return false; } [3] 環境 [3.1] OS: Windows [3.2] gccまたはbcc 5.5.1 [3.3] 言語: どちらでも可 Linuxでは問題無かったのですが、家でWindowsで組んでるとエラーが出ます。 bccとgcc、両方試してみましたが_でしたOTL
>>280 >>1 > ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
282 :
280 :2007/01/27(土) 16:34:45
スマソ、吊ってくる if (*a[k][m] != 0) { の行で、 問題が発生したため、*****を終了します。ご不便をおかけして申し訳ありません。 のヤツがでました。
>>280 どちらでも可というならC言語でやる
未定義のシンボル n
未定義のシンボル true
未定義のシンボル false
>>280 おまえのDebug作業なんだろ
宿題の問題全部か
エラーが出た箇所だけでなく作りかけでいいから全部をロダにUPしろよ
a[k][m]=0になってるんじゃないの?
>>280 if (m + 1 != n)
のnってどっから沸いてきたんだ?マズはそこからだ!
287 :
280 :2007/01/27(土) 17:25:17
289 :
280 :2007/01/27(土) 17:32:05
>>288 実際はint型ですが・・・だめでしょうか?
intだからダメです
int pivoting(a, m) float a[][]; int m; { float b[21]; int k, l; if (m + 1 != n) for (k = m + 1 ; k < n ; ++k) if (a[k][m] != 0) { for (l = 0 ; l < n + 1 ; ++l) { b[l] = a[m][l]; a[m][l] = a[k][l]; a[k][l] = b[l]; } printf("done pivoting...\n"); return true; exit(1); } return false; } で 元も直せ //if (a[m][m] == 0) f_p = pivoting(&a, m); if (a[m][m] == 0) f_p = pivoting(a, m);
292 :
280 :2007/01/27(土) 18:04:33
>>290 あれ、そうなんですか???
>>291 一度それにしたら、Windows上では問題なく動いたんですが・・・
ただそれだと、main関数内の a がpivotingされないはず。
けど、ちゃんとなるんですよね(´・ω・`)
>>292 おまえ・・・
aはアドレスなのか実体なのか解ってるか?
釣りなら他でやってくれ
294 :
デフォルトの名無しさん :2007/01/27(土) 22:28:11
>>294 これ・・・動いてるか?特に1
なぁ 元の宿題全部をUPしろよ
おまえらの間違ったソースを見て 元の問題を想像する方が難しい
>>294 部分的に投げるならその関数の仕様をちゃんとかけよ
渡されてる引数は何なのか
何をさせたいのか
それができたらここにはこないか・・・(*゚艸゚)
298 :
デフォルトの名無しさん :2007/01/28(日) 00:19:19
[1] 授業単元:アルゴリズム [2] 問題文: N個の節点を持つ完全4文木の高さは何か? [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C 言語 [4] 期限: 2007年2月7日17:40まで [5] その他の制限: 無し 夜遅くすみませんが宜しくお願いします
ゆとりは予想の斜め上の質問をするから困る
>>298 おそらく、完全4分木を作って高さを確認するプログラムを作れって事なんだろうが…
もうちょっと質問の仕方考えろよw
>>299 俺の計算だと
log4(3N+1)、端数切り上げ
になったが…
307 :
73 :2007/01/28(日) 02:42:33
すみません
>>51 のプログラムなんですが、行列の要素数をキーボードから任意に指定するにはどうすればいいんでしょうか?
>>307 create_matrixに引数で渡してるから
create_matrixに渡る前でKB入力するか または create_matrixに入ってからKBで入力させれば良くね?
>304 void replace(MUSIC *data,int o,int n) { MUSIC tmp; tmp = *(data+o); *(data+o) = *(data+n) *(data+n) = tmp; } でよくね? こっちも case 1: for(o=0;o<m-1;o++) { for(n=o+1;n<m;n++) { if( 0 < strcomp((data+o)->namae,(data+n)->namae)) { replace(data, o, n); } } } break; >306 表示だけじゃん中身変ってない・・・ウソツキ(爆笑
310 :
73 :2007/01/28(日) 04:12:07
>>308 そうするとキーボード入力した後はそれに合わせて書き換えなければダメですよね?
どなたかその様に作り変えていただけないでしょうか?どうかよろしくお願いしますm(_)m
去年の夏頃からここで何回か回答者としてやってきた俺だが まだまだ未熟だと痛感した。1ヶ月、いやもしかすると2ヶ月になるかもしれないが しばらくC言語の勉強を1からやり直してくる。そんな俺だが C言語で15ゲームを作ったこともあるわけで、自分が初級、中級なのかさっぱり分からん・・・
>>312 継続は力なり、いっぱいバグ出して解決して・・・・・場数こなした奴の勝ち
カンガレ
314 :
299 :2007/01/28(日) 06:50:56
>>303 ああ、ごめん。そうだね。
末端の点の数で考えてしまってた…。
315 :
298 :2007/01/28(日) 09:08:39
有難うございました
[1] 授業単元:様々な式 [2] 問題文: キーボードから入力される全ての文字をカウントし、 入力が終了したら以下の内容を表示するプログラムを組なさい。 ・すべての文字の文字数 ・小文字アルファベットの文字数 ・大文字アルファベットの文字数 ・行数 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名:Borland C++ [3.3] 言語:C [4] 期限:1月30日 よろしくお願いします。
>>316 #include <stdio.h>
int main(void) {
int c, a=0, au=0, al=0, l=0, eol=1;
while((c = getchar()) != EOF) {
if(isgraph(c)) a++;
if(isupper(c)) au++; else if(islower(c)) al++;
if(eol = c == '\n') l++;
}
if(!eol) l++;
printf("すべての文字の文字数: %d\n", a);
printf("小文字アルファベットの文字数: %d\n", al);
printf("大文字アルファベットの文字数: %d\n", au);
printf("行数: %d\n", l);
}
318 :
304 :2007/01/28(日) 13:44:32
319 :
316 :2007/01/28(日) 14:24:51
[1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): charやdouble型にも1個の関数で対応するswap関数を下記のプログラムを補って課題を作成してください #include<stdio.h> /* swap関数は2個の変数の先頭を指すポインタa,b変数が使っているバイト数lengthを受け取って変数領域の中身を交換する */ void swap(void *a,void *b,int length) { char *p,*q; int i; char t; p=(char*)a; q=(char*)b; /* ここを考える。 */ return; } [3] 環境 [3.1] OS:WindowsXP [3.2] VC++ 2005 [3.3] 言語:C [4] 期限: 2007年01月30日まで [5] その他の制限:特になし よろしくお願いします
321 :
デフォルトの名無しさん :2007/01/28(日) 14:48:33
322 :
デフォルトの名無しさん :2007/01/28(日) 15:18:36
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): 利率1.5%の複利型の定期預金に、 10万円を10年間預けたときの利子を求めるプログラムを作成せよ。 複利型:元金に付いた利子にも、その翌年に利子が付く計算方法。 今回は、実数(小数点の金額)のまま10年間の計算を行い、最後に切捨てを行うものとする。 <出力例> 利子:16054円 この問題に関連してこちらもお願いしたいです。 利率1.5%の複利型の定期預金に10万円を預けたときに、 利子が2万円を超えるのに必要な年数を求めるプログラムを作成せよ。 <出力例> 期間:13年 [3] 環境 [3.1] OS: (Windows) [3.2] コンパイラ名とバージョン: (Borland C++ Compiler) [3.3] 言語: (C) [4] 期限: ([1月30日]) [5] その他の制限:for文で簡単に作成をお願いします。 二つもお願いしてしまいすみませんが、宜しくお願いします。
>>320 for (i = 0; i < length; i++){
t = q[i];
q[i] = p[i];
p[i] = t;
}
>>320 for(;0<length;p++,q++,length--){
t = *p;
*p =*q;
*q =t;
}
俺はここでこう言えばいいのか? if(p!=q) for(;0<length;p++,q++,length--) *p^=*q,*q^=*p,*p^=*q;
[1] 授業単元:プログラミング演習 [2] 問題文:ユーザが入力した日本語の文章を茶筅を使って形態素解析して、 動詞と目的語を取り出して表示するプログラムを作成せよ [3] 環境 [3.1] OS:WindowsXp [3.2] コンパイラ名とバージョン:Visual Studio 2003もしくはLSI C-86 [3.3] 言語:C言語 [4] 期限:1月29日12時まで [5] その他の制限:特になし よろしくお願いします
329 :
320 :2007/01/28(日) 16:34:50
ありがとうございました
>>322 #include <stdio.h>
void main()
{
int i,n,k;
double w,r;
printf("問題1\n");
printf("金額:"); scanf( "%d", &k );
printf("年率:"); scanf( "%lf", &r );
printf(" 年 :"); scanf( "%d", &n );
w=(double)k;
r = 1.0+r/100;
for(i=0;i<n;i++)
w *= r;
printf("%d年後の総利子金額%d円\n",n,(int)w-k);
printf("\n問題2\n");
printf("金額:"); scanf( "%d", &k );
printf("年率:"); scanf( "%lf", &r );
printf("幾ら稼ぎたい?:"); scanf( "%d", &n );
w=(double)k;
r = 1.0+r/100;
for(i=0; (int)w-k<n;i++)
w *= r;
printf("利子で%d円稼ぐのには%d年も掛かります\n",n,i);
}
>>328 茶筅は何処の使うの?リンクを張ってくれ
[1] 授業単元:情報処理実習 [2] 問題文:自分で簡単な生徒のデータベースを3つExcelで作成する。 最初に選択肢をつけて例えば選択肢でAを選んだ場合はデータベースのa群、 Bを選んだ場合はb群のデータが出力されやすくなるようなプログラムを作成せよ。 [3] 環境 [3.1] OS: WindowsXp [3.2] コンパイラ名とバージョン: Visual C++ 2005 [3.3] 言語: C言語 [4] 期限: 1月29日18時まで [5] その他の制限:なし 分かりにくいですが、例えばテストの点数がいい人(80〜100点)、普通の人(60〜79点)、悪い人(59点以下) とExcelで3つのデータベースを作り、生徒の名前がA列に、点数がB列に入力されているとします。 最初に出る選択肢を1〜5まで作成して、1を選んだ場合は点数がよい人、5を選んだ場合は点数が悪い人が 名前と点数を合わせて出力”されやすくなる”ようなプログラムです。 されやすくなるというのが曲者で、選択はランダムであるが、選択肢によって出力にばらつきを与えなければなりません。 精度としては7割前後が望ましいということですが、出力のばらつかせ方が全くわかりません。 どうか宜しくお願いします
どこから突っ込んでいいやら・・もうね(ry
335 :
デフォルトの名無しさん :2007/01/28(日) 18:22:59
int main(){ 【質問テンプレ】 [1] 授業単元: [2] 任意のフォルダにファイルを作成する事。 [3] 環境 : VC++ 6.0 [3.1] OS: WindowsXP [3.2]言語:C言語 以下の様にプログラムを作成しましたが上手く行きません。 更にここから実際に存在しないパスの時にドライブ指定が合っていれば そこまでのフォルダを作成しファイルを作る。 無意味な文字列ならエラーを返すと言う風にしたいのですが分かるかた はよろしくお願いします。 int main(){ int i; char str[500]; FILE *fp; printf("保存先を記入してください"); scanf("%s",str); strcat(str,"test.txt"); if((fp = fopen(str,"w")) == NULL) return 0; for(i=0;i<100;i++){ fprintf(fp,"%5d",i); } fopen(fp); return 0; }
>>328 門外漢なんだが、
日本語のシンタックスで「目的語」なんてあったっけ?
英文法のS+V+OとかのOだよな?
「内向的で辛辣なホームズにとって、大衆の賞賛はいつだって嫌悪すべきものだった」
→目的語は?
>>336 日本語の目的語は「○○を」の○○の部分の語
その文の中には無い
338 :
328 :2007/01/28(日) 18:33:22
>>336 入力される文は目的語を含むもののみと限定して構わないです
340 :
333 :2007/01/28(日) 18:39:02
>>335 どううまくいかないか書かれていないが
returnの1行前のfopenはfcloseでは?
342 :
デフォルトの名無しさん :2007/01/28(日) 18:51:20
>>341 すみません。
fcloseでした!!!!
上手く行かない現象としましては、
上記の内容だとファイルオープンが失敗します。
パス指定をせずにif((fp = fopen("test.txt","w")) == NULL)とすれば上手く行くんですが・・・・。
指南、ご指摘よろしくお願いします。
346 :
322 :2007/01/28(日) 19:54:36
>>330 ありがとうございました。
大変助かりました。
>>335 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int i;
char str[500];
FILE *fp;
char cmd[500];
printf("保存先を記入してください");
scanf("%s",str);
sprintf(cmd, "MKDIR %s\n",str);
system( cmd );
strcat(str,"test.txt");
if((fp = fopen(str,"w")) == NULL) return 0;
for(i=0;i<100;i++){
fprintf(fp,"%5d",i);
}
fclose(fp);
return 0;
}
ごめん 所詮オレではこの程度さorz
[1] 授業単元:C言語 [2] 問題文: 実行したファイル名を除いたコマンド ライン引数に 複数個指定したすべてのファイルの内容を 標準出力に表示するプログラムを記述せよ。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名:gcc [3.3] 言語:C [4] 期限:1月30日 宜しくお願いします。
>>348 #include <stdio.h>
int main(int argc,char *argv[]){
int i,ch;
FILE *fp;
for(i=1;i<argc;i++){
if(NULL!=(fp=fopen(argv[i],"r"))){
while(EOF!=(ch=fgetc(fp)))
fputc(ch,stderr);
fclose(fp);
}
}
return 0;
}
>349 putsはないわ
354 :
349 :2007/01/28(日) 20:53:22
>>351 切り捨てる。
すまん350のように1文字ずつのほうがが良いな。
気になるも何も条件を満たしてないじゃないか
358 :
デフォルトの名無しさん :2007/01/28(日) 21:15:40
>>348 俺もかいたお。
#include <stdio.h>
int main(int argc, char **argv)
{
int c;
while (*++argv)
if (freopen(*argv, "r", stdin))
while ((c = getchar()) != EOF)
putchar(c);
return 0;
}
>>358 そりゃヤヴァくね?argc超えた先がNULLかどうか・・・・保証されてるんだっけ?
>>360 ISO Cの規格上
argv[argc] shall be a null pointer.
と記述され、保障されている。
362 :
デフォルトの名無しさん :2007/01/28(日) 21:52:41
>>343-345 >>347 ありがとうございました。
パスの切り替えなんて簡単だと思っていたんですが
想像以上に難しいですね・・・・。
参考にさせていただきます。
364 :
348 :2007/01/28(日) 21:53:39
365 :
359 :2007/01/28(日) 21:55:27
>>367 >//実際はもっと多いです。
こんな書き方じゃなくて、「〜行データがあります」とか書けよ
回答編: #include <stdio.h> //実際はもっとある int main(void){ int fd; fd=stdin; //実際はもっとある }
もっと多いのか? 10億行超えるとまずいなぁw
371 :
デフォルトの名無しさん :2007/01/29(月) 00:10:12
[1] 授業単元:プログラミング [2] 問題文: シェルソートによってEASYQUESTIONを7整列し、次に3整列すると何回比較するか? [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C 言語 [4] 期限:無し [5] その他の制限: 無しです 宜しくお願いします
EASYQUESTIONって何だよ
373 :
デフォルトの名無しさん :2007/01/29(月) 00:15:53
ファイルの名前です
374 :
デフォルトの名無しさん :2007/01/29(月) 00:19:33
[1] 授業単元:プログラミング [2] 問題文: シェルソートによってファイルの名前EASYQUESTIONを7整列し、次に3整列すると何回比較するか? [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C 言語 [4] 期限:無し [5] その他の制限: 無しです 宜しくお願いします
>370 32bit幅超える行のソートになるのか? 小分けしてマージするぐらいしか思いつかん ファイルサイズが心配、FAT32だと制限に掛かりそうだがNTFSなら大丈夫かw
>>374 5(7整列)+9(3整列)で14回かな?(適当)
EASYQUESTION 7整列 EASYQUE STION EAIONUE STSYQ 5 3整列 EAI ONU EST SYQ EOES EO 1 EEO 1 EEOS 3 ANSY AN 1 ANS 2 ANSY 3 IUTQ IU 1 ITU 2 IQTU 2 5 + (1+1+3) + (1+2+3) + (1+2+2) = 5 + 5 + 6 + 5 = 21
379 :
367 :2007/01/29(月) 01:13:00
すいません。 コピーしてきた参照データはあれだけだったので曖昧に書いてしまいました。 データは1000行でお願いします。
>>378 これはむずいな〜。昔ルービックキューブをぐるぐる回してたのを思い出すよ
よしここは遺伝的アルゴリズムだ
>>367 これ宿題か?おまえが整理したいだけだろ?
EXCEL使えよ
383 :
367 :2007/01/29(月) 02:09:16
本当にプログラミングの宿題なんです。 よろしくお願いします。
384 :
367 :2007/01/29(月) 02:16:55
本当は自分が整理したいだけなんです。 よろしくお願いします。
385 :
367 :2007/01/29(月) 02:18:47
できましたので、もういいです。
386 :
367 :2007/01/29(月) 02:19:51
お前ら無能すぎ。さっさと答えないから悪いんだよ。
387 :
367 :2007/01/29(月) 02:21:49
すみません。excelじゃなくて、wordでした。
>>383 宿題だとしたら 突込み処満載w
課題の全文(省略ナシ)書いてみ
それからソートするファイルはデータの多少に関わらずロダにUPしてくれ
>3の事な
389 :
367 :2007/01/29(月) 02:36:15
390 :
367 :2007/01/29(月) 02:40:07
>>388 上級者きどりですかw情けないですねwっうぇwっうぇwwwwww
392 :
390 :2007/01/29(月) 02:51:54
ありゃ、
>>367 氏(らしい人)から罵声でもあびるかと思ったんだけど途端にだんまりじゃ寂しいなぁ…
あれれ、あんまり考えず書き込んだら名前欄間違ってしまったヽ(;´Д`)ノ
394 :
393 :2007/01/29(月) 02:57:53
違うんだ、俺こそ367なんだよ!誰かそ相関図を描いてくれ!111
相姦図なら
もういいから
>>367 はトリップつけろよ
367#適当な文字列 ←ここは自分で決めろ
って名前欄に入れろ
いまさらトリップ付けても意味ないようなw
398 :
391 :2007/01/29(月) 03:08:35
多分本人は寝てるんじゃないかと推測してみたり。
私こそ本物ですよ。
どうせ信じてくれないんですよね(´;ω;`)
>>391 様
ありがとうございました。
400 :
デフォルトの名無しさん :2007/01/29(月) 03:15:28
あほや
まぁ何はともあれ 解答してくれた人がいるんだから一応解決だよな・・・
402 :
デフォルトの名無しさん :2007/01/29(月) 05:27:48
[1]授業単元:プログラミング概論 [2]問題文:次の計算を倍精度で行い、その結果を有効桁15桁で出力するCプログラムを作成せよ。 (1/10000)+(1/9998)+(1/9996)+(1/9994)+…+(1/4)+(1/2) [3]環境 [3.1]linux [3.3]言語:C [4]期限:2007年1月29日 11:00まで よろしくお願いします。
403 :
デフォルトの名無しさん :2007/01/29(月) 06:00:27
初期値から値を最適化するようなC言語ソースありませんか? 勾配法を使ったものなど。。
404 :
デフォルトの名無しさん :2007/01/29(月) 06:14:03
[1]プログラミング概論 [2]問題文:3つの非負整数 h,m,sを入力して、h時間m分s秒に相当する時間の長さを秒単位に変換して出力するCプログラムを作成しなさい。 [3]環境 [3.1]LINUX [3.3]C [4]期限:2007年1月29日 16:00まで 宜しくお願いします。
s += 3600 * h + 60 * m;
>>402 #include <stdio.h>
int main(void)
{
int i;
double s;
for (i = 10000, s = 0.; i >= 2; i -= 2)
s += 1. / i;
printf("%.15g\n", s);
return 0;
}
407 :
デフォルトの名無しさん :2007/01/29(月) 07:09:25
408 :
デフォルトの名無しさん :2007/01/29(月) 07:23:43
(x-xi)^2+(y-yi)^2=<(z-zi)^2 の計算量ってオーダーであらわすといくらになるのでしょう? 回答お願いします
>>404 #include <stdio.h>
int main(void) {
unsigned h, m, s, sa;
printf("時:分:秒 = ");
scanf("%u:%u:%u", &h, &m, &s);
sa = 3600 * h + 60 * m + s;
printf("%u秒\n", sa);
return 0;
}
OS UNIX 言語C 下のプログラムのpbの中身がプリントされないんだけど何でですかね? main() { char *pa = "abcde"; char *pb = "fghijklmnop"; char wd[20]; int i,j; i=0; j=0; do{ wd[j]=*(pa+i); i++; j++; }while(wd[j]!='\0'); i=0; do{ wd[j]=*(pb+i); i++; j++; }while(wd[j]!='\0'); printf("%s\",wd); }
main() { char *pa = "abcde"; char *pb = "fghijklmnop"; char wd[20]; int i,j; i=0; j=0; do{ wd[j]=*(pa+i);←この時点でpaの終端文字NULLがwd[5]に入っている i++; j++; }while(wd[j]!='\0'); i=0; do{ wd[j]=*(pb+i); i++; j++; }while(wd[j]!='\0'); printf("%s\",wd); }
>>411 宿題なら
>>1 をよく読んで書き直し、
質問なら適切なスレへ移動してください
まずはループの条件を見直すところから始めるといいよ
見えなかった スマソ orz
417 :
デフォルトの名無しさん :2007/01/29(月) 11:03:08
[1] 授業単元: アルゴリズムとデータ構造 [2] 問題文(含コード&リンク): 関数のポインターを使ったプログラム [3] 環境 [3.1] OS: Linux [3.3] 言語: C [4] 期限: 2007年1月29日2:00まで お願いします
何をお願いするんだよ
419 :
411 :2007/01/29(月) 11:05:29
>>417 #include<stdio.h>
#include<stdlib.h>
void jotaro(void){
puts("オラオラオラ");
}
void dio(void){
puts("無駄無駄無駄");
}
int main(void){
void (*func_array[])(void)={jotaro, dio};
int i;
for(i=0;i<10;i++)
func_array[rand()/((RAND_MAX+1)/2)]();
return 0;
}
421 :
デフォルトの名無しさん :2007/01/29(月) 11:53:50
[1]プログラミング概論 [2]問題文:3つの整数 a,b,cを読み込み、a,b,cを3辺の長さとする三角形が存在するかどうかを判定するCプログラムを作成せよ。 [3]環境 [3.1]OS:Linux [3.3]言語:C
>>421 #include <stdio.h>
int main(){
int a, b, c;
printf("A辺:"); scanf("%d",&a);
printf("B辺:"); scanf("%d",&b);
printf("C辺:"); scanf("%d",&c);
if ( a+b>c && a+c>b && b+c>a )
printf("三角形\n");
else
printf("無理w\n");
return 0;
}
>>422 #include <stdio.h>
#include <string.h>
char *strrev(char *str) {
int first = 0, last = strlen(str) - 1;
while (first < last) {
char temp = str[first];
str[first++] = str[last];
str[last--] = temp;
}
return str;
}
int main(void) {
char line[1025];
while (gets(line) != NULL) puts(strrev(line));
return 0;
}
426 :
デフォルトの名無しさん :2007/01/29(月) 12:59:26
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 既存のデータ型では扱えない大きな数の掛け算 負の数は考慮しなくてよい getsで2つの数字文字列を入力する 2数の積を算出する ※方法は不問、結果が正しければ良い ※最低 30桁 × 30桁 が計算可能であること ※答の前ゼロは表示しないこと 方法 2つの数字文字列をそれぞれを1文字ずつint型に変換して int型配列に格納しておき、1桁ずつ筆算の要領で計算する ・オプション 計算の経過を筆算形式で出力する (桁上がりなしの場合、1つだけ前ゼロが出力されても良い) 不要なゼロは表示しないこと [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: [3.3] 言語:C [4] 期限:明日まで [5] その他の制限: よろしくお願いします
427 :
425 :2007/01/29(月) 13:01:22
ごめん、直角三角形と勘違いしてたorz
小数もアリなのか?
>>427 #include <stdio.h>
int main(){
int a, b, c;
printf("A辺:"); scanf("%d",&a);
printf("B辺:"); scanf("%d",&b);
printf("C辺:"); scanf("%d",&c);
if ( a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a )
printf("直角三角形\n");
else
printf("無理w\n");
return 0;
}
つ[hypot()]
432 :
422 :2007/01/29(月) 14:09:03
433 :
デフォルトの名無しさん :2007/01/29(月) 14:10:32
[1]数値計算法 [2]一様乱数の組(xi,yi)(0≦xi≦1,0≦yi≦1,i=1,2,3,…)を生成させる。0≦x≦1,0≦y≦1 で与えられる正方形と、x^2+y^2≦1で与えられる四分円の面積に基づいて、この四分円の内部に入る乱数の組の確率を用いて円周率πを計算しなさい。i=1000の値ごとの近似値を出力し、試行計算を2万回行ってみなさい。 [3]C言語 [4]1月30日 12:00
#include<stdio.h> #include<stdlib.h> double uniform_rand(void){ return (double)rand()/RAND_MAX; } int main(void){ double xi, yi, pi_4; long i, count_total, count_internal; for(i=1,count_total=0,count_internal=0;i<=20000;i++){ xi=uniform_rand(); yi=uniform_rand(); if(xi*xi+yi*yi<=1.0) count_internal++; count_total++; if(i%1000==0){ pi_4=(double)count_internal/count_total; printf("i=%ld pi=%f\n", i, pi_4*4); } } pi_4=(double)count_internal/count_total; printf("pi=%f\n", pi_4*4); return 0; }
>>433 もうでてたか(汁) 作っちまったから一応投稿。
#include <stdlib.h>
#include <stdio.h>
#define N 2000000
#define DRAND() ((double)rand() / (double)RAND_MAX)
int main() {
int i, cnt = 0;
for(i=0; i < N; i++) {
double x, y;
x = DRAND(); y = DRAND();
if(x*x + y*y <= 1) cnt++;
}
printf("PI=%lf\n",4.0 * (double)cnt/(double)N);
// cnt ÷ N = 円の面積 ÷ 四角形の面積(2*2) の筈? -> (cnt/N*2*2)/r^2 = PIっぽい
return 0;
}
うわ、1000毎に出力すんのかorz 俺のは無視してくれ。
>434 count一種類にしてi使えば?
>>437 for(long i=1,count_total=0,count_internal=0;i<=20000;i++){
だったのを書き換えた名残
>438 iで回数わかるのにcount_totalいらねーだろってことなんだが、名残とか意味分からん。
[1] 授業単元:C++ [2]問題文 ○以下の条件を満たすクラスphdataを作成せよ ・身長(cm)と体重(kg)を格納する変数をもつ ・コンストラクタで、各変数に値を格納させる ・オブジェクトを浮動小数点数に変換した際には、BMI値を返すようにする ○main()関数で、簡単な確認コードを書け ※BMI = 体重(kg) / [身長(m)×身長(m)] [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual studio 2005 [3.3] 言語:C++ [4]期限2007年2月1日 [5]その他の制限:なし よろしくお願いします
[1] 授業単元:情報処理 [2] 問題文: ・データファイルから、全体の人数、英語、数学、理科の3教科の得点を打ち込む。 ・各自の合計点を求める。 ・3教科および、合計点それぞれについて、最大値、最小値を求めよ。 ・合計点の大きい順にデータを並び替えて出力せよ。 ・並べ替える前のデータも表示出力せよ。 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン:Microsoft Visual C++ .NET [3.3] 言語: C++ [4] 期限: 2月1日 [5] その他の制限:なし よろしくお願いします。
442 :
デフォルトの名無しさん :2007/01/29(月) 17:53:23
1] 授業単元: C言語 [2] 問題文(含コード&リンク):2006年1月1日は日曜日である。月と日を入力すると、この日をもとに曜日を出力するプログラムを作成せよ。 月日の入力は「/」で区切ることにする。 日付を入力してください(MM/DD):12/24 12月24日は日曜日です。 こんな感じで表示をお願いします。多分ですがポインタ配列を使用するんだと思います。 [3] 環境 [3.1] OS: WindowsXP [3.2] コンパイラ名とバージョン: Borland C++ Compiler [3.3] 言語: C言語 [4] 期限: 1月31日まで [5] その他の制限: 基本情報の試験に出る範囲くらいまで(あいまいですみません) 宜しくお願い致します。
>>442 #include <stdio.h>
const char *dw[] = {"日", "月", "火", "水", "木", "金", "土"};
const int dm[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int main(void) {
int m, d, a, b;
printf("日付を入力してください(MM/DD): ");
scanf("%d/%d", &m, &d);
if(m < 1 || 12 < m || d < 1 || dm[m - 1] < d) {
fputs("不正な日付です。", stderr);
return 1;
}
for(a=d-1,b=m-1;b;) a+=dm[--b];
printf("%d月%d日は%s曜日です。", m, d, dw[a % 7]);
return 0;
}
>>443 グローバルな名前空間を汚すな。
static const char * const dw[] = {"日", "月", "火", "水", "木", "金", "土"};
static const int dm[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
>>444 その前に、なぜmain()の中で定義しないのかを問うべきではないか。
明らかに翻訳単位が一つしかないプログラムに汚染も何もないような。
447 :
359 :2007/01/29(月) 18:34:15
誤差が大きかった場合に求まったhiを次の計算に使うのでなく、 初期値として入力した値を少しずつ減算して利用していく方法で無事解決しました。 手前勝手で済みませんが質問を取り下げさせて頂きます。 お騒がせして済みませんでした。
449 :
442 :2007/01/29(月) 20:24:27
>>443 ありがとうございました。
>>444 私には「static」の意味が解からないんですが、
>>443 のプログラムで動きました。
>>445 mainの中に入れました。
皆さんありがとうどざいました。
451 :
デフォルトの名無しさん :2007/01/29(月) 22:50:38
453 :
デフォルトの名無しさん :2007/01/29(月) 23:21:15
読んできました! ・・・駄目ですか?
ダメです
455 :
426 :2007/01/29(月) 23:24:56
>>426 至急お願いします!
完全じゃくなくて途中まででもいいです。
>>451 C#のスレ探せ。無ければ立てろ。
あと最低限日本語訳が無いと作れない。
>>455 getsを使わせるような教官は張り倒して構わん
>>426 方法不問なのか、示された方法を用いるのか、どっちなんだい?
>>455 getsのバッファオーバーランに関する危険性をレポートにまとめて提出しとけ。
そんな課題まじめにやる必要ないよ。
>>451 やってみようと思ったが解凍してアイコンとサイズみて0.5秒で捨てた
仕様書からプログラムおこせってのは宿題じゃない、仕事だ。
465 :
デフォルトの名無しさん :2007/01/29(月) 23:47:34
>>451 把握です!
>>463 問題文が長過ぎですよね・・・。
でも、やってみようと思ってくれただけでも感謝です。
.NET1.1か。2005だと互換性確認しながら作らんとならんからやだな
せめて日本語に訳してくれ
468 :
455 :2007/01/29(月) 23:51:25
じゃあ、gets使わなくてもいいので、 お願いします!
>>468 >>3 さえ満たせばすでに前スレで解答ができてるからそれを教えてやるっての
静かだ!w 皆いっぺんに3428.txtに行ってる予感w
474 :
デフォルトの名無しさん :2007/01/30(火) 00:16:20
>>464 >>467 そうですよね・・・ごめんなさい。
一度訳して、出来る限り簡潔にまとめて出直してきてもいいですか?
こんなC#ですけど、相手にしてもらえたら嬉しいです!
ダメだ
476 :
455 :2007/01/30(火) 00:23:24
>>476 途中まででいいということなので
int main()
{
途中までですが どうぞ
>>3
478 :
デフォルトの名無しさん :2007/01/30(火) 00:35:01
>>477 あんまりだぉ
せめてコンパイルはとおる程度には
#include<stdio.h>
int main(){
char str[31];
gets(str);
return 0;
}
481 :
デフォルトの名無しさん :2007/01/30(火) 00:50:46
ごめんなさい、少し恥ずかしいです・・。 明日朝の講義があるので、寝ます・・。 相手にしてくださった方、どうもありがとうございました!
[1] 授業単元:C言語実習 [2] 問題文(含コード&リンク): 二分探索木(1)最小値の探索 二分探索木を用意し、最小値の探索を行う関数を作成しなさい。 ただし、最小値の探索の関数は、再帰を使わなくてもかける。 再帰を使った場合と、再帰を使わない場合の、 2種類の関数を作成すること。 二分探索木へのデータの格納は、 main関数の中で最初にノードの作成とリンクを手動で行う方法でよい。 【ヒント】 構造体の名前はstruct nodeとしてTreeNode型としてtypedefする 関数群 最小値を(再帰的に)探索する関数 search_min 実習時間中に作成したものでよい 繰り返しで最小値を探索する関数 search_min_loop search_minを参考にして新しく作成すること メモリの確保を行う関数 create_node 後順走査の関数 post_order_traversal 使い終わったメモリの解放を行う 間順走査の関数 sym_order_traversal 格納されたデータ部の値だけを出力し、 ノードの深さに応じて位置をずらして表示すると見易くなる。 [3] 環境 [3.1] OS: xp [3.2] visual studio2003 [3.3] 言語: C [4] 期限: 明日の朝まで [5] その他の制限: 特になし よろしくお願いします。
490 :
ガロ :2007/01/30(火) 14:59:37
[1] 授業単元: C++ [2] 問題文(含コード&リンク): •自動販売機のオブジェクトを作成し実現しなさい(ジュース,たばこ,カップラーメンなど何でも良い(何の自販機は出力すること))。ただし,下記の条件を満たすこと。 <条件> •自動販売機で購入できる「商品商品」,「お金お金」,「自動販売機自動販売機」は最低限クラス化すること。 •「カプセル化」,「継承」,「多様性」を全て利用すること。 •例外処理をすること(プログラムが頓挫した時点でNGとします)。 •入出力は,下記のとおり行うこと。 【入力】 ・お金(10円〜1000円)の個数(枚数) ・購入商品選択(複数可) 【出力】 ・つり銭(10円〜100円)の個数(枚数)と総購入代金 ・購入商品名(複数) •実現は,main()関数で「自動販売機」クラスのインスタンスを1つ作成し,そのクラスのbuy()メンバ関数を呼び出したら全てが動作するようにする。 [3] 環境 [3.1] OS: (XP) [3.2] visual studio2003 [3.3] C++ [4] 期限:明日中に [5] その他の制限:なし お願いします。
491 :
初産 :2007/01/30(火) 15:05:14
[1] 授業単元: C++言語 [2] 問題文(含コード&リンク): short型, int型, long型, float型, double型の5つの型の変数を2つづつ宣言しなさい。 そして,それぞれの変数にキーボードから値を入力し,2つの変数を入れ替えなさい(同じ名前で,仮引数の型が違う関数を5つ作成すること。また,仮引数は参照変数にすること) 最後に,入れ替えた値を出力しなさい。 [3] 環境 [3.1] XP [3.2] visual studio2003 [3.3] C++ [4] 期限:今日中に [5] その他の制限:なし よろしくお願いします。
>>490 日本語では複数形を表すのに慣用的に同じ語句を繰り返す場合(人々、品々等)があるが、
基本的に複数形はないと考えてよい。
>>490 日本語がわりと上手だね。
どこの国の人?
494 :
ガロ :2007/01/30(火) 16:38:31
ガロ国です。
わろた
食べた
WindowsVistaの動作が軽くなるプログラムきぼんぬ!
>>495 どもアリガトです はじゅかしいorz
記事削除しましたm(_ _)m
まちがてるぞ
503 :
501 :2007/01/30(火) 20:58:36
数値以外の入力が orz
ん〜〜、unsigned charと0〜255ってのも何かありそうなぁ・・・ シフトビット演算子を使うのかどうかはともかく、とりあえず 入力された数値を一度2進数にしてから加工した方がええんかね? そういった条件については書かれていないから、やれる手段の中から勝手に答えりゃ良いけど
[1] 授業単元: アルゴリズム基礎
[2] (問題が小分けされていました。この問いはその問題の後半です。)
@delnameは、削除によって開放されたメモリをreallocによって返却してはいない。わざわざ返却する意味があるかを答えよ。
Aまた、返却すべきかどうかをどんな根拠で判断したらいいかを述べよ。
B項目を削除するのに削除済みの項目を未使用とマークするやり方を使う場合に、adnameとdelnameに必要な変更を施せ。自分が施した変更から、プログラムのほかの部分がどの程度分離されているかに留意せよ。
[3] 環境
[3.1] OS: Windows
[3.2] Visual Studio C++ 2005
[3.3] 言語: (C)
[4] 期限: 2007年1月31日20:00まで
[5] その他の制限:C言語
よろしくおねがいします。
資料は、下記にあっぷしました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3505 36. 可変配列関数レポート 3562.zip
507 :
ジロー :2007/01/31(水) 01:48:50
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 自動販売機のオブジェクトを作成し実現しなさい(ジュース,たばこ,カップラーメンなど何でも良い(何の自販機は出力すること))。ただし,下記の条件を満たすこと。 <条件> •自動販売機で購入できる「商品商品」,「お金お金」,「自動販売機自動販売機」は最低限クラス化すること。 •「カプセル化」,「継承」,「多様性」を全て利用すること。 •例外処理をすること(プログラムが頓挫した時点でNGとします)。 •入出力は,下記のとおり行うこと。 【入力】 ・お金(10円〜1000円)の個数(枚数) ・購入商品選択(複数可) 【出力】 ・つり銭(10円〜100円)の個数(枚数)と総購入代金 ・購入商品名(複数) •実現は,main()関数で「自動販売機」クラスのインスタンスを1つ作成し,そのクラスのbuy()メンバ関数を呼び出したら全てが動作するようにする。 [3] 環境 [3.1] XP [3.2] visual studio2003 [3.3] C++ [4] 期限:出来れば早く。 [5] その他の制限:なし よろしくお願いします。
508 :
ジロー :2007/01/31(水) 02:04:08
[1] 授業単元: C++ [2] 問題文(含コード&リンク): ‒int型の変数を複数個格納するクラスを作成したい。ここでメンバ変数を配列にしてしまうと限られた個数の変数しか格納することができないので,動的メモリ(new)を用いてメモリの許す限り変数を作成しようと思う。 ‒メンバ変数「int*data;」をクラス内に用意し,そして,この変数にデータを追加するメンバ関数を用意して,上記のクラスを実現しなさい。 ‒ただし,プログラムが終わるときにはメモリを全て解放すること(デストラクタで実現すること)。また,C言語のメモリ確保関数は用いてはいけない。 【上記以外にクラスに必要なもの】 ・コンストラクタ,変数入出力用メンバ関数 【確認】 実際にインスタンスを生成し,反復文を用いてデータを入力し確認する。 [3] 環境 [3.1] XP [3.2] visual studio2003 [3.3] C++ [4] 期限:出来れば早く。 [5] その他の制限:なし よろしくお願いします。
509 :
ジロー :2007/01/31(水) 02:05:03
[1] 授業単元: C++ [2] 問題文(含コード&リンク): 上の課題(508)で作成したクラスにコピー機能を持たせたい。コピーコンストラクタを用いてこのクラスにコピー機能を持たせなさい。 【確認】 上の課題(508)で作成したインスタンスともうひとつインスタンスを用意し,提出課題1で作成したインスタンスをそれにコピーし,それのデータをコンソールに出力して確認する。 [3] 環境 [3.1] XP [3.2] visual studio2003 [3.3] C++ [4] 期限:出来れば早く。 [5] その他の制限:なし よろしくお願いします。
510 :
デフォルトの名無しさん :2007/01/31(水) 02:15:49
[1] 授業単元:コンピュータ演習 [2] 問題文: 2分木の先行順走査が、レベル順走査のキューより記憶領域を多く使うような木の例をあげよ [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:なし [3.3] 言語: C [4] 期限: 2月7日 [5] その他の制限:なし よろしくお願いします。
>コンパイラ名とバージョン:なし はて・・・
特定のコンパイラやバージョンに依存する設問じゃないからだろ
それどころかコーディングするような問題じゃない。 OSにも言語にも依存しない一般的なアルゴリズムの問題だな。
514 :
デフォルトの名無しさん :2007/01/31(水) 05:25:33
bit反転なんて難しく考えないで255から引いてやればそれが反転した数値だ
xorのが早くね?
>>516 0を代入する代わりに自分自身とXORはよくやったな(アセンブラだけど)
519 :
デフォルトの名無しさん :2007/01/31(水) 10:11:51
[1] 授業単元:情報演習 [2] 問題文: ファイルがEASYQUESTIONであるとしてクイックソートで整列するのに実行される比較回数を求めよ [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:なし [3.3] 言語: C [4] 期限: なし [5] その他の制限:なし よろしくお願いします。
521 :
519 :2007/01/31(水) 10:15:11
[1] 授業単元:情報演習 [2] 問題文: ファイルがそれぞれE・A・S・Y・Q・U・E・S・T・I・O・Nであるとしてクイックソートで整列するのに実行される比較回数を求めよ [3] 環境 [3.1] OS: linux [3.2] コンパイラ名とバージョン:なし [3.3] 言語: C [4] 期限: なし [5] その他の制限:なし よろしくお願いします。
>>519 >>3 > ・回答の督促は禁止
> 但し、スレ中の全未回答問題レス番号を張る場合のみ許可とする
未回答問題まとめて出直して来い
>>521 ちょっと上に既出
>371 >374
>377
>>524 規則が
a -> b
a -> c
c -> a
の場合、
[1] a -> b
を出力した後に「ループ」を出力することは認められる?
それとも最初から「ループ」と出力しなければいけない?
526 :
525 :2007/01/31(水) 11:18:54
書き忘れ。上の例では入力はaだとする。
>>524 おまえも>3を読んでこい
rule1.txtをうpしれ
[1] 授業単元: セキュリティープログラム演習 [2] 問題文:音楽データ(WAVE,MP3等) にランダムでビットプレーンに電子透かしを埋め込む [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン: VC 6.0等) [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 2007年2月7日17:00まで [5] その他:WAVEの方が簡単らしいですが・・・よくわかりません
529 :
524 :2007/01/31(水) 12:04:40
言葉不足でした。すみません。 rule1.txtの内容は問題に書いてる a -> b b -> c b -> x c -> d というのがrule1.txtの内容になっています。 >525 これも説明不足でした。すみません。 これは最初から"ループ"と表示することになっています。
>524 変換できなくなるまでの文字を'z'にしてあるが 違ったらEND_CHARを変えてくれ #include <stdio.h> #define END_CHAR ('z') int main(int argc,char *argv[]) { char p1[16],p2[16],dst[16],buf[1024]; int ch,add; FILE *fp; if (argc>=3) { if (NULL!=(fp=fopen(argv[1],"r"))) { while (NULL!=fgets(buf,sizeof(buf),fp)) { sscanf(buf,"%s %s %s",p1,dst,p2); add = p2[0]-p1[0]; if( argv[2][0]+add < END_CHAR) printf("ループ\n"); printf("%c",argv[2][0]); for (ch=argv[2][0]+add;ch<=END_CHAR;ch+=add) printf(" %s %c",dst,ch); printf("\n"); printf("開始文字:%c\n",argv[2][0]); } fclose(fp); } } return 0; }
gome ループの意味を取り違えた 修正するm(_ _)m
>>530 問題を壮絶に誤解してない?
>>524 たとえばルールが
a -> z
b -> c
c -> b
で、開始文字が a の場合はループ?それとも a -> z ?
>524 #include <stdio.h> #define END_CHAR ('z') int main(int argc,char *argv[]) { char p1[16],p2[16],dst[16],buf[1024]; int ch; FILE *fp; if (argc>=3) { if (NULL!=(fp=fopen(argv[1],"r"))) { printf("%c",argv[2][0]); ch=argv[2][0]; while (NULL!=fgets(buf,sizeof(buf),fp)) { sscanf(buf,"%s %s %s",p1,dst,p2); ch += p2[0]-p1[0]; if ( ch<' ' || ch >END_CHAR) break; else if ( ch==argv[2][0]) { printf("\n出力:ループ\n"); break; } printf(" %s %c",dst,ch); } fclose(fp); } printf("\n開始文字:%c\n",argv[2][0]); } return 0; }
>>534 それも違くね?
複数行のルール適用後の値を再度ルールを適用して繰り返し行う
で入力値になったときにループを表示するのではないかな?
多少の勘違いではなく、完全に勘違いしてると思われる。
538 :
537 :2007/01/31(水) 13:11:31
>>537 scanf 後の printf("here") はデバッグメッセージなので削除を。
標準入力に入力されたデータを,標準出力にそのまま出力するコードを書け. このとき,入力されるデータが,バイナリでも正しく動作するよう留意せよ. この課題、初心者なのでわかりません。 教えてください。
断る
わかりました ありがとうございます。
#include <stdio.h> void main(void){while(putchar(getchar()));}
まぁそれじゃあダメなんだけどネッ!
544 :
528 :2007/01/31(水) 15:23:23
[1] 授業単元: セキュリティープログラム演習 [2] 問題文:音楽データ(WAVE,MP3等) にパスワードを用いてランダムでビットプレーンに電子透かしを埋め込む [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:特になし [3.3] 言語:C [4] 期限: 2007年2月7日17:00まで [5] その他:応用での課題もあるので、よろしければ皆様のお力を貸してください。 よろしくお願いします。
546 :
544 :2007/01/31(水) 16:01:37
>>542 それじゃNULを入力しない限り無限ループするがな。
NULを入力すれば無問題
>>546 >3
> ・回答の督促は禁止
> 但し、スレ中の全未回答問題レス番号を張る場合のみ許可とする
12:00 am?
同日0:00pmじゃね?
同日12:00 pmじゃね?
am/pm
555 :
デフォルトの名無しさん :2007/01/31(水) 18:07:59
1] 授業単元:データ処理演習 [2] 問題文(含コード&リンク):E・A・S・Y・Q・U・E・S・T・I・O・Nの順にヒープに要素を挿入(insert) したときヒープの配列の中身を示せ [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: アルゴリズムの問題なのでなしです [3.3] 言語:C [4] 期限: 2007年02月7日まで [5] その他の制限:なし よろしくお願いします。
>>555 またお前か
順調にカス人間に成長してるな
558 :
555 :2007/01/31(水) 18:35:40
ありがとうございます
と思ったらPDFの中にあるのかorz
あぁあぁしまった ごめんなさい各ファイルを作成してもう一度上げ直します
563 :
musi :2007/01/31(水) 19:55:47
1] 授業単元: C++言語 [2] 問題文(含コード&リンク): <クラス作成> •(1)「干支」クラス(基本)を作成する •(2)「干支」クラス(基本)クラスから派生した「子」クラス,「丑」クラス・・・「亥」クラス(計12個)を作成する <準備> •(3)main関数で「干支」(基本)クラスのポインタ変数を用意する •(4)main関数で派生クラスのインスタンスを全て作成する(計12個) •(5)初期値として(3)のポインタに「子」オブジェクトを格納する <アルゴリズム> •(6)乱数を発生させ(0〜11の範囲),出た数字分(3)のオブジェクトを1つづつずらしなさい(乱数で3が出たら「子」→「丑」→「寅」→「卯」)なお,ここで,typeid()を用いて,現在の(3)のポインタの状態を調べてずらしていくこと。 •(7)(6)を繰り返し,「亥」になったら終了しなさい。なお,繰り返しているときはどの干支になっているかを表示すること 子丑卯辰巳午未申酉戌亥寅 [3] 環境 [3.1] Windows XP [3.2] visual studio2003。 [3.3] C++ [4] 期限:明日中に [5] その他の制限:なし よろしくお願いします。
[1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): 1000までの素数をエラトステネスの方法で計算するプログラムを作成せよ。 エラトステネスの方法とは 1000 までの奇数のうち 3 の倍数 6,9,12,・・・ を全て消す。 次に残った数のうち最小の 5 の倍数 10,15,20,25,・・・・を消す。 これを 7,11,13,17,・・・・・と1000の平方根を越えるまで続ける(31まで)。 これで 2 及び消されなかった数が素数である。 [3] 環境 [3.1] OS:WindowsXP [3.2] VC++ 2005 [3.3] 言語:C [4] 期限: 2月1日まで [5] その他の制限:特になし よろしくお願いします
566 :
524 :2007/01/31(水) 22:48:48
プログラムありがとうございました。 勉強になります。
567 :
524 :2007/01/31(水) 22:57:21
>532 その場合は開始文字がaならループには ならないいのでa -> z となります。
568 :
デフォルトの名無しさん :2007/01/31(水) 23:00:53
これの意味教えてください CHECK_DEF(d) ok(d==MSVCRT_##d,"Defines (MSVCRT_)" #d " are different: %d vs. %d\n",d,MSVCRT_##d) okって何? 内容はバッティングする宣言をMSVCRT_ってつけたのに入れ替えるような ことらしいけど 宣言がない場合はエラーが出るのはしょうがないのかな?
570 :
569 :2007/01/31(水) 23:07:09
ぐぼぉ、すまそ。余計なものが入っていたんで却下しまつ
571 :
569 :2007/01/31(水) 23:09:50
ぐぼぉ、すまそ。余計なものが入っていたんで却下しまつ
>569-573 ありがとうございます。 ネットで検索したり参考書に載ってるのをやってはみたのですが 上手くいかなかったので助けをあおがせてもらいました。
>>574 >>573 の最初のfor文の中身を for(i=1; i<=MAX; i++) にしてくれい。
なんかあれこれ仕様を変更してたら、結局無駄を省いたつもりが
他のことで無駄が増えたり・・・。スレ汚しすまそ。
>>576 memsetを使ったらいいじゃないかな
と書いてみた
すいません、トリップのつけ忘れです
>>578 切り上げって表示だけ?それともA〜Dの判定にも影響してくるの?
>578 #include <stdio.h> int main(){ int count = 0, data, sum = 0; printf("数値を入力,終了はEOF(ctrl+D)\n"); while (scanf("%d", &data) == 1) { sum += data; count++; } if (sum > 100) sum = 100; else if (sum < 0) sum = 0; if (count >= 5) sum = (sum+9)/10*10; printf ("%d\n", sum); if (sum >= 80) printf("A\n"); else if (sum >= 70) printf("B\n"); else if (sum >= 60) printf("C\n"); else printf("D\n"); }
>>580 説明が不足していて申し訳ありません。
判定にも影響します。
例えば71と入力して終了した場合は80となり、判定はAとなるプログラムをお願いします。
>>581 ありがとうございます。
実行してみたのですが、切り上げが行われていないようです・・・
584 :
デフォルトの名無しさん :2007/02/01(木) 01:15:32
if (count >= 5) ↓ if (sum >= 5)
>>583 #include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char buf[256];
int n, sum=0;
while(fgets(buf,sizeof(buf),stdin)){
if(strcmp(buf,"end\n") == 0) break;
n = atoi(buf);
sum += n;}
if(sum < 0) sum = 0;
else if(100 < sum) sum = 100;
if(5 <= sum) sum = (int)(sum*0.1+0.9) * 10;
printf("%d ", sum);
if(sum <= 50) putchar('D');
else if(sum == 60) putchar('C');
else if(sum == 70) putchar('B');
else if(80 <= sum) putchar('A');
putchar('\n');
return 0;}
[1] 授業単元:統計
[2] 問題文(含コード&リンク):
http://www.lain.cc/1.jpg source.txt
[3] 環境
[3.1] OS:WindowsXP visual studio(コンソール)
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C
[4] 期限: できれば今週中にお願いします
[5] その他の制限:特にありません
1.jpgの図のブロックが移動すると、T2の列(p22の上)にp41、p23の上にp43、その右にp44
が出てきます。
このようにブロックが移動するすべてのパターンを出したいのですが、移動した際の値を作り出せません。
また、□1-4は3列ランダムで残り1個が左3つのブロックにくっつき、それぞれの確率を求めます。
途中まで書いてみたのですが、上記の部分を書くことができませんでした。
よろしくお願いします。
誰かエスパー呼んできて
591 :
伊藤 :2007/02/01(木) 05:12:45
エスパー伊藤です。
>>585 助かりました。
ありがとうございます。
【質問テンプレ】 [1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク): 自分の学生番号と名前を表示するプログラムを作成し、プログラムと実行結果 を示せ。但し、学生番号と名前はそれぞれをメンバとして持つ構造体として定 義し、この構造体を引数として表示動作する関数を定義し、これを利用したプ ログラムとすること。構造体タグ名やメンバ名は自由に決めてよい。構造体が 利用されていないプログラムを示した場合には減点する。 [3] 環境 LINUX [3.3] 言語: C [4] 期限:なるべく早めに よろしくお願いします
>>593 なるべく早めにやって欲しいなら学籍番号と名前よろ
>>593 #include <stdio.h>
typedef struct {
char name[16];
int idno;
} hoge;
void hogeDisp( hoge *x){ printf( "番号 >>%d\t名前:%s\n",x->idno,x->name);}
int main(void)
{
hoge a={"◆4b1ATtPg4",593};
hogeDisp( &a );
return 0;
}
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
http://3rd.geocities.jp/as_rmter/stage_h7a.html [3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler
[3.3] 言語: C言語
[4] 期限: 2月1日12時→2月1日15時まで待ってもらえるようになりました
[5] その他の制限: ポインタ配列を必ず使う ぐらいです
どなたかよろしくお願いします
[1] 授業単元:プログラミング技術 [2] 問題文(含コード&リンク):キーボードから5文字以内の文字列を入力し 文字配列へ格納する。格納した文字配列を表示する。 実行例 INPUT > Hello (入力) Hello (システム表示) [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:gcc3.4 [3.3] 言語:C言語 [4] 期限: 特になし [5] その他の制限:配列、Null文字
>>597 #include <stdio.h>
#define CLSSMAX (3)
int main()
{
int i,j,cnt=0,*t[CLSSMAX],a[]={52,38,79,89,57,71,90,-1},b[]={67,89,56,45,91,-1},c[]={89,34,67,65,67,55,-1};
double total,all=0;
t[0]=a;
t[1]=b;
t[2]=c;
for(i=0;i<CLSSMAX;i++){
total=0;
for(j=0;*t[i]>=0;j++,cnt++)
total += *t[i]++;
if( j!=0)
printf("%d組の平均点は%.1fです\n",i+1, total/j);
all +=total;
}
if(cnt!=0)
printf("この学年の平均点は%.1fです\n", all/cnt);
return 0;
}
>>599 ネタ?
#include <stdio.h>
void main(void){char str[6];printf("INPUT>");scanf("%s",str);printf("%.5s",str);}
>>599 #include <stdio.h>
int main()
{
int str[6];
int i, c;
printf("INPUT > ");
for(i = 0;i < 5 && (c = getchar()) != EOF && c != '\n'; i++)
str[i] = c;
if(c == '\n'){
str[i] = c;
i++;
}
str[i] = '\0';
for(i = 0; i < 6; i++)
putchar(str[i]);
return 0;
}
603 :
588 :2007/02/01(木) 15:23:12
うーん。 なんとか端折りながら書いてみたんですけど、今読み直してみるとワケワカンネ。 徹夜30時間で超てんぱってたからなぁ。 とりあえず、今日の朝提出だったんですけど来週に延ばしてもらいました。
オレ的メモ >328 日本語茶筌 環境構築が大変っぽいのでスルー >333 EXCELファイルかぁ〜でスルー >335 >347 >348 >349-350 >358 >359 自力解決 おめでと〜 >367 >391 >378 まだやってるのか?自力カンガレ >402 >406 >404 >410 >417 >420 >421 >423 >422 >424 >426 >462 >433 >434 >435 >440 BMI値 >441 英数国 既出でスルー >442 >443 >448 >495
オレ的メモ2 >451 C#・・スレ違い >487 >489 >499 >501 >491 >505 >506 レポートなのか? >507 >490 設計仕様のみ機能仕様が不明の為スルー >508 >509 >518 >510 レポートなのか? >524 >537 >544 >528 >550 穴埋め問題 >555 >521 >519 >374 >371 あきらめれw >556 >563 乱数干支 >564 >559 >582 >565 >572 >573 >578 >585 >587 スタック >588 イミフwwwうはwwwwおkwwww >593 >596 >597 >586 >600 >599 >602
606 :
378 :2007/02/01(木) 16:57:44
>604 まだやっています。締め切り明日なのですがまだ全然できません. 最善はつくしますが
607 :
559 :2007/02/01(木) 17:47:47
>>582 解答ありがとうございます
提出してみたのですが誤りでした
makeして自分で実行してみたときもトークンがないといわれてしまいました…
[[[ あなたの答案 ]]]
出力結果:
1行目:nullファイル名を入力しなさい:
2行目:unknown step load clearトークンはありません
[出力結果ここまで]
[[[ 正解例 ]]]
出力結果:
1行目:nullファイル名を入力しなさい:
2行目:unknown step load clear
3行目:token[0]: data=unknown
4行目:token[1]: data=step
5行目:token[2]: data=load
6行目:token[3]: data=clearUndefined: data=unknown type=0 value=0
7行目:Keyword: [step] data=step type=1 value=5
8行目:Keyword: [load] data=load type=1 value=3
9行目:Keyword: [clear] data=clear type=1 value=0
[出力結果ここまで]
[1] 授業単元:プログラミング演習T [2] 問題文(含コード&リンク): X^3-4X^2+4X-C=0 の根をニュートン法の公式を使って求めよ。 ニュートン法は近似値をXoldとすると新しい近似値Xnewを次式で求める。 f(x)とその微分f'(x)をそれぞれ関数としてプログラムすると色々なf(x)に使えるプログラムになる。 近似値が収束するまでくり返してこの式を適用する。Cが 0.1〜1.0 の間を 0.1 刻みで変化するとき 各Cに対応する3根の値を示しなさい。 (注)式の根は3個(x1,x2,x3)あるが、それぞれに適当な初期値を与えることが重要。 [3] 環境 [3.1] OS:WindowsXP [3.2] VC++ 2005 [3.3] 言語:C [4] 期限: 2月2日まで [5] その他:特になし よろしくお願いします
[1] アルゴリズム基礎
[2] A. delnameは、削除によって開放されたメモリをreallocによって返却してはいない。わざわざ返却する意味があるかを答えよ。
また、返却すべきかどうかをどんな根拠で判断したらいいかを述べよ。
B. 項目を削除するのに削除済みの項目を未使用とマークするやり方を使う場合に、adnameとdelnameに必要な変更を施せ。自分が施した変更から、プログラムのほかの部分がどの程度分離されているかに留意せよ。
[3] 環境
[3.1] OS:Windows
[3.2] 指定なし
[3.3] 言語: C言語
[4] 期限: 2007年2月2日22:00まで
[5] その他の制限:特になし
添付資料
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3505 47. アルゴリズム基礎 3579.zip
よろしくお願いします!!
オレ的傾向 マルチはパス レポートはパス 督促・重複質問があったやつもパス 動作に必要なファイル(読込みデータの類)がUP無いモノはパス 例え質問テンプレに内容が張ってあってもパス (ファイルファーマットで動作に影響する可能性がある為)
∩ ( ⌒) ∩_ _グッジョブ !! /,. ノ i .,,E) ./ /" / /" _n グッジョブ!! ./ /_、_ / ノ' ( l _、 _ / / ,_ノ` )/ /_、 _ グッジョブ!! \ \ ( <_,` )( /( ,_ノ` ) n ヽ___ ̄ ̄ ノ ヽ |  ̄ \ ( E) / / \ ヽフ / ヽ ヽ_//
>>440 #include <iostream>
struct phdata {
double tall_;
double weight_;
public:
phdata(double t, double w) : tall_(t), weight_(w) {}
void print() { std::cout << "身長(cm) " << tall_ << ", 体重(kg) " << weight_; }
};
double BMI(const phdata& pd) {
if (pd.tall_ == 0) { return NAN;}
double tall_m = pd.tall_ / 100.0; //cm -> m
return pd.weight_ / (tall_m * tall_m);
}
int main()
{
using namespace std;
phdata a(155, 55), b(177, 74);
a.print();
cout << "BMI " << BMI(a) << endl;
b.print();
cout << "BMI " << BMI(b) << endl;
}
614 :
597 :2007/02/01(木) 22:30:58
>>600 無事提出できました
ありがとうございました
615 :
あっこ :2007/02/01(木) 23:19:27
[1] 授業単元:ソフトウェア設計実習 [2] 問題文(含コード&リンク): シーザーの暗号文を以下に示すように自動解析するプログラムcipher4.cを作成しなさい。 暗号文(文字配列に初期値として与える) wkh frxqwubv ghsxwb sulph plqlvwhu wrog dq dxglhqfh iulgdb lq zdohv wkdw vwlfnlqj wr wkh hohfwlrq wlphwdeoh zrxog eh gliilfxow ehfdxvh ri wkh vhfxulwb fulvlv 実行例 the countrys deputy prime minister told an audience friday in wales that sticking to the election timetable would be difficult because of the security crisis [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C [4] 期限: 2007年2月2日18:00まで お手数ですが、よろしくお願いします。
>>616 #include<stdio.h>
int main(){
char c[] = "wkh frxqwubv ghsxwb sulph plqlvwhu wrog dq dxglhqfh iulgdb lq zdohv wkdw vwlfnlqj\nwr wkh hohfwlrq wlphwdeoh zrxog eh gliilfxow ehfdxvh ri wkh vhfxulwb fulvlv\n";
int i = 0;
while(c[i] != '\0'){
if('a'<=c[i] && c[i]<='c') putchar(c[i]+23);
else if('d'<=c[i] && c[i]<='z') putchar(c[i]-3);
else putchar(c[i]);
i++;}
return 0;}
自動解析って何だ・・・?
自動解析ってシーザー暗号でずらすパラメータを自分で見つけるという 事か?そんな事は無理。膨大な辞書を持てば可能かもしれんが・・・・ 宿題でそんなアホな問題が出るとも思えん。
英語で'e'が使われる確率が最も高い事を利用したわけか。なるほど。
622 :
あっこ :2007/02/02(金) 04:29:31
>617 ありがとうございました。
623 :
あっこ :2007/02/02(金) 04:33:08
マルチは頂けないなあ。
マルチばーか。
マルチというよりは、 問題数が多いからって並列処理かよ!
>>623 (1) (機種依存文字は使うなって)
#include <iostream>
int main()
{
int p1 = 2, q1 = 3;
int& p2 = p1;
int& q2 = q1;
int& p3 = p2;
int& q3 = q2;
int& p4 = p3;
int& q4 = q3;
int& p5 = p4;
int& q5 = q4;
std::cout << p5 * q5 << std::endl;
}
>>623 (2)
#include <iostream>
const int N = 10;
template <typename T>
void selection_sort(T a[N], int n)
{
for (int i = 0; i < n - 1; i++) {
T min = a[i];
int s = i;
for (int j = i + 1; j < n; j++)
if (a[j] < min) {
min = a[j]; s = j;
}
if (a[i] != a[s]) {
T t = a[i]; a[i] = a[s]; a[s] = t;
for (int j = 0; j < n; j++)
std::cout << a[j] << ' ';
std::cout << std::endl;
}
}
}
int main()
{
int a1[N] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
int a2[N] = {5, -1, 7, -7, 9, 25, -9, 5, 14, 9};
double a3[N] = {5.2, -1.2, 7.2, -7.2, 9.2, 25.2, -9.2, 5.2, 14.2, 9.2};
selection_sort<int>(a1, N);
selection_sort<int>(a2, N);
selection_sort<double>(a3, N);
}
>>630 これは誰かの作りかけみたいだな
題意とUPされてるモノが違うのか?
作りかけじゃない、問題の全文をUPしてくれ
>631 それが誰も手を ( 付けない || つけられない ) 理由
>>630 >>550 率直な感想だが、
作りかけだとしたら、この宿題までの課題を復習しろ
もし本当にこのままで宿題が出てたとしたら、出題者をヌっころせ!
全角「”」って何んだぁ〜w
途中までやったのをUPするのは構わないが、
穴埋めじゃないモノを穴埋めだ!と宿題スレに投げるのはヤメレ
宿題も元文も無しに、間違ったモノをUPして直せだの、続けて書いてくれもヤメレ
それで督促・重複されてもどうしようもない
634 :
n :2007/02/02(金) 18:11:39
C言語についての自分の考えを1000文字位で書けといわれたんですが、どのように書けばいいですかね??
>>634 素直に自分の思うところを記述すればいいと思うよ。
一般にどういうふうに考えられていますか、なら相談に乗れるが。
ただし、ここで議論してもフレームになるだけだろうが。
スレみてると割りと問題丸投げしてやってあげてる人多いみたいだけど どこがわからないか聞いてそこを教えたほうがよくない?
>>636 どこがわからないかわかるような賢い連中は丸投げしないし、そもそもこんなスレに来ない
このスレは相手のためのスレじゃなく。 自分達の力量を試す場じゃないの?
>>636 ここは暇な人間が相手のことなんか考えずに腕試しに課題をこなすスレ
そういう回答が必要なら、質問系のポータルサイト行くべきだ。
640 :
636 :2007/02/02(金) 18:31:31
ここに来るやつは覚えたいんじゃなく ただ単位をとるためにプログラムやってるだけどだ思う
オレ的には誰かが出した宿題に誰かが回答して その回答と自分のこなしてみたモノと比べてイロイロ考える ロジカルな部分であったりコーディングスタイルであったり あるいは出題者の意図と設問作成であったり イロイロ考えた結果をレスしなくてイイのが、このスレの良いとこで張り付いてるw もちろん質問者も回答を得てイロイロ考えるだろうが、まっそれは各人の自覚次第
>634 Asm好きは卑屈すぎます♪高級言語は怖くないです♪ Bsic好きは中途半端♪世の中のAPはBasicで作れ〜ますがデバドラ類にはちょ〜と不足♪ C好きは賢い選択♪A・Bよりはちょ〜と、おりこう♪ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・以下 自分の考察を述べよ
645 :
デフォルトの名無しさん :2007/02/02(金) 19:40:23
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): 一次元の熱伝導のシミュレーションを行うプログラムの作成。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2月7日 [5] その他の制限:特になし
プラズマ状態でも簡単っぽい
648 :
あっこ :2007/02/02(金) 20:00:19
みなさんありがとうございます。
649 :
あっこ :2007/02/02(金) 20:01:39
651 :
n :2007/02/02(金) 20:21:47
>635確かにそうですね。では皆さんはどのように考えておられますか?
>>649 ジロー・ガロ・あっこは同族か同一か?w スルー確定w
>>634 #include<stdio.h>
#include<string.h>
int main(void){
char *print_message="C言語についての自分の考え";
int i, n;
n=1000*2/strlen(print_message);
for(i=0;i<n;i++)
puts(print_message);
return 0;
}
>>651 それ宿題じゃないだろ。
自分の考えを書くのが宿題なのに他人の考えを聞いてどうする。
657 :
n :2007/02/02(金) 20:38:13
>>655 僕は知識がないんで考えが思い浮かばないんですよ。。だから皆さんの考えを参考に出来たろと思いまして。
>>657 >644書いて出しとけ
シャレの判る先生ならニヤリッとして点くれるかもよw
>>657 知識が無いってことを1000文字書けばいいじゃないか
>>657 × 皆さんの考えを参考に
○ 皆さんの答えを丸写し
661 :
n :2007/02/02(金) 20:47:36
誰も書いてくれないということは、皆さんも何も考えずに、プログラミングに励んでおいでですか??
>>.661 と言って煽れば誰かが書いてくれると思ってるのだろうか?
>>661 どうして誰も書いてくれないのか少しは自分で考えてみれば?
>>659 昔、大学の試験で全然分からなくて
解答用紙一杯に細かい字で「すいません。分かりませんでした。」
って書いたら可でぎりぎり通してもらったことがある。
665 :
n :2007/02/02(金) 20:54:28
まったくここはひどいインターネットですね 皆さんが無能だということはよく分かりました
>>661 お前がC言語にたいしてどういうイメージ持ってるのかを素直に書け
>>665 ダメだ!
ただしくは
まったくここはひどいインターネッツですね
皆さんが無能だということはよく分かりました
と言うのだ!
それは後世の人間に修正を加えられた伝説だろ
669 :
n :2007/02/02(金) 21:06:35
>>665 僕は句読点を用いますよ。そして、若干文章に笑ってしまいました。
皆さんは性格がお悪いのでしょうか??それとも2ちゃんねるの方々は、皆さんこのような受け答えなのでしょうか?
>>669 面白半分、まじめ半分
で、お前がC言語にたいしてどういうイメージ持ってるのかを素直に書け
当然ながら質問者の質に応じて回答の質も変える
672 :
n :2007/02/02(金) 21:19:07
>>670 興味なかったから特に考えつかないんですよね。。
興味ないなら、そんな作文書かんでいいじゃない。 莫迦らしい。進む道まちがえてるよ、君
エキスパートCプログラミングの文章写せばいいと思うよ
675 :
n :2007/02/02(金) 21:28:54
皆さんのレスを整理して、心理学実験のレポートを提出することにします。 スレ違いの質問に多数のレスを頂きありがとうございました。
>>675 興味がないことを延々と書け
なぜ興味がないのかを延々とな
タイトル「C言語できたからって俺の人生かわるのか?」
第1話「俺、C言語より虹が好き」
第2話「C言語でなにが出来る?」
第16話「宿題だりぃ〜」
>>675 なんか演繹的に破綻してそうなレポートになりそうだなw
心理学と情報を同時にやってるなら所詮般教レベル、先生もメンドイ、読まずに捨てるw
「C言語の特徴・・・以下 検索して挿入」で千文字は楽に越えてしまう適当にまとめろ
やっぱこの時期はスレのスピード速いなぁ
>>588 問題文の分かりやすい説明キボン
それとも期限延びたから自力で片付けるのか?
681 :
デフォルトの名無しさん :2007/02/02(金) 22:29:00
>>679 大学なら1月いっぱいで講義終了して2月に入れば試験だから
そろそろ勢い落ちるよ。
682 :
デフォルトの名無しさん :2007/02/03(土) 00:33:15
1] 授業単元:コンピュータ演習 [2] 問題文(含コード&リンク): 逆数に並んでいるファイルに対して選択整列法、挿入整列法、バブル整列法の中で、もっとも早いのはどれか [3] 環境 [3.1] linux [3.2] アルゴリズムなので無し [3.3]C言語 [4] 期限:無し [5] その他の制限:なし よろしくお願いします。
順序によるけど選択ソート。
>>682 「選択ソート、挿入ソート、バブルソート 逆順」でぐぐれ。
>>682 [3.2] アルゴリズムなので無し
↑
この矛盾を先に答えてもらおうか!
↓
[3.3]C言語
環境はアルゴリズムだと端折れるらしいが、言語指定は端折れないでC指定なのはナゼだ?
逆順だとわかってるなら、後ろからコピーするのが最速w
>>681 そして宿題スレは試験スレになる。
さあ試験時間内に問題を解いてレスするんだw
そんな暇な奴居るんだw
691 :
682 :2007/02/03(土) 12:32:46
有難うございました!!
692 :
630 :2007/02/03(土) 15:40:34
>>692 全角「”」が書かれてるからダメと言ってる訳ではない、誤解するなよ
構造体そのものの意味が解らん
>穴埋めの件に関しては、構造体のプロトタイプ宣言と、関数DspList()は、参考として掲載されていたものです。
/* 構造体のプロトタイプ宣言 */
struct Node{
int data[N];
struct Node *next;
};
--------------中略--------------------
else {
if(L->data < x){
ZIPの参考資料は見てないが
まず dataは入力した値を10個格納するアドレスなのか!入力した値そのものなのか!
アドレスと値を比較してどうしようって?
題意をこなす為には構造体の宣言からNGだって事だ
694 :
616 :2007/02/03(土) 18:01:33
>>692 一度催促してる限り、
>>3 の条件を満たさないと解答できないじゃないか
[1] 授業単元:ソフトウェア設計実習 [2] 問題文(含コード&リンク): 「天丼てんや」のメニューデータ(一部抜粋)より注文したい商品番号と数量、時刻を入力し、 商品の時刻に対する売り上げの結果をファイルへ出力するプログラムLevel2ka.c(main())、level2kb.c(syuukei():入力・集計と売り上げの表示)、 level2kc.c(CSV形式のファイル出力用関数)、以下の2つの構造体を含むsyukei.hを作成しなさい。なお、CSV出力のファイル名は、ten月(ゼロパディング2行表示) 日(ゼロパディング2行表示).txtにて決められるものとする。 struct menu{ //お店のメニュー構造 char*name; //表品名 int price; //価格 }; struct uriage{ //売り上げ構造体 int no; //売った表品のNO. int kazu; //売った商品の数 int hour; //売った時間 }; char fname[10]; FILE*fp; ゼロパディング2行表示によるファイル名の作り方 printf("本日の月日を入力してください:"); scanf("%d%d",&m,&d); sprintf(fname,2ten%02d%02d.txt",m,d); //%02dは2行確保し、あまった行に0を詰める この結果5月8日を指定したら文字配列fnameには"ten0508.txt"が入力される ■メニューデータ(一部抜粋) 1:天丼500円 2:野菜天丼500円 3:えび天丼780円 4:上天丼580円 5:蟹とほうぼうの天丼弁当720円 6:蟹とほうぼうの定食850円 [3] 環境 [3.1] OS: (WindowsXP) [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: C言語 [4] 期限: 2007年2月4日15:00まで すみませんが、お願い致します。
レベル2にて作成した11月分のデータ(実際には以下の3日分をViエディタにて作成すること)が存在する。 指定したつきの時間帯に対する売り上げ数をまとめ、グラフ(最大のポイントを20に固定)にて表示する プログラムlevel3k.c、sum.h(時間帯ごとに売り上げ数を読み込む構造体)を作成しなさい。 more ten1109.txt N/T 11:00 12:00 13:00 14:00 15:00 16:00 17:00 No1: 2 8 8 2 4 2 3 NO2: 5 10 9 4 6 3 4 NO3: 4 13 13 4 5 4 2 No4: 6 3 4 2 8 6 7 NO5: 3 16 6 4 4 4 6 NO6: 2 11 7 3 3 2 3 more ten1110.txt N/T 11:00 12:00 13:00 14:00 15:00 16:00 17:00 No1: 2 8 7 2 4 1 3 NO2: 4 9 9 4 5 3 3 NO3: 4 13 13 5 5 4 2 No4: 7 3 4 2 8 6 6 NO5: 3 18 6 4 3 2 6 NO6: 2 11 7 2 3 2 3 more ten1111.txt N/T 11:00 12:00 13:00 14:00 15:00 16:00 17:00 No1: 2 8 8 2 4 2 3 NO2: 7 12 9 5 6 4 4 NO3: 4 16 13 4 5 4 6 No4: 6 3 4 2 8 6 7 NO5: 4 16 7 6 4 6 8 NO6: 2 11 7 3 3 2 3
[1] 授業単元:C++ [2] 問題文(含コード&リンク):classを利用して住所録を作れ [3] 環境 [3.1] OS: XP [3.2] コンパイラ名とバージョン: Visual Studio2003 [3.3] 言語: C++ [4] 期限: 2007年2月5日 [5] その他の制限: 特になし よろしくお願いします
日本語が変orz Ctrl+DはDos窓の場合Ctrl+Zだからな だった
>>699 まあこんな感じじゃない?
#include <string>
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
class Juusho {
public:
string data;
bool find(const string &str) { return data.find(str) != string::npos; }
};
void main(int argc, char *argv[]) {
vector<Juusho> juusyoroku;
cout << "住所、名前、電話番号等を入力して改行を押してください。ENDで終了します。" << endl;
while (true) {
getline(cin, line);
if (line == "END") break;
juusyoroku.push_back(line);
}
cout << "探したい住所、名前、電話番号の一部を入力して改行を押してください。ENDで終了します。" << endl;
while (true) {
getline(cin, line);
if (line == "END") break;
for (int i = 0; i < juusyoroku.size(); ++i) {
if (juusyoroku[i].find(line))
cout << "該当しました:" << endl << juusyoroku[i].data << endl;
}
}
}
[問題]C言語 2つの値を入力してunsigned char型の変数x,yに代入してください。 また、a = x + y,b = x * yの計算をし表示してください。 ※a及びbは、オーバーフローを考慮しえプログラムを作成すること printf関数で出力。
で今こうゆうの書いてますが、aとbにunsigned charが入れれなく困ってます。 #include <stdio.h> struct hensu{ int a; int b; unsigned char x[10]; unsigned char y[10]; }test; void data_input() { printf("2つの値を入力してください。\n"); scanf("%s",&test.x); scanf("%s",&test.y); } void data_output() { printf("x = %s, y = %s, x + y = %d, x * y = %d",test.x,test.y,test.a,test.b); } int main(int *, unsigned char *) { data_input(); data_output(); return 0; }
>>700 その住所録にキミの名前と住所あったらどーする?
>>701 ありがとうございました。アップロードした後、自分で若干やってみようとしたときに、main関数がおかしいことに気づいたところでした。
改めて構造体およびポインタの勉強をやり直します。お世話になりました。
708 :
デフォルトの名無しさん :2007/02/03(土) 23:49:38
【1】C言語 【2】Linux 【3】問題 テキストファイル(例えばそのプログラム自身)に対して、各英数字ごとにその出現度数を、ファイル全体に関してカウントし、出力するプログラムを作成せよ。 出力形式は Char A:4 Char B:2 初心者ですお願いしますm(__)m
>>704-705 #include <stdio.h>
struct hensu{
int a;
int b;
unsigned char x;
unsigned char y;
}test;
void data_input(void) {
int w;
printf("2つの値を入力してください。0〜255\n");
printf("X:");
while(EOF!=scanf("%d",&w))if(0<=w&&w<=255)break;else printf("0〜255で入力してください[%d]\nX:",w);
test.x = (unsigned char)w;
printf("Y:");
while(EOF!=scanf("%d",&w))if(0<=w&&w<=255)break;else printf("0〜255で入力してください[%d]\nY:",w);
test.y = (unsigned char)w;
test.a=test.x + test.y;
test.b=test.x * test.y;
}
void data_output(void){ printf("x = %d, y = %d, x + y = %d, x * y = %d",test.x,test.y, test.a,test.b); }
int main(void){
data_input();
data_output();
return 0;
}
すいません。ガード処理じゃなくて256以上の数値の表示ができるようにはならないでしょうか?
712 :
デフォルトの名無しさん :2007/02/03(土) 23:59:31
[1] 授業単元:システムプログラミング [2] 問題文(含コード&リンク): UDPを利用したチャットシステムを作りなさい。 プロトコル パケットの先頭の一文字はパケットの種類を表す。 C→S S→C 引数 i login 開始 ユーザが入室 ニックネーム o logout 終了 ユーザが退室 ニックネーム m message 発言 他のユーザの発言 メッセージ e error エラー エラー エラーのあった行 すべての通信は行単位で行う。 1文字目は上記のいずれか 2文字目からが引数の内容 サーバの動作 起動時に標準入出力、標準エラー出力は閉じる。停止はシグナルで行う。 SIGINTを受け取ったら、全員に停止メッセージを送って終了する。 i 登録し、入室情報を全員に通知同一ニックネームを使っている場合は(1)のように番号を後につける o 登録を削除し、退室情報を全員に通知 m メッセージを全員に通知 クライアントの動作 起動時に login プロトコルをサーバに送る 終了時に logout プロトコルをサーバに送る ユーザがキーボードから入力したメッセージはサーバに送る。行単位で処理。 サーバから送られてきたメッセージは画面に表示 [3] 環境 [3.1] OS: Windows XP [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C [4] 期限: 2007年2月15日 [5] その他の制限: 特にありません。よろしくお願いします><><
>>711 #include <stdio.h>
#include <stdlib.h>
struct hensu{
int a;
int b;
unsigned char x[10];
unsigned char y[10];
}test;
void data_input(void) {
printf("2つの値を入力してください。\n");
printf("X:");
scanf(" %s",test.x);
printf("Y:");
scanf(" %s",test.y);
test.a=atoi(test.x) + atoi(test.y);
test.b=atoi(test.x) * atoi(test.y);
}
void data_output(void){ printf("x = %s, y = %s, x + y = %d, x * y = %d",test.x,test.y, test.a,test.b); }
int main(void){
data_input();
data_output();
return 0;
}
桁あふれ忘れた 後は任せたm(_ _)m
大変助かりました。ありがとうございました。 質問ばかりして申し訳ありませんが、もう一つ聞かせてください。 unsigned charをshortにした場合にはどのように処理すればいいんでしょうか?
>>715 スレ違いだが、文字列数字→数値はatoiでOK
717 :
デフォルトの名無しさん :2007/02/04(日) 00:19:15
>>712の書き込みのものです。。 お願いします>< 誰か得意な方、お願いしますーーーーーー><
>>717 期限余裕あるからちょっとは自力でカンガレw
719 :
デフォルトの名無しさん :2007/02/04(日) 00:22:19
そぉですよね。。。 すみません(涙) でもプログラム理解して、考察も書かないといけないんです。。 わかったら、お願いします。。
>>704-705 です
>>709 さん感謝します。
>>716 さんありがとうございます。
unsigned charをshortに変換しただけではERRORで『int型はconst char *型に変換できない』というものがでてきます。
short型で処理する方法を教えていただけないでしょうか?
すいません『short型はconst char *型に変換できない』でした…。
>>720 たぶんまだ
unsigned char x[10];
unsigned char y[10];
こうなってないか?
>>709 は
unsigned char x;
unsigned char y;
だぞ
>>722 あたりまえやw まぁスレ違いなんで移動すべき
int x=123456789;
char str[10];
x=123456789;
sprintf(str,"%d",x);
printf("%s\n",str);
>723
>713
709はできたんですけど、 unsigned charのところをshortに変えて処理するプログラムを教えて頂けないでしょうか。 m(_ _)m
728 :
デフォルトの名無しさん :2007/02/04(日) 00:49:00
なにこのAI
なかなか優秀なbotだね
AIでも小出しでもなんでも構わないんでw マジ明日までにやらないとやばいんす… HELP!!shortに変えてぇえ〜!!
これはひどい
誰かやってやれ
結局、何をすればいいんだろう
>>730 #include<stdio.h>
#include<stdlib.h>
struct hensu{
int a;
int b;
short x;
short y;
}test;
void data_input(void){
char temp[256]={0};
printf("x:");scanf("%s",temp);test.x=atoi(temp);
printf("y:");scanf("%s",temp);test.y=atoi(temp);
test.a=test.x+test.y;
test.b=test.x*test.y;
}
>>730 お前はこのあと、「言語は C++ でお願いします」と言う!
>>733 さん見捨てないでくれてありがとう…感謝。
ありがとうございました。失礼します。
フランス行け
ボンジュ〜ル♪…乙
#include<stdio.h> int rec(int x); int main(void){ printf("%d\n",rec(32)); return 0; } int rec(int x){ printf("%d\n",x); if(x<=1) return 1; return 4*rec(x/2); } /* 32 16 8 4 2 1 1024 */ なんで、最後の出力が1024になるんだろ。後輩に聞かれたが説明できない
>>739 rec()は6回呼び出される。
最初のrec()が1なので、後はrec() ^ 5 = 4^5が返される。
>>739 最後の1024はメインで表示されてるから
>>740-741 thx!自分C使ったこと無いのに聞かれて、少し勉強して今回の以外は答えていたんだけど
1024だけはわかんなかったので。
ありがとやんす
なんで、質問スレに行かないんだろ
744 :
154 :2007/02/04(日) 06:59:06
包茎を直すプログラムを書け!糞ども
書けたらとっくに書いてますが、何か?(涙)
書いても渡しませんよ
[1] 授業単元:OS演習 [2] 問題文:postgresqlから呼び出したデータテーブルhogetbl上の項目(front,rear,te)を 構造体GHへ格納するプログラムを作れ ■postgresql、データベースのテーブル設計 テーブル名 hogetbl 項目 名称 型 front 前部 varchar(10) rear 後部 varchar(10) te 長さ int(2) ■C言語側 構造体 struct GH{ char front [10]; char rear [10]; int te; }; [3] 環境 [3.1] OS:Winxp [3.2] コンパイラ:cygwin1.3.22 postgresql7.3.2-2 [3.3] 言語:C [4] 期限:2月5日まで [5] その他の制限:データベースへの接続等は出来るんだけど構造体への格納方法が分らなくて困ってます。 よろしくお願いします。
>>708 半角文字のみ対応 全角混在には使えないorz
#include <stdio.h>
int main()
{
int i,ch,t[128]={0};
while (EOF!=(ch=fgetc(stdin)))
if( ch<127 )
t[ch]++;
for(i=0;i<127;i++)
switch( i ){
case('\a'):printf("BEL \\a:%d\n",t[i]);break;
case('\t'):printf("HT \\t:%d\n",t[i]);break;
case('\n'):printf("LF \\n:%d\n",t[i]);break;
case('\v'):printf("VT \\v:%d\n",t[i]);break;
case('\f'):printf("CL \\f:%d\n",t[i]);break;
case('\r'):printf("CR \\r:%d\n",t[i]);break;
default:if(' '<=i)printf("Char %c:%d\n",i,t[i]);
}
return 0;
}
750 :
デフォルトの名無しさん :2007/02/04(日) 13:42:11
751 :
デフォルトの名無しさん :2007/02/04(日) 13:46:37
752 :
デフォルトの名無しさん :2007/02/04(日) 13:47:48
main の中の printf と rec の中の printf を区別すると分かるんじゃまいか
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク) 3*3のint型2次元配列を宣言し、1から9までの整数値を for文を使用して配列要素に格納し、各行ごとの和を表示する。 実行結果 1+2+3=6 4+5+6=15 7+8+9=24 [3] 環境 [3.1] OS:windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:なし [5] その他の制限 多次元配列、制御構造
>>757 #include <stdio.h>
int main(){
int a[3][3], i, j, s;
for(i=0; i<9; i++) a[i/3][i%3]=i+1;
for(i=0; i<3; i++) {
s=0;
for(j=0; j<3; j++) {
printf("%s%d", j==0?"":"+", a[i][j]);
s+=a[i][j];
}
printf("=%d\n", s);
}
return 0;
}
759 :
デフォルトの名無しさん :2007/02/04(日) 14:19:54
C++の質問です。Assignment.txtからデータをifstreamで読み込んで、そのテキストにある(,{,[,],},)ペアを見つけるIfelse文を書こうとしてます。 例えば、( )、(())、([)]だったら「括弧のペアが見つかりました」と表示して。 その他、(]、([、}などだったら「○○のペアが見つかりません」などと結果を表示させたいんですが、 肝心のIfelse文が上手く書けません。助けてくださると嬉しい限りです。 ちなみにopening.top(match)はclass Stack言う私が作ったclassを使って、Stackにある一番上にある値をchar matchに移しています。 Stack openings; while(!dataIn.eof()){ dataIn >> symbol; while(is_matched && symbol != '\n'){ if(symbol == '{' || symbol == '(' || symbol == '[') {openings.push(symbol);} dataIn >> symbol; if(symbol == '}' || symbol == ')' || symbol == ']'){ if(openings.empty()){ cout << "Unmatched closing bracket: " << symbol << " detected." << endl; is_matched = false;} else{ char match; openings.top(match); openings.pop(); is_matched = (symbol == '}' && match == '{') || (symbol == ')' && match == '(') || (symbol == ']' && match == '['); if(!is_matched) cout << "Bad match: " << match << symbol << endl; } } } if(!openings.empty()) cout << "Unmatched opening bracket(s) detected." << endl;}
>>759 ここは質問スレじゃない。もし宿題だと言うのなら、
>>1 を読んでテンプレを埋めれ
[1] 授業単元: プログラム演習T [2] 問題文(含コード&リンク): キーボードから16進数の数値を入力し、その数値を反転させた値 下位4ビットを全て1にした値、上位4ビットを全て0にした 値を16進数で表示する。(入力値は8桁固定) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: [無期限] [5] その他の制限: ビット演算子・論理処理を用いて
#include <stdio.h> int main(){ unsigned char i; if(scanf("%hhX", &i)) { printf("%02hhX\n", (unsigned char)~i); printf("%02hhX\n", i | 0x0F); printf("%02hhX\n", i & 0x0F); return 0; } return 1; }
763 :
759 :2007/02/04(日) 15:19:17
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): テキストファイルに書かれている括弧のペア全て揃っているかのの有無を見つけるIfelse文 [3] 環境 [3.1] OS: WindowsXP [3.2] Dev-C++ [3.3] C++ [4] 期限: 2007年2月5日 [5] その他の制限:下の例文を使ってテキストファイルから読み込んだものを対応出来るように。 Stack openings; while(is_matched && symbol != '\n'){ if(symbol == '{' || symbol == '(' || symbol == '[') {openings.push(symbol);} dataIn >> symbol; if(symbol == '}' || symbol == ')' || symbol == ']'){ if(openings.empty()){ cout << "Unmatched closing bracket: " << symbol << " detected." << endl; is_matched = false;} else{ char match; openings.top(match); openings.pop(); is_matched = (symbol == '}' && match == '{') || (symbol == ')' && match == '(') || (symbol == ']' && match == '['); if(!is_matched) cout << "Bad match: " << match << symbol << endl; } } } if(!openings.empty()) cout << "Unmatched opening bracket(s) detected." << endl;} 先程は済みませんでした。
>>763 759 を見るに、( [ ) ] のような互い違いになっている括弧でも
ペアが見つかったとしないといけないんだね?
765 :
デフォルトの名無しさん :2007/02/04(日) 15:25:49
712のものです>< チャットのソースなんですが、みなさんよろしくお願いします(*- -)(*_ _)
>>762 scanf で値を受け取る領域が足りてないよ (int と同じ大きさが必要)
>>763 スレタイ読めない奴か?Debug相談はスレ違い
その文捨てるならヤルw 捨てないなら出直せ、つか他所逝け
分からないので、お願いします
[1] 授業単元: 情報処理基礎
[2] 問題文(含コード&リンク)
・データファイルから全体の人数(50人)、英語、数学、理科の三教科の得点を読み込む
・各自の三科目合計点を求める。
・三教科及びそれぞれについて、最大値、最小値を求めよ。
・合計点の大きい順にデータを並べ替えて表示せよ。
・並べ替える前のデータも表示せよ。
データ:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3599.lzh (風の噂で、データの全体の人数は+1しなければいけないと聞いたので、51にしてあります。50でよかったらすいません;)
ファイル名は以下のようにせよ。
・入力データファイル data.dat
・ソースファイル k24.cpp
・出力データファイル out.dat
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語:C++
[4] 期限:明日15時まで
[5] その他の制限
>>765 >>3 を100万回読め。
712 で答えが出ない理由のひとつとして、ネットワーク周りの
環境が全く書かれていないことが挙げられる。
どうせあんたじゃ自分の環境を正しく説明できないだろうから、
これまでに提示された/作ったプログラムを1つくらいアップロードすると
現状では手を出さない人が手を出すかもしれない。
>>767 おいおい。あんた以外の誰かがやるかもしれないんだから
出直せとか他所行けは無いだろう。
>>766 ありゃ、そりゃ初耳だ。
hhでもint分必要なのか?
>>770 ここでDebug相談受けてらキリないし、そう云うスレは他にあるがなにか?
>>763 >>759 >Stack言う私が作ったclass
これもよろ。他にも何か書いてないことがあれば全て書くように。
まぁ
>>770 がやるみたいだし余計な話かもしれないけどね
774 :
デフォルトの名無しさん :2007/02/04(日) 15:46:49
>>769 すみません。読みました。。
これが講義資料に載っていた簡略版Clientです。
こんな感じでいいでしょうか?
775 :
デフォルトの名無しさん :2007/02/04(日) 15:48:09
#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> main(int argc, char *argv[]) { int s; struct sockaddr_in my_addr, server; int serverlen, nc; struct hostent *host; char buf[1024]; serverlen = sizeof(server); s = socket(AF_INET, SOCK_DGRAM, 0); if(s<0) error("socket"); host = gethostbyname(argv[1]); if(host==NULL) error("gethostbyname"); memset(&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(8000); memcpy(&server.sin_addr, host->h_addr,host->h_length); fgets(buf, 1023, stdin); while(buf[0]!='.') { sendto(s, buf, strlen(buf), 0, (struct sockaddr *)&server, sizeof(server)); memset(buf, 0, 1024); nc = recvfrom(s, buf, 1023, 0, (struct sockaddr *)&server, &serverlen); printf("%s", buf); fgets( buf, 1023, stdin); } } error(char *msg) { perror(msg); exit(1); }
>>771 ごめん。
調べたら hh で signed char, unsigned char の修飾ができるみたいだ。
gcc 3.4.2(mingw-special)で実行したら、他の値が書き換わったもんだから書きこんでしもた。
このコンパイラは少なくとも hh には対応してないっぽ。orz
#include<stdio.h>
int main(void){
unsigned char a[4]={0x12, 0x34, 0x56, 0x78};
unsigned char *i;
i=a;
printf("%02hhX %02hhX %02hhX %02hhX\n", a[0], a[1], a[2], a[3]);
if(scanf("%hhX", i)) {
printf("%02hhX\n", (unsigned char)~(*i));
printf("%02hhX\n", (*i) | 0x0F);
printf("%02hhX\n", (*i) & 0x0F);
printf("%02hhX %02hhX %02hhX %02hhX\n", a[0], a[1], a[2], a[3]);
}
return 0;
}
/*---------------
実行結果
12 34 56 78
44
BB
4F
04
44 00 00 00
---------------*/
>>774 >>3 >・回答の督促は禁止
>但し、スレ中の全未回答問題レス番号を張る場合のみ許可とする
はい、もう100万回声に出して読むべし
778 :
デフォルトの名無しさん :2007/02/04(日) 15:53:41
779 :
デフォルトの名無しさん :2007/02/04(日) 16:00:24
[1] 授業単元:C言語実習 [2] 問題文(含コード&リンク): キーボードから2つの整数値を入力し、値の表示、値の乗算結果の表示 整数値の交換し結果の表示の3つを行う。 メイン関数内で入力用の変数宣言と変数の表示、乗算結果の表示、交換結果の表示を行い キーボードからの入力受付および変数への格納は副関数で行うこと。 [3] 環境 [3.1] OS:windows xp [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:来週月曜まで [5] その他の制限: 関連項目に関数、プロトタイプ宣言、ポインタ、因数。戻り値の型が 入っていました よろしくお願いします
>>770 「何か?」ってどんな返答が欲しいのかな?
とりあえず、キリがなければあんたは無視すればいいんじゃないかな。
俺自身は「こんな宿題が出て、ここまでやったが力尽きた。ヘルプ。」
みたいな質問ならこっちでも適切だと思ってるんだけどね。
結局全員に無視されて未回答のまま終わる・・・と
>781 だったら答えてやれよw
>>781 レス番間違いなのか?w>772か?w
ま>781の様な状態はアリだと思うが、
課題全文も載らず作りこんだ一部しかないもので、どうやってスレ住人にヤレと?
しかも・・・あえて言うまい
>770>781カンガレ w
785 :
759 :2007/02/04(日) 16:22:34
>>776 なるほど。hhはC99で追加されてるみたいね。
ということは、コンパイラが指定されてる以上使っちゃまずいか
>>761 修正版
#include <stdio.h>
int main(){
unsigned int i;
unsigned char *c;
if(scanf("%2X", &i)) {
c = (unsigned char *)&i;
printf("%02X\n", (unsigned char)~(*c));
printf("%02X\n", *c | 0x0F);
printf("%02X\n", *c & 0x0F);
return 0;
}
return 1;
}
787 :
759 :2007/02/04(日) 16:23:25
DLキーはCSCIです。 済みません、DLキー忘れてました(´Д`;)
788 :
786 :2007/02/04(日) 16:25:01
>>761 更に修正。エンディアン考慮してなかった。
なんかgdgdだな…orz
int main(){
unsigned int i;
unsigned char c;
if(scanf("%2X", &i)) {
c = i % 0xFF;
printf("%02X\n", (unsigned char)~c);
printf("%02X\n", c | 0x0F);
printf("%02X\n", c & 0x0F);
return 0;
}
return 1;
}
>>784 俺がやるなんて一言も言ってないと思うんだけどなあ。
もしあの質問内容から回答が作れるくらいのいいエスパーだったら、
こんな能書きたれてないでさっさと解いてるんじゃないかな。
>課題全文も載らず作りこんだ一部しかないもので、どうやってスレ住人にヤレと?
ということであれば「課題全文書け」というのが正しい煽り文句で、
「他所行け」は適当じゃないと思うんだよね。
>>788 FF が入力された時に期待したのと違う動作をすると思う
>>787 viup31257.zip DLKeyが一致しませんでした
csciが正しいパスのようだな、大文字小文字も判別されるから注意しる
>>790 問題は解かない、議論だけがしたいなら他所行け
>>788 0xFFではなく0x100とするのが正しいだろうが、
普通にc = (unsigned char)i;とキャストしとけばよかろう。
794 :
712 :2007/02/04(日) 16:41:31
>>780 #include<stdio.h>
#include<stdlib.h>
#include<math.h>
int input_int(void){char temp[256];printf("整数値を入力:");scanf("%s",temp);return atoi(temp);}
int main(void)
{
int x,y,temp;
x=input_int();
y=input_int();
printf("x=%d\n",x);printf("y=%d\n",y);
printf("x^y=%.0f\n",pow(x,y));
temp=x,x=y,y=temp;
printf("xとyの交換後\n");
printf("x=%d\n",x);
printf("y=%d\n",y);
return 0;
}
小生Cしかできぬ故、
>>768 を誰か
>785 ロダにひいて、ブラウザ閉じた
>>792 誰が「解かない」って言ったんだろう。決め付けるのが好きだねえ。
>>797 解かないで議論だけする「なら」他所行けってだけだよ
決め付けるのが好きだねぇ
>>797 ごめんね はやとちりしちゃった ごめんね
もうちょっと居るよ
[1] 授業単元:C言語学習 [2] 問題文(含コード&リンク): 銅(軟銅)の低効率1.72x10^2[Ω・m]のとき、導体の断面積の直径d[mm]、長さl[m]を入力すると抵抗値が求まるプログラムを作成しなさい。 [3] 環境 [3.1] OS: Windows [3.2] gcc [3.3] 言語:C [4] 期限: 2007/02/09 [5] その他の制限: 解答は、ファイル名"exp.c"でソースファイルを作成 なるべくシンプルなプログラムでお願いします。
802 :
デフォルトの名無しさん :2007/02/04(日) 18:25:18
803 :
デフォルトの名無しさん :2007/02/04(日) 18:28:52
>>801 シンプルも何もただの掛け算と割り算じゃねぇか
それより抵抗値を求める公式の方をかいとけよ
>>801 #include <math.h>
#define rho 1.72e2
main() {
double d, l, A, R;
printf("d[mm]: ");
scanf("%lf", &d);
d /= 1000; /* [mm] -> [m] */
printf("l[m]: ");
scanf("%lf", &l);
A = d*d*M_PI/4;
R = rho * l / A;
printf("R = %f[ohm]\n", R);
}
>>803 すまんね俺ばヵなんでわからないんです・・・
>>804 迅速な回答サンクス
公式とかあってるかわからないんだが、一様これでいってみる。
806 :
768 :2007/02/04(日) 18:44:09
>>802 ありがとうございます!
書き込んですぐに議論が勃発したから忘れられたと思ってました
家帰ったらじっくりと吟味させていただきます
808 :
803 :2007/02/04(日) 19:05:28
言いっぱなしもなんなんで、久々本ひっぱりだして調べた R = ρ・L/S ρが抵抗率[Ω・m] Sが断面積[u] Lが長さ[m]
スレ違いというか板違いだけど
>>801 の抵抗率は異常
たぶん、1.72x10^2[μΩ・m]なんだろうな
1.72x10^-2[μΩ・m]だ……orz
812 :
出来損ない :2007/02/04(日) 19:49:42
[1] 授業単元:情報処理 [2] 問題文(含コード&リンク):xy平面上の2点(x0,y0),(x1,y1)に対して、 |x0-x1|+|y0-y1|で定義される距離をマンハッタン距離という。 x0,y0,x1,y1にあたる値をdouble型で入力し、マンハッタン距離 を計算して出力させるプログラムを書きなさい。このとき、2数 の差の絶対値を求める関数double dabs(double x, double y)を 作成して利用しなさい。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:Visual studio 2005 [3.3] 言語:C [4] 期限:2007年2月5日(月)00時00分 お願いします。
>>812 #include<stdio.h>
double dabs(double x, double y){
double d;
d=x-y;
if(d<0) d=-d;
return d;
}
double manhattan_distance(double x0, double y0, double x1, double y1){
return dabs(x0, x1)+dabs(y0, y1);
}
int main(void){
printf("%f\n", manhattan_distance(1, 2, 3, 4));
return 0;
}
double dabs(double x, double y){ return fabs(x-y); }
815 :
出来損ない :2007/02/04(日) 20:29:37
ありがとうございました(^ω^)♪
すごく助かりました。
もう1問さっきの問題に関連した問題があるのですが
そちらも心優しいお方お願いします。
問題:
>>812 と同じ動作をするプログラムを、引数の絶対値を返すライブラリ
関数double fabs(double x)を使って書き直しなさい。fabs()関数は、<math.h>
を読み込んで使用する。
連続で本当申し訳ありません。
協力お願いします。
>>814 のあまのじゃくぶりを忘れないであげてください。
817 :
出来損ない :2007/02/04(日) 20:44:25
818 :
801 :2007/02/04(日) 20:49:43
先ほどはどうもありがとうございますた。
レポート提出したら速攻で再提出くらいますた。
しかし、
>>807 の情報を元に自己解決。
ところが、第二門登場…orz
公式はさっきと変わらないんですが、よくわかりません。教えてください><
導体の材質、導体の断面積の直径d[mm]、長さl[m] を入力すると抵抗値が求まる
プログラムを作成しなさい。ただし、材質は、問題中の表に示された金属について
対応するプログラムを作成しなさい。
金属抵抗率[Ω・m]
アルミニウム(軟) 2:75 × 10^-8
金2:4 × 10^-8
銀1:62 × 10^-8
タングステン5:5 × 10^-8
タングステン(1000 ℃) 35 × 10^-8
銅(軟) 1:72 × 10^-8
白金10:6 × 10^-8
なんどもすいません。。
ちょっと数字を書き換えればできるだろ この程度の応用力も無いのかよ
820 :
803 :2007/02/04(日) 21:15:19
R = ρ*L/(π * d^2 * 10^-6 / 4) はいできた
>>818 #include<stdio.h>
#include<math.h>
#define Al 2.75e-8
#define Au 2.4e-8
/*略*/
int main()
{
double d,l,A;
printf("Input d[mm]:");scanf("%lf",&d);
printf("Input l[m]:");scanf("%lf",&l);
A=M_PI/4*d*d*1.0e-6;
printf("アルミニウム(軟):%.2e[Ω]\n",Al/A*l);
printf("金:%.2e[Ω]\n",Au/A*l);
/*略*/
return 0;
}
M_PIってまずいかな?
822 :
801 :2007/02/04(日) 21:24:12
すません。出来ました。簡単でした わからなかった俺馬鹿だなwwww orz
823 :
801 :2007/02/04(日) 21:29:35
>>821 とても参考になりました。
自分の書いたプログラムがどれだけ馬鹿だったか知らされました。
もっと勉強してきます。
昨日I大学の物理の入試にR=ρl/Sの問題が出ていたがもしかして同じ大学?
[1] 授業単元:アルゴリズム論
[2] 問題文
Fn=F(n-1)+F(n-2)
F0=0
F1=1
1:Fnを求める再帰的なプログラムF1を作成せよ
2:Fnを求める非再帰的(繰り返し文を用いた)なプログラムF2を作成せよ
3:加算回数がΘ(n)であるような再帰的な(繰り返し文を用いない)プログラムF3を作成せよ
ヒント:Fnを格納する1次配列Fを大域変数として定義し、再起呼び出しされた直後に
その値を見て意義(たとえば-1)かどうか検査し、未定義の場合にのみ本体を実行する
そうでなければ呼び出し側に直ちに戻る
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年2月5日(月)12時00分
[5]その他
1、2については自力でやったのですが3が理解しきれません
1、2は
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm にうpしました
827 :
803 :2007/02/05(月) 00:51:29
int Fn(int n) { if(n == 0) return 0; if(n == 1) return 1; return Fn(n-1)+Fn(n-2); }
名無しにすんのわすれてた それも1は必要ないのね スルーしてね
829 :
デフォルトの名無しさん :2007/02/05(月) 00:56:41
830 :
829 :2007/02/05(月) 01:02:32
832 :
デフォルトの名無しさん :2007/02/05(月) 02:20:40
[1] 授業単元: Computer Fundamental [2] 問題文(含コード&リンク):Write a function multiple that determines for a pair of integers whether the second is a multiple of the first. The function should take two integer arguments and return true if the second is a multiple of the first, false otherwise. Use this function in a program that inputs a series of pairs of integers. 簡訳;二つのintegerを入力し、その二つが割り切れるか割り切れないかを判断するプログラムです。 割り切れれば return trueします。 [3] 環境 [3.1] OS: (Windows XP [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語 :C++ [4] 期限: ([2007年02月06日17:00まで] または [無期限] のいずれか) [5] その他の制限: #include<iostream.h> int multiple (int, int); int n; int main() { int first, second; cout << "Type two digit numbers\n"; cin >> first >> second; cin.ignore(); n = first % second; if (n == 0){ cout << "These numbers are multiple\n";} else { cout << "These numbers are not multiple\n" ;} } 一応、ここまでは作ったのですが、引っ掛かる所として顧問に"The function should take two integer arguments and return true if the second is a multiple of the first"とあります。 return trueというコマンドがあるのでしょうか、それともこれであっている感じでしょうか。 ヘルプをお願いします。
>>832 英語の勉強からしてこいよ。それ訳とかいうレベルじゃねーよ
834 :
768 :2007/02/05(月) 02:23:19
>>802 がupしてくれたプログラムだけど、ビルドしたら
〜\visual studio 2005\projects\test\test\test.cpp(79) : error C2440: '初期化中' : 'void *' から 'DATA **' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
っていうエラーが出ました
調べたら、エラーメッセージのまんま、キャストをしろって言ってるのは分かったのですが
具体的にどういったふうに追記すればいいの分かりません
初歩的な事だとは思いますが、どなたかお願いします
スレ違いかどうか分からなかったので、スレ違いだったら注意してください
>>832 二番目が一番目の倍数であるような整数の組を判定する関数 multiple を書け。
この関数は整数の引数を二つとり、二番目が一番目の倍数であれば true を、さもなくば false を返す。
整数の組の列を入力するプログラムでこの関数を使え。
ってか訳してほしいなら そっち系のスレ行けよ・・・
837 :
832 :2007/02/05(月) 02:35:08
皆さんの語学力の無さにがっかりしました。 ここは専門バカのスレですね。
>>834 C++なら>800さんのが美しいと思うが?イカンの?
>>837 そもそもint main()なんだからreturnが必要でしょ。
int main()
{
略
if(※) return true;
else return false;
}
※のところには以下の条件を書く。
second is a multiple of the first
ごめん俺英語わからんよ
>>839 これだとコンパイラにtrueはintじゃないっていわれちゃうかも(推測)。
そのまま無視するかtrueを1に、falseを0にして
先生に聞かれたら
コンパイラが警告出すので一般的にTRUEは1なので1にしましたといえばいい。
中学生レベルの英語だろ。読めん奴がいるはずがない
>>840 一般ではTRUEは1ではない !FALSEだぁね
#define FALSE ( 0 )
#define TRUE ( !FALSE )
>>840 しつこくてすまない。
なんとなくわかってきた。
つまり
"multiple" function should take two integer arguments and return true or false.
ということだから
multipleを作れ、戻り値の型は限定していないということ?
それならTRUEとかいらないじゃんかよ!
なーんだ
bool multiple (int first, int second)
{
if(secondがfirstの倍数なら) return true;
else return false;
}
%って負の値のときも正しく動作するんだっけ?
>>834 さん
自分が書いたのはC言語で、C++ではないのでCPPでコンパイルすると
必然とC++として翻訳されるので、そのエラーは仕方がないです。
というか、後からCPPって気づいてC++に変えるのも面倒なので
そのままUpしただけです。
>>838 さん
俺、マクロ得意じゃないんだよ。ごめんね。
orz=3;
>>843 負の剰余は符号がどうなるかは処理系依存だが、剰余であることは保障されている。
>>846 postgresql への接続が分からんので俺はパス。
参考にしたいから接続までできてるソース、アップロードしてくれんかなあ。
>>826 #define N 50
int memo[N];
void initiaize() {
int i;
for (i = 0; i < N; ++i) memo[i] = -1;
}
int F(int n) {
if (memo[n] >= 0) return memo[n];
else {
if (n == 0) return memo[n] = 0;
if (n == 1) return memo[n] = 1;
return memo[n] = F(n-1) + F(n-2);
}
}
int main() {
initiaize();
printf("%d\n", F(30));
}
851 :
829 :2007/02/05(月) 10:21:22
852 :
デフォルトの名無しさん :2007/02/05(月) 14:00:42
[1] 授業単元: 実験
[2] 問題文(含コード&リンク):
トランプの大富豪ゲームのプログラムを作りなさい。
http://ja.wikipedia.org/wiki/%E5%A4%A7%E5%AF%8C%E8%B1%AA ここにある、
基本ルール
の仕様でお願いします。
コンピューター三人と、プレイヤー一人での対戦形式でお願いします。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年2月8日17時
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
制限は特にないので、とにかくお願いします!!
853 :
デフォルトの名無しさん :2007/02/05(月) 15:53:02
[1] 授業単元:プログラミング [2] 問題文:以前にも似た宿題をお願いしたのですが、 ID番号(int型)と名前(char型20個の配列)をメンバーに持つ構造体を定義し、その構造体の変数を5個の配列で宣言する。5件分のID番号と名前を入力し、それを逆順に表示するプログラムを作成せよ。全ての処理はmain()関数内で行うこと(別関数に分けないこと)。 (以前は別関数でした。)今回、追加の条件があり、 構造体は一人分のデータを格納するように定義し、5人分のデータは構造体 の5個の配列として宣言してください。 →構造体の配列を使い、ループで入出力処理を行う というものです。 <実行例> Enter ID-No(1) : 1111 Enter Name (1) : AAAA Enter ID-No(2) : 2222 Enter Name (2) : BBBB Enter ID-No(3) : 3333 Enter Name (3) : CCCC Enter ID-No(4) : 4444 Enter Name (4) : DDDD Enter ID-No(5) : 5555 Enter Name (5) : EEEE ID(5555), Name(EEEE) ID(4444), Name(DDDD) ID(3333), Name(CCCC) ID(2222), Name(BBBB) ID(1111), Name(AAAA) [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限: 2007年2月9日 [5] その他の制限:構造体まで独学しています。
854 :
デフォルトの名無しさん :2007/02/05(月) 16:46:00
自動販売機プログラム 1:商品ファイル(goods.txt)から商品データを読み取り、画面に表示する 2:商品番号と金額の入力をユーザにうながす 3:入力てぇっくを行い、商品番号や金額が異常値の場合は、エラー表示して再入力をうながす 4:入力データが正常値の場合は、おつりの計算をして、商品とおつりを画面に表示する 5:ユーザが購入した商品の商品番号を売り上げファイル(sales.txt)に書き込む プログラムの条件 1:"関数"と"ファイル処理"を使うこと 2:必要な場合には、"ポインタ"や"構造体"を使う(オプション) でどなたかわかる方がいましたら教えてください
>>854 >>1 を読んでテンプレに従って書くこと。
書き忘れのないようしっかり書くように。
今のままだとC言語なのかC++言語なのかもわからんぞ
>>854 あとgoods.txtをどっかにうpすること。
できればsales.txtの仕様も書いておくといい。
自動販売機がらみって、どうしてこう訳ワカンネ奴ばっかりなんだろう?
>>584 goods.txtをUPしれ コピペじゃなくてロダにUPな
>>853 #include <stdio.h>
typedef struct{
int id;
char name[20];
}HOGE;
int main(){
int i;HOGE hoge[5]; char buff[21];
for(i=0;i<sizeof(hoge)/sizeof(hoge[0]);++i){
printf("Enter ID-No(%d) : ",i+1);
fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d",&hoge[i].id);
printf("Enter Name(%d) : ",i+1);
fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%20[^\n]",&hoge[i].name[0]);
}
for(i=sizeof(hoge)/sizeof(hoge[0])-1;0<=i;--i)
printf("ID(%d), Name(%s)\n",hoge[i].id,hoge[i].name);
return 0;
}
>>844 あっ気悪くしたらゴメンね
オレもC野郎なので似たり寄ったりのソースになる
>>800 さんみたいなコード書けるならCPPってやっぱ美しいなぁと思わんでもなかった (チラ裏
861 :
デフォルトの名無しさん :2007/02/05(月) 21:05:43
【質問テンプレ】 [1] 授業単元;プログラミング [2] 問題文(含コード&リンク):1組から3組までの男子学生と女子学生の学生数を二次元配列で 初期化し、各組ごとの合計人数を求め、以下のような表を作成しなさい。 1組 2組 3組 合計 男子学生 15 10 14 女子学生 12 13 11 合計 [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語: どちらでも可です [4] 期限: 明日まで [5] その他の制限: なし すいません。マジで困ってて宜しくお願いします。
>>861 #include<stdio.h>
int main(){
int n[][3]={{15,10,14},{12,13,11}};
printf(" 1組 2組 3組 合計\n");
printf("男子学生 %2d %2d %2d %3d\n",n[0][0],n[0][1],n[0][2],n[0][0]+n[0][1]+n[0][2]);
printf("女子学生 %2d %2d %2d %3d\n",n[1][0],n[1][1],n[1][2],n[1][0]+n[1][1]+n[1][2]);
return 0;}
あれ、
>>862 は急いで作ったネタのつもりだったんだけど反応が無い・・・
#include<stdio.h>
#define M 2
#define N 3
int main(){
int n[M][N] = { {15,10,14},{12,13,11} };
int sum[M],i,j;
char *str[M] = {"男","女"};
for(i=0;i<M;i++){
sum[i]=0;
for(j=0;j<N;j++) sum[i] += n[i][j];}
printf(" ");
for(j=0;j<N;j++) printf(" %d組",j+1);
printf(" 合計\n");
for(i=0;i<M;i++){
printf("%s子学生",str[i]);
for(j=0;j<N;j++) printf(" %3d",n[i][j]);
printf(" %4d\n",sum[i]);}
return 0;}
一応宿題っぽく解いたやつも貼っておく
864 :
861 :2007/02/05(月) 22:07:14
ありがとうございます!
>>862 はそのままじゃないですか><
これを機会に勉強します!
867 :
759 :2007/02/06(火) 00:45:11
[1] 授業単元: C++プログラミング
[2] 問題文(含コード&リンク): 用意されたファイルを用い、Assignment2.cppのWhile〜Ifelse文を変え、
テキストファイルにある括弧('{''[''(')を検索し、
その括弧のペア(閉じ括弧)になるものがあるかを調べなさい。
また、({Test)Test}もペアが出来ているとする。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Dev-Cpp
[3.3] 言語: C++
[4] 期限: 2007年2月7日
[5] その他の制限: なし。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3615.zip 先日投稿したのですが、反応がなかったので再度うpします。
よろしくお願いします。
>870 とりけし
元のソース役にたたんなw エスパでもミリ やっぱ捨てちゃえよ while〜if〜else云々でどうこうなるしろもんじゃない まず元ソースが「( () [] {} ) 」のような時にちゃんと動くものをUPしとけ つぎに目的である「 ({Test)Test} 」のような時でも動く為に 別スタックが必要になる( >868さんの言うようにカウンタでもいい) それらの道具を揃えてから取り組め! 一応、他逝けと言った手前手を付けたみたが、結論として課題Debugはスレ違い よってソース無し!w
874 :
デフォルトの名無しさん :2007/02/06(火) 08:32:21
[1]授業単元:プログラミング [2]問題文:何度も失礼致します。似た質問をお聞きしたいのです。 ID番号、名前、英語、数学、国語、総得点を格納する構造体を定義し、その構造体変数にID番号、名前、総得点を入力し、総得点を求め表示するプログラムを作成せよ。 ID番号はint型、名前はchar型の配列(要素数20個)とする。 ・データを格納する構造体変数はmain()内で宣言し、データの入力は別関数にて行う。 *入力処理の関数は以下を使用する* void inp_data; 返却値:なし 引数:データ格納先のアドレス 処理:引数で示される構造体に値を入力する 追加の条件として、、、 ・main()でprintfするのではなく、別関数を作成してそれを表示処理に行う ・構造体のポインタ(アロー演算子)を使う というものです。 [3]環境 [3.1]OS:Windows [3.2]コンパイラ名:gcc [3.3]言語:C [4]期限:2007年2月7日 どうかお願い致しますm(__)m
>総得点を入力し、総得点を求め表示するプログラム ????
各生徒の全科目の総得点と、各科目ごとの総得点とか?
877 :
デフォルトの名無しさん :2007/02/06(火) 10:44:07
各教科の得点を入力し・・・ でした。すみません。
許しません
>・構造体のポインタ(アロー演算子)を使う とりあえず、この問題文を考えた奴を呼んで来い
とりあえず入力の終了は?Ctrl+dなのか?
881 :
デフォルトの名無しさん :2007/02/06(火) 11:53:34
入力の終了はCtrl+dではないと思います。 用意された中身に入力がすべて終われば終了されるようなものだと、出題者は考えている様子です。
882 :
デフォルトの名無しさん :2007/02/06(火) 12:10:58
>>874 >881
#include<stdio.h>
#include<string.h>
#define N (50)
struct score{
char name[20];
int a, b, c, d;
};
void inp_data( struct score *dat) {
while( EOF!=scanf( "%s %d %d %d", dat->name, &dat->a, &dat->b, &dat->c) ){
dat->d = dat->a + dat->b + dat->c;
dat++;
}
}
void dsp_data( struct score *dat ) {
int i, ta=0,tb=0,tc=0,td=0;
fprintf(stdout, "名 前\t: 英 数 国 計\n");
for (i=0;i<N;i++,dat++){
if(0!=strlen(dat->name)){
fprintf(stdout, "%s\t: %3d %3d %3d %4d\n", dat->name, dat->a, dat->b, dat->c,dat->d);
ta += dat->a; tb += dat->b; tc += dat->c; td += dat->d;
}
}
fprintf(stdout, "合計\t:%4d %4d %4d %4d\n", ta, tb, tc,td);
}
int main(void) {
struct score dat[N]={0};
inp_data( dat );
dsp_data( dat );
return 0;
}
884 :
デフォルトの名無しさん :2007/02/06(火) 12:27:50
>>883 エラーは発生しないのですが、実行しても何も表示されません>_<”
>>884 用意された中身をリダイレクトで食わせろ
ex
a <用意された中身.txt
887 :
デフォルトの名無しさん :2007/02/06(火) 12:51:27
>>885 cmdでコンピュータが不具合起こしてしまい、だめでした(ストップしてしまいます)。
889 :
デフォルトの名無しさん :2007/02/06(火) 12:58:09
わたしはこの場合見ることはできましたが、誰でもdataのupなしにgccだけで見ることができるプログラムはありませんか?
>>889 自動翻訳かよ。原文も併記してくれたほうが分かりやすいな。
>>889 データが無きゃ見られんと思うぞw
ファイル名を固定にして中で開くって意味なら出来るが、ファイル名を課題に書いておけ
その場合も、もちろんファイルUPな
Quanto para a mim neste caso que poderia ver, mas nivelar com algu?m without acima dos dados l? n?o est? nenhum programa que pode ver com GCC justo?
895 :
デフォルトの名無しさん :2007/02/06(火) 13:10:44
ここでのデータは、最初に自分で好きなID番号、名前、各々の教科の点数を入力できる、というものなのですが・・・ わたし、言っている意味が違いました???
>895 ID 名前 英点 数点 国点 で入力すればよろしい 入力表示が必要ならそれもテンプレに書いとけ #include<stdio.h> #include<string.h> #define N (1024) struct score{ char name[20]; int id, a, b, c, d; }; void inp_data( struct score *dat) { while( EOF!=scanf( "%d %s %d %d %d", &dat->id, dat->name, &dat->a, &dat->b, &dat->c) ){ dat->d = dat->a + dat->b + dat->c; dat++; } } void dsp_data( struct score *dat ) { int i, ta=0,tb=0,tc=0,td=0; fprintf(stdout, "id\t名 前\t: 英 数 国 計\n"); for (i=0;i<N;i++,dat++){ if(0!=strlen(dat->name)){ fprintf(stdout, "%d\t%s\t: %3d %3d %3d %4d\n", dat->id, dat->name, dat->a, dat->b, dat->c,dat->d); ta += dat->a; tb += dat->b; tc += dat->c; td += dat->d; } } fprintf(stdout, "合計\t\t:%4d %4d %4d %4d\n", ta, tb, tc,td); } int main(void) { struct score dat[N]={0}; inp_data( dat ); dsp_data( dat ); return 0; }
>>895 ID
名前
英点
数点
国点
|
繰り返し
|
Ctrl+D
でも大丈夫だよ
898 :
デフォルトの名無しさん :2007/02/06(火) 13:21:39
>>895 >>881 で入力終了のCtrl+dはないと聞いてファイルのリダイレクトと思ったが?マズイ?
900 :
デフォルトの名無しさん :2007/02/06(火) 13:27:49
入力表示要求が出てこないのですが、出てくるものなのですか? (入力要求はするようテンプレに書いてあります・・・)
902 :
デフォルトの名無しさん :2007/02/06(火) 13:30:37
>>899 はい。入力終了はCtrl+dではまずいのです。。
903 :
デフォルトの名無しさん :2007/02/06(火) 13:32:34
>>901 >ID番号、名前、総得点(各得点の間違いでしたが)を入力し、総得点を求め表示するプログラムを・・・
と書いてあります。
どこ?
905 :
デフォルトの名無しさん :2007/02/06(火) 13:41:29
>>903 >ID番号、名前、総得点(各得点の間違いでしたが)を入力し、総得点を求め表示するプログラムを・・・
この文の何処に入力督促があるかと聞いてる
>>903 入力督促用
void inp_data( struct score *dat) {
while(1){
printf("ID:");
if ( EOF==scanf( "%d", &dat->id ) ) break;
printf("名前:");
if ( EOF==scanf( "%s", dat->name) ) break;
printf("英語点数:");
if ( EOF==scanf( "%d", &dat->a) ) break;
printf("数学点数:");
if ( EOF==scanf( "%d", &dat->b) ) break;
printf("国語点数:");
if ( EOF==scanf( "%d", &dat->c) ) break;
dat->d = dat->a + dat->b + dat->c;
dat++;
}
}
909 :
デフォルトの名無しさん :2007/02/06(火) 15:41:38
[1] 授業単元: プログラミング言語演習U [2] 問題文(含コード&リンク): 自作関数「int mygetday1(int year, int month, int day); 西暦年月日(year, month, day)から曜日に対応する値(0〜7, 7は入力エラーのための値)を返す」をプログラムせよ。 [3] 環境 [3.1] OS: Linux(fedoracore2) [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2/6 5:00まで 宜しくお願いします
>>909 int mygetday1(int year, int month, int day){
if(year < 1583) return 7;
if(month==1 || month==2){
year--;
month += 12;}
return (year+(int)(year/4)-(int)(year/100)+(int)(year/400)+(int)((13*month+8)/5)+day) % 7;}
たぶんこんな感じ。試してないから保証はしない。
>>909 //C言語によるアルゴリズム事典から引用
#include <stdio.h>
#include <stdlib.h>
int mygetday1(int year, int month, int day);
int main(){
int year, month, day, week;
char name[7][10] = {
"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday" };
printf("Year ? "); scanf("%d", &year);
printf("Month? "); scanf("%d", &month);
printf("Day ? "); scanf("%d", &day);
if (month < 3) { year--; month += 12; }
if((week = mygetday1(year, month, day)) == 7){fprintf(stderr,"不正な値が検出されました");exit(1);}
printf("It's %s.\n", name[week]);
return EXIT_SUCCESS;
}
int mygetday1(int year, int month, int day)
{
int dayofweek;
dayofweek = (year + year / 4 - year / 100 + year / 400
+ (13 * month + 8) / 5 + day) % 7;
if(0 > dayofweek && dayofweek >= 7)
return 7;
return dayofweek;
}
912 :
デフォルトの名無しさん :2007/02/06(火) 16:50:00
>>910 ,911
911さんのができました。なんとか間に合いました。
ありがとうございました
913 :
911 :2007/02/06(火) 17:07:07
>>912 久々言われた「ありがとう」の言葉
ま、今回いっさい俺、頭使ってないけど
「どういたしまして。」
[1] 授業単元: プログラミング演習I
[2] 問題文(含コード&リンク):
複素数の四則演算を行うプログラムを作りなさい。
複素数の差、積、商を求める関数を追加。
複素数の読込み、表示を行う関数を追加。
複素数の任意の四則演算について、電卓のように使えるmain関数を作ってみよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] Visual studio 2005
[3.3] 言語:C
[4] 期限:2月9日(金)17時まで
[5] その他の制限:
http://www.borujoa.org/upload/source/upload10088.txt プログラムの下地にはこれを使えと言われました。
よろしくお願いします。
[1] 授業単元: プログラミング演習I [2] 問題文(含コード&リンク):Hikditchの細線化を行うプログラムを作成せよ [3] 環境 [3.1] Linux [3.2] 言語:C [4] 期限:2/14まで
>>915 とりあえず四則演算は公式書いとから自分で関数つくりな
z1 = a + bi z2 = c + di
z1 + z2 = ( a + c ) + ( b + d )i
z1 - z2 = ( a - c ) + ( b - d )i
z1 ・ z2 = ( a ・ c - b ・d ) + ( a ・ d + b ・c )i
z1 / z2 = ( a ・ c + b ・d )/( c^2 + d^2) + ( a ・ d + b ・c )/( c^2 + d^2)
z1^-1 = ( a / ( a ^2 + b^2 ) ) - ( b / ( a^2 + b^2 ) )i
>>915 // 複素数の加算
COMPLEX *c_plus(COMPLEX *x, COMPLEX *y)
{
return c_new(x->re_part + y->re_part,
x->im_part + y->im_part);
}
// 複素数の減算
COMPLEX *c_sub(COMPLEX *x, COMPLEX *y)
{
return c_new(x->re_part - y->re_part,
x->im_part - y->im_part);
}
// 複素数の積算
COMPLEX *c_mult(COMPLEX *x, COMPLEX *y)
{
return c_new( x->re_part * x->im_part - y->re_part * y->re_part,
x->re_part * y->re_part + x->im_part * y->re_part );
}
// 複素数の除算
COMPLEX *c_div(COMPLEX *x, COMPLEX *y)
{
return c_new( (x->re_part * x->im_part + y->re_part * y->im_part)
/(x->re_part * x->re_part + y->re_part * y->re_part) ,
(x->re_part * y->im_part - x->im_part * y->re_part)
/(x->re_part * x->re_part + y->re_part * y->re_part) );
}
あの・・・
>>860 なのですが、
どこか別なスレで聞いたほうがよいのでしょうか?
>>919 問題が難しすぎるんじゃないの?
とりあえず俺には問題文の意味が無学故にわかりません。
他の人にとっては知りませんが。
>>860 ,919
そのライブラリ使ったことないから詳しくは分からないけど,
二重ポインタで確保した配列を一次元のストリームとして扱っているのがまずそう.
とりあえずは
rcode = pvm_pkdouble(&a[offrow][0], rows*col_a, 1); /* 行列Aをパック */
みたいに一括で二重配列を格納,展開してる部分があるから,
そこを一行ずつ処理するようにしてみ.
的外れだったらスマン
自分で解けてるなら後はデバックくらいしましょうよって事じゃないかと
923 :
デフォルトの名無しさん :2007/02/06(火) 21:34:43
[1] 授業単元: プログラミング [2] 問題文(含コード&リンク): 配列のプログラム [3] 環境 [3.1] OS: Linux [3.2] コンパイラ:gcc [3.3] 言語: C [4] 期限: 2月7日 正午まで よろしくお願いします
[1] 授業単元: プログラミング演習 [2] 問題文(含コード&リンク): 10名分の試験の点数をキー入力し、その後、それらのデータをファイルに出力せよ。次に、 作成したファイルから10名分の点数データを入力し、それらの合計と平均を計算して画面出力せよ。 [3] 環境 [3.1] OS: WindowsXP [3.2] Visual studio C++ 6.0 [3.3] 言語: C++ [4] 期限:2月9日金曜日 18時まで 制限はとくにありません。 よろしくお願いします。
>>923 #include<stdio.h>
int main(){
int i,data[] = {1,2,3,4,5,-1};
for(i=0;data[i]>0;i++) printf("%2d",data[i]);
return 0;}
はいはい
Hikditch の検索結果 約 2 件中 1 - 1 件目 (0.05 秒)
>>924 勉強のために自分でしなさい。
簡単すぎてお兄さん悲しくなっちゃうよ。
Hikditchの細線化
Hikditchの細線化 に該当するページが見つかりませんでした。 誰もわからないんじゃないかこれじゃ
Hilditchだろ
ググったら クリケット少年部門のレコードの 1シーズンで一番何かをした人の名前として Hikditchさんの名前があがってる そうだ! この人の細線化するプログラムを作れば良いんだ! きっと、そうだよ! みんな!がんばろうよ! 俺は、みんなに期待してるぜ!! いつでも俺はみんながHikditchさんを細線化する様を笑顔で見守るよ。
sinとcosの関数を使用した値と、それらのマクローリン展開10項までの和の値を比較して、 誤差のある理由をレポートにしなきゃいけないんだが、なにか良い案はないか? 11項より後の項を切るんだから誤差が出るのはわかるんだが、もうちょっと詳しく知りたいのだ。 教えて、エライ人
目の付け所が違う
942 :
832 :2007/02/07(水) 07:20:36
宿題終わりました。 先生に聞いたところ Return True の意味は return ture; ではなく 0をFALSW、1をTRUEと想定しするということでした。 ですのでFUNCTIONの中は n=first % second; if (n==0) return1; else return 0; という形になります。 皆さんどうもです。
943 :
デフォルトの名無しさん :2007/02/07(水) 10:03:01
これは、大学という講義ではないので、別の問題ですね。
>>943 課題2と3両方やるのか?それともすでに課題2は解いてるのか?
課題2がすでに解いてあるなら、それをうpしる
というか授業単元くらいちゃんと書けよw
>n=first % second; >if (n==0) return1; >else return 0; こういうときは、最後のelseは書くな。
947 :
デフォルトの名無しさん :2007/02/07(水) 10:54:18
[1] 授業単元:数値計算法 [2] 問題文(含コード&リンク):以下の常微分方程式をホイン法で解くためのプログラムを作成しなさい。また 0<=t<=10におけるx(t)およびy(t)のグラフをエクセルで作成しなさい。 dx/dt=2x(t)-0.01x(t)y(t) dy/dt=-y(t)+0.01x(t)y(t) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) [3.3] 言語:c言語 [4] 期限:2007年2月9日まで #include <stdio.h> double func(double x, double y); void heun(double x, double y, double a,double b, int n,double (*f)(double,double)); int main(void) { int n; print("分割数を入力してください--->") scanf("%d",&n); heun(0.0,1.0,0.0,1.0,n ,func); return 0;} void heun(double x, double y, double a, double b, int n, double (*f)(double,double)) { double k1,k2,h; int i; h = (b-x)/n; for (i = 0 ; i<n ; i++) { k1=f(x,y); k2 = f(x+h,y+h*k1); y = y+h/2.0 * (k1 +k2); x = x+h; print("x=%f \t y=%f \n" , x,y);}} ここからどういじるのでしょうか?
948 :
947 :2007/02/07(水) 10:58:12
初期条件にx(0)=300,y(0)=150
CSV形式で書き出せばエクセルで読めるだろ
950 :
デフォルトの名無しさん :2007/02/07(水) 11:02:51
>>944-945 すみません。テンプレの書き方がよくわからなかったもので。
課題2はやっていないけど課題3は締め切りがまだだから出したいのです。
>>950 >>1 を読んでもわからなかったのか?
ならば救いようの無いバカだな。
952 :
デフォルトの名無しさん :2007/02/07(水) 14:10:58
>>951 >>1 を読んで単元って何だろと思って
>>2 を見て、そう思いました。
気分を害しましたら申し訳ございませんでした。
>>954 良いスレあるじゃん 人居なさそうだけどw
言語というよりPVMそのものだなぁ
そっち方面に詳しい人を見つけないと難しいと思われます
仕様まで解ってないと、値が格納されたとしても次は妥当性が.....
[1] 授業単元:C言語 [2] 問題文(含コード&リンク):crypt_sample.c を参考に、入力したキーワードをハッシュ値から 見つけ出すプログラムを作成する。 見つけ出すまでに要した時間も表示すること。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: ([2007年1月14日まで] #include <stdio.h> #include <crypt.h> main() { char real_pw[256]; char sent_pw[256]; char salt[3]; int flag; printf("Enter new keyword :"); scanf("%s",sent_pw); srand(getpid()); salt[0] = 'a' + rand()%('z'-'a' + 1); salt[1] = 'a' + rand()%('z'-'a' + 1); salt[2] = '\0'; printf("salt = %s\n",salt); strcpy(real_pw,crypt(sent_pw,salt)); printf(" Cryptic key is %s\n\n",real_pw); for (flag=1; flag ;) { printf("Enter keyword to verify:"); scanf("%s",sent_pw); if ( strcmp(real_pw, crypt(sent_pw,real_pw)) ) { printf("Mismatch\n"); } else { printf(" Match !\n"); flag=0; } printf(" %s\n", real_pw); printf(" %s\n", crypt(sent_pw,real_pw)); } }
>>955 そうですか・・・
あれから考えたんですが、先ほど自己解決しました。
行列Bを転置したものをスレーブに送信するようにしたら
正しい結果がでるようになりました。
参照するアドレスが飛び飛びになったためにいけなかったみたいです。
>>921-922 >>955 さん、どうもありがとうございました。
>>943 面白そうだけど
こんな多機能クラスは掲示板にソース載せきれないな。
てか俺Macじゃないけどさ。
959 :
デフォルトの名無しさん :2007/02/07(水) 21:43:35
問題が長いので分けて書きます [1] 授業単元:線形リスト [2] 問題文(含コード&リンク): 以下のリスト1に示すlseiseki.c は、リスト2に示すような成績に関するデータを 読み込み、リスト3に示すような成績表を出力するプログラムである。この表を見 て以下の問いに答えよ。 課題1 lseiseki.cを修正し、合計点が高い順に生徒の成績が表示されるようにしなさい。 ただし、出力の部分を修正せずに、新しいデータを読み込んだら新規セルを線形 リストのしかるべき位置に挿入するようなコーディングとすること。 ( lseiseki1.c ) ヒント プログラムの44行目から51行目を書き換えることになります。 合計点の高い順ですから、新規セルを線形リストの途中に挿入しなければ なりません。新規セルの合計点、既存のセルの合計点を比較しなければ ならないので、sumx という名の int 型変数を新たに宣言し、 43行目のしたに sumx = x->score[0] + x->score[1] + x->score[2] + x->score[3] + x->score[4] ; と追加したり、変数sum を利用して合計点を比較しやすくするのが良いでしょう。
960 :
デフォルトの名無しさん :2007/02/07(水) 21:44:47
課題2 lseiseki.cをを修正し、次のようなメニューを表示し、メニューに従って 成績表を出力するようにしなさい。ユーザーがメニュー項目を選んだら その項目に従って、リンクを張り直して出力するようにすること。 また、成績表の出力はユーザーが終了を指定するまで何度でも行えるように すること。( lseiseki2.c ) 1.国語の点順に表示 2.算数の点順に表示 3.社会の点順に表示 4.理科の点順に表示 5.英語の点順に表示 6.合計点順に表示 0.終了 メニュー番号を指定して下さい> ヒント 55行目〜64行目を更にループの中に入れる必要があります。 リンクを張り替えるためには、新しい線形リストの根を一時的に保持 するための、SEISEKI *型の変数が必要です。SEISEKI *root2 などと して宣言すればいいでしょう。 またユーザーの指定を受け付けるための、menu というint 型の変数が 必要になります。 またユーザーの指定によって、国語の点、算数の点、理科の点、社会の 点、英語の点、合計点順にリンクを張り直す訳ですから、 こえらの観点に応じてデータを比較出来る関数があるとコーディング がらくです。 int compare( SEISEKI *a,SEISEKI *b, int menu ); のような感じでプロトタイプ宣言される関数です。
961 :
デフォルトの名無しさん :2007/02/07(水) 21:47:49
/* lseiseki.c 成績データを線形リストを用いて処理する */ #include <stdio.h> #include <malloc.h> typedef struct seiseki{ /* 成績情報セルの構造 */ char name[20] ; /* 氏名 */ int score[5] ; /* 国語・数学・社会・理科・英語の点 */ struct seiseki *next; } SEISEKI; int main() { char fname[100]; /* 入力ファイルの名前 */ FILE *fp; /* ファイル管理構造体のアドレス */ char name[20]; /* データ読み込み用の変数 */ int kokugo, sansuu, syakai, rika, eigo ; SEISEKI *root=NULL; /* 成績リストの根を指すポインター */ SEISEKI *p,*q; /* 成績リスト探索用のポインター変数 */ SEISEKI *x ; /* 新規セルへのポインター */ int sum; /* 合計点 */ int i,j;
962 :
デフォルトの名無しさん :2007/02/07(水) 21:49:00
printf( "成績ファイルの名前を指定して下さい>" ); gets( fname ); if( (fp=fopen(fname,"r")) ==NULL){ printf( "成績ファイルがオープン出来ません\n" ); exit(-1); } /* 成績データの読み込み */ while( 1 ){ if( fscanf( fp,"%s%d%d%d%d%d",name,&kokugo,&sansuu, &syakai,&rika,&eigo ) != 6 ) break; x = (SEISEKI *)malloc( sizeof(SEISEKI) ); if( x==NULL ) { printf( "メモリー不足です\n" ); break; } strcpy( x->name, name ); x->score[0] = kokugo; x->score[1] = sansuu; x->score[2] = syakai; x->score[3] = rika; x->score[4] = eigo; x->next = NULL; if( root== NULL ){ root = x; } else{ for( p=root; p->next!= NULL; p=p->next ); p->next = x; } } fclose( fp ); /* これ以降ファイルはアクセスしない */
963 :
デフォルトの名無しさん :2007/02/07(水) 21:50:02
/* 成績データの表示 */ printf( "氏名 国語 算数 理科 社会 英語 合計\n"); for( p=root; p != NULL ; p = p->next ){ printf( "%10s",p->name ); for( i=0,sum=0 ; i<5 ; i++) { sum += p->score[i]; printf( "%4d ",p->score[i]); } printf( "%4d\n",sum); } /* 成績データの解放 */ for( p=root; p!=NULL ; ){ q = p->next; free(p); p = q; } return(0); }
964 :
デフォルトの名無しさん :2007/02/07(水) 21:52:02
リスト2 seiseki.txt のリスト katou 81 85 56 82 71 furukawa 65 73 65 83 80 shimizu 77 93 90 81 92 yamada 89 76 83 74 77 adachi 62 50 70 65 90 satou 90 85 91 92 95 doi 80 85 60 79 85 gotou 75 45 55 43 60 hasimoto 83 72 85 72 91 ueda 60 63 60 77 76 takahashi 80 100 70 85 79 [3] 環境 [3.1] OS:WindowsXp [3.2] gcc [3.3] 言語: C [4] 期限: ([2007年2月8日24:00まで]
seisekiがseiekiに見えた
>959-964 びみょ〜〜に成績の格納配列に矛盾があるのだが・・・・ int score[5] ; /* 国語・数学・社会・理科・英語の点 */ printf( "氏名 国語 算数 理科 社会 英語 合計\n"); for( p=root; p != NULL ; p = p->next ){ printf( "%10s",p->name ); for( i=0,sum=0 ; i<5 ; i++) { printf( "%4d ",p->score[i]); これの仕様如何に依っては 1.国語の点順に表示 2.算数の点順に表示 3.社会の点順に表示 4.理科の点順に表示 5.英語の点順に表示 6.合計点順に表示\n 0.終了 を行う場合に、menu番号と格納先の対応を取り直す必要がある 表示か?格納配列コメントか?どっちを信頼したら良い?
>>968 マジ俺には難しすぎるや
てかmat3x3のソースなしでmatrix3x3を継承してrotmat作れって無理じゃないのか?
mat3x3って課題1.1-1によればx[3][3]でしょ
課題3.1によるとx,y,z軸に回転
あー!
俺にはx[3][3]の回転のさせ方わかんねーよ
アフェイン変換?
さっぱりわかんね
ごめんね
main(){puts("ちんこ");}
>>969 さーせん・・・
では、mat3x3だけでいいです><
さぼっていたのがいけなかったんですね・・・
main(){puts("ちんこ");}
973 :
デフォルトの名無しさん :2007/02/07(水) 23:49:40
>967 表示のとおりにしていいと思います。 よろしくお願いします。
>>971 全部は作れん。
マトリックスの掛け算とか覚えてないからさ!
スペースやタブの関係でみにくいと思う。
それに自信ない。
#include <iostream>
using namespace std;
// これがクラス
class mat3x3
{
private:
double x[3][3];
public:
mat3x3()
{
x[0][0] = 1;x[0][1] = 0;x[0][2] = 0;
x[1][0] = 0;x[1][1] = 1;x[1][2] = 0;
x[2][0] = 0;x[2][1] = 0;x[2][2] = 1;
}
void print()
{
// coutの使い型よく知らないので
cout << " " << x[0][0] << " " << x[0][1] << " " << x[0][2] << std::endl;
cout << " " << x[1][0] << " " << x[1][1] << " " << x[1][2] << std::endl;
cout << " " << x[2][0] << " " << x[2][1] << " " << x[2][2] << std::endl;
}
つづく
>>974 つづき
void set(int a, int b, double val)
{
if(a<0 || a>2 || b<0 || b>2)
{
cout << "error\n";
}
else
{
x[a][b]=val;
}
}
mat3x3 operator + (const mat3x3 & r)
{
mat3x3 v;
for(int a=0; a<3; ++a)
for(int b=0; b<3; ++b)
v.x[a][b] = x[a][b] + r.x[a][b];
return v;
}
mat3x3& operator += (const mat3x3 & r)
{
for(int a=0; a<3; ++a)
for(int b=0; b<3; ++b)
this->x[a][b] += r.x[a][b];
return *this;
}
};
つづく
>>975 つづき
// 動作確認コード
int _tmain(int argc, _TCHAR* argv[])
{
mat3x3 a;
mat3x3 b;
mat3x3 c;
cout << "-1-" << std::endl;
a.set(0,0,15);
cout << "a = " << std::endl;
a.print();
cout << "-2-" << std::endl;
b.set(-1,0,15);
cout << "b = " << std::endl;
b.print();
cout << "-3-" << std::endl;
c.set(0,3,15);
cout << "c = " << std::endl;
c.print();
cout << "-4-" << std::endl;
c = a + b; // test operator +
cout << "c = " << std::endl;
c.print();
つづく
そろそろうpろだ使っても良いと思うんだ
>>976 つづき
cout << "-5-" << std::endl;
c += a; // test operator +=
cout << "c = " << std::endl;
c.print();
return 0;
}
おわり
俺が以前作った正方行列用の安全じゃないclass設計のヘッダの内容 #include <cstring> #include <iostream> #include <cstdlib> template<typename MT, unsigned int N> class SquareMatrix{ private: MT Matrix[N][N];//MT型のN行N列 public: SquareMatrix(){}//行列の初期化とか知るかボケーー ~SquareMatrix(){}//もうよくわかんないけど定義しとく void SetValue();//行列に値を入れる void ViewMatrix();//見たかったらこれ使え void ExchangingColumns(unsigned Aj1, unsigned Aj2);//ほれ列代えたぞ void Transpose();//転置行列の求め方なんか知るか。メンバの行列自体を転置する。 }; template<typename MT, unsigned int N> void SquareMatrix<MT,N>::SetValue() { for(unsigned int i = 0; i < N; i++){ for(unsigned int j = 0; j < N; j++){ std::cout << i + 1 << "行" << j + 1 << "列目入力 \n"; std::cin >> this->Matrix[i][j]; } std::cout << '\n'; } }
続き template<typename MT, unsigned int N> void SquareMatrix<MT,N>::ViewMatrix() { for(unsigned int i = 0; i < N; i++){ for(unsigned int j = 0; j < N; j++){ std::cout << this->Matrix[i][j] << ' '; } std::cout << '\n'; } } template<typename MT, unsigned int N> void SquareMatrix<MT,N>::ExchangingColumns(unsigned Aj1, unsigned Aj2) { if(Aj1 - 1 >= N || Aj2 - 1 >= N){ std::cerr << "over flow "; exit(1); } for(unsigned int i = 0; i < N; i++){ MT Temp = this->Matrix[i][Aj1 -1]; this->Matrix[i][Aj1 -1] = this->Matrix[i][Aj2 -1]; this->Matrix[i][Aj2 -1] = Temp; } } t
複数レスに跨るような長いコードを貼らないでくれよ
続き emplate<typename MT, unsigned int N> void SquareMatrix<MT,N>::Transpose() { MT Temp; for(unsigned int i = 0 ;i < N;i++){ for(unsigned int j = i; j < N; j++){ Temp = this->Matrix[i][j]; this->Matrix[i][j] = this->Matrix[j][i]; this->Matrix[j][i] = Temp; } } } }
嫌ならお前が消えろ
レスが流れてみにくい
見なきゃいいのに。
素直に「うpろだの使い方分かりません」と言えばいいのに
御託はいいから解けよ
道端で公開オナニーやっといて「見るな」とはw
お前のやってることは回転寿司で流れてるイカを見て、他の客に 「俺はイカが嫌いだ」 と言うようなもんだ 嫌なら見るな
ここは道端でもなければ回転寿司でもない
便所の落書きだよな
たまには壁じゃなくてトイレットペーパーに書いて欲しいよな
よくきたなまあ座れ
次スレどこー
ああ・・・次はショ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。