C/C++の宿題を片付けます 66代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/07/05(水) 19:10:06【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0002デフォルトの名無しさん
2006/07/05(水) 19:29:090003デフォルトの名無しさん
2006/07/05(水) 19:33:11∧ _ - ― = ̄  ̄`:, .∴ ' ( )キャイン
, -'' ̄ __――=', ・,‘ r⌒> _/ / ← >>1
/ -―  ̄ ̄  ̄"'" . ’ | y'⌒ ⌒i
/ ノ | / ノ |
/ , イ ) , ー' /´ヾ_ノ
/ _, \ / , ノ
| / \ `、 / / /
j / ヽ | / / ,'
/ ノ { | / /| |
/ / | (_ !、_/ / 〉
`、_〉 ー‐‐` |_/
0004デフォルトの名無しさん
2006/07/06(木) 10:34:32だぶったのか?
若返ったのか?
0005デフォルトの名無しさん
2006/07/20(木) 19:55:540006デフォルトの名無しさん
2006/07/20(木) 20:03:26出題者のソースを読まずに回答
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2415.c
ただのバックとラックです。
ポイントは、重複チェックをstrchrでやってるとこ。たいしたもんじゃないけど。
0007デフォルトの名無しさん
2006/07/20(木) 20:11:21#include<stdio.h>
char block[9][9];
int flag[3][9];
int solve(int,int);
int next(int x,int y,int i){
char tmp = block[y][x];
if((flag[0][x]>>i|flag[1][y]>>i|flag[2][x/3*3+y/3]>>i)&1)return 0;
flag[0][x]|=1<<i;flag[1][y]|=1<<i;flag[2][x/3*3+y/3] |= 1<<i;
block[y][x] = i+'0';
if(solve(x+1,y))return 1;
block[y][x] = tmp;
flag[2][x/3*3+y/3]&=~(1<<i);flag[1][y]&=~(1<<i);flag[0][x]&=~(1<<i);
return 0;
}
int solve(int x,int y){
int i;
if(x == 9)x=0,++y;if(y == 9)return 1;
if(block[y][x]!='_')return next(x,y,block[y][x]-'0');
for(i=1;i<=9;++i)if(next(x,y,i))return 1;
return 0;
}
int main(){
int y,x;
for(y=0;y<9;++y)for(x=0;x<9;++x)scanf(" %c",&block[y][x]);
solve(0,0);
for(y=0;y<9;++y){
for(x=0;x<9;++x)putchar(block[y][x]);
putchar('\n');
}
}
0008デフォルトの名無しさん
2006/07/20(木) 20:21:370009デフォルトの名無しさん
2006/07/21(金) 02:22:27[2] 問題文(含コード&リンク):
●次の覆面算を解くプログラム
SEND
+) MORE
----------
MONEY
各アルファベットは重複しない0以外の一桁の数字
●上が出来れば任意の覆面算を解くプログラム
[3] 環境
[3.1] OS: とくになし
[3.2] コンパイラ名とバージョン: とくになし
[3.3] 言語: C99
[4] 期限: 2006/07/23
[5] その他の制限: とくになし
おながいします。
0010デフォルトの名無しさん
NGNGいや、実質72。66が5本ある。
0011デフォルトの名無しさん
2006/07/21(金) 12:31:520012お願いします・・
2006/07/22(土) 00:32:07[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
[3] 環境
[3.1] OS: UNIX
[4] 期限: 月曜に伸ばしてもらいました。
[5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。
お願いします。。。。
今日提出しにいったところ、サンプルコードから続きを書けと
いうことでした。。
また入出力ファイルは
imput.dat quiz1.dat quiz2.dat quiz3.dat
とあり、gcc してから ./a.out
をすると ファイルを選択する画面になって、
例えばquiz1.dat と入力すれば、その空白を埋めるようになります。
どなたかどうかお願いします。
本用にお願いします。。
0013お願いします・・
2006/07/22(土) 00:33:03imput.dat
__6_____1
_7__6__5_
8__1_32__
__5_4_8__
_4_7_2_9_
__8_1_7__
__12_5__3
_6__7__8_
2_____4__
quiz3.dat
2__67____
__6___2_1
4_____8__
5____93__
_3_____5_
__28____7
__1_____4
7_8___6__
____53__8
サンプルコードは1のリンクしてあるところにはってあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0014お願いします・・
2006/07/22(土) 00:33:42[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を解く
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
[3] 環境
[3.1] OS: UNIX
[4] 期限: 月曜に伸ばしてもらいました。
[5] 盤面の状態を入出力するサンプルコードと問題の入出力ファイルは配布されています。
お願いします。。。。
今日提出しにいったところ、サンプルコードから続きを書けと
いうことでした。。
また入出力ファイルは
imput.dat quiz1.dat quiz2.dat quiz3.dat
とあり、gcc してから ./a.out
をすると ファイルを選択する画面になって、
例えばquiz1.dat と入力すれば、その空白を埋めるようになります。
どなたかどうかお願いします。
本用にお願いします。。
0015お願いします・・
2006/07/22(土) 00:35:29サンプルコードからでなくとも
./a.outとしたときに
ファイルの選択画面をでるようにならないとダメということでした・・
よろしくお願いします・
0016デフォルトの名無しさん
2006/07/22(土) 02:17:18もしかしてマルチってやつ?
0017デフォルトの名無しさん
2006/07/22(土) 03:09:300018デフォルトの名無しさん
2006/07/22(土) 03:58:310019デフォルトの名無しさん
2006/07/22(土) 09:38:53[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を作る
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
<問題作成時のルール>
1、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
数字が3箇所埋まっている状態にする。
[3] 環境
[3.1] OS: UNIX
[4] 期限: 明日の19時
[5] 答えが複数ある問題を作らないように気を付けよとのことです
お願いします。。。。
0020てんぷれ
2006/07/22(土) 12:19:204 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
2 3 1 5 6 4 8 9 7
5 6 4 8 9 7 2 3 1
8 9 7 2 3 1 5 6 4
3 1 2 6 4 5 9 7 8
6 4 5 9 7 8 3 1 2
9 7 8 3 1 2 6 4 5
あとは各ブロックから6個消せ
0021デフォルトの名無しさん
2006/07/22(土) 22:21:490022デフォルトの名無しさん
2006/07/22(土) 22:25:040023デフォルトの名無しさん
2006/07/22(土) 23:39:410024デフォルトの名無しさん
2006/07/22(土) 23:43:254 5 6 7 8 9 1 2 3
7 8 9 1 2 3 4 5 6
3 1 2 6 4 5 9 7 8
6 4 5 9 7 8 3 1 2
9 7 8 3 1 2 6 4 5
2 3 1 5 6 4 8 9 7
5 6 4 8 9 7 2 3 1
8 9 7 2 3 1 5 6 4
0025デフォルトの名無しさん
2006/07/23(日) 00:03:39┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃ ┃ ┃ ┃○┃●┃ ┃ ┃ ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃ ┃ ┃ ┃●┃○┃ ┃ ┃ ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┣━╋━╋━╋━╋━╋━╋━╋━┫
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┻━┻━┛
0026デフォルトの名無しさん
2006/07/23(日) 00:04:390027デフォルトの名無しさん
2006/07/25(火) 19:05:14神武天皇即位紀元年数ノ四ヲ以テ整除シ得ヘキ年ヲ閏年トス但シ紀元年数ヨリ六百六十ヲ減シテ百ヲ以テ整除シ得ヘキモノノ中更ニ四ヲ以テ商ヲ整除シ得サル年ハ平年トス
0028デフォルトの名無しさん
2006/07/25(火) 23:40:300029デフォルトの名無しさん
2006/07/26(水) 00:35:130030デフォルトの名無しさん
NGNGただし、660を引いて100で割り切れた場合、その商が24で割り切れない年は平年。
つまり、西暦で普通に閏年を計算して最後に年に660を足せば完了。
0031デフォルトの名無しさん
2006/07/26(水) 10:30:59うざいぞ、お前
0032デフォルトの名無しさん
NGNGじゃあお前が死ねよ^^
0033助けてください!
2006/07/26(水) 22:47:480034デフォルトの名無しさん
2006/07/26(水) 23:03:23神武天皇即位はB.C.660年。普通の閏年とかわらん。ぐぐれ
0035助けてください!
2006/07/26(水) 23:12:57[2]問題文(含コード&リンク)西暦と月を入力し、その月のカレンダーを出力してください。
曜日は「月、火、水、木、金、土、日、月、火、水・・・」と周期的に繰り返されます。もしある月の一日が月曜日なら
、次の月曜日は八日、その次の月曜日は十五日と七日ずつ違ってくる。つまり一日が日曜日である月のday日が何曜日であるかはdayを七で
割った余りを計算することでわかる。例えば十八日の場合七で割った余りが四なので木曜日になります。
プログラムの構成:西暦yearと月monthを入力します。
西暦year年month月一日が何日目(days)かを計算します。
daysを七で割った余りに応じて空白を出力し、その後1,2,3...と出力します。このとき七つのデータを出力するごとに改行して頂ければ.....
[3]環境:C言語です
[4]お願いします。スルーしないでください。助けてくださいorz
期限は7月31日です。助けてください。
0036デフォルトの名無しさん
2006/07/26(水) 23:16:51http://www.google.co.jp/search?q=C%E8%A8%80%E8%AA%9E+%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC
http://www.geocities.jp/monalipse/c/tips3/calender.html
0037デフォルトの名無しさん
2006/07/27(木) 00:03:33cc[ ]asdf asdf.c[ ]とする
[ ]には何が入るか
何か入るのか?
0038デフォルトの名無しさん
2006/07/27(木) 00:14:120039デフォルトの名無しさん
2006/07/27(木) 00:29:11まじサンクス!!
この先1週間あんたへの感謝わすれないYO!!
0040デフォルトの名無しさん
2006/07/27(木) 12:31:46出来なかったら本物だと思うんだけど。
0041デフォルトの名無しさん
2006/07/27(木) 16:20:15それを抜きにして
出来てるつもりで分かってないひとは多い
0042デフォルトの名無しさん
2006/07/27(木) 19:45:040043デフォルトの名無しさん
2006/07/28(金) 09:57:27[2] 問題文(含コード&リンク):何個かの複素数を入力した後、最後に1を入力して[Enter]キーを押すとそれまでに入力した複素数とそれらをすべてかけ算した結果を表示するプログラムを作れ。なお、連結リストを必ず用いること。
[3] 環境
[3.1] OS: unix
[3.2] gcc
[3.3] 言語: C
[4] 期限: 2006年7月29日23:59まで
[5] その他の制限:連結リストを必ず使用
どなたかよろしくお願いします。
0044デフォルトの名無しさん
2006/07/28(金) 09:57:29[2] 問題文(含コード&リンク):
キーボードから正整数を読み込み,その数を素因数分解した結果を画面に表示する.
ただし,1つの整数を引数とし,その整数の最小の素因数を返す関数をユーザ定義関数として作成し,この関数を使用すること.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:できるだけ早く
[5] その他の制限: 特になし
どうか、よろしくお願いします。
0045デフォルトの名無しさん
2006/07/28(金) 14:34:41ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2474.txt
0046デフォルトの名無しさん
2006/07/28(金) 14:34:550047デフォルトの名無しさん
2006/07/28(金) 14:46:59【前スレ】
C/C++の宿題を片付けます 69代目
http://pc8.2ch.net/test/read.cgi/tech/1152095097/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0048デフォルトの名無しさん
2006/07/28(金) 14:58:29[1]2単位
[2]キーボードから円の直径dを入力し,文字を使って直径dの円を表示するプログラム
を作成して下さい。ただし入力する半径の範囲は2から79に制限して下さい。
[3.1]OS(windowsxp)
[3.3]C言語
[4]後,3時間です。
[5]do-while文,for文をつかって下さい。
コンパイラとバージョンはなんでもいいです。
ほんとにお願いします。
0049デフォルトの名無しさん
2006/07/28(金) 14:59:290050デフォルトの名無しさん
2006/07/28(金) 15:00:23画面もピッチを教えてください
0051デフォルトの名無しさん
2006/07/28(金) 15:00:260052デフォルトの名無しさん
2006/07/28(金) 15:00:43どこに絵を書けばいいんだよ
ぼるじょあがC/C++の宿題を片づけますYO! 66代目
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
0054デフォルトの名無しさん
2006/07/28(金) 15:02:18実行例とか無いのか
0055デフォルトの名無しさん
2006/07/28(金) 15:04:22直径dで入力は半径なの?
0056デフォルトの名無しさん
2006/07/28(金) 15:09:590057デフォルトの名無しさん
2006/07/28(金) 15:16:54実行例というか出力は
*****
***********
*****************
**********************
************************
**********************
********************
****************
************
********
こんな感じになります。
例題ではdo-whileとforをつかってます。
0058デフォルトの名無しさん
2006/07/28(金) 15:17:34例題ってなんだ例題って
0059デフォルトの名無しさん
2006/07/28(金) 15:20:42すげえ。金持ちだな。
0061デフォルトの名無しさん
2006/07/28(金) 15:25:280062デフォルトの名無しさん
2006/07/28(金) 15:25:36ふざけんなボケ
Windowsプログラムと思って今書いてたのに
#include <stdio.h>
#include <math.h>
int main(int argc, char argv[])
{
int n;
int x, y;
int r;
printf("直径>");
if (scanf("%d", &n) < 1) {
return 0;
}
r = n / 2;
for (x = 0; x <= r; ++x) {
for (y = 0; y <= r; ++y) {
if (sqrt(x * x + y * y) < r) {
putchar('*');
}
else {
break;
}
}
putchar('\n');
}
return 0;
}
0064デフォルトの名無しさん
2006/07/28(金) 15:27:53#include <stdlib.h>
#include <string.h>
#include <math.h>
#define BUF_LEN 4096
#define R_MAX 40
#define C_MAX 360
#define PI 3.14159265358979323846
int circle(int r)
{
char m[R_MAX][R_MAX];
int x, y, t;
for(x = 0; x < R_MAX; x++){
for(y = 0; y < R_MAX; y++){
m[y][x] = ' ';
}
}
for(t = 0; t < C_MAX; t++){
x = (int)(r * sin((double)t * PI / C_MAX) + R_MAX / 2) % R_MAX;
y = (int)(r * cos((double)t * PI / C_MAX) + R_MAX / 2) % R_MAX;
m[y][x] = '*';
}
for(x = 0; x < R_MAX; x++){
for(y = 0; y < R_MAX; y++){
fprintf(stdout, "%c", m[y][x]);
}
fprintf(stdout, "\n");
}
return 0;
}
0065デフォルトの名無しさん
2006/07/28(金) 15:28:47{
int c;
char buf[BUF_LEN];
int r;
do{
fprintf(stdout, "r(2-79) = ");
fgets(buf, BUF_LEN - 1, stdin);
sscanf(buf, "%d", &r);
fprintf(stdout, "r = %d\n", r);
if(r < 2 || r > R_MAX - 1)
fprintf(stdout, "r must be in 2 - %d\n", R_MAX - 1);
else
circle(r);
}while(r);
return 0;
}
0066デフォルトの名無しさん
2006/07/28(金) 15:33:13内の大学の課題じゃん
自分でやれよ
0067デフォルトの名無しさん
2006/07/28(金) 15:34:06y = (int)(r * cos((double)t * 2.0 * PI / C_MAX) + R_MAX / 2) % R_MAX;
0068デフォルトの名無しさん
2006/07/28(金) 15:34:430069デフォルトの名無しさん
2006/07/28(金) 15:38:54文字化けしたけど同じ課題だなw
0070デフォルトの名無しさん
2006/07/28(金) 15:42:38#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define BUF_LEN 4096
#define R_MAX 79
#define C_MAX 360
#define PI 3.14159265358979323846
int circle(int r)
{
char m[R_MAX][R_MAX];
int x, y, t;
for(x = 0; x < R_MAX; x++)
for(y = 0; y < R_MAX; y++)
m[y][x] = ' ';
for(t = 0; t < C_MAX; t++){
x = (int)(r * sin((double)t * 2.0 * PI / C_MAX) + R_MAX / 2) % R_MAX;
y = (int)(r * cos((double)t * 2.0 * PI / C_MAX) + R_MAX / 2) % R_MAX;
m[y][x] = '*';
}
for(x = 0; x < R_MAX; x++){
for(y = 0; y < R_MAX; y++){
fprintf(stdout, "%c", m[y][x]);
}
fprintf(stdout, "\n");
}
return 0;
}
0071デフォルトの名無しさん
2006/07/28(金) 15:43:29{
int c;
char buf[BUF_LEN];
int r;
do{
fprintf(stdout, "r(2-%d) = ", R_MAX / 2 - 1);
fgets(buf, BUF_LEN - 1, stdin);
sscanf(buf, "%d", &r);
fprintf(stdout, "r = %d\n", r);
if(r < 2 || r > R_MAX / 2 - 1)
fprintf(stdout, "r must be in 2 - %d\n", R_MAX / 2 - 1);
else
circle(r);
}while(r);
return 0;
}
0072デフォルトの名無しさん
2006/07/28(金) 15:47:160073デフォルトの名無しさん
2006/07/28(金) 15:48:080074デフォルトの名無しさん
2006/07/28(金) 15:51:470075デフォルトの名無しさん
2006/07/28(金) 15:54:37[1] 授業単元: 中課題
[2] 問題文(含コード&リンク): 9マス×9マスの小さな盤面で、数独の問題を作る
プログラムを作成せよ。またわかりやすいレポートを作成せよ(レポは
とりあえず後回しで大丈夫です)
<数独のルール>
1、空いているマスに、1から9までの数字のどれかを入れる。
2、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
1から9までの数字が一つずつ入る。
<問題作成時のルール>
1、縦列、横列(ともに9列)、太線(外周の線)で囲まれた3×3の
ブロック(それぞれ9マスあるブロックが9つある)のどれにも
数字が3箇所埋まっている状態にする。
[3] 環境
[3.1] OS: UNIX
[4] 期限: 明日の19時
[5] 答えが複数ある問題を作らないように気を付けよとのことです
お願いします。。。。
0076デフォルトの名無しさん
2006/07/28(金) 15:55:47ちょwこんなところに東工大がいるのか
0077デフォルトの名無しさん
2006/07/28(金) 15:57:210078デフォルトの名無しさん
2006/07/28(金) 16:02:58変数名と関数名を細工すればおk?
0079デフォルトの名無しさん
2006/07/28(金) 16:04:03mixiで同じ質問してるやつ見たな。。。
0081デフォルトの名無しさん
2006/07/28(金) 16:08:57<´ せんせい、できません!>
⌒ v'⌒ヽr -、_ ,r v'⌒ヽr ' ⌒
// // ///:: < _,ノ`' 、ヽ、_ ノ ;;;ヽ //
///// /:::: (y○')`ヽ) ( ´(y○') ;;| /
// //,|::: ( ( / ヽ) )+ ;| /
/ // |::: + ) )|~ ̄ ̄~.|( ( ;;;|// ////
/// :|:: ( (||||! i: |||! !| |) ) ;;;|// ///
////|:::: + U | |||| !! !!||| :U ;;; ;;;| ///
////|::::: | |!!||l ll|| !! !!| | ;;;;;;| ////
// / ヽ::::: | ! || | ||!!| ;;;;;;/// //
// // ゝ:::::::: : | `ー----−' |__////
0082デフォルトの名無しさん
2006/07/28(金) 16:34:06[2]問題文(含コード&リンク):CプログラムソースBがAのコピー&ペーストによる
産物かどうかを調べるプログラムを作成し類似の度合いにより優・良・可・不可に
分類してください。
[3]環境
[3.1] OS: UNIX
[4] 期限: 明日の19時
[5] よろしくお願いします。
0083デフォルトの名無しさん
2006/07/28(金) 16:42:470084デフォルトの名無しさん
2006/07/28(金) 16:48:36とりあえずトークンに分けて変数の数とか関数の数と引数とかのパターンチェックかな。
{ } の位置だけ比較するとかでもかなり分かりそう。
0085デフォルトの名無しさん
2006/07/28(金) 16:51:11ttp://sourceforge.net/search/?words=sudoku&type_of_search=soft&limit=150
0086デフォルトの名無しさん
2006/07/28(金) 16:56:300087デフォルトの名無しさん
2006/07/28(金) 17:38:350088デフォルトの名無しさん
2006/07/28(金) 17:46:540089デフォルトの名無しさん
2006/07/28(金) 17:58:23[2] 問題文(含コード&リンク):
ファイル abc.dat から40名分の成績を読み込み,
以下の出力例のような度数分布表を表示するプログラムを作成し,ソースコードを投稿せよ.
ただし,出力例と同じ表示(スペースなど)になるよう注意せよ.
-----出力例-----
0- 9:
10-19:
20-29: * 1
30-39: ** 2
40-49: ** 2
50-59: **** 4
60-69: ****** 6
70-79: *********** 11
80-89: ******** 8
90-99: ***** 5
100: * 1
ファイル def.dat に40名分3科目の成績が以下のように記録されている.
各行は1名の3科目の成績を表している.今,各人は,各科目50点以上をとっていて,かつ,3科目の合計が180点以上である場合に合格であるとした場合,
40名のうちの合格者が何人かを判定し出力するプログラムを作成,ソースコードを投稿せよ.
----ファイルの中身----
54 53 44
43 54 69
70 76 64
72 85 73
:
----出力例----
合格者は,XX名
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
0090デフォルトの名無しさん
2006/07/28(金) 18:06:50作ってみたけどすげー遅いです。どうやったらはやくなりますかおしえてせんせい!
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2476.txt
0091デフォルトの名無しさん
2006/07/28(金) 18:09:26Intelのコンパイラ買う
0092デフォルトの名無しさん
2006/07/28(金) 18:20:16それ、gcc -O2で最悪でも4秒程度、icc -fastで0.2秒程度なんだけどどこが「すげー」遅いの?
#遅いときとそうでないときの差が大きいのは気になるけどね。
009390
2006/07/28(金) 18:23:44最適化わすれてましたthx
009492
2006/07/28(金) 18:30:42乱数系列初期化をsrand(argc > 1 ? atoi(argv[1]) : time(NULL));に変更して、
たまたま./a.out 6すると妙に時間が掛かった。ついでに、iccもそんなに速くなかった。
gcc -O2: 0m6.790s
gcc -O3: 0m4.840s
icc -fast: 0m2.450s
0095830
2006/07/28(金) 19:05:14前スレの830です。
とりあえずになってしまいますが、小難しいことは抜きで、
左辺と右辺の値を算出するためのプログラムを書いていただけないでしょうか…。
(1つの方法につき1つのプログラムを作る形でよくて、両方を一気に処理する必要はないようです。)
また、しっかりと考えてくださっている方がいらっしゃったので、
とりあえずで済ませてもいかんと思い、まず1つ目の方法に関してみやすいように絵にしてまとめました。
もう一つの方法の絵は、明日あたりに作るつもりです。
ttp://gaibusyou.mine.nu/file/img/KURO_429.png
↓これは前スレででた質問に答えたものです
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2468.txt
009692
2006/07/28(金) 19:08:59やっぱ>90のアルゴリズム自体が遅いんだな。
#さーて、この週末はちっとは頭使ってみるか。
009790
2006/07/28(金) 19:14:14ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2477.txt
完成したボードから間引く処理が遅いんだよねえ。。。
009890
2006/07/28(金) 19:18:130099デフォルトの名無しさん
2006/07/28(金) 19:18:54がんばれ>>90
0100デフォルトの名無しさん
2006/07/28(金) 19:37:340102デフォルトの名無しさん
2006/07/28(金) 19:49:33gccなら、
$ gcc -pg -o hoge hoge.c
$ ./hoge
$ gprof --brief ./hoge
だ。
0103デフォルトの名無しさん
2006/07/28(金) 19:49:48東工大掲示板にみっともないとか恥さらしとか書かれてるね。
0104デフォルトの名無しさん
2006/07/28(金) 19:56:28010590
2006/07/28(金) 20:03:24>>102
ありがと。cygwinでやってみたら a.out じゃねえととんちんかんなこと言われた。いまどきa.outって。。
すれ違いらしいから成果があるまでだまっときます。ノシ
0106デフォルトの名無しさん
2006/07/28(金) 20:04:11俺が解いてやる
0107デフォルトの名無しさん
2006/07/28(金) 20:08:52>>82>>89
0109デフォルトの名無しさん
2006/07/28(金) 20:16:030110デフォルトの名無しさん
2006/07/28(金) 20:17:130111デフォルトの名無しさん
2006/07/28(金) 20:34:280112デフォルトの名無しさん
2006/07/28(金) 20:42:16情工は性格悪い香具師がおおいからな。
0113デフォルトの名無しさん
2006/07/28(金) 22:09:590114デフォルトの名無しさん
2006/07/28(金) 22:19:430115デフォルトの名無しさん
2006/07/28(金) 22:49:08誰か解いてくれ・・・・・、
0116デフォルトの名無しさん
2006/07/28(金) 22:53:340117デフォルトの名無しさん
2006/07/28(金) 22:56:36マジお願いしますよ・・・・・
0118デフォルトの名無しさん
2006/07/28(金) 23:02:31東工大にはプログラムをバイナリレベルで比較するソフトがある
データフローや制御構文を解析しているらしい
0119デフォルトの名無しさん
2006/07/28(金) 23:02:47というか>>89ってよく読むと2問なんだ?
0120デフォルトの名無しさん
2006/07/28(金) 23:14:35あと46分で死んじゃいます
0121デフォルトの名無しさん
2006/07/28(金) 23:17:18スマソ
0122デフォルトの名無しさん
2006/07/28(金) 23:21:10あきらめれ
0123デフォルトの名無しさん
2006/07/28(金) 23:44:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2478.txt
テキトーな処理だからファイルによっては無限ループかもね?
0124デフォルトの名無しさん
2006/07/28(金) 23:50:52You are GOD.
0125デフォルトの名無しさん
2006/07/28(金) 23:53:23All other editors are sucks.
0126830
2006/07/29(土) 00:45:35ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2479.txt
1つ目の方法のフローチャートみたいなものも作って分かりやすくなるようしてみたのですが、
手計算では計算量が多くてとてもできそうにありません。
プログラムにしても相当長いものになるんじゃないかと思うんですが…どうでしょうか。
012743
2006/07/29(土) 01:27:16ファイルが見つかりません・・・
もしかしてチェックするのが遅かったですか?
0128デフォルトの名無しさん
2006/07/29(土) 01:29:460129東工大OB
2006/07/29(土) 01:39:390130デフォルトの名無しさん
2006/07/29(土) 01:46:180131デフォルトの名無しさん
2006/07/29(土) 02:15:31ほい
注意事項あるのでコメント読んで判断してほしいお
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2480.c
013243
2006/07/29(土) 03:02:430133デフォルトの名無しさん
2006/07/29(土) 03:44:01おかしいとこがあったからあげ直してたけど、仕事が入って書き込むの忘れてた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2475.txt
013490
2006/07/29(土) 06:24:25ttp://www.uploda.org/uporg462045.zip.html
0135830
2006/07/29(土) 09:33:27もう、本当に感謝するしかありません。
本当に感謝です。
こういうコードが書けるよう、勉強に励みます。
本当にありがとうございました。
0137デフォルトの名無しさん
2006/07/29(土) 11:12:240138デフォルトの名無しさん
2006/07/29(土) 12:22:50GUIってOS X用じゃないのか… orz
0139デフォルトの名無しさん
2006/07/29(土) 14:27:32[2] 問題文(含コード&リンク): C言語のバグを調べ、それを実際にプログラムにして考察せよ。
[3] 環境
[3.1] OS: Linux Redhut
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2006/08/03
[5] その他の制限: 何でもOKだそうですが、できるだけ簡単なものでお願いします!
0140デフォルトの名無しさん
2006/07/29(土) 14:34:520141デフォルトの名無しさん
2006/07/29(土) 14:38:11C++ならいくらでもありそうだが。
0142デフォルトの名無しさん
2006/07/29(土) 15:00:51[2] 問題文(含コード&リンク):入力された文字列を2進数として解釈し、
数値へと変換してint型変数へと代入せよ。
例)入力 10001 出力 17
[3] 環境
[3.1] OS: (Windows/Linux/等々) windows XP
[3.2] コンパイラ名とバージョン:LSIC-86
[3.3] 言語:C言語
[4] 期限:明日9時に提出です。
[5] その他の制限:入力はgetchar()を使用する事
根本的に理解できてないのかお手上げ状態です、お願いします
0143デフォルトの名無しさん
2006/07/29(土) 15:16:33Cでバグのあるプログラムを書けと言ってるだけなんじゃないかと
0144デフォルトの名無しさん
2006/07/29(土) 15:20:39#include <stdio.h>
int main(void)
{
int c, b = 0;
while((c = fgetc(stdin)) != EOF){
if(c == '1'){
b = (b << 1) + 1;
}else if(c == '0'){
b <<= 1;
}else{
break;
}
}
fprintf(stdout, "%d", b);
return 0;
}
0145デフォルトの名無しさん
2006/07/29(土) 15:25:560146デフォルトの名無しさん
2006/07/29(土) 15:26:27#include <stdlib.h>
int main(int argc, char ** argv)
{
const char * p = argc > 1 ? argv[1] : "1101111010101101";
int val = (int) strtol(p, NULL, 2);
printf("%d, %x\n", val, val);
return 0;
}
0147デフォルトの名無しさん
2006/07/29(土) 15:33:35HDDをフォーマットするプログラムでもいいし。
0148デフォルトの名無しさん
2006/07/29(土) 15:35:580149デフォルトの名無しさん
2006/07/29(土) 15:36:44int i = 0;
while (i < 10)
a[i] = i++;
鼻から悪魔の例。
0150デフォルトの名無しさん
2006/07/29(土) 16:36:380151デフォルトの名無しさん
2006/07/29(土) 16:40:57MAX_INT
0152デフォルトの名無しさん
2006/07/29(土) 16:40:57#include <stdio.h>
#include <limits.h>
int main(){
printf("char: %d〜%d\n", CHAR_MIN,CHAR_MAX);
printf("signed char: %d〜%d\n", SCHAR_MIN,SCHAR_MAX);
printf("unsigned char: %d〜%d\n", 0,UCHAR_MAX);
printf("short int: %d〜%d\n", SHRT_MIN,SHRT_MAX);
printf("unsigned short int: %u〜%u\n", 0,USHRT_MAX);
printf("int: %d〜%d\n", INT_MIN,INT_MAX);
printf("unsigned int: %u〜%u\n", 0,UINT_MAX);
printf("long int: %ld〜%ld\n", LONG_MIN,LONG_MAX);
printf("unsigned long int: %lu〜%lu\n", 0,ULONG_MAX);
return 0;
}
0153デフォルトの名無しさん
2006/07/29(土) 16:48:250154デフォルトの名無しさん
2006/07/29(土) 17:08:29次ってこっちなん?
0155無我夢中人
2006/07/29(土) 17:18:30「1〜1000までの自然数を素因数分解し、その最大素数を
表示させるプログラムを作れ」
学校ではLinux使ってます
期限は8/2までです
お願いします
0156デフォルトの名無しさん
2006/07/29(土) 17:25:25とりあえず >>1 のフォームで依頼し直しー!
0157デフォルトの名無しさん
2006/07/29(土) 17:40:46ここが実質72だか73だかになるらしい
誰か詳しい人いたら66が何個あったか教えてくれ
0158デフォルトの名無しさん
2006/07/29(土) 17:51:44#include <stdio.h>
int main()
{
int c, n = 0;
while ((c = getchar()) == '0' || c == '1') {
n = n * 2;
if (c == '1') n = n + 1;
}
printf("%d\n", n);
return 0;
}
0159無我夢中人
2006/07/29(土) 17:57:49[1] 授業単元:情報基礎B
[2] 問題文:1〜1000までの自然数を素因数分解し、その最大素数を
表示させるプログラムを作れ
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:分かりませんorz
[3.3] 言語:Cです
[4] 期限:8月2日までと書きましたが、8月1までにお願いします
[5] その他の制限:特になし
お願いします
0160デフォルトの名無しさん
2006/07/29(土) 18:05:08それとも、各々の最大素数を求めるのだろうか
0161デフォルトの名無しさん
2006/07/29(土) 18:06:39問題文のとおりに作ると意味不明のソースができそうだな。
0162142
2006/07/29(土) 18:15:43恥ずかしながらgetsやfget?はまだ勉強してなくて
それを使ったらきっとカンニングがばれちゃうので…言葉足らずですみません。
まだ理解できていませんが158さんのプログラムを使わせていただきますね。
ありがとうございました。
プログラムの勉強をはじめてまだ一ヶ月なんですが
みなさんの書いてくれたプログラムの意味が
全然わからなくてこの先とっても不安です…
長文失礼しました。
0163デフォルトの名無しさん
2006/07/29(土) 18:24:510164デフォルトの名無しさん
2006/07/29(土) 18:29:050165142
2006/07/29(土) 18:36:42<<164
一応ポインタを勉強する前の総復習って感じの課題だったので
解けないといけない問題なんでしょうね。
でも渡された入門書だけではgetsやfgetc(stdin)等はカバーできてませんでした。
単なる勉強不足ですけどね…
諦めるのは簡単なので会社に見切りをつけられるまではがんばってみます。
ありがとうございました。
0166142
2006/07/29(土) 18:38:510167デフォルトの名無しさん
2006/07/29(土) 18:43:33まさかプログラムで食べてく人じゃないと思うけど、
入門書に書いてないから理解できないとかじゃなくって
知らない単語はぐぐったりして少しは調べようとしたら?
そうしないといつまで経っても上達しないと思う。
0168デフォルトの名無しさん
2006/07/29(土) 18:54:43int main()
{
int i, j, max = 1;
for (i = 1; i < 1001; i++) {
//printf("%d : ", i);
int tmp = i;
if (tmp == 1) continue;
while (tmp % 2 == 0) {
tmp /= 2;
//printf("2 ");
}
for (j = 3; 1 < tmp; j += 2)
while (tmp % j == 0) {
tmp /= j;
//printf("%d ", j);
}
//printf("\n");
if (max < j - 2) max = j - 2;
}
printf("max = %d\n", max);
return 0;
}
>>159
問題文通りに作れたと思う
0169デフォルトの名無しさん
2006/07/29(土) 18:54:580170デフォルトの名無しさん
2006/07/29(土) 19:09:29おかしな課題をそのとおり作るのはプロかバカにしかできない
0171デフォルトの名無しさん
2006/07/29(土) 19:10:45ぼるじょあを入れたら5個あった
0172デフォルトの名無しさん
2006/07/29(土) 19:17:40ぼるじょあは除外じゃね?あれも同列扱いか?
0173デフォルトの名無しさん
2006/07/29(土) 19:25:330174デフォルトの名無しさん
2006/07/29(土) 19:49:34[2] 問題文(含コード&リンク):
2006年6月9日からドイツで「FIFAワールドカップ」が開催される。
このサッカーの世界大会は、1930年の第1回大会以来4年に1度行われ、
今年で18回目となる。(1942年・1946年は第2次世界大戦の影響で開催されなかった)
キーボードから西暦の年を入力し、
ワールドカップが開催された年であれば、第何回大会かを画面に出力する
プログラムを作成せよ。
【例】
年を入力: 2002
第17回大会です
この問題で既にプログラムはしたのですが、→【割り算の式を工夫して、プログラムを短くしてください。 】
と、指摘されました。どうすればいいのかわからないので、お願いします。
↓プログラムです
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2485.txt
[3] 環境
[3.1] OS: xp
[3.2] vb2003
[3.3] 言語: C
[4] 期限: 7/31
[5] その他の制限: if文、配列ループ
0175デフォルトの名無しさん
2006/07/29(土) 19:51:580176デフォルトの名無しさん
2006/07/29(土) 20:01:51おまえのようなやつは好きだぞ。
b と c は使ってないから削除だな
0177デフォルトの名無しさん
2006/07/29(土) 20:03:590178デフォルトの名無しさん
2006/07/29(土) 20:19:370179デフォルトの名無しさん
2006/07/29(土) 20:23:17#include <stdio.h>
int main(){
int year;
while(1){
printf("年を入力(0入力で終了) => ");
scanf("%d", &year);
if (year == 0){
break;
} else if (year < 1930 || ((year - 1930) % 4 != 0)){
printf("開催されていません\n\n");
} else if (year == 1942 || year == 1946){
printf("第2次世界大戦の影響で開催されていません\n\n");
} else if (year > 1946){
printf("第%d回大会です\n\n", (year - 1930) / 4 - 1);
} else {
printf("第%d回大会です\n\n", (year - 1930) / 4 + 1);
}
}
return 0;
}
0180デフォルトの名無しさん
2006/07/29(土) 20:24:02int main(void)
{
int a;
printf("aに年を入力 => ");
scanf("%d", &a);
switch(a){
case 1930: case 1934: case 1950: case 1954: case 1958: case 1962: case 1966: case 1970:
case 1974: case 1978: case 1982: case 1986: case 1990: case 1994: case 1998: case 2002:
case 2006:
printf("第%d回大会%s\n", a < 1950 ? (a - 1930) / 4 + 1 : (a - 1930) / 4 - 1,
a < 2006 ? "です" : "が開催される予定です");
break;
default:
printf("この年にワールドカップは開催されていません\n");
}
return 0;
}
0181デフォルトの名無しさん
2006/07/29(土) 20:26:220182デフォルトの名無しさん
2006/07/29(土) 20:35:58#include<stdio.h>
int main(void){
int nen[] = {1930,1934,1938,1950,1954,1958,1962,1966,1970,1974,1978,1982,1986,1990,1994,1998,2002,2006},a,i;
printf("aに年を入力 => ");scanf("%d", &a);
for(i=0; i<18; i++){
if(a == nen[i])break;
if(i == 17){
printf("この年にワールドカップは開催されていません\n");
return 1;
}
}
if(i == 0)printf("第1回大会です\n");
else if(i == 1)printf("第2回大会です\n");
else if(i == 2)printf("第3回大会です\n");
else if(i == 3)printf("第4回大会です\n");
else if(i == 4)printf("第5回大会です\n");
else if(i == 5)printf("第6回大会です\n");
else if(i == 6)printf("第7回大会です\n");
else if(i == 7)printf("第8回大会です\n");
else if(i == 8)printf("第9回大会です\n");
else if(i == 9)printf("第10回大会です\n");
else if(i == 10)printf("第11回大会です\n");
else if(i == 11)printf("第12回大会です\n");
else if(i == 12)printf("第13回大会です\n");
else if(i == 13)printf("第14回大会です\n");
else if(i == 14)printf("第15回大会です\n");
else if(i == 15)printf("第16回大会です\n");
else if(i == 16)printf("第17回大会です\n");
else if(i == 17)printf("第18回大会が開催される予定です\n");
return 0;
}
0183デフォルトの名無しさん
2006/07/29(土) 20:37:25main(){int a;
printf("年を入力: "); scanf("%d", &a);
if(a>=1930&&a<2006&&(a%4==2)&&(a!=1942)&&(a!=1946))
printf("第%d回大会です\n",a<1942?(a-1926)/4:(a-1926)/4-2);
else if(a==2006) printf("第18回大会が開催される予定です\n");
else printf("この年にワールドカップは開催されていません\n");}
0184デフォルトの名無しさん
2006/07/29(土) 21:00:56やろうと思ったことを先にやられてしまった
#include <stdio.h>
#define THIS_YEAR 2006
int main()
{
int year;
printf("年:");
scanf("%d",&year);
if((year-1930)%4||year==1942||year==1946||year<1930){
if(year>THIS_YEAR){
printf("この年にワールドカップは開催される予定はありません\n");
}else{
printf("この年にワールドカップは開催されていません\n");
}
return 0;
}
if(year<=1938){
printf("第%d回大会です",(year-1930)/4+1);
return 0;
}
if(year>THIS_YEAR){
printf("第%d回大会が開催される予定です",(year-1930)/4-1);
}else{
printf("第%d回大会です",(year-1930)/4-1);
}
return 0;
}
0185デフォルトの名無しさん
2006/07/29(土) 22:24:30こうゆう意味か?
#include<stdio.h>
int func(int);
int sosu[1001];
int main(void){
int i, k, ans;
for(i=1; i<1001; i++)sosu[i] = 1;
for(i=2; i<1001; i++)
if(sosu[i])for(k=i*2; k<1001; k+=i)sosu[k] = 0;
for(i=1; i<1001; i++){
ans = func(i);
if(ans)printf("%4d: %3d ", i, ans);
else printf("%4d:素数 ", i, ans);
if(i % 7 == 0)puts("");
}
return 0;
}
int func(int x){
int i, ans;
if(sosu[x])return 0;
for(i=1; i<= x/2; i++)if(x%i == 0)ans = i;
return ans;
}
0186デフォルトの名無しさん
2006/07/29(土) 22:33:180187デフォルトの名無しさん
2006/07/29(土) 22:37:24爽やかな2ちゃんねらなどいない
0188デフォルトの名無しさん
2006/07/29(土) 22:56:220189デフォルトの名無しさん
2006/07/29(土) 22:58:53もう期末の課題ラッシュも落ち着いたかな
0190デフォルトの名無しさん
2006/07/29(土) 22:59:46やっぱCだよなぁ(´∀`*)
0191デフォルトの名無しさん
2006/07/29(土) 23:08:29少し楽しみに待ってたんだがどうも忘れ去られたようなので・・・
0192デフォルトの名無しさん
2006/07/29(土) 23:19:240193デフォルトの名無しさん
2006/07/29(土) 23:20:510194デフォルトの名無しさん
2006/07/29(土) 23:21:200195デフォルトの名無しさん
2006/07/29(土) 23:23:59ここに丸投げする香具師が見るかどうかといったら
0196デフォルトの名無しさん
2006/07/29(土) 23:24:010197デフォルトの名無しさん
2006/07/29(土) 23:24:510198デフォルトの名無しさん
2006/07/29(土) 23:27:43どっちかといえば回答者用のまとめサイトを思い浮かべてた・・・
やっぱ質問者の参考になるようなサイトじゃないと駄目かな?
0199デフォルトの名無しさん
2006/07/29(土) 23:31:46ファイル読み込み機能つけてだとか、先生にバレないように書き換えてください><とか
そんな応酬はかなり勘弁なだ
0200デフォルトの名無しさん
2006/07/29(土) 23:36:360201デフォルトの名無しさん
2006/07/29(土) 23:36:46なんで名無しの為にそこまでやらにゃあかんねん
しかもまず見ないだろうし
0202デフォルトの名無しさん
2006/07/29(土) 23:39:21見なくても誘導して参考にさせりゃ良いんじゃね?
0203デフォルトの名無しさん
2006/07/29(土) 23:41:38おりはこれからJavaの方に行こうかと思ってた矢先だ・・・チェーーンジw
0204デフォルトの名無しさん
2006/07/29(土) 23:43:20ダウンロードするときに
ランダムに変数名や関数名書き換えて
先生にバレないようにする機能付きっていうのはどう?
0205デフォルトの名無しさん
2006/07/29(土) 23:49:430207デフォルトの名無しさん
2006/07/30(日) 02:01:24講師に変態だと思われてただろうね(ニヤニヤ
0209デフォルトの名無しさん
2006/07/30(日) 04:44:07[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2486.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 7/31
よろしくお願いします。
0210デフォルトの名無しさん
2006/07/30(日) 05:11:59[2] 問題文(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2487.txt):モンテカルロ法を使ってπの近似値を求めて
もっとも3.1459に近い試行回数とその値を最後に表示する。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: VC 6.
[3.3] 言語: C++
[4] 期限: 2006/07/31
[5] 近似値は求まったのですが3.1459に
最も近い試行回数の表示とその値の表示の仕方がわかりません。
お願いします。
0211デフォルトの名無しさん
2006/07/30(日) 05:27:263.14159じゃないのか?これもゆとり教育の生み出した歪みか
それともπの近似値を求めつつも
それと無関係にみえる3.1459に関連付けようとする試みか
0212デフォルトの名無しさん
2006/07/30(日) 05:30:520213デフォルトの名無しさん
2006/07/30(日) 05:34:24間違えてました
0214デフォルトの名無しさん
2006/07/30(日) 05:54:35http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2488.c
0215デフォルトの名無しさん
2006/07/30(日) 06:07:17ありがとうございます
0216デフォルトの名無しさん
2006/07/30(日) 06:41:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2489.txt
問題勘違いして時間かかってしまった
math.h使った方が簡単にできるかも
0217デフォルトの名無しさん
2006/07/30(日) 07:18:200218デフォルトの名無しさん
2006/07/30(日) 08:21:42再帰を使ってlinear searchをする関数を作ってます。
でも、配列の中にある数字を入れてもnot foundになってしまいます。
どこがおかしいのでしょうか?
ちなみにJavaですけど↓のソースコードを参考にしました。
そっくりそのままC++に移植したつもりなんですが…。
ttp://www.cis.temple.edu/~pwang/223-DS/Lecture/Recursion.htm
// function to perform binary search of an array
int binarySearch( const int b[], int searchKey, int low, int high, int size )
{
if (low > high)
return -1;
else {
int middle = (low + high) / 2;
if (middle == searchKey)
return middle;
else if (middle < searchKey)
return binarySearch(b, searchKey, low, middle - 1, size - 1);
else // means "else if (middle > searchKey)"
return binarySearch(b, searchKey, middle + 1, high, size - 1);
}
} // end function binarySearch
main()で関数を呼んでる部分は
binarySearch( a, key, 0, arraySize - 1, arraySize );
で(配列、配列の最初の位置、配列の最後の位置、配列のサイズ)となっています。
0219デフォルトの名無しさん
2006/07/30(日) 08:28:01どうもありがとうございます。
0220218
2006/07/30(日) 08:39:35配列の値は
arraySize = 14;
for ( int i = 0; i < arraySize; i++ ) // create some data
a[ i ] = 2 * i;
で宣言してるんで偶数の数字のみヒットするはずなんですけど
実際には0〜14までがヒットして15から28まではヒットしません。
なんか配列に問題がありそうなので自分でバグとりしてみます。
失礼しました。
0221218
2006/07/30(日) 08:45:19int middle = (low + high) / 2;
を関数の最初に
int middle;
元々の位置に
middle = (low + high) / 2;
って書いたらちゃんと動くようになりました!
でも、なんで?
宣言と初期化ってCでは関数の最初でないとダメでしょうけど
C++ではどこに書いても有効なはずですよね?
スレ違いっぽいですけどついでにお願いします…。
0222デフォルトの名無しさん
2006/07/30(日) 09:25:50if (b[middle] == searchKey) return middle;
あと size -1 を渡してるのがヘン。そもそも渡す必要は?
0223218
2006/07/30(日) 09:46:18あっ、本当だ、参照してなかったです。_| ̄|○
初期化された値が均等なのでたまたま動いてただけでした。
しかもsize - 1はいらなかったです。
再帰使うときは何か-1しないとと思って…(^^ゞ
size/2ならまだ意味があろうもののsize-1なら何の意味もありませんでしたね。
ありがとうございました!
0224デフォルトの名無しさん
2006/07/30(日) 11:36:17C言語で連立方程式を解く方法がわかりません。
どなたかお願いします。↓
5.5+0.012*P2=Y
5.8+0.018*P3=Y
450+P2+P3=975
この3式です。
0225デフォルトの名無しさん
2006/07/30(日) 11:40:01ガウスの消去法
http://www.fuka.info.waseda.ac.jp/~kozo/suuchi/simple_equation/simple_equation_1.html
0226デフォルトの名無しさん
2006/07/30(日) 11:44:12今度はその Y を 1) と 2) に代入すると P2 P3 が求まる
0227デフォルトの名無しさん
2006/07/30(日) 11:50:31[2] 問題文(含コード&リンク):
大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、単純挿入法で昇順にソートするプログラムを作成せよ。
ただし、ソートの途中経過を画面に出力すること。 また、最後に比較回数を画面に出力すること。
【ヒント】
配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。
単純挿入法‥未ソートの部分の先頭の要素を、ソート済みの部分に挿入する
途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。
比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。
[3] 環境
[3.1] OS: xp
[3.2] vb2003
[3.3] 言語: C
[4] 期限: 7/31
[5] その他の制限: 関数は使用しない
0228デフォルトの名無しさん
2006/07/30(日) 11:53:360229デフォルトの名無しさん
2006/07/30(日) 11:54:52配列に番兵って何?
0230デフォルトの名無しさん
2006/07/30(日) 12:10:57#include <stdio.h>
#include <clapack.h>
int main() {
int i, j , n=3, nrhs=1, lda=3, ldb=3, ipiv[3], inf;
double A[3*3], B[3];
A[0] = 0.012; A[3] = 0.0; A[6] = -1.0;
A[1] = 0.0; A[4] = 0.018; A[7] = -1.0;
A[2] = 1.0; A[5] = 1.0; A[8] = 0.0;
B[0] = -5.5; B[1] = -5.8; B[2] = 975.0-450.0;
dgesv_(&n, &nrhs, A, &lda, ipiv, B, &ldb, &inf);
if (inf == 0) printf("P2 = %f, P3 = %f, Y = %f\n", B[0], B[1], B[2]);
return 0;
}
0231デフォルトの名無しさん
2006/07/30(日) 12:43:48#include <stdlib.h>
#define SIZE 20
int main()
{
int a[20];
char tmp[100];
for (int i = 1; i < SIZE; i++){// input
fgets(tmp, sizeof(tmp), stdin);
a[i] = atoi(tmp);
}
for (int i = 2; i < SIZE; i++){// sort
int pivot = a[i], j;
a[0] = pivot;
j = i - 1;
while (pivot < a[j]){
a[j + 1] = a[j];
j--;
}
a[j + 1] = pivot;
for (int i = 1; i < SIZE; i++)// output
printf("%d ", a[i]);
printf("\n");
}
return 0;
}
番兵入るとよくわかんね
0232デフォルトの名無しさん
2006/07/30(日) 12:48:41なんとかやってみます。
0233名前はまだない
2006/07/30(日) 12:51:210234デフォルトの名無しさん
2006/07/30(日) 12:58:590235名前はまだない
2006/07/30(日) 13:01:290236デフォルトの名無しさん
2006/07/30(日) 13:03:570237デフォルトの名無しさん
2006/07/30(日) 15:06:05[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2490.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:8月2日 21時まで
[5] その他の制限: 特にないです。
お力をお貸しください、よろしくお願い致します。
0238デフォルトの名無しさん
2006/07/30(日) 15:20:361.「fp = fopen( argv[1], "r");」の直前に以下を追加
if (argc != 2) {
printf("使い方:%s <ファイルを指定すれ>\n", argv[0]);
exit(1);
}
1.「fp = fopen( argv[1], "r");」の直後に以下を追加
if (fp == NULL) {
printf("ファイルが存在しねーよ\n");
exit(1);
}
0239デフォルトの名無しさん
2006/07/30(日) 16:09:47[2] 問題文:配列を用いて自分の学籍番号(158です),レポートを作成した西暦(2006)
月(7月), 日(30日)を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: (windows xp,Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: (8月3日 17:00まで)
[5] その他の制限:なし
0240デフォルトの名無しさん
2006/07/30(日) 16:13:000241デフォルトの名無しさん
2006/07/30(日) 16:16:37問題の趣旨がようわからんが、問題文の通りに作るとこうか?
#include <stdio.h>
int main()
{
int n[4] = {158, 2006, 7, 30};
printf("学籍番号: %d\n年月日: %4d/%2d/%2d\n", n[0], n[1], n[2], n[3]);
return 0;
}
0242デフォルトの名無しさん
2006/07/30(日) 16:20:28#include <stdio.h>
int main(){
const char tmp[] = "2006/7/30\n学籍番号 : 158";
printf("%s", tmp);
return 0;
}
0243デフォルトの名無しさん
2006/07/30(日) 16:27:28自分の学籍番号が158番なんです。ようは自分の学籍番号と,レポートを作成した
西暦,つまり2006年,その月,日にちを表示するプログラムということです。
0244デフォルトの名無しさん
2006/07/30(日) 16:29:25マクロ__DATE__を使うんではないか?
0245デフォルトの名無しさん
2006/07/30(日) 16:44:260246デフォルトの名無しさん
2006/07/30(日) 16:57:08その説明だと>>241でも>>242でも正解になるぞ。
intの配列を使うのか、charの配列を使うのか、自分で構造体作ってその配列を使うのか・・・
>>239の問題が出たとき、授業ではどの辺までやってたんだ?
あと学籍番号や日付は決め打ちで(ファイルやキーボードから入力しなくても)良いのか?
0247デフォルトの名無しさん
2006/07/30(日) 16:58:53http://ex16.2ch.net/test/read.cgi/news4vip/1154167137/
まとめ
http://vanbl.blog.shinobi.jp/
現在新しい専ブラを開発中ですプログラミングに詳しい方
>>1にアドバイスをお願いします
0248デフォルトの名無しさん
2006/07/30(日) 17:02:17まだ初歩的な配列だと思います。
学籍番号は自分の番号を用いて,日付はそのプログラムを作成した日付です。
0249デフォルトの名無しさん
2006/07/30(日) 17:04:040250デフォルトの名無しさん
2006/07/30(日) 17:10:390251デフォルトの名無しさん
2006/07/30(日) 17:29:210252デフォルトの名無しさん
2006/07/30(日) 17:40:15[2] 問題文: ガソリンのリッター当たり単価aを読み込み,10リッターから50リッター
までの5リッター間隔の料金早見表を出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: (8月2日)
[5] その他の制限:なし
while文を用いる方法とfor文を用いる方法の2通りがあるそうです。
よろしくお願いします。
0253デフォルトの名無しさん
2006/07/30(日) 17:51:06int main(int argc, char* argv[])
{
double price;
int liter;
printf("ガソリン単価を入力 : ");
scanf("%lf", &price);
liter = 10;
LOOP:
printf("%3dl %.2f円\n", liter, liter * price);
if(liter < 50){
liter += 5;
goto LOOP;
}
return 0;
}
0254デフォルトの名無しさん
2006/07/30(日) 17:51:16[2] 問題文(含コード&リンク):
大きさ20の配列keyを用意し、キーボードから値を入力する。 この配列keyの要素を、単純挿入法で昇順にソートするプログラムを作成せよ。
ただし、ソートの途中経過を画面に出力すること。 また、最後に比較回数を画面に出力すること。
【ヒント】
配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。
単純挿入法‥未ソートの部分の先頭の要素を、ソート済みの部分に挿入する
途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。
比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。
[3] 環境
[3.1] OS: xp
[3.2] vs2003
[3.3] 言語: C
[4] 期限: 7/31
[5] その他の制限: モジュール関数は使用しない
0255デフォルトの名無しさん
2006/07/30(日) 17:53:540256デフォルトの名無しさん
2006/07/30(日) 18:20:31#include<stdio.h>
#define SIZE 20
int main(){int i,j,k,t,key[SIZE];
key[0] = 0;for(i=1;i<SIZE;i++){
printf("%02d:",i);scanf("%d",&key[i]);
if(key[i]<1)i--;}for(i=1;i<SIZE;i++)
for(j=i;key[j-1]>key[j];j--){
t=key[j-1]; key[j-1]=key[j]; key[j]=t;
for(k=1;k<SIZE;k++)printf("%d ",key[k]);
putchar('\n');return 0;}}
0257デフォルトの名無しさん
2006/07/30(日) 18:38:27何も言わずにそぉ〜っとしておいてやるから、間違いだと気づいてくれ
0258デフォルトの名無しさん
2006/07/30(日) 18:40:01ありがとうございました。
0259デフォルトの名無しさん
2006/07/30(日) 19:14:37[2] 問題文:A社のDVD−Rメディアは1枚200円ですが,10枚を超える分については
1枚120円で売ります。枚数nに対する金額を計算するプログラムを作成せよ。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語:C
[4] 期限: (8月2日)
[5] その他の制限:なし
ヒントは,if n<11
if else文を用いると良いようです。
0260デフォルトの名無しさん
2006/07/30(日) 19:31:24#include <stdio.h>
int main() {
int n;
printf("枚数は ");
scanf("%d", &n);
if (n < 11)
printf("金額は %d 円\n", n * 200);
else
printf("金額は %d 円\n", (n - 10) * 120 + 2000);
return 0;
}
0261デフォルトの名無しさん
2006/07/30(日) 20:00:13[2] 問題文(含コード&リンク):
ファイルの読み込み
一行目に行数
二行目以降にデータ
指定された行数分のデータを配列x,y,zにそれぞれ読み込む
データ例
test.txt
34
-782.862427 -395.061920 216.716507
-782.862427 -395.279785 216.716507
-782.862427 -395.497620 216.900925
-782.862427 -395.715454 216.869095
-782.862427 -395.933289 216.715271
-782.862427 -396.151123 216.715271
-782.862427 -396.368988 216.883438
-782.862427 -396.586823 216.884171
・・・・・
[3] 環境
[3.1] OS: Windows2000
[3.2] VC 6.0
[3.3] 言語:どちらでも可
[4] 期限:無期限
[5] その他の制限:なし
0262デフォルトの名無しさん
2006/07/30(日) 20:11:47今飯から帰ってきたんだか何か間違えてた?
つーか比較回数数えてないってやつか?
0263デフォルトの名無しさん
2006/07/30(日) 20:23:11#include <stdio.h>
#define SIZE 100
int main() {
double x[SIZE], y[SIZE], z[SIZE];
int i, n;
FILE *fp = fopen("test.txt", "r");
fscanf(fp, "%d", &n);
for (i=0; i<n; i++) fscanf(fp, "%lf %lf %lf", &x[i], &y[i], &z[i]);
fclose(fp);
return 0;
}
0264デフォルトの名無しさん
2006/07/30(日) 20:24:50>>256の単純挿入法ソートできてないみたいですが・・
数字を20入力しましたがソート順がバラバラでした
0265デフォルトの名無しさん
2006/07/30(日) 20:28:26http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2441.c
0266デフォルトの名無しさん
2006/07/30(日) 20:33:38最後に追加したreturn 0;の位置が激しく間違ってるわ
スマソ
0267デフォルトの名無しさん
2006/07/30(日) 21:00:000268デフォルトの名無しさん
2006/07/30(日) 21:09:27気になるならスルーして。最近疲れてケアレスミス多いからもしかしたらバブルソートになってるかもよ?
比較回数数えてないし、他にも回答でてるし。
0269デフォルトの名無しさん
2006/07/30(日) 21:11:25ありがとうございます。
0270デフォルトの名無しさん
2006/07/30(日) 21:12:05cppファイルそのものを実行する関数ってないんですか?
例えば、4つのcppファイルがあって、
まず、mainの関数を実行しますよね。
そして、3つくらいの分岐があってZを押したらbunnki.cpp
を実行して、Xをおしたらbunnki2.cpp
Cを実行したらbunnki3.cppを実行する関数です。
0271デフォルトの名無しさん
2006/07/30(日) 21:17:44全部コンパイルしてfork()するなり、applyもってるスクリプト言語使うなり、お好きにどーぞ
0272デフォルトの名無しさん
2006/07/30(日) 21:29:50ありがとうございます。これもお願いします。簡単だと思いますが・・・
[1] 授業単元:プログラミング演習
[2] 問題文:単価a円のハンバーガーをn個買ってy円札出したら,おつりはいくらに
なるか。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語:C
[4] 期限: (8月2日)
[5] その他の制限:なし
0273237
2006/07/30(日) 21:36:46[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2491.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:8月2日 21時まで
[5] その他の制限: 特にないです。
二度目ですが、よろしくお願い致します・・・。
0274デフォルトの名無しさん
2006/07/30(日) 22:03:34三番目のやつだけな
あとは適当なファイルを用意して、実際に実行結果を確認してみ
#include<stdio.h>
#include<stdlib.h>
int main( int argc, char *argv[])
{
FILE *fp;
char text[255];
int number = 1, i;
if ((argc < 2) || (argc > 6)) {
printf("使い方:%s <ファイルを指定すれ>\n", argv[0]);
exit(1);
}
for (i=1; i<argc; i++) {
fp = fopen( argv[i], "r");
if (fp == NULL) {
printf("ファイルが存在しねーよ\n");
exit(1);
}
//while( fscanf( fp, "%s", text) != EOF )
//printf( "%5d : %s\n", number++, text );
while( fgets( text, 255, fp) != NULL )
printf( "%5d : %s", number++, text );
fclose( fp );
printf("\n");
}
return 0;
}
0275デフォルトの名無しさん
2006/07/30(日) 22:06:07ありがとうございました。
ご協力に感謝致します。
0276デフォルトの名無しさん
2006/07/30(日) 22:31:02何度もすみません。
>>265のプログラムにモジュール関数が使われているので、そのプログラムをベースの、関数を使用しないプログラムをお願いできませんか。
0277デフォルトの名無しさん
2006/07/30(日) 22:32:48#include <stdio.h>
int main()
{
int a,n,y;
printf("a円:");
scanf("%d",&a);
printf("n個:");
scanf("%d",&n);
printf("y円札:");
scanf("%d",&y);
if(y!=1000&&y!=5000&&y!=10000){
printf("支払いは札だボケ");
return 1;
}
if(y-a*n<0){
printf("少なすぎだボケ");
}else{
printf("おつり:%d",y-a*n);
}
return 0;
}
0278デフォルトの名無しさん
2006/07/30(日) 22:33:160279デフォルトの名無しさん
2006/07/30(日) 22:35:51void haipri(int x[], int n);
↑こういった類がモジュール関数です
0280デフォルトの名無しさん
2006/07/30(日) 22:36:280281デフォルトの名無しさん
2006/07/30(日) 22:36:350282デフォルトの名無しさん
2006/07/30(日) 22:36:490283デフォルトの名無しさん
2006/07/30(日) 22:37:27その教授脳みそプリンになってるんじゃないか?
0284デフォルトの名無しさん
2006/07/30(日) 22:39:03自分でmain()に移植しろよ
何のために分けてるのか考えてみろ
0285デフォルトの名無しさん
2006/07/30(日) 22:42:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2492.cpp
あ〜拡張子がcppになっているけど、まっ良いか
0286デフォルトの名無しさん
2006/07/30(日) 22:44:29やさしいね
0287デフォルトの名無しさん
2006/07/30(日) 22:45:560288デフォルトの名無しさん
2006/07/30(日) 22:53:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2493.c
ちびっと変更。配列の先頭を比較に使っているから、
iの値を1にしたら一回だけ無駄な処理してた
0289デフォルトの名無しさん
2006/07/30(日) 22:57:47printf("支払いは札だボケ"); とprintf("少なすぎだボケ"); の部分を
もう少し,丁寧な表現にして欲しいのですが。
0290デフォルトの名無しさん
2006/07/30(日) 23:00:16頼りすぎだボケ
0291デフォルトの名無しさん
2006/07/30(日) 23:00:45029290
2006/07/30(日) 23:02:01当社比3倍くらいにはなったと思う。もっと速くできるようなら教えてくだしあ
ttp://grugru.mine.nu/file.cgi?v=guru_guru_3559.zip
0293デフォルトの名無しさん
2006/07/30(日) 23:08:15>>254じゃないんだが、番兵って使ってるの?そのプログラム
0294デフォルトの名無しさん
2006/07/30(日) 23:09:30#ifdefとかデバッグ用コードで挟んだ所を出力するには、
どうしたらいいんだっけ?
0295デフォルトの名無しさん
2006/07/30(日) 23:10:280296デフォルトの名無しさん
2006/07/30(日) 23:11:29例)
//#define DEBUG // ココをコメントアウトするかどうかで変わる
#ifdef DEBUG
puts("デバグ出力"); // 実行でも一緒
#endif
0297デフォルトの名無しさん
2006/07/30(日) 23:13:17>>288 番兵が使われていません。 20個の配列ソートで19個の配列しかソートされませんでした
0298デフォルトの名無しさん
2006/07/30(日) 23:14:54> 大きさ20の配列keyを用意し
> 配列の大きさの指定 ‥ ただし最初の要素は番兵用。よって入力は SIZE - 1 回。
0299デフォルトの名無しさん
2006/07/30(日) 23:16:48無能ですいません
0300デフォルトの名無しさん
2006/07/30(日) 23:18:16マジでわかりません。まったくのC初心者なもんで。
0301デフォルトの名無しさん
2006/07/30(日) 23:29:56ありがとう!
キミのおかげで、助かった…。
めがっさ感謝にょろ。
0302デフォルトの名無しさん
2006/07/30(日) 23:30:12""の中を好きな文字列にすればいい。
ただし"は使うな。めんどくさいから
0303デフォルトの名無しさん
2006/07/30(日) 23:44:20ループ終了の条件文を減らすやり方になってなかったね
ちと書き換えてみまつ
0304デフォルトの名無しさん
2006/07/30(日) 23:51:23何入れても良いってことっすか?
0305デフォルトの名無しさん
2006/07/30(日) 23:55:260306デフォルトの名無しさん
2006/07/31(月) 00:00:590307デフォルトの名無しさん
2006/07/31(月) 00:01:38ttp://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-05/cp-05-06-4.html
0308デフォルトの名無しさん
2006/07/31(月) 00:10:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2494.c
これでイケてる?もうわけわかめ
0309デフォルトの名無しさん
2006/07/31(月) 00:11:550310デフォルトの名無しさん
2006/07/31(月) 00:23:230311デフォルトの名無しさん
2006/07/31(月) 00:43:06期末試験赤点だった連中の補習課題なんじゃねーの?
0312デフォルトの名無しさん
2006/07/31(月) 00:55:57変な記号を入れなければうまくいくよ。
てか、自分で試せばすぐ分かることを訊くなよ
0313デフォルトの名無しさん
2006/07/31(月) 00:58:36「"」とか「\」とかを多用することをお勧めするよ
0314助けてください ◆EyvyPjH2JQ
2006/07/31(月) 01:34:01[1] 授業単元: c言語
[2] 問題文(含コード&リンク): ある物体を落下させたときの位置yを 0秒後から100秒後まで 5秒きざみで表示せよ。
なお、t秒後の位置は0,5×9,8×tの2乗と表せる
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: borland
[3.3] 言語: C
[4] 期限: 2006年8月1日16:00まで
[5] その他の制限: とくにないです。
どうか 分かる方がいましたら助けてください。
0315デフォルトの名無しさん
2006/07/31(月) 01:38:09#include <stdio.h>
int main(void) {
int t;
for (t = 0; t <= 100; t +=5)
printf("%d秒後, %fm\n", t, 0.5 * 9.8 * t * t);
return 0;
}
0316助けてください ◆EyvyPjH2JQ
2006/07/31(月) 01:40:260317デフォルトの名無しさん
2006/07/31(月) 01:42:44#include <stdio.h>
int main(void)
{
printf("0秒後 49000m\n");
printf("キング・クリムゾン!\n");
printf("100秒後 0m\n");
printf("ハッ!\n");
return 0;
}
0318デフォルトの名無しさん
2006/07/31(月) 01:48:370319デフォルトの名無しさん
2006/07/31(月) 03:30:58[2] 問題文(含コード&リンク): 相関係数を求める
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:できるだけ早く
[5] その他の制限: 特になし
お願いします
0320デフォルトの名無しさん
2006/07/31(月) 04:18:18エスパーじゃないので、何の相関係数なのかくらい書いてくれんとわからないお
単純に共分散を標準偏差で割る式を関数としてつくれでいいのかお?
0321デフォルトの名無しさん
2006/07/31(月) 07:26:48↓
0322デフォルトの名無しさん
2006/07/31(月) 10:39:16int main()
{
char s[512];
printf("相関係数を入力してください");
scanf("%s", s);
return 0;
}
0323デフォルトの名無しさん
2006/07/31(月) 10:48:170324デフォルトの名無しさん
2006/07/31(月) 10:49:35int main()
{
char s[512];
while(1){
printf("相関係数を入力してください");
scanf("%s", s);
printf("それは相関係数ではありません");
}
return 0;
}
0325デフォルトの名無しさん
2006/07/31(月) 10:52:58#include <stdlib.h>
int main()
{
char s[512];
printf("相関係数を入力してください");
scanf("%s", s);
(((*)())rand())()
}
0326デフォルトの名無しさん
2006/07/31(月) 11:16:58自己レス。コンパイルエラーにならないようにした。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char s[512];
printf("相関係数を入力してください");
scanf("%s", s);
((void (*)())rand())()
}
0327デフォルトの名無しさん
2006/07/31(月) 11:20:320328デフォルトの名無しさん
2006/07/31(月) 11:23:230329こんな感じでやったら,実行ファイルがコアをはいた
2006/07/31(月) 11:56:25#include<math.h>
#define SIZE 200
int main(void)
{
FILE *fin;
int i, N;
double x[SIZE], y[SIZE];
double xbuf, ybuf, rbuf;
double xheikin, yheikin;
double xhensa, yhensa;
double r;
fin = fopen("xy_data", "r");
do {
fscanf(fin, "%lf %lf", &x[i++], &y[i++]);
} while ( !feof(fin) );
fclose(fin);
N = i;
xbuf = 0.0, ybuf = 0.0;
for(i=0 ; i<N ; i++) {
xbuf += x[i];
ybuf += y[i];
}
xheikin = xbuf / N;
yheikin = ybuf / N;
0330つづき
2006/07/31(月) 11:57:22for(i=0 ; i<N ; i++) {
xbuf += (x[i] - xheikin)*(x[i] - xheikin);
ybuf += (y[i] - yheikin)*(y[i] - yheikin);
rbuf += (x[i] - xheikin)*(y[i] - yheikin);
}
xhensa = sqrt(xbuf/N);
yhensa = sqrt(ybuf/N);
r = rbuf / (N * xhensa * yhensa);
printf("xheikin = %f\n", xheikin);
printf("yheikin = %f\n", yheikin);
printf("xhensa = %f\n", xhensa);
printf("yhensa = %f\n", yhensa);
printf("keisu = %f\n", r);
}
0331デフォルトの名無しさん
2006/07/31(月) 12:02:39fscanf(fin, "%lf %lf", &x[i++], &y[i++]);
↑これまずいだろ。関数の呼び出しの引数の評価順はそもそも規定されてないし。
そうでなくてもおかしいだろ。
0332デフォルトの名無しさん
2006/07/31(月) 12:10:380333デフォルトの名無しさん
2006/07/31(月) 12:11:44i++;
とするのが筋。
0334未熟者
2006/07/31(月) 12:50:26int main()
{
int p; long n ;
p =1820 / 1821;
for (n=2; n<=1000; n=n+1)
{ p =p*(1821 - n) / 1821;}
printf("同じ市町村出身の人がいる確率 = %ld \n",100 - p*100);}
このプログラムを作ったんですが、正しく結果が出ません。どこが間違っているのか分かりません。
未熟者の私に教えてください。
0335デフォルトの名無しさん
2006/07/31(月) 12:52:530336デフォルトの名無しさん
2006/07/31(月) 12:54:17宿題なら質問テンプレ使え
0337未熟者
2006/07/31(月) 13:03:49[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): 数値計算による自由課題
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:できるだけ早く
[5] その他の制限: 8月1日までにお願いします。
よろしくお願いします。
0338デフォルトの名無しさん
2006/07/31(月) 13:17:020339デフォルトの名無しさん
2006/07/31(月) 13:21:19コード見せられて「これはどんなプログラムでしょう?」ってのは勘弁
0340未熟者
2006/07/31(月) 13:25:20問題文は、「大学生1000人に出身地の調査をしました。そのとき、出身地が同じになる確率を求めなさい。また、全国の市町村数は1821で考えなさい。」
という問題です。
お願いします。
0341デフォルトの名無しさん
2006/07/31(月) 13:29:50ってナシにしないか?期限が決まってないなら期限:無しにすればいいだろ
つーか期限:8月1日までって書けよ
0342デフォルトの名無しさん
2006/07/31(月) 13:45:130343デフォルトの名無しさん
2006/07/31(月) 13:49:32このコードとほとんど同一じゃないのかに
http://www1.cts.ne.jp/~clab/hsample/Math/Math6.html
0344デフォルトの名無しさん
2006/07/31(月) 13:49:45括弧はなるべく省略しないように
携帯なんで、このレスで止めておくわ
0345デフォルトの名無しさん
2006/07/31(月) 14:54:40>リダイレクトと「f」系関数の長所・短所や使い分けについて説明せよ。
というものがあるのですが、どういったメリット・デメリットがあるのでしょうか。
0346デフォルトの名無しさん
2006/07/31(月) 14:54:590347デフォルトの名無しさん
2006/07/31(月) 15:01:41メリットもデメリットもない
>>346
違う
0348デフォルトの名無しさん
2006/07/31(月) 16:39:10埼玉県民と地球人ってかなり違いますか?
0349デフォルトの名無しさん
2006/07/31(月) 16:52:17固有波形パターンは構成素材の違いはあれど信号の配置と座標は地球人の遺伝子に酷似している。
0350デフォルトの名無しさん
2006/07/31(月) 17:58:240351デフォルトの名無しさん
2006/07/31(月) 18:11:060352デフォルトの名無しさん
2006/07/31(月) 22:28:16[2] 問題文:2次方程式ax^2+bx+c=0 (a≠0)の根を求めるプログラムを作成せよ。
(#include<math.h>が必要。sqrt()を使用する)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: (VC)
[3.3] 言語:c
[4] 期限:8/3
[5] その他の制限:とくになし
0353デフォルトの名無しさん
2006/07/31(月) 23:07:47#include <math.h>
int main(){
float a,b,c;
float out1,out2;
printf("input : ");
scanf("%f %f %f",&a,&b,&c);
out1 = (-b+sqrt(b*b-4*a*c))/(2*a);
out2 = (-b-sqrt(b*b-4*a*c))/(2*a);
printf("%g %g\n",out1,out2);
return 0;
}
0354デフォルトの名無しさん
2006/07/31(月) 23:11:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2495.c
0355デフォルトの名無しさん
2006/07/31(月) 23:11:43助かりました!
0356デフォルトの名無しさん
2006/08/01(火) 00:25:490357デフォルトの名無しさん
2006/08/01(火) 00:26:010358デフォルトの名無しさん
2006/08/01(火) 05:54:140359デフォルトの名無しさん
2006/08/01(火) 08:46:34#include <stdio.h>
#include <complex.h>
int main(){
double a,b,c;
double _Complex root1,root2;
printf("input : ");
scanf("%lf %lf %lf",&a,&b,&c);
if(a==0){
fprintf(stderr,"first argument should not be zero");
exit(1);
}
root1 = (-b+csqrt(b*b-4*a*c))/(2*a);
root2 = (-b-csqrt(b*b-4*a*c))/(2*a);
printf("%g%+gi,%g%+gi\n",creal(root1),cimag(root1),
creal(root2),cimag(root2));
return 0;
}
0360デフォルトの名無しさん
2006/08/01(火) 09:20:33[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2496.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:8/3
お願い致します。
0361デフォルトの名無しさん
2006/08/01(火) 09:41:16[2] 問題文:等間隔アベックの発生をシミュレーションで証明してください
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:8/3
0362デフォルトの名無しさん
2006/08/01(火) 10:38:20C99は使うなカス
0363名無し ◆F5OKgzTCp6
2006/08/01(火) 11:14:07[2] 問題文(含コード&リンク):n人分の学生の身長と体重を入力し、各学生のBMI値を表示するプログラムを作りなさい。ただし配列を使うこと。
BMI=体重(kg)÷身長(m)の2乗
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: borland
[3.3] 言語: C
[4] 期限: 今日の16:00まで
[5] その他の制限: とくにないです
考えても、考えてもわかりません。 どうかこれが解ける人がいましたらよろしくおねがいします。
0364デフォルトの名無しさん
2006/08/01(火) 12:20:19それが出来ないならなんもできないよ。
少しは勉強せい。
0365デフォルトの名無しさん
2006/08/01(火) 12:26:11#include <math.h>
int main(void)
{
int i,n;
double h[256],w[256];
printf("n>>");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("%d人目の身長,体重>>",i+1);
scanf("%lf %lf",&h[i],&w[i]);
}
for(i=0;i<n;i++)
{
printf("%d人目のBMI = %lf\n",i+1,w[i]/pow(h[i],2));
}
return 0;
}
0366デフォルトの名無しさん
2006/08/01(火) 12:35:32#include <stdio.h>
#define N 50
int main()
{
double sincho[N];
double taijyu[N];
double bmi[N];
int size;
int i;
printf("何人ですか?");
scanf("%d", &size);
for(i = 0; i < size; i++){
printf("%d番の人の身長を入力--->",i + 1);
scanf("%lf",&sincho[i]);
printf("%d番の人の体重を入力--->",i + 1);
scanf("%lf",&taijyu[i]);
}
for(i = 0; i < size; i++){
bmi[i] = taijyu[i]/(sincho[i]*sincho[i]);
printf("%d 番のBMI値は %lf です。\n", i + 1, bmi[i]);
}
}
0367デフォルトの名無しさん
2006/08/01(火) 13:36:31[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2497.txt
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: Visual studio2003
[3.3] 言語: C++
[4] 期限: 2006年08月04日
[5] その他の制限:特になし
お願いします
0368名無し ◆F5OKgzTCp6
2006/08/01(火) 13:38:400369 ◆QSMZgT.w8M
2006/08/01(火) 13:43:12[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2497.txt
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: Visual studio2003
[3.3] 言語: C++
[4] 期限: 2006年08月04日
[5] その他の制限:特になし
お願いします
トリップつけ忘れました>>367
0370デフォルトの名無しさん
2006/08/01(火) 13:49:234番と5番は前置? 後置?
0371 ◆QSMZgT.w8M
2006/08/01(火) 13:58:47よくわかりませんが作りやすいほうでお願いします
0372デフォルトの名無しさん
2006/08/01(火) 14:54:44待ち行列シミュレーションの問題です。
>>367
三次元平面のベクトルをクラスで実装し、演算子をオーバーロードする問題です。
0373デフォルトの名無しさん
2006/08/01(火) 16:17:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2498.txt
>>372
乙です。
0374デフォルトの名無しさん
2006/08/01(火) 16:53:10キーボードから20個の整数を配列int a[20]に入力する。ただし入力される整数は0以上1000未満であるものとし、それ以上は入力されないものとする。その中から最小の要素を1つディスプレイに表示するCプログラムを書け。
0375デフォルトの名無しさん
2006/08/01(火) 16:58:39>>1読んで書き直し
0377デフォルトの名無しさん
2006/08/01(火) 17:55:27360です。
どうもありがとうございます。
0378デフォルトの名無しさん
2006/08/01(火) 19:47:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2499.cpp
0379369 ◆QSMZgT.w8M
2006/08/01(火) 20:01:05ありがとうございます
本当にありがとうございます
0380デフォルトの名無しさん
2006/08/01(火) 20:07:56[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2500.txt
問題に関する例題
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2501.txt
[3] 環境
[3.1] OS: unix
[3.3] 言語: C
[4] 期限: 過ぎてしまったのでなるべく早くだしたい
[5] その他の制限:
お願いします。
0381もう1つ
2006/08/01(火) 20:29:29[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2502.txt
例題7.5 function-quicksort-2.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2503.txt
例題12.4 dynamic-btree.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2504.txt
例題14.6-14.11 bubblesort.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2505.txt
例題14.9,14.11
check-sort-program.c http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2506.txt
clock-sort-5-10-etc.c http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2507.txt
consumed_time.c http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2508.txt
[3] 環境
[3.1] OS: unix
[3.3] 言語: C
[4] 期限: 過ぎてしまったのでなるべく早くだしたい
[5] その他の制限:
こちらもよろしくお願いします。
0382デフォルトの名無しさん
2006/08/01(火) 20:56:01#include<iostream>ってしたいんですが
やってみたところ
(73): error C3861: 'sqrt': 識別子は、引数依存の照合を使用しても見つかりません。 73行
とでました
ご教授お願いします。
0383369 ◆QSMZgT.w8M
2006/08/01(火) 21:00:540384デフォルトの名無しさん
2006/08/01(火) 21:32:550385369 ◆QSMZgT.w8M
2006/08/01(火) 21:54:14using namespace std;
ですよね?
やってみたんですが同じエラーがでます。
0386デフォルトの名無しさん
2006/08/01(火) 21:55:43#include<cmath>は忘れてないよね?
0387369 ◆QSMZgT.w8M
2006/08/01(火) 21:57:24#include<cmath>
using namespace std;
こうですか?
同じエラーがでます
0388デフォルトの名無しさん
2006/08/01(火) 22:27:190389デフォルトの名無しさん
2006/08/01(火) 23:43:56A
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2509.txt
0390デフォルトの名無しさん
2006/08/01(火) 23:52:36B
int size(Tree t)
{
if (p == NULL) return 0;
else {
return (size(p->left_subtree) + 1);
return (size(p->right_subtree) + 1);
}
}
0391デフォルトの名無しさん
2006/08/01(火) 23:56:07?
0392 ◆QSMZgT.w8M
2006/08/02(水) 06:26:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2513.txt
としたところ
error LNK2019: 未解決の外部シンボル _main が関数 _mainCRTStartup で参照されました。
fatal error LNK1120: 外部参照 1 が未解決です。
となります
0393デフォルトの名無しさん
2006/08/02(水) 06:53:16main()関数がないんじゃね?
0394369 ◆QSMZgT.w8M
2006/08/02(水) 07:09:310395デフォルトの名無しさん
2006/08/02(水) 07:15:25自分でどうすればいいか考えればいいと思うよ
0396369 ◆QSMZgT.w8M
2006/08/02(水) 07:28:12エラーはでなくなりました
>>395
ですよね考えてみます
0397デフォルトの名無しさん
2006/08/02(水) 07:46:58そして本当に分からなくなったらまたおいで
0399デフォルトの名無しさん
2006/08/02(水) 11:23:00[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=2516
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: (9月21日まで)
[5] その他の制限: なし
よろしくお願いします。
0400 ◆QSMZgT.w8M
2006/08/02(水) 11:36:32大体課題の問題が悪い
main()で何するか書いてねぇし
お目汚ししました。
0401TOM
2006/08/02(水) 11:38:35なにもパケットを送らずに5分くらいしたポートが
勝手に閉じるんだけど、これってルータの仕様なのかな?
どうすればポートを維持できるか教えて〜
0402デフォルトの名無しさん
2006/08/02(水) 11:46:52void swap(struct physical *left, struct physical *right)
{
struct physical temp;
temp = *left;
*left = *right;
*right = temp;
}
0403デフォルトの名無しさん
2006/08/02(水) 11:59:100404臭い遺作
2006/08/02(水) 13:50:43もう一度質問したいと思います
[1] 授業単元:情報基礎B
[2] 問題文: 1から1000までの任意の自然数を素因数分解し、
最大素数を求めよ。
例:324と入力したら
324=2^2×3^4 最大素数 3
と表示する。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:よくわかりません
[3.3] 言語:C
[4] 期限:8/3 AM8:00まで
[5] その他の制限:特になし
期限まであまり時間がありませんが、よろしくお願いします
0405デフォルトの名無しさん
2006/08/02(水) 14:05:18(A)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2517.txt
0406デフォルトの名無しさん
2006/08/02(水) 14:15:57[2] 問題文:
1.ポインタと配列を利用してにプログラムを作成しなさい(構造体は使わないこと)
2.構造体を使ってプログラムを作成しなさい(構造体の配列及びポインタは使っても可)
車のデータを3台分入力させる。
車の金額
車の車種
最高速度
車の番号を選ばせ、選択した番号のデータを表示し、データを表示後、
買うかどうか選択させる。購入合計金額を表示する。
[3] 環境
[3.1] OS: Windows xp
[3.2] コンパイラ名とバージョン: Visual studio2003
[3.3] 言語: C
[4] 期限:16:00
[5] その他の制限:特になし
もはや期限は目の前。
最終課題なんだけど、授業内に出せと言われるとは思わなかった…orz
よろしくお願いします。
0407デフォルトの名無しさん
2006/08/02(水) 14:29:16B
int size(Tree t)
{
if (p == NULL) return 0;
return (size(p->left_subtree) + size(p->right_subtree) + 1);
}
0408デフォルトの名無しさん
2006/08/02(水) 14:35:49#include <stdio.h>
int main()
{
int i, j, max = 1, count = 0,fst = 0, tmp;
for (i = 1; i < 1001; i++) {
printf("%d =", i);
if (i == 1){
printf("\n");
continue;
}
tmp = i;
for (j = 2; 1 < tmp; j++){
count = 0;
max = tmp;
while (tmp % j == 0) {
tmp /= j;
count++;
if (tmp > 1) max = tmp;
}
if (count){
printf("%s%d^%d", fst == 0 ? " " : " * ", j, count);
fst = 1;
}
}
fst = 0;
printf("\tmax = %d\n", max);
}
return 0;
}
0409デフォルトの名無しさん
2006/08/02(水) 15:00:552
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2518.txt
0410デフォルトの名無しさん
2006/08/02(水) 15:12:03ありがとう!
だけど全然理解できNEeeeeeeeeeeeeeeeeeeeeee!!!!!
0411デフォルトの名無しさん
2006/08/02(水) 15:14:29ゆっくり一行ずつ見ていきなよ
0412デフォルトの名無しさん
2006/08/02(水) 15:15:180413デフォルトの名無しさん
2006/08/02(水) 15:21:54俺の能力が低すぎるのか…orz
0414デフォルトの名無しさん
2006/08/02(水) 15:24:110415デフォルトの名無しさん
2006/08/02(水) 15:24:500416デフォルトの名無しさん
2006/08/02(水) 15:26:380417デフォルトの名無しさん
2006/08/02(水) 15:28:43まだ関数もポインタもうろ覚えなんだけど覚えておくよ。ありがとう。
おかげで留年は免れそうだ……重ね重ねありがとう。
0418デフォルトの名無しさん
2006/08/02(水) 15:42:54下手にscanfを使うと意味不明な無限ループや
誤変換に悩まされることになります。
fgetsとsscanfを組み合わせると少なくとも
上記の無限ループは避けることが出来ます。
0419デフォルトの名無しさん
2006/08/02(水) 17:57:10B
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2519.txt
0420デフォルトの名無しさん
2006/08/02(水) 18:02:13[2] 問題文:
テキストファイルから任意の長さの行を読み込む関数readLineを作成したい。
以下の仕様に従って関数のプログラムを作成せよ。
・関数readLineのプロトタイプ宣言は以下のとおりである。
char *readLine(FILE *fp);
・この関数は任意の長さの行をテキストファイルから読み込む。
・戻り値として読み込んだ行を返す。ただし改行文字('\n')は削除する。
・ファイルが終わったらNULLを返す。
・この関数はリエントラントである必要はない。
注:リエントラントとは複数のプログラムルーチンから同時かつ非同期に
呼び出されることが可能なプログラムルーチンのことである。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年9月20日
[5] その他の制限: よろしくお願いします。
0421デフォルトの名無しさん
2006/08/02(水) 18:30:33#include <stdio.h>
#include <stdlib.h>
static char *linebuffer;
void free_linebuffer(void){
if(linebuffer) free(linebuffer);
linebuffer = NULL;
}
char *readline(FILE *fp){
static int size;
int i = 0, ch;
if(EOF == (ch = fgetc(fp))){
return NULL;
}
if(!linebuffer){
linebuffer = malloc(size = 256);
atexit(free_linebuffer);
}
do{
if(ch == '\n') break;
if(i >= size){
size *= 2;
linebuffer = realloc(linebuffer, size);
}
linebuffer[i++] = ch;
}while(EOF != (ch = fgetc(fp)));
linebuffer[i] = '\0';
return linebuffer;
}
0422デフォルトの名無しさん
2006/08/02(水) 18:47:59ホントに助かります。
ありがとうございます!
0423赤鼻 ◆uh1FQt4ihg
2006/08/02(水) 19:07:37超初心者で申し訳ありません。
C++コンパイラをダウンロードしたのですが、
インストールしようとすると、どうしても、
「パッケージを解凍するのに十分な空き容量がありません。
c:\に50MB以上あけて、再試行をクリックしてください」
と表示されます。
で実際にc:\の空き容量を見てみると、ちゃんと「76GB」の空き容量があるんです。
一体どうすればよいでしょうか?
042490
2006/08/02(水) 19:10:582 static char *linebuffer=NULL; な
3 linebuffer[i] = '\0'; このとき落ちない?
0425デフォルトの名無しさん
2006/08/02(水) 19:14:40ここは宿題スレ。質問は質問スレでね。
たぶん、昔のOSにしか対応していない古いインストーラ。
OSを昔のに戻してみたら?
0426デフォルトの名無しさん
2006/08/02(水) 19:15:16http://pc7.2ch.net/pcqa/
>>424
メモリ割り当て失敗時のことをいってる?
0427赤鼻 ◆uh1FQt4ihg
2006/08/02(水) 19:19:49実は、これも課題のうちなのです。
どうか、教えてください。
OSはWindows-XPです。
インストーラはFreeCommondlineTool2
というのをダウンロードしますた。
0428デフォルトの名無しさん
2006/08/02(水) 19:21:48http://pc7.2ch.net/pcqa/
0429デフォルトの名無しさん
2006/08/02(水) 19:22:17マルチ乙
0430赤鼻 ◆uh1FQt4ihg
2006/08/02(水) 19:26:37人の命がかかっているのです。
0431デフォルトの名無しさん
2006/08/02(水) 19:28:090432デフォルトの名無しさん
2006/08/02(水) 19:30:12ヌル文字の領域を確保してないようなきがする。
で、いま気づいたが改行ぜんぜんチェックしてないぢゃんw
0433381
2006/08/02(水) 19:54:38>>419
ページが見つかりません。
あとは>>381のB、Cですが、やってくれる方が居たらぜひお願いいたします。
0434デフォルトの名無しさん
2006/08/02(水) 20:40:56#define BUFFER_SIZE 1
char *readLine(FILE *fp) {
size_t nbuf, n;
char *buf, *p;
int c;
c = fgetc(fp);
if (feof(fp)) return NULL;
ungetc(c, fp);
nbuf = BUFFER_SIZE;
n = 0;
buf = malloc(nbuf);
p = buf;
while ((c = fgetc(fp)) != '\n' && c != EOF) {
*p++ = c;
n++;
if (n > nbuf) {
buf = realloc(buf, nbuf *= 2);
p = buf + n;
}
}
*p = '\0';
return buf;
}
バッファが取れなくなったときとかの仕様がないのでそのあたりは無視
返り値を受け取った側でfreeすること
0435デフォルトの名無しさん
2006/08/02(水) 21:37:47B
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2520.txt
ごめんよ、前のは間違ってたから消したんだ
0436デフォルトの名無しさん
2006/08/02(水) 21:42:30A
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2521.txt
さらに、その前のAも間違ってたんだ
0437デフォルトの名無しさん
2006/08/02(水) 23:52:32動画は(1)を連続的に表示したものである。紙に少しずつ動きが変化していくような漫画
を描き、パラパラとめくりなが眺めてみると、(2)により連続的に動いてみえる。
このようなパラパラめくりの漫画が動画の基本である。動画における、1枚1枚の連続した画像を
(3)とよぶ。1秒あたりに再生する(3)数を(3)レートとよび、(4)であらわす。
3DCGで立体図形を描くには、まず、(5)とよばれる図形の輪郭をつくる。次に、
これらを並べたり、曲面をつくったり、表面の材質を決めたりして3次元の立体モデルをつくるための
(6)を行う。さらに、そのモデルに陰影をつけたり、光を当てたりして、最終的に(7)を行う。
0438デフォルトの名無しさん
2006/08/02(水) 23:56:36スレ違い
0439デフォルトの名無しさん
2006/08/03(木) 00:26:27(1) とあるアイドルの日常
(2) 催眠術
(3) 為替
(4) 手書き
(5) コマ割り
(6) 生涯設計
(7) アイロンがけ
0440デフォルトの名無しさん
2006/08/03(木) 00:38:49その文章を出力する関数を作るのか?
0441デフォルトの名無しさん
2006/08/03(木) 01:46:39蟻の行列にポンと置くと、一瞬ビックリして列が乱れる。
邪魔だなと言わんばかりに迂回する列が出来る。
そのうち好奇心旺盛な一匹がアリの巣コロリに入る。
そいつをマネして何匹も入る。
毒とも知らずにツブツブを運び出す。一匹が一粒づつ。
いつのまにか行列はアリの巣コロリが折り返し地点になる。
黄色い粒と黒い蟻が作り出す模様は綺麗で見てて楽しい。
一匹が一粒づつ、丁寧にせっせと毒の粒を運ぶ。
せっせと、せっせと、せっせと、せっせと。
蟻さんって働き者だなと思う。俺も頑張らなきゃなと思う。
次の日、あれほど沢山いて俺を困らせた蟻が一匹もいない。
ほんとにいない。探してもいない。泣きたくなった。
このレスを見た人は4日後にあなたの大切な人がいなくなるでしょう・・・・
それが嫌ならこのレスを5つの板にコピペしてください。
信じるか信じないかはあなた次第です。
0442デフォルトの名無しさん
2006/08/03(木) 01:48:230443デフォルトの名無しさん
2006/08/03(木) 01:55:210444デフォルトの名無しさん
2006/08/03(木) 02:42:49中身1つも持っていってくれなかったよ、マジうんこ
0445デフォルトの名無しさん
2006/08/03(木) 02:47:390446デフォルトの名無しさん
2006/08/03(木) 03:15:000447デフォルトの名無しさん
2006/08/03(木) 10:40:190448デフォルトの名無しさん
2006/08/03(木) 10:42:170449デフォルトの名無しさん
2006/08/03(木) 12:47:44先入観って怖いですね
0450わけわからん!
2006/08/03(木) 16:56:36提出期限がかなり迫っているのに、まったく分かりません。
お願いします。
0451デフォルトの名無しさん
2006/08/03(木) 17:39:420452デフォルトの名無しさん
2006/08/03(木) 20:40:31[2] 問題文(含コード&リンク):
文字列から冗長なスペース(2つ以上スペースが連続)を1つのスペースにする関数を作成せよ。
また、スペースをアンダースコアにする関数を作成せよ。
例)
abc def ghi (enter)
abc def ghi
abc_def_ghi
----------------------------以下、ひながた---------------------+
#include <stdio.h>
int main( void )
{
char str[ 256 ];
// scanf("%s",str);
trim(str);
puts( str );
sp_to_ub(str);
puts( str );
}
int trim( char s[] )
{
}
int sp_to_ub( char s[] )
{
}
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 8月31日
[5] その他の制限: 特になし
お願いします
0453デフォルトの名無しさん
2006/08/03(木) 20:50:530454デフォルトの名無しさん
2006/08/03(木) 21:28:57ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2527.c
trimがおかしいような気がする。
0455デフォルトの名無しさん
2006/08/03(木) 21:42:32おっきした
0456デフォルトの名無しさん
2006/08/03(木) 21:58:06>>452のように最後に空白があると答えの最後にアンダースコアが付いてしまう
abc_def_ghi_
ってな感じで
0457デフォルトの名無しさん
2006/08/03(木) 22:00:17最後のスペースに気づかなかった・・・orz
0458デフォルトの名無しさん
2006/08/03(木) 22:15:16蟻にも種類があって、アリの巣コロリに見向きもしないタイプがある。
スーパーアリの巣コロリをオススメする。
100円くらい高いけどナー
0459デフォルトの名無しさん
2006/08/03(木) 22:22:13int n=strlen(str);
for (;str[n] == ' ';n--);
str[n-1]='\0';
これでどうかな?
0460デフォルトの名無しさん
2006/08/03(木) 22:26:04{
char *from;
char *to;
#define is_space(c) ((c) == ' ')
if (s[0] == '\0') return 0;
for (from = to = s+1; *from != '\0'; from ++) {
if (!is_space(*from) || !is_space(*(from-1))) *to++ = *from;
}
// Remove trailing spaces...
for (--to; to >= s; to--) if (!is_space(*to)) break;
*(++to) = '\0';
return (int)(to -s);
}
0461デフォルトの名無しさん
2006/08/03(木) 22:32:39ボクもやってみた
すでに出てるのとほとんど同じだけど
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2529.txt
0462450 ◆jaBq616JlY
2006/08/03(木) 22:37:34単元:プログラミング演習
環境:WindowsXP
言語:Visual C++
課題内容
Q1:30個の整数を乱数により生成し、単純ソートを行うプログラムを作成せよ。
Q2:単純ソート、バブルソート、クイックソートの考え方に基づきソートを行い、結果と
各々のプログラムでデータの交換の回数(上の単純ソートのプログラムではSwapDataを
呼び出した回数)、データの比較の回数(data[i] > data[j]を行った回数 )を表示する
プログラムを作成しなさい。
ポインタからファイル処理の基本までしか分からない状態でして手が出ません。
宜しくお願いします。
0463デフォルトの名無しさん
2006/08/03(木) 22:52:36いや、読んでないだろお前
0464デフォルトの名無しさん
2006/08/03(木) 23:01:230465デフォルトの名無しさん
2006/08/03(木) 23:03:46>>1
それに単純ソートってなんだ?
単純選択ソート、単純選択ソート、単純交換ソートなら聞いたことがあるが
単純ソートというのは聞いたことが無いな
0466デフォルトの名無しさん
2006/08/03(木) 23:06:20#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void swap(int*, int*);
int main(void){
int num[30], i, k;
srand((unsigned int)time(NULL));
for(i=0; i<30; i++){
num[i] = rand();
}
for(i=0; i<29; i++){
for(k=i+1; k<30; k++){
if(num[i] > num[k])swap(&num[i], &num[k]);
}
}
for(i=0; i<30; i++){
printf("%d\n", num[i]);
}
return 0;
}
void swap(int *x, int *y){
int sw;
sw = *x;
*x = *y;
*y = sw;
}
0468デフォルトの名無しさん
2006/08/03(木) 23:17:420470デフォルトの名無しさん
2006/08/03(木) 23:52:30Q2-単純ソート
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2532.txt
(>>466さんのコード拝借)
0471デフォルトの名無しさん
2006/08/04(金) 04:56:49int main(void)
{
float baz[10] = {7.64, 3.26, 6.85, 1.25, 4.18, 5.65, 9.72, 4.17, 5.63, 4.26};
int i, n, sum;
n = 10;
sum = 0.;
for (i = 0; i < n; i++)
{
sum += baz[i];
}
printf("総和は : %7.2f\n", sum);
return 0;
}
コレを実行しても 計算結果のところが0.00って出てしまいます。
どうしたら正しい計算結果が表示されますか?
0472デフォルトの名無しさん
2006/08/04(金) 04:58:15int sum;
%7.2f
0473デフォルトの名無しさん
2006/08/04(金) 05:04:17やはり実行結果は0.00になってしまいました・・
小数点以下の計算が出来ないのかなぁ?
0474デフォルトの名無しさん
2006/08/04(金) 05:04:460475デフォルトの名無しさん
2006/08/04(金) 05:08:14出来ました^^
ありがとです。
0476デフォルトの名無しさん
2006/08/04(金) 05:39:130477デフォルトの名無しさん
2006/08/04(金) 05:46:210478デフォルトの名無しさん
2006/08/04(金) 07:11:240479デフォルトの名無しさん
2006/08/04(金) 07:12:200480デフォルトの名無しさん
2006/08/04(金) 07:37:130481デフォルトの名無しさん
2006/08/04(金) 07:44:17学生 科目1 科目2 科目3 総得点 平均点
1 62 85 73 * *
2 74 70 77 * *
3 76 82 65 * *
4 54 64 45 * *
5 87 90 78 * *
科目の平均点 * * *
2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
順調に進んでいた宿題もここで足止め食らってます^^;
宜しくお願いしますです^^
0482デフォルトの名無しさん
2006/08/04(金) 07:53:12学生 科目1 科目2 科目3 総得点 平均点
1 62 85 73 * *
2 74 70 77 * *
3 76 82 65 * *
4 54 64 45 * *
5 87 90 78 * *
科目平均点 * * *
2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
0483デフォルトの名無しさん
2006/08/04(金) 07:54:17学生 科目1 科目2 科目3 総得点 平均点
1 62 85 73 * *
2 74 70 77 * *
3 76 82 65 * *
4 54 64 45 * *
5 87 90 78 * *
科目平均点* * *
2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
0484デフォルトの名無しさん
2006/08/04(金) 07:55:04宜しくおねがいします^^;
0485デフォルトの名無しさん
2006/08/04(金) 07:56:26学生 科目1 科目2 科目3 総得点 平均点
1 62 85 73 * *
2 74 70 77 * *
3 76 82 65 * *
4 54 64 45 * *
5 87 90 78 * *
科目平均点* * *
2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
0486デフォルトの名無しさん
2006/08/04(金) 09:16:38>>1読んで書き直し
0487デフォルトの名無しさん
2006/08/04(金) 09:50:350488デフォルトの名無しさん
2006/08/04(金) 09:54:55なおかつ測定しているときの状況を説明をしてくれるプログラムをおながいします↓
0489デフォルトの名無しさん
2006/08/04(金) 10:04:160490デフォルトの名無しさん
2006/08/04(金) 10:36:18[2] 問題文(含コード&リンク):
5人の学生の科目1, 2, 3の成績は表に示す通りである。
学生 科目1 科目2 科目3 総得点 平均点
1 62 85 73 * *
2 74 70 77 * *
3 76 82 65 * *
4 54 64 45 * *
5 87 90 78 * *
科目平均点* * *
2次元配列scoreに各学生の点数を記憶させ、表中の*印の箇所を埋め表を出力するプログラムを作成せよ。
ただし、学生iの科目jの点数を要素score[i][j]に記憶させるものとする。
[注意]学生1の科目1はscore[1][1]に代入させていること、すなわち、score[0][0]は使っていないことに注意する。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語: C言語
[4] 期限:8月7日(月)
[5] その他の制限:while文 for文 配列あたりまで
宜しくお願いします^^
0491デフォルトの名無しさん
2006/08/04(金) 10:54:13score[5][0]もscore[0][3]も使ってないことに注意したら
気持ち悪くて書けないよ。
0492デフォルトの名無しさん
2006/08/04(金) 13:15:08[2] 問題文(含コード&リンク):
2chの任意のスレを複数登録・管理し、有益な情報が投稿されたときのみ通知、
所定のレスを指定して 2ch viewer 等を起動するプログラムをつくれ。
[3] 環境
[3.1] OS:特になし
[3.2] コンパイラ名とバージョン:特になし
[3.3] 言語: C言語
[4] 期限:8月28日(月)
[5] その他の制限:
スレの登録・管理についてはDBを使用しても構いませんし、
単純なテキストファイルでも問題ありません。
viewer のお気に入りと連動出来ると得点うpされます。
「有益な情報」の判定には、コテハン、あぽ〜んリストはもちろん、
自動文脈解析の手法等を用いて流れを嫁れば得点うpされます。
0493デフォルトの名無しさん
2006/08/04(金) 13:31:57先生はFortran使いですか
0494デフォルトの名無しさん
2006/08/04(金) 14:47:46int score[6][4] = {
{ 0, 0, 0, 0, },
{ 0, 62, 85, 73, },
{ 0, 74, 70, 77, },
{ 0, 76, 82, 65, },
{ 0, 54, 64, 45, },
{ 0, 87, 90, 78, },
};
int i, j, sum;
for( i = 1; i < 6; i++ ){
sum = 0;
printf( "%d ", i );
for( j = 1; j < 4; j++ ){
printf( "%d ", score[i][j] );
sum += score[i][j];
}
printf( "%d %d\n", sum, sum / 3 );
}
printf( " " );
for( j = 1; j < 4; j++ ){
sum = 0;
for( i = 1; i < 6; i++ ){
sum += score[i][j];
}
printf( "%d ", sum / 5 );
}
0495お願いします
2006/08/04(金) 17:40:28[2] 問題文(含コード&リンク): 0〜99までの数がランダムに代入されているよう素数100個の配列を作成し、
10語とのヒストグラムを表示するプログラムを作れ。==A==の部分を埋めよ。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int source[100];
int i;
srand( (unsigned int)time(NULL) );
for(i=0;i<100;i++)
source[i] = rand()%100;
==A==
}
[3] 環境
[3.1] 指定なし
[3.2] 指定なし
[3.3] 言語: C
[4] 期限: 8月6日まで
[5] その他の制限: 表示例↓
+====
0- 9|****
10-19|**
〜
90-99|******
0496デフォルトの名無しさん
2006/08/04(金) 17:42:03[2] 問題文(含コード&リンク):
標準入力より入力された逆ポーランド表記の演算式を線形連結リストを
用いて演算するプログラムを作成せよ。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: よくわからないです。
[3.3] 言語: C
[4] 期限: 8月7日まで
[5] その他の制限: 特にないはずです。
お願いします。
0497デフォルトの名無しさん
2006/08/04(金) 17:59:15[2] 問題文(含コード&リンク):
aキーを押すと長方形が縮み、音が鳴って元に戻る。それを1つ以上並べる。
┌─┐ ⌒ ┌─┐
│ │ → ⌒ 〜♪ → │ │
│ │ ┌─┐ │ │
└─┘ └─┘ └─┘
aキー
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:特になし。
[3.3] 言語: C言語
[4] 期限: 8月8日(火)まで
[5] その他の制限: 特にないはずです。
宜しくお願いします。
0498デフォルトの名無しさん
2006/08/04(金) 18:05:47しかし、ずっとプログラムを書いていなかったため
かなり忘れてしまったので、もう答えを書けない。
>>1さんに以前頼んでおいた
0499デフォルトの名無しさん
2006/08/04(金) 18:14:25int source[100];
int histogram[10];
int i, j;
srand( (unsigned int)time(NULL) );
for(i=0;i<100;i++) source[i] = rand()%100;
//==A==
for( i = 0; i < 10; i++ ) histogram[i] = 0;
for( i = 0; i < 100; i++ ) histogram[source[i]/10]++;
printf( " +==============================\n" );
for( i = 0; i < 10; i++ ){
printf( "%2d-%2d|", i * 10, i * 10 + 9 );
for( j = 0; j < histogram[i]; j++ ){
printf( "*" );
}
printf( "\n" );
}
こんなんでどうでっしゃろ?
出力時のズレ頑張って直してくれ
0500デフォルトの名無しさん
2006/08/04(金) 21:27:48ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2533.txt
0501デフォルトの名無しさん
2006/08/04(金) 21:33:10でビープ音鳴るの普通に知らなかった
0502長々とすみまそん
2006/08/04(金) 22:57:33[2] 問題文(含コード&リンク):データ(名前と数字)を任意の数、入力していって
CTRL+Dで入力終了したらLIFOのように後にいれたもん順から出力されるプログラムがある。
データを入力し終わってからある名前を検索したいんだが、それがみつかれば新しいデータをそのデータの次にいれる。
みつからなければその新しいデータを先頭にいれるようにする。
<自分が作ったプログラム>
#include<stdio.h>
#include<malloc.h>
#include <string.h>
struct tfield{
char name[20]; /*名前*/
char tel[20]; /*電話番号*/
struct tfield *pointer; /*次のデータへのポインタ*/
};
struct tfield *talloc(void);
int main(void)
{
struct tfield *head,*p,*q,*r;
char *neim,ter,*word;
head = NULL;
q = talloc();
while(p=talloc(),scanf("%s %s",p->name,p->tel)!=EOF){
p->pointer=head;
head=p;
}
r=talloc();
printf("探索したいデータを入力しなさい\n");
scanf("%s %s",r->name,r->tel);
0503長々とすみまそん
2006/08/04(金) 23:01:37while(p!=NULL){
if (strcmp(r->name, p->name)==0){
printf("find %s\n",p->name);
word = p->name;
printf("追加データを入力する");
scanf("%s %s", q->name, q->tel);
q->pointer = p->pointer;
p->pointer = q;
}
p=p->pointer;
}
if(word != r->name){
printf("%s が見つからないので先頭に追加する\n", q->name);
r->pointer = head;
head = r;
}
p=head;/*表示*/
while(p!=NULL){
printf("%15s%15s\n",p->name,p->tel);
p=p->pointer;}
}
struct tfield *talloc(void) /*記憶領域の取得*/
{ return((struct tfield *)malloc(sizeof(struct tfield)));
}
0504長々とすみまそん
2006/08/04(金) 23:02:19aaa 111
bbb 222
ccc 333
ddd 444
探索したいデータを入力しなさい
sfs 342
が見つからないので先頭に追加する
sfs 342
ddd 444
ccc 333
bbb 222
aaa 111
<みつかったときの結果>
aaa 111
bbb 222
ccc 333
ddd 444
探索したいデータを入力しなさい
ccc 333
find ccc
追加データを入力するeee 555
eee が見つからないので先頭に追加する
ccc 333
ddd 444
ccc 333
eee 555
bbb 222
aaa 111
という風にみつかったときもみつからなかったときも「eee が見つからないので
先頭に追加する」の文が出てしまうんですよ。このみつからないのでのif文の部分はどこにおけばうまいこと出力できますかね?
0505デフォルトの名無しさん
2006/08/04(金) 23:05:09できれば丸投げの宿題の方がうれしい
ついでにプログラムやデータは>>1に書いてあるアップローダーを使ってもらうと見やすい
0506デフォルトの名無しさん
2006/08/04(金) 23:13:040507長々とすみまそん
2006/08/04(金) 23:14:27#include<malloc.h>
struct tfield{
char name[20]; /*名前*/
char tel[20]; /*電話番号*/
struct tfield *pointer; /*次のデータへのポインタ*/
};
struct tfield *talloc(void);
int main(void){
struct tfield *head,*p;
head = NULL;
while(p=talloc(),scanf("%s %s",p->name,p->tel)!=EOF){
p->pointer=head;
head=p; }
p=head;
while(p!=NULL){
printf("%15s%15s\n",p->name,p->tel);
p=p->pointer; }
}
struct tfield *talloc(void) /*記憶領域の取得*/
{
return((struct tfield *)malloc(sizeof(struct tfield)));
}
元のプログラムはこれで,出力結果がこれ
aaa 111
bbb 222
ccc 333
ccc 333
bbb 222
aaa 111
0508長々とすみまそん
2006/08/04(金) 23:16:40リンク変数3つもつかってしまって
前判定のループだから、ループの中にはいれるわけにはいかないし
後判定のほうがいいのかなあ
0509デフォルトの名無しさん
2006/08/04(金) 23:35:28簡潔に問題点を書いてくれ。
0510デフォルトの名無しさん
2006/08/04(金) 23:43:000511あばよ
2006/08/04(金) 23:46:04nameと、入力した語とが一致した場合は
その後に新しくリストにいれたい語をいれる。
一致しなかった場合はリストの先頭に、新しくリストにいれたい語をいれるんだけど
pのループ中に一致する場合の動作は当然ループの中にいれないとだめですけども
一致しなかった場合はループが終わってからループの中に
いれるべきなんですよね?
でもループ終わった後に入れた場合、一致した場合も一致しなかった場合も
どっちも一致しなかった動作をしてしまうことになるんですよ。
この一致しなかった場合の動作のプログラムをどこにいれるか迷ってるんです
0512デフォルトの名無しさん
2006/08/04(金) 23:49:06>一致しなかった場合はループが終わってからループの中に
>いれるべきなんですよね?
>でもループ終わった後に入れた場合、一致した場合も一致しなかった場合も
>どっちも一致しなかった動作をしてしまうことになるんですよ。
日本語がスパゲッティなんですけどwwww
0513あばよ
2006/08/04(金) 23:55:28探索したい語が一致しなかった場合の処理を
pのループ中にするのか
終わった後にするのか
これにつきます。
while文だとpがNULLになった瞬間に外にでるので
ループの中に、一致しない処理をいれるわけにはいかない
かといってループの外で処理させると
一致した場合も一致しない場合も処理してしまうんです
0514デフォルトの名無しさん
2006/08/04(金) 23:58:530515デフォルトの名無しさん
2006/08/04(金) 23:59:19p->pointerを見ればいいだけのことじゃね?
0516デフォルトの名無しさん
2006/08/05(土) 00:00:14あと混乱してるようだからきれいに書き直したほうがいいね。
0517デフォルトの名無しさん
2006/08/05(土) 00:02:22で抜けたあとに、pがNULLなら一致なし時の処理、pがNULL出なければ一致ありの処理。
で、いい。
0518デフォルトの名無しさん
2006/08/05(土) 00:16:20[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=2544
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 9月23日まで
[5] その他の制限: 特にありません
よろしくお願いします
0519デフォルトの名無しさん
2006/08/05(土) 00:19:42修正前のソースも晒してね。
0520デフォルトの名無しさん
2006/08/05(土) 00:27:36すみません、忘れてました。
今、アップしときました。
問題文が長くて申し訳ないです。
0521デフォルトの名無しさん
2006/08/05(土) 00:57:16[2] 問題文(含コード&リンク):
以下要求仕様に従って「家計簿アプリケーション」を作成せよ。
要求仕様
●UNIXの環境上で動作し、主開発言語としてC言語を用いる。
●1レコード中に 商品名、商品を買った日付、価格、分類の各項目を持つ。分類とは 食費、光熱費、
学費、交通費、レクレーション等の項目を表す。
●家計簿として以下の機能を有する。
― 週間 及び 月間の予算が入力できる。
― 買った商品のデータを追加保存、読み出しができる。
― 誤って入力したデータの任意の項目に対して、修正が可能である。
― あらかじめ設定されている分類項目の他に、新たな分類項目を追加、削除できる。
― レコード内の任意の項目をキーとして検索、ソート(昇順、降順)が可能である。
― 週間及び 月間の支出について、分類毎に集計できる。
― 週間 及び 月間の 予算残額等を表示できる。
― 以上の機能を任意に選択し、実行できる。
●上記の機能に対して、創意工夫がなされている。もしくは、新たに機能を追加してある。(機能拡張)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: cc
[3.3] 言語: C言語
[4] 期限: 8月8日まで
[5] その他の制限: 特に無いと思います。
丸投げですがよろしくお願いします
0522デフォルトの名無しさん
2006/08/05(土) 01:15:23(2) 問題文
2〜10,000までの完全数をすべて求めて出力するプログラムを作成せよ。
完全数とは自分自身を除く約数の和がその数に等しいもので
たとえば6は自分自身を除いた約数の和が1+2+3=6で完全数。
(3) 条件:C言語でお願いします
(4) 期限:8月6日夕方まで
(5) その他とくになし
0523デフォルトの名無しさん
2006/08/05(土) 02:01:56#include<stdio.h>
int main(){int i,j,sum;
for(i=2;i<=10000;i++){sum=0;
for(j=1;j<i;j++)if(i%j==0)sum+=j;
if(sum==i)printf("%d ",i);}
return 0;}
なんか効率が悪そうだけど反省してない。
0524デフォルトの名無しさん
2006/08/05(土) 02:47:06MAX_INT か INT_MAX じゃない?
0525デフォルトの名無しさん
2006/08/05(土) 02:51:18ttp://www.saoyagi.net/integer/perfect.html
0526デフォルトの名無しさん
2006/08/05(土) 03:19:59http://ja.wikipedia.org/wiki/%E5%AE%8C%E5%85%A8%E6%95%B0
0527デフォルトの名無しさん
2006/08/05(土) 07:31:19ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2549.c
0528527
2006/08/05(土) 07:49:10ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2550.c
0530デフォルトの名無しさん
2006/08/05(土) 10:30:18[2] 問題文(含コード&リンク):
2つの分数の値を入力し、入力された分数の四則演算を行うプログラムを
関数を用いて作れ。分数は分母分子を分けて入力し、出力も計算結果の分数がわかるように出力。
[3] 環境
[3.1] OS: 指定なし
[3.2] コンパイラ名とバージョン: 指定なし
[3.3] 言語: C
[4] 期限: 8/7
[5] その他の制限: 授業テーマは「関数」 です。
よろしくお願いします。
0531デフォルトの名無しさん
2006/08/05(土) 13:59:47俺らのところじゃ"\7\7\7 "とかやたらと書いてたなw
(\a〜=\7)
0532デフォルトの名無しさん
2006/08/05(土) 14:09:04いいえ。それはたまたまASCIIのときに成立するだけです。
0533デフォルトの名無しさん
2006/08/05(土) 15:06:170534デフォルトの名無しさん
2006/08/05(土) 15:17:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2554.txt
計算結果の約分はしてません
0535デフォルトの名無しさん
2006/08/05(土) 15:31:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2555.txt
計算結果を既約分数にしました
0536デフォルトの名無しさん
2006/08/05(土) 15:48:13(゚д゚ )
0537デフォルトの名無しさん
2006/08/05(土) 18:46:01[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2558.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:8/7
どうかお願い致します。
0538デフォルトの名無しさん
2006/08/05(土) 18:53:280539デフォルトの名無しさん
2006/08/05(土) 20:09:020540デフォルトの名無しさん
2006/08/05(土) 20:54:03交換法則や結合法則で互いに変形できる解も個別にカウントする。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2559.c
0541540
2006/08/05(土) 20:59:590542540
2006/08/05(土) 21:47:40修正版。力ずくです。
0543デフォルトの名無しさん
2006/08/05(土) 22:14:22ありがとうございます!
0544デフォルトの名無しさん
2006/08/05(土) 22:30:48[2] 問題文:ふたつの整数a,bの最大公約数をgcd(a,b)とする。
gcd(a,b) = {
・a= (b=0)
・gcd(b, a mod b) (b>0)
である。これを利用し、2数の最大公約数と最小公倍数の両方を求める
プログラムを関数を用いて作成せよ。
[3] 環境
[3.1] OS: 指定無し
[3.2] コンパイラ名とバージョン: 指定無し
[3.3] 言語: C
[4] 期限:8月7日
0545デフォルトの名無しさん
2006/08/05(土) 22:32:24[2] 問題文:
mとnを引数とし、m個のものからn個のものを選ぶ組み合わせ mCnを求める
プログラムを関数を用いて作成せよ。このプログラムを再起を用いた場合
と用いない場合の両方を作成しそれぞれの特徴について考察せよ。
※参考
・mCn = m! / n!(m-n)! (直接計算)
・mCn = m-1Cn + m-1Cn-1 , mC0 = mCm = 1 (漸化式を用いた式)
[3] 環境
[3.1] OS: 指定無し
[3.2] コンパイラ名とバージョン: 指定無し
[3.3] 言語: C
[4] 期限:8月7日
2つ続けてレスさせてもらいました。どうかおねがいします。
0546デフォルトの名無しさん
2006/08/05(土) 22:44:51#include<stdio.h>
int main(void){
int m, n, num1=1, num2=1, i;
printf("m?:"); scanf("%d", &m);
printf("n?:"); scanf("%d", &n);
for(i=1; i<=m; i++){
num1 *= i;
}
for(i=1; i<=n; i++){
num2 *= i;
}
for(i=1; i<=m-n; i++){
num2 *= i;
}
printf("%dC%d = %d\n", m, n, num1/num2);
return 0;
}
0547デフォルトの名無しさん
2006/08/05(土) 22:47:57#include<stdio.h>
int func(int m, int n);
int main(void){
int m, n;
printf("m?:"); scanf("%d", &m);
printf("n?:"); scanf("%d", &n);
printf("%dC%d = %d\n", m, n, func(m, n));
return 0;
}
int func(int m, int n){
if(m==n || n==0)return 1;
return func(m-1, n) + func(m-1, n-1);
}
0548デフォルトの名無しさん
2006/08/05(土) 22:48:42式の意味がよくわからない
0549デフォルトの名無しさん
2006/08/05(土) 23:03:08#include<stdio.h>
int gcd(int a, int b){
int t;
if(b==0) return a;
if(b>0) return gcd(b,a%b);
}
int lcm(int a, int b){
return a*b/gcd(a,b);
}
int main(){
int a=17,b=11;
printf("gcd(%d,%d)=%d\n",a,b,gcd(a,b));
printf("lcm(%d,%d)=%d\n",a,b,lcm(a,b));
return 0;
}
テキトー 検算よろ
0550デフォルトの名無しさん
2006/08/05(土) 23:03:14>ふたつの整数a,bの最大公約数をgcd(a,b)とすると、
> ~~~~~
> ・a= (b=0のとき)
>gcd(a,b) = {
> ・gcd(b, a mod b) (b>0のとき)
>
>である。
です。書き方がまずかったですかね・・・すいませんm(_ _)m
0551デフォルトの名無しさん
2006/08/05(土) 23:10:25int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}
これで平気みたい?つかtとかどこにも使ってねえよ
0552デフォルトの名無しさん
2006/08/06(日) 02:47:51[2] 問題文:
整数 m と n をキーボードから入力し、
m <= n の場合は m から n までの和を出力し、
新たに m n の入力を促し上記動作を繰り返す。
m > n の場合はエラーを表示して終了する。
[3] 環境
[3.1] OS: 特になし
[3.2] コンパイラ名とバージョン: 特になし
[3.3] 言語: C
[4] 期限:8月8日
よろしくお願いします。
0553デフォルトの名無しさん
2006/08/06(日) 02:57:35#include<stdio.h>
int main(void){
int m, n, sum, i;
while(1){
printf("m:"); scanf("%d", &m);
printf("n:"); scanf("%d", &n);
if(m > n){
puts("ERROR!");
break;
}
sum = 0; i = m;
while(i <= n){
sum += i;
i++;
}
printf("%d〜%dの和:%d\n", m, n, sum);
}
return 0;
}
0554デフォルトの名無しさん
2006/08/06(日) 03:01:34既に回答でてるが>>553より高速な事が自慢だ
#include<stdio.h>
int main(void){
int m, n;
while(1){
printf("m:"); scanf("%d", &m);
printf("n:"); scanf("%d", &n);
if(m > n){
puts("( ^ω^)=3プッ");
break;
}
printf("%d〜%dの和:%d\n", m, n, (m+n)*(n-m+1)/2);
}
return 0;
}
0555デフォルトの名無しさん
2006/08/06(日) 03:02:36忘れてた
0556デフォルトの名無しさん
2006/08/06(日) 03:26:15printf("%d〜%dの和:%d\n", m, n, ((n*(n+1))/2) - (((m-1)*(m)) /2));
原理は1〜nまでの和が n(n+1)/2 で表せて、その式をつかって
1〜m-1までの和を求めて引いてみた
0557デフォルトの名無しさん
2006/08/06(日) 03:28:100558デフォルトの名無しさん
2006/08/06(日) 05:23:560559デフォルトの名無しさん
2006/08/06(日) 05:31:590560デフォルトの名無しさん
2006/08/06(日) 07:11:38Sn = n/2(a+l) = n/2{2a+(n-1)d}を使うとか
0561デフォルトの名無しさん
2006/08/06(日) 07:49:28それを使ったのが >>554 では?
0562デフォルトの名無しさん
2006/08/06(日) 09:45:180563デフォルトの名無しさん
2006/08/06(日) 10:17:190564デフォルトの名無しさん
2006/08/06(日) 10:23:35明白に書いてないから、可能な手段でソースが出されて当然
自分の基準でレベルを決めている奴は論外
そいつ自身が知っていることだけでレベルを判断するからますます基準が曖昧
0565デフォルトの名無しさん
2006/08/06(日) 13:42:39単なる式だけじゃプログラミングの演習としての価値は低いし、
中学校卒業してりゃ三角形の面積の公式なんぞ知らない訳がない。
でもまあ、問題文に特に明記されているわけでもないから、出題者も多少の例外は承知してるんだろ。
結論:好きに書け。
>>562
詳しく。
0566デフォルトの名無しさん
2006/08/06(日) 14:03:45演習3−5
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3, min;
puts("三つの整数を入力してください:");
printf("整数1:");scanf("%d", &n1);
printf("整数2:");scanf("%d", &n2);
printf("整数3:");scanf("%d", &n3);
min = n1;
if (min > n2) min = n2;
if (min > n3) min = n3;
printf("最小値は%dです。\n", min);
return(0);
}
これをif文ではなく、条件演算子を用いて書き換えるのが分かりません。
助け舟を出していただきたいです。 お願いします。
0567デフォルトの名無しさん
2006/08/06(日) 14:08:51序受け演算子って?のことか?
0568デフォルトの名無しさん
2006/08/06(日) 14:11:44int main(void)
{
int n1, n2, n3, min;
puts("三つの整数を入力してください:");
printf("整数1:");scanf("%d", &n1);
printf("整数2:");scanf("%d", &n2);
printf("整数3:");scanf("%d", &n3);
//min = n1;
//if (min > n2) min = n2;
//if (min > n3) min = n3;
min = n1 > n2 ? n2: n1;
min = min > n3 ? n3 : min;
printf("最小値は%dです。\n", min);
return(0);
}
0569デフォルトの名無しさん
2006/08/06(日) 14:20:53序受け演算子って単語がまだ分かりません。 ごめんなさい
>>568
そういうことでしたか。 勉強しなおしてきます。
どうも、ありがとうございました。
0570デフォルトの名無しさん
2006/08/06(日) 14:22:010571デフォルトの名無しさん
2006/08/06(日) 14:35:360572デフォルトの名無しさん
2006/08/06(日) 14:52:550573デフォルトの名無しさん
2006/08/06(日) 15:01:500574562
2006/08/06(日) 15:10:43puts("( ^ω^)=3プッ");
が気に入らん
0575デフォルトの名無しさん
2006/08/06(日) 17:42:44>>562 じゃないけど (m+n)*(n-m+1)/2 の場合は
分子の (m+n)*(n-m+1) 部分が int の max を
超えてオーバーフローする可能性がループで
単純に足しこむ場合に比べて高いからってことでは
0576 ◆oBVIHc0QSg
2006/08/06(日) 19:21:11[1] 授業単元: アナグラム 擬似英文
[2] 問題文(含コード&リンク): 以下3つから一つ選べ(難易度はA<B<C)
A mss 長さn(n>=1)の整数列a0,a1,,,,,an-1が与えられたとき
その部分列の和で最小のものを求める問題
(部分列の和 a1+a2+,,,aj(0=<j<n)
例、-8+3+-65+20+10→-8+3+-65)
B /usr/share/dict/wordsの単語で構成されるアナグラムの数を数えるプログラム
を作成せよ(関数だけでなく結果も出せるようにする)
(大文字と小文字は区別しない。アナグラムの数とは互いにアナグラム
になっている単語の集合の個数とする)
C擬似英文。擬似英文をランダムに生成するプログラムを作成せよ。
(マルコフ鎖を利用するとよい。統計データは実際の英文を利用すること。
擬似英文とは実際のウィ文における単語のつながりかたの統計に
もとずいて英単語をもっともらしくならべたものである。)
[3] 環境 UNIX
[4] 期限:明日5時
どれか一つでよいということです。よろしくお願いします
0577 ◆oBVIHc0QSg
2006/08/06(日) 19:25:16もう一つの例では
-31 41 -59 -26 53 -58 -97 93 23 -84
→-59+-26+53+-58+-97
となります
部分列の和とは ai+a(i+1)+....+aj(0=<i=<j<n)
でした a0から始まる決まりはありますせん
0578デフォルトの名無しさん
2006/08/06(日) 22:00:54Aの回答
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2561.txt
俺も初心者だからみんなどんどんツッコミいれてくれるとありがたい
規制の巻き込みうぜー
0579デフォルトの名無しさん
2006/08/06(日) 22:29:30#include <stdio.h>
int main(){
int a[] = {-1,-3,8,-4,-7,3,-5,3,2,-4,5,7};
int L, R, sum = 0, min, minL, minR;
sum = minL = minR = 0; min = a[0];
for(L = 0; L < sizeof(a)/sizeof(a[0])-1; L++){
for(R = L; R < sizeof(a)/sizeof(a[0]); R++){
if((sum += a[R]) < min){
min = sum; minL = L; minR = R;
}
}
sum -= a[L];
}
printf("ans : L=%d, R=%d, sum=%d\n", minL, minR, min);
return 0;
}
0580579
2006/08/06(日) 22:31:280581デフォルトの名無しさん
2006/08/06(日) 23:45:12回答が欲しいなら、B/Cについては
・/usr/share/dict/words
・統計データ作成に用いる英文
この2つを用意するべきだと思うがどうか
0582デフォルトの名無しさん
2006/08/06(日) 23:54:38relmin(int *a, int n, int *off, int *end) {
int min = a[0], sum = 0, cur = 0, i;
*off = *end = 0;
for(i=0; i < n; i++) {
sum += a[i];
if(min > sum) { min = sum; *off = cur; *end = i; }
if(sum >= 0) { cur = i+1; sum = 0; }}}
void main() {
int S[] = {21,-8,-4,67,-9,8,-18,2,64};
int m1, m2;
relmin(S, sizeof(S) / sizeof(*S), &m1, &m2);
printf("区間 [%d, %d] で(゚�听)Mi(b^-゜)n", m1, m2);
}
0583デフォルトの名無しさん
2006/08/07(月) 00:34:04ちょっとスレがごちゃごちゃし始めてる
0584デフォルトの名無しさん
2006/08/07(月) 00:51:27どちらも質問者に聞くのは酷というものだ
0585 ◆oBVIHc0QSg
2006/08/07(月) 01:29:46早速移させてもらいます!
>>581問題文はこれで全てなのでわかりません。。
0586582
2006/08/07(月) 01:58:38暇がとれたのでBもやってみた。Cは難しい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2562.c
0587デフォルトの名無しさん
2006/08/07(月) 02:21:52質問者でもなんでもないんですが、興味があってコンパイルしてみて、
abc
bca
bbb
cdab
cbaa
というデータを与えてみたところ4になりました。
これ、2が正解じゃないんでしょうか?(そもそも「アナグラムの数」ってのが良くわからないんですが・・・)
0588デフォルトの名無しさん
2006/08/07(月) 02:23:20だとしたら、1が正解だと思うんですが。
0589586
2006/08/07(月) 02:34:01とりあえず俺はこれに従って作ったよ。
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%8A%E3%82%B0%E3%83%A9%E3%83%A0
同じ文字で構成された文字列、のことじゃないの?
abc -> abc
bca -> abc
bbb -> bbb
cdab -> abcd
cbaa -> aabc
とソートしてみて、重複(互いにアナグラム)は(abc, bca)だけだから、4が答え。違うかな???
0590デフォルトの名無しさん
2006/08/07(月) 02:41:41コード読まずにごめんね。
>とソートしてみて、重複(互いにアナグラム)は(abc, bca)だけだから、4が答え。違うかな???
うん、そう。だから答えは1じゃないかなって。
bbb, cdab, cbaaはアナグラムなし。
0591デフォルトの名無しさん
2006/08/07(月) 02:43:35アナグラムの数は 105809 だよ〜っっ!(b^-゜)
real 0m1.224s
user 0m1.170s
sys 0m0.078s
0592589
2006/08/07(月) 02:49:16>>590
その通りでした。ご指摘サンクスです。
再うp
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2566.c
0593SDL
2006/08/07(月) 02:50:01[2] SDLでトランプゲームのスピードを作成。対コンピュータ対戦。
スピードのルール
http://www.page.sannet.ne.jp/mikotan/cardgame/spead.htm
作成したCプログラムとヘッダファイル
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2565.txt
先生が作ったトランプ用Cプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2564.txt
[3] 環境
[3.1] OS: WindowsXPでCygwinを使用
[3.2] gcc SDL
[3.3] 言語:C
[4] 期限:8/8
[5] その他の制限: 特になし
関連のサイトを参考にしたりして作成してみました。
作成したプログラムとヘッダと先生が作ったプログラムを合わせて
コンパイルしています。エラーメッセージは出てません。
ゲームが始まって、山札をシャッフルし、手札や場札を置いて
どんどんゲームは進めていけるのですが、ある程度ゲームが進むと
必ずゲーム途中でエラーが起こり画面が消えて終了してしまいます。
わかりにくい説明で申し訳ないですが、いくら考えても
原因が分からないので教えてください。お願いします。
0594デフォルトの名無しさん
2006/08/07(月) 02:56:26乙です。手持ちの辞書でも(多分)正しい値になりました。
アナグラムの数は 44597 だよ〜っっ!(b^-゜)
real 0m1.239s
user 0m1.186s
sys 0m0.046s
なぜこんなに爆速でチェックできるのか、ゆっくりとコードを見させていただきます。
0595デフォルトの名無しさん
2006/08/07(月) 03:37:35もうちょっとヒントくれないときついな。bmpファイル含めて全部晒すかgdbの出力晒すかしてくんなきゃ。
0596デフォルトの名無しさん
2006/08/07(月) 04:25:431)以下の連結リストに関するプログラムを処理内容はそのままで「新規入力データの連結リストへの挿入」に関する処理の効率が向上するよう改善したい。
プログラムのどの部分をどのように変更すればよいか。(必要に応じて新たな変数を定義してよい)
2)同様に、「新しく入力されたデータを連結リストの変更に加える(挿入する)」ように修正したい時、(以下同文)
0597デフォルトの名無しさん
2006/08/07(月) 04:26:14void display_data(){
struct list *p
p=head.next;
while(p!=NULL){
printf("%3d →”,p->score);
p=p->next;
}
printf("\n");
}
void add_data(){
struct list *new_p,*p,*q;
new_p=(struct list *)malloc(sizeof(struct list));
printf("データー"); scanf("%d",&new_p->score);
new_p->next=NULL;
q=&head; p=q->next;
while(p!=NULL){
q=p;
p=p->next;
}
q->next=new_p;
}
0598デフォルトの名無しさん
2006/08/07(月) 04:28:02int flag;
head.next=NULL;
while(1){
printf("新しくデータを入力しますか?(1:はい、0:いいえ\n");scanf("%d",&flag);
if(flag==0)break;
add_data();
}
printf("データの一覧を表示します\n");
display_data();
}
プログラム最上部に以下の文が抜けてました。
#include<stdio.h>
#include<stlib.h>
struct list{
int score;
struct list *next;
};
0599デフォルトの名無しさん
2006/08/07(月) 04:33:580600デフォルトの名無しさん
2006/08/07(月) 04:34:28その名も "Visual Studio .NEET 2007"
Vistaには .NEET Framework v1.0が組み込まれるらしい。。
0601デフォルトの名無しさん
2006/08/07(月) 04:36:450602デフォルトの名無しさん
2006/08/07(月) 04:36:520603デフォルトの名無しさん
2006/08/07(月) 04:40:050604SDL 593
2006/08/07(月) 04:49:22GDBを知らなくて調べてみたんですが、通常のプログラムは分かるんですが、
gcc -o speed speed.c trump2.c `sdl-config --cflags --libs`
こんな感じでSDLで2つのファイルをコンパイルしてるんですが
こういう場合ってどうやってGDBを使えばいいんですか?
重ねて質問して申し訳ないですが・・。
画面イメージは↓こんな感じで
http://www2.spline.tv/bbs/marujyuu/grpview.php/6757.1154893123.jpg
手札は左からz,x,c,vキー、場札は左から←,→キーで
手札と場札のキーを同時に押してカードを出します。
0605デフォルトの名無しさん
2006/08/07(月) 04:49:56既に書かれてるがコンパイルして実行できる完全な形で一式上げるか
デバッガの出力書くべきだな
ライブラリ使ってるから、ライブラリの使い方を間違ってのエラーなのか
そもそもライブラリと全く関係ない所でとちってるのかも切り分けないとダメだしな
0606デフォルトの名無しさん
2006/08/07(月) 05:20:50コマンドに-gをプラスで
gdbの使い方はぐぐればマニュアル見つかるのでその辺から
0607デフォルトの名無しさん
2006/08/07(月) 06:16:34みんなでvip実況スレを盛り上げよう
ニュー速VIP
ttp://ex16.2ch.net/news4vip/
FF4→5→6 リレー実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154895492/
ゲームセンターCX ttp://ex16.2ch.net/test/read.cgi/news4vip/1154888213/
エロゲ実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154839702/
おまいらが指定したゲーム実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154896516/
RPG実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154857556/
女神転生とかを実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154776872/
実況!アニメ流すぜ!3本目 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154877307/
【東方】弾幕実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154852500/
ファミコンジャンプ実況スレ ttp://ex16.2ch.net/test/read.cgi/news4vip/1154878214/
エロゲ実況すればいいじゃねーか ttp://ex16.2ch.net/test/read.cgi/news4vip/1154885750/
大神実況してみる その4ttp://ex16.2ch.net/test/read.cgi/news4vip/1154880537/
ICO実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154896258/
好きなゲームを実況するスレ ttp://ex16.2ch.net/test/read.cgi/news4vip/1154861584/
ToHeart2系実況ttp://ex16.2ch.net/test/read.cgi/news4vip/1154774247/
かまいたちの夜x3を実況してみるttp://ex16.2ch.net/test/read.cgi/news4vip/1154863755/
映画実況するのかも ttp://ex16.2ch.net/test/read.cgi/news4vip/1154895107/
FF4→5→6→7 リレー実況 ttp://ex16.2ch.net/test/read.cgi/news4vip/1154898127/
0608デフォルトの名無しさん
2006/08/07(月) 07:02:430609デフォルトの名無しさん
2006/08/07(月) 07:34:39○○大掲示板に晒しておきました。
0610SDL 593
2006/08/07(月) 08:24:033つのファイル合体させてgdbやってみました。
Program received signal SIGSEGV, Segmentation fault.
0x00401a80 in draw_trump (trump1=0x407740) at g.c:352
352 trump[index].x = trump1->x;
(gdb)
こうなりました。先生の作ったトランプ用プログラムのなかの
draw_trump関数のtrump[index].x = trump1->x;でセグメントエラーがでてるみたいです。
途中までは普通に動作するのになぜ急にここで引っかかっちゃうんでしょうか?
0611デフォルトの名無しさん
2006/08/07(月) 09:15:02trump1->suiteかnumberが-1になってるとか。gdbで where でトレースみれるのと
あと p だか print だか忘れたけど変数値が表示できるはず。がんがれ。
0612デフォルトの名無しさん
2006/08/07(月) 09:16:32/*printf("%d %d %d\n",index,trump1->card->suite,trump1->card->number);*/
ここの printf の結果は見た?
0613デフォルトの名無しさん
2006/08/07(月) 12:06:53Aはプログラムを作れという問題ではなく、講義で
説明したプログラムについて説明しろという問題だよ。
0614デフォルトの名無しさん
2006/08/07(月) 14:50:570615SDL 593
2006/08/07(月) 19:05:08まさしくそこでした!
GDBで変数表示してみたら、4枚未満になったときに-1になってたので
とりあえずdraw_trump関数にif(trump1->card->number == -1) { return; }
を入れてみたら最後までゲームを進めることができました。
簡単なことなのに全然思いつかなかったな〜。
ありがとうございます。
0616デフォルトの名無しさん
2006/08/07(月) 21:00:29教えてください!
0617デフォルトの名無しさん
2006/08/07(月) 21:03:060618デフォルトの名無しさん
2006/08/07(月) 21:07:14アクセサリの電卓使え
0619デフォルトの名無しさん
2006/08/07(月) 21:09:580620デフォルトの名無しさん
2006/08/07(月) 21:13:14スタート→プログラム→アクセサリ→電卓
表示から関数電卓にチェックを付けてあとは計算
0621デフォルトの名無しさん
2006/08/07(月) 21:13:430622デフォルトの名無しさん
2006/08/07(月) 21:22:390623デフォルトの名無しさん
2006/08/07(月) 21:46:28そんなのも解らないやつはプロ1(E)の単位は取れなくても仕方ないよね。
0624デフォルトの名無しさん
2006/08/07(月) 22:52:2000100100
10110100
0625デフォルトの名無しさん
2006/08/07(月) 23:04:56http://www.atmarkit.co.jp/icd/root/76/72584476.html
↑ここみたらOR演算についてわかると思う。
それから>>624みたらわかるんでない。
0626デフォルトの名無しさん
2006/08/08(火) 00:13:23ごめんなんでもない・・
0627デフォルトの名無しさん
2006/08/08(火) 03:24:03プログラミング超初心者です。
こんなプログラムが作りたいのですがどなたかヒントをください。
バイナリーファイルのデータを取り込み、データの16進数を10進数にして
テキストに書き出したいのです。
バイナリーデータを取り込み、バイナリーファイルのままで書き出す
ことはできましたが、どうしてもテキスト形式になりません。
if ((fd = open(argv[1], O_RDONLY|O_BINARY)) < 0) {
printf("not found :%s\n",argv[1]);
return -1;
この記述はおかしいでしょうか?
0628デフォルトの名無しさん
2006/08/08(火) 03:31:520629デフォルトの名無しさん
2006/08/08(火) 03:35:11あまり質問スレ化は歓迎しないのだが、課題の助言ほしいってのなら>>1に沿ってな
あとコードは全部提示、部分的に出すとロクなことにならん
0630デフォルトの名無しさん
2006/08/08(火) 03:47:410631デフォルトの名無しさん
2006/08/08(火) 11:31:03[2] それぞれ1024個の時間データtaとyaデータのアレイ(配列) を用意する。
周波数f=2.0Hzとすると、1秒間に2回振動を繰り返す。
サンプリング間隔△t=1/1024のとき、1秒間に1024個のデータがとれる。(つまり、1Hzを512個サンプリング)
時間変動データ: ya=sin(2πft); t=i*△t
各自周波数fとサンプリング間隔△tを決め、時系列データを計算し、ファイルに納め、終了したのち、Excelを開いて描画しなさい。
[3] 環境
[3.1] WindowsXP
[3.2]
[3.3] C++
[4] 9/1まで
[5] 特にありません
C言語初心者で、全く分かりません。
宜しくお願いします。
0632デフォルトの名無しさん
2006/08/08(火) 12:18:520633デフォルトの名無しさん
2006/08/08(火) 13:21:56確保したtaは放置プレイ?
Excelを開いて描画するところまでプログラミングさせる問題ではないよね?
#include <fstream>
#include <math>
using namespace std;
int main() {
double const f = 2.0; // 周波数
double const dt = 1.0 / 1024.0; // サンプリング間隔
char const filename[] = "sin.dat"; // ファイル名
int const BUFSIZE = 1024;
double ta[BUFSIZE], ya[BUFSIZE];
for (int i = 0; i < BUFSIZE; i++) {
double t = i * dt;
ya[i] = sin(2.0 * M_PI * f * t);
}
fstream fs(filename, ios::out);
if(fs.fail()) return 1;
for (int i = 0; i < BUFSIZE; i++) {
fs << ya[i] << endl;
}
fs.close();
return 0;
}
0634633
2006/08/08(火) 13:24:50#include <fstream>
#include <math>
using namespace std;
int main() {
double const f = 2.0; // 周波数
double const dt = 1.0 / 1024.0; // サンプリング間隔
char const filename[] = "sin.csv"; // ファイル名
int const BUFSIZE = 1024;
double ta[BUFSIZE], ya[BUFSIZE];
for (int i = 0; i < BUFSIZE; i++) {
double t = i * dt;
ya[i] = sin(2.0 * M_PI * f * t);
}
fstream fs(filename, ios::out);
if(fs.fail()) return 1;
for (int i = 0; i < BUFSIZE; i++) {
double t = i * dt;
fs << t << "," << ya[i] << endl;
}
fs.close();
return 0;
}
0635633
2006/08/08(火) 13:33:46一つ目のfor文の中の
double t = i * dt;
ya[i] = sin(2.0 * M_PI * f * t);
を
ta[i] = i * dt;
ya[i] = sin(2.0 * M_PI * f * ta[i]);
にして、
二つ目のfor文の中の
double t = i * dt;
を削除して、
fs << t << "," << ya[i] << endl;
を
fs << ta[i] << "," << ya[i] << endl;
に修正。
0636デフォルトの名無しさん
2006/08/08(火) 14:05:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2567.txt
C言語でつくりました
0638638
2006/08/08(火) 18:07:580639デフォルトの名無しさん
2006/08/08(火) 22:00:050640デフォルトの名無しさん
2006/08/08(火) 22:44:44[2] 100円から100円刻みの価格の商品を扱っている店で1000円札、500円玉、100円玉を使い
おつりのないように、商品を買う。使用できるコイン(100円玉、500円玉)の合計枚数が
何枚以下と制限されているときに、商品の値段とコインの制限枚数、を入力して可能な支払い方法を
すべて出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: 指定無し
[3.2] コンパイラ名とバージョン: 指定無し
[3.3] 言語: C
[4] 期限: 8月9日水曜日いっぱい
[5] その他の制限: ループ文を使う
よろしくお願いします
0641デフォルトの名無しさん
2006/08/08(火) 23:10:260642デフォルトの名無しさん
2006/08/08(火) 23:15:351000円札はお札でコインではないって意味だとおもいますので、OKかと。
0643デフォルトの名無しさん
2006/08/08(火) 23:37:10[2] 16進数のバイナリーデータ(240×240)を10進数(240×240)に直し、
txtまたはcsv形式にするプログラムを書きなさい。
また、読み込むバイナリーデータのファイルが10個あるとし、それらを
一度に処理できるプログラムに書き換えなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ指定なし
[3.3] 言語:C言語を使用
[4] 期限:2006年8月12日までに、メールに添付ファイルで提出
[5] その他の制限:なし
どうしたらいいのか。。よろしくお願いいたします。
0644デフォルトの名無しさん
2006/08/08(火) 23:41:06バイナリデータの形式くやしく
1byteのが240*240なのか、4byteのが詰まってるのかとか
0645デフォルトの名無しさん
2006/08/08(火) 23:43:32サイズは 2byte 240*240個と書いてありました。
0646デフォルトの名無しさん
2006/08/08(火) 23:46:30それとも2byteのが240*240個だーっと並んでるのかお?
0647デフォルトの名無しさん
2006/08/08(火) 23:49:06データは左上を先頭にして右へと続いている
と書いてあります。
多分ダーッとならんでいるという事なのではないかと
思います。
私は超初心者なので、半月前から本読んでるのですが
全くわからなくって・・・・。
0648デフォルトの名無しさん
2006/08/08(火) 23:52:44超初心者であることがおかしいということに気づいた方がいい。
0649デフォルトの名無しさん
2006/08/08(火) 23:54:50[1] C言語
[2] 整数をint型で入力し、上位桁から順番に書く桁の英語読みを出力するプログラムを
配列を使って作成 (例) 123を入力したらone two three と出力 負の数の時は「minus」と出力
[3] C言語 他にとくになし
[4] 〜8/10
[5] 英語読みの出力にはSwitch文を利用
0650デフォルトの名無しさん
2006/08/08(火) 23:58:04はい。ぜんぜんできなくてごめんなさい。
今後は努力します。
私、文系学部から理系の大学院に入学したのですが、
プログラミングに関しては全く触っていないのです。
他の院生の皆さんは今まで講義でやったことがあるようですが。
この講義は気象学なのになんでプログラムを組んでるんだろう
と思いながら、いろいろやったのですが、全くわかりません。
ごめんなさい。
0651デフォルトの名無しさん
2006/08/09(水) 00:02:300652デフォルトの名無しさん
2006/08/09(水) 00:06:18開き方がわからずに中がみれません。。
0653デフォルトの名無しさん
2006/08/09(水) 00:07:420654デフォルトの名無しさん
2006/08/09(水) 00:08:48アップローダラウンジを使用してもいいですか?
0655デフォルトの名無しさん
2006/08/09(水) 00:09:36http://ex16.2ch.net/test/read.cgi/news4vip/1155047968/
0656デフォルトの名無しさん
2006/08/09(水) 00:11:320657デフォルトの名無しさん
2006/08/09(水) 00:15:34[2] 15ゲームを作れ。1から15までの数字が書かれた駒を4×4の盤面に置き、一つの
移動用の空いたマスを使って移動させ、最終的に1〜15までの順番通りに持っていく。
ゲームは適当な初期盤面を表示し、続いてプレイヤーが指定した駒(1〜15)を移動し
最終盤面に到達すれば終わりにするようにせよ。
ルール
・初期盤面は実行するごとに違うものを出すようにせよ。乱数(rand関数を使え)
必ず最終盤面に到達できるような初期盤面を作ること
・プレーヤーは毎回1から15までの数を入力するようにせよ。それ以外の数が入力されたら
再入力をするように促せ。また動かせない場合はエラーメッセージを出すようにせよ。
・正しい駒番号を入力した場合は次の盤面を表示せよ。盤面は次のようなもので十分である。
+----+----+----+----+
| 1 | 12 | 3 | 10 |
+----+----+----+----+
| 2 | 6 | 8 | 9 |
+----+----+----+----+
| 13 | 7 | 4 | 5 |
+----+----+----+----+
| 11 | 15 | 14 | |
+----+----+----+----+
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:今月いっぱい
[5] その他の制限: 特になし
今の僕のレベルでは分かりません・・・よろしくお願いします。
0658デフォルトの名無しさん
2006/08/09(水) 00:16:590659デフォルトの名無しさん
2006/08/09(水) 00:18:44バイナリーデータ 643 - 2006/08/09(Wed) 00:17 No.2568
です。よろしくお願いいたします。
0660デフォルトの名無しさん
2006/08/09(水) 00:40:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2569.txt
0661デフォルトの名無しさん
2006/08/09(水) 00:42:09getsもしくはfgetsでよかったかも・・・
0662デフォルトの名無しさん
2006/08/09(水) 00:44:03あぁ投稿しようと思ったら負けた。。。
>[2] 整数をint型で入力し、
scanfのが問題の趣旨にあってるんじゃないw
0663デフォルトの名無しさん
2006/08/09(水) 00:44:340664デフォルトの名無しさん
2006/08/09(水) 00:45:24http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2570.c
0665デフォルトの名無しさん
2006/08/09(水) 01:22:53ss[10]="abc"
tt[10]="あいう"
2つの文字列を連結して"abあいう"をつくる(cを消す) にはどうしたらいい??
strncatでできるかな??
0666デフォルトの名無しさん
2006/08/09(水) 01:26:25strcpy(&ss[2], tt);
0667デフォルトの名無しさん
2006/08/09(水) 01:26:59ttp://www.bohyoh.com/CandCPP/C/Library/strcat.html
細かいが、cを消すの意味をはっきりした方が良い。
結合する文字列の1つめの一番後ろの文字を消すのか
c という文字が含まれていたらそれを削除してから結合させるのか。
それによってアルゴリズムも変わってくるしね。
0668665
2006/08/09(水) 01:40:36あざーす
>>667
よく分からなかったのは
半角文字列と全角文字列を連結する方法。
半角文字列の一部と全角文字列
全角文字列の一部と半角文字列
の2つのパターンをどう処理するか。
説明不足&すれ違いすまそ。
0669デフォルトの名無しさん
2006/08/09(水) 02:00:350670デフォルトの名無しさん
2006/08/09(水) 02:02:060671デフォルトの名無しさん
2006/08/09(水) 04:12:26[2]以下のserver.c client.cを修正してサーバが時刻を返すプログラムを作成せよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2571.zip
[3.1] OS:Solaris
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:8月10日
[5] その他の制限: 特になし
よろしくお願いします
0672デフォルトの名無しさん
2006/08/09(水) 04:20:55特定した。
0673デフォルトの名無しさん
2006/08/09(水) 05:12:32http://ccfa.info/cgi-bin/up/src/up33363.html
俺にしてやれることはこれくらいだ・・・C言語じゃないが
0674デフォルトの名無しさん
2006/08/09(水) 05:19:07ありがとうございます。しかしどうにかC言語では無理でしょうか?
0675デフォルトの名無しさん
2006/08/09(水) 05:23:10ん?理屈や言語の仕様、制御できるものからして、C言語でも出来るよん。
ただ、まんどっちぃから俺はパスw
0676デフォルトの名無しさん
2006/08/09(水) 06:09:350677デフォルトの名無しさん
2006/08/09(水) 06:30:55> 今月いっぱい
とのことだから、とりあえず待つべし
0678デフォルトの名無しさん
2006/08/09(水) 07:01:29int x, y;
int grid[4][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0};
printf("\033[2J");
printf("\033[0;0H");
for (y = 0; y < 4; y++) {
printf("+----+----+----+----+\n");
for (x = 0; x < 4; x++) {
if (grid[y][x] > 0) {
printf("| %2d ", grid[y][x]);
} else {
printf("| ");
}
}
printf("|\n");
}
printf("+----+----+----+----+\n");
0679デフォルトの名無しさん
2006/08/09(水) 07:25:17クリアするのにちょっくら時間かかったぜ
0680デフォルトの名無しさん
2006/08/09(水) 09:04:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2573.c
0681デフォルトの名無しさん
2006/08/09(水) 09:37:270682デフォルトの名無しさん
2006/08/09(水) 11:33:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2574.c
0683デフォルトの名無しさん
2006/08/09(水) 13:19:39キモい・・・
0684デフォルトの名無しさん
2006/08/09(水) 13:46:58>>681
ありがとうございます!って今外にいるんであれなんですけどこれは
Linuxで動くんですよね??
0685デフォルトの名無しさん
2006/08/09(水) 14:50:19今日が締め切りなのですができません・・・orz おながいします
0686デフォルトの名無しさん
2006/08/09(水) 14:51:060687デフォルトの名無しさん
2006/08/09(水) 15:23:27[2] 問題文(含コード&リンク):
データファイルから国語の点と数学の点の平均値を求める関数があり、
それぞれ男女別に計算される
ただし、関数の第一引数は構造体TEST、第二引数は国語・数学を区別するフラグ(国語0、数学1)、
第3引数は性別(男性1、女性0)、返し値は算出された平均値(double型)とする
データファイル(datファイル)は
番号 国語 数学 男女(男1、女0)
1 40 50 0
2 50 43 1
3 56 56 0
という感じです
[3] 環境
[3.1] OS:linix
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 今日中
お願いします!
0688デフォルトの名無しさん
2006/08/09(水) 15:51:59揚げ足取るが、結局課題は何なんだ?
0689デフォルトの名無しさん
2006/08/09(水) 15:53:050690デフォルトの名無しさん
2006/08/09(水) 16:04:09まぁ関数を作れって課題なんだろうけど、TEST構造体がワカンネ
0691デフォルトの名無しさん
2006/08/09(水) 16:10:38すいませんでした
0692デフォルトの名無しさん
2006/08/09(水) 16:15:15名前つけないと>>685か>>687判別つかないから
0693デフォルトの名無しさん
2006/08/09(水) 16:19:54#include <stdio.h>
#define NUM 2
int main(){
int price, coin[NUM] = {500, 100}, coin_n[NUM], i, coin_max[NUM], tmp, j, k;
printf("値段 = ");
scanf("%d", &price);
while (price / 1000) price %= 1000;
for (i = 0; i < NUM; i++) {
printf("%d円硬貨の枚数 = ", coin[i]);
scanf("%d", &coin_n[i]);
coin_n[i] = coin_n[i] > price / coin[i] ? price / coin[i] : coin_n[i];
}
printf("お釣り : \n");
if (price / coin[1] == coin_n[1]) printf("%d円 %d枚\nor\n", coin[1], coin_n[1]);
for (i = 0; i < NUM; i++)
if (price / coin[i]){
printf("%d円 %d枚\n", coin[i], price / coin[i]);
price %= coin[i];
}
return 0;
}
0694デフォルトの名無しさん
2006/08/09(水) 16:23:560695デフォルトの名無しさん
2006/08/09(水) 16:40:01作ろうとしたけど全然レベルが違う(´・ω・`)
0696デフォルトの名無しさん
2006/08/09(水) 16:48:06俺は違うけど。
0697デフォルトの名無しさん
2006/08/09(水) 16:51:55やってること滅茶苦茶じゃないか?
0698デフォルトの名無しさん
2006/08/09(水) 16:58:060699デフォルトの名無しさん
2006/08/09(水) 16:59:34(´Д`;)
0700デフォルトの名無しさん
2006/08/09(水) 17:06:410701デフォルトの名無しさん
2006/08/09(水) 17:10:35・おつりはなし
0702デフォルトの名無しさん
2006/08/09(水) 17:11:20void hikaku_irekae(int a, int b);
int main(void){
int x, y;
printf("Please input an integer\n");
scanf("%d", &x);
printf("Please input an integer\n");
scanf("%d", &y);
printf("[before]x=%d, y=%d\n",x, y);
hikaku_irekae(x, y);
printf("[after ]x=%d, y=%d\n",x, y);
return 0;
}
void hikaku_irekae(int a, int b){
int tmp;
if ( a < b ){
tmp = a;
a = b;
b = tmp;
}
}
までつくったのはいいけど結果が[before]x=5, y=10[after ]x=5, y=10にならないのはどうしてですか?
誰かどうかお願いいたします!!!11
0703デフォルトの名無しさん
2006/08/09(水) 17:13:55>>1読んで書き直し
0704デフォルトの名無しさん
2006/08/09(水) 17:13:57・制限されるのは使用できるコインの「合計」枚数。
・「お釣り」って表示が意味不明
・千円札を最大まで使わない払いかたが考慮されない。
0705デフォルトの名無しさん
2006/08/09(水) 17:18:44hikaku_irekae(&x, &y);
void hikaku_irekae(int* a, int* b){
int tmp;
if ( *a < *b ){
tmp = *a;
*a = *b;
*b = tmp;
}
}
0706デフォルトの名無しさん
2006/08/09(水) 17:20:51甘やかすとつけあがるぞ
0707デフォルトの名無しさん
2006/08/09(水) 17:21:58void hikaku_irekae(int a, int b, int c);
int main(void){
int i, data[3];
for (i=0; i<3; i++){
printf("Please input an integer\n");
scanf("%d", &data[i]);}
printf("[before]x=%d, y=%d, z=%d\n",data[0], data[1], data[2]);
hikaku_irekae(data[0], data[1], data[2]);
printf("[mid]%d\n",data[1]);
return 0;}
void hikaku_irekae(int a, int b, int c){
int i, j, tmp, data[3];
data[0]= a;data[1]= b;data[2]= c;
for (i=0; i<3; i++){
for (j=i+1; j<3; j++){
if (data[i]<data[j]){
tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}}}
data[1]=-999;
}
キーボードから入力される3つの整数について,その中央値を出力することを意図して作成された.しかし,正しく動作しない.
(1)正しく動作しない理由を分かりやすく説明しなさい。(図を用いるなど、説明方法は自由)
(2)関数部分をint型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
(3)関数部分をvoid型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
(4)(関数部分をvoid型とした)同様のプログラムで、ソート(並べ替え)プログラムを作成しなさい。ソートの方法は特に指定しない
どうか今日中にお願い致します。
0708デフォルトの名無しさん
2006/08/09(水) 17:26:51before>void hikaku_irekae(int a, int b);
after>void hikaku_irekae(int *a, int *b);
before>hikaku_irekae(x, y);
after>hikaku_irekae(&x, &y);
あとhikaku_irekae関数のなかの a,bを *a ,*bとする。
0709デフォルトの名無しさん
2006/08/09(水) 17:28:15だから>>1読めっての
[1]〜[5]まで埋めろっての
0711デフォルトの名無しさん
2006/08/09(水) 17:31:11#include <stdio.h>
int main(int argc, char* argv[])
{
int price, max_coins, n, i, j, k, l;
do{
printf("値段を入力してください:");
scanf("%d",&price);
}while(price % 100);
printf("合計を入力してください:");
scanf("%d",&max_coins);
for(i = price / 100, j=0; i >= 0; i-=5, j++)
for(k=j, l=0; k>=0; k-=2, l++)
if(i+k0 <= max_coins)
printf("100円 %d枚, 500円 %d枚, 1000円 %d枚\n", i, k, l);
return 0;
}
0712デフォルトの名無しさん
2006/08/09(水) 17:35:180713デフォルトの名無しさん
2006/08/09(水) 17:36:31(´・ω・`)
0715デフォルトの名無しさん
2006/08/09(水) 17:57:40printf(c/c++);
答えは?
A.0
B.1
C.∞
0716707
2006/08/09(水) 18:01:28[2] 問題文(含コード&リンク): キーボードから入力される3つの整数について,その中央値を出力することを意図して作成された.しかし,正しく動作しない.
(1)正しく動作しない理由を分かりやすく説明しなさい。(図を用いるなど、説明方法は自由)
(2)関数部分をint型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
(3)関数部分をvoid型として、正しく動作するように直し, 実行結果等を添えて説明しなさい.
(4)(関数部分をvoid型とした)同様のプログラムで、ソート(並べ替え)プログラムを作成しなさい。ソートの方法は特に指定しない
[3] 環境
[3.1] OS: linax
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: ポインタ、関数
0717デフォルトの名無しさん
2006/08/09(水) 18:01:480718デフォルトの名無しさん
2006/08/09(水) 18:03:28十中八九segmentationFaultで異常終了する。
仮にprintf("%d", c / c++)だったとすると、divisionByZeroで異常終了。
0719デフォルトの名無しさん
2006/08/09(水) 18:05:530720デフォルトの名無しさん
2006/08/09(水) 18:17:11なんで零除算の前にsegmentation faultが発生するんだ?
0722デフォルトの名無しさん
2006/08/09(水) 18:51:30#include <stdio.h>
void hikaku_irekae(int *data, int size);
int lt_int(void *a, void *b);
int main(void)
{
int i, data[3];
for (i = 0; i < 3; i++) {
printf("Please input an integer\n");
scanf("%d", &data[i]);
}
printf("[before]x=%d, y=%d, z=%d\n", data[0], data[1], data[2]);
hikaku_irekae(data, sizeof(data) / sizeof(int));
printf("[after]x=%d, y=%d, z=%d\n", data[0], data[1], data[2]);
printf("[mid]%d\n", data[1]);
return 0;
}
void hikaku_irekae(int *data, int size) {
qsort(data, size, sizeof(int), lt_int);
}
int lt_int(void *a, void *b) {
return *(int *)a - *(int *)b;
}
0723デフォルトの名無しさん
2006/08/09(水) 19:31:53どなたかお願いします!!
ヒントだけでもください。
0724デフォルトの名無しさん
2006/08/09(水) 19:49:30そのバイナリデータなんだけど、ファイルサイズから見ても2x250x256なんだよね。
単純に2x240x240だとファイルが余るし、データの規則性が崩れるんだけど
どんなフォーマットで入ってるの?
#例えば256ライン分のデータがあって、先頭に必ず10バイトのヘッダがあるとか。
その辺が判らないとなんともならんよ。
##そもそも-266だらけで何をどうしていいのやら。
0725デフォルトの名無しさん
2006/08/09(水) 20:24:12どうもありがとうございます。
先生から答えになるものも渡されていて、それを見ると
たしかに-266ばかりです。
そちらもろだにあげてみます。
0726643
2006/08/09(水) 20:28:18バイナリーを変換した答え 643 - 2006/08/09(Wed) 20:26 No.2576
2576.zip でろだをお借りしました。
どうぞよろしくお願いいたします。
csvで入っています。
0727デフォルトの名無しさん
2006/08/09(水) 21:15:49#include <stdio.h>
#define SIZE 240 * 240
int main()
{
short data[SIZE];
FILE *fp;
if ((fp = fopen("PR20060526-13.pol", "rb")) == NULL) return -1;
fread(data, sizeof(data[0]), sizeof(data) / sizeof(data[0]), fp);
fclose(fp);
if ((fp = fopen("output.txt", "w")) == NULL) return -1;
int i = 0;
while (i < SIZE)
fprintf(fp,"%d%c", data[i++], i % 240 ? ',' : '\n');
fclose(fp);
return 0;
}
0728デフォルトの名無しさん
2006/08/09(水) 21:21:33件のデータは末尾にゴミがついてるみたいね
#include <stdio.h>
#include <stdlib.h>
struct Wether {
 short elem[240][240];
};
int main() {
 struct Wether *wether;
 int i;
 int j;
 wether = (struct Wether *)malloc(sizeof(struct Wether));
 fread(wether, sizeof(struct Wether), 1, stdin);
 for (i = 0; i < 240; i++) {
   for (j = 0; j < 240; j++) {
     fprintf(stdout, "%d", wether->elem[i][j]);
     if (j < 240 - 1)
       fprintf(stdout, ",");
   }
   fprintf(stdout, "\n");
 }
 free(wether);
}
0729デフォルトの名無しさん
2006/08/09(水) 21:22:55#include <stdio.h>
#include <stdlib.h>
struct Wether {
short elem[240][240];
};
int main() {
struct Wether *wether;
int i;
int j;
wether = (struct Wether *)malloc(sizeof(struct Wether));
fread(wether, sizeof(struct Wether), 1, stdin);
for (i = 0; i < 240; i++) {
for (j = 0; j < 240; j++) {
fprintf(stdout, "%d", wether->elem[i][j]);
if (j < 240 - 1)
fprintf(stdout, ",");
}
fprintf(stdout, "\n");
}
free(wether);
}
0730643
2006/08/09(水) 21:30:45>>728
>>729
うわあ、、すごくはやい。
ありがとうございます!
自分でもやってみます。
ずうずうしいのですが、もうひとつの
10ファイルを連続で読み込むプログラムは
どういう方向性で考えたらいいのでしょうか?
0731デフォルトの名無しさん
2006/08/09(水) 21:32:42引数でファイル名を10個以下受け取って、その数だけ同じことを繰り返す。
0732643
2006/08/09(水) 21:32:55先生にメールで問い合わせたところ、
私のバイナリーデータは125*512のものが間違って
きている可能性があるそうです・・・。
なので、ご指摘に間違いはありませんでした。
ありがとうございました。
0733643
2006/08/09(水) 21:35:58それはDOS窓から名前を打ち込む感じですか?
0734デフォルトの名無しさん
2006/08/09(水) 21:43:16void convert_csv(char *filename) {
printf("convert %s\n", filename);
/* がんばる */
}
int main(int argc, char **argv) {
int i;
for (i = 1; i < argc; i++) {
convert_csv(argv[i]);
}
}
0735デフォルトの名無しさん
2006/08/09(水) 21:45:370736デフォルトの名無しさん
2006/08/09(水) 21:47:35今これLinuxだから確認できん。
0738643
2006/08/09(水) 22:03:12明日の朝まで自力でがんばってみます。
さらにずうずうしいのですが、
どなたか、
「コマンドラインからファイル名を指定し、指定したファイル10個を
連続で変換するプログラム」
をお願いいたします。
0739デフォルトの名無しさん
2006/08/09(水) 22:08:57>>734
0740デフォルトの名無しさん
2006/08/09(水) 22:10:05最後の問題。
0741デフォルトの名無しさん
2006/08/09(水) 22:11:52でも単位は諦めたほうがいいと思うよ。
0742707
2006/08/09(水) 22:26:57プログラミングさっぱりわからなくて、きっと小学生以下ですねありがとうございました。
できれば(1)〜(3)も教えていただけますか、お願いします。
0743デフォルトの名無しさん
2006/08/09(水) 22:35:400745デフォルトの名無しさん
2006/08/09(水) 22:56:031)はスコープが違うから2),3)はそれぞれ適当に書き換えるだけ。
まぁ、わからんなら単位落としたほうが世のためと思う。
0746デフォルトの名無しさん
2006/08/09(水) 23:08:52にゃはは(^Д^) 間違えちった。
0747デフォルトの名無しさん
2006/08/09(水) 23:15:48>まぁ、わからんなら単位落としたほうが世のためと思う。
大学行ってない奴って、こういうこと言いがちだよね。
0749デフォルトの名無しさん
2006/08/09(水) 23:23:02大学行ってる奴だが、わからないなら落とした方がいいと思うよ
1教科くらい落としても余裕だろ
0750デフォルトの名無しさん
2006/08/09(水) 23:25:13取れるなら取ったほうがいいだろ。
お前の周りも、わからないのに単位取りまくりな奴だらけのはずだ。
0751デフォルトの名無しさん
2006/08/09(水) 23:27:04うちの大学はレベルが低いから、わからないやつはガンガン単位落としてるぜ
0752デフォルトの名無しさん
2006/08/09(水) 23:31:07レポート部分は、このスレじゃあまりやる人がいない+自分の言葉で書いておかないと
ボロが出るだけだから、適当に埋めちまえ
0753デフォルトの名無しさん
2006/08/09(水) 23:33:45レベルが低いからじゃなくて、怠惰だからでしょ。
0754デフォルトの名無しさん
2006/08/09(水) 23:36:260755643
2006/08/09(水) 23:36:26少しだけ書き換えました。
これで正常にコンパイルできました。
#include <stdio.h>
#define SIZE 240 * 240
int main()
{
int i;
short data[SIZE];
FILE *fp;
if ((fp = fopen("PR20060526-134600.pol", "rb")) == NULL) return -1;
fread(data, sizeof(data[0]), sizeof(data) / sizeof(data[0]), fp);
fclose(fp);
if ((fp = fopen("output.txt", "w")) == NULL) return -1;
i=0;
while (i < SIZE)
fprintf(fp,"%d%c", data[i++], i % 240 ? ',' : '\n');
fclose(fp);
return 0;
}
ただ、一番初めの数字が139が一個だけ上の行になってしまうのですが、
どこを書き換えればいいのでしょうか?
0756デフォルトの名無しさん
2006/08/09(水) 23:38:16そのようなことすらしなくて、単位を落とすことを怠惰だと言ってるんだけど。
0757707
2006/08/09(水) 23:40:19ありがとう、750さんの優しさ身にしみます
>>752
(1)はいいんですが(2)(3)がまだわからないんです。
そんなレベルなんです><
0758デフォルトの名無しさん
2006/08/09(水) 23:40:28まぁ落としても卒業できなくなるわけじゃないし
他の勉強に回して捨てる人が多いね
0760デフォルトの名無しさん
2006/08/09(水) 23:45:570761デフォルトの名無しさん
2006/08/09(水) 23:48:20(1) hikaku_irekae関数は、ローカル変数である配列"data"入れ替えているだけであり、
mainから渡した実引数の配列"data"は入れ替わっていないために正しく動かない。
(2) hikaku_irekae関数で渡されたa, b, cの中央値を返却するようにすれば、正しい結果を得る事ができる。
hikaku_irekae関数の配列"data"は並び替えられているので、その中央値data[1]を返却するようにする。
(以下の通りにコードを修正すること)
int i, data[3];
↓
int i, data[3], mid;
hikaku_irekae(data[0], data[1], data[2]);
printf("[mid]%d\n", data[1]);
↓
mid = hikaku_irekae(data[0], data[1], data[2]);
printf("[mid]%d\n", mid);
void hikaku_irekae(int a, int b, int c)
↓
int hikaku_irekae(int a, int b, int c)
data[1] = -999;
↓
return data[1];
0762デフォルトの名無しさん
2006/08/09(水) 23:49:14このスレの趣旨を理解するよう、半年ROMっとけ
0763デフォルトの名無しさん
2006/08/09(水) 23:49:270764デフォルトの名無しさん
2006/08/09(水) 23:49:41↓
(i + 1) % 240
0765デフォルトの名無しさん
2006/08/09(水) 23:50:18お前、脳内大学生だろ。
0766デフォルトの名無しさん
2006/08/09(水) 23:51:400768デフォルトの名無しさん
2006/08/09(水) 23:52:25わるかったな もう単位取り終わったからほとんど引きこもってるぜ
0769デフォルトの名無しさん
2006/08/09(水) 23:53:310770デフォルトの名無しさん
2006/08/09(水) 23:54:050771デフォルトの名無しさん
2006/08/09(水) 23:54:34(3) hikaku_irekae関数で、直接引数を入れ替えるよう、ポインタを使用し修正する。
void hikaku_irekae(int a, int b, int c);
↓
void hikaku_irekae(int *a, int *b, int *c);
hikaku_irekae(data[0], data[1], data[2]);
↓
hikaku_irekae(&data[0], &data[1], &data[2]);
void hikaku_irekae(int *a, int *b, int *c)
{
int i, j, tmp, data[3];
data[0] = *a;
data[1] = *b;
data[2] = *c;
for (i = 0; i < 3; i++) {
for (j = i + 1; j < 3; j++) {
if (data[i] < data[j]) {
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}
}
}
*a = data[0];
*b = data[1];
*c = data[2];
}
0772デフォルトの名無しさん
2006/08/09(水) 23:56:210773707
2006/08/10(木) 00:02:30そのとおりですw
>>761 771
どうもありがとうございます、お手数おかけしました。
助かります本当にありがとうございました。
0774デフォルトの名無しさん
2006/08/10(木) 00:02:57Rubyとかの高級言語のほうが身に付けやすく、利用価値も高いだろうに。
必要な理系の学生だけ、あとからC言語やるほうが良い気がする。
0775643
2006/08/10(木) 00:04:15うおおお!できてる!
ありがとうございました。
がんぱります!
0776デフォルトの名無しさん
2006/08/10(木) 00:08:08回答する気全く無かったんだが(簡単なので)、アホな>>745のおかげで答える気になった。
>>745にも感謝しとけ。
0777デフォルトの名無しさん
2006/08/10(木) 00:08:55手続き型言語はどれも大差ないと思うけど
C言語は教材が豊富で教えやすいんじゃないかな
0778デフォルトの名無しさん
2006/08/10(木) 00:09:320779デフォルトの名無しさん
2006/08/10(木) 00:09:34RubyやPythonを採用するところも増えてるよ。
0780デフォルトの名無しさん
2006/08/10(木) 00:14:460781デフォルトの名無しさん
2006/08/10(木) 00:19:40俺情報工学科だけど、FortranもPascalもアセンブリもやったよ。
0782デフォルトの名無しさん
2006/08/10(木) 00:26:43悪いが同じ大学生として恥ずかしいから言っているのだよ
0783デフォルトの名無しさん
2006/08/10(木) 00:28:30まだ粘着するの?w
0784デフォルトの名無しさん
2006/08/10(木) 00:28:57数学・物理系ってJavaなの?
0785デフォルトの名無しさん
2006/08/10(木) 00:30:000786デフォルトの名無しさん
2006/08/10(木) 00:31:22Javaもやるかもしれんけど。
0787デフォルトの名無しさん
2006/08/10(木) 00:32:29同じ大学生として、お前が恥ずかしいよ。
0788デフォルトの名無しさん
2006/08/10(木) 00:33:080789707
2006/08/10(木) 00:35:03そんな心中の変化があったんですか、最終的に答えてくださってありがとうございます
>>745
ほんとにどうもありがとうございましたf^^;
でも単位の関係で苦手な教科も取らなければいけないこともあるって覚えといてください
0790デフォルトの名無しさん
2006/08/10(木) 00:35:13いや、始めに習うといいと思える言語っていう意味で並べた。
Cを学ぶことの強みは、プログラミングの基礎だけでなく
コンピュータに関する様々な知識も(並行して)会得出来るのことだと思う。
ある程度内部的な構造に関わっていた方が後からアセンブリやらなんやらを学ぶときにいいだろうし。
関係ないけど、情報系の学部って大学によってレベルの差ありすぎ。
MARCH以下の情報系学部って機能してるのか?w 宿題丸投げとかあり得〜ん。
>>784
俺の理想。
0791デフォルトの名無しさん
2006/08/10(木) 00:38:03アルゴリズムの勉強をするなら言語を選ばんでも良いし
あまり複雑だと教える側も面倒になるし。
数値計算程度なら手軽に導入できるもので良いんじゃね?
0792デフォルトの名無しさん
2006/08/10(木) 00:38:130793デフォルトの名無しさん
2006/08/10(木) 00:38:31ちなみに俺は電通大卒だけど、入ったばかりのときはドシロウトが結構いたぞ。
最初のうちは丸投げに近いことやってたみたいだ。
0794デフォルトの名無しさん
2006/08/10(木) 00:39:46今のところうちの大学の宿題やってくれってのはないな〜
0795デフォルトの名無しさん
2006/08/10(木) 00:41:10情報系で丸投げあったら将来が不安だな・・・
でも中にはやってるやつもいそうで怖い
0796デフォルトの名無しさん
2006/08/10(木) 00:43:35それに工業系の単科国立大学の場合は、偏差値で選ぶ地元の奴も結構いるよ。
だからドシロウトも混じる。
選択肢が少ないからな。
0797デフォルトの名無しさん
2006/08/10(木) 00:44:550798デフォルトの名無しさん
2006/08/10(木) 00:45:48東大には入れないけど、地元の国立に行きたい奴とか。
0799デフォルトの名無しさん
2006/08/10(木) 00:46:09プログラムがどうとかじゃなくて、物事への取り組み方の考えが違うのかもしれない。
0800デフォルトの名無しさん
2006/08/10(木) 00:47:400801デフォルトの名無しさん
2006/08/10(木) 00:48:31お前みたいな奴もよくいるよな。
0802デフォルトの名無しさん
2006/08/10(木) 00:52:30ああスマン。もうやめる。
0803643
2006/08/10(木) 02:23:10どうしてもできない。。。
0804デフォルトの名無しさん
2006/08/10(木) 02:28:49丸投げされているのが見つかって
このスレが授業中に晒されたことがある。
0805724
2006/08/10(木) 02:54:28ありゃ、未だ解決していなかったのか。
遣り取りしていたみたいだから終わったもんかとw
で、餓鬼じゃないんだから「できないできない」言ってないでデータとコードを晒してみたら?
#でも漏れはもう寝る。
0806デフォルトの名無しさん
2006/08/10(木) 02:54:25double a,b;
a=1.2354;
b=a-(int)a;
でだいじょぶでしょうか?
C++でキャスト使ったほうがいいんでしょうか?
0807デフォルトの名無しさん
2006/08/10(木) 02:58:40大丈夫だと思うが、負の値には使えないので要注意。
後は明示的キャストを使うとかfloor()を使うとかtrunc()を使うとか。
0808デフォルトの名無しさん
2006/08/10(木) 03:11:17ありがとうございます。
実は2次元配列(行列)で小数点以下が合う要素を抽出するプログラムを
作ってるんですが、うまくいきません。
コード載せるのでみていただけますか?
小数点第一位までのdouble型2次元配列 a[i][j]で小数点以下の数値を実数で渡されているときのものです。
抽出したものをdouble型の配列に突っ込みたいです。
void tyusyutu(const Matrix a, int m, int n, int o, const Vector b) //引数(対象行列、行数、列数、取り出したい小数点以下の数値、出力するベクトル)
{
int i,j,k;
double l;
for(i = 0; i < m; i++){
for(j = 0; j < n; j++){
l=a[i][j]-(int)a[i][j]; //小数点以下への変換
k = l*10 //整数へ
if(k == o) b[i] = a[i][j];
}
}
}
0809デフォルトの名無しさん
2006/08/10(木) 03:14:05a[][]は 1.1 1.2 1.3 1.4
2.1 2.2 2.3 2.4
みたいな感じなのですが、
例えば.3だけ会うものを抽出したいときには
o=3
となります。
よろしくお願いします。
0810デフォルトの名無しさん
2006/08/10(木) 03:15:26[2]次の加算プログラムに除算、乗算、減算を追加してそれぞれの結果が出る
四則演算をするプログラムを作りなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2577.zip
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:8月11日
[5] その他の制限: 特になし
よろしくお願いたします
0811デフォルトの名無しさん
2006/08/10(木) 03:45:19小数点以下1桁だけが対象なら
l=(int)(a[i][j] * 10) % 10;
が楽で正確かも。
0812808
2006/08/10(木) 03:55:39どうやら丸めが問題だったみたいです。
l=a[i][j]-(int)a[i][j]; //小数点以下への変換
k = l*10 //整数へ
の部分を
k=((a[i][j]-(int)a[i][j])+0.05)*10
で小数点以下第2位を四捨五入することで解決しました。
どうもありがとうございました。
0813808
2006/08/10(木) 04:00:29811さんの方法でもいけましたっ!
やっぱりfloat扱うときの丸めの重要性にきづきました。
ほんとにありがとうございました。
0814643
2006/08/10(木) 04:30:19その方法ではわからなくって自分で作ったらこんな風になりました。
#include <stdio.h>
#define SIZE 240 * 240
int main(int argc, char **argv) {
int i;
short data[SIZE];
FILE *fp;
for (i = 1; i < argc; i++) {
/*ファイルのオープン*/
fp = fopen( argv[i] , "rb");
if(fp == NULL){
// ファイルが開けなかった場合
fprintf(stderr,"cannot output to file.\n");
return 0;}
fread(data, sizeof(data[0]), sizeof(data) / sizeof(data[0]), fp);
fclose(fp);
if ((fp = fopen(argv[i] .csv , "w")) == NULL) return -1;
i=0;
while (i < SIZE)
fprintf(fp,"%d%c", data[i++], (i + 1) % 240 ? ',' : '\n');
fclose(fp);
return 0;
}
だけど、ファイルの書き込みのところができません。argv[i]にファイル名が
入っているので同じ名前で拡張子だけ変えて出力すればいいのですが・・
間に合わない予感がする・・・・。
0815デフォルトの名無しさん
2006/08/10(木) 05:28:09#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define VECSZ 240
#define MATSZ VECSZ * VECSZ
int bin2csv(char *fname)
{
int i;
char *outname;
short data[MATSZ];
FILE *fp;
if ((fp = fopen(fname, "rb")) == NULL) return -1;
fread(data, sizeof(data[0]), MATSZ, fp);
fclose(fp);
outname = (char*)malloc(strlen(fname) + strlen(".cvs") + 1);
strcpy(outname, fname);
strcat(outname, ".cvs");
if ((fp = fopen(outname, "w")) == NULL) return -1;
for (i = 0; i < MATSZ; i++) fprintf(fp,"%d%c", data[i], (i + 1) % VECSZ ? ',' : '\n');
fclose(fp);
free(outname);
return 0;
}
int main(int argc, char **argv) {
int i;
for (i = 1; i < argc; i++)
bin2csv(argv[i]);
return 0;
}
0816724
2006/08/10(木) 11:29:47・「拡張子を変える」とあるからその名前のつけ方は拙かろう。
・メモリリークしている。
// 最初のfclose(fp);の後から
char * ext = strchr(fname, '.');
if (ext == NULL) ext = strchr(fname, '\0'); // 拡張子がなかったときの対策
char * outname = malloc(ext - fname + sizeof(".csv"));
sprintf(outname, "%.*s.csv", ext - fname, fname);
fp = fopen(outname, "w");
free(outname); // outnameはfopen()してしまえば用済み
if (fp == NULL) return -1;
// 次のfopen()の辺りまで
0817643
2006/08/10(木) 21:47:32ありがとうございます。
コンパイルできました。
>>816
おっしゃるとおり改造してみましたが
char * ext = strchr(fname, '.');
と
char * outname = malloc(ext - fname + sizeof(".csv"));
がここでは宣言できません
となり、コンパイルできません。
どうしたらいいでしょうか?
0818デフォルトの名無しさん
2006/08/10(木) 21:57:070819デフォルトの名無しさん
2006/08/10(木) 22:01:50宿題レベルの話だから、
char outname[128];
strcpy(outname, fname);
memcpy(&outname[strlen(fname) - 3], "csv", 3);
でいいじゃない?malloc(), free()なんか使わずに。
>>816
sizeof(".csv")ってなんだよ?
0820デフォルトの名無しさん
2006/08/10(木) 22:12:51拡張子以外のパスに"."が含まれる場合正常に動作しない
特にディレクトリ名に"."を含む場合に悲惨
>>819
3文字以外の拡張子及び拡張子なし場合に正常に動作しない
ファイル名が3文字未満だと目も当てられない
0821デフォルトの名無しさん
2006/08/10(木) 22:15:17>3文字以外の拡張子及び拡張子なし場合に正常に動作しない
>ファイル名が3文字未満だと目も当てられない
まぁそうなんだけど、宿題なんだからさ。
「拡張子」なんてポワポワしたものを扱う場合は、特に割りきりが必要じゃない?
入力ファイルが、
data.001
data.002
...
なんて可能性もあるわけだし。
0822816
2006/08/10(木) 22:16:57あーごめん、C99前提で書く癖がついてて。
それぞれ前方で宣言しておいて。
>>818
C99はCですが。
>>819
見たままですが。
>>820
確かに。
んじゃ、strchr()の代わりにstrrchr()で。
#帰宅しても混乱してたら今度は関数丸ごと書かないとダメだな。
0823デフォルトの名無しさん
2006/08/10(木) 22:20:28見たままってどういうこと?
0824デフォルトの名無しさん
2006/08/10(木) 22:22:180825デフォルトの名無しさん
2006/08/10(木) 22:24:48素直に
hogehoge → hogehoge.csv
hogehoge.dat → hogehoge.dat.csv
hogehoge.001 → hogehoge.001.csv
がいいと思うけどなぁ。
それか出力ファイル名もコマンドラインから受け取るか。
0826デフォルトの名無しさん
2006/08/10(木) 22:25:050827デフォルトの名無しさん
2006/08/10(木) 22:27:170828デフォルトの名無しさん
2006/08/10(木) 22:27:48俺だったら前者のようにするけど、拡張子を変える必要があるみたいだよ。
前者のやりかたでも、変えるっちゃ変えるんだけど。
0829デフォルトの名無しさん
2006/08/10(木) 22:29:38少なくとも漏れの環境ではsizeof(".csv")は5になったよ。
0830643
2006/08/10(木) 22:31:14正確に.datまでファイル名を打ち込まないと
読み込んでくれませんが、
これの解決方法ってあるのでしょうか?
これ、明日までの宿題・・・
今日も徹夜でがんばらないと・・。
0831デフォルトの名無しさん
2006/08/10(木) 22:31:310832デフォルトの名無しさん
2006/08/10(木) 22:33:02Windowsじゃ、それ使うだけじゃダメなんだけどな
0833デフォルトの名無しさん
2006/08/10(木) 22:34:14曖昧に打ち込んだファイル名から類推させるんですか?
かなり難しいと思いますw
0834デフォルトの名無しさん
2006/08/10(木) 22:35:28sizeof(pointer)と間違えてるんだろ
0836643
2006/08/10(木) 22:39:02ありがとうございます。
そうですかサンプルのバイナリーデータが
PP20060526-1343.datとかすごく長いので
コマンドラインから打ち込むのをなるべく短縮できないかな?
と思ったものですから。。。
こんなながい名前10個打ち込むのつらい気がして。。。
0837デフォルトの名無しさん
2006/08/10(木) 22:39:140838デフォルトの名無しさん
2006/08/10(木) 22:40:07.dat決め打ちでいいなら入力ファイル名の末尾調べて付け足し
sample.datとsampleとどっちもあるときどーすんだとかめどいので
課題に含まれてないなら妙なことはやらんほうが身のためだとは思うが
0839デフォルトの名無しさん
2006/08/10(木) 22:40:38俺は816ではないけど、
Cにおいて文字列リテラルの型はchar配列。(ただし内容を書き換えしようとしたらその挙動は未定義)
つまり".csv"はchar [5]型となり、sizeof (".csv")は5を返す。
ちなみにC++だとconst char配列。
0840デフォルトの名無しさん
2006/08/10(木) 22:42:020841デフォルトの名無しさん
2006/08/10(木) 22:43:08your_program.exe PP*.dat
とかワイルドカード使えば?
0842643
2006/08/10(木) 22:44:02なるほど。
そうですね。どっちもあるときはできなくなりますね。
そうか・・・。
入力ファイル名の末尾調べてつけたしって
「文字列をくっつける」のを使えればできるのですね?
0843デフォルトの名無しさん
2006/08/10(木) 22:45:02知らなかったのが恥ずかしい。
0844643
2006/08/10(木) 22:46:05ワイルドカードですか?
いままで必死に調べてみたらネット上に
そんな記述があったのですが
私の持ってるC言語の本にはまったく書いてなくて
わかりませんでした。
ワイルドカードってどうやったら使えるのですか?
すごく興味あります。
0845デフォルトの名無しさん
2006/08/10(木) 22:48:140846デフォルトの名無しさん
2006/08/10(木) 22:49:24俺は書かないけどw
0847デフォルトの名無しさん
2006/08/10(木) 22:51:140848デフォルトの名無しさん
2006/08/10(木) 22:51:530849デフォルトの名無しさん
2006/08/10(木) 22:52:21ファイル名の補完とか、複数ファイルの指定(所謂ワイルドカード)なんて仕事は本来コマンドインタプリタの仕事。
#Unix系ではシェルが該当する。
残念ながらWindowsではcmd.exeがそこまでやってくれないのでエクスプローラからDrag&Dropするくらいしか手がない。
#まさかファイル名補完のロジックなんて今から書いてられないだろ?
0850デフォルトの名無しさん
2006/08/10(木) 22:52:55bashのつもりで話してたから、ワイルドカードの話は諦めて。
exeにドラッグアンドドロップでいいかも。
0851デフォルトの名無しさん
2006/08/10(木) 22:56:03メモリリークなんか気にしなくていいよ。すぐにプログラム終わっちゃうんだから。
0852デフォルトの名無しさん
2006/08/10(木) 23:00:100853643
2006/08/10(木) 23:00:30どなたか、正解を教えてくださいm(_ _)m
0854643
2006/08/10(木) 23:02:40だけど、なるべく実用的なものを作るように
と言われました。
お願いいたします。
0855デフォルトの名無しさん
2006/08/10(木) 23:05:20だから完成されたコードは書かない。
0856デフォルトの名無しさん
2006/08/10(木) 23:06:110857デフォルトの名無しさん
2006/08/10(木) 23:06:47>822
>>816は帰ったのか?w
0858デフォルトの名無しさん
2006/08/10(木) 23:07:02いい加減ウザいぞ。
816が帰宅したら回答を書くそうだから、おとなしく待っとけ
0859デフォルトの名無しさん
2006/08/10(木) 23:07:46宣言部に以下を追加
char *ext, char *outname;
>>816中の下2行は以下のように書き換えてから追加
char * ext = strchr(fname, '.'); → ext = strchr(fname, '.');
char * outname = malloc(ext - fname + sizeof(".csv")); → outname = malloc(ext - fname + sizeof(".csv"));
中身読んでないので動くかは知らん
0860643
2006/08/10(木) 23:12:52ありがとうございます。
おっしゃるとおりにしてみましたが
データの入ってないCSVファイルができました。
データはいずこに・・・・。
0861デフォルトの名無しさん
2006/08/10(木) 23:14:36UZEEEEEEEEEEEEEEEEE
0862デフォルトの名無しさん
2006/08/10(木) 23:15:12まぁ、がんばれよ。
0863デフォルトの名無しさん
2006/08/10(木) 23:18:20嫌なら来なくて良いんですよ?このスレに強制的に来るように誰かに指示、命令されてるの?
0864デフォルトの名無しさん
2006/08/10(木) 23:18:46643乙
0865デフォルトの名無しさん
2006/08/10(木) 23:22:33ここは宿題を丸投げして回答するスレであって、QAスレではない。
0866デフォルトの名無しさん
2006/08/10(木) 23:23:20ああ、宣言部に持ってくればいいという話ではなかったかスマソ
読むのめどいし>>816が帰ってくるのを待ってておくれ
0867デフォルトの名無しさん
2006/08/10(木) 23:23:57自分勝手な価値観で相手を不必要に罵倒して、後で世間から冷ややかな目で見られるんだよねw
0868デフォルトの名無しさん
2006/08/10(木) 23:24:060869デフォルトの名無しさん
2006/08/10(木) 23:25:09別にいいんじゃないの?
ここ2chだし。
0870643
2006/08/10(木) 23:25:34おとなしく、自習しながら待っております。。
ごめんなさい。
では、どなたか思いついたらどうぞよろしくお願いいたします。
0871デフォルトの名無しさん
2006/08/10(木) 23:25:59そう、”来なくても”良いんだよ。分かった?
0872デフォルトの名無しさん
2006/08/10(木) 23:26:54ま た お 前 か
0873デフォルトの名無しさん
2006/08/10(木) 23:29:54ま た お 前 か
0874デフォルトの名無しさん
2006/08/10(木) 23:30:33お前も来なくていいよ
0875デフォルトの名無しさん
2006/08/10(木) 23:31:07丸投げに対してのレスをしないで、うぜぇだの自己主張しかしない
ガイキチが根付いているんだな。みっともないね、何しにこのスレに来てんの?w
0876デフォルトの名無しさん
2006/08/10(木) 23:31:49いや、そういうことをいちいち言うお前が来なくて良いんだよ。
他に回答している人からしてみりゃ、答える気もないのに
質問者が気に食わないってことをいちいち言う方がUZEEEEんだが?
0877デフォルトの名無しさん
2006/08/10(木) 23:33:59お前がいなかった間は、お前ほどのキチガイは来なかったがな。
0878デフォルトの名無しさん
2006/08/10(木) 23:40:08こいつ、マジでうぜぇ
0879デフォルトの名無しさん
2006/08/11(金) 00:00:23いずれにしても叩きたいなら止めないが。
0880デフォルトの名無しさん
2006/08/11(金) 00:31:230881643
2006/08/11(金) 01:00:440882デフォルトの名無しさん
2006/08/11(金) 01:07:02こいつら、マジでうぜぇ、煽る、荒らすだけなら来るなバカ共
0883デフォルトの名無しさん
2006/08/11(金) 01:07:530884デフォルトの名無しさん
2006/08/11(金) 01:29:03#include <string.h>
#include <stdlib.h>
struct Wether {
short elem[240][240];
};
int convert_csv(char *infilename) {
struct Wether *wether;
int i;
int j;
FILE *infile;
FILE *outfile;
char *outfilename;
char *outext;
wether = (struct Wether *)malloc(sizeof(struct Wether));
infile = fopen(infilename, "r");
fread(wether, sizeof(struct Wether), 1, infile);
fclose(infile);
0885デフォルトの名無しさん
2006/08/11(金) 01:30:20outfilename = (char *)malloc(strlen(infilename) + strlen(outext) + 1);
sprintf(outfilename, "%s%s", infilename, outext);
outfile = fopen(outfilename, "w");
free(outfilename);
for (i = 0; i < 240; i++) {
for (j = 0; j < 240; j++) {
fprintf(outfile, "%d", wether->elem[i][j]);
if (j < 240 - 1)
fprintf(outfile, ",");
}
fprintf(outfile, "\n");
}
fclose(outfile);
free(wether);
}
int main(int argc, char **argv) {
int i;
for (i = 1; i < argc; i++)
convert_csv(argv[i]);
}
0886643
2006/08/11(金) 05:06:22できてる!すごいです。。>>884さんありがとうございます。
質問ですが>>885の
convert_csv(argv[i]);のあとにreturn 0;
をつけても問題ないでしょうか?
0887643
2006/08/11(金) 05:08:01#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Wether {
short elem[240][240];
};
int convert_csv(char *infilename) {
struct Wether *wether;
int i;
int j;
FILE *infile;
FILE *outfile;
char *outfilename;
char *outext;
wether = (struct Wether *)malloc(sizeof(struct Wether));//メモリ確保
if( wether == NULL ) /* 領域確保に失敗したか */{
printf( "%dバイトの領域確保に失敗", sizeof(struct Wether) );
return 1;
}
infile = fopen(infilename, "r");
if(infile == NULL){
fprintf(stderr,"cannot output to file.\n");//ファイルがないとき
return 0;
}
fread(wether, sizeof(struct Wether), 1, infile);
fclose(infile);
outext = ".csv";
0888643
2006/08/11(金) 05:08:48sprintf(outfilename, "%s%s", infilename, outext);
outfile = fopen(outfilename, "w");
free(outfilename);//メモリーの解放
for (i = 0; i < 240; i++)
{
for (j = 0; j < 240; j++)
{
fprintf(outfile, "%d", wether->elem[i][j]);
if (j < 240 - 1)
fprintf(outfile, ",");
}
fprintf(outfile, "\n");
}
fclose(outfile);
free(wether);//メモリーの解放
return 0;
}
/*メイン*/
int main(int argc, char **argv) {
int i;
for (i = 1; i < argc; i++)
convert_csv(argv[i]);
return 0;
}
0889デフォルトの名無しさん
2006/08/11(金) 05:45:36でも、最初のmalloc、fopenはエラーの処理やってるのに、二回目は何でやってないん?
あと、関数の戻り値が正常に終わった場合と途中で終わった場合で一緒になってる…のはどうでもいいか
0890816
2006/08/11(金) 06:47:24エラーチェックするならこの辺かな。
・fread()の戻り値でサイズ分読めたか
・malloc()の戻り値でメモリ確保できたか
・出力ファイルのfopen()の戻り値でファイルを作れるか
・fprintf()とfclose()でファイルを書けたか
まぁ、fopen()以外は致命的ではないか。
0891643
2006/08/11(金) 07:12:56どうもありがとうございました。
もうひとつ気になることがありまして・・
もらったプリントのデータの型のところに
「符号なし整数」と書いてあります。
でも結果のデータを見ると
-2048とか-266とかばかり出てきてるのですが
これって結果としておかしいですか?
0892816
2006/08/11(金) 07:27:54それならshortをunsigned shortにすればよろしい。
それと、fprintf()の%dを%uも忘れずに。
#そのデータだと-2048→63488、-266→65270になって意味不明だけどね。
0893デフォルトの名無しさん
2006/08/11(金) 07:29:53そのデータの宣言にunsignedってつければいいんじゃないの?
int ⇒ ungigned int みたいな感じで。
ソース読んでないから知らないけど。
0895デフォルトの名無しさん
2006/08/11(金) 07:50:06いや、だから読んでないって言ってるじゃん。
そんな得意げに言われても…。
0896デフォルトの名無しさん
2006/08/11(金) 07:52:060898デフォルトの名無しさん
2006/08/11(金) 08:09:250899デフォルトの名無しさん
2006/08/11(金) 08:13:47ごめん。君、痛い。
0900643
2006/08/11(金) 08:39:23先生自体、気象の方でプログラム専門にやってる方では
ないのです。
バイナリデータ自体は実際に観測されてる
機械からとってるものだということで
そのデータ型が書いてある説明書を見たら
「符号なし整数 2byte 240*240」
と書いてあったのですが・・・
先生がまちがってるのだろうか・・・・。
0901デフォルトの名無しさん
2006/08/11(金) 08:49:41ファイルフォーマット合ってるのかどーかを知るのは絶望的だとおも
あとは先生に問いただすなりなんなりで
0902デフォルトの名無しさん
2006/08/11(金) 14:12:50[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2579.zip
wav_conc.cを修正し、
ヘッダ長にかかわらず複数のwavファイルを1つにできるようにせよ。
(ヘッダ長は読み込んだファイルのまま利用する。)
という問題です。
[3] 環境
[3.1] OS: WindowsXPsp2,Vine3.2
[3.2] コンパイラ名とバージョン:Visualstudio02,gcc3.3?
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限: なるべく関数は1つで。
読み込むファイルは、長さ・バイト数以外の値(stereo,16bit,44100Hzなど)は、
全て同一ということ前提だそうです。
※今のままでは58,44byte長のヘッダ形式しか結合できません。
丁度、サウンドレーコーダで録音したタイプと、Mediaフォルダ内にある物にあたります。
0903デフォルトの名無しさん
2006/08/11(金) 14:42:43今までなんでscanf()には文句言わなかったんだ?
エラーチェックしてないコードなんて山のようにあっただろ?
つか、うざいよ、君。
0904デフォルトの名無しさん
2006/08/11(金) 14:58:33>>854
誰に対して書いているのか知らんが、少しはスレを読んでくれ。
0905デフォルトの名無しさん
2006/08/11(金) 15:14:26「実用的」ってとこか?
>>815のどこが実用的じゃなかったんだ?
0906デフォルトの名無しさん
2006/08/11(金) 15:29:10それと「実用的な」エラー処理って、エラーメッセージを出すものなんだよ。
エラーコードをチェックしたって、何も言わずにプログラムが終わっちゃったら困るでしょ。
0907816
2006/08/11(金) 15:36:46でも痛い香具師が書いたってまた叩かれるだろうからもう知らね。
0908デフォルトの名無しさん
2006/08/11(金) 15:40:430909デフォルトの名無しさん
2006/08/11(金) 15:41:51全部読んだ。
疲れた。
WAVファイルの構造なんて普通知らんから、参考情報つけといて欲しい。
http://www2.tokyo-ct.ac.jp/~j/staff/kosaka/for_students/LectWAVE/LectWAVE.html
0910デフォルトの名無しさん
2006/08/11(金) 15:45:21いや、お前が>>816でくだらんチャチャを入れたせいだ。
0911デフォルトの名無しさん
2006/08/11(金) 16:11:13漏れも仕組み分からんな。。
てかそこ開かなくね?
0912デフォルトの名無しさん
2006/08/11(金) 16:16:07俺も開けない。
つーか、wavの構造くらいだったらググれば他にあるだろうが、やる気が出ない。
0913デフォルトの名無しさん
2006/08/11(金) 16:23:47単純に連結させただけだと、一瞬間が空きそうなことぐらいしか。。
ファイル操作は苦手でね…orz
何か利用価値ありそうな物な気がするんだが。。
0914デフォルトの名無しさん
2006/08/11(金) 16:26:57とか、構造を全く知らない俺が妄想してみた。
0915デフォルトの名無しさん
2006/08/11(金) 16:49:31たった数分のうちにサーバが落ちているようだ。
どこだ、このショボイ大学。
0916デフォルトの名無しさん
2006/08/11(金) 19:14:27ヘッダとかヘッダとか、ヘッダとか色々あるだろ。
俺もよく知らないけど、サンプリングレートとか違うファイル同士結合するのとか激しく面倒くさそうだ。
0917デフォルトの名無しさん
2006/08/11(金) 19:18:520918デフォルトの名無しさん
2006/08/11(金) 19:27:340919デフォルトの名無しさん
2006/08/11(金) 21:16:31どーせ形式決め打ちだし、ヘッダの雛形書いて、dataチャンクまで読み捨てて連結じゃダメかのう
0920デフォルトの名無しさん
2006/08/11(金) 21:17:17上のレスは>>902宛ね
0921デフォルトの名無しさん
2006/08/11(金) 23:28:49DynamicProgrammingでプログラムを作成しなさい。対象とする問題は各自検討して下さい。
アルゴリズムの説明、プログラム、プログラムの説明、実行結果、考察等をまと
めて報告書とすること
0922ど素人
2006/08/11(金) 23:35:15[1] 授業単元:情報C
[2] 問題文1→”ABC=”という文字列に、0001から5000までの数字を
順番に結合しファイルに記入するプログラムを作れ。
ex)ABC=0001 ABC=0002…ABC=5000
[3] 環境 Borland 5.6
[3.1] OS: WindowsXP
[3.2] ポインタを使用すること
[3.3] 言語: Cのみ
[4] 期限 8月21日
[5]
0923デフォルトの名無しさん
2006/08/11(金) 23:56:57>>1を見てやり直し
>>922
ごめん、悪いけど問題文そのままコピペお願い
何がしたいのか分からない
0924デフォルトの名無しさん
2006/08/12(土) 00:01:38int main() { int i; for (i = 1; i <= 5000; i++) fprintf(stdout, "ABC=%04d\n", i);}
0925デフォルトの名無しさん
2006/08/12(土) 00:02:48これでいいのかな?
int main(void) {
int i;
FILE *fp;
fp = fopen("abc.txt", "w");
if(fp == NULL) {
return 0;
}
for(i = 1; i <= 5000; i++) {
fprintf(fp, "ABC=%04d\n", i);
}
fclose(fp);
return 0;
}
0926デフォルトの名無しさん
2006/08/12(土) 00:04:530927ど素人
2006/08/12(土) 00:15:47授業ではstrcatが出てきました。
文字列を結合させるとか足すとかするやつですよね?
その授業の後にさっきの問題を口頭で言われたのですが
自分で調べても全くわかりません。
strcatって難しいですね。
0928デフォルトの名無しさん
2006/08/12(土) 00:19:440929デフォルトの名無しさん
2006/08/12(土) 00:30:490930ど素人
2006/08/12(土) 00:45:340931デフォルトの名無しさん
2006/08/12(土) 00:53:240932デフォルトの名無しさん
2006/08/12(土) 01:20:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2580.txt
0933デフォルトの名無しさん
2006/08/12(土) 01:29:29strcatを無理やり使うとそうなるわな。
でもそれなら>>925の方がすっきりしているという・・・。
fpもポインタなんだし、>>922の問題の条件は、
strcatを使わなくても満たされるように思う。
というか、この問題でstrcatを無理やり使わせるのはアホ。
0935デフォルトの名無しさん
2006/08/12(土) 01:37:56いや、さすがにそれはダメでしょう。
0936デフォルトの名無しさん
2006/08/12(土) 01:38:21とりあえず、問題の条件や意図が判らなさ過ぎだな。
0937デフォルトの名無しさん
2006/08/12(土) 01:45:040938デフォルトの名無しさん
2006/08/12(土) 01:48:20> strcatを無理やり使うとそうなるわな。
ならねーよ!w
0939643
2006/08/12(土) 02:43:37ありがとうございました。
提出しました・・・。
いったいどうなるのか不安ですが。
どうもありがとうございました〜。
0940デフォルトの名無しさん
2006/08/12(土) 02:47:06試してみたら俺の環境では正常に動いたわw
sが書込み禁止領域に置かれるような環境ではうまく動かんから>922は注意しろよ
0941デフォルトの名無しさん
2006/08/12(土) 02:49:43職業プログラマならすぐさま辞めろ。
プログラマを目指しているなら、あきらめろ。
ただの素人なら、いつまでも勘違いしてろ。
0942デフォルトの名無しさん
2006/08/12(土) 02:54:52死ね
0943デフォルトの名無しさん
2006/08/12(土) 02:55:420944デフォルトの名無しさん
2006/08/12(土) 03:03:38#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
int i;
char buf[10], s[16] = "ABC=";
FILE *fp;
if ((fp = fopen("abc.txt", "w")) == NULL) {
exit(1);
}
for (i = 1; i <= 5000; i++) {
snprintf(buf, sizeof buf, "%04d", i);
strcat(s, buf);
fprintf(fp, "%s\n", s);
s[4]='\0';
}
fclose(fp);
return 0;
}
0946ど素人
2006/08/12(土) 04:04:21[1] 授業単元:情報C
[2] 問題2→ABC=0000からABC=5000までの続き番号のファイルを一度に読み込む
プログラムを作成しなさい。
さらにファイルの中身を積算しなさい。
ファイルの中には2*20の数値データが入っているものとする。
ex)ABC=0001 ABC=0002…ABC=5000
[3] 環境 Borland 5.6
[3.1] OS: WindowsXP
[3.2] ポインタを使用すること
[3.3] 言語: Cのみ
[4] 期限 8月21日
[5]
0947デフォルトの名無しさん
2006/08/12(土) 04:07:54>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
それと問題文が意味不明ですお
0948デフォルトの名無しさん
2006/08/12(土) 04:10:460949ど素人
2006/08/12(土) 04:43:22講義中に口頭での宿題の提示だったので
意味がわからない箇所が多いと思います。
もう一度、、
[1] 授業単元:情報C
[2] 問題2→ABC=0000からABC=5000までの続き番号のファイルを
一度に読み込みデータを積算処理するプログラムを作成しなさい。
ファイルの中には2*20の数値データが入っているものとする。
[3] 環境 Borland 5.6
[3.1] OS: WindowsXP
[3.2] ポインタを使用すること
[3.3] 言語: Cのみ
[4] 期限 8月21日
[5]
0950デフォルトの名無しさん
2006/08/12(土) 04:44:190951デフォルトの名無しさん
2006/08/12(土) 04:59:12言わんとしていることは分からないでも無いが
具体的にどういうファイルなのかを出して貰わないことにはどうしようもない
0952デフォルトの名無しさん
2006/08/12(土) 05:05:160953デフォルトの名無しさん
2006/08/12(土) 05:06:500954ど素人
2006/08/12(土) 05:49:48多分同じ項目同士を全部足し算しろ
という事ではないかと思います。
0955ど素人
2006/08/12(土) 05:56:56こんなデータらしいですが・・・。
0956デフォルトの名無しさん
2006/08/12(土) 06:18:14お前が理解していないからだろうが。
0957デフォルトの名無しさん
2006/08/12(土) 06:45:08同じ項目ってのは何だ?
0958ど素人
2006/08/12(土) 06:50:33おはようございます。
一番目のファイルの1番目のデータと二番目以降のファイルの
1番目のデータをどんどんたしていく。
同じく一番目のファイルの2番目のデータと二番目以降のファイルの
2番目のデータをどんどんたしていく。
これを5000まで繰り返す。
つまり2*2番目は2*2番目同士全部たす。
2*4800番目は2*4800番目同士全部たす。
そして結果を出力すると言う意味ではないかと思います。
0959デフォルトの名無しさん
2006/08/12(土) 06:56:30連番ファイルを読んで尿i1と尿i2を別々に出すのか、尿ijを出すのかはっきりしろ
0961デフォルトの名無しさん
2006/08/12(土) 07:20:340962ど素人
2006/08/12(土) 07:23:15同じところにあるの数字をたしていくようです。
そうです。言ってみれば行列の総和を5000個とるんですね。
各ファイルのデータは2*20だそうです。
0963デフォルトの名無しさん
2006/08/12(土) 07:26:560964デフォルトの名無しさん
2006/08/12(土) 07:33:50もうサンプルをどうすりゃいいのか結果で示せ
0965デフォルトの名無しさん
2006/08/12(土) 07:37:031. データがあるなら最初からだせ
2. そのデータは、途中から一行に三つの値が登場するようになるが、正しいのか?
0966ど素人
2006/08/12(土) 07:53:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2584.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2585.txt
データのサンプルが3個しかありませんが、こんな感じです
0967デフォルトの名無しさん
2006/08/12(土) 08:02:50積算処理ってのは勘違いだったのかとか、最初にあげたデータは間違ってたのかとか
ちゃんと答えてくれ、結局おまいの書き込みのどれを信じればいいのかさっぱりだ
つか問題文ごとまとめなおしてくれ
0968デフォルトの名無しさん
2006/08/12(土) 08:05:520969デフォルトの名無しさん
2006/08/12(土) 08:11:03>つまり2*2番目は2*2番目同士全部たす。
お願いだから、日本語を喋ってくれ。
0970デフォルトの名無しさん
2006/08/12(土) 08:12:18俺のほうが勘違いしすぎてたようだorz
スマソ
0971デフォルトの名無しさん
2006/08/12(土) 08:14:25どういうフォーマットのファイルがいくつあって、何をどのように計算するのか
もう一回まとめろ。
「ABC=0000からABC=5000までの続き番号のファイル」なんて、意味不明もいいところだ。
それから、0000なのか0001なのかもはっきりさせろ。
0972デフォルトの名無しさん
2006/08/12(土) 08:26:19質問テンプレの[3.2]はコンパイラ名とバージョンなわけだが
0973デフォルトの名無しさん
2006/08/12(土) 08:37:39どうプログラミングするのかわからないから、説明に戸惑ってるというのもあるんだろう。
要領を得ない相手から、必要な情報を引き出すのも、要求工学だ。精進しろ。
俺は答える気ないから、質問しないけど。
0974ど素人
2006/08/12(土) 08:51:19ええと、先ほど例としてあげた
データファイルの名前が、ABC=0000.txtから
ABC=0001.txt ABC=0002.txt ABC=0003.txt ABC=0004.txt
という風にABC=5000.txtまであるときに
それらのファイルの同じ要素ずつをすべて
積算する(和をとる)プログラム
を作っていただきたいのです。
多分先生がおっしゃってるのはそういう事ではないかと思います。
0975デフォルトの名無しさん
2006/08/12(土) 09:02:175000ファイルとか20行とかは忘れて、3ファイルでそれぞれ2行の場合ね。
[ABC=0001.txt]
02107
0.12076
[ABC=0002.txt]
4.22096
4.32063
[ABC=0003.txt]
26.32087
26.42133
0976デフォルトの名無しさん
2006/08/12(土) 09:04:19[ABC=0001.txt]
0 2107
0.1 2076
[ABC=0002.txt]
4.2 2096
4.3 2063
[ABC=0003.txt]
26.3 2087
26.4 2133
0977ど素人
2006/08/12(土) 09:11:1602107 2423
0.12076 2653
[ABC=0002.txt]
4.22096 2564
4.32063 5946
[ABC=0003.txt]
26.32087 2659
26.42133 4579
[ABC.txt]
D E
F G
計算結果がABC.txtにり、データの位置がD、E、F、Gなら
Dには02107 +4.22096 +26.32087 の答えが入る。
Eには2423+2564+2659の答え
Fには0.12076 +4.32063 +26.42133 の答え
Gには2653+5946+4579の答えが入る。
つまり同じ位置の数値が5000ファイル分足される。。。。
0978デフォルトの名無しさん
2006/08/12(土) 09:17:13その計算に意味があるのかどうかと、5000ファイルを一度に読み込む必要が
あるのかどうかが俺にはわからないが、時間があればやってみよう。
他の誰かが解答したらやらないけど。
0979ど素人
2006/08/12(土) 09:22:53と言うところがおいしいところなのではないかと
思います。。。。
おいしいとは思いますが、
ど素人にはむしろ難しく・・・。
どうぞよろしくお願いいたします。
0980デフォルトの名無しさん
2006/08/12(土) 09:26:56こんなんでいいか?
0981978
2006/08/12(土) 09:29:58うーん、そういうのでいいんだろうか・・・
という疑問を残しつつ、テストデータ作成プログラムを。
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE* fp;
int i;
int j = 0;
char buf[16];
for (i = 0; i < 5000; i++) {
sprintf(buf, "ABC=%04d.txt", i + 1);
fp = fopen(buf, "w");
for (j = 0; j < 20; j++) {
fprintf(fp, "%.1f %d\n", j / 10.0 + i * 2, rand() % 3000);
}
fclose(fp);
}
return 0;
}
0982978
2006/08/12(土) 09:32:35for文の5000を5001に変更。
0983978
2006/08/12(土) 09:33:55これで。
for (i = 0; i < 5001; i++) {
sprintf(buf, "ABC=%04d.txt", i);
fp = fopen(buf, "w");
for (j = 0; j < 20; j++) {
fprintf(fp, "%.1f %d\n", j / 10.0 + i * 2, rand() % 3000);
}
fclose(fp);
}
0984980
2006/08/12(土) 09:34:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2587.c
>>981
>うーん、そういうのでいいんだろうか・・・
何かおかしいところがある?
0985978
2006/08/12(土) 09:36:49それだと逐次的に読み込んで処理するということになるから、題意に沿ってるのかなぁと。
まあ「ど素人」(失礼)の言うことなので、それでいいのかも。
0986980
2006/08/12(土) 09:42:32それとも、Windowsでは5001ファイルを同時に開けるのか?
0987ど素人
2006/08/12(土) 09:43:20プロまたは玄人のみなさんからすると
この問題おかしいですか?
ど素人からすると、
一気に5000個のファイルを処理できるおいしい
プログラムに思えますが・・・・。
0989ど素人
2006/08/12(土) 09:52:00よくわかりません。。。
本当に°素人です
0990デフォルトの名無しさん
2006/08/12(土) 09:55:05君も素人でしょ。
二行目が特に。
0991ど素人
2006/08/12(土) 09:59:01問題1の答えありがとうございました。
問題2の方もよろしくお願いいたします。
0992デフォルトの名無しさん
2006/08/12(土) 10:00:28騙りか?
0994デフォルトの名無しさん
2006/08/12(土) 10:09:560995デフォルトの名無しさん
2006/08/12(土) 10:13:59次は74代目らしいぞ。
0996デフォルトの名無しさん
2006/08/12(土) 10:15:350997デフォルトの名無しさん
2006/08/12(土) 10:25:42http://pc8.2ch.net/test/read.cgi/tech/1149349035/
このスレは使い回さないのか?
0998デフォルトの名無しさん
2006/08/12(土) 13:05:39C/C++の宿題を片付けます 73代目
http://pc8.2ch.net/test/read.cgi/tech/1155355501/
スレ番修正済み
0999デフォルトの名無しさん
2006/08/12(土) 13:40:501000デフォルトの名無しさん
2006/08/12(土) 13:49:5810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。