ぼるじょあがC/C++の宿題を片づけますYO! 47代目
レス数が1000を超えています。これ以上書き込みはできません。
0001ぼるじょあ ◆yBEncckFOU
2005/07/05(火) 09:19:12わからない宿題を片づけますYO!
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:Windows/Linux/等々
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
[5] その他の制限:どこまで習っているか、等々
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【前スレ】
C/C++の宿題を片付けます 46代目
http://pc8.2ch.net/test/read.cgi/tech/1119514274/
【歴代スレは>>2-13】
0002デフォルトの名無しさん
2005/07/05(火) 09:20:270003デフォルトの名無しさん
2005/07/05(火) 09:20:4743代目: http://pc8.2ch.net/test/read.cgi/tech/1115794784/
42代目: http://pc8.2ch.net/test/read.cgi/tech/1113811213/
41代目: http://pc8.2ch.net/test/read.cgi/tech/1109542053/
40代目: http://pc5.2ch.net/test/read.cgi/tech/1107625122/
39代目: http://pc5.2ch.net/test/read.cgi/tech/1106650397/
38代目: http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
0004デフォルトの名無しさん
2005/07/05(火) 09:21:1728代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
0005デフォルトの名無しさん
2005/07/05(火) 09:22:2913代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
09代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
08代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
07代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
06代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
05代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
04代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
03代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
02代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
01代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
0006デフォルトの名無しさん
2005/07/05(火) 10:34:49[2] 問題文(含コード&リンク): 縦と横の整数を入力して*を使って長方形を作成するプログラムです。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5.1
[3.3] 言語:C ++
[4] 期限:日曜PM6:00まで
[5] できれば簡単な感じでお願いします。
0007デフォルトの名無しさん
2005/07/05(火) 10:41:10int main()
{
using namespace std;
int width, height;
cout << "縦 = ";
cin >> height;
cout << "横 = ";
cin >> width;
for ( int y = 0; y < height; y ++ )
{
for ( int x = 0; x < width; x ++ )
cout << "*";
cout << endl;
}
return 0;
}
00087
2005/07/05(火) 10:43:190009デフォルトの名無しさん
2005/07/05(火) 12:24:5200106
2005/07/05(火) 13:21:45すいませんありがとうございます。
stuido.hから始まるやつでお願いします
0011デフォルトの名無しさん
2005/07/05(火) 13:38:12stdio.hね。
そういうのはC++ではなくCと書いてくれたほうがわかりやすかった。
#include <stdio.h>
int main()
{
int width, height, x, y;
printf( "縦 = " );
scanf( "%d", & height );
printf( "横 = " );
scanf( "%d", & width );
for ( y = 0; y < height; y ++ )
{
for ( x = 0; x < width; x ++ )
printf( "*" );
printf( "\n" );
}
return 0;
}
00126
2005/07/05(火) 13:41:05ほんとにすいません。
ありがとうございます、
0013906
2005/07/05(火) 13:56:30C言語で、do whileを使った10進数→2進数変換プログラムです。
どの部分がどのような機能を果たしているかが本を読んでも理解できなかったので…
よろしくお願いします。
#include <stdio.h>
char* to_2(unsigned x, char* s) {
int index = 0, left = 0;
char temp;
do {
s[index++] = x % 2 + '0';
x = x / 2;
} while (x != 0);
s[index--] = '\0';
while (left < index) {
temp = s[left];
s[left] = s[index];
s[index] = temp;
++left;
--index;
}
return s;
}
int main(void) {
unsigned x;
char s[256];
printf("Enter Number:"); scanf("%u", &x);
printf("%u = %s", x, to_2(x, s));
}
0014デフォルトの名無しさん
2005/07/05(火) 14:05:16[2] 問題文(含コード&リンク):
�@4個の入力された整数に対し、最大値を表示するプログラム。
�AN個の入力された整数に対し、最大値を表示するプログラム。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5.1
[3.3] 言語:C
[4] 期限:日曜PM6:00まで
[5] できれば簡単な感じでお願いします。
0015デフォルトの名無しさん
2005/07/05(火) 14:26:25仮に入力が10
最初のループ-こんな書き方だっけ
x x%2
10
5 | 0
2 | 1
_____|
1 0
xは0で終了だけど、そこは余計なのでぬるもじで上書き
おせっかいに
s[index--]='\0'は
s[index]='\0'
index--
という意味
結果s[] = "0101\0"
次のループ-配列を反転
結果s[] = "1010\0"
0016デフォルトの名無しさん
2005/07/05(火) 14:32:58あなたは>>6の人?
int main()
{
int input, i , N, max;
printf( "N = 4\n" );
for ( i = 0; i < 4; i ++ )
{
printf( "%d個目の整数: ", i + 1 );
scanf( "%d", & input );
if ( i == 0 || max < input )
max = input;
}
printf( "最大値は、%d\n", max );
printf( "\nN = " );
scanf( "%d", & N );
面倒くさくなってきた。
あとは似たようなこと書くだけだし自分でやってミソ。
00176 14
2005/07/05(火) 15:10:22ほんとに助かりました、ありがとうございました。
0018デフォルトの名無しさん
2005/07/05(火) 15:10:48分からなかったのでここで質問させて頂きます。
linux で名前付き pipe を使って通信をしております。
送信側は mkfifo で FIFO を作成し、binary data を write 文で送信し、
送信が終わったら作成した FIFOを消して終了しています。
受信側は read 文でデータを読んでいるのですが、伝送が終了した
事を知る方法が分からなく、永遠に終了しないため困っております。
受信側が伝送の終了を知るための良い方法をご存知の方がいらっしゃいましたら
ぜひご教授下さい。どうぞよろしくお願い致します m(__)m
0019デフォルトの名無しさん
2005/07/05(火) 15:18:25方法は色々あるが、
・パケット長を固定にする。
・パケット開始コード、終了コードを用意する。(一般的にSTX、ETX)
・送信総データ長を最初に送る。
・タイムアウトを利用する。
0020デフォルトの名無しさん
2005/07/05(火) 15:29:04>・パケット長を固定にする。
私の例ではランダムな長さのデータを断続的に送る必要があり難しそうです。。
>・パケット開始コード、終了コードを用意する。(一般的にSTX、ETX)
バイナリデータなので。。
>・送信総データ長を最初に送る。
データ長も不定なので困っております。
>・タイムアウトを利用する。
とりあえず、今回はこれを使ってみようと思います。
どうやらTCP/IP 通信のようにコネクションを切るという概念はないのですね。
(FIFO のファイルを送信側で消去したら通信終了が可能なのかと思っておりました。)
色々なアイデアをご教授いただき大変参考になりました。
どうもありがとうございました。
0021デフォルトの名無しさん
2005/07/05(火) 15:33:320022デフォルトの名無しさん
2005/07/05(火) 15:39:00うまくいきました。。。。
お恥ずかしい限りです。大変助かりました。
どうもありがとうございました m(__)m m(__)m m(__)m
0023前スレ925
2005/07/05(火) 15:49:16[1]授業単元:プログラミング中級
[2]問題文:1000以下の素数で、足しあわせると1000になるような二つの素数の組をすべて求めるプログラムを作れ
[3]環境
[3.1]OS:UNIX
[3.2]コンパイラ:gcc
[3.3]言語:C
[4]期限:7/8
[5]制限特に無し
よろしくお願いします!
0024デフォルトの名無しさん
2005/07/05(火) 16:02:02#include <stdio.h>
int main(void)
{
char sieve[1001] = {1,1,};
int l, r;
int i;
for (i = 0; i * i <= sizeof(sieve); i++) {
int j;
if (sieve[i])
continue;
for (j = i + i; j < sizeof(sieve); j += i) {
sieve[j] = 1;
}
}
for (l = 0, r = 1000; l <= r; l++, r--) {
if (sieve[l] == 0 && sieve[r] == 0) {
printf("%d, %d\n", l, r);
}
}
return 0;
}
0025前スレ925
2005/07/05(火) 16:15:16これは仕様説明しろと言われたらどういう感じに言えばいいですかね?
0026デフォルトの名無しさん
2005/07/05(火) 16:23:58i * i <= sizeof(sieve) は i * i < sizeof(sieve) でいい。
0027デフォルトの名無しさん
2005/07/05(火) 16:25:49この書き方って残り 0 で埋められるって C言語 の仕様によって保証されているものなの?
0028デフォルトの名無しさん
2005/07/05(火) 16:31:52保証されてる
0029デフォルトの名無しさん
2005/07/05(火) 16:39:41JIS X3010 96ページの12行目
0030デフォルトの名無しさん
2005/07/05(火) 16:40:51thx
0031デフォルトの名無しさん
2005/07/05(火) 16:51:280032前スレ952
2005/07/05(火) 16:52:400033デフォルトの名無しさん
2005/07/05(火) 17:09:38索引のところにページ数書いてくれると大分助かるんだけどな
俺は索引読んで目次見て探してる…て普通か
>>32
誰だよお前、ていうかお願いできません
0034デフォルトの名無しさん
2005/07/05(火) 17:13:50[2] 問題文:閉路電流法の行列解法で直流電気回路を計算するプログラムを作成すること
長くなるから詳しくはここ↓(大学がどこだかバレバレw
http://home.kanto-gakuin.ac.jp/~fei/Teaching/IP/ip10-ex.pdf
[3] 環境
[3.1] OS:FedoraCore
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年07月19日17時まで
[5] その他の制限:特にありません。もう手も足も出ませんorz
これで卒業できるかどうか決まるんでお願いいたしますm(__)m
0035デフォルトの名無しさん
2005/07/05(火) 17:48:250036デフォルトの名無しさん
2005/07/05(火) 18:52:560037デフォルトの名無しさん
2005/07/05(火) 19:25:140038デフォルトの名無しさん
2005/07/05(火) 19:50:38[2]問題文:二つの整数の最大公約数を再帰を使って求めよ
[3]環境
[3.1]OS:LINUX
[3.2]コンパイラ:gcc
[3.3]言語:C
[4]期限:7/10
よろしくお願いします
0039>>38
2005/07/05(火) 20:13:38#include <stdlib.h>
int gcd(int m, int n) {
if ((m % n) == 0) {
return n;
} else {
return gcd(n, (m % n));
}
}
int main(int argc, char **argv) {
int num1 = 12;
int num2 = 8;
printf("gcd(%d,%d) = %d\n", num1, num2, gcd(num1, num2));
return 0;
}
0040デフォルトの名無しさん
2005/07/05(火) 20:15:16エラーチェックは無し
#include <stdio.h>
int main(void)
{
int x, y;
int gcd(int x, int y) { return y ? gcd(y, x % y) : x; }
while (printf("2整数を入力してください\n"), scanf("%i%i", &x, &y) == 2) {
printf("最大公約数は %d\n", gcd(x, y));
}
return 0;
}
0041デフォルトの名無しさん
2005/07/05(火) 21:16:11[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=653
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):VC++ 6.0
[3.3] 言語:C++
[4] 期限:7月6日まで
[5] その他の制限:配列、ポインタ、構造体を使用してください。
どなたかお願いしますm(__)m
0042デフォルトの名無しさん
2005/07/05(火) 21:25:21これは、割り勘なの?
0043デフォルトの名無しさん
2005/07/05(火) 21:32:52[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/667.txt
マージソートをするプログラムなのですが、ソートする要素数nを256より大きい値で入力すると
Segmentation fault(core dumped)になってしまいます。5万個ぐらいはソートできるように
このソースコードの改良をお願いします。
[3] 環境
[3.1] OS:Windows/Linux/等々 Windows
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C/C++/どちらでも可 のいずれか C
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 7月6日まで
0044デフォルトの名無しさん
2005/07/05(火) 21:37:53[2] 問題文:配列dtを関数に引数としてわたす。
関数部では平均値と分散と標準偏差を計算し、
平均値はreturn分を用いて、分散、標準偏差はポインタを用いてmain()文に
値を渡し、main()文では結果を画面に表示するプログラムを作成せよ
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:ポインタ関数を使う
どなたかおねがいします。
0045デフォルトの名無しさん
2005/07/05(火) 21:44:32Linux で試したら50000でも動作した。
0046デフォルトの名無しさん
2005/07/05(火) 21:49:32本当ですか?僕はWindowsなんですが、何が悪いんでしょうか。
コンパイラの性能とか?
0047デフォルトの名無しさん
2005/07/05(火) 21:50:530048デフォルトの名無しさん
2005/07/05(火) 21:52:340049デフォルトの名無しさん
2005/07/05(火) 21:54:07領域が足りなくなってるんだと思うよ。
自動変数は呼び出しごとに別の実体が作られるから。
配列を静的変数にする
static int temp[MAX_DATA];
でどうだ?
0050デフォルトの名無しさん
2005/07/05(火) 21:58:00できました!
どうもありがとうございます。
0051デフォルトの名無しさん
2005/07/05(火) 23:00:18#include <stdio.h>
#include <math.h>
double calc(const double dt[], const size_t size,
double *decent, double *deflect)
{
double sum = 0, ave, dec = 0;
int i = 0;
for(i = 0; i< size; ++i) sum += dt[i];
ave = sum / (double)i;
for(i = 0; i< size; ++i) dec += (ave - dt[i]) * (ave - dt[i]);
if( decent != NULL ) *decent = dec;
if( deflect != NULL ) *deflect = sqrt(dec);
return ave;
}
int main()
{
double dt[] = {1.0, 3.2, 8.8, 10.9, 22.2, 5.4};
double ave, dec, def;
ave = calc(dt, sizeof(dt)/sizeof(dt[0]), &dec, &def);
printf("平均 : %.5f\n", ave);
printf("分散 : %.5f\n", dec);
printf("偏差 : %.5f\n", def);
return 0;
}
0052デフォルトの名無しさん
2005/07/05(火) 23:27:58ありがとうございます。
if( decent != NULL ) *decent = dec;
if( deflect != NULL ) *deflect = sqrt(dec);
の部分なんですけど、他にやり方ないですか??
*decent = dec;
*deflect = sqrt(dec);
ってしたのですが、分散と偏差が表示されなくて・・・
0053デフォルトの名無しさん
2005/07/05(火) 23:50:35[2] 問題文(含コード&リンク):
1から1000の間に存在する9の倍数を表示
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5
[3.3] 言語:C++
[4] 期限:7月6日の朝頃
[5] 単純な文で作れるはずなんだけど自分の頭だとうまくまとまらないです。help。
0054デフォルトの名無しさん
2005/07/05(火) 23:51:08[2] 問題文(含コード&リンク):イギリスの国旗を画面に表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:
[5] その他の制限:
どなたかお願いしますm(__)m
0055デフォルトの名無しさん
2005/07/05(火) 23:53:17>>51 で表示まで全部するはずだが。
表示されなかったのか?
0056デフォルトの名無しさん
2005/07/05(火) 23:59:02#include <iostream>
int main()
{
int i;
for (i = 9; i <= 1000; i += 9)
{
std::cout << i << std::endl;
}
return 0;
}
0057デフォルトの名無しさん
2005/07/06(水) 00:10:10即答ありがとうございます。
0058デフォルトの名無しさん
2005/07/06(水) 08:36:12#include <stdlib.h>
int main(void)
{
system("start http://www.uknow.or.jp/be/uk_japan/img/index_img.jpg");
return 0;
}
0059デフォルトの名無しさん
2005/07/06(水) 10:28:46不覚にもワロタwww
0060デフォルトの名無しさん
2005/07/06(水) 11:36:58日本の国旗が被りすぎw
0061ななすぃ
2005/07/06(水) 11:51:28[2] 問題文(含コード&リンク):配列のデータ構造を実現するプログラムを
数パターン作成する
・データの挿入、削除、表示が可能であること。
・配列に代入するデータは整数型とする。
・プログラムの仕様(関数への入出力、表示方法など)は自由とする
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):Borland C++ Compiler5.5
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:7月9日昼まで
[5] その他の制限: まだC言語始めて一ヶ月なんですけど宿題が出てしまい
初心者な自分には力不足でわかりません。できるだけ早くお願いします。それ
とよろしければ簡単な注釈も書いていただければうれしいです。
0062デフォルトの名無しさん
2005/07/06(水) 11:56:31どうか、他のやり方を教えてください。お願いします。
0063デフォルトの名無しさん
2005/07/06(水) 12:03:56どれをどうコンパイルしたらどう通らなかったのか?
それとも、口の利き方から手取り足取り教えないといけないのか?
0064デフォルトの名無しさん
2005/07/06(水) 12:04:590065デフォルトの名無しさん
2005/07/06(水) 12:16:590066デフォルトの名無しさん
2005/07/06(水) 12:32:22[2] 問題文(含コード&リンク):自分の名前を指定した回数だけ表示するプログラム namae.cを作成せよ。
例えば次のような形。何回表示しますか?: 10
(1)名前
(2)名前
(途中省略)
(10)名前
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:今日中
[5] ほぼ初心者
0067ぼるじょあ ◆yBEncckFOU
2005/07/06(水) 12:49:02#include <stdio.h>
#define NAMAE "北大路魯山人"
/* ↑自分の名前 */
int main()
{
int i,n;
printf("何回表示しますか?: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("(%d)%s\n",i,NAMAE);
return 0;
}
0068デフォルトの名無しさん
2005/07/06(水) 13:01:19どなたかおねがいします。
簡易グラフィック関数を用いてらしいのですが
0069デフォルトの名無しさん
2005/07/06(水) 13:23:53[2] 問題文(含コード&リンク):二つの行列の要素をキーボードから読み込み、それらの行列の和を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):VC++6.0
[3.3] 言語:C++
[4] 期限:7日木曜0時まで
[5] その他の制限:
*表示例*
行列Aを入力してください
0 1 2
10 11 12
20 21 22
行列Bを入力してください
100 200 300
200 300 400
300 400 500
0.00 1.00 2.00 100.00 200.00 300.00 100.00 201.00 302.00
10.00 11.00 12.00 200.00 300.00 400.00 210.00 311.00 412.00
20.00 21.00 22.00 300.00 400.00 500.00 320.00 421.00 522.00
0070前スレ988
2005/07/06(水) 13:38:39ありがとうございます。とても助かりました。
0071デフォルトの名無しさん
2005/07/06(水) 13:42:05これじゃだめ?
#include <stdio.h>
int main(void){
char *england[]={"■□□■□□■",
"□■□■□■□",
"□□■■■□□",
"■■■■■■■",
"□□■■■□□",
"□■□■□■□",
"■□□■□□■",
NULL};
int i;
for(i=0;england[i]!=NULL;i++)printf("%s\n",england[i]);
}
0072前スレ441
2005/07/06(水) 13:43:53チェックしてみます。
0073デフォルトの名無しさん
2005/07/06(水) 13:49:34>簡易グラフィック関数を用いてらしいのですが
それの仕様を提示せよ。
0074デフォルトの名無しさん
2005/07/06(水) 13:51:590075デフォルトの名無しさん
2005/07/06(水) 14:19:48[2] 問題文(含コード&リンク):
typedefによる構造体型CPLXを使い複素数の絶対値を関数とする関数定義
double AbsComplex(CPLX x);と2つの複素数の積を関数値とする関数定義
CPLX ProdComplex(CPLX a,CPLX b);
を使い計算するプログラムを作成せよ
[3]
[3.1] Linux
[3.2] コンパイラ:gcc
[3.3]C
[4]明後日まで
[5] その他の制限:構造体は始めたばかりです
よろしくお願いします
0076名無しさん
2005/07/06(水) 14:25:07[2] 問題文(含コード&リンク): 2のn乗-2がnで割り切れるかどうか?
割り切れた時その数はに素数であるか?
という問題です。nは自然数です。お願いします。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):MSVC++6.0
[3.3] 言語:C++
[4] 期限:2005年07月07日23:59まで
[5] その他の制限:初心者です。
0077デフォルトの名無しさん
2005/07/06(水) 14:30:55typedef struct {
double real;
double image;
} CPLX;
double AbsComplex(CPLX x) {
return sqrt(x.real * x.real + x.image * x.image);
}
CPLX ProdComplex(CPLX a, CPLX b) {
CPLX x;
x.real = a.real * b.real - a.image * b.image;
x.image = a.image * b.real + a.real * b.image;
return x;
}
0078超初心者ゴン
2005/07/06(水) 14:43:36問題なんですけど、文字列を反転させることなんですけど
関数をを使わないで自作関数で処理しなきゃならないんですけど、
char szStr[]="ABCDEFG" //反転元文字列
int i=0;//インクリメント用 int len=0;//文字の長さ用
char tmp; //一時格納用(一文字分のみで反転)
・
void rstrrrev(char* szStr)
・
・(各変数の宣言)
・
while(pszStr[len]!='\0')
{
len++;
}
len--;
for(i=0;i<(len/2);i++)
{
tmp = *(pszStr+i);
*(pszStr+i) = *(pszStr+(len-i));
*(pszStr+(len-i)) = tmp;
}
}
これで反転するんですけど...例えば文字が"ABCDEFGH"まであったとするとDEが入れ替わらないんですけどどう直せばよろしいでしょうか?よろしくお願いします。
0079デフォルトの名無しさん
2005/07/06(水) 14:45:15ありがとうございました
0080超初心者ゴン
2005/07/06(水) 14:45:440081デフォルトの名無しさん
2005/07/06(水) 14:49:490082超初心者ゴン
2005/07/06(水) 14:50:24for(i = 0; i < (len/2); i++)
0083デフォルトの名無しさん
2005/07/06(水) 14:53:25>関数をを使わないで自作関数で処理しなきゃならないんですけど、
これだけ読んで、それ以上読む気をなくした。
0084超初心者ゴン
2005/07/06(水) 14:57:130085デフォルトの名無しさん
2005/07/06(水) 14:59:10バカ?
0086超初心者ゴン
2005/07/06(水) 15:00:380087デフォルトの名無しさん
2005/07/06(水) 15:02:35って必要か?
0088デフォルトの名無しさん
2005/07/06(水) 15:06:18#include<eglib.h>
void Graphmain(void)
{
int color;
color=EG_RGB(0,0,255);
EG_text("Hello#,10,15,color);
}
みたいな感じらしいのですが
0089デフォルトの名無しさん
2005/07/06(水) 15:06:57[1]C言語演習
[2]Gccコンパイラ
[3]期限 7月6日水
[4]環境RedHat Linux
問題
メニュー表示をし,ステップ「1」として,関数y = 2x2において,x = 0 – 10 ま
でを0.01 刻みで1001 個のx,yデータセットを作成して,ファイル名function.datで各自のホ
ームディレクトリ(または,カレントディレクトリ)にバイナリ形式で保存する.ステ
ップ「2」として,作成したfunction.datからn個目のx,yデータセットを抽出して,ファイ
ル名n_xy_ascii.dat(nは入力した数字)としてASCII形式で保存する.以上の様に動作す
るプログラムを作成しなさい
前スレで突っ込まれたメニュー部の提示ですが。。。
「1」メニュー選択時に1、2以外の数字が入力されたときには再入力させるようにしなさい、またnの値は入力する仕様とすること。
「2」ファイル名等をあつかうときには数字と文字列を組み合わせて文字列を変換したい場合やその逆を行いたい場合はsscanf,sprintf等を使うと簡単です、もちろん他にもあります。
こんなかんじだとおもいます。。。
おねがいします><
0090デフォルトの名無しさん
2005/07/06(水) 15:07:030091超初心者ゴン
2005/07/06(水) 15:09:50009283
2005/07/06(水) 15:11:08わずかそれだけの文章中に「ですけど」が3回、おまけに「をを」という間違いも。
文章を書くのに頭を使わない(or見直しをしない)ような馬鹿の宿題なんてやる気にもならん。
0093デフォルトの名無しさん
2005/07/06(水) 15:12:240095超初心者ゴン
2005/07/06(水) 15:14:040096デフォルトの名無しさん
2005/07/06(水) 15:15:43*(pszStr+i) = *(pszStr+(len-1-i));
*(pszStr+(len-1-i)) = tmp;
こうしろ
0099デフォルトの名無しさん
2005/07/06(水) 15:21:18#include <stdio.h>
int isPrime(unsigned int n) {
unsigned int i;
for (i = 2; i < (unsigned int)sqrt(n); i ++) {
if ((n % i) == 0) {
return 0;
}
}
return 1;
}
int main(int argc, char **argv) {
int i;
unsigned int num;
for (i = 1; i < 32; i++) {
num = (1 << i) - 2;
if ((num % i) == 0 && isPrime(num) == 1) {
printf("%d\n", num);
}
}
return 0;
}
0101デフォルトの名無しさん
2005/07/06(水) 15:45:39これでOk?
#include<eglib.h>
void Graphmain(void){
int color;
char *england[]={
"■□□■□□■",
"□■□■□■□",
"□□■■■□□",
"■■■■■■■",
"□□■■■□□",
"□■□■□■□",
"■□□■□□■",
NULL};
int i;
color=EG_RGB(0,0,255);
for(i=0;england[i]!=NULL;i++)EG_text(england[i],10,15+i,color);
}
0102デフォルトの名無しさん
2005/07/06(水) 15:50:09GJ!
0103デフォルトの名無しさん
2005/07/06(水) 15:51:39□■■□□□□■■□□□□■■□
□□■■□□□■■□□□■■□□
□□□■■□□■■□□■■□□□
□□□□■■□■■□■■□□□□
■■■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■
□□□□■■□■■□■■□□□□
□□□■■□□■■□□■■□□□
□□■■□□□■■□□□■■□□
□■■□□□□■■□□□□■■□
■■□□□□□■■□□□□□■■
0104デフォルトの名無しさん
2005/07/06(水) 16:32:12レスを貰ったのですが、関数を使わないという条件を書き忘れていたため
もう一度お願いしたいです。
[1] 授業単元:プログラミング(C言語)
[2] 問題文(含コード&リンク):
下記のような整数型配列において、以下の処理を行うプログラムの作成。
処理を行った後、配列の内容を出力する
#define YOUSO 10
int a[YOUSO] = {2,4,6,8,10,12,14,16,18,20} ;
int b[YOUSO] = {3,6,9,12,15,18,21,24,27,30} ;
(1)配列aの要素をすべて配列bに転送する
(2)b=a+bを配列内の要素毎に行う
(3)配列aの配列内順序を逆にして、配列bに転送する
(4)配列aと配列bの各要素を交換する
以上の処理を1つのプログラムで行うものを作れ、とのことです
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/
[4] 期限:7月8日まで
[5] その他の制限:どこまで習っているか、等々
配列処理までです 関数、ポインタはまだ習っていません。
もうなにがなんだかわけわからなくなってだめぽ、状態です
ほとんど丸投げで申し訳ないですがどうぞ力を貸してください
ちなみにそのレスの内容はhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/674.c
でした。
0105デフォルトの名無しさん
2005/07/06(水) 16:36:04そのライブラリは標準ではないのでしっかりと仕様を出さないと対応のしようがない。
一応、ピクセルが打てる関数さえあればなんとか描けると思うよ。
0106デフォルトの名無しさん
2005/07/06(水) 16:41:02それだとbを初期化する意味が無いのだがいいのか?
010766
2005/07/06(水) 16:44:13エラーが出ました。ので、ほかのやり方を教えていただきたいのですが
0108デフォルトの名無しさん
2005/07/06(水) 16:46:27そのソースの関数内の処理を全部main()にぶちまけりゃいいじゃん。
0109デフォルトの名無しさん
2005/07/06(水) 16:49:52前スレ647って10進→2進のやつか?どんなエラーが出たのか書かないとどうしようもないぞ
0110デフォルトの名無しさん
2005/07/06(水) 16:50:32>失礼しました、前スレの647をコンパイルしたんですが、
>66
どう関係が?
それはさておき、
http://pc8.2ch.net/test/read.cgi/tech/1119514274/647
をコンパイルしてエラーが出たならそのエラーを書きたまえ。
0111デフォルトの名無しさん
2005/07/06(水) 16:50:34作ろうと思ったが作ってても面白くないのでのでやめた。
>>108が言ってるように関数を展開すれば求めるものができるはずだ。
0112デフォルトの名無しさん
2005/07/06(水) 16:53:35えーっと、確か他に配列を作っておいてそこに転送させるとかなんとか言ってたので、
そうすることによってちゃんと成立させるのだと思うんですが・・・。
>>108
ちょっとやり方がわかんないんですが・・・どっか他のスレでやりかた聞いてきて
自分で直した方がいいんですかね・・
0113デフォルトの名無しさん
2005/07/06(水) 16:55:15104の書き方だと折角初期化したbにaを転送して上書きしちゃってる
とりあえず問題をちゃんと整理してから出直してこい
011466
2005/07/06(水) 17:07:12失礼しました、実は、コンパイルは通ったんですが、
問題文の意図とは、離れてるものでした、自分で入れた、数値を二進数に
変換するプログラムです。
失礼しました、文章角能力があまり発達してないもので(^^;
0115デフォルトの名無しさん
2005/07/06(水) 17:14:44int main(void) {
int i = -1;
while (i < 0 || i > 255)
scanf("%d", &i);
d2b(i);
return 0;
}
d2bは前スレのから。メッセージとかは一切出してないので勝手に付け加えてくれ
動作確認してないのでひょっとしたらエラーでるかもしれん
0116デフォルトの名無しさん
2005/07/06(水) 17:17:51文章を書く能力の問題じゃないね。
011766
2005/07/06(水) 17:31:53.c:6: `main' previously defined here
と出ました、コンパイルエラーです。なぜか、他の人たちは、
この問題は、配列をつかってやってました。
ので、配列を使うんじゃないでしょうか?
無知なもので・・・
0118デフォルトの名無しさん
2005/07/06(水) 17:38:51テストしてみたが問題なくコンパイルできたぞ
まさか前スレのソースからmain関数消してないってオチじゃないだろうな?
0119デフォルトの名無しさん
2005/07/06(水) 17:46:08>>117 のエラー見ると main が 6行目と15行目の 2箇所あるぜゴルア と読めるがな。
0120デフォルトの名無しさん
2005/07/06(水) 18:02:48混乱するから66を名乗るなよ。
0121デフォルトの名無しさん
2005/07/06(水) 18:07:49645は?
0122デフォルトの名無しさん
2005/07/06(水) 18:39:21[2] 問題文(含コード&リンク):複素数zを読み込んで、絶対値と偏角を計算して印字するプログラムを作れ。但し
・複素数の実部と虚部を示す実数型変数をメンバとする構造体COMPLEX。
・複素数の絶対値と偏角を示す実数型変数をメンバとする構造体POLAR
をtypedef文を用いて定義し以下の手続きをそれぞれ関数として作成し,main関数内で�@�A�Bを呼び出すだけにせよ。
�@構造体COMPLEXを読み込む
�A構造体COMPLEXからPOLARを計算する
�B構造体POLARを印字する
絶対値と偏角はz^2=a^2+b^2、θ=atan(b/a)でもとめられる。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):cc
[3.3] 言語:C
[4] 期限:7/7まで
[5] その他の制限:条件はなるべく関数と構造体を用いて作る。
よろしくお願いします
0123デフォルトの名無しさん
2005/07/06(水) 18:59:41#include <stdio.h>
#include <math.h>
typedef struct {double r, i;} COMPLEX;
typedef struct {double theta, len;} POLAR;
COMPLEX func1(void) {/*�@*/
COMPLEX z;
scanf("%lf %lf z", &z.r, &z.i);
return z;
}
POLAR func2(COMPLEX z) {/*�A*/
POLAR p;
p.theta = atan(z.i / z.r);
p.len = sqrt(z.r*z.r + z.i*z.i);
return p;
}
void func3(POLAR p){printf("len=%f, theta=%f\n", p.len, p.theta);}/*�B*/
int main(void) {
func3(func2(func1()));
return 0;
}
0124デフォルトの名無しさん
2005/07/06(水) 19:03:490125デフォルトの名無しさん
2005/07/06(水) 19:06:180126デフォルトの名無しさん
2005/07/06(水) 19:14:00atan()ではなくatan2()を使うべき。
0127デフォルトの名無しさん
2005/07/06(水) 19:15:13雄山「では聞こう、絶対値が0のとき偏角はどう定義されるのだ?
それに、atan(b/a)などというのはゼロ除算を考慮に入れていないではないか。
この、うつけめ!」
士郎「ぐぬぬ・・・」
栗田「さすがは海原雄山氏
仕様が曖昧だと出来てくるプログラムが不完全になることを言ってらっしゃるんだわ。」
0128デフォルトの名無しさん
2005/07/06(水) 19:16:43hypot()も思い出してあげてください。
0130デフォルトの名無しさん
2005/07/06(水) 19:38:420131前スレ441
2005/07/06(水) 19:54:420132デフォルトの名無しさん
2005/07/06(水) 20:03:11ttp://seclan.dll.jp/c99d/c99d09.htm
下の表ではC99の新人になってんだけど、ここの間違い?
M_PI並に普及してる非公式物じゃなくて?
0133デフォルトの名無しさん
2005/07/06(水) 20:03:54という、エラーが出ます。心優しい方、教えてください。
0134デフォルトの名無しさん
2005/07/06(水) 20:07:26それで動くのは確認した。何か起きても多少の手直しで動くはずだ
できないのならあんたには向いてないと思う
0135a
2005/07/06(水) 20:10:32マジかよ???
0136デフォルトの名無しさん
2005/07/06(水) 20:16:47ありがとうございました、何んとかできました。
しかし、こちらのほうで、なんとかできないでしょうか?自分なりにやってみたんですが、
ご指導の方よろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
void d2b(int i);
int main()
{
int i,a[i];
printf("2進数に直したい10進数の正の整数を入れてください,負の数の場合は終了です\n");
scanf("%d",&i);
if(i<0){
exit(i);
}
else if(i>=0){
printf("10進数表示%dの2進数表示は,\n %d \nです。\n",i, a[i]);
}
void d2b(int i)
{
int a[i];
for(i=8;i>0;i--){
a[i]=i%2;
}
return 0;
}
0137デフォルトの名無しさん
2005/07/06(水) 20:33:39・main書くの忘れてた。
int main(void) {interact(); return 0;}
をinteractより下に書き加えてくれ。
・メモリリークを見つけた
2218行目の
dealloc(p->val);
を
free_value(p->val);
に直してくれ。
0138名無しさん
2005/07/06(水) 20:34:0999さんどうもです。
for (i = 2; i < (unsigned int)sqrt(n); i ++) {
の行にエラーが出ちゃったんですけど、どうすればいいか教えてください。
sqrt 定義されていない識別子ですって出たんですけど…
お願いします。
0139デフォルトの名無しさん
2005/07/06(水) 20:38:290140デフォルトの名無しさん
2005/07/06(水) 20:48:45無駄はあるが
for (i = 2; i < n / 2; i ++) {
とするだけで十分
0141137
2005/07/06(水) 20:55:20各セルは文字列へのポインタの変わりに式の抽象表現へのポインタを持っている。
入力時点で式を解析したいから、こういう実装になってる。
これは仕様に反するけど、多分許されるんじゃないだろうか。
iやaコマンドで新しく追加される行・列はすべて0で、値の変更はeコマンドで行う。
以下は拡張機能。
扱えるデータ型は、整数、浮動小数点数、文字、真偽値、リスト、関数。
文字はシングルクォートで囲む。真偽値はtrueかfalse
文字列は文字のリストで、ダブルクォートで囲む。関数は
\引数名->本体
と書く。リストはlisp風で、各要素は別々の型を持てる。空リストは空文字列と同じだから、""と書く。
他のセルへの参照は「B2」あるいは「!B2」のように書く。
前者は入力時のB2の値が使われ、後者はB2への動的な参照になる。
この場合、B2セルの値が変更されたり、行の挿入などで位置がずれても、自動的に追跡する。
加減乗除(+-*/)の他に累乗(^)、リスト構築(:)、比較演算(==, !=, >, <. <=, >=)、論理演算(&&, ||)が使える。
if A then B else C は A ? B | Cと書く。
拡張コマンドとしてb(シンボルを定義)とu(シンボルの定義を抹消)がある。
0142名無しさん
2005/07/06(水) 20:55:59自然数を自分で入力し、自分でエンターを押して
素数かどうかチェックする場合どうしたらいいのですか?
0143デフォルトの名無しさん
2005/07/06(水) 21:18:38014499
2005/07/06(水) 21:22:41それくらいは自分でできるだろー。というか、練習問題としてやってみな。
scanf使って数値を入力させて、その数値で計算させればいいだけ。
0145前スレ966
2005/07/06(水) 21:35:11[2] 問題文(含コード&リンク):
引数として2進数をchar文字列で渡すと、
16進数に変換し、char文字列として返す関数を作る。
同様に引数を16進数、戻値を2進数で返す関数も作る。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): VC++6.0
[3.3] 言語:C/C++/
[4] 期限:7月9日
[5] その他の制限:
前スレでもお尋ねしたのですが、stringstreamを
使った答えをいただき、ありがたく思っております。
が、今度はchar配列の先頭のポインタをやり取りするように言われました。
なんだか余計にわからなくなってしまった・・・orz
どうかお願いします
0146デフォルトの名無しさん
2005/07/06(水) 21:49:03int isPrime(unsigned int n){
unsigned int i;
for(i = 2; i * i <= n; i++) if ( (n % i) == 0 ) return 0;
return 1;
}
unsigned int powMod(unsigned int a, unsigned int n){
unsigned int mask, tmp;
for(mask = 0x10000U, tmp = 1U; mask ; mask >>= 1) {
tmp = (tmp * tmp) % n;
if(mask & n) tmp = (tmp * a) % n;
}
return tmp;
}
int main(void){
unsigned int n;
char buf[1024];
while(1) {
printf("n = "); fgets(buf, 1024, stdin);
if(sscanf(buf, "%u", &n) != 1) continue;
if( n <= 0 ) break; /* 0以下が入力されたら終了 */
if( n > 0xffff ) {
printf("大きすぎて処理できません\n"); continue;
}
if(powMod(2, n) - 2U == 0U) {
if(isPrime(n) != 0) printf("割り切れる素数\n"); else printf("割り切れる合成数\n");
} else {
if(isPrime(n) != 0) printf("割り切れない素数\n"); else printf("割り切れない合成数\n");
}
}
return 0;
}
0147デフォルトの名無しさん
2005/07/06(水) 21:58:19[2] 問題文(含コード&リンク):n本の曲情報をソートし印字するプログラムを作れ。ただし、歌手名、曲のタイトル、ジャンルを
メンバとする構造体CD_ALUBMを定義しそれぞれのメンバでソートが可能であるように作成せよ。
要素を歌手名、曲のタイトル、ジャンルを持つ構造体CD_ALUBMを宣言しその構造体変数を配列で宣言して扱う。
ソートはstrcmpなどをもちいて文字列の大小で並び替えを行う
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):cc
[3.3] 言語:C言語
[4] 期限:7/7まで
[5] その他の制限:構造体と配列です。
どうかお願いします
0148デフォルトの名無しさん
2005/07/06(水) 22:03:42[2] 問題文(含コード&リンク):配列のデータ構造を実現するプログラムを
数パターン作成する
・データの挿入、削除、表示が可能であること。
・配列に代入するデータは整数型とする。
・プログラムの仕様(関数への入出力、表示方法など)は自由とする
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):Borland C++ Compiler5.5
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:7月9日昼まで
[5] その他の制限: まだC言語始めて一ヶ月なんですけど宿題が出てしまい
初心者な自分には力不足でわかりません。できるだけ早くお願いします。それ
とよろしければ簡単な注釈も書いていただければうれしいです。
どなたかやってもらえないでしょうか?
014913
2005/07/06(水) 22:13:03<私が作ったやつ>
開始→数値を入力→二で割る→商≠0→(false)→余り並べ替え→表示→終了
↑ ↓
(ture)←↓
講師に「このプログラムにしてはフローチャート足りないかな」といわれました。
御教授お願いします。
015013
2005/07/06(水) 22:18:310151デフォルトの名無しさん
2005/07/06(水) 22:24:51大学ではこんなことやらされるのか・・・
# 教えてもらえないからって女の真似したって駄目だヨ
0152デフォルトの名無しさん
2005/07/06(水) 22:26:000153デフォルトの名無しさん
2005/07/06(水) 22:55:04配列って普通、あらかじめ決めておいた数の記憶領域に対して、
整数の番号によって指定された番地のデータの読み書きができるだけの機能しかないよ。
挿入、削除はともかく、表示までできてしまうのを配列とは呼ばないのでは?
C++ の STL の vector は挿入も削除もできるけどさ。表示はできないよ。
普通表示するのに、配列自体の表示機能なんか必要無くて、
順番に番地を指定して値を取り出して、その値を表示するよ。
0154デフォルトの名無しさん
2005/07/06(水) 22:56:00なんていうかまんま線形リストの特徴備えてるよなw
0155デフォルトの名無しさん
2005/07/06(水) 22:59:32今月のCマガ100ページからの特集読め
図書館行きゃあるだろ
01561/2
2005/07/06(水) 23:04:41#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct { char *title, *artist, *genre;} CD_ALUBM;
CD_ALUBM alubm_table[] = {{"車輪", "BUMP OF CHICKEN", "J-POP"}, {"ズンドコ節", "氷川きよし", "演歌"},{"くるみ割り人形", "チャイコフスキー", "クラシック"},{"偶然天使", "極上生徒会執行部", "あにそん"}};
#define NUM_OF_ELEMENT(a) (sizeof(a)/sizeof(a[0]))
#define PCOMP_FUNC(M) comp_##M
#define COMP_FUNC_IMPLEMENT(MEM) int comp_##MEM(const void *a, const void *b) { return strcmp(((CD_ALUBM*)a)->MEM, ((CD_ALUBM*)b)->MEM);}
COMP_FUNC_IMPLEMENT(title)
COMP_FUNC_IMPLEMENT(artist)
COMP_FUNC_IMPLEMENT(genre)
void print_table(const CD_ALUBM *table, const size_t size, const char *title){
CD_ALUBM *p;
puts(title);
for(p = (CD_ALUBM*)table; p != table + size; ++p) printf("%s, %s, %s\n", p->title, p->artist, p->genre);
}
01572/2
2005/07/06(水) 23:04:55{
print_table(alubm_table, NUM_OF_ELEMENT(alubm_table),"***default order***");
qsort(alubm_table, NUM_OF_ELEMENT(alubm_table), sizeof(*alubm_table), PCOMP_FUNC(title));
print_table(alubm_table, NUM_OF_ELEMENT(alubm_table), "\n***title order***");
qsort(alubm_table, NUM_OF_ELEMENT(alubm_table), sizeof(*alubm_table), PCOMP_FUNC(artist));
print_table(alubm_table, NUM_OF_ELEMENT(alubm_table), "\n***artist order***");
qsort(alubm_table, NUM_OF_ELEMENT(alubm_table), sizeof(*alubm_table), PCOMP_FUNC(genre));
print_table(alubm_table, NUM_OF_ELEMENT(alubm_table), "\n***genre order***");
}
0158デフォルトの名無しさん
2005/07/06(水) 23:06:31その講師が求めているのは、箱一つに C の文が一つ書かれている
フローチャートなんじゃないかな?
だから基本的にはプログラムの文を一つ一つ四角で囲っていけばいい。
while は菱形にして、{ } の関係を矢印で結べばいい。
あと、関数宣言は両側が丸いアイスの棒みたいな形にすればOK
0159デフォルトの名無しさん
2005/07/06(水) 23:17:19お上手。勉強になります。
0160デフォルトの名無しさん
2005/07/06(水) 23:20:10「二で割る」の所に「割った余りをs[index]に記録」みたいなのが足んないんだと思う。
フローチャート通りだと計算の記録を残すところが無いし。
0161デフォルトの名無しさん
2005/07/06(水) 23:23:23なんでEDなんだよw
016213
2005/07/06(水) 23:24:01有難うございます。
講師には、「二で割る」〜「商≠0」の部分がいくつか欠けているといわれました。
とりあえず「変数int index =0,left = 0 を宣言 」など頭のほうにつけてみましたがよく
わかりません。余りを保存(記憶?)のチャートはどの部分に入りますか?
0163デフォルトの名無しさん
2005/07/06(水) 23:24:54君が「C++ではなくCだ」と書いておかないからだ
0164デフォルトの名無しさん
2005/07/06(水) 23:28:53質問
・引数として渡されたchar配列に変換結果を書き込んでそれを戻り値と
して返すの?
それとも新たに中で動的に確保したポインタを返すの?
0165137
2005/07/06(水) 23:38:44バグ修正版。
致命的なものは少ないので面倒ならスルー可。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/678.zip
0166145
2005/07/06(水) 23:52:04おっしゃるとおりです。というか、追加で出されたものでして
>>164
引数はそのままの値を保持します
新たに確保して返せばそれで大丈夫のはずです
0167デフォルトの名無しさん
2005/07/06(水) 23:54:09当然呼び出し側でfreeすることになるんだけれども、そういうプログラムで
いいのかな?
0168デフォルトの名無しさん
2005/07/06(水) 23:54:40void btox(char *x, char *b)
{
int len, xch, i, j;
len = strlen(b);xch=0;
for(i=0;i<len%4;i++){
xch <<= 1;xch |= b[i]-(b[i]>9?'a':'0');
}
x[i/4]=xch+(xch>9?'a':'0');
while(i<len){
xch = 0;
for(j=0;j<4;j++){
xch <<=1;xch |=b[i]-'0';i++;j++;
}
x[i/4]=xch+(xch>9?'a':'0');
}
void xtob(char *b, char *x)
{
int len, xch, i, j;
len = strlen(x);len *= 4;i=0;
while(x[i] != '\0'){
xch = x[i]-(x[i]>9?'a':'0');
b[4*i]=!!(xch & 0x8)+'0';
b[4*i+1]=!!(xch & 0x4)+'0';
b[4*i+2]=!!(xch & 0x2)+'0';
b[4*i+3]=!!(xch & 0x1)+'0';
}
b[4*i] = '\0';
}
0169158
2005/07/06(水) 23:55:56講師は C 言語のプログラムを適当に間引いたものが欲しいのではなく、
単に文を象形文字化したものが欲しいだけ。
だから i=i+1; とかは
「i に 1 を足す」でも「i を 1 増やす」でもなく、
「i に 1 を足したものを i に代入する」と完璧機械的直訳をすれば Ok
a[b]=c[d]; なら
「配列 c の d 番目の要素を配列 a の b 番目に代入する」とかね。
プログラムの意味なんか全然考えなくていいよ。
0170デフォルトの名無しさん
2005/07/06(水) 23:56:36そのシリーズたまにやってくれ。
おもろいw
0171145
2005/07/06(水) 23:57:30>>145の 余計にわからなく〜は
streamを使うやり方はよく解ったけど、
char配列でうまく処理できない、ということで
お答えをいただいて余計に混乱した、ということではないです
気分を害した方がいらっしゃったら、ごめんなさい
0173デフォルトの名無しさん
2005/07/07(木) 00:01:500174デフォルトの名無しさん
2005/07/07(木) 00:14:03おお!なるほど・・・ありがとうございます!
あと、xtobの方で疑問に思ったのですが、
b[4*i]=!!(xch & 0x8)+'0'; あたりの
"!!" と "+'0'" の意味はなんなんでしょうか・・・?
もしよろしかったらお答えを聞きたく思います
0175145
2005/07/07(木) 00:14:430176167
2005/07/07(木) 00:17:02新しく確保するよりバッファを渡す方がCらしいわな。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
char* to_radix_n(unsigned int x, char* s, int n) {
int index = 0, left = 0, digit;
char temp;
do {
digit = x % n;
s[index++] = digit > 9 ? digit - 10 + 'A' : digit + '0';
} while (x /= n);
s[index--] = '\0';
while (left < index) {
temp = s[left];
s[left++] = s[index];
s[index--] = temp;
}
return s;
}
unsigned int from_radix_n(char* s, int n) {
unsigned int x = 0, i, len;
for (i = 0, len = strlen(s); i < len; i++) (x *= n) += isdigit(s[i]) ? s[i] - '0' : toupper(s[i]) - 'A' + 10;
return x;
}
int main(void) {
char s1[256], s2[256];
printf("Enter Number:"); scanf("%255s", s1);
printf("%s(16) = %s(2)\n", s1, to_radix_n(from_radix_n(s1, 16), s2, 2));
printf("Enter Number:"); scanf("%255s", s1);
printf("%s(16) = %s(2)", s1, to_radix_n(from_radix_n(s1, 2), s2, 16));
}
0178デフォルトの名無しさん
2005/07/07(木) 00:22:02!!→二重否定。つまり、0は0、1は1、2も1、以下同様に。
+'0'→一桁の数値を文字に。つまり、0は'0'、1は'1'、2は'2'、以下同様に。
0179デフォルトの名無しさん
2005/07/07(木) 00:23:090が入っているときに0をセットしたいときに
x = !!tとすると
否定の否定でxに値があれば1、なければ0が入る。
"+'0'"はx=!!tと
下二式から考えてみて
'0' = '0' + 0;
'1' = '0' + 1;
0180デフォルトの名無しさん
2005/07/07(木) 00:24:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/679.c
0181168
2005/07/07(木) 00:25:30len = strlen(x);len *= 4
入らなかった削除しといて。
0182168
2005/07/07(木) 00:27:26tに何か値が入っているとき
xに1を、0が入っているときに0をセットしたいときに
x = !!tとすると
否定の否定でtに値があれば1、なければ0がxに入る。
"+'0'"はx=!!tと
下二式から考えてみて
'0' = '0' + 0;
'1' = '0' + 1;
0183デフォルトの名無しさん
2005/07/07(木) 00:31:03これまた別のやり方・・・すごく参考になります
mainまで気を配っていただいて、ありがたい限りです
>>181
了解しました
小さな質問にも答えていただいて感謝です
お二人のを参考に仕上げて行きたいと思います
本当にご親切にありがとうございました
0184168
2005/07/07(木) 00:33:40xch = x[i]-(x[i]>9?'a':'0');
b[4*i]=!!(xch & 0x8)+'0';
b[4*i+1]=!!(xch & 0x4)+'0';
b[4*i+2]=!!(xch & 0x2)+'0';
b[4*i+3]=!!(xch & 0x1)+'0';
i++;//ここが抜けてたたびたびすまん
}
0185145
2005/07/07(木) 00:38:49あ、わかりました〜
とりあえず自分はまず名前とsage練習ですねorz
なんにせよ助かりました、もう一度、ありがとうございました
0186デフォルトの名無しさん
2005/07/07(木) 00:42:23static void uint2b_sub(char **, int);
char *uint2b(char *buf, int n)
{
char *s = buf;
uint2b_sub(&s, n);
*s = '\0';
return buf;
}
static void uint2b_sub(char **s, int n)
{
if (n > 2)
uint2b_sub(s, n / 2);
*(*s)++ = "01"[n%2]; /* ここがトリッキーだよなぁ・・・ */
}
0187デフォルトの名無しさん
2005/07/07(木) 00:43:230188148
2005/07/07(木) 01:10:10するってことなんだと思います。説明不足ですみませんでした。それと、もしよかったら
削除と挿入だけでもいいのでどなたかやってもらえないでしょうか?
0189デフォルトの名無しさん
2005/07/07(木) 01:16:59> [3.3] 言語:C/C++/どちらでも可 のいずれか
どれだよw
0190デフォルトの名無しさん
2005/07/07(木) 01:42:10[2] 問題文(含コード&リンク): キーボードからchar型変数 str1 , str2 にそれぞれ
文字列を入力する。str2 を str1 に連結し、str1 の内容を出力するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): VC++ 6.0
[3.3] 言語:C
[4] 期限: 無期限
こんな感じに書きました↓
0191190
2005/07/07(木) 01:42:24void main(){
char str1[128],str2[128],*p_str1,*p_str2;
p_str1 = str1;
p_str2 = str2;
printf("1: "); scanf("%s",p_str1);
printf("2: "); scanf("%s",p_str2);
//文字列 str1 の終点のアドレスがポインタに代入された状態にする
for( ; *p_str1 != '\0' ; p_str1++ );
//連結
for( ; *p_str2 != '\0' ; *p_str1++ = *p_str2++ );
//p_str1 を出力 たぶんここが悪い
for( p_str1 = str1 ; *p_str1 != '\0' ; p_str1++ )
printf("%c",*p_str1);
printf("\n");
}
たぶん出力するところの条件がおかしいんだとは思うんですが。。。
色々考えてはみたものの結局答えは出ず。どなたかご教授願います
0192デフォルトの名無しさん
2005/07/07(木) 01:53:18残念そこじゃない。そのコードでは末尾に'\0'が付加されない。
//連結
while (*p_str1++ = *p_str2++) {}
0193デフォルトの名無しさん
2005/07/07(木) 01:53:35> //連結
> for( ; *p_str2 != '\0' ; *p_str1++ = *p_str2++ );
これだと、'\0'の手前でコピーが終了してstr1の末尾に'\0'がつかない
のに、
後で出力時にはstr1の末尾に'\0'がついていることを期待しているのが
問題。
連結は、
while (*p_str1++ = *p_str2++);
でよい。コンパイラが警告を出すならば、別に無視しても構わないが
気になるなら
while ((*p_str1++ = *p_str2++) != '\0');
とでも書けばよい。
0194デフォルトの名無しさん
2005/07/07(木) 01:53:540195190
2005/07/07(木) 02:17:12>>192,193
サンクス!
0196デフォルトの名無しさん
2005/07/07(木) 03:20:43[2] 問題文(含コード&リンク):要素数が10個の整数型配列を、任意のデータで初期化し、
その要素の最大値と最小値を求めるプログラムを作りなさい
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:7月8日迄
[5] その他の制限:配列、ソート、サーチ処理までしか習っていません。
よろしくお願いします
0197デフォルトの名無しさん
2005/07/07(木) 03:35:51#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b){return *(int*)a - *(int*)b;}
int main()
{
int a[] = { 1, 4, 2, 0, 5, -3, 3, 3, 4, 7 };
qsort(a, 10, sizeof(int), cmp);
printf("(max, min) = (%d, %d)\n", a[0], a[9]);
return 0;
}
0198デフォルトの名無しさん
2005/07/07(木) 03:36:58× printf("(max, min) = (%d, %d)\n", a[0], a[9]);
○ printf("(mim, max) = (%d, %d)\n", a[0], a[9]);
0199>148
2005/07/07(木) 03:48:47int find(int key, int tblSize, int *tbl)
{ int i;
for(i=0; i<tblSize; ++i) if(tbl[i]==key) return i; /* あった */
return tblSize; /* なかった */
}
int ins(int val, int prevNum, int maxSize, int *tbl)
{ int now;
if(prevNum+1>=maxSize) return -1; /* もう挿入できません */
tbl[now=find(val,prevNum,tbl)]=val;
return (now<prevNum)?prevNum:now+1;
}
int del(int key, int tblSize, int *tbl)
{ int pos=find(key,tblSize,tbl);
if(pos>=tblSize) return tblSize; /* ないから消せない */
if(pos<tblSize-1) tbl[pos]=tbl[tblSize-1];
return --tblSize;
}
int main(void)
{ int i,cnt=0,tbl[10]={0},maxSize=sizeof(tbl)/sizeof(tbl[0]);
/* 追加 */
for(i=2; i<=10; i+=2) cnt=ins(i,cnt,maxSize,tbl);
/* 削除 */
cnt=del(4,cnt,tbl);
/* 表示 */
for(i=1; i<=10; ++i) printf("%d:%s\n", i, (find(i,cnt,tbl)<cnt)?"あった":"なかった");
return 0;
}
0200デフォルトの名無しさん
2005/07/07(木) 03:59:40min=max=a[0];
for(i=1; i<sizeof(a)/sizeof(a[0]); ++i){
if(min>a[i]) min=a[i];
if(max<a[i]) max=a[i];
}
printf("(max, min) = (%d, %d)\n", max, min);
0201デフォルトの名無しさん
2005/07/07(木) 09:21:55[2]
英数字と半角スペース、特殊文字(’や#など)からなる英文文字列を入力し、この文字列から英数字のみからなる単語に切リ出して出力するプログラムを作成しなさい。入力・出力例については、下記の入力・出力例を参照のこと。
ただし、プログラムの仕様は下記の通りです。
(1) 英数字は、英数字以外の文字が出てきたら、そこまでを切り出す。
(2) 数字から始まる系列や数字のみ、特殊記号のみの系列を単語とはみなさない。
(3) 各単語は出現順に二次元文字配列に格納され、最後にこの二次元文字配列に格納された単語を順番に出力して終了する、という形式のプログラムとする。
(4) 全角文字は考えなくてよい。
------------------------------
[入力・出力例]
[345:] This is the machine134. -> 444 (Read the “document”!!! ).
単語=This
単語=is
単語=the
単語=machine134
単語=Read
単語=the
単語=document
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):VC++ 6.0
[3.3] 言語:C++
[4] 期限:7月7日まで
宜しくお願いしますm(__)m
0202デフォルトの名無しさん
2005/07/07(木) 10:12:51[2]
strcpy関数とstrncpy関数の二つの機能を併せ持つ関数を自作せよ。
[3]
[3.1] Linux
[3.2] コンパイラ(バージョン):
[3.3] C++
[4] 期限:7月8日まで
[5] オーバーロード、テンプレートを出来れば使用して欲しいです
よろしくお願いします。
0203デフォルトの名無しさん
2005/07/07(木) 10:45:01特にstrncpy()の機能の部分について仕様を詳しく。
#あんな妙な挙動を再現しろというのなら私はパスする。
0204デフォルトの名無しさん
2005/07/07(木) 10:53:24[2]2次元配列で表現された迷路がある.現在の位置を○で示している.
立ち往生することなく,○がいつまでも迷路内を移動し続けるプログラム
maze.cpp を作成しなさい.但し,クラスを利用すること.
もちろん壁を通り抜けることはできない.また,画面左上がスタート地点
である.なお,キー入力によりプログラムの中断とポーズ,および表示待ち時間
の増減を行えるようにしなさい.
[2.1]迷路の表現について
迷路は,int 型の2次元配列で表現することができる.
例えば,壁=1,道=0,現在位置=9という値であると定義すれば,
配列要素を調べることで何を表示すればよいかが分かる.
[2.2]迷路内の移動について
○は現在座標(x, y)を持っている.この座標値(x, y)を
ループの中で毎回更新することで,○が迷路内を移動して行くように
見せることができる.表示が速すぎると移動の様子が確認できないので,
適宜,空ループを利用することで待ち時間を作り,擬似的に表示速度の増減を行えば良い.
[2.3]迷路の探索アルゴリズムについて
迷路は固定されているが,○は進行方向によって東西南北の
どちらを向いているかが変化する.
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):VC++ 6.0
[3.3] 言語:C++
[4] 期限:7月8日まで
よろしくお願いします。
0205デフォルトの名無しさん
2005/07/07(木) 11:09:270206デフォルトの名無しさん
2005/07/07(木) 11:30:45仕様が穴だらけだ。
・描画に関して
どこにどう描画する? その手段は?
授業で既に何かを描画しているのならそれを利用すべきではないのか?
・迷路に関して
迷路の大きさは? 生成手段は?
授業で既に迷路を作成(r
・迷路探索に関して
分岐に到達した場合の移動方向は?
って、面白そうだけど結構分量ありそうだな。私ゃパスだ。
0207>>202
2005/07/07(木) 11:34:14template<typename Type>
Type* Func(Type* lpDest,const Type* lpSource,size_t count = std::numeric_limits<size_t>::max()){
size_t i = 0;
for(;i < count && lpSource[i] != '\0';i++) lpDest[i] = lpSource[i];
if( i < count) lpDest[i] = '\0';
return lpDest;
}
0208デフォルトの名無しさん
2005/07/07(木) 11:45:14void d2b(int i);
int main()
{
int i;
printf("2進数に直したい10進数の正の整数を入れてください,負の数の場合は終了です\n");
scanf("%d",&i);
if(i<0 || i>255){
exit(i);
}
else if(i >= 0){
printf("10進数表示%dの2進数表示は,\n ",i);
d2b(i);
printf("です.\n");
}
}
void d2b(int i)
{
int a[8],x;
for(x=0;x<8;x++){
a[x]=i%2;
}
for(x=7;x>=0;x--){
printf("%d\n",a[x]);
}
printf("\n");
}
計算結果が、変な値になってしまいます、教えてください。
0209デフォルトの名無しさん
2005/07/07(木) 11:51:260210デフォルトの名無しさん
2005/07/07(木) 11:52:18> for(x=0;x<8;x++){
> a[x]=i%2;
> }
for(x=0;x<8;x++,i>>=1){
a[x]=i%2;
}
0211デフォルトの名無しさん
2005/07/07(木) 11:53:11その1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <ctype.h>
void split(char *str, char **buffer) {
char *start, *ptr;
int length, num = 0, skip = 0;
start = str;
for (ptr = str; *ptr != '\0'; ptr++) {
if ((isdigit(*ptr) || !isalpha(*ptr)) && (ptr - start) == 0) {
skip = 1;
}
if (!isalpha(*ptr) && !isdigit(*ptr)) {
if ((length = ptr - start) != 0 && skip == 0) {
buffer[num] = (char *)malloc(sizeof(char) * length + 1);
strncpy(buffer[num], start, length);
buffer[++num] = (char *)NULL;
}
start = ptr + 1;
skip = 0;
}
}
}
0212デフォルトの名無しさん
2005/07/07(木) 11:53:23その2
int main(int argc, char **argv) {
char buffer[4096], *tokens[1024], *token;
int i = 0;
printf("Input String (Max length is 4095) : ");
fgets(buffer, 4095, stdin);
split(buffer, tokens);
while ((token = tokens[i]) != (char *)NULL) {
printf("Token: %s\n", token);
++ i;
}
return 0;
}
0213デフォルトの名無しさん
2005/07/07(木) 11:55:15ただ「変な値になる」ではなく、きちんと実例を挙げて説明したまえ。
0214デフォルトの名無しさん
2005/07/07(木) 11:57:47>printf("Input String (Max length is 4095) : ");
>fgets(buffer, 4095, stdin);
この辺が馬鹿。
0215デフォルトの名無しさん
2005/07/07(木) 11:58:36この辺も馬鹿。
0216207
2005/07/07(木) 12:08:26template<typename Type>
Type* Func(Type* lpDest,const Type* lpSource,size_t count){
size_t i = 0;
for(;i < count && lpSource[i] != '\0';i++) lpDest[i] = lpSource[i];
if( i < count) lpDest[i] = '\0';
return lpDest;
}
template<typename Type>
Type* Func(Type* lpDest,const Type* lpSource){
size_t i = 0;
for(;lpSource[i] != '\0';i++) lpDest[i] = lpSource[i];
lpDest[i] = '\0';
return lpDest;
}
>>202
一つの関数で済まそうとするとダメダメだったことに気づいた
0217デフォルトの名無しさん
2005/07/07(木) 12:12:31言葉足らずでした。すいません。
strcpy(s1,s2)の時にs1にs2をコピーする。
strncpy(s1,s2,n)の時はs1にs2の先頭n文字がコピーされる。
という事です。
0218デフォルトの名無しさん
2005/07/07(木) 12:16:30ありがとうございます。
既習範囲をぶっ飛んでてちょっと厳しいですが
もう少し勉強して参考にさせていただきます。
021941
2005/07/07(木) 12:16:57はい、割り勘です。
もし、割り切れなかった場合はM君が余りを支払います。
0220デフォルトの名無しさん
2005/07/07(木) 12:19:54[2] 問題文(含コード&リンク): eのx乗は次の式で近似される。
eのx乗=1+x+xの2乗/2!+・・・+xのn乗/n!+・・・
xが入力されると、n乗の項の絶対値が10の-5乗より大きい間、
eのx乗の値を計算して、答えを出力するプログラムを以下の手順で作成せよ。
(1) 上記の近似式を漸化式で表しなさい。なお、漸化式とは第n項を第n-1項以下の
値を使って表現したものである。
(2) 漸化式を利用して、プログラムを書きなさい。
[実行例]
eのx乗を計算します。xを入力せよ→1
eの1乗は2.71828です。
eのx乗を計算します。xを入力せよ→0.1
eの0.1乗は1.10517です。
eのx乗を計算します。xを入力せよ→-1
eの-1乗は0.367879です。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン): Cygwin(よく分かりません…)
[3.3] 言語:C++
[4] 期限:今日中なんです…
[5] その他の制限:問題文の指示通り、漸化式を利用して作る
期限が悲惨ですが、どなたかお願いします…
0221デフォルトの名無しさん
2005/07/07(木) 12:43:57E(n)=E(n-1)+(x^n)/(n!), n>0
E(0)=1
(2)
double E(double x, unsigned int n)
{
double result;
static double term = 1.0;
if (n == 0)
return term = 1.0;
result = E(x, n-1);
term *= x / n;
return result + term;
}
0222221
2005/07/07(木) 12:55:08おっと、漸化式を
E(n) = E(n-1) + T(n-1)*x/n, n>0
E(0) = 1, T(0) = 1
に変更しておこうかな。
mainは自分で書いてくれ。
unsigned int N = 100; /* 適度にデカい数字 */
/* x にユーザから入力 */
printf("eの%f乗は%fです。\n", x, E(x, N));
って感じ。あ、C++か。
std::cout << でw
0223デフォルトの名無しさん
2005/07/07(木) 13:05:48おお…なんとも素晴らしく早い対応ありがとうございます!
今から引用させてもらいますW
0224デフォルトの名無しさん
2005/07/07(木) 14:06:58[2] 問題文
void List(struct LIST *pt){
while(pt != NULL){
printf(" %d",pt -> a);
pt = pt -> nextptr;}
putchar('\n');}
これを繰り返し構造ではなく関数の再帰呼び出しを用いて表せ
[3] 環境
[3.1]Linux
[3.2]gcc
[3.3]C
[4]明日まで
[5]できれば説明もつけていただけるとありがたいです
よろしくお願いします
0225デフォルトの名無しさん
2005/07/07(木) 14:17:01void List(struct LIST *pt){
if (pt == NULL) {
putchar('\n');
} else {
printf(" %d",pt -> a);
List(pt->nextptr);
}
}
解説:再帰(的)関数。リスト構造。などでぐぐれ。
0226デフォルトの名無しさん
2005/07/07(木) 14:42:04#define N 200
#define INF 100000
#define fixed 2
#define in 1
#define out 0
struct station{
int num;
char name[20];
};
int start,mark[N],dist[N],length[N][N],n=0;
struct station data[N];
void read_graph(void);
void write_dist(void);
void Dijkstra(void);
main(){
read_graph();
printf("start point = ");
scanf("%d",&start);
printf("\n");
start=start-1;
Dijkstra();
write_dist();
}
0227デフォルトの名無しさん
2005/07/07(木) 14:42:28int i,j,k;
for(k=0;k<N;k++){
n+=1;
scanf("%d",&data[k].num);
scanf("%s\n",&data[k].name);
if(data[k].num==-1)k=N;
}
for(i=0;i<N;++i)
for(j=0;j<N;++j)
length[i][j]=INF;
printf("start node,end node,edge length\n");
for(k=0;k<N;k++){
scanf("%d %d",&i,&j);
if(i==j)k=N;
scanf("%d",&length[i-1][j-1]);
length[j-1][i-1]=length[i-1][j-1]; /*(j-1,i-1)と(i-1,j-1)の距離を同じに書き換える*/
}
}
0228デフォルトの名無しさん
2005/07/07(木) 14:42:56int i;
for(i=0;i<n-1;++i){
printf("distance[%15s] = %d\n",data[i].name,dist[i]);
}
}
void Dijkstra(void){
int m,i,j,k,v,temp;
for(i=0;i<N;i++)
dist[i]=INF;
dist[start]=0;
for(i=0;i<=n-3;i++){
for(k=0;k<n-1;k++){
for(m=0;m<n-1;m++){
if(length[k][m]<INF){
if(dist[k]+length[k][m]<dist[m]){
dist[m]=dist[k]+length[m][k];
}
}
}
}
}
}
0229デフォルトの名無しさん
2005/07/07(木) 14:47:29#define N 200
#define INF 100000
#define fixed 2
#define in 1
#define out 0
struct station{
int num;
char name[20];
};
int start,mark[N],dist[N],length[N][N];
struct station data[N];
void read_graph(void);
void write_dist(void);
void Dijkstra(void);
main(){
read_graph();
printf("start point = ");
scanf("%d",&start);
printf("\n");
start=start-1;
Dijkstra();
write_dist();
}
0230デフォルトの名無しさん
2005/07/07(木) 14:48:200231デフォルトの名無しさん
2005/07/07(木) 14:48:290232デフォルトの名無しさん
2005/07/07(木) 14:49:16int i,j,k;
for(k=0;k<N;k++){
scanf("%d",&data[k].num);
scanf("%s\n",&data[k].name);
if(data[k].num==-1)k=N;
}
for(i=0;i<N;++i)
for(j=0;j<N;++j)
length[i][j]=INF;
printf("start node,end node,edge length\n");
for(k=0;k<N;k++){
scanf("%d %d",&i,&j);
if(i==j)k=N;
scanf("%d",&length[i-1][j-1]);
length[j-1][i-1]=length[i-1][j-1];
}
}
0233デフォルトの名無しさん
2005/07/07(木) 14:50:27int i;
for(i=0;i<N;++i){
if(mark[i]==fixed)printf("distance[%15s] = %d\n",data[i].name,dist[i]);
}
}
void Dijkstra(void){
int i,j,k,v,temp;
for(i=0;i<N;i++)mark[i]=out;
dist[start]=0;
mark[start]=in;
0234デフォルトの名無しさん
2005/07/07(木) 14:50:57for(i=0;(i<N)&&(mark[i]!=in);++i);
if(i==N)return;
for(v=i++;i<N;++i)if((mark[i]==in)&&(dist[i]<dist[v]))v=i;
mark[v]=fixed;
for(i=0;i<N;++i)
if(length[v][i]<INF){
temp=dist[v]+length[v][i];
if(mark[i]==in){
if(temp<dist[i])dist[i]=temp;
}
else if (mark[i]==out){
dist[i]=temp;
mark[i]=in;
}
}
}
}
0235デフォルトの名無しさん
2005/07/07(木) 15:23:10class Rectangle
def initialize(x1,y1,x2,y2)
@x1 = x1
@y1 = y1
@x2 = x2
@y2 = y2
end
attr_accessor :x1,:y1,:x2,:y2
end
rect1 = Rectangle.new(10,10,20,20)
p rect1
printf("長方形の対角の座標は(%d %d)と(%d %d)です。\n",rect1.x1,rect1.y1,rect1.x2,rect1.y2")
0236デフォルトの名無しさん
2005/07/07(木) 16:11:570237デフォルトの名無しさん
2005/07/07(木) 16:16:260238デフォルトの名無しさん
2005/07/07(木) 16:19:26#include <stdio.h>
int main( void )
{
FILE *pf; int i, m, n, x, y; char f[ 256 ];
for ( m = 0; m != 3; ) {
printf( "\n1. Output file. - function.dat\n2. Output file. - n_xy.dat\n3. Exit program.\n>" ); scanf( "%d", &m );
switch ( m ) {
case 1 :
pf = fopen( "function.dat", "wb" ); if ( pf == NULL ) break;
for ( x = 0; x <= 1001; x++ ) { y = x * x;
for ( i = 0; i < sizeof( int ) / sizeof( char ); i++ ) fputc( ( ( char * )&x )[ i ], pf ); for ( i = 0; i < sizeof( int ) / sizeof( char ); i++ ) fputc( ( ( char * )&y )[ i ], pf ); }
fclose( pf );
printf( "Success." );
break;
case 2 :
printf( "Number = " ); scanf( "%d", &n ); if ( n < 0 || 1000 < n ) break;
pf = fopen( "function.dat", "rb" ); if ( pf == NULL ) break;
fseek( pf, n * sizeof( int ) * 2, SEEK_SET );
for ( i = 0; i < sizeof( int ) / sizeof( char ); i++ ) ( ( char * )&x )[ i ] = fgetc( pf ); for ( i = 0; i < sizeof( int ) / sizeof( char ); i++ ) ( ( char * )&y )[ i ] = fgetc( pf );
fclose( pf );
sprintf( f, "%04d_xy.dat", n ); pf = fopen( f, "wt" );
if ( pf == NULL ) break;
fprintf( pf, "x = %d\n", x ); fprintf( pf, "y = %d\n", y );
fclose( pf );
printf( "Success." );
break;
}
}
return 0;
}
0239148
2005/07/07(木) 16:45:30助かりました、まだコンパイルも実行もしていないので今からしてきます。
本当にありがとうございました。
0240デフォルトの名無しさん
2005/07/07(木) 16:49:39>>235
#include <stdio.h>
#include <stdlib.h>
struct Rectangle { int x1, y1, x2, y2; };
struct Rectangle * new_rect(int x1, int y1, int x2, int y2);
void kill_rect(struct Rectangle * p);
int main()
{
struct Rectangle * rect1;
rect1 = new_rect(10, 10, 20, 20);
printf("長方形の対角の座標は(%d %d)と(%d %d)です。\n", rect1->x1, rect1->y1, rect1->x2, rect1->y2);
kill_rect(rect1);
return 0;
}
struct Rectangle * new_rect(int x1, int y1, int x2, int y2)
{
struct Rectangle * p = (struct Rectangle *) malloc(sizeof(struct Rectangle));
p->x1 = x1;
p->y1 = y1;
p->x2 = x2;
p->y2 = y2;
return p;
}
void kill_rect(struct Rectangle * p)
{
free(p);
}
0241148
2005/07/07(木) 17:17:59実行時にコマンドとして
「address」と入力すると添え字を聞かれ数字を入れると添え字を指定できる。
「show」と入力すると指定した添え字に対応する要素を参照できる。
「delete」と入力すると添え字を聞かれ数字を入れて指定した要素を削除できる。
「insert」と入力すると添え字を聞かれ数字を入れて指定した所に要素を挿入できる。
ということで、そういったプログラムを作ることを教授が課題として出しました。
0242デフォルトの名無しさん
2005/07/07(木) 17:28:17要素を削除ってのが消した上で詰める&挿入が一切上書きせずに間に追加するって
意味でいいなら完全に線形リストだが、それでいいならいくらでもサンプルコード
あるからググってみれ
0243148
2005/07/07(木) 17:37:44さっそくググってきます。
0244デフォルトの名無しさん
2005/07/07(木) 17:52:29あいうえお,1,8
かきくけこ,2,16
さしすせそ,4,32
Cのプログラムで"かきくけこ,2,16"を削除して間を詰める方法を教えてください
0245デフォルトの名無しさん
2005/07/07(木) 17:55:54途中だけ削る事はできない
0246デフォルトの名無しさん
2005/07/07(木) 18:00:18mmapして、memmoveして、ftruncateしたら?
0247デフォルトの名無しさん
2005/07/07(木) 18:03:29あいうえおとさしすせそを別ファイルにコピーして、元のファイルを消し、
作ったファイルを名前を元のファイル名にする。
0248デフォルトの名無しさん
2005/07/07(木) 18:07:18ありがとうございます
可能なものから試してみます
0249デフォルトの名無しさん
2005/07/07(木) 18:17:080250デフォルトの名無しさん
2005/07/07(木) 20:08:29[2] 問題文(含コード&リンク):
符号なし関数xのposビット目を、1にした値を返す関数set、0にした値を返す関数reset、
反転した値を返す関数inverse
unsigned set( unsigned x, int pos) { /* ・・・ */ }
unsigned reset( unsigned x, int pos) { /* ・・・ */ }
unsigned inverse(unsigned x, int pos) { /* ・・・ */ }
を作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:7月8日(金)まで
おねがいします
0251デフォルトの名無しさん
2005/07/07(木) 20:10:40また、posは0から始まるのか、それとも、1から始まるのか?
0252デフォルトの名無しさん
2005/07/07(木) 20:14:09reset(...) { return (x & (~(1U << pos))); }
inverse(..) { return (x ^ (1U << pos)); }
0253デフォルトの名無しさん
2005/07/07(木) 20:17:23そういったことは指定されてません。
0254デフォルトの名無しさん
2005/07/07(木) 20:19:300255デフォルトの名無しさん
2005/07/07(木) 20:21:13reset(...) { return (x & (~(1U << (INTBITS - pos - 1)))); }
inverse(..) { return (x ^ (1U << (INTBITS - pos - 1))); }
0256デフォルトの名無しさん
2005/07/07(木) 20:23:26右から数えてposは0からでお願いします
0257デフォルトの名無しさん
2005/07/07(木) 21:52:17>>252
0258148
2005/07/07(木) 23:16:49サンプルコードが載っているサイトが見つかりません。なんてググればいいでしょうか?
それと、線形リストじゃなくて配列ではできないでしょうか?
0259デフォルトの名無しさん
2005/07/07(木) 23:19:18大量にあるが・・・ ってか何がしたいのよ?
そもそも配列は挿入したり削除したりって風には出来てないわけで
やるなら挿入or削除する度にそれ以降を全て一個ずつずらす必要が有るわけで
出来なくはないだろうけど無駄
0260148
2005/07/07(木) 23:31:18無駄なんはなんとなくわかりますけど、多分配列の勉強って意味で
そういう課題を出されたんだと思います。
0261デフォルトの名無しさん
2005/07/07(木) 23:50:40漏れも真っ先に線形リストを想像したが、受け答えを見ていると、これってマジで配列で
void insertInto(int *array, int length, int index, int value)
とかいう関数定義させて、その中で array[index+1] ← array[index] みたいに直で要素の値を
移動して array[index] = value とかするのが、このアホな問題を考えた先生の目論見
なんではないかね。
問題としては下の下なんだが、こんな認識で会っているのかな?>>260
0262デフォルトの名無しさん
2005/07/07(木) 23:53:16>こんな認識で会っているのかな?
誰と?
0263148と260
2005/07/07(木) 23:56:30いっぱい×2なプログラムを問題にしてきましたからね。
0264デフォルトの名無しさん
2005/07/07(木) 23:59:20こんな感じでどうよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/680.txt
0265デフォルトの名無しさん
2005/07/08(金) 00:00:44おまえ友達いなさそうだな
0266148と260
2005/07/08(金) 00:17:06hairetu2.cpp:
エラー E2034 hairetu2.cpp 41: 'void *' 型は 'array_t *' 型に変換できない(関数 array_alloc(unsigned int) )
エラー E2034 hairetu2.cpp 42: 'void *' 型は 'int *' 型に変換できない(関数 array_alloc(unsigned int) )
エラー E2034 hairetu2.cpp 55: 'void *' 型は 'int *' 型に変換できない(関数 array_realloc(array_t *,unsigned int) )
エラー E2268 hairetu2.cpp 81: 未定義の関数 'memmove' を呼び出した(関数 array_insert_to(array_t *,unsigned int,int) )
エラー E2268 hairetu2.cpp 101: 未定義の関数 'memmove' を呼び出した(関数 array_remove_at(array_t *,unsigned int) )
警告 W8004 hairetu2.cpp 103: 'src' に代入した値は使われていない(関数 array_remove_at(array_t *,unsigned int) )
警告 W8060 hairetu2.cpp 122: おそらく不正な代入(関数 main() )
警告 W8060 hairetu2.cpp 140: おそらく不正な代入(関数 main() )
*** 5 errors in Compile ***
どうしてでしょう?
もしかして。.cで保存しなきゃだめですか?
0267デフォルトの名無しさん
2005/07/08(金) 00:19:16C言語なんだから、拡張子は.cで。
あと、一番最初の行にこれ追加
#include <memory.h>
0268デフォルトの名無しさん
2005/07/08(金) 00:55:420269デフォルトの名無しさん
2005/07/08(金) 01:22:30いや、今日は眠れそうにないので。
0270デフォルトの名無しさん
2005/07/08(金) 01:27:55フェルマーの最終定理。
0271デフォルトの名無しさん
2005/07/08(金) 01:28:26Cの問題じゃないし、解決してるし。
0272デフォルトの名無しさん
2005/07/08(金) 01:30:270273デフォルトの名無しさん
2005/07/08(金) 01:30:56[2] 問題文(含コード&リンク): 100マス計算もどきを表示せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:7月8日12時まで
おねがいします。
0274デフォルトの名無しさん
2005/07/08(金) 01:33:44コンソールに?それともプリンターにGDI使って?
0275デフォルトの名無しさん
2005/07/08(金) 01:37:050276デフォルトの名無しさん
2005/07/08(金) 02:13:04コンソールにです。
どうかお願いします。
0277デフォルトの名無しさん
2005/07/08(金) 02:27:08#include <stdio.h>
#include <stdlib.h>
int main() {
int col[10], row;
int i, j;
printf(" |");
for (i = 0; i < 10; i++) {
col[i] = (rand() % 10);
printf(" %2d", col[i]);
}
printf("\n");
for (i = 0; i < 10; i++) {
row = rand() % 10;
printf(" %2d|", row);
for (j = 0; j < 10; j++) {
printf(" %2d", col[j] + row);
}
printf("\n");
}
}
0278デフォルトの名無しさん
2005/07/08(金) 02:41:07ありがとうございます。
0279デフォルトの名無しさん
2005/07/08(金) 02:58:48一人専用でコンピューターと戦うようにプログラムしたいです。
7月12日が締め切りなんです。
環境:UNIX、コンパイル
なお、爆弾を見つけたらポイントが入るようにしたいです。
最初に1PLayerがマスと爆弾の数を決めれるようにしたいんです。
ほんとにお願いしたいです!
0280デフォルトの名無しさん
2005/07/08(金) 03:00:52GUIで開発せなあかんの?
それだと面倒だなー。
0281デフォルトの名無しさん
2005/07/08(金) 03:01:11コンピュータは何するんだ?
0282デフォルトの名無しさん
2005/07/08(金) 03:20:51[2] 問題文(含コード&リンク): 配列
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:7月8日5:00まで
[5] その他の制限:すいません。明日までの宿題を今更聞かせていただきます。
2!〜100!までを順に表示するプログラムで
・再帰は使用不可
・オーバーフローを考慮し、100!の約200桁を数桁ごとに分けて配列で考える、
もしくは一桁ごとに考え200個の配列を使う。
・使えるもの:if for while switch 配列
0283デフォルトの名無しさん
2005/07/08(金) 03:50:30[2] 問題文(含コード&リンク): CPUの乗算シュミレートのプログラムです。
うまくいかないので、修正をお願いします。
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:7月11日21:00まで
1] 授業単元: プログラミング�T
[2] 問題文(含コード&リンク): 配列
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:7月8日5:00まで
#include<stdio.h>
main(void)
{
int PC = 0, AccA = 0, Reg1 = 0, Reg2 = 0, MWR = 0, MRR = 0;
int MAR = 0,IR = 0, mPC = 0, Bus = 0,i = 0;
int Mem[]={0x00B6,0x0014,/*LDAA命令*/ 0x00BB,0x0016,/*ADDA命令*/ 0x0027,0x0004,/*JEQZ命令*/ 0x00B6,0x0016,/*LDAA命令*/ 0x00BB,0x0014,/*ADDA命令*/ 0x00B7,0x0016,/*STAA命令*/0x00B6,0x0015,/*LDAA命令*/
0x00B0,0x0017,/*SUBA命令*/
0x00B7,0x0015,/*STAA命令*/
0x00B8,0x0004,/*JUMP命令*/
0x0005,0x0004,/*掛けられる数と掛ける数*/
0x0000,0x0001,/*答え格納場所と回数を数えるために引く値*/
};
0284デフォルトの名無しさん
2005/07/08(金) 03:51:50int CPU[26][21] = {{0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0},/*フェッチサイクル*/
{0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0},
{1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0},
{0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0},
{1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0},/*LDAA命令*/
{0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0},
{0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0},/*STAA命令*/
{0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0},/*ADD命令*/
{0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0},
{0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0},
{0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1},
{0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0},/*JEQZ命令*/
{0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,0,0,0},/*SUBA命令*/
{0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0},
{0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0},
{0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0},
{0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0},
{0,1,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0},};/*JUMP命令*/
0285デフォルトの名無しさん
2005/07/08(金) 03:53:42while(1)
{
if(CPU[mPC][12] == 1) /* R/W = 1の時 */
{
if(CPU[mPC][13] == 1) /* MAE = 1の時 */ { MRR = Mem[MAR]; /* MRR ← Mem[MAR]*/ printf("MRR = %x Mem[MAR]→MRR\n",MRR);
}
}
else {
Mem[MAR] = MWR; /* Mem[MAR] ← MWR */ printf("Mem[MAR] = %d MWR→Mem[MAR]\n",Mem[MAR]);
}
/* Gate信号 */
if(CPU[mPC][2] == 1) /* GatePC = 1の時 */
{
Bus = PC; /* Bus ← PC */ printf("Bus = %x PC→Bus\n",Bus);
}
if(CPU[mPC][4] == 1) /* GateAccA = 1の時 */
{
Bus = AccA; /* Bus ← AccA */ printf("Bus = %d AccA→Bus\n",Bus);
}
if(CPU[mPC][7] == 1) /* GateReg2 = 1の時 */
{
Bus = Reg2; /* Bus ← Reg2 */ printf("Bus = %d Reg2→Bus\n",Bus);
}
if(CPU[mPC][10] == 1) /* GateMRR= 1の時 */
{
Bus = MRR; /* Bus ← MRR */ printf("Bus = %x MRR→Bus\n",Bus);
}
0286デフォルトの名無しさん
2005/07/08(金) 03:57:26/* Inc,Load信号 */
if(CPU[mPC][0] == 1) /* IncPC = 1の時 */ {
PC = PC +1; /* PCの値を1増やす */ printf("PC = %x PC+1→PC\n",PC);}
if(CPU[mPC][1] == 1) /* LoadPC = 1の時 */ {
PC = Bus; /* PC ← BUS */ printf("PC = %x Bus→PC\n",PC); }
if(CPU[mPC][3] == 1) /* LoadAccA = 1の時 */ {
AccA = Bus; /* AccA ← BUS */ printf("AccA = %d Bus→AccA\n",AccA); }
if(CPU[mPC][5] == 1) /* LoadReg1 = 1の時 */ {
Reg1 = Bus; /* Reg1 ← BUS */ printf("Reg1 = %x Bus→Reg1\n",Reg1); }
if(CPU[mPC][6] == 1) /* LoadReg2 = 1の時 */ {
if(CPU[mPC][19] == 1)
{
Reg2 = Reg1 + Bus; /* Reg2 ← BUS */ printf("Reg2 = %d Reg1+Bus→Reg2\n",Reg2); }
else {
Reg2 = Bus - Reg1; /* Reg1 ← BUS */printf("Reg2 = %d Bus-Reg1→Reg2\n",Reg2);
}}
if(CPU[mPC][8] == 1) /* LoadMWR = 1の時 */ {
MWR = Bus; /* MWR ← BUS */printf("MWR = %d Bus→MWR\n",MWR);
}
if(CPU[mPC][11] == 1) /* LoadMAR = 1の時 */ {
MAR = Bus; /* MAR ← BUS */printf("MAR = %x Bus→MAR\n",MAR);
}
if(CPU[mPC][14] == 1) /* LoadIR = 1の時 */ {
IR = Bus; /* IR ← BUS */printf("IR = %x Bus→IR\n",IR);
}
0287デフォルトの名無しさん
2005/07/08(金) 04:53:16#include <stdio.h>
#define DIGITS_MAX 200
int main() {
unsigned char digits[DIGITS_MAX], endPos = 0;
int i, j, num, mul, pos, tmpAns, carry;
digits[0] = '1';
for (i = 2; i <= 100; i++) {
num = i; carry = 0; tmpAns = i / 10;
for (pos = 0, tmpAns = i; tmpAns != 0; tmpAns /= 10, pos++);
while (--pos >= 0) {
mul = i;
for (j = 0; j < pos; j++, mul /= 10);
for (j = pos; j <= endPos; j++) {
tmpAns = (digits[j] - '0') * mul + carry;
carry = tmpAns / 10;
digits[j] = '0' + (tmpAns % 10);
}
while (carry != 0) {
digits[++endPos] = '0' + (carry % 10);
carry /= 10;
}
}
printf("%d! = ", i);
for (j = endPos; j >= 0; j--) {
printf("%c", digits[j]);
}
printf("\n");
}
}
0288287
2005/07/08(金) 04:55:31> int i, j, num, mul, pos, tmpAns, carry;
は
unsigned char digits[DIGITS_MAX];
int i, j, num, mul, pos, tmpAns, carry, endPos = 0;
と直してくれい。
0289266
2005/07/08(金) 05:36:00hairetu2.c:
警告 W8060 hairetu2.c 123: おそらく不正な代入(関数 main )
警告 W8060 hairetu2.c 141: おそらく不正な代入(関数 main )
という警告だけ残りました。とりあえず警告なんで無視しても実行はできたんですけど
自分が何も入力しなくてもプログラムがひとりで勝手に作業して終了します。
こちらが入力してはじめて動くようにできないでしょうか?
0290デフォルトの名無しさん
2005/07/08(金) 06:04:27マインスイーパーの簡略版ならゼロから学ぶC++のP158に載ってるよ
もちろんC++だけどな
0291290
2005/07/08(金) 06:11:37作るときの参考ぐらいにはなるだろうから一応置いておく
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/681.cpp
0292デフォルトの名無しさん
2005/07/08(金) 09:49:03何がうまくいかないのか分からんし、
内容についてアドバイスを求めるには情報が少なすぎる。
0293デフォルトの名無しさん
2005/07/08(金) 10:43:01・長いファイルはアップローダーを使え。
・これで全部なら重要な命令が足りない。
0294デフォルトの七資産
2005/07/08(金) 11:06:32[2] 問題文(含コード&リンク):
暦の年号を西暦に変換するプログラムを作成せよ。
ヒント(西暦=明治:m+1867、大正:t+1911、昭和:s+1925、平成:h+1988)
また、列挙体(enum)を用いた方法でも作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):Borland C++ Compiler5.5
[3.3] 言語:C
[4] 期限:12:00まで
[5] できるだけ簡単におねがいします。
0295168
2005/07/08(金) 11:18:59暦とそれに続く年の入力形式はどんなの?
"meiji10"or"明治10年"等などあるから指定してもらいたいんだけど
0296デフォルトの名無しさん
2005/07/08(金) 11:25:49こういう未定義な問題はスルーされるぞ。せめて入出力例くらいは書こうな。
最近こういうヤシが多い・・・頭の質を問われてると思って、問題文を書いて欲しい。
つか今日の12時までかよ(まさか深夜0時ことじゃあるまいな)。
0297デフォルトの七資産
2005/07/08(金) 11:37:090298デフォルトの名無しさん
2005/07/08(金) 11:38:40[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
VBからコールバック関数を引数として呼び出され、
コールバック関数の引数として文字列をVBに返却する
単純なVC++DLLを作成せよ。
[3] 環境
[3.1] OS:Windows/Linux/等々
Windows(XP)
[3.2] コンパイラ(バージョン):
Microsoft VisualStudio 6.0
[3.3] 言語:C/C++/どちらでも可 のいずれか
どちらでも可
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
2005/07/11 10:00
[5] その他の制限:どこまで習っているか、等々
文字列ではない普通の値(long)などを渡すDLLは作成済み
特に制限事項はなし
0299298
2005/07/08(金) 11:44:30' DLLの定義
Public Declare Function setCallBack Lib "sample.dll" (ByVal proc As Long) As Long
' コールバック関数
Public Sub echoCallBack(ByVal str As String)
frm_Main.txt_status.Text = frm_Main.txt_status.Text & str & vbCrLf
End Sub
' コールバック関数登録
Private Sub cmd_SendData_Click()
Dim ret As Long
' データ送信コマンド呼び出し
ret = setCallBack(AddressOf echoCallBack)
End Sub
0300デフォルトの名無しさん
2005/07/08(金) 11:46:44いや、だから質問に答えようよ
0301デフォルトの名無しさん
2005/07/08(金) 11:50:20それは流石にC/C++の宿題とはいえないだろう……
・VBからコールバック関数を引き数として受け取る
・DLLからそのコールバック関数を呼び出す
この2点を調べるの位やって欲しいし、それが判れば自分で書けるだろう?
0302デフォルトの七資産
2005/07/08(金) 11:54:10例 昭和45年 → s 45
(入力:h 12)
(表示→)西暦2000年です。
0303デフォルトの名無しさん
2005/07/08(金) 11:57:08int main(void)
{
int a,b,c;
printf("元号を選、数字で入力しろ\n1:大正 2:明治 3:昭和 4:平成\n");
scanf("%d",&a);
if(a <1|| a >5){
printf("変なキー押すな\n");
goto enari;
}
else {
printf("年を入れ\n");
scanf("%d",&b);
if(a == 1){
c = a + 1867;
printf("大正%d年は%d年\n",b,c);
}
else if(a == 2){
c = a + 1911;
printf("明治%d年は%d年\n",b,c);
}
else if(a == 3){
c = a +1925;
printf("昭和%d年は%d年\n",b,c);
}
else if(a == 3){
c = a +1988;
printf("平成%d年ha%d年\n",b,c);
}}enari:
return 0;}
0304デフォルトの名無しさん
2005/07/08(金) 11:57:520305デフォルトの名無しさん
2005/07/08(金) 11:58:25列挙体(enum)を用いた方法でも作成せよ。
0306デフォルトの名無しさん
2005/07/08(金) 12:00:490307デフォルトの名無しさん
2005/07/08(金) 12:01:060308デフォルトの名無しさん
2005/07/08(金) 12:02:14enum{meiji=1867,taisho=1911,showa=1925,heisei=1988};
int main(void)
{
int a,b,c;
printf("元号を選、数字で入力しろ\n1:大正 2:明治 3:昭和 4:平成\n");
scanf("%d",&a);
if(a <1|| a >5){
printf("変なキー押すな\n");
goto enari;
}
else {
printf("年を入れ\n");
scanf("%d",&b);
if(a == 1){
c = a + meiji;
printf("明治%d年は%d年\n",b,c);
}
else if(a == 2){
c = a + taisho;
printf("大正%d年は%d年\n",b,c);
}
else if(a == 3){
c = a +showa;
printf("昭和%d年は%d年\n",b,c);
}
else if(a == 3){
c = a +heisei;
printf("平成%d年ha%d年\n",b,c);
}}
enari:
return 0;}
0309デフォルトの七資産
2005/07/08(金) 12:02:43http://www.ktc.ac.jp/class/masakiyo/programming_gengo3/20050627練習問題6.htm
0310デフォルトの名無しさん
2005/07/08(金) 12:03:39うぉ!気づいてからのタイムラグ考えると仕事はええぇ
0311デフォルトの七資産
2005/07/08(金) 12:04:18夏休みの宿題になったみたいでうれしいです^−^w
0312デフォルトの名無しさん
2005/07/08(金) 12:05:56username と password を要求されるんだが
0313デフォルトの名無しさん
2005/07/08(金) 12:06:340314デフォルトの名無しさん
2005/07/08(金) 12:46:37http://www.geocities.jp/ryo_haruka2002/kadai10.txt
何方かご教授願います…さっぱり分かりません。
0315デフォルトの名無しさん
2005/07/08(金) 12:47:280316デフォルトの名無しさん
2005/07/08(金) 12:57:29問題文としては素晴らしいが、
問題自体が非常につまらない。
0317デフォルトの名無しさん
2005/07/08(金) 13:01:55ひたすらForでループし続ければいいんじゃねーの?
どっちにしてもつまらない
0318デフォルトの名無しさん
2005/07/08(金) 13:43:15[2] 問題文(含コード&リンク):
整数の素因数分解をする関数 factor_integer を作れ。
void factor_integer(int n, int p[]) の関数仕様
正の整数 n の素因数を小さい順に配列 p の先頭から入れて、終端記号0をつけて返す。
たとえば、
int p[100];
factor_integer(360, p);
を実行すると、配列 p の内容は先頭から
2 2 2 3 3 5 0
となる。
その関数を用いて, 10285002 の素因数分解を求めよ.
[3] 環境
[3.1] OS:VineLinux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年7月8日24:00まで
0319デフォルトの名無しさん
2005/07/08(金) 13:50:36>int p[100];
>factor_integer(360, p);
>
>を実行すると、配列 p の内容は先頭から
>2 2 2 3 3 5 0
>となる。
2 3 5 0 ではなく 2 2 2 3 3 5 0 なのね。
0320デフォルトの名無しさん
2005/07/08(金) 13:51:46しまった!毎回食わせるのかもうういいやヘタれた誰か頼んだ
0321デフォルトの名無しさん
2005/07/08(金) 13:51:47[2] 問題文(含コード&リンク):
配列において,同一の値を持ついくつかの連続する要素を,ブロックと呼び,その要素の個数をブロックの長さと呼ぶことにする.整数型配列 data の最初から n 個の要素に値が入っているとする.この
配列のもっとも長さの長いブロック(そのようなブロックが複数個ある場合は,添え字の小さい方)の先頭要素の添え字を返す関数
int longest_block(int data[], int n)
を定義せよ.たとえば,
data[] = {1, 3, 1, 4, 4, 4, 1, 3, 3, 2, 2, 2, 1}
のときは, 4, 4, 4 と 2, 2, 2 とがもっとも長いブロックであるが,添え字が小さい方ということで, 4, 4, 4 が選ばれ,その先頭要素の添え字 3 が関数の返す値となる.
この関数を用いて,次の main を実行した結果は何か.
#include <stdio.h>
#include <stdlib.h>
#define N 1000
main()
{
int data[N];
int i, m;
srand(1);
for (i = 0; i < N; i++) {
data[i] = rand() % 10;
}
m = longest_block(data, N);
printf("%d\n", m);
}
[3] 環境
[3.1] OS:VineLinux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年7月8日24:00まで
すいませんがおねがします。
0322デフォルトの名無しさん
2005/07/08(金) 13:53:26そうです。2223350で間違いないです。
0323デフォルトの名無しさん
2005/07/08(金) 13:55:26> この関数を用いて,次の main を実行した結果は何か.
知らんがな
0324デフォルトの名無しさん
2005/07/08(金) 14:00:28#include <windows.h>
#ifdef __cplusplus
extern "C" {
#endif
#define DLLEXPORT __declspec( dllexport )
#define WIN32API __stdcall
typedef void ( CALLBACK *PECHOCALLBACK )( BSTR );
typedef PECHOCALLBACK FAR LPECHOCALLBACK;
BOOL APIENTRY DllMain( HANDLE hModule, DWORD dwEvent, LPVOID lpReserved )
{
return TRUE;
}
int WIN32API setCallBack( LPECHOCALLBACK lpAddress )
{
BSTR bsOutput;
bsOutput = SysAllocString( L"Test" );
( *lpAddress )( bsOutput );
SysFreeString( bsOutput );
return 0;
}
#ifdef __cplusplus
}
#endif
0325324
2005/07/08(金) 14:02:020326デフォルトの名無しさん
2005/07/08(金) 14:02:05void factor_integer(int n, int p[])
{
int fa = 2;
while (n != 1) {
if (n % fa == 0) {
*p = fa;
n /= fa;
p++;
} else {
fa++;
}
}
*p = 0;
}
0327デフォルトの名無しさん
2005/07/08(金) 14:07:32コンパイルできるかどうかしかチェックしてないがこれでどうよ?
int longest_block(int *data, int n) {
int *nums, i, cnt = 1, idx = 0, tmp = data[0];
nums = calloc(n, sizeof(int));
for (i = 1; i > n; i++) {
if (data[i] != tmp) {
if (!nums[cnt])
nums[cnt] = idx;
idx = i;
tmp = data[i];
cnt = 1;
} else {
cnt++;
}
}
for (i = n - 1; i >= 1; i--)
if (nums[i]) { return nums[i]; }
free(nums);
}
0328デフォルトの名無しさん
2005/07/08(金) 14:08:49へんなとこがあれば適当に修正よろしく
void factor_integer(int num, int *p)
{
int i, j;
i=2;
j=0;
while(num!=1){
while(num%i==0&&num!=1){
p[j]=i;
num/=i;
j++;
}
i+=2-(i==2);
}
p[j]=0;
}
0329デフォルトの名無しさん
2005/07/08(金) 14:12:53{
int idx = 0;
int factor;
int work = n;
while( (work & 1) == 0 ){
work >>= 1;
p[idx++] = 2;
}
for(factor = 3; factor < sqrt(n); factor += 2){
while( work % factor == 0 ){
work /= factor;
p[idx++] = factor;
}
}
p[idx] = 0;
return;
}
0330318
2005/07/08(金) 14:13:450331デフォルトの名無しさん
2005/07/08(金) 14:15:29callocなしでやってみた。
int longest_block(int data[], int n)
{
int block_type; /* left uninitialized */
int block_length = 0;
int longest_block_length = -1;
int ret = -1;
int i;
for(i = 0; i < n; i++)
{
if(data[i] == block_type)
block_length++;
else
{
if(block_length > longest_block_length)
{
ret = i - block_length;
longest_block_length = block_length;
}
block_type = data[i];
block_length = 1;
}
}
if(block_length > longest_block_length)
ret = n - block_length;
return ret;
}
0332327
2005/07/08(金) 14:18:57スマソ、俺のはスルーしてくださいorz
0333327
2005/07/08(金) 14:35:24何やってんだ俺・・・('A`)
0334デフォルトの名無しさん
2005/07/08(金) 14:46:02{
int first, maxfirst; count, maxcount, i;
first = maxfirst = 0;
count = maxcount = 1;
for (i = 1; i < n; i++) {
if (data[i-1] == data[i]) {
count++;
if (count > maxcount) {
maxfirst = first;
maxcount = count;
}
} else {
first = i;
count = 1;
}
}
}
0335デフォルトの名無しさん
2005/07/08(金) 16:02:00[2]
リストのノードの順序を,逆順にする関数を作りなさい.next の値を変更することにより逆順にする
[3] 環境
[3.1] OS:VineLinux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年7月8日24:00まで
0336デフォルトの名無しさん
2005/07/08(金) 16:04:26引数やリストの形式は?
0338デフォルトの名無しさん
2005/07/08(金) 16:26:00void inverse( node *p )
{
if( (p->next)==NULL ) return;
inverse( p->next );
p->next->next = p;
p->next = NULL;
}
0339デフォルトの名無しさん
2005/07/08(金) 16:30:43前スレに全く同じ問題あった。
回答も二つ(再帰版と分割統治版)UPされてたし。
0340デフォルトの名無しさん
2005/07/08(金) 17:00:56ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/659.txt
再帰版
0341デフォルトの名無しさん
2005/07/08(金) 17:09:09ポインタで入力した文字列をその配列の中で逆転するのはどうやったら
いいんですか??
問題が、課題2において、文字列へのポインタstr1を
入力し、その文字列を逆順にしたものを改めて
str1が指す文字列に格納する関数reverse_str_2を
作成したうえでプログラムJuly17.cに追加し、これを
完成させなさい。
なんです。
プログラムuly17.cが
#include<stdio.h>
/* プロトタイプ宣言は考えること・・・ヒント:呼び出し部分を見ればわかる */
main(){
char string[100]; /* 入力する文字列(99文字までOK(なぜ99文字なのか考えること) */
printf("文字列を入力してください:");
gets(string); /* 文字列を入力 */
reverse_str2(string); /* 文字列を逆に並べる */
printf("\n\n"); /* 少しあける */
printf("逆にしたら: %s\n", string);
}
/* この下に関数 reverse_str2 を書いてください */
なんです。 おねがいします(><)
0342デフォルトの名無しさん
2005/07/08(金) 17:10:51[2] 問題文(含コード&リンク):
n個の整数からなる配列をできる限り低速にソートするアルゴリズムを設計して実装せよ。
フェアプレイの精神を忘れないように。
つまり、処理を進行させていずれは終了するアルゴリズムでなければならず、
時間稼ぎのループのようなインチキを働く実装であってはならない。
そのアルゴリズムも計算量をnの関数として表現せよ。
教科書は ttp://cm.bell-labs.com/cm/cs/tpop/ の日本語訳です。
[3] 環境
[3.1] OS: 標準C
[3.2] コンパイラ(バージョン): Windows/Linuxのコンパイラでコンパイルできるように
[3.3] 言語:C
[4] 期限:2005年07月15日06:30まで
[5] その他の制限:
C99の新規機能は使わないこと。
ANSI C/C++/C99のコンパイラでコンパイルできること。
0343デフォルトの名無しさん
2005/07/08(金) 17:11:09>>1
0344デフォルトの名無しさん
2005/07/08(金) 17:16:44出来る限り低速ならバブルソートでも組めばいいんジャマイカ?
ってか訳の分からん課題だな・・・
0345デフォルトの名無しさん
2005/07/08(金) 17:20:470346デフォルトの名無しさん
2005/07/08(金) 17:24:42yes
0347デフォルトの名無しさん
2005/07/08(金) 17:32:21[2] 問題文(含コード&リンク):
マルチユーザ対応チャットアプリケーションを作成せよ(TCP/IP)
動作の条件
・サーバでは複数のクライアントからの接続を許可すること。
・サーバ、クライアントともにメッセージの入力・送信・受信表示ができるようにする。
・プログラム起動時にユーザ名を入力させ、メッセージ送信の際に自動的に
「ユーザ名 メッセージ」とすること。
・サーバから入力されたメッセージはすべてのクライアントに送信すること。
・クライアントからのメッセージを受信したサーバは画面に表示するとともに
ほかのクライアントに送信すること。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:2005年7月12日21:00まで
[5] その他の制限:なし
一応プログラムはあるのですが・・・。全然条件とあってないし、動作もおかしいので
これを修正していただけませんでしょうか?お願いいたします。
サーバ: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/682.txt
クライアント:ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/683.txt
説明不足だったら言ってください。
0348342
2005/07/08(金) 17:36:12単純ソートより効率の悪いものを作りなさいってことなんでしょうけれど・・・orz
こんな問題をわざわざ課題にせんでちょ・・・。
0349デフォルトの名無しさん
2005/07/08(金) 17:45:20とりあえずサーバのコードをてきとうに眺めただけだが……
1. SOCK_NAMEだのunlink(SOCK_NAME);だのはいらない
もともとUnixドメインソケットのコードか何かからコピったのだろうが
2. fd_width = fd[anum] + 1; は危険。最後にaccept()したfdが最大とは限らない。
最大のfdをたとえばfd_maxといった変数にでももっておいて
fd_max = max(fd_max, fd[anum]);
fd_width = fd_max + 1;
といった感じに書き換えろ
3. if (rl < 1) close(fd[mn]);だとか、次のif文だとかがぐちゃぐちゃ。
この条件を通る場合は下の処理に流したくないはずなのだから、
if文の中でcontinueしろ。
4. read()で読み取ったバッファの中身はヌルターミネートされている
ワケでもなければ1行分のデータと限るわけでもない。
それをそのままstrcmp()に渡すのは論外
キリがねえな。
0350デフォルトの名無しさん
2005/07/08(金) 17:47:10・最小の要素を探す
・それをピボットにしてクイックソート
0351デフォルトの名無しさん
2005/07/08(金) 17:49:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/684.c
多分O(n^(n+2))だけど、確証が持てない。
少なくともO(n^(n+1))ではある。
0352342
2005/07/08(金) 18:05:54O(n^(n+1)) 。。。指数にnを持ってくるとわ・・・。
0353347
2005/07/08(金) 18:36:27おかしなところは多々あると思いますが、どうにか動かせるようにできませんでしょうか・・・?
元のプログラムは全部変えちゃってもいいので、お願いします。
0354デフォルトの名無しさん
2005/07/08(金) 19:12:16適当に二つの要素を選んで入れ替えては全部がソートされたかどうかをチェックする
プログラムはかなり遅くなると思う。
うまくいく確率を n! の全部が等確率に出現すると思って雑に計算しても、
平均停止時間は少なくとも O(n!)=O((n/e)^n)。
実際は k 手で完成する集合とか考えると完成側に吸収端があるランダムウォークに
なるから、遷移行列の確率がうまく求まればもっと悪い見積りが出ると思う。
0355デフォルトの名無しさん
2005/07/08(金) 19:16:26ソートにランダムを使用するのはフェアじゃないだろw
0356342
2005/07/08(金) 19:21:24確率を使う方法は、
「処理を進行させていればいずれは停止する」という条件を満たさないと思います。
確率の考え方は面白いですね。
0357デフォルトの名無しさん
2005/07/08(金) 19:41:25[2] 問題文(含コード&リンク): 配列x[5]={1.4.5.2.3}を小さい順にソートするプログラムを作成せよ。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン):VC++6.0
[3.3] 言語:C
[4] 期限:明日中
[5] その他の制限:ポインタを使ってお願いします。
0358デフォルトの名無しさん
2005/07/08(金) 19:59:48#include <stdlib.h>
#include <stdio.h>
int greater_int(const void *x, const void *y){return *(int*)x < *(int*)y;}
int main()
{
int i, x[5]={1,4,5,2,3};
sqort(x,5,sizeof(int),greater_int);
for(i = 0; i< 5; ++i) printf("%d ", x[i]);
putchar('\n');
return 0;
}
0359デフォルトの名無しさん
2005/07/08(金) 20:01:510360358
2005/07/08(金) 20:01:57訂正しました。
>>357
#include <stdlib.h>
#include <stdio.h>
int less_int(const void *x, const void *y){return *(int*)x - *(int*)y;}
int main()
{
int i, x[5]={1,4,5,2,3};
qsort(x,5,sizeof(int),less_int);
for(i = 0; i< 5; ++i) printf("%d ", x[i]);
putchar('\n');
return 0;
}
0361358
2005/07/08(金) 20:03:100362デフォルトの名無しさん
2005/07/08(金) 20:20:46まずはプロトコルをどうしたいのかはっきりさせろ。
問題文に無い機能を盛り込んでないか?
問題文からはユーザのリストを取得したり(クライアント側で)ユーザを
指定して送信したりする機能が必要とは思われない。
1) クライアントからの最初の送信行はユーザ名として扱う。これは
クライアント側には返送・転送されない。
2) クライアントからの二行目以降の送信行は、先頭にユーザ名を付加して
全てのクライアントに送信される。
3) 通信終了はクライアント側からの切断にて行う。クライアントは
EOF文字を端末から入力された場合に、通信を終了する。
この程度で十分だと思うが。
これでも行指向ではあるので、クライアント毎のバッファ管理は必須だ。
stdioとselect()との併用はよろしくないので、自前でやる必要がある。
0363デフォルトの名無しさん
2005/07/08(金) 21:01:20何となくだが、求められているのはこんなレベルのような気がする。
#include <stdio.h>
int main(void) {
int i, j, temp, x[5] = {1, 4, 5, 2, 3};
for (i = 0; i < 4; i++)
for (j = 0; j < 4 - i; j++)
if (x[j + 1] < x[j]) {
temp = x[j];
x[j] = x[j + 1];
x[j + 1] = temp;
}
for (i = 0; i < 5; i++) printf("\t%d", x[i]);
return 0;
}
0364デフォルトの名無しさん
2005/07/08(金) 21:01:29ありがとうございました。
0366デフォルトの名無しさん
2005/07/08(金) 21:24:46ポインタ使うの忘れてた。
#include <stdio.h>
void sort(int* x, int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++)
for (j = 0; j < n - 1 - i; j++)
if (x[j + 1] < x[j]) {
temp = x[j];
x[j] = x[j + 1];
x[j + 1] = temp;
}
}
int main(void) {
int i, x[5] = {1, 4, 5, 2, 3};
for (i = 0; i < 5; i++) printf("\t%d", x[i]);
printf("\n");
sort(x, 5);
for (i = 0; i < 5; i++) printf("\t%d", x[i]);
return 0;
}
0367デフォルトの名無しさん
2005/07/08(金) 21:41:25サーバ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/685.txt
クライアント
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/686.txt
仕様は>>362の通りに簡略化してある。
なお俺はLinux環境は持ってないのでそのつもりで。
0368デフォルトの七資産
2005/07/08(金) 21:41:47[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
暦の年号を西暦に変換するプログラムを列挙体(enum)を用いた方法で作成せよ。
ヒント(西暦=明治:m+1867、大正:t+1911、昭和:s+1925、平成:h+1988)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):Borland C++ Compiler5.5
[3.3] 言語:C
[4] 期限無
[5] できるだけ簡単におねがいします。
列挙体(enum)のもお願いできますか。
BY 昨日の電車男で2chの人大好きになりましたデフォルトの七資産でした。w
0369デフォルトの名無しさん
2005/07/08(金) 21:44:11直ぐ後にイニューム版も貼られてただろ
0370デフォルトの名無しさん
2005/07/08(金) 21:52:320371デフォルトの名無しさん
2005/07/08(金) 23:11:00[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=687
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):VC++6.0
[3.3] 言語:C言語
[4] 期限:来週の月曜まで
[5] その他の制限:for文を使用、多重ループ
どなたかよろしくお願いします・・・。
0372デフォルトの名無しさん
2005/07/08(金) 23:14:35#include<stdio.h>
int main(void)
{
for (;0;) for (;0;);
return printf("-++++\n*-+++\n**-++\n***-+\n****-\n"), 0;
}
0373デフォルトの名無しさん
2005/07/08(金) 23:17:52#include <stdio.h>
int main()
{
int n, x, y;
scanf("%u", &n);
for(y = 0; y < n; ++y)
{
for(x = 0; x < n; ++x)
{
if( x > y ) putchar('*');
else if( x < y ) putchar('+');
else putchar('-');
}
putchar('\n');
}
return 0;
}
0374373
2005/07/08(金) 23:23:250375デフォルトの名無しさん
2005/07/08(金) 23:32:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/688.txt
よろしくお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/688.txt
よろしくお願いします
0376デフォルトの名無しさん
2005/07/08(金) 23:37:29>合計得点以外の適当なデータを入力できるようにせよ。
これの意味がわからん。
0377デフォルトの名無しさん
2005/07/08(金) 23:42:030378デフォルトの名無しさん
2005/07/08(金) 23:42:570379デフォルトの名無しさん
2005/07/08(金) 23:48:21stdata構造体の配列を作成する。
そして生徒一人につき1つ何でもいいからデータを
入れられるようにすればいいようです。
いろいろミスが多くて申し訳ありませんでした
0380デフォルトの名無しさん
2005/07/08(金) 23:52:100381デフォルトの名無しさん
2005/07/08(金) 23:53:54#include <stdio.h>
/* 1 */
struct stdata { int no, char name[11]; int score[5];}
/* 2 */
struct stdata g_data1[10];
int set_data(int index, int no, char *name, int score[4])
{
if( index < 0 || index > 11) return 0;
else
{
struct stdata *p = g_data[index];
p->no = no;
strncopy(p->name, name, 10);
memmove(p->score+1, score, sizeof(int)*4);
return 1;
}
}
/* 3 */
void goukei(struct stdata *astdata)
{
if( astdata != NULL )
{
int i;
astdata->score[0] = 0; /* score[0] に合計点 */
for(i = 0; i < 4; ++i) astdata->score[0] += astdata->score[i];
}
}
0382デフォルトの名無しさん
2005/07/08(金) 23:54:27#include <string.h> ね。
0383デフォルトの名無しさん
2005/07/08(金) 23:55:26使わないほうが良いぞ。
0384デフォルトの名無しさん
2005/07/09(土) 00:01:27#include <string.h>
/* 1 */
struct stdata { int no; char name[11]; int score[5];};
/* 2 */
struct stdata g_data[10];
int set_data(int index, int no, char *name, int score[4])
{
if( index < 0 || index > 11) return 0;
else
{
struct stdata *p = &g_data[index];
size_t len = strlen(name);
p->no = no;
memmve(p->name, name, 10);
p->name[len > 11 ? 11 : len] = '\0';
memmove(p->score+1, score, sizeof(int)*4);
return 1;
}
}
/* 3 */
void goukei(struct stdata *astdata)
{
if( astdata != NULL )
{
int i;
astdata->score[0] = 0; /* score[0] に合計点 */
for(i = 0; i < 4; ++i) astdata->score[0] += astdata->score[i];
}
}
0385デフォルトの名無しさん
2005/07/09(土) 00:02:20memmve()とかいうなぞの関数を使っているので
たぶんそれもコンパイルできないぞ
0386デフォルトの名無しさん
2005/07/09(土) 00:03:51struct stdata *create_stdata(size_t n){return malloc(n * sizeof(struct stdata)); }
0387デフォルトの名無しさん
2005/07/09(土) 00:03:56strncat()はそうでもないので、そっちを使うとよい。
先頭に\0セットしてからstrncat()すれば、望みの結果を得られる。
0388デフォルトの名無しさん
2005/07/09(土) 00:05:40>>381が苦労してるみたいなのでうp
#include <stdio.h>
struct stdata {int no; char name[10]; int point[5]; };
void goukei(struct stdata * astdata) {
int i;
for (i = 0; i < 4; ++i) astdata->point[4] += astdata->point[i];
}
int main(void) {
struct stdata data[10] = {0};
int i, j;
for (i = 0; i < 2; ++i) {
scanf("%d%9s", &data[i].no, data[i].name);
for (j = 0; j < 4; ++j) scanf("%d", &data[i].point[j]) ;
goukei(&data[i]);
}
return 0;
}
0389384
2005/07/09(土) 00:05:48○ if( index < 0 || index > 9) return 0;
× memmove(p->name, name, 10);
○ memmove(p->name, name, len > 10 ? 10 : len);
失礼しました。
0390デフォルトの名無しさん
2005/07/09(土) 00:06:47>>373
ありがとうございます。助かりました。
一晩中考えてたんですが全く分からなくて・・・。
しかし早いですねぇ。
0391デフォルトの名無しさん
2005/07/09(土) 00:10:16[2] 問題文(含コード&リンク):
次のプログラムを実行してブラウザで表示させんですが、ブラウザを開くと
真っ白のページしかでてきません。コンパイラ時点でエラーは無いですι(´Д`υ;)
http://tokyo.cool.ne.jp/k-12/
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C言語
[4] 期限:今日まで(すみません(´Д`;))
[5] その他の制限:本当基礎しか教わってません。
簡単な説明お願いします(´・ω:;.:...
0392デフォルトの名無しさん
2005/07/09(土) 00:14:05ブラウザは自分では実行せず、z.htmlという名前のファイルをカレントディレクトリ
に作ってその中に出力するだけのようだが
そのファイルの中身はどうなってるのかね?空か?
0394デフォルトの名無しさん
2005/07/09(土) 00:15:09int main(void) {
struct stdata * data;
unsigned int n, i, j;
scanf("%u", &n);
data = malloc(sizeof(struct stdata) * n);
for (i = 0; i < n; ++i) {
scanf("%d%9s", &data[i].no, data[i].name);
for (j = 0; j < 4; ++j) scanf("%d", &data[i].point[j]) ;
goukei(&data[i]);
}
free(data);
return 0;
}
>>388 俺もミスってる
× for (i = 0; i < 2; ++i) {
○ for (i = 0; i < 10; ++i) {
0395デフォルトの名無しさん
2005/07/09(土) 00:17:22title要素が閉じていない。
0396デフォルトの名無しさん
2005/07/09(土) 00:19:33× strcat(w, "<title>HP<title>\n");
○ strcat(w, "<title>HP</title>\n");
0397デフォルトの名無しさん
2005/07/09(土) 00:20:05[2] 問題文(含コード&リンク):
#define N 10
int main(void)
{
int aa[N], bb;
bb = sum(aa);
printf("sum=%d\n",bb);
return 0;
}
int sum(int num[N])
{
int n, s=0;
for(n=0;n<N;n++)
s+=num[n];
return s;
}
↑これを修正し、double型の配列変数に格納されている値の平均値を求める関数ave
を作成せよ。またaveもdouble型とする。
[3] 環境
[3.1] OS:UNIx
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:2005年7月11日まで
[5] その他の制限:まだ入門編というところでしょうか
0398デフォルトの名無しさん
2005/07/09(土) 00:21:40氏ね
0399デフォルトの名無しさん
2005/07/09(土) 00:22:16それの何が問題なのか?
0400デフォルトの名無しさん
2005/07/09(土) 00:23:57入門編どころの騒ぎじゃないな
int → double
後は書式指定子
0401デフォルトの名無しさん
2005/07/09(土) 00:25:02>[3.1] OS:UNIx
おちゃめだな
0402デフォルトの名無しさん
2005/07/09(土) 00:25:06int main(void)
{
double array[N], average;
average = ave(array);
printf("sum = %g\n", average);
return 0;
}
double sum(double a[])
{
int i;
double s = 0;
for(i = 0; i < N; i++)
s += num[i];
return s;
}
double ave(double a[])
{
return sum(a) / N;
}
0403391
2005/07/09(土) 00:30:36どうもありがとうございました!!
>>395様>>396様のご指導通りtitle要素を終わらせたら表示できました
本当に早い対処ありがとうございました
0404333
2005/07/09(土) 00:55:05「足し合わせると1000になるような二つの素数の組を全て求めるプログラムをつくる」っていうものなのですが全然わかりません...教えてください。
0405デフォルトの名無しさん
2005/07/09(土) 00:59:57[2] 問題文(含コード&リンク):
あるファイル(seiseki.txt)を読み込んで、各生徒ごと・各科目ごと
それぞれの合計点・平均点・最高点を求めよ。
プログラムに、構造体を用いる事。
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年7月11日まで
[5] その他の制限:
「seiseki.txt」の中身は下記の通りです。
1番左のアルファベットは名前で、次の列から順番に
英語、数学、国語、理科、社会の点数を示しています。
A 70 56 66 45 88
B 66 85 68 55 73
C 55 65 53 67 55
D 85 72 76 58 65
E 92 70 45 73 55
F 56 57 52 62 82
G 72 62 33 85 95
H 46 95 48 72 34
I 83 42 88 92 56
J 68 65 91 82 66
0406デフォルトの名無しさん
2005/07/09(土) 01:51:48#include <stdio.h>
#include <math.h>
#define N 1000
int main()
{
static int buf[N];
int i,j;
for(i = 2; i < sqrt(N); ++i)
{
if( buf[i] ) continue;
for(j = i+i; j < N; j += i) buf[j] = 1;
}
for(i = 2, j = 0; i < N; ++i)
{
if( buf[i] ) continue;
buf[j++] = i;
}
buf[j] = 0;
i = 0;
while( i <= j )
{
if( (buf[i] + buf[j]) == N) printf("%u %u\n", buf[i], buf[j]);
++i; --j;
}
return 0;
}
0407333
2005/07/09(土) 01:58:140408デフォルトの名無しさん
2005/07/09(土) 02:00:390409406
2005/07/09(土) 02:07:56力技だ。
for( i = 0; buf[i]; ++i)
for(j = i; buf[j]; ++j)
if((buf[i]+buf[j])==N) printf("%u %u\n", buf[i], buf[j]);
return 0;
0410406
2005/07/09(土) 02:22:30#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 1000
int cmp_int(const void *a, const void *b){ return *(int*)a - *(int*)b;}
int main()
{
static int buf[N];
int i,j,*p, key, save;
for(i = 2; i < sqrt(N); ++i)
{
if( buf[i] ) continue;
for(j = i+i; j < N; j += i) buf[j] = 1;
}
for(i = 2, j = 0; i < N; ++i)
if( !buf[i] ) buf[j++] = i;
buf[j] = 0; save = N;
for(i = 0; buf[i] < save; ++i)
{
key = N - buf[i];
if(NULL != (p = bsearch(&key,buf, j, sizeof(int), cmp_int)))
{
printf("%d %d\n", buf[i], *p);
save = *p;
}
}
return 0;
}
0411デフォルトの名無しさん
2005/07/09(土) 02:27:06#include <stdio.h>
int is_prime(int n)
{
int i;
if (n < 2)
return 0;
for (i = 2; i < n; i++)
if ((n % i) == 0)
return 0;
return 1;
}
int main(void)
{
int i;
for (i = 2; i < 500; i++) {
if (is_prime(i) && is_prime(1000-i))
printf("%d %d\n", i, 1000-i);
}
return 0;
}
04121/2
2005/07/09(土) 02:48:57#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define BUFMAX 512
#define DELIMITER " "
typedef struct _Person {
char *name;
int total;
}Person;
int line_sum( FILE *fp ) {
char buf[BUFSIZ];
int line = 0;
for ( ; fgets( buf, BUFMAX, fp ); line++ ) { }
if ( strchr( buf, '\n' ) != NULL ) line--; // 改行で終わっていたら
return line;
}
04132/2
2005/07/09(土) 02:50:47int main( int argc, char *argv[] )
{
FILE *fp;
char buf[BUFSIZ];
char *p;
int before_total = 0, i;
int id,no,line; // 一番大きかった人の 番号が id に入る
Person *p_person;
fp = fopen( "seiseki.txt", "r" );
if ( fp == NULL ) {
fprintf( stderr, "file not found" ); return 1;
}
line = line_sum( fp );
p_person = (Person*)calloc( line, sizeof( Person ) );
fseek( fp, 0L, SEEK_SET );
for ( no = 0; no < line; no++ ) {
fgets( buf, BUFMAX, fp );
if ( strchr( buf, '\n' ) != NULL ) *strchr( buf, '\n' ) = '\0';
p_person[no].name = strtok( buf, DELIMITER );
printf( "%s さん :" ,p_person[no].name );
for ( i = 0; (p = strtok( NULL, DELIMITER )) != NULL; i++ ) {
printf( " %s " ,p );
p_person[no].total += atoi( p );
}
04142/2 ... last
2005/07/09(土) 02:51:31if ( p_person[no].total > before_total ) {
before_total = p_person[no].total; // 前回の結果を残す
id = no;
}
}
printf( "\n最高得点は %s さんの %d 点でした" ,p_person[id].name ,p_person[id].total );
fclose( fp );
free( p_person );
return 0;
}
0415412
2005/07/09(土) 02:56:26if ( strchr( buf, '\n' ) != NULL ) line--; // 改行で終わっていたら
ここいらないや。削除しといてください。
struct 使う必要性があまりなかったので、無理に使ってコードが長くなってしまった・・・
すみません。
0416デフォルトの名無しさん
2005/07/09(土) 02:59:39なんでわざわざCでそんなことやらなあかんのじゃ
出題者の発想の貧困の表れか
0417デフォルトの名無しさん
2005/07/09(土) 03:14:08別に数学だろうが三角木馬だろうが何でも良いんじゃ?
0418デフォルトの名無しさん
2005/07/09(土) 03:21:360419デフォルトの名無しさん
2005/07/09(土) 03:25:340420デフォルトの名無しさん
2005/07/09(土) 05:18:44……それなりに面白いと思うんだが。
0421デフォルトの名無しさん
2005/07/09(土) 06:17:010422デフォルトの名無しさん
2005/07/09(土) 09:01:541行1データの入力にしておけばパイプラインを組み合わせて色々できるしね。
0423デフォルトの名無しさん
2005/07/09(土) 09:27:02{
int i;
if (n < 2) return 0;
for (i = 2; i < n; i++)
if ((n % i) == 0) return 0;
return 1;
}
↓
if (n < 2) return 0;
if (n%2==0) return 1;
for (i = 3; i < n/2; i+=2)
if ((n % i) == 0) return 0;
return 1;
0424デフォルトの名無しさん
2005/07/09(土) 09:28:06はぁ?
0425デフォルトの名無しさん
2005/07/09(土) 09:58:09>struct 使う必要性があまりなかったので
>405
>1番左のアルファベットは名前で、次の列から順番に
>英語、数学、国語、理科、社会の点数を示しています。
もれなら
#define NUM_OF_SUB 5
struct _Person {
char name[NAME_LEN];
int sc[NUM_OF_SUB+1]; /* +1は合計の分 */
}
だな
>typedef struct _Person {
>char *name;
>int total;
>}Person;
0426354
2005/07/09(土) 13:06:21>>356
「確実に止まる」は満たしてないですが、「確率1で止まる」ことになるので、
それほど題意を曲げているわけではないですよ。
0427デフォルトの名無しさん
2005/07/09(土) 13:17:390428デフォルトの名無しさん
2005/07/09(土) 14:46:19何回以内に必ず停止する。
ならOKだと思うが、
何回操作しても停止しない可能性がある。
というのはダメだと思う。
さて、次のプログラムは必ず止るといえるか?
while (rand() % 10 == 0)
;
0429デフォルトの名無しさん
2005/07/09(土) 15:27:570430デフォルトの名無しさん
2005/07/09(土) 15:29:200431デフォルトの名無しさん
2005/07/09(土) 16:40:510432デフォルトの名無しさん
2005/07/09(土) 16:52:12一週間くらいは許容範囲だと思うが
0433デフォルトの名無しさん
2005/07/09(土) 17:09:570434デフォルトの名無しさん
2005/07/09(土) 18:15:05[2]期限 7月12日火曜日(午後5時
[3]どうかよろしくおねがいしますorz
会員番号 氏名 性別 生年月日
1 Noriko ITAKURA F 1983 7 25
2 Akemi UTSUNOMIYA F 1990 10 14
3 Hideki KINUGASA M 1987 9 16
4 Tomoko KISAKI F 1975 10 14
5 Takuya UMEMOTO M 1975 10 16
6 Jun-ichi AKAMATSU M 1982 3 16
7 Nobuta NONI M 1988 12 29
8 Shizuka MINOMOTO F 1989 1 9
会員 第一ピリオド 第二ピリオド 第三ピリオド
番号 ゲーム数 ゲーム数 ゲーム数
#1 #2 #3 #4 #5 #1 #2 #3 #4 #5 #1 #2 #3 #4 #5
1 6 3 5 7 9 8 8 5 2 0 3 7 6 5 2
2 1 2 4 7 10 10 10 3 7 10 5 7 7 8 9
3 2 4 2 5 2 1 8 10 3 6 6 7 6 8 5
4 5 8 0 10 0 9 8 9 10 10 5 5 5 3 5
5 1 2 3 4 5 6 7 8 9 10 9 8 7 9 5
6 8 8 4 8 3 6 7 2 8 6 8 9 8 2 0
7 6 6 1 6 6 1 6 7 4 9 1 8 10 5 3
8 7 3 4 7 2 8 9 7 3 2 4 5 10 9 7
上記ファイルmember_data.dat を読み込み会員氏名、生年月日、性別をソート表示するとともに、それらを各自のホームディレクトリ(またはカレントディレクトリにASCII形式で保存するプログラムを作成し、実行しなさい
なお、このプログラムでも構造体struct club_dt に対する構造体変数はグローバルとして宣言しないこと
0435デフォルトの名無しさん
2005/07/09(土) 18:15:57�@ファイル読み込みに関してはload()なる関数を定義し、その内部で実行させること
(fread()関数を用いよ)
�Aメニューを表示し、氏名によるアルファベット順ソートか生年月日による年齢順ソートかを選ばせる、適切な入力がなされるまで繰り返しメニュー表示を繰り返させること
<メニュー例>
MENU
1.Sorting in alphabetical order/2.Sorting in order of age.
Please input number:
アルファベット順ソートに関してはsort_al()なる関数を定義し、その内部でソート実行。表示。保存させる。ただし、ソートは会員の姓に基づき実行し、表示は氏名性別生年月日の順とする。保存時のファイル名は"member_data_al.dat"とすることゲーム成績は保存しなくてよい
<ソート結果、保存ファイル内容例>
Jun-ichi AKAMATSU M 1982 3 16
Noriko ITAKURA F 1983 7 25
Hideki KINUGASA M 1987 9 16
Tomoko KISAKI F 1975 10 14
Shizuka MINOMOTO F 1989 1 9
Nobuta NONI M 1988 12 29
Takuya UMEMOTO M 1975 10 16
Akemi UTSUNOMIYA F 1990 10 14
年齢順ソートに関してはsort_age()なる関数を定義し、その内部でソート実行・表示・保存させる。ただし、ソートは結果が高齢順となるようにし、表示は氏名性別生年月日の順とする。保存時のファイル名は" member_data_age.dat"とすることゲーム成績は保存しなくてよい
<ソート結果、保存ファイル内容例>
Tomoko KISAKI F 1975 10 14
Takuya UMEMOTO M 1975 10 16
Jun-ichi AKAMATSU M 1982 3 16
Noriko ITAKURA F 1983 7 25
Hideki KINUGASA M 1987 9 16
Nobuta NONI M 1988 12 29
Shizuka MINOMOTO F 1989 1 9
Akemi UTSUNOMIYA F 1990 10 14
以上です、おねがいします(;´・ω・`A
0436デフォルトの名無しさん
2005/07/09(土) 18:18:220437デフォルトの名無しさん
2005/07/09(土) 18:30:31それならちょっと飯食った後誰もやって無さそうなら練習がてら考えてみるよ
0438デフォルトの名無しさん
2005/07/09(土) 20:57:24[2]問題文:リストから削除する、関数del_listを作成する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/690.txt
★で囲った部分怪しいと思います。。
どうか修正お願いします_| ̄|○
[3]環境
[3.1]OS:XP
[3.2]コンパイラ:VC++ 6.0
[3.3]言語:C ++
[4]期限:7/10
0439デフォルトの名無しさん
2005/07/09(土) 21:17:52NODE *del_list(NODE deldata)
{
NODE **p;
for (p = &head; *p != NULL; p = &(*p)->next) {
if (strcmp(deldata.name, (*p)->name) == 0) {
NODE *res = *p;
*p = (*p)->next;
return res;
}
}
return NULL;
}
0440デフォルトの名無しさん
2005/07/09(土) 21:37:51>if★(strcmp(deldata.name,head->name)){★//リストの先頭なら
これだと「リストの先頭じゃないなら」になる。
>return ★head;★
return back;
>while(★p != NULL && strcmp(deldata.name,p->name) >= 0★){
... > 0
= があると、pが指すのが取り除くノードの次のノードになってしまう。
>★head->next= p;★
back->next = p->next;
0441デフォルトの名無しさん
2005/07/09(土) 22:41:06[2]問題文:
�@「jrand(j)」という関数を使って{1,2,...,j}の中からn個の数をランダムに取り出し、
配列変数に記憶させ、記憶させた内容を表示させるmainプログラムを書きなさい。
�Aint型配列とその大きさを入力変数として、最大値最小値を計算して返す関数プログラムを書きなさい
�B�Aを使って、�@で作ったプログラムに、配列データの最大値、最小値を計算して表示するプログラムを付け加えなさい。
[3]環境
[3.1]OS:XP
[3.2]コンパイラ:VC++ 6.0
[3.3]言語:C
[4]期限:7/10
どうぞよろしくおねがいします。
0442デフォルトの名無しさん
2005/07/09(土) 22:48:35仕様がよく分からん。nはどうやって与えるのか?
配列は大域変数でいいのかポインタで渡すのか?
0444デフォルトの名無しさん
2005/07/09(土) 23:06:41{1...10}の中から2000個の数をねぇ・・・
0445438
2005/07/09(土) 23:08:4804461/2
2005/07/09(土) 23:11:27#define N 2000
int jrand(int, int*);
int maximum(int *, int);
int minimum(int *, int);
int main(void) {
int i, src[N];
jrand(10, src);
for (i = 0; i < N; i++)
printf("%d\n", src[i]);
putchar('\n');
printf("最大値:%d\n最小値:%d", maximum(src, N), minimum(src, N));
return 0;
}
//エラー時、負を返す
int jrand(int j, int *buf) {
int i;
for (i = 0; i < N; i++)
while ((buf[i] = (random() * N) % (j + 1)) <= 0);
return 0;
}
04472/2
2005/07/09(土) 23:11:56int maximum(int *src, int nums) {
int max = src[0], i;
for (i = 1; i < nums; i++)
if (src[i] > max) max = src[i];
return max;
}
//最小値を返す
int minimum(int *src, int nums) {
int min = src[0], i;
for (i = 1; i < nums; i++)
if (src[i] < min) min = src[i];
return min;
}
作ったがNとJ逆じゃないか?まぁその辺は自分で修正してくれ
0448デフォルトの名無しさん
2005/07/09(土) 23:12:34最大値最小値を計算して返す関数?
けいさんってたしざん?ひきざん?二つをかえすって、いっぺんに二つ返すの?
それは引数のフラグでどちらを返すか判断するの?
0449デフォルトの名無しさん
2005/07/09(土) 23:20:01お礼忘れないようにネ!
0451デフォルトの名無しさん
2005/07/09(土) 23:32:22gccで普通にコンパイル通るんで見落としてたがエラー出たら
コメントをC89準拠にしてくれ
0452デフォルトの名無しさん
2005/07/09(土) 23:39:42#include <stdio.h>
#include <stdlib.h>
int jrand(int j) { return rand() % j + 1; }
void max_and_min(const int * arr, int length, int * pmax, int * pmin)
{
int i;
*pmax = *pmin = arr[0];
for (i = 1; i < length; i++) {
if (*pmax < arr[i]) *pmax = arr[i];
if (*pmin > arr[i]) *pmin = arr[i];
}
}
int main(void)
{
int arr[2000];
int i, length = sizeof(arr)/sizeof(arr[0]);
int max, min;
for (i = 0; i < length; i++) {
arr[i] = jrand(10);
}
max_and_min(arr, length, &max, &min);
printf("最大値:%d, 最小値:%d\n", max, min);
return 0;
}
0453デフォルトの名無しさん
2005/07/09(土) 23:40:500454デフォルトの名無しさん
2005/07/10(日) 00:55:05[2] 問題:
じぶんで書いたコード:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/691.txt
課題内容はこちら:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/692.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5.1
[3.3] 言語:C
[4] 期限:日曜PM5:00まで
[5] 制限:配列の内容はポインタで示さなければならないらしいですが
自分で書いたコードがどうしても変なのに表示されます
. ('A`#) イライラ
_| ̄ ̄||)_
/旦|――||// /|
| ̄ ̄ ̄ ̄ ̄| ̄| . |
|_____|三|/
3つめのedge_processingの関数がたぶんおかしいのだと思いますが
具体的にどこが間違ってるのかわかりません
分かる方いらしたら教えてください
0455デフォルトの名無しさん
2005/07/10(日) 01:21:42素直にncol,nrowを使おう。12x12確保してるんだから、main内ではそれを生かすこと。
それと、エッジ作るところでは外枠が上下左右1列ずつなんだから、
確保された目盛りは12x12のままだが、10x10の処理になる。
edge_processing(11,11, &m1[1][1], &m2[1][1]);
↓
edge_processing(nrow,ncol, &m1[0][0], &m2[0][0]);
void edge_processing(int nrow, int ncol, int *m1_p, int *m2_p)
{
int i,j;
for(i=0; i<nrow; i++){
for(j=0; j<ncol; j++){
if (i > 0 && i < nrow - 1 && j > 0 && j < ncol - 1) /* 追加:応急処置 */
*m2_p=*(m1_p + (i-1) * ncol + j)+*(m1_p + (i+1) * ncol + j)+*(m1_p + i * ncol + (j-1))+*(m1_p + i * ncol + (j+1))-4**(m1_p + i * ncol + j);
m1_p++; /* 追加 */
m2_p++;
}
}
}
0456デフォルトの名無しさん
2005/07/10(日) 01:23:030457デフォルトの名無しさん
2005/07/10(日) 02:02:32なるほど('∀`)!さっきまでfor文のiとjで回数を制限しようとしてました
if文を挿入すればよかったんですね
本当にありがとうございます
このご恩は一生忘れないでござる
0458デフォルトの名無しさん
2005/07/10(日) 02:28:21古い話題で申し訳ないが、整数が32bitだとすると
n*2^32
ってのはどうかな?
0459初心者
2005/07/10(日) 10:36:230460デフォルトの名無しさん
2005/07/10(日) 10:49:44日本語の勉強は他板でどうぞ。
C/C++の宿題なら>>1をよく読んでから改めてどうぞ。
0461初心者
2005/07/10(日) 12:03:06[1] 数値を10回連続して、結果を昇順で並べるプログラムってどんな感じにできますか?
[2] win2000 VC++6.0
言語:C/C++/どちらでも可
[3] 期限:2005/7/10
0462デフォルトの名無しさん
2005/07/10(日) 12:11:360463デフォルトの名無しさん
2005/07/10(日) 12:12:38テンプレのコピペもできないのかよ・・・
しかも10回もソートすんの?しかも連続で?
for (i = 0; i < 10; i ++) qsort( ...
謎多き [1] 授業単元 だ・・・
0464!459
2005/07/10(日) 13:02:17[1] 授業単元: プログラミングA
[2] 問題文(含コード&リンク):
数値を10回入力し、昇順でソートして表示するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): VC6
[3.3] 言語:C/C++/どちらでも可
[4] 期限:2005年7月10日18:00まで
[5] その他の制限:qsortは禁止。
のように書け!!
0465デフォルトの名無しさん
2005/07/10(日) 13:13:41ttp://www1.cts.ne.jp/~clab/Contents/Sortindex.html
0466デフォルトの名無しさん
2005/07/10(日) 15:54:340467デフォルトの名無しさん
2005/07/10(日) 15:57:17[2] 問題文(含コード&リンク):
意味の通じる日本語を書きなさい。
[3] 環境
[3.1] OS:2ch
[3.2] コンパイラ(バージョン): キーボード
[3.3] 言語:日本語
[4] 期限:すぐとりかかること
[5] その他の制限:期間はずうっと。
0468デフォルトの名無しさん
2005/07/10(日) 16:07:24俺もお前も読み書きできるんだからそれで十分じゃね?
0469デフォルトの名無しさん
2005/07/10(日) 16:08:120470デフォルトの名無しさん
2005/07/10(日) 16:22:35#define MAX_VALUE 0x7fffffff
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int nums[256], ans[256], tmp1, tmp2, cnt = 0;
for(int i = 0; i < argc - 1; i++){
nums[i] = atoi(argv[i + 1]);
printf("%d ", nums[i]);
}
puts("");
for(int i = 0; i < argc - 1; i++){
tmp1 = MAX_VALUE;
for(int j = 0; j < argc - 1; j++){
if(tmp1 > nums[j]){
tmp1 = nums[j];
tmp2 = j;
}
}
ans[cnt++] = tmp1;
nums[tmp2] = MAX_VALUE;
}
for(int i = 0; i < argc - 1; i++){
printf("%d ", ans[i]);
}
}
0471デフォルトの名無しさん
2005/07/10(日) 16:32:520472デフォルトの名無しさん
2005/07/10(日) 16:44:44i番目までソートが終わっているのなら、jの初期値はi+1で良いのでは?
0473デフォルトの名無しさん
2005/07/10(日) 18:20:14[2] 問題文(含コード&リンク):
2つの自然数を入力して
"*"演算子を使わずに2数の積を求めよ
負の数にも対応すること
ただし、次のような符号反転のための"-"演算子も使用禁止
if (a < 0){
-a;
}
引き算の"-"は使用可
[3] 環境
[3.1] OS:windows XP
[3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:2005年7月15日まで
[5] その他の制限:できるだけ簡単にお願いします
単位取れるかの瀬戸際なのでお願いします。
0474デフォルトの名無しさん
2005/07/10(日) 18:29:020475デフォルトの名無しさん
2005/07/10(日) 18:33:05int func(int a, int b)
{
int ret = 0;
int c;
if (b > 0) {
for (c = 0; c < b; c++)
ret += a;
} else {
for (c = 0; c > b; c--)
ret -= a;
}
return ret;
}
int main()
{
int a, b, ret;
scanf("%d %d", &a, &b);
printf("a * b = %d \n", func(a, b));
}
0476デフォルトの名無しさん
2005/07/10(日) 18:34:08すいません、負の数にも対応すると追加で点数貰えるので書いたんですが
自然数ってところを変更するの忘れてました
整数でお願いします
0477デフォルトの名無しさん
2005/07/10(日) 18:38:070478デフォルトの名無しさん
2005/07/10(日) 18:40:38#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
int x, y, x2, y2, Sum = 0;
int isX_Minus = 0, isY_Minus = 0;
scanf("%d %d", &x, &y);
x2 = abs(x);
if (x < 0)
{
isX_Minus = 1;
}
y2 = abs(y);
if (y < 0)
{
isY_Minus = 1;
}
for (i = 0; i < y2; i++)
Sum += x2;
printf("%d * %d = %d\n", x, y, (isX_Minus ^ isY_Minus) ? (0 - Sum) : Sum);
return 0;
}
0479デフォルトの名無しさん
2005/07/10(日) 18:43:04#include<stdio.h>
int mul(int a,int b){
int r=0;
while(a){
if(a&1)r += b;
b <<= 1;
a =(unsigned)a >> 1;
}
return r;
}
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d",mul(a,b));
}
0480デフォルトの名無しさん
2005/07/10(日) 18:43:204月からはじめてるとして…10回程度講義してるとは思うんだが
どうゆう講義だったのか気になる
0481デフォルトの名無しさん
2005/07/10(日) 19:00:181学期でボーヨーせんせの授業ってどこまで進むん?
0482デフォルトの名無しさん
2005/07/10(日) 19:06:56みなさん、ありがとうございます
まだ習っていない予約語などがありますが、なんとかできそうです
>>480
はい、10回程講義は受けています
毎回最初に1つぐらい関数の説明を受けてそれから1時間半はひたすら練習問題を解かされる感じです
まだ、if else文とelse if文とfor文とwhile文とフローチャートしか習ってません
0483デフォルトの名無しさん
2005/07/10(日) 19:27:12まぁ、授業だけの問題じゃないと思うが。
0484デフォルトの名無しさん
2005/07/10(日) 20:20:39アホか。
久しぶりに2chに来たが、
この板、厨房率高くなっていないか?
0485初心者
2005/07/10(日) 20:58:21[1] 授業単元: プログラミングA
[2] 問題文(含コード&リンク):
数値を10回入力し、昇順でソートして表示するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): VC6
[3.3] 言語:C/C++/どちらでも可
[4] 期限:2005年7月10日18:00まで
[5] その他の制限:qsortは禁止。
なるほどこういう風に書けばいいんですね!
0486デフォルトの名無しさん
2005/07/10(日) 21:04:130487デフォルトの名無しさん
2005/07/10(日) 21:05:16#include <stdio.h>
#include <stdlib.h>
int main()
{
char buf[256];
int a[10], i,j, tmp;
for(i = 0; i < 10; ++i)
{
a[i] = atoi(fgets(buf, sizeof(buf), stdin));
for(j = i; j > 0; --j)
{
if( a[j] < a[j-1] ){ tmp=a[j];a[j]=a[j-1];a[j-1]=tmp;}
else break;
}
}
for(i = 0; i < 10; ++i) printf("%d ", a[i]);
putchar('\n');
return 0;
}
0488デフォルトの名無しさん
2005/07/10(日) 21:06:33超既出 ソート問題以後禁止
0489デフォルトの名無しさん
2005/07/10(日) 21:10:59という課題が出ました。
解いてください。
0490デフォルトの名無しさん
2005/07/10(日) 21:13:21非再帰ソートとかマージソート(リスト用)とか。
http://www.context.co.jp/~cond/books/algo/
このへん。
0491デフォルトの名無しさん
2005/07/10(日) 21:13:230492初心者
2005/07/10(日) 21:14:040493初心者
2005/07/10(日) 21:16:020494デフォルトの名無しさん
2005/07/10(日) 21:16:02#include <iostream>
#include <algorithm>
#include <iterator>
int main()
{
int a[10];
for(int i = 0; i < 10; ++i) std::cin >> a[i];
std::sort(a,a+10);
std::copy(a,a+10,std::ostream_iterator<int>(std::cout," "));
return 0;
}
0495初心者
2005/07/10(日) 21:19:090496デフォルトの名無しさん
2005/07/10(日) 21:49:33cout << " xを入力してください:";
cin >> x;
とまぁ普通のxの読み込みなんですが、もしxを入力する時に
enterボタンだけ押したらx=2.3となるような文を作りたいんです。
この場合どうしたらいいんでしょうか?
教えてください。よろしくお願いします。
0497デフォルトの名無しさん
2005/07/10(日) 21:58:10こんなんでいいだろ
#include <cstdlib>
#include <cctype>
#include <iostream>
#include <string>
std::string str;
std::getline(std::cin, str);
double x = std::isdigit(str[0]) || str[0] == '.' ? std::atof(str.c_str()) : 2.3;
0498496
2005/07/10(日) 22:20:21ありがとうございます。
はっきり言って何かいてあるのか分かりませんが、
とりあえずコピペさせていただきます。
0499デフォルトの名無しさん
2005/07/10(日) 22:43:58元のcin >> x;を497の下3行に置き換えればいい。
0500デフォルトの名無しさん
2005/07/10(日) 23:07:35[2] 問題文(含コード&リンク):
(1)九九の表を作ってテキストファイルに保存せよ。
(2)(1)のテキストファイルを読み込んで最大最小を求めよ。
(3)少数点を含む任意の10個の数値をあらかじめテキストファイルに保存し、
それを読み込んでまず最大最小を求めよ。次に小さい順に並べよ。最後に
それらの結果をテキストファイルに保存せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):ボーランド
[3.3] 言語:C
[4] 期限:2005年7月10日4:00まで
(1)の表を作るところまでは出来たのですが以降よく分かりませんでした。
これからの学習の参考にしたいのでよろしくお願いします。
0501デフォルトの名無しさん
2005/07/10(日) 23:14:060502デフォルトの名無しさん
2005/07/10(日) 23:26:56int kuku(char *foname)
{
int i, j;
FILE *fo;
if((fo=fopen(FILENAME, "wb"))==NULL)return 0;
for(i=1;i<=9;i++){
if(i==1){
fprintf(fo, "+++ 1 2 3 4 5 6 7 8 9\r\n");
}
fprintf(fo, "%3d", i);
for(j=1;j<=9;j++){
fprintf(fo, "%3d", i*j);
}
fprintf(fo, "\r\n");
}
fclose(fo);
return 1;
}
ここまで作っておいて模範解答教授にもらえよと思った。
>500は期限とか嘘の希ガス
0503デフォルトの名無しさん
2005/07/10(日) 23:30:300504デフォルトの名無しさん
2005/07/10(日) 23:57:530505500
2005/07/11(月) 00:14:05int main(void)
{
printf(" 1 2 3 4 5 6 7 8 9\n");
printf("1 1 2 3 4 5 6 7 8 9\n");
printf("2 2 4 6 8 10 12 14 16 18\n");
printf("3 3 6 9 12 15 18 21 24 27\n");
printf("4 4 8 12 16 20 24 28 32 36\n");
printf("5 5 10 15 20 25 30 35 40 45\n");
printf("6 6 12 18 24 30 36 42 48 54\n");
printf("7 7 14 21 28 35 42 49 56 63\n");
printf("8 8 16 24 32 40 48 56 64 72\n");
printf("9 9 18 27 36 45 54 63 72 81\n");
return 0;
}
でDos窓に表示させすようにしました。参考書のファイルの入出力のところ読んですが
・・・・Dos窓に表示された結果をテキストファイルにするってのが分からなくて詰まって
しまいました。
0506デフォルトの名無しさん
2005/07/11(月) 00:17:190507デフォルトの名無しさん
2005/07/11(月) 00:17:58ま、こういうやつがいるからIDが必要って言う話になるんだろうな。
0508デフォルトの名無しさん
2005/07/11(月) 00:20:34ってことなんだろうな。
そうでもなければ全部手作業でできそうだし。
とりあえずfopen、fprintf使えばできるっしょ。
googleで調べてみることだな。
0509デフォルトの名無しさん
2005/07/11(月) 00:46:52[2] 問題文(含コード&リンク):
簡易的なスケジュール表示を行うプログラムを、次の仕様に基づいて作成せよ。
・ この説明資料の次の章(スケジュール管理ファイルの書式)で例1、例2に示すような、2種類のファイル(定期的スケジュールと期限付き予定リスト)をあらかじめ用意し、実行時にプログラムで読み込むこと。
・ メニュー形式により、
1、今日のスケジュール表示(全ての期限付き予定リストの表示を含む)
2、全ての定期的な予定一覧の表示
3、全ての期限付き予定リストの表示、を繰り返し選択して実行できるようにすること。
但し、今日の年月日や曜日を取得する関数は、この説明資料の付録に示すプログラムを使用すればよい。
・ 期限付き予定リストの表示では、プログラム実行時の日付情報を取得して、期限までの日数を付与して表示すること。
但し、期限日までの日数は当日を0として計算する。また、既に経過しているものは「期限超過」の旨だけを表示し、期限までの日数が30日を越えているものは月数(何ヵ月以上か)だけを表示すればよい。
[3] 環境
[3.1] OS:Linuxエミュ
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:2005年7月11日まで
[5] その他の制限:ファイル入出力
付録については手元にあるので問題ないです
スケジュールはテキストファイルとして
定期的スケジュール管理ファイルの書式は「曜日(日曜から土曜を0〜6に対応) 開始時限 終了時限 用件」
期限月予定リストは「年号 月 日 予定」
の形の行を複数の行にわたって書いておくだけのものです
0510初心者
2005/07/11(月) 00:56:21どういうことをしてるか教えていただきませんでしょうか?
本当にすみません。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char buf[256];/**/
int a[10]/**/, i,/**/j,/**/ tmp; /**/
for(i = 0; i < 10; ++i) /**/
{
a[i] = atoi(fgets(buf, sizeof(buf), stdin));
for(j = i; j > 0; --j) /**/
{
if( a[j] < a[j-1] )/**/
{
tmp=a[j];a[j]=a[j-1];a[j-1]=tmp;/**/
}
else break;
}
}
for(i = 0; i < 10; ++i)
printf("%d ", a[i]);
putchar('\n'); /**/
return 0;
}
0511デフォルトの名無しさん
2005/07/11(月) 01:04:44結構アホ丸出しなコメント
#include <stdio.h>
#include <stdlib.h>
int main()
{
char buf[256];/*入力全体を受け取る領域を確保*/
int a[10]/*数値の領域を確保*/, i/*ループカウンタ*/, j/*ループカウンタ*/, tmp/*テンポラリ変数*/;
for(i = 0; i < 10; ++i) /*10個の数値入力を受け取るループ*/
{
a[i] = atoi(fgets(buf, sizeof(buf), stdin));
for(j = i; j > 0; --j) /*新たな入力を適切な位置に格納*/
{
if( a[j] < a[j-1] )/*もしa[j]<a[j-1]ならば*/
{
tmp=a[j];a[j]=a[j-1];a[j-1]=tmp;/*a[j]とa[j-1]とを入れ替える*/
}
else break;
}
}
for(i = 0; i < 10; ++i)
printf("%d ", a[i]);
putchar('\n'); /*最後に改行*/
return 0;
}
0512デフォルトの名無しさん
2005/07/11(月) 01:10:14>この説明資料の次の章(スケジュール管理ファイルの書式)で
>例1、例2に示すような、2種類のファイル(定期的スケジュールと期限付き予定リスト)
>をあらかじめ用意
の例の部分を詳しく。
というか、この部分が分からないとなんともしようがない。
0513初心者
2005/07/11(月) 01:12:310514509
2005/07/11(月) 01:29:032 1 4 プログラミング
1カラム目:曜日の番号(日曜を0として日曜日からの日数。0〜6)
2カラム目:用件の開始時限
3カラム目:用件の終了時限
4カラム目:用件の名称
期限付き予定リスト管理ファイルの書式
2005 7 11 課題1締め切り
1カラム目:予定イベントの実施日または期限日の年
2カラム目:予定イベントの実施日または期限日の月
3カラム目:予定イベントの実施日または期限日の日
4カラム目:予定イベントの名称
です。m(_ _)m
0515デフォルトの名無しさん
2005/07/11(月) 02:34:30[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/693.txt
[3] 環境
[3.1] mac
[3.2] gcc
[3.3] C
[4] 期限:火曜日まで
[5] 特になし
よろしくお願いします
0516デフォルトの名無しさん
2005/07/11(月) 04:02:01[2] 問題文(含コード&リンク):
長いのでろだにあげました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/694.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):VC++
[3.3] 言語:C/C++どちらでも。
[4] 期限:05年7月13日まで
[5] その他の制限:問題文中に記載
どうか宜しくお願いします。
0517デフォルトの名無しさん
2005/07/11(月) 06:48:59Linuxエミュ?
0518デフォルトの名無しさん
2005/07/11(月) 07:28:28/* �@ */
void ReverseTree(struct BTREE *ptr)
{
struct BTREE *tmp;
if (ptr == NULL) return;
tmp = ptr->left; ptr->left = ptr->right; ptr->right = tmp;
ReverseTree(ptr->left);
ReverseTree(ptr->right);
}
/* �A (ごく一般的なバージョン) */
int ExistTest(struct BTREE *ptr, int searchdata)
{
if (ptr == NULL) return 0;
if (searchdata == ptr->data) return 1;
if (searchdata < ptr->data) return ExistTest(ptr->left, searchdata);
return ExistTest(ptr->right, searchdata);
}
/* �A (�@が使用されるとツリーが逆順になるので、それも考慮したバージョン) */
int ExistTest(struct BTREE *ptr, int searchdata)
{
if (ptr == NULL) return 0;
if (searchdata == ptr->data) return 1;
if (ExistTest(ptr->left, searchdata)) return 1;
return ExistTest(ptr->right, searchdata);
}
0521デフォルトの名無しさん
2005/07/11(月) 09:18:21[2] 問題文(含コード&リンク):
1+2=3
(1/2)+(3/4)=(5/4)
Press any key to continue
と開発環境の疑似コンソール画面にだすようにしました。
|==1==|の部分を記述しなさい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):Visual C++
[3.3] 言語:C
[4] 期限:なるべく早いうちにお願いします。
問題文は以下にあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/695.txt
0522デフォルトの名無しさん
2005/07/11(月) 10:52:03[1] 授業単元: プログラミング演習1
[2] 問題文(含コード&リンク): 下記のように定義される式の解析を行うプログラムを作成せよ。
式は標準入力、あるいはファイルからリダイレクトによって読み込まれるものとする。
式の定義
式 := (演算子 式 式) | 整数
演算子 := +|−|*| /
整数 := [0-9]+
例えば、(+(*4 5)
(- 0 12)
ヒント:演算子用と被演算子用に別々のスタックを用意して、式を読みながら、
演算子と式を評価した値を適宜スタックにpush,popすることで、式全体を評価する事ができます。
『(』の次は演算子がくること、『)』を読んだら部分式が評価できる事に注目してください。
[3] 環境
[3.1] OS:Windows/Linux/等々 :Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:できるだけ早くお願いします。。。
[5] その他の制限:一番初めから、構造体まで習ってます。
期限が迫ってるのでよろしくお願いします。
コメントもつけてもらいたいです。
0523デフォルトの名無しさん
2005/07/11(月) 11:10:00[1] 授業単元: プログラミングとその応用�T
[2] 問題文(含コード&リンク): 「エラトステネスのふるい」のアルゴリズムを用いて、n以下の素数を求めるプログラムを作成せよ。
1.S={2.3.…n}という整数の集合を考える。
2.Sが空集合で無い限り、以下の(1)〜(3)を繰り返す。
(1) mをSの要素の最小値とする。このときmは素数である。
(2)Am = {k|k =am,k∈S ,a∈Z}とする。
(3)SからAmの要素を全て取り除いて、残りの集合をあらためてSとする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C/C++/どちらでも可 のいずれか:c
[4] 期限:早めに
[5] その他の制限:初級の授業を一通り終わったあたりです。
0524デフォルトの名無しさん
2005/07/11(月) 11:15:06そりゃ期限じゃなくて希望だろ。
何日の何時何分までちゃんと定義しろよって思う。
0525デフォルトの名無しさん
2005/07/11(月) 11:35:10まったく同じのをこのスレか前スレで見た
0526デフォルトの名無しさん
2005/07/11(月) 11:58:48[1] 授業単元:情報理論
[2] 問題文(含コード&リンク):問題文は下のでお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/696.txt
4つのプログラムを作る、ということです。
なお(2)はハフマン符号で符号化するプログラムにしたいです。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):Borland C++ Compiler5.5
[3.3] 言語:C/C++/どちらでも可
[4] 期限:2005年7月15日23:59まで
[5] その他の制限:基本は分かっていますがまだまだ初心者です。
0527526
2005/07/11(月) 12:09:470528デフォルトの名無しさん
2005/07/11(月) 12:28:46[2] 問題文(含コード&リンク):
終端記号 END == -1 をもつ、整数型配列のデータを、逆順に並べ替える関数
void reverse(int data[])を作れ。
この関数は,data がたとえば、
1 2 3 4 5 6 7 8 9 -1
という配列なら
9 8 7 6 5 4 3 2 1 -1
と変換する。
[3] 環境
[3.1] OS:VineLinux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年7月11日24:00まで
0529デフォルトの名無しさん
2005/07/11(月) 12:30:05お前だけ
0530デフォルトの名無しさん
2005/07/11(月) 12:30:32[2] 問題文(含コード&リンク):
S(n) = 1+2+3+...+n
T(n) = S(1)+S(2)+S(3)+...+S(n)
U(n) = T(1)+T(2)+T(3)+...+T(n)
V(n) = U(1)+U(2)+U(3)+...+U(n)
W(n) = V(1)+V(2)+V(3)+...+V(n)
とする.
W(n) の値を返す関数を作り,W(100) の値を求めよ.
[3] 環境
[3.1] OS:VineLinux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年7月11日24:00まで
すいませんがお願いします。
0531347
2005/07/11(月) 12:37:31>>367さんのサーバのプログラムをコンパイルすると
while (p = strpbrk(pclient->buff, "\r\n")) { のところで
57: warning: suggest parentheses around assignment used as truth value
for (q = pclient->buff; *q++ = *++p; ) のところで
63: warning: suggest parentheses around assignment used as truth value
というエラーがでます。どなたか修正を教えていただけませんか?お願いいたします。
0532デフォルトの名無しさん
2005/07/11(月) 13:01:38#define END (-1)
void reverse(int data[]) {
void aux(int * p) {
int a = *p;
if (*p != END) {
aux(p + 1);
*data++ = a;
}
}
aux(data);
}
0533デフォルトの名無しさん
2005/07/11(月) 13:05:02#include <stdio.h>
int s(int n) {return n == 1 ? 1 : s(n - 1) + n;}
int t(int n) {return n == 1 ? 1 : t(n - 1) + s(n);}
int u(int n) {return n == 1 ? 1 : u(n - 1) + t(n);}
int v(int n) {return n == 1 ? 1 : v(n - 1) + u(n);}
int w(int n) {return n == 1 ? 1 : w(n - 1) + v(n);}
int main()
{
printf("%d, %d\n", 1, w(1));
printf("%d, %d\n", 2, w(2));
printf("%d, %d\n", 3, w(3));
printf("%d, %d\n", 10, w(10));
printf("%d, %d\n", 100, w(100));
return 0;
}
0534デフォルトの名無しさん
2005/07/11(月) 14:06:06条件を書くところが代入だけれど、それでいいの?って警告だね。
それぞれ
while ((p = strpbrk(pclient->buff, "\r\n")) != NULL) {
for (q = pclient->buff; (*q++ = *++p) != NULL; )
で回避できるはず。
0535532
2005/07/11(月) 14:19:56ごめん、ちょっと変える。
#include <stdio.h>
#define END (-1)
void reverse(int data[]) {
void aux(int idx) {
if (data[idx] != END) {
int tmp = data[idx];
aux(idx + 1);
*data++ = tmp;
}
}
aux(0);
}
int main(void)
{
int data[] = {1,2,3,4,5,6,7,8,9,-1};
int i, len = sizeof(data)/sizeof(data[0]);
void print(void) {
for (i = 0; i < len; i++) printf(" %d", data[i]);
puts("");
}
print();
reverse(data);
print();
return 0;
}
0536347
2005/07/11(月) 14:40:45レスありがとうございます。
コンパイルしてみたら、
for (q = pclient->buff; (*q++ = *++p) != NULL; )
のところで
63: warning: comparison between pointer and integer
というエラーが出てしまいましたが、どうすればよいのでしょうか?
教えてください。お願いいたします。
0537デフォルトの名無しさん
2005/07/11(月) 14:44:46○ != '\0'
△ /* 何も書かない */
0538デフォルトの名無しさん
2005/07/11(月) 14:47:08NULLじゃなくて、0か'\0'なんじゃないの?
0539デフォルトの名無しさん
2005/07/11(月) 15:24:45さすが理系スレ、頭が硬い★
わかんねえからって言い訳すんなよ(笑)
まぁアホな俺はわからないんだが。
0540デフォルトの名無しさん
2005/07/11(月) 15:42:290541デフォルトの名無しさん
2005/07/11(月) 15:43:34unsigned
W(unsigned n)
{
unsigned e[] = {
n, n+1, n+2, n+3, n+4, n+5
};
static const int d[] = {
2, 2, 2, 2, 3, 3, 5, -1
};
for (int i = 0, v = d[i]; 0 < v; v = d[++i]) {
for (int j = 0;; ++j) {
if ((e[j] % v) == 0) {
e[j] /= v;
break;
}
}
}
unsigned r = e[0];
for (unsigned i = 1; i < 6; ++i)
r *= e[i];
return r;
}
0543347
2005/07/11(月) 15:51:20>>367さんのプログラムを実行してみましたが、サーバからのメッセージが
クライアントに届かないのですが、どうすればよいのでしょうか?教えてください。
お願いします。
0544デフォルトの名無しさん
2005/07/11(月) 15:57:100除算とかチェックしてないけど
#include <stdio.h>
#include <stdlib.h>
int expr() {
char s[10]; int res;
if (scanf(" ( %1[+-*/]", s) == 1) {
res = expr(fp);
# define CASE(op) s[0] == #op[0] ? res op expr(fp)
res = CASE(+) : CASE(-) : CASE(*) : CASE(/) : (exit(1),1);
if (scanf("%1[)]", s) != 1) exit(2);
} else if (scanf("%d", &res) == 1) {
} else exit(3);
return res;
}
int main(void)
{
printf("%d\n", expr());
return 0;
}
0545デフォルトの名無しさん
2005/07/11(月) 16:04:29res = expr(fp);
# define CASE(op) s[0] == #op[0] ? res op expr(fp)
を
res = expr();
# define CASE(op) s[0] == #op[0] ? res op expr()
に変えてくれ
0546デフォルトの名無しさん
2005/07/11(月) 16:12:47>>24の前半。他にもあったかも。
0547544
2005/07/11(月) 16:19:13○ scanf(" %1[)]", s)
× scanf("%1[)]", s)
0548デフォルトの名無しさん
2005/07/11(月) 16:19:32そのデータを全て表示させるにはどうすれば良いでしょうか?
0549デフォルトの名無しさん
2005/07/11(月) 16:22:00つ>>1
0550522
2005/07/11(月) 16:24:53ありがとうございます!
でもなんかエラーぽいんですけど。。。
7-1.c: In function `expr':
7-1.c:7: `fp' undeclared (first use in this function)
7-1.c:7: (Each undeclared identifier is reported only once
7-1.c:7: for each function it appears in.)
って出てしまいます。
0551デフォルトの名無しさん
2005/07/11(月) 16:41:02サーバーは
$ server 12345
みたいに起動する
クライアントは
$ client 127.0.0.1 12345
みたいに起動する
・サーバとクライアントのポートは何でも良いが、あわせること
・クライアントで指定するIPアドレスは、サーバが実行されているマシンのIPアドレスを指定すること。
同一マシンの場合はループバックアドレス(127.0.0.1)でよい
ちゃんとそうやってるか?
0552543
2005/07/11(月) 16:50:53その通りにやってます。文字入力しても無反応です。
クライアント→サーバにはちゃんとメッセージ届いてます。
0553デフォルトの名無しさん
2005/07/11(月) 17:05:22【質問テンプレ】
[1] 授業単元:プログラミング入門
[2] 問題文(含コード&リンク):ジョセファスの問題を解いて、実行すると次のようになるプログラムを作成せよ。
%./josephus
ジョセファスの問題を解きます
石の個数は? 7
何個ごと? 4
4→1→6→5→7→3→2
最後に残るのは2番の石です
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:今日の日付が変わるまで。。。
[5] その他の制限:ごく初歩的なところまでの知識でお願いします。
期限がマジヤヴァいのでよろしくお願いします!
0554デフォルトの名無しさん
2005/07/11(月) 17:14:02ジョセファスの問題の解放を提示せよ。
#あれか、継子立てだな。
0555554
2005/07/11(月) 17:19:18方針としては、石の個数の配列を用意して0クリアして順番に番号でも振っていけば。
0556553
2005/07/11(月) 17:23:161番からn番までの石を円に並べる。まず1番の石から数えてm番目の石を取り除く。
すると石の数が1つ減る。続いて隣の石から数えてm番目の石を取り除く。
このような操作を繰り返すと最後に残る石は何番の石か。
プログラムではn、mを入力し、取り除かれる石の番号をすべて出力したのち、
最後に残る石の番号を表示するものとする。なお、nの上限は適宜定めて良い。
0557523
2005/07/11(月) 17:34:25エラトステネスで、もし素数を求める範囲をnとして、
scanfでnを入力させたかったら、
24の前半をどうやったらいいんでしょうか。。。
1001のところにnとか入れれるんですか?
まぁ入れれたとしてもよくわからないんですが。
0558デフォルトの名無しさん
2005/07/11(月) 17:43:41番号である必要はないね。只のフラグで充分。
>>553
細かい仕様の違いは自分で吸収するよろし。
#include <stdio.h>
#include <stdlib.h>
void josephus(int nOfStones, int interval)
{
char * stones = calloc(nOfStones + 1, 1);
if (stones == NULL) {return;}
for (int ic = 0; ic < nOfStones; ++ic) {stones[ic] = 'o';}
int index = -1;
for (int ic = 0; ic < nOfStones; ++ic) {
for (int sc = 0; sc < interval; ++sc) {
while (stones[index = ++index % nOfStones] != 'o') {}
}
stones[index] = '-';
printf("%s:%d\r", stones, index + 1);
}
free(stones);
}
int main(int argc, char **argv)
{
if (argc < 3) {
fprintf(stderr, "Usage:%s <個数> <何個おき>\n", argv[0]);
exit(EXIT_FAILURE);
}
josephus(atoi(argv[1]), atoi(argv[2]));
return 0;
}
0559558
2005/07/11(月) 17:45:12で結果が表示される。
途中経過を見るには
./josephus 7 4|tr '\r' '\n'
0560デフォルトの名無しさん
2005/07/11(月) 17:52:10>文字入力しても無反応です。
>クライアント→サーバにはちゃんとメッセージ届いてます。
1) 「文字入力」するのはもちろんクライアントで
2) クライアント→サーバにはちゃんと入力したテキストが届いており(サーバ側にメッセージが出力されており)
3) しかしクライアント側にはメッセージが戻って来ていない
ということかな?
よくわからんな....
Linuxは詳しくないのでなんとも言いがたいが、パケットをキャプチャしてみてはどうだろうか。
tcpdumpやsnifferのようなプログラムは使えないの?
0561デフォルトの名無しさん
2005/07/11(月) 17:58:15そうそう、
>>367のクライアントは完全に汎用で、echoクライアントやHTTPクライアント等にもなるから、
適当なサーバに繋いで確認してみてはどうか。
問題を切り分けるために。
基本的に、サーバ側のコードを見てもらえば分かるが、サーバ側にメッセージが表示されるときは
クライアントに同じ内容で送信している(同じ内容を端末とソケットにwrite()している)
んで、write()が成功していれば送信されているはず、なんだが……
0562543
2005/07/11(月) 18:00:17client 127.0.0.1 2000
とやるとちゃんとつながったと表示されます。
サーバが1人、クライアントが2人いるとすると、
クライアントAが文字入力→サーバとクライアントBに表示される
クライアントBが文字入力→サーバとクライアントAに表示される
サーバが文字入力→すべて反応なし
条件に、サーバからのメッセージはすべてのクライアントに送るとあるので、
どうしていいかわからないのですが・・・。
0563デフォルトの名無しさん
2005/07/11(月) 18:06:33は?もしかしてサーバで文字入力できないことを言っていたのか?
それは、「仕様」だ。
0564543
2005/07/11(月) 18:12:31>>347の動作の条件に
・サーバ、クライアントともにメッセージの入力・送信・受信表示ができるようにする。
・サーバから入力されたメッセージはすべてのクライアントに送信すること。
と書いたので、出来ると思ってました・・・。
0565デフォルトの名無しさん
2005/07/11(月) 18:15:54ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/699.txt
0566デフォルトの名無しさん
2005/07/11(月) 18:19:32あ、そういうことか。じゃあ、俺の仕様見落としだな。気が向いたら直すよ(w
ちなみに、クライアントA→サーバ→クライアントBにしか行かないってのは、ホント?
ちゃんとクライアントA、クライアントBの両方に流れると思うんだが(そういう風に作ってある)
0567543
2005/07/11(月) 18:34:19クライアントからの入力は、自分も含めてすべてのサーバ・クライアントにちゃんと届いてます。
恐縮なんですが、QUITと入力したら相手にQUITを送信してソケットを閉じる機能も
つけてもらえるとうれしいのですが・・・。
できればでいいのでぜひともお願いします。何度もすみません。
0568デフォルトの名無しさん
2005/07/11(月) 18:35:46ほれ。サーバの修正版。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/700.txt
今コンパイルできる環境が手近にないから、コンパイル確認もしてないんでそのつもりで。
それと、上の方で出ていたワーニングが出るかもしれないが、
あれはただのコンパイラのお節介であって、コードは正しいので無視して構わない。
0569デフォルトの名無しさん
2005/07/11(月) 18:41:10あ、面倒くさいからQUITには対応してないよ。
対応したければサーバのソースの
on_cmd()を直してくれ。
if (!pclient->user) {
pclient->user = malloc(strlen(buff)+1);
strcpy(pclient->user, buff);
} else if (strcasecmp(buff, "QUIT") {
shutdown(pclient->fd, 1);
} else {
以下既存コード
こんな感じでよかろ。
0570516
2005/07/11(月) 18:46:03ありがとうございます!
コンパイルしてみたら以下のエラーが出ました。
kadai.c(26) : warning C4031: 関数の 2 回目の宣言で引数の数が増加しています。
kadai.c(53) : error C2198: 'maketree' : 実引数が少なすぎます。
kadai.c(82) : warning C4029: 関数宣言での引数リスト内の型が定義と一致しません。
kadai.c(98) : error C2084: 関数 'struct node *__cdecl maketree(const char *,const unsigned int ,const unsigned int )' はすでに実体を持っています。
kadai.c(204) : error C2065: 'bool' : 定義されていない識別子です。
kadai.c(204) : error C2146: 構文エラー : ';' が、識別子 'enzan' の前に必要です。
kadai.c(204) : error C2065: 'enzan' : 定義されていない識別子です。
kadai.c(204) : error C2065: 'false' : 定義されていない識別子です。
kadai.c(248) : error C2065: 'true' : 定義されていない識別子です。
cl.exe の実行エラー
kadai.obj - エラー 7、警告 2
丸投げで申し訳ないのですが、教えて頂きたく・・・orz
0571デフォルトの名無しさん
2005/07/11(月) 19:09:03[1]プログラミング言語
[2]組み合わせの式 nCr において,n=50,r=0〜50までの値を求めよ。
[3] 環境
[3.1]Windows
[3.2]cpp
[3.3]C言語
[4]7月14日まで
[5] できれば簡単な感じでお願いします。
0572デフォルトの名無しさん
2005/07/11(月) 19:24:01unsigned long npow(int begin, n)
{
if (high == 0) return 1;
int i;
unsigned long res = 1;
for (i = 0; i < n; i++, begin--)
res *= begin;
return res;
}
int main(void)
{
int i;
unsigned long res;
for (i = 0; i <= 50; i++) {
res = npow(50, i) / npow(i, i);
printf("50C%d:%ul", i, res);
}
return 0;
}
組んでみたが今はコンパイラが使えんのであってるかは不明
0573デフォルトの名無しさん
2005/07/11(月) 19:57:27>>550
0574デフォルトの名無しさん
2005/07/11(月) 19:57:54[2] 2次元横ベクトルP1に2行2列の変換行列Bを右から乗じてベクトルP2=P1*B
を求める1次変換のための関数定義
void linear(double p2[2],double p1[2],double h[2][2]);
を作成した後動作確認プログラムを作成せよ
[3] 環境
[3.1] Linux
[3.2]gcc
[3.3]C
[4]7/12 12:00まで
[5] 配列はできます
お願いします
0575543
2005/07/11(月) 19:58:440576565
2005/07/11(月) 20:02:51当方のVC++6.0とGNU g++ではコンパイルできたけど。
もしかしてC99とかC89系のコンパイラ?
0577526
2005/07/11(月) 20:03:29出現確率と出力文字に対する符号語と符号化した系列と復号化した系列
を出力するということです。どうかよろしくお願いしますm(_ _)m
0578デフォルトの名無しさん
2005/07/11(月) 20:07:56コンパイルできる環境にないから詳しくは分からんが
BOOL型は昔の規約だと定義されてない コンパイラ古いのかな
#include<stdbool.h>を追加してみて それで後半の方は消えると思う
消えないなら自分で定義するしかないなw
>>565も簡単に見たけど間違ってなさそうだし コンパイラ古いのかもしれない
0579デフォルトの名無しさん
2005/07/11(月) 20:10:53>>576
エラーメッセージのファイル名を見れば明らかだが
kadai.c
となっとるから、Cプログラムとしてコンパイルしようとしたようだな
これはC++のプログラムだ
0580516
2005/07/11(月) 20:15:50うーわー、はずかし・・・。
ちゃんとコンパイルできました。
改めてありがとうございました!m(_ _)m
0581デフォルトの名無しさん
2005/07/11(月) 20:18:16せっかく自分でもある程度書いたんだから
ちゃんと理解しろよ
0582デフォルトの名無しさん
2005/07/11(月) 21:08:13for(i=1; i<100; i++)
の構文の中で、xとyを計算するんですが、
i=50のときだけxとyを画面に表示したいんですが、
if (i=50) cout << x << y ;
とfor文の中に書いたら
「恐らく不正な代入」となってi=50以外のときのxとyも
出力してしまいます。これはなぜなんでしょうか?
教えてください。よろしくお願いします。
0583デフォルトの名無しさん
2005/07/11(月) 21:13:13○i==50
0584デフォルトの名無しさん
2005/07/11(月) 21:23:260585582
2005/07/11(月) 21:26:08解けました!ありがとうございました!
0586571
2005/07/11(月) 21:27:02なかったのでわからないんですが。
私は通常学校では
#include<stdo.h>
#include<stdlib.h>
#include<math.h>
ではじまるんで、できればこちらの形でお願いできないでしょうか。
572さんありがとうございます。
0587デフォルトの名無しさん
2005/07/11(月) 21:33:22それは cpp ではない気がする。stdo.h は普通ないし。
あと、 571 方式だと 50! とか計算することになるので unsigned long が
ないとまずお手上げなのでは?
0588デフォルトの名無しさん
2005/07/11(月) 21:38:47おま、ちょそれC言語
0589デフォルトの名無しさん
2005/07/11(月) 21:40:15調べる気も起きないってか。
0590デフォルトの名無しさん
2005/07/11(月) 21:41:42というわけでunsigned intにすると、571が今度はunsignedがわかんないとなきつく予感。
0591デフォルトの名無しさん
2005/07/11(月) 21:42:4750C25=126410606437752 なんだけど、これって 32 bit では表せないんだけど、
君の学校ではどうやって扱ってる?
0592565
2005/07/11(月) 21:45:33ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/701.txt
バグと冗長とその他修正。
っても戻ってくるかな?
0593571
2005/07/11(月) 21:50:04すいません無知で。
一応前回の課題でやったやつをあげておきます。
コンパイラはどれなのか正直わかりません。
すいませんunsignedは意味がわかりました。
恥ずかしい質問すいませんでした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/702.txt
0594デフォルトの名無しさん
2005/07/11(月) 21:55:41ここは宿題をやるスレであって、
おまえに内容を理解させるスレではない。
0595デフォルトの名無しさん
2005/07/11(月) 22:11:43[2] 問題文(含コード&リンク):
step1: a = x + y;
step2: b = z + 1;
step3: c = a ? b;
step4: w = c + 1;
に関し、parallel.cを完成させて、step1とstep2を並列実行させる
プログラムを作成せよ。
但し、x,y,zはプロンプトにしたがって入力するとする。
正しく動作したか?結果を考察せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/703.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限 7/12
丸投げですがお願いします。。。
0597595
2005/07/11(月) 22:38:37となってましたが、
step3: c = a - b;
の間違いでした。すいません。
0598デフォルトの名無しさん
2005/07/11(月) 22:42:07long long haihai = 126410606437752LL;
printf("%lld", haihai);
0599591
2005/07/11(月) 22:55:18一回余計に計算するけどこれでどうだ
#include <stdio.h>
#define N 50
int main(void){
long long c1[N+1]={1,0},c2[N+1]={1,0};
long long *p1,*p2,*p3;
int i,j;
p1=c1;
p2=c2;
for(i=0;i<=N;i++){
for(j=0;j<=N;j++){
printf("%lld ",p1[j]);
}
printf("\n");
for(j=1;j<=N;j++){
p2[j]=p1[j-1]+p1[j];
}
p3=p2;p2=p1;p1=p3;
}
}
0600デフォルトの名無しさん
2005/07/11(月) 23:01:02すまん。>>598≠>>571だ。
0601デフォルトの名無しさん
2005/07/12(火) 00:28:25で、step3,4はどうすんだ?
0602デフォルトの名無しさん
2005/07/12(火) 00:48:53同じようなことをしてるんだけど分からん。きっつー
0604デフォルトの名無しさん
2005/07/12(火) 01:22:32ttp://web.archive.org/web/20031204131703/alfin.mine.utsunomiya-u.ac.jp/~niy/algo/h/huffman.html
0605デフォルトの名無しさん
2005/07/12(火) 01:39:46これだと
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/704.txt
のようなファイルで復号化失敗してしまうんですよね・・・。
理由がさっぱり分かりません。
ちなみに入力と出力はtxtにしたいんですがどうすればいいんでしょうか・・・。
0606デフォルトの名無しさん
2005/07/12(火) 01:52:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/705.c
問題がよくわからんかったが書いてみた。
へぼいセンコーだってのはよくわかった。
0607デフォルトの名無しさん
2005/07/12(火) 07:36:51[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
n-クイーン問題を、1行または1列にクイーンを配置する場合の解を探索する
(n-クイーンで禁止されている、利き筋を結果として出力する)
プログラムに変更せよ。
n-クイーンのアルゴリズムは作成してあります↓
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/706.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:2005年7月12日
[5] その他の制限:
あくまで解を探索ものなので、
バックトラック法をそのまま使っていただければありがたいです
0608超初心者ゴン
2005/07/12(火) 11:26:50[2] 問題文(含コード&リンク):
数値を10回入力し、昇順でソートして表示するプログラムを作成
[3] 環境
[3.1] OS:Windows2000
[3.2] コンパイラ(バージョン): VC++6.0
[3.3] 言語:C
[4] 期限:2005年7月12日15:00までですけど、できたら急ぎでお願いします
[5] その他の制限:qsortは禁止 数値10コ格納したのをソートする。
よろしくお願いします。ならべく簡単にお願いします。
0609デフォルトの名無しさん
2005/07/12(火) 11:40:57#include <stdio.h>
void swap(int * i, int * j) {
int t = *i;
*i = *j;
*j = t;
}
int main(void) {
int data[10], i, j;
for (i = 0; i < 10; ++i) if (scanf("%d", &data[i]) != 1) return 1;
for (i = 0; i < 9; ++i)
for (j = i+1; j < 10; ++j) if (data[i] > data[j]) swap(&data[i], &data[j]);
for (i = 0; i < 10; ++i) printf("%d\n", data[i]);
return 0;
}
0610デフォルトの名無しさん
2005/07/12(火) 12:08:45[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=676 [3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):VC++ 6.0
[3.3] 言語:C++
[4] 期限:7月13日まで
[5] その他の制限:配列、ポインタ、構造体を使用すること。
どなたかよろしくお願いします。
0611デフォルトの名無しさん
2005/07/12(火) 12:29:160612デフォルトの名無しさん
2005/07/12(火) 12:34:54まかせた>>611
0613デフォルトの名無しさん
2005/07/12(火) 12:41:03どうでもいいけど、
#define END (-1)
しているなら
>int data[] = {1,2,3,4,5,6,7,8,9,-1};
は
int data[] = {1,2,3,4,5,6,7,8,9,END};
とすべきだろうな。
0614デフォルトの名無しさん
2005/07/12(火) 12:44:40[2] 問題文: 文字列を扱うライブラリー関数
Strlen、strcpy、strncpy、strcat、strncat、strcmp、strncmp、
を用いてプログラムを作成する。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ:gcc
[3.3] 言語:C
[4] 期限:7月18日
[5] その他の制限: ライブラリ関数は7つありますが、好きな物を使って(あるいは組み合わせて)
自由にプログラムを作る課題です。できれば、平素なものでお願いします。
0615超初心者ゴン
2005/07/12(火) 13:09:33コメント文頂けないでしょうか!
#include <stdio.h>
void swap(int * i, int * j) {
int t = *i; /**/
*i = *j; /**/
*j = t; /**/
}
int main(void) {
int data[10], i, j;
for (i = 0; i < 10; ++i)/**/ if (scanf("%d", &data[i]) != 1) /**/return 1;
for (i = 0; i < 9; ++i) /**/
for (j = i+1; j < 10; ++j) /**/if (data[i] > data[j])/**/ swap(&data[i], &data[j]); /**/
for (i = 0; i < 10; ++i)/**/ printf("%d\n", data[i]);
return 0;
}
ホントお手数ですがよろしくお願いします。すみません。
0616デフォルトの名無しさん
2005/07/12(火) 13:19:53理解を深めてもらうとこでもなければ、手取り足取り教えるとこでもない。
0617デフォルトの名無しさん
2005/07/12(火) 13:22:53それくらい調べなさい
0618デフォルトの名無しさん
2005/07/12(火) 13:23:49一箇所もわかんねーのかよw
終わってるな
とりあえず>>616に同意しておくか
0619デフォルトの名無しさん
2005/07/12(火) 13:24:26scanfの戻り値なんかは別だが。
0620デフォルトの名無しさん
2005/07/12(火) 13:27:41>612の趣旨と理解してやっつけた。ロジックの不具合はそのままなんで、勝手に直すなり好きにしてくれ。
/* 1/2 */
#include <stdio.h>
#define numberof(x) (sizeof (x) / sizeof *(x))
int main(void)
{
static struct {
int price;
const char * const name;
} goods[] = {
{0, "ティッシュ"},
{0, "サプリメント"},
{0, "化粧品の"},
};
int si;
static struct {
int no;
int value;
char const * const name;
} nocs[] = {
{0, 10000, "一万円"},
{0, 5000, "五千円"},
{0, 1000, "千円"},
{0, 500, "五百円"},
{0, 100, "百円"},
{0, 50, "五十\円"},
{0, 10, "十\円"},
{0, 5, "五円"},
{0, 1, "一円"},
};
0621620
2005/07/12(火) 13:28:33int ot;
int ko;
int ic;
ko = 0;
for (ic = 0; ic < numberof(goods); ++ic) {
printf("%sの値段を入力してください\n", goods[ic].name);
goods[ic].price = 0;
scanf("%d", & goods[ic].price);
if (goods[ic].price > 999 || goods[ic].price <= 0) {
printf("有効な数字を入力してください\n");
}
ko += goods[ic].price;
}
printf("購入金額は%d\n", ko);
printf("いくら支払いますか?\n");
scanf("%d",&si);
printf("支払った金額は%d\n",si);
ot = si-ko;
if(si<ko){
printf("お金が足りません\n");
}
printf("おつり\n");
for (ic = 0; ic < numberof(nocs); ++ic) {
nocs[ic].no = ot / nocs[ic].value;
ot -= nocs[ic].no * nocs[ic].value;
printf("%s%d枚\n", nocs[ic].name, nocs[ic].no);
}
return 0;
}
0622超初心者ゴン
2005/07/12(火) 13:37:000623キーファ
2005/07/12(火) 15:00:44今回もなにとぞお願いします!
[1] 授業単元:計算機数学序論
[2] 問題文(含コード&リンク):0時0分からa時b分(0<=a<=24,0<=b<=60)
までの時間を計算する関数Timeを作り、それを使い、2つの時刻
a1時b1分とa2時b2分をキーボードから入力して(a2時b2分の方が
a1時b1分より後とする)、「a1時b1分からa2時b2分までの時間は
○時間○分です。」と表示せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): VC++6.0
[3.3] 言語:C++
[4] 期限:水曜まで
[5] その他の制限:特になし
お願いいたします。
0624デフォルトの名無しさん
2005/07/12(火) 15:11:24時分の条件は (0<=a<24,0<=b<60) だと思うが
0625デフォルトの名無しさん
2005/07/12(火) 15:13:51突撃Delphi特急便
function time(H1,M1 , H2,M2: integer) : integer;
begin
Result := (H2*60+M2) - (H1*60+M1);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
c ,a1,a2,b1,b2:integer;
begin
a1 := 2; b1 := 30;
a2 := 12; b2 := 21;
c := time(a1,b1 , a2,b2);
ShowMessage(Format('%d時%d分から%d時%d分までの時間は'
+'%d時間%d分です。',[a1,b1 , a2,b2 , c div 60 , c mod 60]));
end;
0626デフォルトの名無しさん
2005/07/12(火) 15:14:48c2 = a2 * 60 + b2;
c3 = c2 - c1;
a3 = c3 / 60;
a3 = c3 % 60;
0627無知の名無しさん
2005/07/12(火) 15:17:09初めてですがお願いしますm(_ _)m
[1]授業の課題;ミニゲームなど作れ。(ジャンケンゲームみたいなの
[2]環境
[3]os:windows2000pro
[3.1]コンパイラ:VC:visual studio.net
[3.2]言語:C
[4]期限:今週中まで
[5]その他制限:特になし
出せばいいので簡単なのでお願いいたします。
0628デフォルトの名無しさん
2005/07/12(火) 15:54:27疲れちゃいねぇよ。余計なお世話だ。
0629デフォルトの名無しさん
2005/07/12(火) 16:02:320630デフォルトの名無しさん
2005/07/12(火) 16:09:02一つもわかんないんだから1からやりなおせが適切か
0631デフォルトの名無しさん
2005/07/12(火) 16:51:28ホントお手数ですがよろしくお願いします。すみません。
0632デフォルトの名無しさん
2005/07/12(火) 16:54:10/* コメントゲーム */
/* プログラムの全部の行にコメントを入れたら完成 */
#include <stdio.h>
int main(void){
printf("Hello World.\n");
}
0633今日の授業内orz
2005/07/12(火) 16:54:11[2] [課題]ニュートン法のプログラムを作成し、f(x)=x -3x +x -3 =0の解を、初期値をx=5として、求めよ。
提出物 �@フローチャート �Aプログラム �B計算結果(繰り返しの途中結果含む)
[3] 環境
[3.1] Windows2000
[3.2] Microsoft Visual Studio 6.0
[3.3] C
[4] 期限:2005年07月12日18:00まで または 無期限 のいずれか
[5] その他の制限:特にないと思います><
模範解答みたいなのが出回ってるんですがそれは次で貼り付けます
このまま出すとコピーしたのがばれるということで困ってます
皆様よろしくおねがいします><
0634デフォルトの名無しさん
2005/07/12(火) 16:55:27#include <stdio.h>
#include <string.h>
int main()
{
char buf[1024];
char * comp;
int ok = 1;
printf("じゃんけん:");
fgets(buf, sizeof(buf), stdin); * strrchr(buf, '\n') = '\0';
if (strcmp(buf, "ぐー") == 0) comp = "ちょき";
else if (strcmp(buf, "ちょき") == 0) comp = "ぱー";
else if (strcmp(buf, "ぱー") == 0) comp = "ぐー";
else { comp = "ちょき"; ok = 0; }
printf("コンピュータ:%s\n\n", comp);
if (ok) printf("無念・・・orz\n");
else printf("アフォか\n");
return 0;
}
・・・ヴァカっぽくてやってらんねーな
0635デフォルトの名無しさん
2005/07/12(火) 16:56:39int main()
{
printf("じゃんけんしよう!\n入力してね グー:0 チョキ:1 パー:2\n");
int i;
scanf( "%d", &i);
printf("あなたの負けです\n");
return 0;
}
0636今日の授業内orz
2005/07/12(火) 16:57:43#include <math.h>
int main(){
double x,px; //x[i]とx[i+1]
int i; //繰り返した回数表示
/* 変数の初期化 */
x = 5.0; //初期値は5
px = 0.0; //次の値は不明なので0
i = 0; //初期化
/* 計算開始 */
while(1){
/*
f(x) = x^3 - 3x^2 + x - 3
f'(x) = 3x^2 - 6x + 1
x[i+1] = x[i] - f(x)/f'(x)
*/
px = x - ((pow(x,3.0) - 3.0 * pow(x,2.0) + x - 3.0)/(3.0 * pow(x,2.0) - 6.0 * x + 1.0));
printf("%d回目 : x[%d] = %f\n",i+1,i+1,x);
//|x[i+1] - x[i]| <= 10^-5
if(fabs(px - x) <= 0.00001){
printf("終了条件になりました\n");
break;
}
/* x[i+1]にx[i]を入れる */
x = px;
i++;
}
return 0;
}
0637デフォルトの名無しさん
2005/07/12(火) 17:03:02/**/ を書いた時点でコメントだから >>615 で正しい
>>632>>635
壺だったw
0638デフォルトの名無しさん
2005/07/12(火) 17:07:29636 ってよくできているのでこれで問題ないんじゃないの?
これをレポートにすれば、単なるコピーじゃなくて
2ちゃんねるから持ってきたって言えるからなにもかもはっぴー?
0639デフォルトの名無しさん
2005/07/12(火) 17:13:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/707.c
とりあえず65521まで
0640今日の授業内orz
2005/07/12(火) 17:14:37福祉科なのになぜかC言語やらないといけないし・・・・
そのくせ選択必修で数値解析とってみると
C言語やるとは思ってもいなくて・・・・
これのすこし変えたので何かございませんかね
皆様のお力をおかしてくださいませ><
0641デフォルトの名無しさん
2005/07/12(火) 17:16:55まずCのソースにC++のコメント入れるのやめさすとこから始めようか
0642デフォルトの名無しさん
2005/07/12(火) 17:17:22printf("終了条件になりました\n");
を
puts("終了条件に成田まいsた");
にしてみるとか
0643デフォルトの名無しさん
2005/07/12(火) 17:17:43全部をまとめて一行にしちゃうとか。
# で始まる行以外は全部一行にしても大丈夫だよ。
あと、// から行末までは取り除いてね。
0644デフォルトの名無しさん
2005/07/12(火) 17:19:57画期的な案を思いついたんだよ
みんな>>636を提出するというのならば自分で書けるところまで書いてみたらどうだ?
きっとカンニング行為でまとめてあぼーんされるのに巻き込まれないだけマシ
正直が一番良いときもあるよ
0645デフォルトの名無しさん
2005/07/12(火) 17:20:41酷いゲームだ…
0646デフォルトの名無しさん
2005/07/12(火) 17:23:37誰か教えてください。
0647今日の授業内orz
2005/07/12(火) 17:26:18苦し紛れに検索していたらここにたどり着きまして皆様のお力をお借りしたいと
工科系の大学で新設の福祉科にくるんじゃなかった・・
授業のカリキュラムがまだまだ出来てない感じで
C言語の授業があるとはつд;)
でもこれも選択必修なので落とすと来年まだほかの選択必修を取らないといけなくなるので
今回この授業はこれだけでテストがないらしく
レポートと出席だけで判断するそうでこまってるしだいです
0648デフォルトの名無しさん
2005/07/12(火) 17:27:120649デフォルトの名無しさん
2005/07/12(火) 17:28:39チラシの裏(ry
0650デフォルトの名無しさん
2005/07/12(火) 17:30:30よしわかった、匿名でこのページのアドレスを先生にチクれ
0651今日の授業内orz
2005/07/12(火) 17:38:4018時まであと25分・・・・
>>650
2chを授業中に観覧してるなんて言えないです
これ以上iフィルターが強化されたら
校内LANとかの意味がなくなってきちゃいます><
0652デフォルトの名無しさん
2005/07/12(火) 17:40:28条件は十分なので検索できるだろう
0653デフォルトの名無しさん
2005/07/12(火) 17:44:05>2chを授業中に観覧してるなんて言えないです
つーか、何この日本語能力のなさ。
0654今日の授業内orz
2005/07/12(火) 17:45:36(´盆`)ちくらないで〜〜〜〜〜〜
野菜炒めまずいから捨てたりしないからゆるして〜〜〜つд;)
0655デフォルトの名無しさん
2005/07/12(火) 17:45:42#include <stdio.h>
#include <math.h> /* fabs()で使用 */
int main(void){
/* 変数の初期化 */
double x,px= 5.0;
int i=1;
/* 計算開始 */
do{
x = px;
/*
f(x) = x^3 - 3x^2 + x - 3
f'(x) = 3x^2 - 6x + 1
x[i+1] = x[i] - f(x)/f'(x)
*/
px = x - (x*(x*(x - 3.0) + 1.0) - 3.0)/(x*(x*3.0 - 0.6 ) + 1.0);
printf("%d回目 : x[%d] = %f\n",i,i,x); /* |x[i+1] - x[i]| <= 10^-5 */
i++;
} while(fabs(px - x) >= 0.00001 && i<300);/* 300回くらいまわっても収束しないなら打ち切る */
if(i<300){
printf("終了条件になりました\n");
}else{
printf("皇太子さまは無限ループに興味を持たれたようです。 \n");
}
return 0;
}
0657今日の授業内orz
2005/07/12(火) 17:55:23皇太子さまは無限ループにry
ってところで笑ってしまってみんなに見られたつд;)
注目を浴びてしまった・・・・
>>655
ありがとうございました
下から4行目と6行目のことでしょうか?
0658今日の授業内orz
2005/07/12(火) 17:57:316行目をしたら・・・しめの言葉が消える・・
0659今日の授業内orz
2005/07/12(火) 18:01:563乗 2乗
[課題]ニュートン法のプログラムを作成し、f(x)=x -3x +x -3 =0の解を、初期値をx=5として、求めよ。
f(x)=x -3x +x -3 =0 は、3乗と2乗がついたんでした・・・遅いorz
提出時間がのこり9分・・・・終わったつд;)
0660今日の授業内orz
2005/07/12(火) 18:06:01#include <math.h> /* fabs()で使用 */
int main(void){
/* 変数の初期化 */
double x,px= 5.0;
int i=1;
/* 計算開始 */
do{
x = px;
/*
f(x) = x^3 - 3x^2 + x - 3
f'(x) = 3x^2 - 6x + 1
x[i+1] = x[i] - f(x)/f'(x)
*/
px = x - ((pow(x,3.0) - 3.0 * pow(x,2.0) + x - 3.0)/(3.0 * pow(x,2.0) - 6.0 * x + 1.0));
printf("%d回目 : x[%d] = %f\n",i,i,x); /* |x[i+1] - x[i]| <= 10^-5 */
i++;
}
return 0;
}
エラー1 警告 0
F:\1234.c(19) : error C2059: 構文エラー : 'return'
エラーがでるつд;)
0661デフォルトの名無しさん
2005/07/12(火) 18:06:13px = x - (x*(x*(x - 3.0) + 1.0) - 3.0)/(x*(x*3.0 - 0.6 ) + 1.0);
~~~~
ここを0.6 から6.0に直すんじゃないの
0662デフォルトの名無しさん
2005/07/12(火) 18:15:40とくれば
}while(hoge);
が必要かと>>660
0663デフォルトの名無しさん
2005/07/12(火) 20:31:14>ニュートン法のプログラムを作成し、
>f(x)=x -3x +x -3 =0の解を、初期値をx=5として、求めよ。
なんかものすごく難しいことを求められているような気がする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/708.c
0664663
2005/07/12(火) 20:55:21解にたどり着けなかったときの対応してないや。
0665デフォルトの名無しさん
2005/07/12(火) 21:53:04[2]問題文:1000以下の素数で、足しあわせると1000になるような二つの素数の組をすべて求めるプログラム
[3]環境
[3.1]OS:UNIX
[3.2]コンパイラ:gcc
[3.3]言語:C
[4]期限:7/12
[5]charをつかわないで。なるべく簡単に
お願いします
0666デフォルトの名無しさん
2005/07/12(火) 21:53:22int main()
{
int i = 0;
double x,y,diff,limit;
limit = 1.0e-20;
diff = 1.0;
x = 5.0;
while(diff > limit)
{
printf("%d回目 : x[%d] = %.30f\n", i,i,x);
y = x - (x*x -3.0*x +1.0 -3.0/x) / (3.0*x -6.0 +1.0/x);
diff = y < x ? x - y : y - x;
x = y;
++i;
}
return 0;
}
0667デフォルトの名無しさん
2005/07/12(火) 21:56:59>>410
0668デフォルトの名無しさん
2005/07/12(火) 22:01:58[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/709.txt
[3] 環境
[3.1] OS:Windows/Linux/等々 WindowsXP
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C/C++/どちらでも可 のいずれか C
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 7月14日まで
よろしくお願いします。
0669デフォルトの名無しさん
2005/07/12(火) 22:09:07もう出てるけど、参考までに。
#include <stdio.h>
int main(void) {
int i, j, notprime, sieve[1001];
for (i = 2; i <= 1000; i++) sieve[i] = 1;
sieve[0] = sieve[1] = 0;
for (i = 2; i <= 50; i++) {
notprime = i;
while ((notprime += i) <= 1000) sieve[notprime] = 0;
}
for (i = 2; i <= 1000; i++)
if (sieve[i])
for (j = i; j <= 1000; j++)
if (sieve[j] && i + j == 1000)
printf("%4d + %4d == 1000\n", i, j);
return 0;
}
0670デフォルトの名無しさん
2005/07/12(火) 22:12:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/710.txt
#include<stdlib.h>は消しておk
0671デフォルトの名無しさん
2005/07/12(火) 22:15:35例えば、Strlenとstrcpyを使って、
文字列を表示してその文字列の文字数を表示するプログラムとか作れませんか?
0672デフォルトの名無しさん
2005/07/12(火) 22:20:39#include <string.h>
#include <stdio.h>
main(){char *s="abcd";puts(s);printf("%d\n",strlen(s));}
0673デフォルトの名無しさん
2005/07/12(火) 22:21:56あ、strcpyね、ごめんごめん。
#include <string.h>
#include <stdio.h>
main(){char s[5];strcpy(s,"abcd");puts(s);printf("%d\n",strlen(s));}
0674デフォルトの名無しさん
2005/07/12(火) 22:45:24とりあえず Strlen なんてのはないし
Strlen と strcpy を使って文字列を表示する事なんてできない
まぁ案があるならそのまま作ればよろしい
おもしろくないから俺はパス
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv) {
printf("プログラム名は %s\n", argv[0]);
printf("%u文字です\n", (unsigned int)strlen(argv[0]));
return 0;
}
0675レイナ
2005/07/12(火) 23:33:410676デフォルトの名無しさん
2005/07/12(火) 23:36:16C++Builder相談室 Part14
http://pc8.2ch.net/test/read.cgi/tech/1116460578/
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/
Borland C++ BuilderX
http://pc8.2ch.net/test/read.cgi/tech/1065260556/
0677デフォルトの名無しさん
2005/07/12(火) 23:50:43GJ
0678ikaikaikajika
2005/07/13(水) 00:02:25おしえてください。 まず タッチセンサーの上にお茶がのると 前進し、光センサーで前に障害物があると一時停止し、お茶をとってくれるのを待ちます。
そして、お茶がとられたら、180度回転し、元の場所に戻ろうとするのでが、戻る途中で障害物があった場合(上にお茶がのってない状態で)、光センサーをつかって、なんとかして障害物
をかわしたいのです。 brickOS というOSです。 おねがいします。
0680434−435
2005/07/13(水) 00:33:02期限過ぎていますが、骨組みとか未完でも構いませんので、なんとか作っていただけないでしょうか・・・?
お願いいたします・・・。
0681デフォルトの名無しさん
2005/07/13(水) 00:42:34「2」キーボードから英文を読み込み、英文に現れる異なる単語の数を求めるプログラムを書け。
「3・1」OS UNIX
「3・2」gcc
「3・3」c言語
「4」明後日
[5]strcmpを使うらしいがまったく分かりません。どうかお願いします。
0682デフォルトの名無しさん
2005/07/13(水) 00:57:59This と this は区別するのかなぁ??
0683434−435
2005/07/13(水) 00:58:30期限切れていますが骨組み、未完でも構いませんのでどなたか作成お願いできないでしょうか
0685デフォルトの名無しさん
2005/07/13(水) 01:25:050686デフォルトの名無しさん
2005/07/13(水) 03:01:40[2] 問題文(含コード&リンク):
次値を返す関数を作成せよ
f(x)=(e^-x)cos(2πx)
その関数を用いて0≦x≦3の間で0.1刻みで計算し、結果をリダイレクトでファイルに記録せよ
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:今週中
[5] その他の制限:特になし
難しすぎて意味が分かりません助けてください
0687デフォルトの名無しさん
2005/07/13(水) 04:53:33外部ハッシュ法をつかって検索するプログラムを作成しました、
しかしリナックスで実行すると「no:見つかりません」と出力されてしまいます
(ウィンドウズで実行するとエラーになってしまいます)
ちなみにファイルの中(*)には"program"は入っています
どうか修正をお願いします m(__)m
作ったコードはコレです↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/712.txt
なにか説明不足な点がありましたら仰って下さい
[(*)ファイルの中身](↓ドラッグすると分かりますが、スペースが入って15文字になっています)
gktnbttotnjo
program
nxpoyguru
fbujqneup
opzsfeqvnszr
swopfqdtplch
・
・
・
(50〜1万個程度)
0688687
2005/07/13(水) 04:55:54ファイルの中身はスペースがあって、全部文字数が15文字に揃ってます
0689デフォルトの名無しさん
2005/07/13(水) 06:24:410690デフォルトの名無しさん
2005/07/13(水) 06:58:09#include <stdio.h>
#include <math.h>
#ifndef M_E
#define M_E 2.718281828459045
#endif
#ifndef M_PI
#define M_PI 3.141592653589795
#endif
double f( double x ){ return( pow( M_E, -x )*cos( 2*M_PI*x ) ); }
int main( void )
{
double x;
for( x=0; x<=3.0; x+=0.1 ){
printf("%lf\n", f(x));
}
return 0;
}
0691デフォルトの名無しさん
2005/07/13(水) 08:28:52ttp://venus.aez.jp/uploda/data/dat2/upload317201.c
関数名とか適当に変えてちょ
0692デフォルトの名無しさん
2005/07/13(水) 09:48:43[2] 問題文(含コード&リンク):自分の名前を指定した回数だけ表示するプログラムを作成せよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:今日の11時まで
[5] その他の制限:ほんとに簡単におねがいします
0693鹿児島大情報一年
2005/07/13(水) 10:00:52・駐車時間が1時間未満ならば無料
・駐車時間1時間から3時間未満までは150円
・3時間以上は、一律300円
・0(ゼロ)を入力すると終了する。
というのがどうしても分からないのですが、よかったら教えて頂けないでしょうか?
0694デフォルトの名無しさん
2005/07/13(水) 10:14:36[2] 問題文:
以下のようなアルゴリズムで配列のソートを考える。
例として以下のような配列を使う。
a[0]|a[1]|a[2]|a[3]|a[4]|
5| 9 | 6 | 3 | 4 |
整数 n を検査する配列の要素数とする。
1.n = 5 (配列の要素数) とする。
2.a[0] 〜 a[n-1] までの中で 最も大きいものを探す。この最大値を持つ添え字を m とする。
3.a[m] と a[n-1] の値を入れ替える。(もちろん m == n-1 なら入れ替える必要はない)
4.n-- を行った後 n <= 1 ならプログラム終了
5.2へもどる
以上のような動作を行う関数 void array_sort( int a[], int n ) を作成しなさい。
作成の準備としては
・配列 a[] と、調べたい要素数 len を与えた際に、配列中最大値を持つ添え字を返すような関数
int max_index( int a[], int len ) を記述する。
この関数は a[0] 〜 a[len-1] までの中から最大値を持つ添え字 (m) を返す。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:7/12まで
[5] その他の制限:構造体やポインタなどはまだ習っていません。
どなたかご教授お願いします。
0695東海大学前
2005/07/13(水) 10:15:26・駐車時間が1時間未満ならば無料
・駐車時間1時間から3時間未満までは150円
・3時間以上は、一律300円
・0(ゼロ)を入力すると終了する。
というのがどうしても分からないのですが、よかったら教えて頂けないでしょうか?
0696694
2005/07/13(水) 10:16:020697デフォルトの名無しさん
2005/07/13(水) 10:18:16for(::){
scanf
if(h==0)break;
if(h<60)a=0;
else if(h<180)a=150;
else a=300;
}
0698東海大学前
2005/07/13(水) 10:21:11・駐車時間が1時間未満ならば無料
・駐車時間1時間から3時間未満までは150円
・3時間以上は、一律300円
・0(ゼロ)を入力すると終了する。
というのがどうしても分からないのですが、よかったら教えて頂けないでしょうか?
0699デフォルトの名無しさん
2005/07/13(水) 10:22:590700東海大学前
2005/07/13(水) 10:42:010701デフォルトの名無しさん
2005/07/13(水) 10:52:38何の宣言?
0702東海大学前
2005/07/13(水) 10:52:47PARKING
Input minutes = 430
Parking time => 7:10 =>\300
Input minutes = 127
Parking time => 1:7 =>\150
Input minutes =67
Parking time => 1:7 =>\150
Input minutes =32
Parking time =>0:32 =>\ 0
Input minutes =0
0703東海大学前
2005/07/13(水) 10:54:210704デフォルトの名無しさん
2005/07/13(水) 11:18:300705デフォルトの名無しさん
2005/07/13(水) 11:23:46[2] 問題文(含コード&リンク):数字を入力し、入力した数字の中で一番大きい素数と
二番目に大きい素数を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:7月14日まで
[5] その他の制限:入力する数字は999が最大です。3以下の数字(1と2)はすべて3にしてください。数字は自然数を入力します。
どなたかよろしくお願いします。
0706東海大学前
2005/07/13(水) 11:25:120707デフォルトの名無しさん
2005/07/13(水) 11:37:43[2] 問題文(含コード&リンク): 自分の名前を指定した回数だけ表示するプログラム namae.cを作成せよ。
例えば次のような形。何回表示しますか?: 10
(1)大西
(2)大西
(途中省略)
(10)大西
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:
[5] その他の制限:ほんとに簡単におねがいします
0708デフォルトの名無しさん
2005/07/13(水) 11:41:59どうもありがとうございます。
0709>>707
2005/07/13(水) 11:53:55int main(void){
int num,i;
printf("何回表示しますか?: ");
scanf("%d",&num);
printf("\n");
for(i=0;i<num;i++) printf("大西\n");
return 0;
}
0710705
2005/07/13(水) 11:55:381番大きい素数:421です。
2番目に大きい素数:419です。
と、出力するようにお願いします。
0711デフォルトの名無しさん
2005/07/13(水) 11:57:46どうもありがとうございます!!!!
0712デフォルトの名無しさん
2005/07/13(水) 12:04:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/714.txt
>>705
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/713.txt
0713デフォルトの名無しさん
2005/07/13(水) 12:28:38[2] 問題文(含コード&リンク):右のように九九の表に | 1 2 3 4・・・・8 9
縦横のタイトルを加えよ -----------------------------
1 | 1 2 3 4 8 9
2 | 2 4 6 8・・・
.
.
.
9 | 9 18 27 36・・・
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:
[5] その他の制限:
0714デフォルトの名無しさん
2005/07/13(水) 12:38:32あれずれてる
| 1 2 3 4・・・・8 9
-----------------------------
1 | 1 2 3 4 ・・・ 8 9
2 | 2 4 6 8・・・・
みたいなかんじでおねがいします
0715デフォルトの名無しさん
2005/07/13(水) 13:09:02本当にこんなのでいいのかな?
九九が入力されなかった時はとりあえず終了するけど。
#include <stdio.h>
int main(void){
int i=1,j=1,x;
printf(" | 1 2 3 4 5 6 7 8 9\n"
"-----------------------------\n");
while((scanf("%d",&x)==1)&&(x==i*j)&&(i<10)){
if(j==1)printf("%d|",i);
printf(" %2d",x);
j++;
if(j>=10)j=1;i++;printf("\n");
}
}
0716715
2005/07/13(水) 13:10:55if(j>=10)j=1;i++;printf("\n");
を
if(j>=10){j=1;i++;printf("\n"); }
にしておいて
0717デフォルトの名無しさん
2005/07/13(水) 13:14:59すいません九九の表がでません
0719デフォルトの名無しさん
2005/07/13(水) 13:38:32#include <stdio.h>
int main(){
const int MAX_NUM = 9;
const int SEPARATE_NUM = 40;
const char SEPARATE_CHAR = '-';
int i, j;
printf("\t|");
for(i = 1; i <= MAX_NUM; i++){
printf("%3d", i);
}
printf("\n");
for(i = 0; i < SEPARATE_NUM; i++){
printf("%c", SEPARATE_CHAR);
}
printf("\n");
for(i = 1; i <= MAX_NUM; i++){
printf("%d\t|", i);
for(j = 1; j <= MAX_NUM; j++){
printf("%3d", i * j);
}
printf("\n");
}
return 0;
}
0720デフォルトの名無しさん
2005/07/13(水) 13:45:22はいそうです!わかりにくくてすいません!!!
どうもありがとうございます!!!!!!!!!!
0721694
2005/07/13(水) 14:38:08作成の準備としては
・配列 a[] と、調べたい要素数 len を与えた際に、配列中最大値を持つ添え字を返すような関数
int max_index( int a[], int len ) を記述する。
この関数は a[0] 〜 a[len-1] までの中から最大値を持つ添え字 (m) を返す。
を作成した上で配列のソートを行う関数void array_sort( int a[], int n ) を作成する。
以上です。(最後の一行が抜けてました)
よろしくお願いします。
0722デフォルトの名無しさん
2005/07/13(水) 15:39:31LINUXなの?WINDOWSなの? コンパイラは?
0723687
2005/07/13(水) 15:58:43コンパイラはgccです
0724デフォルトの名無しさん
2005/07/13(水) 16:24:26#include <stdio.h>
void disp( char *mes, int a[], int len ) {
int i;
puts( mes );
for ( i=0; i<len; i++) printf("a[%d]=%d\n", i, a[i] );
}
int max_index( int a[], int len ) {
int i, m=0 ;
for ( i=1; i<len; i++ ) if ( a[m] < a[i] ) m= i ;
return m ;
}
int array_sort( int a[], int n ) {
int i, m, work ;
for ( i=n-1; i>1; i-- ) {
m= max_index( a, i ) ;
if ( i != m ) { work= a[m] ; a[m]= a[i] ; a[i]= work ; }
}
}
int main() {
int a[]= { 5, 9, 6, 3, 4 } ;
int n= sizeof( a ) / sizeof( a[0] ) ;
disp( "before", a, n );
array_sort( a, n ) ;
disp( "after", a, n ) ;
}
0725デフォルトの名無しさん
2005/07/13(水) 16:46:02void disp( char *mes, int a[], int n ) {
int i;
puts( mes );
for ( i=0; i<n; i++) printf("a[%d]=%d\n", i, a[i] );
}
気が向いたら差し替えてくれぃ。
どーでもいい修正スマソ
0726デフォルトの名無しさん
2005/07/13(水) 17:03:54#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char str[256];
char *words[5000];
int count = 0;
while (scanf("%*[^a-zA-Z]"), scanf("%255[a-zA-Z]", str) == 1) {
int i;
for (i = 0; (str[i] = toupper(str[i])) != '\0'; i++);
for (i = 0; i < count && strcmp(str, words[i]); i++);
if (i == count) words[count++] = strdup(str);
}
printf("異なる単語の数:%d\n", count);
while (count--) free(words[count]);
return 0;
}
0727デフォルトの名無しさん
2005/07/13(水) 17:09:18[2] 一行に1つ整数が書かれているファイルがある。
これを読みこんで、昇順にソートして表示するプログラムを作りなさい。
・データファイルの名前はコマンドライン引数で与える
・使い方を誤った時、ファイルが開けない時にはエラー
を出力する。
・データが1000行以上あればエラー(警告)を出力する
[3.1] Linux
[3.2] イーマックス
[3.3] 言語:C
[4] 7月16日
さっぱりです・・・助けてください。
0728694
2005/07/13(水) 17:25:14ありがとうございます。
せっかく作ってくださったのに申し訳ないですが、
char*と、sizeof()と、"before"、"after"などはまだ習ってないんです。
どうすればいいですか?
0729デフォルトの名無しさん
2005/07/13(水) 17:33:26また来たよこのバカ
0730デフォルトの名無しさん
2005/07/13(水) 17:38:31#include <stdio.h>
int main(int argc, char **argv)
{
char buf[1000];
if (argc < 2) {fprintf(stderr, "Error!\n"); return 1;}
sprintf(buf, "sort -n %.900s", argv[1]);
system(buf);
return 0;
}
0731デフォルトの名無しさん
2005/07/13(水) 18:12:44lispでかかれたコンパイラを使えってことじゃね?
0732デフォルトの名無しさん
2005/07/13(水) 18:25:47「[3.2]コンパイラ」って開発環境も含んでんじゃね?
VisualStudio.netとか書いても誰も文句言わねーじゃん。
もしそうならEmacsにはコンパイルボタンが付いてるから無問題。
makefileがあればmakeしてくれる。無かったら動かないけど。
0733デフォルトの名無しさん
2005/07/13(水) 18:28:44[2] 問題文(含コード&リンク):アドレス帳を作る。3つの文字列変数、氏名、振り仮名、電話番号をメンバとする構造体を用いて氏名と電話番号でそれぞれソートしたファイルを作成しファイルに出力せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン): cc
[3.3] 言語:C
[4] 期限:7月15日まで
[5] その他の制限:構造体とファイル出力を用いよ。状況に応じてポインタなども使用せよ。
お願いします
0734デフォルトの名無しさん
2005/07/13(水) 18:29:23[2] 問題文(含コード&リンク):
データファイルkadai.datには,4バイトの整数データが1個書き込まれているが,
上位2バイトと下位2バイトが入れ替わっている。
この整数データをきちんと読み込むプログラムを作成し,その値を答えなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:今日中
[5] その他の制限:
#include <stdio.h>
void main(void)
{
int a,*b;
FILE *fp;
b=&a;
b=b+2;
fp=fopen("kadai.dat","rb");
fread(b,2,1,fp);
fread(&a,2,1,fp);
fclose(fp);
printf("%d%d\n",a,*b);
}
kadai.datはバイナリファイルになってるのでこのようにしてみたんですが
どうもうまく動かないんでどう修正していけばいいのか教えていただけませんでしょうか
0735デフォルトの名無しさん
2005/07/13(水) 18:36:46こゆことなんでなくて?
#include <stdio.h>
int main(void)
{
unsigned long data;
FILE *fp;
fp = fopen("kadai.dat","rb");
fread(&data, 1, sizeof(data), fp);
fclose(fp);
data = (data >> 16) | (data << 16);
printf("%08lx\n", data);
return 0;
}
0736デフォルトの名無しさん
2005/07/13(水) 18:38:47そのままだとkadai.datをあげれないので圧縮
0737デフォルトの名無しさん
2005/07/13(水) 18:42:21そりゃVS.NETはコンパイラ含めてのVS.NETだからだろ
0738デフォルトの名無しさん
2005/07/13(水) 18:43:44そだね。ちょっと強引だったかも。
0739734
2005/07/13(水) 18:49:27ファイル上げなおし
>>735
それだとちゃんと処理されるみたいです
自分のだとどこがまずかったのか原因とかいろいろ考えてみます
0740K
2005/07/13(水) 18:53:54[2]�@N組の(x , y)がある。4次と3次の最小二乗多項式で近似せよ.
�A3次の多項式に対して,x 軸との交点とy 軸との交点を求めよ。(2分法またはニュートン法)
[3]環境
[3.1]OS:unix
[3.2]gcc
[3.3]言語:C
[4]7月26日11時
[5]できるだけ簡単にお願いします。コメント文も少しお願いします。
宜しくお願いします。
0741デフォルトの名無しさん
2005/07/13(水) 18:55:24最小二乗法って統計学で出てくるやつ?
0742デフォルトの名無しさん
2005/07/13(水) 19:00:49>>741
#endif
0743デフォルトの名無しさん
2005/07/13(水) 19:21:05�@
http://www.vector.co.jp/soft/dl/win95/edu/se213702.html
0745デフォルトの名無しさん
2005/07/13(水) 19:36:37マインスイーパーフラッグで2人対戦で爆弾を見つけていくGameをつくりました。
そこで、考える時間設定をしたいんですけど、どういう関数を使えばいいんでしょうか?
10秒たつとPlay順がうつるようにしたいです。
0746デフォルトの名無しさん
2005/07/13(水) 19:45:54b=b+2;
の部分ね、これだとsizeo(int)*2バイト進んじゃう(32ビットintだったら8バイト進む)。
2バイト進めたいなら
b = (int *)( (char *)b + 2 ); かな。
だけど、printfで*bを見た瞬間に警察に捕まります。
0747デフォルトの名無しさん
2005/07/13(水) 19:50:48ここは質問スレではなく宿題スレですが
0748デフォルトの名無しさん
2005/07/13(水) 19:52:070749745
2005/07/13(水) 21:14:18マインスイーパーフラッグで2人対戦で爆弾を見つけていくGameをつくってください。
10秒たつとPlay順がうつるようにしたいです。
0750デフォルトの名無しさん
2005/07/13(水) 21:17:010751デフォルトの名無しさん
2005/07/13(水) 21:22:34バグってた。ごめんな。
習ってないところも直したけど、行数の関係で詰めちゃったから適宜改行しる
#include <stdio.h>
int max_index( int a[], int len ) {
int i, m=0 ;
for ( i=1; i<len; i++ )
if ( a[m] < a[i] ) m= i ;
return m ;
}
int array_sort( int a[], int n ) {
int i, m, work ;
for ( i=n; i>0; i-- ) {
m= max_index( a, i ) ;
if ( i-1 != m ) { work= a[m] ; a[m]= a[i-1] ; a[i-1]= work ; }
}
}
int main() {
int i, a[]= { 5, 9, 6, 3, 4 }, n=5 ; /* nはa[]の個数 */
puts( "BEFORE" ) ; for ( i=0; i<n; i++ ) printf( "a[%d]=%d\n", i, a[i] ) ;
array_sort( a, n ) ;
puts( "AFTER" ) ; for ( i=0; i<n; i++ ) printf( "a[%d]=%d\n", i, a[i] ) ;
}
0752デフォルトの名無しさん
2005/07/13(水) 21:34:09環境依存スレへgo
0753694
2005/07/13(水) 21:37:18いえいえ、わざわざ修正していただいて、ありがとうございました。
自分ではいくら考えてもわからなかったもので、ホントに助かりました〜。
0754デフォルトの名無しさん
2005/07/13(水) 21:42:330755デフォルトの名無しさん
2005/07/13(水) 21:50:24#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define ITER_MAX 10000
#define EPS (1.0e-5)
#define INITIAL_VALUE 3.0
#define X_3 1.0
#define X_2 2.5
#define X_1 (-3.0)
#define X_0 5.0
double f(double x){ return( X_3*x*x*x + X_2*x*x + X_1*x + X_0 ); }
double df(double x){ return( 3*X_3*x*x + 2*X_2*x + X_1 ); }
int main( void )
{
unsigned int cnt = 1;
double old_val = INITIAL_VALUE;
double new_val;
for(;;cnt++){
new_val = old_val - f(old_val) / df(old_val);
if( fabs(new_val - old_val) < EPS ) break;
old_val = new_val;
if( cnt >= ITER_MAX ){
printf("didn't converge in %d times iteration.\n", ITER_MAX);
return -1;
}
}
printf("answer = %lf\n", new_val);
return 0;
}
0756デフォルトの名無しさん
2005/07/13(水) 21:51:33[2] 問題文(含コード&リンク):
データファイルensyuu18.datは,4バイトの整数データが10個書き込まれている40バイトの
データファイルである。このファイルから10個のデータを読み込み,その平均値を答えなさい。
(ただしバイナリーモードでファイルをオープンすること)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5.1
[3.3] 言語:C
[4] 期限:木曜PM24:00まで
[5] バイナリーモードがよくわかりません・・お願いいたします!!
0757デフォルトの名無しさん
2005/07/13(水) 22:00:22int main(void)
{
int num[10], sum, i;
FILE* fp = fopen("ensyuu18.dat", "rb");
if( fp == NULL) { return 1; } // 読み込みエラー
fread((void*)num, sizeof(int), 10, fp);
sum = 0;
for(i=0;i<10;i++) sum += num[i];
printf("AVG:%f\n", (double)sum / 10.0);
return 0;
}
0758デフォルトの名無しさん
2005/07/13(水) 22:04:53SUGEEEEEEEEEEE!!!
ありがとうございました!
0759デフォルトの名無しさん
2005/07/13(水) 22:07:000760デフォルトの名無しさん
2005/07/13(水) 22:14:300761デフォルトの名無しさん
2005/07/13(水) 22:31:21#include <stdio.h>
#include <string.h>
int main(void)
{
int n = 0;
while (scanf("%d", &n) != 1 && scanf("%*[^\n]") != EOF)
;
{
char sieve[n + 1];
int p, c;
memset(sieve, 1, sizeof(sieve));
sieve[1] = sieve[0] = 0;
for (p = 0; p * p < sizeof(sieve); p++)
if (sieve[p])
for (c = p + p; c < sizeof(sieve); c += p)
sieve[c] = 0;
for (p = 0; p < sizeof(sieve); p++)
if (sieve[p])
printf("%d\n", p);
}
return 0;
}
0762デフォルトの名無しさん
2005/07/13(水) 22:35:00お前が同じ大学の同じ授業取ってるという確信が俺にはある
修正入ってるけど問題文見ればほぼそのままだし
バイナリだとモードのとこにbつくだけ のはず
期限木曜24時じゃなくて今日の23:59なら間違いなく同じ
と734の俺が言ってみる
0763デフォルトの名無しさん
2005/07/13(水) 22:38:250764デフォルトの名無しさん
2005/07/13(水) 22:39:130765デフォルトの名無しさん
2005/07/13(水) 22:40:560766デフォルトの名無しさん
2005/07/13(水) 22:42:44うはwwwwwゴメスwwwwww
0767デフォルトの名無しさん
2005/07/13(水) 23:06:50[2] ハノイの塔の棒が四つバージョン。
[3] 環境
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 7/15まで。
[5] 特になし。
0768デフォルトの名無しさん
2005/07/13(水) 23:10:210769デフォルトの名無しさん
2005/07/13(水) 23:15:12ここがいかんなw
0770デフォルトの名無しさん
2005/07/13(水) 23:20:38http://bal4u.dip.jp/mt/program/archives/2005/04/nmc.html
0771434−435
2005/07/13(水) 23:20:53木曜日が最終提出期限だったのですが。。。
骨組みとかまでの適当でも構わないのでおねがいします(´Д⊂
0772デフォルトの名無しさん
2005/07/13(水) 23:21:000773デフォルトの名無しさん
2005/07/13(水) 23:22:04入力ファイルのフォーマットがみょうちくりんで
めんどくさい。
0774デフォルトの名無しさん
2005/07/13(水) 23:24:580775デフォルトの名無しさん
2005/07/13(水) 23:25:15下手な釣り方じゃ難しいだろうな。
プログラマのみなさんはめんどくさいの大嫌いなのです、きっと。
その問題の用件満たすもの作るのはプログラミングというよりは事務作業だ。
0776デフォルトの名無しさん
2005/07/13(水) 23:32:14番号 ゲーム数 ゲーム数 ゲーム数
#1 #2 #3 #4 #5 #1 #2 #3 #4 #5 #1 #2 #3 #4 #5
1 6 3 5 7 9 8 8 5 2 0 3 7 6 5 2
2 1 2 4 7 10 10 10 3 7 10 5 7 7 8 9
3 2 4 2 5 2 1 8 10 3 6 6 7 6 8 5
4 5 8 0 10 0 9 8 9 10 10 5 5 5 3 5
5 1 2 3 4 5 6 7 8 9 10 9 8 7 9 5
6 8 8 4 8 3 6 7 2 8 6 8 9 8 2 0
7 6 6 1 6 6 1 6 7 4 9 1 8 10 5 3
8 7 3 4 7 2 8 9 7 3 2 4 5 10 9 7
>>434-435
member_data.dat には上のデータもあるらしいけど
これなに??問題見た感じでは必要ないと思うんだけど。
0777デフォルトの名無しさん
2005/07/13(水) 23:33:33最短手数を求めるだけだが。
#include <stdio.h>
int hanoi3(int n) { return (1 << n) - 1;}
int hanoi4(int n) {
if (n == 1) return 1;
else {
int min = 2 + hanoi3(n - 1);
int k = 2;
for (; k < n; k++) {
int v = hanoi4(k) * 2 + hanoi3(n - k);
if (min > v) min = v;
}
return min;
}
}
int main(void)
{
printf("%d\n", hanoi4(16));
return 0;
}
0778デフォルトの名無しさん
2005/07/13(水) 23:41:050779デフォルトの名無しさん
2005/07/13(水) 23:50:57じゃねーんだよ。金ももらえんのに、タダで答えてやってるんだから、
手を抜いて当然。
0780デフォルトの名無しさん
2005/07/13(水) 23:51:59どんな分野でもある程度技術を用いる仕事をするようになればわかるよ
0781デフォルトの名無しさん
2005/07/13(水) 23:53:39生産的な怠惰と言って欲しいな
0782デフォルトの名無しさん
2005/07/14(木) 00:15:390783デフォルトの名無しさん
2005/07/14(木) 00:16:18質問する側のお前が言うな。
0784デフォルトの名無しさん
2005/07/14(木) 00:17:250785デフォルトの名無しさん
2005/07/14(木) 00:19:200786デフォルトの名無しさん
2005/07/14(木) 00:22:280787デフォルトの名無しさん
2005/07/14(木) 00:24:00>>786
0788デフォルトの名無しさん
2005/07/14(木) 00:35:03こういう言葉の通じない猿が一番性質悪い
0789デフォルトの名無しさん
2005/07/14(木) 00:41:12猿はお前。
0790デフォルトの名無しさん
2005/07/14(木) 00:43:34まだ大丈夫なのかね?
0791デフォルトの名無しさん
2005/07/14(木) 01:25:17ただし、将棋盤なので8×8では
無く9×9とし、9枚配置するものとする。
・配置は全部で何通りあるかを求めるプログラムを作成せよ
という問題があるんですが、解けますか???
0792デフォルトの名無しさん
2005/07/14(木) 01:26:31>8クイーン同様に互いの効きを外すようにして
がわからん
0793デフォルトの名無しさん
2005/07/14(木) 01:29:12お願いしますm(__)m
0794デフォルトの名無しさん
2005/07/14(木) 01:29:42>>1
0795デフォルトの名無しさん
2005/07/14(木) 01:34:20[2] 龍馬(将棋)を8クイーン同様に互いの効きを外すようにして配置することを考える。
ただし、将棋盤なので8×8では
無く9×9とし、9枚配置するものとする。
・配置は全部で何通りあるかを求めるプログラムを作成せよ
[3]
[3.1] OS:Windows/
[3.2] visualstadio.net
[3.3] 言語:どちらでも可
[4] 期限:今
[5] その他の制限:8クイーン
0796デフォルトの名無しさん
2005/07/14(木) 01:36:46期限過ぎちゃいましたね
0797デフォルトの名無しさん
2005/07/14(木) 01:37:16>[5] その他の制限:8クイーン
0798デフォルトの名無しさん
2005/07/14(木) 01:37:57[2] 龍馬(将棋)を8クイーン同様に互いの効きを外すようにして配置することを考える。
ただし、将棋盤なので8×8では
無く9×9とし、9枚配置するものとする。
・配置は全部で何通りあるかを求めるプログラムを作成せよ
[3]
[3.1] OS:Windows/
[3.2] visualstadio.net
[3.3] 言語:どちらでも可
[4] 期限:できるだけはやく
[5] その他の制限:バックトラック法をつかって
0799デフォルトの名無しさん
2005/07/14(木) 01:40:49斜め方向なら何目でも、縦横方向なら一目だけ進むことができる。
まずはここからだな
0800デフォルトの名無しさん
2005/07/14(木) 01:43:39次の一手の指し方の数求める?
上でいいのか?
0801デフォルトの名無しさん
2005/07/14(木) 01:45:040802デフォルトの名無しさん
2005/07/14(木) 01:46:54もちろん二歩とかも計算しないとな
0803デフォルトの名無しさん
2005/07/14(木) 01:51:24うーんと、龍馬の効き筋に居なければ、駒が複数同じ列に居てもいいとおもうけど、どうかな
0804デフォルトの名無しさん
2005/07/14(木) 02:04:408行8列の板にクイーンを8個置くというプログラミングで僕がお願いしたのはそれの
龍馬バージョンすなわち8行8列の板に竜馬効きのない所に8個置くといういう問題な
ので二歩とか関係ないです
0805デフォルトの名無しさん
2005/07/14(木) 02:14:230806デフォルトの名無しさん
2005/07/14(木) 02:16:32あるのは9つの龍馬だけだよ
0807デフォルトの名無しさん
2005/07/14(木) 02:16:57そのレスでやっとわかった!
■□□□□□□□■
□■□□□□□■□
□□■□□□■□□
□□□■■■□□□
□□□■■■□□□
□□□■■■□□□
□□■□□□■□□
□■□□□□□■□
■□□□□□□□■
こういうのを並べろって話だな
0808デフォルトの名無しさん
2005/07/14(木) 02:18:47がんばってください!!お願いします!!!!
0809デフォルトの名無しさん
2005/07/14(木) 02:21:10#include <stdio.h>
int main() {
printf("%s", "0 とおりのおき方が見つかりました\n");
return 0;
}
0810デフォルトの名無しさん
2005/07/14(木) 02:21:550811デフォルトの名無しさん
2005/07/14(木) 02:24:038クイーンではどーやってんだろ(?)
・・・まーぼちぼち、組んでみますか。
0812デフォルトの名無しさん
2005/07/14(木) 02:26:558クイーンのコードあれば参考になるんだろうが
0813デフォルトの名無しさん
2005/07/14(木) 02:33:28#include <stdlib.h>
#define QS(8)
#define QMASK((1<<(QS))-1)
#define QMSB(QMASK&~(QMASK>>1))
void
eq(unsigned s, unsigned u, unsigned m[], unsigned l, unsigned r)
{
if (!u) {
putchar('\n');
for (unsigned i = 0; i < QS; i++) {
for (unsigned j = QMSB; j & QMASK; j >>= 1)
putchar(m[i]&j ? '!' : '.');
putchar('\n');
}
} else {
unsigned uu = u & ~(l|r);
while (uu) {
unsigned b = uu&~(uu-1);
uu ^= b;
m[s] = b;
eq(s+1, u^b, m, (l|b)<<1, (r|b)>>1);
}
}
}
0814デフォルトの名無しさん
2005/07/14(木) 03:08:590815デフォルトの名無しさん
2005/07/14(木) 03:28:490816デフォルトの名無しさん
2005/07/14(木) 03:36:360817デフォルトの名無しさん
2005/07/14(木) 05:07:290818デフォルトの名無しさん
2005/07/14(木) 05:24:080819デフォルトの名無しさん
2005/07/14(木) 05:39:53リストにしておき、新しく求まった解を回転/鏡像回転して、今まで求めた解と
一つ一つ比較するという、恐ろしく効率の悪いものだった。
http://www.pro.or.jp/~fuji/puzzlestudy/recursive/index.html
↑ここはパズルでは有名なサイト。運営者さんは既にかなりお年を召してらして、
C++が頭に入らない様子だが、Cとパズルに関してはプロでいらっしゃるようなので、
参考になるだろう。
0820デフォルトの名無しさん
2005/07/14(木) 08:35:26うわぁ、翁のページだ。
ところで亀で恐縮だが、
>732
>Emacsにはコンパイルボタンが付いてるから
???
0821デフォルトの名無しさん
2005/07/14(木) 08:42:53[2] 問題文(含コード&リンク): 構造体を用いて、縦横(各被験者ごと/科目ごと)を集計し、総点、平均点、最高点を求めよ
(deta.txtを読み込む)
deta.txt
氏名 英語 数学 国語 理科 社会
A 70 56 66 45 88
B 66 85 68 55 73
C 55 65 53 67 55
D 85 72 76 58 62
E 92 70 45 73 55
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:本日五時まで
お願いします
0822デフォルトの名無しさん
2005/07/14(木) 08:44:430823デフォルトの名無しさん
2005/07/14(木) 08:46:090824デフォルトの名無しさん
2005/07/14(木) 08:47:070825デフォルトの名無しさん
2005/07/14(木) 09:01:160826デフォルトの名無しさん
2005/07/14(木) 09:32:27回転/鏡像解ぬき8480779個(20分かかる・・・)
個数のチェック誰かたのむ。
しかし・・・なんだな。プログラムがショボすぎて見せられん。
診断室に出せそうなレベルだ(鬱)
0827デフォルトの名無しさん
2005/07/14(木) 09:54:50ウンコが出たんだな、きっとそうだ、うん。
0828デフォルトの名無しさん
2005/07/14(木) 10:04:32読み込みまでしかやってませんが疲れたので…
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/717.c
0829デフォルトの名無しさん
2005/07/14(木) 10:18:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/718.txt
0830デフォルトの名無しさん
2005/07/14(木) 12:28:07seiseki.txt の間違いじゃないのか?
前プログラム作ってやっただろ、むかつく奴だなテメー
仕様と違ってたならそう書けばいいだろうに、C言語なら俺に聞け のスレでも
同じように聞いて回ってるし・・・ 礼儀知らずにも程がないかい?
ま、他の方たちと比べるとしょぼいのは認めるけどさ、あんまりだ
0831デフォルトの名無しさん
2005/07/14(木) 13:19:14そういう時は以前の回答をリンクしたりコピペすればええ。
0832デフォルトの名無しさん
2005/07/14(木) 13:49:01[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/719.txt
[3] 環境
[3.1] OS:WindowsXP SP2
[3.2] コンパイラ(バージョン): Microsoft Visual Studio .NET 2003
[3.3] 言語:C
[4] 期限:2005年8月3日まで
[5] その他の制限:特になし
よろしくお願いしますm(_ _)m
0833デフォルトの名無しさん
2005/07/14(木) 14:01:50[2] 問題文(含コード&リンク):住所録 メニュー:追加、修正
項目:名前、住所、電話番号(市外局番、局番、番号)年齢
*名前=20文字(半角)住所=サイズが可変(ただし最大255文字)
*電話番号(市外局番=4桁、局番=2桁、番号=4桁)
*年齢=0〜120
データレコード最大数=10000件
*注意事項=データレコードが10000件に満たない場合にメモリ上に10000件分のエリアは用意しないこと
データファイルについて
データファイルはバイナリファイルとし、ファイル名は”ADRSDB.DAT”とする
修正が選択されたならば、選択されたレコードを表示する
[3] 環境
[3.1] Windows2000
[3.2] コンパイラ(バージョン): .cpp
[3.3] 言語:どちらでも可
[4] 期限:2005年7月14日17:00まで
[5] その他の制限:どこまで習っているか、=CとC++をかじった程度ならべく簡単にお願いします。
よろしくお願いします。
0834デフォルトの名無しさん
2005/07/14(木) 14:18:19あ、マンドクサイからボタンて言っちゃった。
メニューバーの Tools→Compile...
でMakefileを探して実行してくれる。
コマンドはわからないから、メニューバーなんかねぇよ。とか言われたら困る
ちなみにXEmacsだとボタンが付いてる。
0835デフォルトの名無しさん
2005/07/14(木) 14:22:42大丈夫、compileコマンドなら使っているから。
そうか、メニューバー(つーかGUI)使ってないけど便利なのかもね。
0836デフォルトの名無しさん
2005/07/14(木) 14:25:190837デフォルトの名無しさん
2005/07/14(木) 14:26:00[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/720.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:明日
[5] その他の制限:特になし
切にお願いします。
0838434
2005/07/14(木) 14:40:52問題文そのまま移しましたので、いらない部分もあるかと思います><
4時半ごろまでに作成おねがいできるでしょうか?
0840デフォルトの名無しさん
2005/07/14(木) 18:30:06> [3.2] コンパイラ(バージョン): .cpp
> [3.3] 言語:どちらでも可
>[4] 期限:2005年7月14日17:00まで
>[5] その他の制限:どこまで習っているか、=CとC++をかじった程度ならべく簡単にお願いします。
�@コンパイラの欄にみんなgccとかbccとか書いてるからって適当に書くのはやめましょう
�A言語はいっぱいあります。2行下を読まなくても分かるように書きましょう
�B投稿する前に文を読み返しましょう、もしくは方言を使わないようにしましょう
0842デフォルトの名無しさん
2005/07/14(木) 18:51:48そゆことだな
0843デフォルトの名無しさん
2005/07/14(木) 19:05:570844デフォルトの名無しさん
2005/07/14(木) 19:05:57[2] 問題:
スタック構造を使って逆ボーランドを製作せよ。プログラムには
プッシュ、ポップ、演算をそれぞれ関数化し、作成すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5.1
[3.3] 言語:C
[4] 期限: 今週の日曜日の夕方くらいでお願いします。
[5] 制限:説明がついていますと,とてもうれしいです。
よろしくお願いします。
0846デフォルトの名無しさん
2005/07/14(木) 19:22:53#include <stdio.h>
#define STACK_SIZE 256
typedef struct{ char buf[STACK_SIZE]; int current; }stack_t;
void push(stack_t *stk, char data){ if( stk->current < STACK_SIZE ) stk->buf[stk->current++] = data;}
char pop(stack_t *stk){if( stk->current != 0) return stk->buf[--stk->current]; else return 0;}
int main()
{
static stack_t s;
char *p, *str = "ポーランド";
char tmp[3] = {0};
for( p = str; *p; p+=2 ){ push(&s, *(p+1)); push(&s, *p);}
while(0 != (tmp[0] = pop(&s))){tmp[1] = pop(&s);printf("%s", tmp);}
putchar('\n');
return 0;
}
0847デフォルトの名無しさん
2005/07/14(木) 19:25:44それが「コンパイラ」だと思ったわけですか?
0848デフォルトの名無しさん
2005/07/14(木) 19:56:580849844
2005/07/14(木) 20:10:49大変申し訳ないのですが、このプログラムをここでこうして
ああしてなど、説明しなければならないのですが、
よろしければ、その説明もしていただけないでしょうか?
お願いします。
0850デフォルトの名無しさん
2005/07/14(木) 20:23:200851デフォルトの名無しさん
2005/07/14(木) 21:16:210852デフォルトの名無しさん
2005/07/14(木) 21:20:32あらごめんwww
0853デフォルトの名無しさん
2005/07/14(木) 22:01:07俺もそうなった。(50秒ぐらい)
3マス2枚とか4マス2枚とか、小さい数字で確認したから多分間違いない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/721.c
0854トタケケ
2005/07/14(木) 22:56:54お願いします!
[1] 授業単元:計算機数学序論
[2] 問題文(含コード&リンク):0時0分からa時b分(0<=a<24,0<=b<60)
までの時間を計算する関数Timeを作り、それを使い、2つの時刻
a1時b1分とa2時b2分をキーボードから入力して(a2時b2分の方が
a1時b1分より後とする)、「a1時b1分からa2時b2分までの時間は
○時間○分です。」と表示せよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ(バージョン):
Microsoft VisualStudio 6.0
[3.3] 言語:C++
[4] 期限:今日中
[5] その他の制限:関数、配列まで習ってます。
今日中にできますかねぇ?お願いします!!
0855デフォルトの名無しさん
2005/07/14(木) 23:08:20その問題なら最近見たぞ。このスレをよく見て味噌。
0856デフォルトの名無しさん
2005/07/14(木) 23:11:34{
int t1, t2;
t1 = 60*a1+b1;
t2 = 60*a2+b2;
if(t1<t2){
puts("error time1のほうが後です。");
return 0;
}
printf("%d時%d分から%d時%d分までの時間は%d時間%d分です。\n"
, a1, b1, a2, b2, (t1-t2)/60, (t1-t2)%60);
return 1;
}
0857デフォルトの名無しさん
2005/07/15(金) 00:15:03[2] 問題文(含コード&リンク):
出席番号101、102、103、104、105の5人の学生のテストの点数を入力し成績処理するプログラムを作れ。
結果の出力はこのようする。
出席番号 点数 成績
101 90 S
102 80 A
103 45 D
104 60 C
105 76 B
平均点:70
点数の判定基準
90点以上 = S
80点以上90点未満 = A
70点以上80点未満 = B
60点以上70点未満 = C
60点未満 = D
[3] 環境
[3.1] OS:Windows Me
[3.2] コンパイラ(バージョン):C machine Version 2.02
[3.3] 言語:C?
[4] 期限:今日
[5] その他の制限:変数、データ構造 配列、制御構造 繰り返し,if
環境とかよくわからないので変なことかいてあるかも…
もう切羽詰って泣きながらやっているのですが…
だれか助けてください
0858デフォルトの名無しさん
2005/07/15(金) 00:35:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/722.txt
C machine 懐かしいww
0859857
2005/07/15(金) 01:10:24ありがとうございます!!!
本当に感謝します!!
でも…
もう一問あったんでどなたかお願いできませんでしょうか…(´・ω・`)
[2] 問題文(含コード&リンク):
問1
商品の金額を入力すると、消費税額を計算して表示するプログラム
[消費税と商品の税抜き金額の表示]
[消費税率は変動する可能性があるのでプリプロセッサ(#define)を使う]
問2
商品の金額を入力する前に、税込価格か税抜価格かを入力し、税抜価格だったら消費税を計算して、消費税と税込価格を表示させる
問3
10回繰り返して金額を入力して計算できるようにする
[繰返しの途中でも終了できるようにする]
[while文を使って終了するまで何度でも繰り返せるようにする]
0860857
2005/07/15(金) 01:12:22繰返して入力した金額を合計して、総額(税込)を最後に表示させる
問5
複数の客の購入金額を繰返して入力して、各客の総額を最後に表示できるようにする
[全ての客の総額(総売上額)も表示させる]
問6
プログラムのソースに、/* */で囲み注釈を適宜記述
問題文のみ書かせていただきます。
他は>>857の通りです。
[ ]内は発展問題ですので、どうしてもというわけではありません。
次から次へ図々しいのは承知してますが、よろしくお願いいたします。
0861デフォルトの名無しさん
2005/07/15(金) 02:19:10/* 内税商品金額から消費税額を求める */
問2 int f, x, tax; scanf("%d %d", &f, &x); if (f) {tax = x * 0.05; printf("%d %d\n", tax, x + tax); }
/* 0 金額 の時は問題文に動作がかいてないので何もしない、1 金額 のときは消費税額と合計額を出力 */
問3,4 int i, x, sum = 0; for (i = 0; i < 10; i++) {scanf("%d", &x); sum += x; } printf("%d\n", sum);
/*10回金額を受け取り、その後、合計金額を出力する。 */
問5 int x; while (scanf("%d", &x)) { printf("%d", x); }
/* ユーザーに各客の購入総額を入力させ、それを出力する */
問6 やってある。
補足てきとーに#include .. やら main()やら おぎなってくだちい。
0862デフォルトの名無しさん
2005/07/15(金) 02:24:19[2]ファイルスコープとひとつの関数全体に関係するブロックスコープを持つ変数の宣言する位置および、その変数の使い方、有効な範囲のついて使い方の相違を説明せよ。
[3] 環境
[3.1]Windows
[3.3] 言語C++
[4] 期限:緊急
[5] その他の制限:関数まで
はじめまして。本日テストを控えていまして、自分達の力ではどうしようもないでした。どなたか親切な方ご教授お願いします。
0863デフォルトの名無しさん
2005/07/15(金) 02:39:20宣言位置、関数の外。
変数の使い方、引数でパラメータを渡すと宣言等が面倒になるため、パラメータを渡す用途で用いる。
有効な範囲、ファイル全体。
関数全体に関係するブロックスコープを持つ変数。
宣言位置、関数の外。
変数の使い方、実はファイルスコープの変数でも問題ないが、関数の先頭に書いておくことで、その関数がどの変数を使うかが分かりやすくなる。
有効な範囲、関数全体。
0864デフォルトの名無しさん
2005/07/15(金) 02:42:03>宣言位置、関数の外。
へ〜
0865858
2005/07/15(金) 02:44:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/724.zip
(;´ρ`)チカレタヨ・・・
問5とか単に金額を総計しただけ。
消費税とか計算してないからね!
眠りながらやったので間違いあるかもだから自分でチェックしてね〜
0866デフォルトの名無しさん
2005/07/15(金) 02:45:08ありがとうございました!!お陰で助かりました。本日のテストがんばらせていただきます
0867デフォルトの名無しさん
2005/07/15(金) 02:53:59すまんすまん。関数の中ね。
>>866 がんばれー。
俺んときはstaticを説明せよってのが出た。値を変えない変数と答えておいた。
0868864
2005/07/15(金) 03:02:20へ〜
ぢゃぁconstは?
0869デフォルトの名無しさん
2005/07/15(金) 03:04:100870デフォルトの名無しさん
2005/07/15(金) 04:27:26×const double pi = 3.1415926535;
さて、どうするか…
0871デフォルトの名無しさん
2005/07/15(金) 04:33:070872デフォルトの名無しさん
2005/07/15(金) 04:38:080873デフォルトの名無しさん
2005/07/15(金) 08:56:550874デフォルトの名無しさん
2005/07/15(金) 09:14:540875デフォルトの名無しさん
2005/07/15(金) 09:17:350876デフォルトの名無しさん
2005/07/15(金) 09:58:03[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/725.zip
[3] 環境
[3.1] OS:RedhatLinux9
[3.2] コンパイラ(バージョン): 付属コンパイラ
[3.3] 言語:C
[4] 期限:本日
[5] その他:まずmylibフォルダをコンパイルして、それからdaemonフォルダをコンパイルして出力された「bb9d」を実行するとクライアントが起動するまで待っていて、
他の端末で「bb9reader」を起動するとプログラムが実行できるのですがなぜか 「bb9d」を立ち上げた段階でプログラムが起動してしまうのですがどうすればいいのでしょうか?
0877デフォルトの名無しさん
2005/07/15(金) 10:38:14ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/727.txt
0878デフォルトの名無しさん
2005/07/15(金) 12:01:400879デフォルトの名無しさん
2005/07/15(金) 12:12:01既にヒントの段階でランダムウォークしているんだから、後は正気に戻るロジックを書けばいいじゃん。
つーか、ヒントが汚いから追加する気になれん。
0880デフォルトの名無しさん
2005/07/15(金) 13:00:50[2]
問題文(含コード&リンク)
:現在の時刻を表示する関数
void put_time(void){.....}
を作りなさい。
[3] 環境
[3.1] OS:Windows2000
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:7月21日
[5] その他の制限:構造体が終わったところです。
参考プログラムとして、今日の日付を表示するプログラムがあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/728.txt
0881デフォルトの名無しさん
2005/07/15(金) 13:10:40void put_time(void) {
time_t current;
struct tm *local;
time(¤t);
local = localtime(¤t);
printf("%02d:%02d:%02d", local->tm_hour, local->tm_min, local->tm_sec);
}
0882デフォルトの名無しさん
2005/07/15(金) 13:14:57void put_time(void)
{
time_t now = time(NULL);
char buf[20];
strftime(buf, sizeof(buf), "%H:%M:%S", localtime(& now));
}
0883デフォルトの名無しさん
2005/07/15(金) 14:18:15しかし
¤
の文字は一体………………
キーボードで押すところありますでしょうか。
0884デフォルトの名無しさん
2005/07/15(金) 14:29:46kadai.c: In function `put_time':
kadai.c:3: `time_t' undeclared (first use in this function)
kadai.c:3: (Each undeclared identifier is reported only once
kadai.c:3: for each function it appears in.)
kadai.c:3: parse error before `now'
kadai.c:5: `now' undeclared (first use in this function)
orz
0885844
2005/07/15(金) 14:29:49この問題の説明だれかお願いしますー。
0886デフォルトの名無しさん
2005/07/15(金) 14:36:13& に読みかえるべし。
0887デフォルトの名無しさん
2005/07/15(金) 14:38:12参考プログラムに >>881 >>882 のプログラムを追加するんだ。
ちなみに、882のやつは時刻を表示しないので、仕様を満たしてないようだ。
0888882
2005/07/15(金) 14:56:43#include <time.h>
を適当に入れてくれ。
>>887
あ、忘れてた。
strftime(...);の次の行でprintf(buf);だね。
0889デフォルトの名無しさん
2005/07/15(金) 15:08:47エラーが出まくりで何がなんだか…
>>888
先頭に #include <time.h> 入れてみました。
bash-2.05$ gcc -lm kadai.c
/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/crt1.o(.text+0x5c): In functi
on `.nope':
: undefined reference to `main'
collect2: ld returned 1 exit status
gccのバージョンが古いんです。だから駄目なんでしょうか。
0890イン
2005/07/15(金) 15:12:38[2] 問題文(含コード&リンク):
http://users.kyoto-kcg.ac.jp/~k-konishi/Program/CProgram/section4-2.htm
ここのページの1番下にある演習4−2です。
[3] 環境 [3.1] OS:Windows2000
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:今度の日曜日17日いっぱいまで
double atof(char s[])
{
以下はわかるのですが、main文他がわかりません。
0891882
2005/07/15(金) 15:13:29箸の上げ下ろしまで全て教えないと飯も喰えないのか?
main()関数くらい自分で適当にでっち上げてくれ。
int main() {put_time(); return 0;}
0892デフォルトの名無しさん
2005/07/15(金) 15:17:11そのテキストの上の方にあるmain()「原始的な電卓」でも使っとけ。
つーか、本当にatof()の書き方は判ったのか?
それはさておき、随分とアナクロなCを教えているなぁ。
社会で全く役に立たないCか……
折角だから通報しておくか。
0893デフォルトの名無しさん
2005/07/15(金) 15:19:09ハァ…。赤ん坊は箸は使えないんですが。
とりあえずやってみます。ありがとうございました。
0894デフォルトの名無しさん
2005/07/15(金) 15:20:56赤ん坊はそんな舐めた口はきかねぇなぁ。
0895デフォルトの名無しさん
2005/07/15(金) 15:21:430896820
2005/07/15(金) 15:29:45#include <time.h>
#include <stdio.h>
int main()
return 0;
使ってみたらコンパイル出来ました。ですが、時間が表示されません。
strftime(...);
の行のあとにprintf(buf);
を入れても駄目です。
0897デフォルトの名無しさん
2005/07/15(金) 15:29:570898デフォルトの名無しさん
2005/07/15(金) 15:45:50japan と言えば漆、china と言えば磁器と言うように、国の名前が一般名詞として
別の意味になることがある。
そこで、ポーランドがなにを意味するのかを考えて、さらに逆ポーランドが
思いつけばオッケーなのでは?
0899880
2005/07/15(金) 15:51:05やりますた。
おふた方ありがとう。
0900890
2005/07/15(金) 15:52:43どっちも教科書に載っていました・・・
どうもありがとうございました。
0901デフォルトの名無しさん
2005/07/15(金) 15:53:09おまい、もうこなくていいから。
0902デフォルトの名無しさん
2005/07/15(金) 15:59:45#include <stdio.h>
#include <math.h>
#define N 10000 /* ステップ数 */
#define T 1000 /* t=0 から t=T まで計算する */
double f1(double t, double x,double y);
double f2(double t, double x,double y);
int main(){
double t[N+1], x[N+1],y[N+1], dt, k11,k12,k21,k22,k31,k32,k41,k42; int i;
dt=(double)T/(double)N; /* ステップ幅 */
printf("dt=%f\n",dt);
t[0]=0.0; x[0]=100;y[0]=100; /* 初期値の設定 */
for(i=0;i<N;i++){
k11=dt*f1(t[i],x[i],y[i]);
k12=dt*f2(t[i],x[i],y[i]);
k21=dt*f1(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2); k22=dt*f2(t[i]+dt/2,x[i]+k11/2,y[i]+k12/2);
k31=dt*f1(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2); /* 未完成 */
k32=dt*f2(t[i]+dt/2,x[i]+k21/2,y[i]+k22/2);
k41=dt*f1(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2); /* 未完成 */
k42=dt*f2(t[i]+dt/2,x[i]+k31/2,y[i]+k32/2);
x[i+1]=x[i]+(k11+2*k21+2*k31+k41)*1/6;
y[i+1]=y[i]+(k12+2*k22+2*k32+k42)*1/6;
0903902続き
2005/07/15(金) 16:01:09return(0);
}
double f1(double t, double x,double y);
{
return (0.01*x-0.0001*x*y);
}
double f2(double t, double x,double y);
{
return (-0.05*x+0.0001*x*y);
}
というプログラムで「error C2447: グローバルスコープで中カッコ ({) が見つかりましたが、対応する関
数ヘッダーがありません。」というエラーが出たんですが対処法が分かりません。どうか教えてください。
0904デフォルトの名無しさん
2005/07/15(金) 16:08:47>844は逆ポーランドなんて言ってない
0905デフォルトの名無しさん
2005/07/15(金) 16:09:04{
return (0.01*x-0.0001*x*y);
}
double f2(double t, double x,double y);
{
return (-0.05*x+0.0001*x*y);
}
の部分の double f1(double t, double x,double y); ← ; は必要ない。
0906898
2005/07/15(金) 16:40:42しまった。逆ボーランドか……
すっげー、引っかけ問題だな。まあ引っかかってしまって言い訳がましいが。
>>844
すまん。これ、私の手に負えるような問題じゃないや。超難問。
0907844
2005/07/15(金) 16:51:50プログラムの説明をしなければならないので、プログラムで
ここがこうで、あそこがこうなってーみたいな説明が欲しいんです(><)
0908デフォルトの名無しさん
2005/07/15(金) 16:55:490909デフォルトの名無しさん
2005/07/15(金) 16:56:01それは自分で考えろ。
というか、授業で原理の解説くらいあったんだろ?
その解説とソースを見ていけば普通分かる。
0910デフォルトの名無しさん
2005/07/15(金) 17:04:49それ逆ボーランドだと思ってるの本気で?
0911デフォルトの名無しさん
2005/07/15(金) 17:10:29宿題なんですけど できませんか?
0912デフォルトの名無しさん
2005/07/15(金) 17:10:50次にこれらの関数を使って、2 から 10000 までの間にあるすべての完全数を プリントアウトするプログラムを作成しなさい。
0913デフォルトの名無しさん
2005/07/15(金) 17:11:050914デフォルトの名無しさん
2005/07/15(金) 17:17:07それは無理なんじゃないかな?
要するに4次元のベクトルに全順序を定義できるかだけど、
各要素の大小関係では例えば、 (1,0,0,0) と (0,1,0,0) なんかは
比較不能になるんじゃないかな?
0915デフォルトの名無しさん
2005/07/15(金) 17:26:350916デフォルトの名無しさん
2005/07/15(金) 17:29:05#include <stdio.h>
#include <stdlib.h>
int IsDivisor(int dividend, int divisor) {
return dividend % divisor ? 0 : 1;
}
int IsPerfect(int number) {
int i, sum = 1;
for (i = 2; i <= number / 2; i++) {
if (IsDivisor(number, i)) { sum += i; }
}
return number == sum;
}
int main(int argc, char **argv) {
int i;
for (i = 2; i <= 10000; i++) {
if (IsPerfect(i)) {
printf("%d\n", i);
}
}
return 0;
}
0917デフォルトの名無しさん
2005/07/15(金) 17:32:51実行すれば分かる予感(w
0919デフォルトの名無しさん
2005/07/15(金) 17:43:47サンクスモニカ
0920デフォルトの名無しさん
2005/07/15(金) 17:46:34ごめん、通らなかった。
0921デフォルトの名無しさん
2005/07/15(金) 17:48:57#include <iostream>
int IsDivisor(int dividend, int divisor) { return !(dividend % divisor);}
int IsPerfect(int number) {
int i, sum = 1;
for (i = 2;; i++) {
if (i * i >= number)
return number == (i * i == number ? sum + i : sum);
if (IsDivisor(number, i)) sum += i + number / i;
}
}
int main(int argc, char **argv) {
for (int i = 1; i <= 10000; i = i << 1 | i << 2) {
if (IsPerfect(i)) std::cout << i << endl;
}
}
0923デフォルトの名無しさん
2005/07/15(金) 17:50:22だからよくソース見てごらんて。
0924デフォルトの名無しさん
2005/07/15(金) 17:51:52gcc でつ。
0925デフォルトの名無しさん
2005/07/15(金) 17:53:46全角スペースよか&nbsp;を適度に入れてやるほうが親切ですよ。
0927デフォルトの名無しさん
2005/07/15(金) 17:57:18>>846は、ドンラーポって言ってるって事
0929デフォルトの名無しさん
2005/07/15(金) 17:59:15つかテンプレ嫁よ。
0930844
2005/07/15(金) 18:17:17これなら846さんの回答はあっているんでしょうか?
0931デフォルトの名無しさん
2005/07/15(金) 18:23:090932デフォルトの名無しさん
2005/07/15(金) 18:25:210933デフォルトの名無しさん
2005/07/15(金) 18:41:43>>927
これで>>844が釣りだったらワロス
0934デフォルトの名無しさん
2005/07/15(金) 18:47:270935デフォルトの名無しさん
2005/07/15(金) 18:54:23int main(void)
{
int c;
while ((c = getchar()) != EOF) {
switch (c) {
case '&':
printf("&");
break;
case '<':
printf("<");
break;
case '\t':
printf(" ");
break;
default:
putchar(c);
}
}
return 0;
}
0936デフォルトの名無しさん
2005/07/15(金) 19:33:17釣りだろう。演算子の種類くらいは指定するはず。
0937デフォルトの名無しさん
2005/07/15(金) 19:56:520938デフォルトの名無しさん
2005/07/15(金) 19:58:46逆ポーランドって、逆光沢仕上げ、つまりつや消し仕上げのこと?
0939デフォルトの名無しさん
2005/07/15(金) 20:08:44人待ちで暇だったから遊んでみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/731.c
お前さんのテンプレないから内容はこっちで勝手に解釈したぞ
仕様が違ってもシラネ
0940939
2005/07/15(金) 20:11:470941デフォルトの名無しさん
2005/07/15(金) 20:33:53#include <stdlib.h>
void detab(FILE *in, FILE *out, int n);
int main(int argc, char *argv[])
{
int n = 8;
if (argc > 1)
n = atoi(argv[1]);
detab(stdin, stdout, n);
return 0;
}
void detab(FILE *in, FILE *out, int n)
{
int c;
int i = 0;
while ((c = fgetc(in)) != EOF) {
switch (c) {
case '\t':
for ( ; i < n; i++)
fputc(' ', out);
i = 0;
break;
case '\n':
fputc(c, out);
i = 0;
break;
default:
fputc(c, out);
i = (i + 1) % n;
}
}
}
0942デフォルトの名無しさん
2005/07/16(土) 01:22:27もしかして844、プログラム設計とアルゴリズムって教科名かい?
0943デフォルトの名無しさん
2005/07/16(土) 02:23:03[2] 問題文(含コード&リンク): 住所録を作り表示するプログラムを作成しなさい。
人数は任意とする。構造体を用い、キーボードから入力すること。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:7/19午前中
[5] 構造体の所なんですがよくわかりません。よろしくお願いします。
0944デフォルトの名無しさん
2005/07/16(土) 03:15:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/732.txt
そろそろ次スレじゃね??・
0945デフォルトの名無しさん
2005/07/16(土) 03:29:27ちとまだ早いけど立てるの?立てないの?
0946デフォルトの名無しさん
2005/07/16(土) 03:49:49ありがとうございました。
どうやら問題を難しく解釈しすぎてたみたいです。
0947デフォルトの名無しさん
2005/07/16(土) 04:14:410948ミキミキ
2005/07/16(土) 08:03:21言語はA〜Cの中から選択をしてください。
A : Visual Basic
B : C/C++
C : Java
0949デフォルトの名無しさん
2005/07/16(土) 08:13:30それで?
0950ミキミキ
2005/07/16(土) 08:23:450951ミキミキ
2005/07/16(土) 08:25:14スレッド立てたので来て下さいな。
0952デフォルトの名無しさん
2005/07/16(土) 08:30:530953デフォルトの名無しさん
2005/07/16(土) 08:49:41素数は無限に存在するので制約条件がないと無理
0954デフォルトの名無しさん
2005/07/16(土) 08:53:22ぼるじょあがC/C++の宿題を片づけますYO! 48代目
http://pc8.2ch.net/test/read.cgi/tech/1121471445/
0955ミキミキ
2005/07/16(土) 08:54:44いちばん簡単のやつで…
0956デフォルトの名無しさん
2005/07/16(土) 09:06:53#include <stdio.h>
int main(void) {puts("2"); return 0;}
0957デフォルトの名無しさん
2005/07/16(土) 09:07:49どうがんばっても現代のコンピュータは無限を扱えない。
0958ミキミキ
2005/07/16(土) 09:15:23はい。
0959デフォルトの名無しさん
2005/07/16(土) 09:21:50// 素数を求めるプログラム
#include <stdio.h>
#include <windows.h>
#include <process.h>
// 検索する数字+2
#defineMAX 1000
// プロトタイプ
int IsPrime(int number);
unsigned __stdcall Prime(void *number);
// メイン
int main(int argc, char *argv[])
{
intiLoop;
intiThreadNumber = 0;
unsignedthreadaddr;
HANDLEhThread[MAX] = {0};
HANDLEtemp;
for(iLoop = 0; iLoop < MAX; iLoop++)
{
// スレッドを立てる
temp = (HANDLE)_beginthreadex(NULL, 0, Prime, (void *)(iLoop+2), 0, &threadaddr);
if(temp != 0){
hThread[iThreadNumber] = temp;
iThreadNumber++;
}
}
0960デフォルトの名無しさん
2005/07/16(土) 09:24:58WaitForSingleObject(hThread[iLoop], INFINITE);
if(hThread[iLoop] != NULL){
CloseHandle(hThread[iLoop]);
hThread[iLoop] = NULL;
}
}
return 0;
}
unsigned __stdcall Prime(void *number)
{
if(IsPrime((int)number) == 1)
{
printf("%d is prime number\n", (int)number);
}
_endthread((int)number);
return (int)number;
}
int IsPrime(int number)
{
int iLoop;
for(iLoop = 2; iLoop < number; iLoop++){
if(number % iLoop == 0){ return 0; }
}
return 1;
}
0961デフォルトの名無しさん
2005/07/16(土) 09:30:45WaitForSingleObjectやらハンガリアン記法やらWindows向けだね。
0962デフォルトの名無しさん
2005/07/16(土) 10:07:530963デフォルトの名無しさん
2005/07/16(土) 12:07:10プリントアウトするプログラムを作成しなさい。
[1] 授業単元: プログラミング
[2] 問題文整数は約数(1は含むが、その整数自身は含まない)の和がその整数に等しい とき、
完全数と呼ばれる。
引数numberが完全数である かどうかを判定する関数int IsPerfect(int number)と
約数判定関数int IsDivisor(int dividend, int divisor)を作成しなさい。
次にこれらの関数を使って、2 から 10000 までの間にあるすべての完全数を プリントアウトするプログラムを作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:7/17まで
[5] その他の制限:最初に、main関数がきて、後から、
int IsPerfect(int number)、IsDivisor(int dividend, int divisor)が
くるのをおねがいします。 あと、main関数内に、ループが着ます。
よろしくお願いします
0964デフォルトの名無しさん
2005/07/16(土) 12:28:34>あと、main関数内に、ループが着ます。
何を?
0965デフォルトの名無しさん
2005/07/16(土) 12:32:16#include <stdio.h>
#include <stdlib.h>
int IsPerfect(int number);
int IsDivisor(int dividend, int divisor);
int main(int argc, char **argv) {
int i;
for (i = 2; i <= 10000; i++) {
if (IsPerfect(i)) {
printf("%d\n", i);
}
}
return 0;
}
int IsDivisor(int dividend, int divisor) { return dividend % divisor ? 0 : 1; }
int IsPerfect(int number) {
int i, sum = 1;
for (i = 2; i <= number / 2; i++) {
if (IsDivisor(number, i)) { sum += i; }
}
return number == sum;
}
0966デフォルトの名無しさん
2005/07/16(土) 13:14:46逆ボーランド www
0967デフォルトの名無しさん
2005/07/16(土) 13:16:390968デフォルトの名無しさん
2005/07/16(土) 18:10:090969デフォルトの名無しさん
2005/07/16(土) 18:51:37[2] 問題文:文字列と整数を入力し、以下の結果になるようなプログラムを作れ
例)文字列:satou 整数8
s
sa
sat
sato
satou
satous
satousa
satousat
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ:.net2003
[3.3] 言語:C
[4] 期限:7/19
[5] その他の制限:for文でおながいします。
おねがいしますorz
0970デフォルトの名無しさん
2005/07/16(土) 18:58:15#include <stdlib.h>
#include <stdring.h>
int main(int argc, char *argv[])
{
char s[] = "satou";
int len = strlen(s);
int n = atoi(argv[1]);
int i, j;
for (i = 1; i <= n; i++) {
for (j = 0; j < i; j++) {
putchar(s[i%n]);
}
putchar('\n');
}
return 0;
}
0971デフォルトの名無しさん
2005/07/16(土) 19:13:08putchar(s[i%n]);
のところ
putchar(s[j%len]);
じゃないの?
0972デフォルトの名無しさん
2005/07/16(土) 19:15:180973デフォルトの名無しさん
2005/07/16(土) 19:15:40いや、テストすんのめんどーだったんです・・・
0974デフォルトの名無しさん
2005/07/16(土) 19:17:39{
char s[] = argv[1];
int len = strlen(s);
int n = atoi(argv[2]);
int i, j;
for (i = 1; i <= n; i++) {
for (j = 0; j < i; j++) {
putchar(s[i%len]);
}
putchar('\n');
}
return 0;
}
やはりテストしてないわし。
0975デフォルトの名無しさん
2005/07/16(土) 19:19:29[2] 問題文(含コード&リンク): 双方向リストにおける、リストの最後の次の位置を返すendl
リストの先頭の位置を返す(ただしリストが空ならendl)first、空リストを返すinitlistという各
関数を作成するもの
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン): 分かりません
[3.3] 言語:C
[4] 期限:なるたけ早く
[5] その他の制限:以下に俺が作成したセグメントエラーを起こしたものを貼ります。
/*双方向リストのヘッダファイルの読み込み*/
typedef int elementtype;
struct node{
elementtype element;
struct node * next;
struct node * previous;};
typedef struct node *link;
typedef link list;
typedef link position;
0976デフォルトの名無しさん
2005/07/16(土) 19:20:13#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
int i, n;
if (argc < 3) {
fprintf(stderr, "文字列と整数を指定せよ\n");
return 1;
}
n = atoi(argv[2]);
for (i = 0; i < n; ++i)
printf("%*s\n", i, argv[1]);
return 0;
}
0977デフォルトの名無しさん
2005/07/16(土) 19:20:57position i;
while(L->next!=0){
L=L->next;
}
i=L->previous->next;
return i->next;
}
list initlist(){
list n;
n=(list)malloc(sizeof(*n));
n->next=0;
n->previous=0;
return n;
}
position first(list L){
position p;
if(L!=initlist()){
p=L;
return p;}
else return endl(L);
}
間違いを指摘してください。
0978デフォルトの名無しさん
2005/07/16(土) 19:22:020979デフォルトの名無しさん
2005/07/16(土) 19:25:38オ�hル
0980デフォルトの名無しさん
2005/07/16(土) 19:29:40リストとノードの構造を分けて、
リストが先頭と末尾を保持するのが簡単だわな
typedef struct list {
struct node *first;
struct node *last;
} list;
position endl(list l) { return l->last; }
position start(list l) { return l->first; }
list initlist() {
list *l = malloc(sizeof(list));
l->first = l->last = (struct node*)list;
}
0981デフォルトの名無しさん
2005/07/16(土) 19:30:17⊂⌒( ・ω・) はいはいわろすわろす
`ヽ_っ⌒/⌒c
⌒ ⌒
(´〜`;)ああ、イヤダイヤダ。
夏厨が湧き出しちゃったよ。
これから9月まで2ch全体が
つまらなくなるだよな。さっさと
夏終われ。ガキは学校でクセエ
汁垂らして部活でもやってろ。
あーあー、ウザイウザイw
0982デフォルトの名無しさん
2005/07/16(土) 20:16:24int main(int argc, char **argv) {
int printf(const char *, ...), IsDivisor(int, int), IsPerfect(int), i;
for (i = 2; i <= 10000; i = i++)
if (IsPerfect(i)) printf("%d\n", i);
return 0;
}
int IsDivisor(int dividend, int divisor) { return !(dividend % divisor);}
int IsPerfect(int number) {
int i, sum = 1;
for (i = 2;; i++) {
if (i * i >= number)
return number == (i * i == number ? sum + i : sum);
if (IsDivisor(number, i)) sum += i + number / i;
}
}
0983982
2005/07/16(土) 20:29:09何だこりゃ
i++だけでいい
0984デフォルトの名無しさん
2005/07/16(土) 22:31:58[2] 問題文:
入力データは正の整数であり、入力順とは逆に線形リストに格納していき、
負の数の入力で入力終了とする。しかし、そこから再び入力を受け付け、
入力されたデータと一致するデータをリストから取り除くプログラムを作成せよ。
ただし毎回リスト全体を印字すること。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:2005年7月19日 12時まで
[5] その他の制限:できるだけ単純にお願いします。
0985デフォルトの名無しさん
2005/07/16(土) 23:16:56ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/735.txt
俺も勉強中なんで良くないソースだと思うが参考にでもしてくれ
0986デフォルトの名無しさん
2005/07/16(土) 23:37:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/736.c
もう回答出てるけどせっかく書いたから載せよっと。
0987デフォルトの名無しさん
2005/07/16(土) 23:44:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/738.c
0988デフォルトの名無しさん
2005/07/16(土) 23:46:400989デフォルトの名無しさん
2005/07/17(日) 00:05:47ありがとうございます。
とりあえず今、自分でやってるんですけど、
最後まで完成しなければ使わせてもらいます。
今のままじゃ無理な予感が充満してますけどw
0990デフォルトの名無しさん
2005/07/17(日) 00:14:38だとしたら
L->nextとかの表記ができなくなりません?
0991デフォルトの名無しさん
2005/07/17(日) 00:22:35簡単にしか見てないが980のは問題ないぞ
0992デフォルトの名無しさん
2005/07/17(日) 00:49:020993デフォルトの名無しさん
2005/07/17(日) 01:45:09[1] 授業名:Cプログラミング基礎
[2] 問題:
クイックソートによる整列のプログラムで、
正の整数の入力を受け付け、負の数の入力により、
これまで入力されたデータのソート結果を表示するプログラムを作成する。
入力は最大10万個まで受け付けるものとする
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5.1
[3.3] 言語:C/C++どちらでも
[4] 期限:2005年7月18日中で。
[5] その他の制限: 馬鹿でもわかるように簡単(易しく)にお願いします。
0994デフォルトの名無しさん
2005/07/17(日) 01:47:12ただのクイックソートなんて死ぬほどサンプルコードあるんだから自分で探せ
0995デフォルトの名無しさん
2005/07/17(日) 02:03:17は?
クイックソート作れなんて問題にないし
qsort()使えばいいんじゃねの?
0996デフォルトの名無しさん
2005/07/17(日) 02:04:09それなら尚のこと困る点皆無じゃねーか
0997デフォルトの名無しさん
2005/07/17(日) 02:29:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/739.txt
バカにもわかったふりができるようにqsortの中身は隠してます。
0998デフォルトの名無しさん
2005/07/17(日) 02:31:32お前みたいな馬鹿にも答えられる問題だ。さっさと答えてやれ。
0999デフォルトの名無しさん
2005/07/17(日) 02:33:34バカバカうるせーよバカwww
1000デフォルトの名無しさん
2005/07/17(日) 02:34:4110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。