C/C++の宿題を片付けます 58代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/01/18(水) 03:35:45【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【前スレ】
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
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/01/18(水) 04:02:48int main()
{
MessageBox(0,"スレ立て乙"," ",0);
return 0;
}
0003デフォルトの名無しさん
2006/01/18(水) 04:06:33int main(void){
while(1){
puts(">>1スレ立て乙");
}
return 0;
}
0004デフォルトの名無しさん
2006/01/18(水) 04:08:10public static void main(String arg[]){
while(true){
System.out.println("スレ立て乙");
}
}
0005デフォルトの名無しさん
2006/01/18(水) 04:14:18遅くなりました
0006デフォルトの名無しさん
2006/01/18(水) 04:17:43すいません。こちらでお願いします。
0007デフォルトの名無しさん
2006/01/18(水) 04:24:470008デフォルトの名無しさん
2006/01/18(水) 04:34:2800099
2006/01/18(水) 04:53:09[2] 問題文(含コード&リンク):
#include <stdio.h>
int ch;
void getch0(void) {
ch = getchar();
}
int expression(void);
int factor(void) {
int val;
if(ch >= '0' && ch <= '9') {
val = ch-'0';
getch0();
}
else if(ch == '(') {
getch0();
val = expression();
getch0();
}
return val;
}
int term(void) {
int val;
val = factor();
while(ch == '*') {
getch0();
val = val * factor();
}
return val;
}
00109
2006/01/18(水) 04:54:00int val;
val = term();
while(ch == '+') {
getch0();
val = val + term();
}
return val;
}
int main(void) {
printf("expression? ");
getch0();
printf("value=%d\n", expression());
}
この計算プログラムにおいて,2*(3+(4+5)*6) を計算するとき,
どういう順番で,expression, term, factorを呼び出して計算がなされて,
最終的な答えに行き着くのかを説明しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2006年1月20日まで
何とぞお手柔らかにお願いします!
00119
2006/01/18(水) 04:57:5600129
2006/01/18(水) 04:59:3000139 ◆jcfgG7aJMA
2006/01/18(水) 05:07:11朝早くからのいたずら、お疲れ様です
0014デフォルトの名無しさん
2006/01/18(水) 05:56:04浅学な我輩にはなかなか面白いプログラムだったよ
2*(3+(4+5)*6)
expression //mainより 戻り値117
term
factor
factor
expression //最初の( , 戻り値57
term
factor
term
factor
expression //2番目の( , 戻り値9
term
factor
term
factor
factor
0015デフォルトの名無しさん
2006/01/18(水) 06:01:12何やってんだか
00169
2006/01/18(水) 07:55:04どうもありがとうございます。そんなにややこしいんですか!・・・
あの〜、ちなみにこのプログラムってどのコマンドで数字を読み取ってるんですか?
scanf() みたいなものが見当たらないので・・・
0017デフォルトの名無しさん
2006/01/18(水) 08:02:31数式を受け取ってどの様に処理してるかは、入力ストリームの話題になるんだけど
文字を受けとる関数はgetch0()関数のgetchar()関数
こいつは標準入力デバイスのバッファからEOFになるまで1文字1文字を読み込む関数で
例えば次のプログラムを見ると
int ch;
while( (ch=getchar())!=EOF )
printf("%c %d\n",ch,ch);
getcharの動作が良くわかる
次に
int ch
while( (ch=getchar())!=EOF ){
printf("%c %d\n",ch,ch);
fflush(stdin);
}
を実行してみると"標準入力デバイスのバッファってのが良くわかるはず
適当にぐぐって
0018デフォルトの名無しさん
2006/01/18(水) 08:29:48ァ ∧_∧ ァ,、
,、'` ( ´∀`) ,、'`
'` ( ⊃ ⊂) '`
00199
2006/01/18(水) 08:33:55丁寧にどうもありです。調べて理解できるようにがんばります!
0020デフォルトの名無しさん
2006/01/18(水) 08:48:00[2] 問題文(含コード&リンク):
問題文自体は無いのですが、コンソール画面上で動く、サーバーとクライアントの通信をする
簡単なゲームプログラムに組み込むタイマー(カウントダウン)を作りたいのです。
仕様としては、サーバー側プログラムの起動時に、引数としてint型で時間の「分」(min)を渡すと、ゲームが開始し、
ゲーム中は画面の端に「mm:ss」と表示してカウントダウンしていく感じにしたいです。
そのタイマーが00:00になったとき、ゲームが終了するようにしたいです。
[3] 環境
[3.1] OS: Linux(RedHat7)
[3.2] コンパイラ名とバージョン: gcc (付属のもので、バージョンは分かりません)
[3.3] 言語: C
[4] 期限: 2006年1月18日 13時15分
[5] その他の制限: 標準ライブラリとmylib.hというヘッダを利用します。
【添付】http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1491.zip
mylib.hは添付のファイルの中にあり、純粋にコンパイルしたもののみ使う形です。
ゲーム自体は、添付のファイル内にあるtagというフォルダの中にある鬼ごっこプログラムです。
(他のフォルダ内のものは今回は使わないです。)
よろしくお願いしますm(_ _)m
0021デフォルトの名無しさん
2006/01/18(水) 09:15:14プログラミングB って大学ですか?
0022デフォルトの名無しさん
2006/01/18(水) 10:18:05[2] 問題文(含コード&リンク):
�@ 変数x,yにそれぞれ4と9を代入して,x/yを計算し,商sと余りrを出力するプログラムを作
成せよ。
�A sを入力し,sから100までの整数のうち7の倍数となる整数を出力するプログラムをfor文ま
たはwhile文を用いて作成せよ。
�B n円を入力した後,画面に「1・ドル 2・ユーロ 3・ウォン」と表示され,1,2,3のいず
れかの番号を入力すると,その指定した通貨の額にn円を換算するプログラムを作成せよ。
なお、為替レートは,ネットなどで調べること。
�C n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,それぞれの合計点を
計算した後,n人を合計点の小さい順に並び替え,出力するプログラムを作成せよ。ただし
,各科目の変数名をko,sy,su,ri,eiとし,配列名はtokutenとすること。
�D 10文字以内の文字列(英字)を入力し,母音(a,i,u,e,o)を取り除いた文字列を出力
するプログラムを作成せよ。(例:momotarou → mmtr)
[3] 環境
[3.1] OS: WindowsXP
[3.2] すいません。わかりません
[3.3] 言語: C
[4] 期限: [2006年01月25日24:00まで]
[5] その他の制限:特にありません。
5問もあって申し訳ありませんが、初心者なので難しいです。よろしくお願いします。
0023デフォルトの名無しさん
2006/01/18(水) 10:31:00ttp://pc8.2ch.net/test/read.cgi/tech/1136768567
�@�Aとかで検索するとすぐみつかるかもne♥
0025デフォルトの名無しさん
2006/01/18(水) 11:11:49�@ぐらいはがんがれ。
0026デフォルトの名無しさん
2006/01/18(水) 11:18:520027デフォルトの名無しさん
2006/01/18(水) 11:20:49[2] 問題文(含コード&リンク):50人のアルファベット表記の名前を、
(1)マージソート (2)クイックソート で辞書順にソートして出力する
プログラムを作成せよ。各プログラムのアルゴリズムも記述すること。
50人の名前は二次元配列で実現し、プログラム内で設定すること(ファイルから読み込むなどの処理は不要)。
[3] 環境
[3.1] OS: WindowsXP Pro
[3.2] コンパイラ名とバージョン: Borland C 5.5
[3.3] 言語: C
[4] 期限: 2006年1月18日19:00まで
[5] その他の制限: 特にありません。時間が迫っておりますのでよろしくお願いいたします。
002923
2006/01/18(水) 11:40:29�D小文字aiueoのみ対応
#include <stdio.h>
int main()
{
char s[10+1],*p;
fgets(s,10+1,stdin);
p=s;
while(*p!='\0'){
if(*p!='a'&&*p!='i'&&*p!='u'&&*p!='e'&&*p!='o')
putchar(*p);
*p++;
}
return 0;
}
0030loi ◆qMuXz8UNv6
2006/01/18(水) 11:56:03[2]• ファイルから数値データを読み込み,その数値の平均をファイルに書き込むプログラ
ムを作成する
• 数値データは全部で100行(ファイルには実際に100 行以上存在している)
• 数値データの入っているファイルは授業用HP にある.なおデータは実数である.
ファイル名: kadai.dat
• 平均を書き込むファイル名はheikin.dat とする.平均はすべてのデータ(600個)の平
均とする
[3] 環境
[3.1] Windows
[3.2] コマンドプロンプト 秀丸
[3.3]C
[4] 本日中
[5]
正直まったくわかりません。というか授業にでていないです。
でも単位が欲しいです。どうすれば課題を提出できるか教えてくれませんか?
お願いします。
0031loi ◆qMuXz8UNv6
2006/01/18(水) 11:57:36include "stdio.h"
/* file_read 関数は【】内を記述する */
double file_read( void )
{
【 】
int i, j;
double data[600];
double heikin;
【 】
for( i=0 ; i<600 ; i+=6 )
{
for( j=0 ; j<6 ; j++ )
【 】
}
for( i=0, heikin=0.0 ; i<600 ; i++ )
{
heikin += data[i];
}
heikin /= 600.0;
printf("heikin -> %lf\n",heikin);
【 】
return heikin;
}
/* file_write 関数の中身を全部記述すること */
void file_write( double heikin )
{
/* ここの中身を記述する */
}
0032デフォルトの名無しさん
2006/01/18(水) 12:00:070033デフォルトの名無しさん
2006/01/18(水) 12:12:00[2] 問題文(含コード&リンク):
[�T] n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
各科目の最高点を出力するプログラムを作成せよ。
ただし,各科目の配列名をjap,soci,math,sci,engとすること。
[�U] 5人の学生の4科目の試験の得点(1科目につき満点は100点)を入力する.
1人分入力する毎に「合計得点が240点以上で,
かつ各得点が40点以上であるとき合格とする」の条件で,合否を判定せよ.
[3] 環境
[3.1] OS: WindowsXP
[3.2] 初心者なんでわかりません。
[3.3] 言語: C かな。
[4] 期限: [2006年01月20日まで]
C言語難しくて、僕には全くわからないです。
よろしくお願いします!!!
0034デフォルトの名無しさん
2006/01/18(水) 12:18:11前スレに解答あります。
0035デフォルトの名無しさん
2006/01/18(水) 12:21:25kadai.dat っていうやつをアップして
0036デフォルトの名無しさん
2006/01/18(水) 12:27:57main()
{
int dec, bit, coef=0;
char hex[11]={0}, endchar;
do{
printf("10進法での数字を入力してください");
scanf("%d%c",&dec,&endchar);
printf("10進法の%3d\tは",dec);
while(dec!=0)
{
bit=dec%16;
dec/=16;
hex[coef] = "0123456789ABCDEF"[bit];
++coef;
}
printf("16進法では%10s\n",hex);
return;
} while(endchar!='*');
}
だと210がD2じゃなくて2Dってでるんですけどどこが間違ってますか?
0037デフォルトの名無しさん
2006/01/18(水) 12:36:17int a = 210;
printf( "\X\n", a );
0038デフォルトの名無しさん
2006/01/18(水) 12:43:20japだと
0039デフォルトの名無しさん
2006/01/18(水) 12:46:58なめんじゃねーぞ糞が
0040デフォルトの名無しさん
2006/01/18(水) 13:16:29あ、>>37 は
printf( "%X\n", a );
ね。失礼。
004136
2006/01/18(水) 13:37:52質問の仕方が悪かったです、
210だったら2D、258だったら201、280だったら811
というように1桁目>2桁目>3桁目というふうに出力されるのを直したくて質問しました。
前スレの854さんに教えていただいたのを実際に使うとこうなってしまい、今日提出なんで焦ってます。
0042デフォルトの名無しさん
2006/01/18(水) 13:39:420043デフォルトの名無しさん
2006/01/18(水) 13:52:10++coef ===> --coef
hex) ===> hex + coef + 1)
0044デフォルトの名無しさん
2006/01/18(水) 14:17:36004540
2006/01/18(水) 14:20:40printf のフォーマット使いたくないならこれでどう?
#include <stdio.h>
char *convert_base( unsigned n, unsigned base )
{
static char buf[ 1024 ];
char *end = buf + sizeof(buf) - 1;
char *expression = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
*end-- = '\0';
while ( buf != end ) {
*end = expression[ n%base ];
if ( n < base ) break;
n /= base; --end;
}
return end;
}
int main( void )
{
char buf[32];
int a;
while (1) {
fgets( buf, sizeof(buf), stdin );
if ( buf[0] == 'q' ) break;
sscanf( buf, "%d", &a );
printf( " %d\t%s", a, convert_base(a,2) );
printf( "\t%s", convert_base(a,8) );
printf( "\t%s\n", convert_base(a,16) );
}
}
0046デフォルトの名無しさん
2006/01/18(水) 14:29:48これで良いや。
#include<stdio.h>
int main()
{
int dec, bit, coef;
char hex[11]={0}, endchar;
do{
printf("10進法での数字を入力してください");
scanf("%d%c",&dec,&endchar);
printf("10進法の%3d\tは",dec);
for(coef=10;dec;dec/=16){
bit = dec%16;
hex[--coef] = bit["0123456789ABCDEF"];
}
printf("16進法では%10s\n",hex+coef);
}while(endchar!='*');
return 0;
}
0047デフォルトの名無しさん
2006/01/18(水) 14:38:01ガウス消去法
004830
2006/01/18(水) 15:22:401.3 4 0 0 36.179598 36.179598
1.3 4 0 0.1 36.238542 36.238542
1.3 4 0 0.2 36.238542 36.238542
1.3 4 0 0.3 36.238542 36.238542
1.3 4 0 0.4 35.268814 35.268814
1.3 4 0 0.5 35.022824 35.022824
1.3 4 0 0.6 36.626796 36.626796
1.3 4 0 0.7 38.423352 38.423352
1.3 4 0 0.8 42.404821 42.404821
1.3 4 0 0.9 50.056847 50.056847
1.3 4 0 1 56.29155 56.29155
1.3 4 0 1.1 63.364309 63.364309
1.3 4 0 1.2 69.133599 69.133599
1.3 4 0 1.3 73.891168 73.891168
1.3 4 0 1.4 77.865372 77.865372
1.3 4 0.1 0.1 36.238542 36.238542
1.3 4 0.1 0.2 36.238542 36.238542
1.3 4 0.1 0.3 36.238542 36.238542
1.3 4 0.1 0.4 35.126008 35.126008
1.3 4 0.1 0.5 35.149002 35.149002
1.3 4 0.1 0.6 37.415956 37.415956
1.3 4 0.1 0.7 39.538102 39.538102
1.3 4 0.1 0.8 44.041386 44.041386
1.3 4 0.1 0.9 52.435181 52.435181
1.3 4 0.1 1 58.998314 58.998314
1.3 4 0.1 1.1 66.336784 66.336784
1.3 4 0.1 1.2 72.194806 72.194806
1.3 4 0.1 1.3 76.944402 76.944402
1.3 4 0.1 1.4 80.857437 80.857437
004930
2006/01/18(水) 15:24:171.3 4 0.2 0.3 36.238542 36.238542
1.3 4 0.2 0.4 35.003256 35.003256
1.3 4 0.2 0.5 35.544757 35.544757
1.3 4 0.2 0.6 38.752023 38.752023
1.3 4 0.2 0.7 41.186905 41.186905
1.3 4 0.2 0.8 46.237783 46.237783
1.3 4 0.2 0.9 55.412151 55.412151
1.3 4 0.2 1 62.247766 62.247766
1.3 4 0.2 1.1 69.790496 69.790496
1.3 4 0.2 1.2 75.667226 75.667226
1.3 4 0.2 1.3 80.342333 80.342333
1.3 4 0.2 1.4 84.136243 84.136243
1.3 4 0.3 0.3 36.238542 36.238542
1.3 4 0.3 0.4 35.452965 35.452965
1.3 4 0.3 0.5 36.77885 36.77885
1.3 4 0.3 0.6 41.180944 41.180944
1.3 4 0.3 0.7 43.711862 43.711862
1.3 4 0.3 0.8 49.223951 49.223951
1.3 4 0.3 0.9 59.133336 59.133336
1.3 4 0.3 1 66.113423 66.113423
1.3 4 0.3 1.1 73.747224 73.747224
1.3 4 0.3 1.2 79.538658 79.538658
1.3 4 0.3 1.3 84.05313 84.05313
1.3 4 0.3 1.4 87.659236 87.659236
005030
2006/01/18(水) 15:25:131.3 4 0.4 0.5 38.388558 38.388558
1.3 4 0.4 0.6 44.500205 44.500205
1.3 4 0.4 0.7 46.779962 46.779962
1.3 4 0.4 0.8 52.761729 52.761729
1.3 4 0.4 0.9 63.546086 63.546086
1.3 4 0.4 1 70.61663 70.61663
1.3 4 0.4 1.1 78.302961 78.302961
1.3 4 0.4 1.2 83.945404 83.945404
1.3 4 0.4 1.3 88.23714 88.23714
1.3 4 0.4 1.4 91.595744 91.595744
1.3 4 0.5 0.5 44.451739 44.451739
1.3 4 0.5 0.6 51.347464 51.347464
1.3 4 0.5 0.7 51.347464 51.347464
1.3 4 0.5 0.8 57.603556 57.603556
1.3 4 0.5 0.9 69.419834 69.419834
1.3 4 0.5 1 76.38392 76.38392
1.3 4 0.5 1.1 83.987591 83.987591
1.3 4 0.5 1.2 89.329809 89.329809
1.3 4 0.5 1.3 93.259877 93.259877
1.3 4 0.5 1.4 96.259406 96.259406
005130
2006/01/18(水) 15:25:541.3 4 0.6 0.7 51.347464 51.347464
1.3 4 0.6 0.8 60.812886 60.812886
1.3 4 0.6 0.9 75.35268 75.35268
1.3 4 0.6 1 82.39328 82.39328
1.3 4 0.6 1.1 90.047312 90.047312
1.3 4 0.6 1.2 95.065067 95.065067
1.3 4 0.6 1.3 98.574162 98.574162
1.3 4 0.6 1.4 101.152511 101.152511
1.3 4 0.7 0.7 51.347464 51.347464
1.3 4 0.7 0.8 70.349869 70.349869
1.3 4 0.7 0.9 86.527557 86.527557
1.3 4 0.7 1 91.687356 91.687356
1.3 4 0.7 1.1 98.379777 98.379777
1.3 4 0.7 1.2 102.38411 102.38411
1.3 4 0.7 1.3 105.012379 105.012379
1.3 4 0.7 1.4 106.860022 106.860022
005230
2006/01/18(水) 15:26:291.3 4 0.8 0.9 100.859711 100.859711
1.3 4 0.8 1 100.859711 100.859711
1.3 4 0.8 1.1 106.202542 106.202542
1.3 4 0.8 1.2 108.970987 108.970987
1.3 4 0.8 1.3 110.632941 110.632941
1.3 4 0.8 1.4 111.735982 111.735982
1.3 4 0.9 0.9 100.859711 100.859711
1.3 4 0.9 1 100.859711 100.859711
1.3 4 0.9 1.1 108.970987 108.970987
1.3 4 0.9 1.2 111.735982 111.735982
1.3 4 0.9 1.3 113.099775 113.099775
1.3 4 0.9 1.4 113.904037 113.904037
1.3 4 1 1 100.859711 100.859711
1.3 4 1 1.1 116.846683 116.846683
1.3 4 1 1.2 116.846683 116.846683
1.3 4 1 1.3 116.846683 116.846683
1.3 4 1 1.4 116.846683 116.846683
0053デフォルトの名無しさん
2006/01/18(水) 16:14:140054デフォルトの名無しさん
2006/01/18(水) 16:28:40#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
static double next_double( FILE *fp, double *d )
{
char buf[256], *p = buf, c;
while ( !isdigit( c = fgetc(fp) ) )
if ( c == EOF ) return 0;
ungetc( c, fp );
while ( isdigit( c=fgetc(fp) ) || c == '.' )
*(p++) = c;
*p = 0;
*d = atof( buf );
return 1;
}
int main( void )
{
char *filename = "kadai.dat";
FILE *fp;
double sum = 0, d;
unsigned num = 0;
if ( NULL == ( fp = fopen( filename, "r" ))) return 1;
while ( next_double( fp, &d ) ) { sum += d; ++num; }
printf( "Sum: %lf\nNum: %u\nAverage: %lf\n", sum, num, (sum/num) );
fclose( fp );
return 0;
}
0055デフォルトの名無しさん
2006/01/18(水) 16:30:024行目: static double next_double( FILE *fp, double *d )
じゃなくて
訂正 : static int next_double( FILE *fp, double *d )
0056デフォルトの名無しさん
2006/01/18(水) 17:05:10うん、大学の宿題だけど・・・ほとんどの人がそうじゃないの?
0057デフォルトの名無しさん
2006/01/18(水) 17:14:370058デフォルトの名無しさん
2006/01/18(水) 17:29:210059デフォルトの名無しさん
2006/01/18(水) 17:36:23同名の講義あるが俺の所はパスカルだな
006027 ◆bgdlxVqI.o
2006/01/18(水) 17:41:310061デフォルトの名無しさん
2006/01/18(水) 17:49:060062デフォルトの名無しさん
2006/01/18(水) 17:51:48アルゴリズムの単位が貰えるなんてどう考えてもおかしいよな
0063デフォルトの名無しさん
2006/01/18(水) 18:27:030064デフォルトの名無しさん
2006/01/18(水) 18:43:100065デフォルトの名無しさん
2006/01/18(水) 19:11:03一応、あれの実装は処理系定義じゃなかったっけ?
0066デフォルトの名無しさん
2006/01/18(水) 19:16:14ISO/IEC 9899:1999には、その件については何も書かれてないな。
0067デフォルトの名無しさん
2006/01/18(水) 19:33:25かなり頑張った。
0068デフォルトの名無しさん
2006/01/18(水) 19:34:32[2] 問題文: 1.入力用テキストファイルに番号、2科目の得点(0〜100)
を用意する。データ数は5。
2.↑のデータを出力用テキストファイルに出力する。
3.副プログラムを利用し、2科目それぞれの合計点と平均点を出力ファイル
の2.の続きに出力する。(ポインタ変数を扱い、主プログラム
とは別に記憶し、includeする。)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: わかりません
[3.3] 言語: C++
[4] 期限:本日中
たらない頭を使って考えましたがわかりませんでした。
よろしくお願いします!!
006927 ◆bgdlxVqI.o
2006/01/18(水) 19:35:22この他にもあって他は出来てるんですがどうしてもこれだけできないんです
0070デフォルトの名無しさん
2006/01/18(水) 19:46:05来年、もう一度受けろや
そんなのが理解できないならオワットル
0071デフォルトの名無しさん
2006/01/18(水) 20:10:14ここで出てる課題ってクイックソートよりだいぶ程度が低いのが多いけどな。
クイックソートtは結構面倒くさい。
むしろクイックソートが自力で実装できるようになれば、Cは大体理解できてると思う。
0072デフォルトの名無しさん
2006/01/18(水) 20:10:23んなら、50人分のアルファベット表記の名前リストだけ作って
>>1の所にでもうpしれ。
手持ちのマージソートルーチンとクイックソートルーチンを
くっつけてみるから。
0073むう
2006/01/18(水) 20:10:47[2] 問題文:配列[2][2]にそれぞれ0か1が格納されている。
[0][0] [1][0] [2][0]
[0][1] [1][1] [2][1]
[0][2] [1][2] [2][2]
0なら上下左右に移動でき、1なら移動できない。そのとき現在地と目的地を入力し
目的地まで最短で移動するプログラムを作成せよ。出力は「↑に移動する。→に移動する。→に移動する。↑に移動する」というようにする事
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Windows For BC++
[3.3] 言語:C
[4] 期限:無期限
よろしくおねがいします
0074デフォルトの名無しさん
2006/01/18(水) 20:10:55[2] 問題文: 整列されたn 個の数列から二分探索でデータを探索する場合、
与えるデータによって比較する回数は異なるはずである。
そこで、nを1〜10万まで変化させ、その都度、最悪の比較回数を求めるプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 1月23日
[5] その他の制限:
0075デフォルトの名無しさん
2006/01/18(水) 20:11:370076デフォルトの名無しさん
2006/01/18(水) 20:14:46[2] 問題文:CGIを使ったプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 1月23日
[5] その他の制限: CGIを使っていればどういうプログラムでもいいです。
よく分からないので、お願いいたします。
0077デフォルトの名無しさん
2006/01/18(水) 20:17:03http://www.kumei.ne.jp/c_lang/intro/no_80.htm
0078デフォルトの名無しさん
2006/01/18(水) 20:18:38ありがとうございます
0079デフォルトの名無しさん
2006/01/18(水) 20:21:11もう少し複雑なプログラムとかもありますか?
>>76に書き忘れたのですが、あと2つCGIプログラムを作らない
といけないらしいです
0080デフォルトの名無しさん
2006/01/18(水) 20:28:140081デフォルトの名無しさん
2006/01/18(水) 21:08:16C++?
Cじゃないの?
本当にC++?
ウソじゃない?
0082デフォルトの名無しさん
2006/01/18(水) 21:14:58>>46
ありがとうございました、助かりました
0083デフォルトの名無しさん
2006/01/18(水) 21:43:27ウソではないですよ??
C++です
0084デフォルトの名無しさん
2006/01/18(水) 21:44:25C と C++ の区別が出来てますか、ということね。
文字を出力するのに使うのは printf と習ったか、cout と習ったか、どっち?
0085デフォルトの名無しさん
2006/01/18(水) 21:51:25coutと習いましたよ
0086デフォルトの名無しさん
2006/01/18(水) 21:54:02と習いましたか?
#include <iostream>
と習いましたか?
0087デフォルトの名無しさん
2006/01/18(水) 21:54:05この問題を解くのに、
そんなにCとC++の違いが影響するのか?
0088デフォルトの名無しさん
2006/01/18(水) 21:55:120089デフォルトの名無しさん
2006/01/18(水) 21:55:49やっぱりCで書いてって言われたことある。
0090デフォルトの名無しさん
2006/01/18(水) 21:57:12#include<iostream.h>と習いました
0091デフォルトの名無しさん
2006/01/18(水) 22:03:30標準C(C89)はけっこう普及しとるようだが。
0092前スレ920
2006/01/18(水) 22:10:10なんのお礼も出来ませんが、とりあえずぬこ置いてきます
ttp://www.uploda.org/uporg289807.jpg
0093デフォルトの名無しさん
2006/01/18(水) 22:11:042分探索 真面目に書くのメンドクセ。
#include<stdio.h>
unsigned ulog2(unsigned int n){
unsigned r=0,i=16;
do if(n>>i)n>>=i,r+=i;while(i>>=1);
return r;
}
int main(void){
int i;
printf("数列の要素数 最悪の比較回数\n");
for(i=1;i<=100000;++i)printf("%12d%16d\n",i,ulog2(i)+1);
return 0;
}
0094デフォルトの名無しさん
2006/01/18(水) 22:42:17EUCコードでひらがな「あ」は(164,162)の2バイトです。
文字→EUCコード数値への変換プログラムはできたのですが、
逆(EUCコード数値→文字)ができません・・・
つまり
(164,162) を入力して「あ」に変換するにはどうすればいいのでしょうか?
お願いします。
0095デフォルトの名無しさん
2006/01/18(水) 22:45:52ありがとうございます
助かりました
0096デフォルトの名無しさん
2006/01/18(水) 22:50:47いわれのない非難だが、コラっぽい笑顔がムカつく_| ̄|○
名前忘れた関西系の大御所漫才師みたい
0097デフォルトの名無しさん
2006/01/18(水) 22:53:19これでいいのかな?
int main(void)
{
int a,b;
::printf("code1 code2->");
::scanf("%d%d",&a,&b);
char s[3] = {(char)a,(char)b,0};
::printf("->");
::printf(s);
::system("pause");
return 0;
}
0098デフォルトの名無しさん
2006/01/18(水) 22:55:36#include <stdio.h>
int main( void )
{
char a = 164, b = 162;
printf("%c%c\n", a, b );
return 0;
}
>>96
気になるから是が非でも名前を思い出してくれ。
てゆかこの画像有名だよね。
0099デフォルトの名無しさん
2006/01/18(水) 22:56:16C++でCを書くなよw
0100デフォルトの名無しさん
2006/01/18(水) 22:58:000101デフォルトの名無しさん
2006/01/18(水) 23:01:09って、DOS プロンプトで EUC でるかよ
「これでいい?」とかいって、いいわけない
0102デフォルトの名無しさん
2006/01/18(水) 23:06:25つるべ?
0103デフォルトの名無しさん
2006/01/18(水) 23:08:020104デフォルトの名無しさん
2006/01/18(水) 23:10:02systemは消して。
0105デフォルトの名無しさん
2006/01/18(水) 23:11:51今や鶴瓶も.NETですよw
0106デフォルトの名無しさん
2006/01/18(水) 23:23:12[2] 問題文(含コード&リンク):
list<int> 型の要素全ての和を求める関数 int sumlist(list<int>&) を定義して下さい.
#include <iostream>
#include <list>
using namespace std;
int main(){
list<int> lst;
for(int i=0 ; i < 10 ; i++)lst.push_back(i);
cout << "size =" << lst.size() << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
for(list<int>::iterator it = lst.begin(); it != lst.end() ;){
if((*it) % 3 == 0){
it = lst.erase(it);
}
else {
++it; } }
for(list<int>::iterator it = lst.begin(); it != lst.end() ; ++it)
cout << *it << ' ';
cout << endl;
return 0;}
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ
[3.3] 言語: C++
[4] 期限: 1月23日
[5] その他の制限:
0107むう
2006/01/18(水) 23:26:54すいません。スルーされそうなのでどなたか
お願いします。
自分では何やっていいか全くわからずです…。
友達は「幅優先探索」使えばいーんじゃねー?とか言ってたんですが
それも意味不明です・・。
0108デフォルトの名無しさん
2006/01/18(水) 23:41:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1496.zip
いや、まず謝っておく。すまない。
2科目をまとめて構造体に突っ込んだのが失敗だった。
おかげで複雑になってしまった。
問題文にポインタ変数を扱い〜って書いてあるけど、直接は扱ってない。
iteratorがポインタだと言い張ればOK。
理解するより自分で書いた方が早そうな予感。
0109デフォルトの名無しさん
2006/01/18(水) 23:41:35幅優先探索ってのはある地点(A)から1回で移動可能な全ての場所に行ってみて
その中でゴールがあれば終了。この時点でA→どこかってのが全部探索できた
次にゴールにどれも達してなければ、それぞれの地点(Bn)からまた1回で移動できる
全ての地点へ行ってみて同様の判定をする。これでA→Bn→どっかを探索終了
これを繰り返していくのが幅優先探索
対照的なのに深さ優先ってのがあるが、これはとりあえずA→Bと決めたら
後はそれをひたすら終端まで探った上で、ダメなら一段戻ってまた最後まで
ってのをひたすら繰り返す
無期限ならとりあえず自力で思うように作ってみれ
そっちの方が自分のためにもなる
>>106
前スレで俺が答えた
あれで不満なら氏ね
0110デフォルトの名無しさん
2006/01/18(水) 23:44:08[2] 問題文(含コード&リンク):
学籍番号と試験の点数のペアーを入力するものとする(「0 0」を入力すると終了し,データ数は100以下である)。
なお,データは,学籍番号順に入力されるわけではない。
このとき,試験の点数の上位11人の学籍番号と試験の点数を,点数が高い順に出力するプログラムを書け。
ただし,同じ点数の学生がいた場合は,最初に入力されたデータを優先するものとする。
結果は,学籍番号と点数を1つ以上のスペースで区切り,1行に一人ずつ出力せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。よろしくお願いします。
0111デフォルトの名無しさん
2006/01/19(木) 00:02:19[2] 問題文(含コード&リンク):
文字列(空白含まない)の子音だけを取り出す関数getconsntを作成せよ。
getconsntの引数は2つ。第1引数は対象の文字列、
第2引数は作成される(子音だけの)文字列を入れる配列とせよ。
例
char ans[100];
.....
getconsnt("Doraemon",ans);
printf("%s\n",ans)
↓
Drmnと表示される
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語:C
[4] 期限:1月23日まで
[5] その他の制限:
初心者にも分かるような簡単なプログラムでお願いします。
出来れば解説コメントがあるととても助かります。_(._.)_
0112デフォルトの名無しさん
2006/01/19(木) 00:09:47#include <list>
#include <numeric>
int sumlist(std::list<int>& src) {
return std::accumulate(src.begin(), src.end(), 0);
}
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/761
のどこが不満だったのかが書かれない限り君の求める答えは
出ない。
0113デフォルトの名無しさん
2006/01/19(木) 00:11:22http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1497.txt
>>109
ありゃガイシュツだったかスマソ。
>>69
ついに名前50人分のリストは上がらなかったな。もう寝るぞ。プログラムは完成
してて、後は名前を入れるだけだったんだが。
0114デフォルトの名無しさん
2006/01/19(木) 00:12:28そいつは俺もすぐに思いついたが、一応ループにしたのが>>113。
確かに出題条件を読むと、アルゴリズムを使ってはいけないとは
どこにも書いてないもんな。
0115デフォルトの名無しさん
2006/01/19(木) 00:15:59できるかぎり分かりやすく書いた
#include <stdio.h>
int isvowel( char c )
{
const char vowels[] = "aeiouAEIOU", *p;
for ( p = vowels; *p; ++p )
if ( *p == c ) return 1;
return 0;
}
void getconsnt( const char *str, char *ret )
{
for ( ; *str; ++str ) {
if ( isvowel( *str ) ) continue;
*ret++ = *str;
}
*ret = 0;
}
int main( void )
{
char ans[100];
getconsnt("Doraemon",ans);
printf("%s\n",ans);
return 0;
}
0116デフォルトの名無しさん
2006/01/19(木) 00:23:23俺もわかりやすく書いたつもり
#include <stdio.h>
void getconsnt(const char* src, char* dest) {
/* srcのそれぞれの文字に対して処理を順番に行う。 */
do {
switch(*src) {
case 'a': case 'i': case 'u': case 'e': case 'o':
case 'A': case 'I': case 'U': case 'E': case 'O':
/* aiueoのいずれかなら何もしない */
break;
default:
/* aiueo以外ならsrcからdestに文字をコピーし、destを1文字進める */
*dest = *src; dest++;
break;
}
} while (*src++ != '\0'); /* いずれにせよ、srcを1文字進める */
}
int main(void) {
char ans[100];
getconsnt("Doraemon", ans);
printf("%s\n", ans);
return 0;
}
0117デフォルトの名無しさん
2006/01/19(木) 00:30:09(C++がわかっていれば)わかりやすく書いたつもり
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1498.txt
0118デフォルトの名無しさん
2006/01/19(木) 00:33:22011927 ◆oHb7yqS7OQ
2006/01/19(木) 00:41:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1500.txt
よろしくお願いいたします。
0120110
2006/01/19(木) 00:52:05ありがとうございます。
マヌケな質問とは思いますが出力する数字を左詰めにするにはどうすれば良いでしょうか?
大学に送信すると自動的に適当な数字を入力して正否を確認してくれるのですが
どうやら出力する答えは左詰めで
番号 点数
番号 点数
となっていないとないと間違い扱いになるみたいです。
私には>>117のプログラムは難しくてほとんど手を付けれ無いのでよろしくお願いします。
0121デフォルトの名無しさん
2006/01/19(木) 01:01:47operator<の動きが直感に反するので、
通常の比較にして、stable_sortにはrbegin(),rend()を渡すほうがよいかと。
0122デフォルトの名無しさん
2006/01/19(木) 01:05:01単純に出力する方法
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1501.txt
短いコードだけど、これを完璧に理解するのは大変だと思うので、
理解してもらわなくてヨシ。
0123デフォルトの名無しさん
2006/01/19(木) 01:07:09そういわれれば。気をつけるよ。
0124デフォルトの名無しさん
2006/01/19(木) 01:09:53[2] 問題文(含コード&リンク):
打ち込んだ式を計算する、* / ( )等の優先順位を含む四則演算のプログラムを作れ。
ただし、イコールキー(=)を押下した時点で答えをイコールの右に表示させること。
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 2006年01月27日09:00まで
[5] その他の制限: 特になし。よろしくお願いします
0125デフォルトの名無しさん
2006/01/19(木) 01:13:500126デフォルトの名無しさん
2006/01/19(木) 01:19:40[2] 問題文(含コード&リンク):
次のintの配列に格納されている整数がある、キーボードから整数値を入力。
入力した整数が配列にあるかをディスプレイに表示するプログラムを作成せよ。
int a[] = {15 10 5 1 8 21 5 18 ];
[3] 環境
[3.1] OS: Windows
[3.2] VC
[3.3] 言語:C
[4] 期限: ([2006年01月19日12:00まで]
[5] その他の制限: サーチにちょっと触れた所までです。
サーチの授業の予習として出されたのですが分かりません。
どうかよろしくお願いいたします。
0127デフォルトの名無しさん
2006/01/19(木) 01:24:31#include<stdio.h>
int main(void){
int a[] = {15,10,5,1,8,21,5,18};
int x,i;
scanf("%d",&x);
for(i=0;i<8;i++)
if(a[i]==x){
printf("%d番目に%dはある\n",i+1,x);
return 0;
}
puts("無いな");
return 0;
}
0129デフォルトの名無しさん
2006/01/19(木) 01:35:37別解。
#include <algorithm>
#include <iostream>
#include <iterator>
#include <vector>
struct student {
int student_num, score;
};
std::ostream& operator<<(std::ostream& ost, const student& rhs) {
ost << rhs.student_num << ' ' << rhs.score;
return ost;
}
std::istream& operator>>(std::istream& ist, student& rhs) {
ist >> rhs.student_num >> rhs.score;
return ist;
}
bool operator<(const student& lhs, const student& rhs) {
return lhs.score < rhs.score;
}
int main() {
std::vector<student> container;
for (int count = 0; count < 100; ++count) {
student input;
std::cin >> input;
if (input.student_num == 0 && input.score == 0) break;
container.push_back(input);
}
std::stable_sort(container.rbegin(), container.rend());
std::copy(container.begin(), container.begin() + std::min(std::vector<student>::size_type(11), container.size()), std::ostream_iterator<student>(std::cout, "\n"));
return 0;
}
0130デフォルトの名無しさん
2006/01/19(木) 01:39:26それは環境依存な内容で、与えられた環境のコンソールを使って
標準Cを使っては実現できない。参考までに以前出した電卓をどぞ。
#include <stdio.h>
int error_code; double expr(FILE *fp); double term(FILE *fp); double fact(FILE *fp);
double expr(FILE *fp) {
double ret = term(fp); int ope;
while ((ope = fgetc(fp)) == '+' || ope == '-') if (ope == '+') ret += term(fp); else ret -= term(fp);
ungetc(ope, fp);
return ret;
}
double term(FILE *fp) {
double ret = fact(fp), temp; int ope;
while ((ope = fgetc(fp)) == '*'|| ope == '/' || ope == '%') if (ope == '*') ret *= term(fp); else if ((temp = term(fp)) != 0.) if (ope == '/') ret /= temp; else ret = (int)ret % (int)temp; else ret = error_code = 1;
ungetc(ope, fp);
return ret;
}
double fact(FILE *fp) {
double d; int parenthesis;
if (fscanf(fp, "%lf", &d) == 1) return d;
else if ((parenthesis = fgetc(fp)) =='(') {
d = expr(fp);
if ((parenthesis = fgetc(fp)) != ')') return error_code = 2; else return d;
}
else return error_code = 3;
}
int main(void) {
double d; error_code = 0; d = expr(stdin);
if (!error_code) printf("result:%lf", d);
else printf("error code:%d", error_code);
}
0132デフォルトの名無しさん
2006/01/19(木) 01:49:21横から。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1502.txt
ポインタが理解できないと言われても困るが・・・・・
何とか頑張って理解してくれ。
0133デフォルトの名無しさん
2006/01/19(木) 07:40:070134デフォルトの名無しさん
2006/01/19(木) 08:24:32ありがとうございました!!
iteratorがポインタだと言い張り提出しました
0135デフォルトの名無しさん
2006/01/19(木) 09:52:09[2] 問題文(含コード&リンク):
キーボードからファイル名を読み込み、そのファイル中の数字、文字の個数を
カウントして画面に表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] borland
[3.3] C
[4] 期限: 2006年1月20日16:00まで
[5] その他の制限: 特になし
これ出さないと単位がやばいのに、さっぱり分かりません。
お願いします。
0136デフォルトの名無しさん
2006/01/19(木) 09:54:280137デフォルトの名無しさん
2006/01/19(木) 10:07:01文字コードはアスキーコードです。
0138デフォルトの名無しさん
2006/01/19(木) 10:57:18#include <stdio.h>
#include <ctype.h>
int main()
{
long ch[256] = {0};
char fn[256];
int in;
FILE *fp;
printf("INPUT FILENAME>>");scanf("%s",fn);
if ((fp = fopen(fn, "r")) != NULL) {
while ((in = getc(fp)) != EOF) ch[in]++;
for (in = 0; in <= 255; in++) if(isalnum(in) && ch[in] != 0) printf("%c %ld\n",in,ch[in]);
fclose(fp);
}
return 0;
}
こんなもんかな?あまりチェックしてないからバグあったら自分でなんとかしてくれ。
0139デフォルトの名無しさん
2006/01/19(木) 11:15:33ありがとうございます。ちゃんと動きました。
ただ、文字数の合計を表示するには、どうすればいいのでしょうか?
0140デフォルトの名無しさん
2006/01/19(木) 11:17:11・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0141デフォルトの名無しさん
2006/01/19(木) 11:19:230142デフォルトの名無しさん
2006/01/19(木) 11:23:47long ch = 0;
char fn[256];
int in;
FILE *fp;
printf("INPUT FILENAME>>");scanf("%s",fn);
if ((fp = fopen(fn, "r")) != NULL) {
while ((in = getc(fp)) != EOF) if(isalnum(in)) ch++;
printf("数字、文字の個数=%ld\n",ch);
fclose(fp);
}
return 0;
0143デフォルトの名無しさん
2006/01/19(木) 11:29:45#include <stdio.h>
int main(void)
{
int i;
char name[256];
printf("名前を入力 < ");
gets(name);
printf("回数を入力 < ");
scanf("%d",&i);
for (;i>0;i--){
printf("%s君、大好き\n",name);
}
return 0;
}
これでどうだ?
後は自分の想像力でw
0144デフォルトの名無しさん
2006/01/19(木) 11:50:35ありがとうございます。
何とか進級できそうです。
0145デフォルトの名無しさん
2006/01/19(木) 14:25:01難しいと退屈だな。
誰か初心者向けの問題だしてくれ。
スレ違いだったらスマン
0146デフォルトの名無しさん
2006/01/19(木) 14:28:43過去スレにいくらでもあるだろ
かってに探してやれよ
0147デフォルトの名無しさん
2006/01/19(木) 14:36:48[2] 問題文(含コード&リンク): http://omegaterritory.fc2web.com/
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 早ければ早いほど嬉しいです。遅くて1月22日まで
[5] その他の制限: できるだけ分かりやすいプログラムでお願いしますm(__)m
プログラムはメールにてお願いします。[email protected] へ
0148デフォルトの名無しさん
2006/01/19(木) 14:34:43ダイアログベースで別ウインドウを開いてグラフを表示させたいんですけど
ウインドウを開くコマンドってなんですか?
0149デフォルトの名無しさん
2006/01/19(木) 14:47:57int main( int argc, char **argv )
{
Gtk::Main kit( argc, argv );
Gtk::Window window;
Gtk::Main::run( window );
return 0;
}
0150デフォルトの名無しさん
2006/01/19(木) 14:51:56きしゅつ
0151デフォルトの名無しさん
2006/01/19(木) 15:33:29想像力使っていいならこれで十分だな.
#include <stdio.h>
void main(){puts("んっ…ぅ…ぁん…");}
0152デフォルトの名無しさん
2006/01/19(木) 15:39:35>>118の宿題は片付いたw
0154デフォルトの名無しさん
2006/01/19(木) 16:19:19[2] 問題文(含コード&リンク):
九九を
1×1=1
1×2=2
1×3=3
・
・
・
と言うように9の段まで、1〜9の間で入力された数字の九九を表示させたいです。
始めて1週間も経っていない超初心者なので、
お手柔らかにお願いします。
for文を使って九九は出来ましたが、うまく
6×5=30
と言う形にできません。
よろしくお願いします。
[3] 環境
[3.1] OS: Windows
[3.2] VisualC++ 6.0
[3.3] 言語: C++
[4] 期限: 今日中
[5] その他の制限: 関数をちょっとかじった辺りまでです。
0155デフォルトの名無しさん
2006/01/19(木) 16:29:06{
int i, j;
for(i=1;i<=9;i++){
for(j=1;j<=9;j++){
printf("%d*%d=%d\r\n", i, j, i * j);
}
}
return 0;
}
だれか、未解決の宿題まとめて。
0156ヘタレ ◆bNzmQqyF1I
2006/01/19(木) 16:30:09[1] 授業単元:プログラミングおよび演習
[2] 問題文(含コード&リンク): 培風館の「VisualC++で学ぶプログラミング」よりP93問題18
配列のデータを昇順(小さい順)に並び替える関数を作りなさい。
ただし、次の誕生日をデータとし、月と日を2つの配列に入力してから、関数を呼び出して並べ替えなさい
なお、入力形式は月/日とし、/をデータの区切りとして、以下の5件の誕生日データを入力しなさい
誕生日データ:09/15 03/21 12/31 05/05 04/29
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual C++と言うソフト使ってますがよくわからないです
[3.3] 言語: C++?
[4] 期限: 2006年01月20日 明日提出です。前日にやればいいとかなめてました…orz
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1504.txt
行先頭がQの行以外はヒントとして先に提示され
Qの部分が課題で、一応自分なりに入れてみたけれども動かないです
0157デフォルトの名無しさん
2006/01/19(木) 16:30:11自己解決しました。
お騒がせしましたm(_ _)m
0158デフォルトの名無しさん
2006/01/19(木) 16:33:360159デフォルトの名無しさん
2006/01/19(木) 16:34:25どんまい
>>157
ちゃんと謝れよ。非常識なヤツだ。
0160デフォルトの名無しさん
2006/01/19(木) 16:42:18関数そのものを作れって?
ソートのアルゴリズムは?
何でも良いならバブルソートなら超簡単だからぐぐって自分でやってみ
マージソートやクイックソートはちと複雑だがな
0161156
2006/01/19(木) 16:57:59今回もそれでいいと思います。
今自分でもどこがダメなのか考えてるので、とりあえずソートの部分調べて作ってきます
0162デフォルトの名無しさん
2006/01/19(木) 16:59:280163デフォルトの名無しさん
2006/01/19(木) 17:00:12ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1505.c
コンパイルしていないけど大丈夫だと思う。
0164デフォルトの名無しさん
2006/01/19(木) 17:13:260165デフォルトの名無しさん
2006/01/19(木) 17:18:060166156
2006/01/19(木) 17:18:11ありがとうございます
やってみたところ
順番は並び変わっていたのですが、結果が
3/-858993460
4/-858993460
5/-858993460
9/-858993460
12/-858993460
と、全部の日付が-858993460とかなっちゃって…ショボン(´・ω・`)
問題で出されたQの部分で書き換えていただいた所は自分で理解できたと思うのですが…日付の表示の原因がわからないです
もしかして、どこか先にヒントとして提示されていた部分のコピペが間違っていたのでしょうか…?
0167デフォルトの名無しさん
2006/01/19(木) 17:19:450168デフォルトの名無しさん
2006/01/19(木) 17:20:240169デフォルトの名無しさん
2006/01/19(木) 17:22:23×for(i=0;i<5;++i) printf("%02d/%02d\n",mm[i],dd[j]);
~~
○for(i=0;i<5;++i) printf("%02d/%02d\n",mm[i],dd[i]);
[j]と[i]の違いです。
0170156
2006/01/19(木) 17:28:59!! ありがとうございます 明日文句言ってきます
てかなんで自分で気づかなかったんだろう…
ともかくこれで完成のはず(`・ω・´)
結果
3/15
4/21
5/31
9/ 5
12/29
日付の方だけが何故か入力した順番そのまま出てきてるようです…ナズェダ(´・ω;;:;,.
0171デフォルトの名無しさん
2006/01/19(木) 17:33:01scanf("%s",str);
として日付を文字列として受け取って
sscanf(str,"%d%c%d",&month,&temp,&date);
みたいな使い方をすればコードが簡単になると思う
いやごめんね
0172デフォルトの名無しさん
2006/01/19(木) 17:35:01私にもわけ和漢ね。教授にも間違いはあったんだし文句はいわんだろ。
0173デフォルトの名無しさん
2006/01/19(木) 17:43:41Q部分以外は変えてないはず
最後を除いてw
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1507.txt
原因は多分sort()の同じ月のとこ
0174156
2006/01/19(木) 17:44:23えと…スイマセン、sscanfとか多分習ってないです。持ってるテキストにも載ってなかったですorz
もっと勉強してやり方がわかってから使わせていただきます。ありがとうございます
>>172
了解です。このまま出して、あとは質問してきます
自分ひとりでは、どこが間違っているかわからなかったのでとても助かりました。本当にありがとうございます
また演習でどうしてもわからなかったときは質問に来るかもしれないので
そのときはよろしくお願いします
0175156
2006/01/19(木) 17:56:33おぉ、ありがとうございます。試してみます
結果
3/15
4/21
5/31
9/ 5
12/29
sort()の同じ月の場合のところにif(dd[i]>dd[j]){}をはさんだのはわかったのですが
結果変わらず…orz
0176173
2006/01/19(木) 17:57:16月だけスワップして、日付変えてないでヤンスw
if(mm[i]>mm[j]){
Q work1=mm[j];
Q mm[j]=mm[i];
Q mm[i]=work1;
Q work2=dd[j]; //ここ追加
Q dd[j]=dd[i]; //
Q dd[i]=work2; //
}
}
0177156
2006/01/19(木) 18:08:14sort()内の
if(mm[i]>mm[j]){
Q work1=mm[j];
Q mm[j]=mm[i];
Q mm[i]=work1;
のあとに
Q work2=dd[j]; //ここ追加
Q dd[j]=dd[i]; //
Q dd[i]=work2; //
}
}
を入れて試してみましたが…変わりません……日付だけ並び変わらないです
自分の入れるところが間違ってるのでしょうか???
0178173
2006/01/19(木) 18:16:17ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1508.txt
そのままコンパイル通るようにQをdefineしてるのは内緒だ。
0179156
2006/01/19(木) 18:24:33おおおできました!できましたよ!
if(mm[i]>mm[j]){のなかでもdd[]の日付を並び替えないといけないんですね
色々時間を取らせてしまってスイマセン。これで心配事が一つ減りました
本当に助かりました。ありがとうございます
0180age
2006/01/19(木) 19:00:010181163
2006/01/19(木) 20:20:01気になってしょうがない
0182173
2006/01/19(木) 20:25:18,〜'´ ̄ヽ
ミハ^^ヽヽ( | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ル ゚∀゚)ζ< 宿題なんだから
, -|  ̄ll~|- 、 | 先生の意向に従っていただこうッ!!
.〈 イ 〈 |___________________
0183163
2006/01/19(木) 20:28:48少なくとも敬おうとは思わない、寝ながら講座開いてんじゃねーよ。
0185デフォルトの名無しさん
2006/01/19(木) 21:17:56もしくは57代目の852さん再アプお願いします。
0186デフォルトの名無しさん
2006/01/19(木) 21:37:18[2] 問題文:次のような英小文字の「変換規則」が複数個入ったファイルを用意する。例えばruleとする。
a -> b
b -> c
b -> x
c -> z
変換規則のファイル名、及び「開始文字」を入力し、変換規則を可能な限り使い、変換できなくなるまで変換の過程を出力せよ。何通りもある場合はせべて出力せよ。ただし、変換過程にループがある場合にはその旨を表示して終了すること。
〜例1〜
変換規則のファイル:rule
開始文字:a
出力:
[1]a -> b -> c -> d
[2]a -> b -> x
〜例2〜
変換規則の例
a -> b
b -> a
開始文字:a
出力:ループがあります。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語:C
[4] 期限:2006年1月22日まで
[5] その他の制限:特にありません。
まるで分かりません。助けて下さい…OTL
できるだけ分かりやすいプログラムだとありがたいです。
0187デフォルトの名無しさん
2006/01/19(木) 21:39:18僕にもさっぱり分かりません。
0188デフォルトの名無しさん
2006/01/19(木) 21:45:45a -> a
だけでいいじゃん
0189デフォルトの名無しさん
2006/01/19(木) 21:59:06問題の意味が、サップです
0190デフォルトの名無しさん
2006/01/19(木) 22:04:180191デフォルトの名無しさん
2006/01/19(木) 22:21:130192デフォルトの名無しさん
2006/01/19(木) 22:32:03今でも廃れていない。
0193デフォルトの名無しさん
2006/01/19(木) 22:57:39もう忘れた。
0194デフォルトの名無しさん
2006/01/19(木) 23:16:14するって問題らしいな。
0195デフォルトの名無しさん
2006/01/19(木) 23:19:03要素数を先にスキャンして、何×何の行列を確保するか調べて
おく必要があるな。そこに気をつければ割と簡単かも。
0196デフォルトの名無しさん
2006/01/19(木) 23:22:56[2] 問題文(含コード&リンク):
全部で20個の整数データを順に入力するものとする。
その際,各データを入力する毎に,新たに入力されたデータが,すでに入力されたデータと異なる場合だけ,
そのデータを出力するプログラムを書け。
なお,データは,1行に1つずつ出力せよ.
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特になし。よろしくお願いします。
0197デフォルトの名無しさん
2006/01/19(木) 23:24:25Warshal 推移閉包 でぐぐってみると良い。
0198デフォルトの名無しさん
2006/01/19(木) 23:35:17#include<set>
#include<iostream>
int main(){
using namespace std;
set<int> sets;
for(int i=0,j;i<20 && cin >> j;sets.insert(j),++i)
if(!sets.count(j))cout << j << endl;
}
0199デフォルトの名無しさん
2006/01/19(木) 23:44:04forの条件式には、本当の意味での条件式のみを入れて
読み取りなどはループ本体に書けと何かの本で見た希ガス
0200198
2006/01/19(木) 23:53:18となるとこんな感じかな。
#include<set>
#include<iostream>
int main(){
using namespace std;
set<int> sets;
for(int i=0,j ; i < 20 ; ++i)
if(!(cin >> j))break;
else if(sets.insert(j).second)cout << j << endl;
}
0201デフォルトの名無しさん
2006/01/20(金) 00:16:31[2] 問題文(含コード&リンク):
引数xのn乗を返す関数my_pow設計せよ。ただし、引数の型はx:double,n:int
とし、戻り値はdoubleとする。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月21日でお願いします。
[5] その他の制限:特にないです。
0202デフォルトの名無しさん
2006/01/20(金) 00:21:19かなり適当。入力チェックは皆無。出力形式もいい加減だから自分で適当に直して。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1511.txt
0203デフォルトの名無しさん
2006/01/20(金) 00:24:15適当に
double my_pow(double x,int n){
double r = 1;
unsigned u = n;
if(n<0)u = -n,x = 1/x;
do if(u%2)r *= x;while(x *= x,u/=2);
return r;
}
0204デフォルトの名無しさん
2006/01/20(金) 00:24:26double my_pow(double x, int n)
{
int i = 0;
double base = 1;
for(i = 0; i < n; ++i)
base *= x;
return base;
}
[2] 問題文(含コード&リンク):
1,2,3,4,5,6,7,8,9を一つずつ使ってできる9桁の数(例えば294618375など)をyとする。
また、xを正の整数とする。
そこで、y=x*x が成り立つyとxの値をそれぞれ求め、
y=????????? x=?????
y=????????? x=?????
y=????????? x=?????
上記のような形式で値を出力するプログラムを書け。
[3] 環境
[3.1] OS: Windows XP
[3.2] VC++ 6.0
[3.3] 言語:どちらでも可
[4] 期限: 2006年01月23日20:00まで
[5] その他の制限:特にありません。
一度自分でやってみたのですが、技量不足故に全く手がつきませんでした。
どうかよろしくお願いいたします。
0208デフォルトの名無しさん
2006/01/20(金) 00:56:46#include <stdio.h>
#include <math.h>
int match(int y){
int flg = 0;
if(y<123456789||987654321<y) return 0;
while(y){
int p = 1<<(y%10);
if(p&1||flg&p) return 0;
flg|=p;
y/=10;
}
return 1;
}
main(){
int begin = (int)floor(sqrt(123456789));
int end = (int)ceil(sqrt(987654321));
int x;
for(x=begin; x<end; ++x) if(match(x*x)) printf("y=%d x=%d\n", x*x, x);
}
0209デフォルトの名無しさん
2006/01/20(金) 00:58:29#include <stdio.h>
int chk[10];
int check(int y){
int i, r, z;
if(y < 100000000) return -1;
if(y > 999999999) return 0;
for(i = 0; i < 10; i++) chk[i] = 0;
z = y;
while(z > 0){
r = z % 10;
if(chk[r] == 0 && r != 0) chk[r] = 1;
else return -1;
z /= 10;
}
return 1;
}
int main(void){
int x = 1, y, c;
while(1){
y = x * x;
c = check(y);
if(c == 0) break;
else if(c == 1) printf("y=%d x=%d\n", y, x);
x++;
}
return 0;
}
0210デフォルトの名無しさん
2006/01/20(金) 01:00:22#include<algorithm>
#include<iostream>
#include<math.h>
int main(){
int y[9];
for(int i=1;i<10;++i)y[i-1]=i;
do{
int value = 0;
for(int i=0;i<9;++i)value = value * 10 + y[i];
int x = static_cast<int>(sqrt((double)value));
if(x*x == value)std::cout << "y="<<value << " x="<<x<<std::endl;
}while(std::next_permutation(y,y+9));
}
0211デフォルトの名無しさん
2006/01/20(金) 01:01:16[2] 問題文(含コード&リンク):
int x;
scanf("%d",&x);
printf("%d",x);
上記のようにprintf()では引数に&を使わないのにscanf()では
使う理由を説明せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月22日でお願いします。
[5] その他の制限:特にないです。
0212デフォルトの名無しさん
2006/01/20(金) 01:03:560213デフォルトの名無しさん
2006/01/20(金) 01:07:02ライブラリ設計者に聞いてみたいところだが
0214デフォルトの名無しさん
2006/01/20(金) 01:08:14scanf("%s",buf);
printf("%s",buf);
上記のようにscanfで&を使うとは限らない。
単なる仕様
0215デフォルトの名無しさん
2006/01/20(金) 01:11:08#include <cmath>
#include <cstdio>
using namespace std;
bool isOK( int y ) {
bool digit[10]={};
for( int i = 0, j = 100000000; i < 9; ++i, j/=10 ) {
int n = y / j;
y %= j;
digit[n] = true;
}
for( int i = 1; i <= 9; ++i ) if( !digit[i] ) return false;
return true;
}
int main( ){
// 123456789 <= x*x <= 987654321 より x上限がわかる
int max_x = (int)floor( sqrt( 987654321.0 ));
int min_x = (int)ceil( sqrt( 123456789.0 ));
for( int x = min_x; x <= max_x; ++x ) {
int y = x * x;
if( isOK( y )) printf( "y=%d x=%d\n", y, x );
}
}
0216デフォルトの名無しさん
2006/01/20(金) 01:13:21scanfでは与えられた引数の値を書き換える必要があるため。
もしscanfがポインタ渡しではなかったとしたら、
クライアント側で宣言した引数の値をscanf関数が変更することはできない。
printfは与えられた引数の値の変更が一切発生しないため、値渡しでよい。
0217デフォルトの名無しさん
2006/01/20(金) 01:17:39大筋は>>216でいいと思うが、>>214の様に例外もあるわけで
問題がおかしいと答えとけ
0218デフォルトの名無しさん
2006/01/20(金) 01:22:43printf( "%p", &hoge )
みたいに&付けたりあり得るしな。
0219205 ◆Tjwqg0YZug
2006/01/20(金) 01:25:11>>209
>>210
>>215
質問してまだあまり経っていませんが、直ぐにお答えしていただいて有難うございます。
皆さんの優しさに本当に感謝いたします。
これからも皆さんを見習って、私も誰かに教えられるような腕前になるまで努力していこうと思います。
本当に有難うございました。
0220デフォルトの名無しさん
2006/01/20(金) 01:31:33>>211ではまず例を提示しており、
その例を引き合いにして、「printfでは&を使わず、scanfでは&を使う。なぜか?」と聞いている。
scanfでは&を「必ず」使うとは書いていないし、
printfでは&を「必ず」使わないとも書いていない。
まあ、悪文ではあるわな。
0221211
2006/01/20(金) 01:33:13質問してきます。ありがとうございました。
0222デフォルトの名無しさん
2006/01/20(金) 01:35:36scanfが値を格納する関数であることを考えれば
引数は左辺値でなければならないことは自明だし
そうであれば少なくとも値型であるintでは
左辺値とするためにアドレス演算子を使うのは至極当然
0223デフォルトの名無しさん
2006/01/20(金) 02:19:52[2] 問題文(含コード&リンク): ポインタ配列の変数を下記の文字列(”JANUARY”〜”DECEMBER”)で初期化
1 ’R’が含まれている文字列を表示
2 各文字列で’R’が最初に見つかった所は先頭から何文字目かを表示する
初期化文字列:"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
○実行結果例 Rがある月はJANUARYで6文字目です
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] C
[4] 20日24:00
[5] strchr()
0224デフォルトの名無しさん
2006/01/20(金) 02:28:070225デフォルトの名無しさん
2006/01/20(金) 02:31:04#include <stdio.h>
#include <string.h>
int main() {
const char *Month[] = { "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER",NULL };
const char **aaa;
char *bbb;
for(aaa=Month; *aaa!=NULL; aaa++)
{
bbb = strchr(*aaa,'R');
if (bbb != NULL){ printf("%s %d\n", *aaa, bbb-*aaa+1); }
}
return 0;
}
0226デフォルトの名無しさん
2006/01/20(金) 02:32:10#include <stdio.h>
#include <string.h>
int main(void)
{
char* month[] = {"JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"};
char* p;
int i;
for( i = 0 ; i < 12 ; i++ ) {
p = strchr(month[i], 'R');
if( p != NULL ) printf("Rがある月は%sで%d文字目です\n", month[i], p - month[i] + 1);
}
return 0;
}
脳内コンパイル
0227デフォルトの名無しさん
2006/01/20(金) 02:36:48出題者がxをどうにかしたいと思っているから、と答えれ
0228デフォルトの名無しさん
2006/01/20(金) 02:42:42その問題解けないようじゃ
C/C++なんかやめて
JAVAに行きなさい
0229211
2006/01/20(金) 02:43:160230211
2006/01/20(金) 02:45:26俺じゃないです。
0231名無し
2006/01/20(金) 03:06:19[2] 問題文:[入力]6以下の自然数N(決して7以上の数を入力しないよう!)
[処理]N!を再帰法を使って計算する。[出力]入力の階乗(factorial)!の計算結果を出力。
[説明]fac(n)=1 n=1の時,fac(n)=n*fac(n-1) n>1の時、が階乗!の再帰的な定義である。
この定義をそのまま、関数(再帰的関数)として定義せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年1月22日9:00まで]
[5] その他の制限:
お願いします。
0232デフォルトの名無しさん
2006/01/20(金) 03:10:09#include <stdio.h>
int kaijo(int n)
{
if (n==1)
return 1;
return kaijo(n-1)*n;
}
int main()
{
int n,ans;
scanf("%d", &n);
ans=kaijo(n);
printf("%d\n", ans);
return 0;
}
0233名無し
2006/01/20(金) 03:16:49[2] 問題文:[入力]32個の異なる二桁の自然数[操作]32個の自然数の中で最大値(MAX)と最小値(MIN)を求める。
[出力]入力データ、最大値(MAX)と最小値(MIN)
[説明]入力された32個のデータを配列に記憶。記憶された32個のデータを集合と考え、配列の添数(インデックス index) m,n(m<nを仮定)を
使って配列のm番目からn番目までのデータを含む部分集合は添数を使って(m,n)で表せる。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年1月22日9:00まで]
[5] その他の制限:
0234デフォルトの名無しさん
2006/01/20(金) 03:21:03求めるっつーことはソートの関数作れって事でしょ
バブルソートなんかは簡単だから自分で作ってみなさいな
0235デフォルトの名無しさん
2006/01/20(金) 03:24:08単元が分割統治と再帰だからソートを実装するのが
求められてるのだとしたら、バブルじゃなく
クイック・マージが妥当だろ
0236デフォルトの名無しさん
2006/01/20(金) 03:26:230237デフォルトの名無しさん
2006/01/20(金) 03:35:470238デフォルトの名無しさん
2006/01/20(金) 03:41:32オーバーフローじゃね?
確か16bit整数型だと8!でオーバーフロー起こす
もっともそれでも7!がダメな理由が分からんが
それにlongや(C99なら)long long使えばもっと伸びるしな
0239デフォルトの名無しさん
2006/01/20(金) 10:59:270240デフォルトの名無しさん
2006/01/20(金) 11:50:030241デフォルトの名無しさん
2006/01/20(金) 12:30:49[2] 問題文
学生20人の成績を入力すると、上位5人の成績・全体の平均点・
最低点を出力するプログラムを作成せよ。
[3] 環境
[3.1] WindowsXP
[3.3] C言語
[4] 期限: 1月22日午前10時
[5] その他の制限: 初心者なのでできるだけ簡単な方法でお願いします。
理解できるのは、if,for,while,配列,関数がかろうじて少し…といった
レベルです。
どなたかよろしくお願いします!!
0242デフォルトの名無しさん
2006/01/20(金) 12:44:19[2] 問題文:符号なし16進数を文字列s[]に変換する関数ItoH(n,s)を作りなさい。
nを16で割った余りが16進数の一番低位の数となります。これを'0'〜'9'または'A'〜'F'
の文字に変換します。次に16で割った商を新しいnとして上の変換を繰り返していきます。
できあがった文字列は、逆順に並んでいますので、文字列の順序を入れ替えていきます。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 一時間以内でお願いします。
[5]<string.h>を使ってください。
おながいします
0243デフォルトの名無しさん
2006/01/20(金) 12:45:58(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<5;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("平均点:%f点\n",s);
return 0;
}
0244デフォルトの名無しさん
2006/01/20(金) 13:06:31さ〜て間に合うかな(・∀・)ニヤニヤ
0245デフォルトの名無しさん
2006/01/20(金) 13:09:200246デフォルトの名無しさん
2006/01/20(金) 13:16:47<string.h>ってどこに使うんだ?
0247デフォルトの名無しさん
2006/01/20(金) 13:17:160248デフォルトの名無しさん
2006/01/20(金) 13:20:03ッシ!!
0249デフォルトの名無しさん
2006/01/20(金) 13:23:04無理やり使えないことはないが何か違う気がする
0250デフォルトの名無しさん
2006/01/20(金) 13:25:24string.h使うならC++まで拡張して逆方向反復子が使えて便利だったのに
0251デフォルトの名無しさん
2006/01/20(金) 13:26:050252デフォルトの名無しさん
2006/01/20(金) 13:36:360253241
2006/01/20(金) 13:38:40素早い回答ありがとうございます!
もうお返事あるとは思わず少し感動…。
なのですが、これだと上位5人の成績表示されないと思うのですが…
どう直せばよいのかも分からずorz
すみません、どなたかお願いします!!
0254デフォルトの名無しさん
2006/01/20(金) 13:44:21あれでおkだよ。ソートしてんじゃん。
0255デフォルトの名無しさん
2006/01/20(金) 13:45:06(゚Д゚)ノ 悪い最低点忘れてたw
#include<stdio.h>
int main(void){
int ten[20],i,k,c;
float s=0.0;
for(i=0;i<20;i++){
scanf("%d",&ten[i]);
s += ten[i];
}
s /= 20;
for(i=0;i<19;i++)
for(k=19;k>i;k--)
if(ten[k]>ten[k-1]){
c = ten[k];
ten[k] = ten[k-1];
ten[k-1] = c;
}
puts("上位点");
for(i=0;i<5;i++)
printf("%d\n",ten[i]);
printf("最低点:%d\n",ten[19]);
printf("平均点:%f点\n",s);
return 0;
}
0256デフォルトの名無しさん
2006/01/20(金) 13:46:17そろそろ行くか
#include<stdio.h>
#include<string.h>
void ItoH(int,char*);
void ItoH(int n,char *s){
char str[]="0123456789ABCDEF";
int i=0;
do{
s[i] = str[n%16];
n = n/16;
i++;
}while(n>0);
s[i] = '\0';
strrev(s);
}
int main(void){
char s[256];
int n;
printf("数字入力:");
scanf("%d",&n);
ItoH(n,s);
printf("%s\n",s);
return 0;
}
0257デフォルトの名無しさん
2006/01/20(金) 14:45:06[2] 問題文(含コード&リンク):
ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。
:実行例:
a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで
0258デフォルトの名無しさん
2006/01/20(金) 14:54:18ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
0259256
2006/01/20(金) 15:11:53これをいじれば出来ると思うのですが上手くいきません。
お願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
0260デフォルトの名無しさん
2006/01/20(金) 15:19:390261デフォルトの名無しさん
2006/01/20(金) 15:21:00なんで単発スレ立ててるんだよ
もうくるな
0262デフォルトの名無しさん
2006/01/20(金) 15:24:01[2] 問題文(含コード&リンク):
ファイル名をコマンドラインで指定し、その内容を256バイトずつ1ブロックとして、16進と文字列形式でダンプ出力した上で、その内容を16進コードで更新するプログラムを作る。
ただし表示ブロック位置(先頭を0とする)はキーボードから入力するものとして、負値またはエンターキーのみが入力させるまで続ける。ブロック内の更新データの先頭はアドレスは16進で入力する。
更新データは2桁で1バイトの16進データを入力する。
:実行例:
a:\e12345.exe e12345.c
BLNo.->2
000200: 64 69 2e ・・・・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e 74 ・・・・・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d ・・・・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
ADR->12
DATA->a1a2a4
000200: 64 69 2e 68 3e・・・・・・・・・・・ 63 28 dio.h>・v oid spc(
000210: 69 6e a1 a2 a4 ・・・・・・・・・・ 28 6e int n)・{ ・・if ((n
|||途中省略|||
0002f0: 0a 09 7d 0a 09・・・・・・・・・・・ 29 3b ・・}・・fcl ose(fi);
DATA->_
ADR->_
Change OK?->y
BLNo.->
[3] 環境 Windows C言語
[4]2006/01/20 18:00まで
ここまで作りましたhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1512
0263デフォルトの名無しさん
2006/01/20(金) 15:24:470264デフォルトの名無しさん
2006/01/20(金) 15:25:340265デフォルトの名無しさん
2006/01/20(金) 15:26:280266デフォルトの名無しさん
2006/01/20(金) 15:28:380267デフォルトの名無しさん
2006/01/20(金) 15:29:03[2] 問題文(含コード&リンク): 文字列sの中の異なった文字の数を(種類)を数える関数SuteStr(s,t)を作りなさい。
文字列t[]には文字の種類を入れることにします。
<ヒント>
文字列sの要素*sを1つずつチェックしていきます。t[]には、今まで出てきた文字の種類を
入れておきます。文字*sと同じ文字がt[]の中になかったら、t[]の後に追加します。文字列
s[]の中に'\0'が出てくるまで繰り返します。
<実行例>
Input String: C-language
Different char number is 8
Output String:C-langue
[3] 環境
[3.1] OS: mac osX 10.4.4
[3.2] コンパイラ名とバージョン: X code2.0
[3.3] 言語: C言語
[4] 期限: 今日の五時まで
[5] その他の制限: なし
もう無理。教えてください。
0268デフォルトの名無しさん
2006/01/20(金) 15:29:22できないとはっきり言え
0269デフォルトの名無しさん
2006/01/20(金) 15:30:33だから 意味が分らない=できない
のつもり^^;
0270デフォルトの名無しさん
2006/01/20(金) 15:30:380271デフォルトの名無しさん
2006/01/20(金) 15:32:37英数字だけ?
それとも2バイト文字も含む訳?
0272デフォルトの名無しさん
2006/01/20(金) 15:33:15>>271::>>262 → >>267
0273デフォルトの名無しさん
2006/01/20(金) 15:39:34int count(char *s)
{
int table[256] = {0};
int i, sum = 0;
for (; *s; s++)
table[(unsigned char) *s]++;
for (i = 0; i < 256; i++)
if (table[i])
sum++;
return sum;
}
0274デフォルトの名無しさん
2006/01/20(金) 15:40:38前スレで作ってもらったのは無視?
ttp://pc8.2ch.net/test/read.cgi/tech/1136768567/409
0275デフォルトの名無しさん
2006/01/20(金) 15:42:45できない
これでええか?
0276デフォルトの名無しさん
2006/01/20(金) 15:57:39int a(char *b) { int c[256] = {0}, d = 0; for (; *b; b++) if (!c[*(unsigned char *) b]++) d++; return d; }
0277デフォルトの名無しさん
2006/01/20(金) 15:59:110278デフォルトの名無しさん
2006/01/20(金) 16:07:48int SuteStr(const char *s, char *t)
{
int table[256] = {0};
int count = 0;
for (; *s; s++) {
if (table[*(const unsigned char *) s]++ == 0) {
*t++ = *s;
count++;
}
}
*t = '\0';
return count;
}
0279デフォルトの名無しさん
2006/01/20(金) 16:15:35char配列をqsortして
値が大きくなったらカウンターの数をインクリメントするってのは駄目?
0280デフォルトの名無しさん
2006/01/20(金) 16:17:12今携帯なんでw
0281デフォルトの名無しさん
2006/01/20(金) 16:19:19有りだろ
むしろそっちの方がわかりやすくね?
0282デフォルトの名無しさん
2006/01/20(金) 16:19:420283デフォルトの名無しさん
2006/01/20(金) 16:21:230284デフォルトの名無しさん
2006/01/20(金) 16:23:380285デフォルトの名無しさん
2006/01/20(金) 16:42:09ところで、ときどきVisualC++でっていう指定があるけど、
学校のコンピュータに入ってんのかな?
0286デフォルトの名無しさん
2006/01/20(金) 16:47:12俺が教官でも最低限、自分の担当する言語の宿題スレは確認するな
VC++なんて入れたらとんでもない金掛かると思うがな
まぁ入ってるところもあるんじゃねーの
俺の所はおそらくずっとLinux(GCC)だろうが
0287デフォルトの名無しさん
2006/01/20(金) 16:52:30gcc,g++,borland c++だったら、ただだから
たいていの教育機関にはこれらが入ってると思う。
てか、初心者はプログラムの本質学ぶのが目的だから
vc使わなくてもいいような気もする・・・
0288デフォルトの名無しさん
2006/01/20(金) 16:52:52#incude <stdio.h>
#define LOW 3 /* 行数 */
#define COLUMN LOW /* 列数 */
int main(){int i,j,k;
double A[LOW][COLUMN + 1]={{3,2,1,10},{2,5,2,18},{1,4,1,12}};
double d;
double x[3] = {0,0,0}; /* 答えを入れる */
double b[3] = {0,0,0}; /* 式(6)で使う */
double s = 0; /* 0で初期化 */
/* 【前進消去】 */
for ( j=___A___; j < ___B___ ; j++ ){d = ___C___;
for ( k = 0; k <= COLUMN; k++ ){___D___; }}}
/* b=(b1,b2,b3)をつくる */
for ( i=0 ; i<LOW ; i++ ){b[i] = A[i][3];}
/* 【後退代入】 */
for ( i=LOW-1; i>= 0 ; i-- ){s = 0;
for ( k = i+1; k < COLUMN; k++ ){ /* 式(6)Σを計算 */
___E___; }
x[i] = ___F___; /* 式(6)のxを計算 */ }
for ( i=0 ; i<LOW ; i++ ){ /* 変形した行列の表示 */
printf ("%d: %lf %lf %lf\n", i, A[i][0],A[i][1],A[i][2], A[i][3]); }
printf ("X = (%lf %lf %lf)^T\n", x[0], x[1], x[2]);
return 0;}
解答がx1=(1,2,3)となるように(A)(B)(C)(D)(E)(F)をもとめよ
[3.3] 言語: C言語
[4] 期限: 一時間
0289デフォルトの名無しさん
2006/01/20(金) 16:58:45うちの大学は全てのPCにVS.NETが入ってる
しかも授業ではCPadを使う
0290デフォルトの名無しさん
2006/01/20(金) 17:01:24ちょwww
どこの大学?
うち国立だけど、pascal、gcc、lisp、prologなんか入ってるOTZ
0291デフォルトの名無しさん
2006/01/20(金) 17:03:420292デフォルトの名無しさん
2006/01/20(金) 17:06:04むしろ初心者にVCなんて使わせたら、悪影響な気がするがな
VCの補助機能は確かに便利だが、純粋にプログラミングの
本質的な部分を覚えるのにはかえって邪魔になる
>>290
俺も国立だが、gpc/gcc/g++/csccなんかが入ってるな
0293デフォルトの名無しさん
2006/01/20(金) 17:14:380294デフォルトの名無しさん
2006/01/20(金) 17:17:350295デフォルトの名無しさん
2006/01/20(金) 17:20:24コンソールアプリケーションのトレースができたりする。
0296デフォルトの名無しさん
2006/01/20(金) 17:22:25携帯からの書き込みですのでコピペできませんでした
C言語
期限 今日の19時頃まで
問い 整列済みデータを二分木で表現
整列済みデータは乱数を発生させて自分でソート って感じで…
もしできたら
二分木から指定した値を検索するプログラムも…
ょろしくです(>_<)
0297デフォルトの名無しさん
2006/01/20(金) 17:42:340298デフォルトの名無しさん
2006/01/20(金) 17:58:13地元の私立大学
偏差値は低いが金は有り余ってる
0299デフォルトの名無しさん
2006/01/20(金) 18:11:220300デフォルトの名無しさん
2006/01/20(金) 18:34:20っていうか、夏休みが終わって学校に行ってみたら100台くらいのPCがPen4 3.2G、メモリ768MB、WinXPに総入れ替えしてあったりしたし
0301デフォルトの名無しさん
2006/01/20(金) 19:21:38> VC だと、ヘッダファイルの変さを我慢すると、標準入出力を使う
> コンソールアプリケーションのトレースができたりする。
それってgdbとかでは出来ないの?
0302デフォルトの名無しさん
2006/01/20(金) 19:23:56gdb ってエディタと連動してたっけ?
0303デフォルトの名無しさん
2006/01/20(金) 19:30:19えらく豪勢なPCだな・・・('A`)
俺の所はDELLのPen4(2GHz程度っぽい)に入ってたXPをわざわざ消して
VineLinux入れてある
まぁ開発用途で使う俺らにとってはXPより使いやすいんだがな
0304デフォルトの名無しさん
2006/01/20(金) 19:31:16emacsなら可。 よく知らんがリモートデバッグ機能使えば、いろいろできるかもしれん。
>296
二分探索木の挿入とトラバース、探索だな。
0305デフォルトの名無しさん
2006/01/20(金) 21:01:03[2] 問題文(含コード&リンク):WindowsXPでデスクトップ画面を左右反転させるプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC++
[3.3] 言語: C++
[4] 期限: 1月31日の17時まで。
[5] その他の制限: 特になし
ビデオカードなんかで回転ができるんだから、左右反転もすぐできるかと思ったけど
やってみたら全然わかんね・・・ orz
よろしくお願いします。
0306デフォルトの名無しさん
2006/01/20(金) 21:05:30BitBltなら幅を負数にする。
0307デフォルトの名無しさん
2006/01/20(金) 22:22:30[2] 問題文(含コード&リンク):
平面上の点の数n(n≦100),及び,n個の点の座標を配列 x,及び,y に読み込み,
すべての点の間の距離を計算し,その距離が最大になる点の組(2つの点の座標.最初に入力した点の座標を最初),
及び,その距離を出力するプログラムを書け。
(入力例) コメントの部分は除く
3 // 点の数
0 10 // 1 番目の点の x 及び y 座標
0 0 // 2 番目の点の x 及び y 座標
20 0 // 3 番目の点の x 及び y 座標
(出力例) コメントの部分は除く
0 10 // 1 番目の点の x 及び y 座標
20 0 // 3 番目の点の x 及び y 座標
22.36・・・ // 2点間の距離
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語:C++
[4] 期限: 一月下旬
[5] その他の制限:特にありません。よろしくお願いします。
0308デフォルトの名無しさん
2006/01/20(金) 22:28:11[2]問題文:�@0〜1.0の範囲の二組の実数の乱数を5回生成し、
それらをx,yとして得られた5つのxy座標上の点(x,y)を画面に表示する
�A40から65の任意の整数をキーボードから入力し、その文字コードに対応するchar型文字を表示する
[3]環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
[3.3]言語:C
[4]期限:月曜
[5]その他の制限:出来れば全文でお願いします
0310デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):哲学者の食事の説明と解決策
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:ありません。よろしくお願いします。
0311名無し
2006/01/20(金) 22:34:440312デフォルトの名無しさん
2006/01/20(金) 22:39:17(1)はコマンドプロンプトなのに画面に表示と言う辺りが無理だな。
どうやって画面に表示するのか教わっているならその情報を提示しろ。
(2)も、標準入出力でいいのかWinAPIを使うのか、printf()などを使うのかcoutを使うのか、
はっきりしないことには手を出しにくいし。
0313デフォルトの名無しさん
2006/01/20(金) 22:41:16馬鹿?
0314デフォルトの名無しさん
2006/01/20(金) 22:41:340315デフォルトの名無しさん
2006/01/20(金) 22:42:50「哲学者の食事の問題」のどこがCと関係あるんだ?
つーか、ぐぐればわかることだろ。
0316デフォルトの名無しさん
2006/01/20(金) 22:43:34恥の上塗りだな。
0317デフォルトの名無しさん
2006/01/20(金) 22:43:46問題よく読めよ馬鹿
0318デフォルトの名無しさん
2006/01/20(金) 22:44:54int min(int x, int m, int n)
{
int a, b;
if (m > n)
return min(x, n, m);
if (m == n)
return x[m];
a = x[m];
b = min(x, m + 1, n);
return (a < b) ? a : b;
}
・・・ウソはついていない。
0319デフォルトの名無しさん
2006/01/20(金) 22:45:590320デフォルトの名無しさん
NGNG書き込んでしまった後に気付いた。スレ違いスマソ
�@やり方は教わってません。これは普通に考えたらできないって話ですかね
�Aprintfでお願いします。WinAPIとcoutは習ってません
0322デフォルトの名無しさん
2006/01/20(金) 22:57:25哲学者が食事をしようと、食材を入れた箱を開けようとする。
ふと哲学者の脳裏にひょっとして、あけたらまずいんちゃうか? という思いがかすめる。
けっこう前のだし・・・・。
箱を開ければ状態は確定するが、箱を開ける前、
箱の中の状態は食べられるものか食べられないものかの状態が入り混じっている。
・・・って、こんなんじゃなかったっけ?
解決策は、箱を開けるとヤバイかもしんないので、箱は絶対に開けない。
0323デフォルトの名無しさん
2006/01/20(金) 23:05:43�@普通に考えたら
(0.1,0.6) (0.2,0.7) (0.3,0.8) (0.4,0.9) (0.5,0.0)
のような表示を出せばいいだけだろうな
�A言語がCならAPIだのcoutなんて言い出さないよな
その解釈であってると思います。レスありがとうございます
どなたかお願いします
0325デフォルトの名無しさん
2006/01/20(金) 23:22:15シュレディンガーのぬこかよ!
0326デフォルトの名無しさん
2006/01/20(金) 23:23:27シュレーディンガーの猫?
0327241
2006/01/20(金) 23:28:02このスレ回転速いですね…;
お礼遅くなってすみません、ありがとうございました!
0328デフォルトの名無しさん
2006/01/20(金) 23:35:59フォークとナイフが2人分しか用意されてない四角のテーブルに
4人の哲学者が座り、瞑想を終えた哲学者からさっさとフォーク、ナイフ
を取って食事を始めるって奴。
デッドロックのシミュレーションだと思う。要するに、デッドロックが起きない
ようにうまくプログラムをせよって事か?
0329デフォルトの名無しさん
2006/01/20(金) 23:42:36(1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int i;
srand((unsigned int)time(NULL));
for (i = 0; i < 5; i++) printf("(%f, %f)", 2 * rand() / (RAND_MAX + 1.0), 2 * rand() / (RAND_MAX + 1.0));
}
(2)
#include <stdio.h>
int main(void) {
int c;
scanf("%d", &c);
if (40 <= c && c <= 65) printf("%c", (char)c);
}
0330デフォルトの名無しさん
NGNGそれです。哲学者のルーチンを二つに分けて考えようとしたのですが、これは反則ですか?
Aは周りを気にせず自己中に食いたいときに食う。
Bは隣が食ってたら終わるまで待つ。
といった感じに。
0331デフォルトの名無しさん
2006/01/20(金) 23:50:49説明:
おなかをすかせた哲学者が角を曲がったところ、100メートル先に焼きいも屋をハケーン。
小カール君にもすんでのところで勝てそうだった経験のある哲学者は50メートル6秒フラットの俊足。
一方、リアカー商いの焼きいも屋のおじいさんは足取りも重く6秒で3メートルも進めたらいいとこ。
しかし哲学者が焼きいも屋を最初に見かけたところまでたどりつくと、
耳の遠いおじいさんはこちらの呼びかけにも気づかず5メートルほど先に行ってしまった。
あわてて哲学者がそこまで追いついても、その頃にはおじいさんはおじいさんなりのペースでまた先に。
哲学者とおじいさんの速さの比を20:1とすると、
哲学者がおじいさんがいたところにたどりつくたびに、おじいさんはその20分の1だけ先に行っていることになり、
哲学者は永遠に焼きいもを食べられない…って問題。
解決策:
宇宙は閉じているので全く反対方向に走れば
しばらくすると正面をこちらむきに歩いてくるおじいさんと出会うことになる。
ありがとうございます。感謝です
0333デフォルトの名無しさん
2006/01/20(金) 23:56:15アキレスの亀頭?
0334デフォルトの名無しさん
2006/01/21(土) 00:06:15これで分からなければ勉強不足、と言えるほど簡単に書いた。
#include <cmath>
#include <iostream>
int main() {
int n;
std::cin >> n;
double x[100], y[100];
for (int i = 0; i < n; ++i) std::cin >> x[i] >> y[i];
int index_start = 0, index_end = 0;
double dist2, max_dist2 = 0;
for (int i = 0; i < n; ++i)
for (int j = i; j < n; ++j)
if ((dist2 = (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j])) > max_dist2) {
index_start = i; index_end = j;
max_dist2 = dist2;
}
std::cout << x[index_start] << ' ' << y[index_start] << '\n' << x[index_end] << ' ' << y[index_end] << '\n' << std::sqrt(max_dist2) << std::endl;
return 0;
}
0335デフォルトの名無しさん
2006/01/21(土) 00:23:15かなり遅いレスになるが、標準Cにstrrevは含まれない。
0336デフォルトの名無しさん
2006/01/21(土) 00:28:27(なお、シュレディンガーの半死半生の猫の話はHALってマンガからの引用)
えーっと。哲学者の食事の解説(上手な解説はWebで見てくれ。脳内の情報だけで書いてる)
A)円形の卓があって、哲学者がN人居て、その間に1つづつ食器が置いてある。
B)哲学者は食器を2つ使わないとメシが喰えない。
C)哲学者は以下の動作を1つだけする
C1)まだ食器を持っていないなら、右手の食器を取ろうとする。右手の食器が開いていなければ次のチャンスを待つ
C2)C1が完了していれば、左手の食器を持とうとする。左手の食器が開いてなければ次のチャンスを待つ
C3)両手に食器を持っていれば、(メシを一口喰って)両手の食器を離す
D)哲学者が行動する順序はランダムである(続けて1人の哲学者が行動を続けることもある)
・・・ってすると、そのうち状態が変化しなくなってしまう。
改善:
食器に1〜Nの番号を振る(Cらしく、0〜N-1でも可)。
C1〜C2)を次のように変える。
C1)左右にある食器のうち若い番号の食器を持とうとする。持てなかったらC1へ
C2)もう一方の番号の食器を持とうとする。持てなかったらC2へ
0337デフォルトの名無しさん
2006/01/21(土) 00:29:110338デフォルトの名無しさん
2006/01/21(土) 00:43:100339デフォルトの名無しさん
2006/01/21(土) 00:47:510341デフォルトの名無しさん
2006/01/21(土) 00:59:30↓これは何をするプログラムですか?実行結果も教えてください。
#include <errno.h>
#include <dirent.h>
#include <stdio.h>
int main(void) {
DIR * dir;
struct dirent * ent;
/* "." is the current directory */
if (!(dir = opendir("."))) {
perror("opendir");
return 1;
}
/* set errno to 0, so we can tell when readdir() fails */
errno = 0;
while ((ent = readdir(dir))) {
puts(ent->d_name);
/* reset errno, as puts() could modify it */
errno = 0;
}
if (errno) {
perror("readdir");
return 1;
}
closedir(dir);
return 0;
}
0342デフォルトの名無しさん
2006/01/21(土) 01:08:39面白そうだな
つまりデッドロックが発生するまでをシミュレートしろということか
暇が出来たときに作ってみるか
0343デフォルトの名無しさん
2006/01/21(土) 01:10:370344デフォルトの名無しさん
2006/01/21(土) 01:14:41ls
実行結果は状況依存。環境依存じゃなくて状況依存。なので答えられん。
0345デフォルトの名無しさん
2006/01/21(土) 01:20:24スレッド使った方がすっきり書けるね。
手持ちのWin32システムサービスプログラミングって本に例が
載ってる。mutexを使って同期を取っているが、デッドロックの
回避にはWaitForMultipleObjects()を使ってる。
ま、この単純な方法では、スタベーション(飢餓状態)という
別の問題が発生するので、待機時間を無限ではなくて
タイムアウトを設定する事で回避しているね。
0346デフォルトの名無しさん
2006/01/21(土) 01:24:08そいつは哲学者の問題とは違ったニュアンスになるぞ。
Aばかり食いっぱなしになって、Bは飢え死にする。
ダイクストラが例えた哲学者の問題は、すべての者が
同様の権利を持つものだ。
0347デフォルトの名無しさん
2006/01/21(土) 01:29:23しとくから、後は自分で考えれ。
著作権の問題があるから本当はまずいんだが・・・・・・
0348デフォルトの名無しさん
2006/01/21(土) 01:41:29フローチャートでCのポインタを描くにはどのようにしたらいいですか?
例えば
*foo = *foo + 5;
だとどうなるのでしょうか。
よろしくお願いします。
0349デフォルトの名無しさん
2006/01/21(土) 01:42:570350デフォルトの名無しさん
2006/01/21(土) 01:43:410351デフォルトの名無しさん
2006/01/21(土) 01:45:510352デフォルトの名無しさん
2006/01/21(土) 01:46:090353デフォルトの名無しさん
2006/01/21(土) 01:46:54それはfoo+=5だろw
0354デフォルトの名無しさん
2006/01/21(土) 01:47:22ありがとうございます。
記号は処理を表す長方形でいいですか?
0355デフォルトの名無しさん
2006/01/21(土) 01:47:44fooがchar*とかだった場合な
0356デフォルトの名無しさん
2006/01/21(土) 01:47:49普通、フローチャートで型は指定しないよ
0357デフォルトの名無しさん
2006/01/21(土) 01:48:190358デフォルトの名無しさん
2006/01/21(土) 01:48:35あ・・・・・ボケたorz
0359デフォルトの名無しさん
2006/01/21(土) 01:49:29あ・・・確かにsizeof(型)分ずれるにしとこう
どっちにしろ間違ってるけど
0360デフォルトの名無しさん
2006/01/21(土) 01:49:430361デフォルトの名無しさん
2006/01/21(土) 01:50:210362デフォルトの名無しさん
2006/01/21(土) 01:51:300363デフォルトの名無しさん
2006/01/21(土) 01:53:33http://venus.aez.jp/uploda/data/dat5/upload321785.jpg
こんな感じです。
0364デフォルトの名無しさん
2006/01/21(土) 01:54:13もれは、さけを、もういっぱいのんだら、ねるぅ。
0365デフォルトの名無しさん
2006/01/21(土) 01:57:08多分、処理だとは思うけど。
0366デフォルトの名無しさん
2006/01/21(土) 01:57:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1515.txt
これは本のリストをC用に書き直しただけなので、そのまま提出すると
バレる可能性がある。適当に修正しといた方がいい。
簡単に説明すると、csStat[]は、現在持たれている箸(もしくはフォーク)
を表す。pStat[]は、現在実際に飯を食っている哲学者を表す。
だから、csStat[]で 1 になっている数は pStat の 1 の丁度2倍になるはずだ。
numPhilosopherは、哲学者の数を表す。これを10とか20とかに変更
してコンパイルしても、デッドロックが起きない事が確認できると思う。
尚、このプログラムはスタベーションへの対策はしていない版である。
プログラムは必ずマルチスレッドでコンパイルする事。以上。
0367デフォルトの名無しさん
2006/01/21(土) 01:59:01頑張って残り終わらせます。
0368デフォルトの名無しさん
2006/01/21(土) 02:00:33×だから、csStat[]で 1 になっている数は pStat の 1 の丁度2倍になるはずだ。
○だから、csStat[]で 1 になっている数は pStat の 1 の丁度2倍になるはずだが、
他のスレッドでまだ1本しか箸を取っていないタイミングもあるので、少なくなる
事がある。
0369デフォルトの名無しさん
2006/01/21(土) 02:02:33ほえほえなアルコール漬けの脳みそで、Cでシングルスレッドなプログラムを構築していた漏れ。
哲学者の状態は関数ポインタだった。
0370デフォルトの名無しさん
2006/01/21(土) 02:07:30実現が困難だと思う。まあいろいろ方法はあるが。
[2]問題文:�@50〜60の整数の乱数を5個生成し配列Sに格納した後それらの和を求める
�A入力したアルファベットを大文字→小文字、小文字→大文字に変換して表示する
[3]環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
[3.3]言語:C
[4]期限:月曜
さっき解いてもらったばかりなんですが、まだあったんでお願いします
度々すいません
0372デフォルトの名無しさん
2006/01/21(土) 02:17:17(2)入力の仕方、出力の仕方を提示せよ。
�@その通りです
�AskuAA→SKUaa
こんな感じです
0374デフォルトの名無しさん
2006/01/21(土) 02:23:16(2)そーじゃなくって、文字列を入力させるやりかたを教わらなかったか?
0375デフォルトの名無しさん
2006/01/21(土) 02:25:58http://hp.vector.co.jp/authors/VA008536/data/ascii.html
gets
puts
とかのことですかね?
0378さっきの人
2006/01/21(土) 02:36:59(1)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int S[5], i, sum = 0;
srand((unsigned int)time(NULL));
for (i = 0; i < 5; i++) S[i] = 50 + (int)(11 * rand() / (RAND_MAX + 1.0));
for (i = 0; i < 5; i++) sum += S[i];
for (i = 0; i < 5; i++) printf("%d\n", S[i]);
printf("sum:%d\n", sum);
return 0;
}
(2)
#include <stdio.h>
#include <ctype.h>
int main(void) {
int c;
while ((c = getchar()) != EOF && c != '\n')
if (islower(c))
putchar(toupper(c));
else
putchar(tolower(c));
return 0;
}
多謝
0380デフォルトの名無しさん
2006/01/21(土) 03:02:08[1] 授業単元:プログラミングII演習
[2] 問題文(含コード&リンク):
自分の好きな野球チームの選手名、背番号、ポインタの入る構造体を
9つ作り打順通りのリニアリストを作れ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 2006/1/24/
[5] その他の制限: 名前とか適当でいいんでお願いします
0381デフォルトの名無しさん
2006/01/21(土) 03:42:060382デフォルトの名無しさん
2006/01/21(土) 04:06:17NULLでも入れとけ。
0383デフォルトの名無しさん
2006/01/21(土) 04:14:38main(){
struct tagBaseballPlayer{
char name[256];
char no[4];
struct tagBaseballPlayer* next;
} team[] = {
{ "泉孝介", "8", 0 },{ "栄口勇人", "4", 0 },{ "巣山尚治", "6", 0 },
{ "田島悠一郎", "5", 0 },{ "花井梓", "9", 0 },{ "沖一利", "3", 0 },
{ "水谷文貴", "7", 0 },{ "三橋廉", "1", 0 },{ "安部隆也", "2", 0 }
};
int i;
for(i=0;i<8;++i) team[i].next = &team[i+1];
}
ポイントは「背番号」をintにしてしまうと"00"が表現できないという指摘がはいるとこか?
0384デフォルトの名無しさん
2006/01/21(土) 04:15:460385デフォルトの名無しさん
2006/01/21(土) 04:16:26[2] 問題文(含コード&リンク): 線形リストに格納したデータをソートする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1/23まで
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1517.txt
線形リスト自体は本で調べて、なんとかできたのですが
ソート(バブルソート)の部分がうまくできません。
よろしくお願いします。
0386デフォルトの名無しさん
2006/01/21(土) 04:20:12何でもいいから間違ったソースぐらいうpってくれ
0387デフォルトの名無しさん
2006/01/21(土) 04:30:364 3 2 1 5
3 4 2 1 5
3 2 4 1 5
3 2 1 4 5
3 2 1 4 5
2 3 1 4 5
2 1 3 4 5
2 1 3 4 5
2 1 3 4 5
1 2 3 4 5
0388デフォルトの名無しさん
2006/01/21(土) 04:32:59バブルソート自体は分かるんですけど、
線形リストでやろうとするとどのようにすればいいのか
よく分かりません。
0389デフォルトの名無しさん
2006/01/21(土) 04:41:21Node *ptr = list->head;
としてる意味がわからないんだけど、これ何してるの
0390デフォルトの名無しさん
2006/01/21(土) 04:44:59先頭ノードをポインタptrに格納しています。
0391デフォルトの名無しさん
2006/01/21(土) 04:54:06ありがとうございます
00は使わないです
0392デフォルトの名無しさん
2006/01/21(土) 05:14:19とりあえず考えた
バブルソートはどうしても自分の一個前の値のポインタが必要だから
Nodeのポインタの配列を必要な数だけ(別途存在するノードの関数を作成する)確保して(lplpNodeとする)
lplpNodeに順々に存在するNodeへのポインタを格納して
それを参照しながら、必要とあらばアドレスを入れ替えてバブルソートするってのはどう?
ただ問題はlplpNode配列の個数の限界がsizef(int)個になるんだけどね
0393デフォルトの名無しさん
2006/01/21(土) 05:15:26(別途存在するノードの関数を作成する) → 別途存在するノードの個数を計算する関数
0394デフォルトの名無しさん
2006/01/21(土) 07:50:270395デフォルトの名無しさん
2006/01/21(土) 11:31:51バブルソートでやれって指定なのか?
0396デフォルトの名無しさん
2006/01/21(土) 13:41:01int CompareData(void *lhs, void *rhs){return ((Data*)lhs)->num - ((Data*)rhs)->num;}
void sort(List *list, int(*pfnCompare)(void *lhs, void *rhs)){
Node *p, *prev;
int changed=1;
if(!list->head||!list->head->next) return;
while(changed){
changed=0;
if(pfnCompare(&(list->head->data), &(list->head->next->data))>0){
Node *temp1 = list->head->next, *temp2 = list->head->next->next;
list->head->next->next = list->head; list->head->next = temp2; list->head = temp1;
changed=1;
}
prev=list->head;
for(p=list->head->next; prev->next->next; p=prev->next){
if(pfnCompare(&(p->data), &(p->next->data))>0){
Node *temp = p->next->next;
prev->next = p->next; p->next->next = p; p->next = temp;
changed=1;
}
prev=prev->next;
}
list->crnt=p;
}
}
呼び出しは: sort(&list, CompareData);
もっと簡単になりそうな気もする。
0397デフォルトの名無しさん
2006/01/21(土) 19:35:000398デフォルトの名無しさん
2006/01/21(土) 22:23:06[2] 問題文(含コード&リンク):
2つの窓口をもった航空機check-inカウンタがあるとする
客の到着時間timeとサービス時間durが与えられた時、客の平均待ち時間を求めることを考える。
例えば、客A,B,C,D,E,F,Gが以下のような時間単位でカウンタに到着し、サービスを受けた場合の平均待ち時間を計算してみなさい。
time dur
A 1 3
B 2 3
C 3 4
D 4 2
E 5 5
F 6 2
G 7 3
2つの待ち行列Q1、Q2とする客は待ち行列の短い方でサービスを受ける。また、待ち行列の長さが同じなら、Q1でサービスを受けるとする
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (VC 6.0またはbcc32)
[3.3] 言語: (C/C++/どちらでも可)
[4] 期限: ([2006年01月23日まで])
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1518.cpp
このサンプルの欠けている関数を埋めていくと完成するらしい。
でも、上のコードが読みづらい場合は0から好きなように作ってもよいそうです。
二つQueueがあって、待ちが少ない方に新しくきた客がpushされていくシミュレーションで、
待ち始めてからサービス終了してpopするまでの待ち時間の平均値を出せという問題のようです。
割と難しいのではないかと思いますが、どうかよろしくお願いします。
0399デフォルトの名無しさん
2006/01/21(土) 22:33:48[2] 問題文(含コード&リンク):
同じ長さの文字列2個(s1,s2)を比較して s1>=s2なら1 s1<s2なら0 を返す関数を作成せよ。
また、文字列の大小は辞書順。例えば a>b a=a ab>ac となる。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC++ 6.0
[3.3] 言語: C++
[4] 期限: 2006年1月24日まで
[5] その他の制限: ポインタを使うこと。また、文字列に含まれる文字は小文字のみ。
よろしくお願いします。
0400デフォルトの名無しさん
2006/01/21(土) 22:55:45#include <string>
int compare(const std::string& lhs, const std::string& rhs){
return std::lexicographical_compare(rhs.begin(), rhs.end(), lhs.begin(), lhs.end()) ? 0 : 1;
}
どこにポインタ使うんだ? そんな「C++言語」って授業は受ける価値なし。
っていうかs1<s2がtrueだろ。常識的に考えて。
0401デフォルトの名無しさん
2006/01/21(土) 22:58:40全然C++じゃないが。
0402デフォルトの名無しさん
2006/01/21(土) 23:03:29ソースがどう見てもCなんだが、本当にC++でもいいのか?
0403デフォルトの名無しさん
2006/01/21(土) 23:05:14悪意があって言う訳ではないので誤解しないで欲しい。
lexicographical_compare()は#include <algorithm>が必要。
0404デフォルトの名無しさん
2006/01/21(土) 23:14:36出題者(センセ)のセンスを疑う問題だな
0405デフォルトの名無しさん
2006/01/21(土) 23:23:25センスを疑うレスだな
0406デフォルトの名無しさん
2006/01/21(土) 23:48:47えー
0407デフォルトの名無しさん
2006/01/21(土) 23:50:58VCだと通っちまうので忘れてた。thnx.
0408デフォルトの名無しさん
2006/01/22(日) 00:06:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1519.txt
嫌がらせのようにC++で。
まぁシミュレーションという授業なら、自前でqueueなんか組まなくてもいいでしょう。
0409デフォルトの名無しさん
2006/01/22(日) 00:11:550410デフォルトの名無しさん
2006/01/22(日) 00:31:42列への追加は、サービス終了判定のあとが正しいですね。
timeループの中を、counter_a/bの終了判定、列への追加while、開始時刻設定の順に訂正します。
0411名無し
2006/01/22(日) 01:04:38どうかよろしくお願いします。
0412デフォルトの名無しさん
2006/01/22(日) 01:09:260413デフォルトの名無しさん
2006/01/22(日) 01:40:29ポインタについて質問させてください
int i;
void*p;
uint32*ui32p;
p = malloc(1024);
ui32p = (uint32* )p;
for (i=0;i<5;i++)
ui32p[i] = i*i;
↑のソースで一番下の行がどういった動作をしているのかがわかりません
uint32型のポインタに[ ]をつけるというのはどういうことなのでしょうか?
文字列のポインタに[ ]をつけるのはよく見かけるのですが・・・
0414デフォルトの名無しさん
2006/01/22(日) 01:41:11こんなのでいかがか
int find_max(int *a, int m, int n) {
int b, c;
switch (n - m) {
case 1:
return a[m] < a[n] ? a[n] : a[m];
case 0:
return a[m];
default:
return (b = find_max(a, m, (m + n) / 2)) < (c = find_max(a, (m + n) / 2 + 1, n)) ? c : b;
}
}
int find_min(int *a, int m, int n) {
int b, c;
switch (n - m) {
case 1:
return a[m] < a[n] ? a[m] : a[n];
case 0:
return a[m];
default:
return (b = find_min(a, m, (m + n) / 2)) < (c = find_min(a, (m + n) / 2 + 1, n)) ? b : c;
}
}
#include <stdio.h>
int main(void) {
int i, a[32];
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) scanf("%d", a + i);
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) printf("%d\n", a[i]);
printf("\nMax:%d\nMin:%d\n", find_max(a, 0, sizeof(a) / sizeof(a[0]) - 1), find_min(a, 0, sizeof(a) / sizeof(a[0]) - 1));
return 0;
}
0415デフォルトの名無しさん
2006/01/22(日) 01:42:14何のポインタだろうが、a[i]は*(a + i)と同じ。
0416デフォルトの名無しさん
2006/01/22(日) 01:46:49ポインタに[]をつけるのは配列と同じとでも考えてればよか
char *p="ABCDEF";
*pはAだしp[0]もAだ
0417413
2006/01/22(日) 01:52:11数値型に対して*(a + i)のようにするというのがどういうことなのかわかりません
文字列ならば*(a + i)でi個先の文字を参照したりできますが数値型だと何を参照するのでしょうか?
0418デフォルトの名無しさん
2006/01/22(日) 01:53:480419デフォルトの名無しさん
2006/01/22(日) 01:56:58[2] 問題文(含コード&リンク):
以下の関数を完成せよ。
int hoge(x,y)
int x,*y;
{
/*
関数の機能:
「変数xの値」と「ポインタyが示す変数値」をかけたものを「ポインタyが示す変数値」
に代入する。戻り値は「変数xの値」と「ポインタyが示す変数値」を足したものとする。
*/
}
3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月23日でお願いします。
[5] その他の制限:特にないです。
0420デフォルトの名無しさん
2006/01/22(日) 01:58:540421デフォルトの名無しさん
2006/01/22(日) 02:01:080422デフォルトの名無しさん
2006/01/22(日) 02:01:40*&*y = *&*&*&x*&**y;
return *&*&*&x+&**y;
0423413
2006/01/22(日) 02:06:16ということは413のコードだと1024バイトの領域を確保してるのでuint32型の数値が256格納できる
したがって、ui32p[0]〜ui32p[255]までは値を格納できると考えてよいのでしょうか?
0424デフォルトの名無しさん
2006/01/22(日) 02:06:34ありがとうございます。
0425デフォルトの名無しさん
2006/01/22(日) 02:08:15そういうこと
>>419
その引数の宣言方法は古い。その先生に「貴方の頭は化石ですか?」と
言ってやれ。
int hoge(int x, int *y) {
*y *= x;
return x + *y;
}
0426デフォルトの名無しさん
2006/01/22(日) 02:08:24同じと考えるのは微妙にマズイ
0427デフォルトの名無しさん
2006/01/22(日) 02:09:23工エエェェ(´д`)ェェエエ工工
0428デフォルトの名無しさん
2006/01/22(日) 02:10:29ま、そのうち分かるんだろうけど、面倒なことにはなるな。
しかし、そこのとこの教育方法については毎回宗教戦争じみたことに
なるから、やめとこ。
0429デフォルトの名無しさん
2006/01/22(日) 02:12:37マズイがマズはこれでいいと思う
本格的に困ったらまた相談に来るなり
自分で調べるなりするでしょ
大学の授業とかなら同じと考えてもまぁいいと思ってそう書いちゃった
0431デフォルトの名無しさん
2006/01/22(日) 02:13:260432デフォルトの名無しさん
2006/01/22(日) 02:14:400433デフォルトの名無しさん
2006/01/22(日) 02:24:48今日試験を受けた人間からがゆとり世代でしょ?
0434デフォルトの名無しさん
2006/01/22(日) 03:22:50こうじゃないのか?
int hoge(int x, int *y) {
int tmp = *y;
*y = x * tmp;
return x + tmp;
}
0435デフォルトの名無しさん
2006/01/22(日) 03:54:24それと>425のどこが違うのかね。
0436デフォルトの名無しさん
2006/01/22(日) 04:14:46見た目と手間と使用メモリ
0437デフォルトの名無しさん
2006/01/22(日) 04:28:18>>425の場合はy = 6, ret = 8
>>434の場合はy = 6, ret = 5
てことじゃねーの?
0438デフォルトの名無しさん
2006/01/22(日) 09:41:00[2] テキストファイルを読み込み、単語検索のアルゴリズムを作成する。
テキストファイルの中には数字や記号はなく、単語と単語の間はスペースが存在します。
[3]
[3.1] OS:Linux
[3.2]コンパイラ名:gcc
[3.3]言語:C
[4]2006/1/30まで
手こずってます。よろしくお願いします。
0439デフォルトの名無しさん
2006/01/22(日) 10:04:26[2] 問題文(含コード&リンク):
キーボードからEnqueue,Dequeue,Endの指示を読み込み、Enqueueであればscanfで整数データを読み込み、
データをキューへ追加、Dequeueであればキューからデータを削除するプログラムを作ること。
キューの処理はEndの指示を読み込まれた時点で終了する。各指示の実行後のキューを画面表示するようにすること。
[実行例]
1-20>a
Enqueue[1],Dequeue[2]End[0]:1
Data>4
List:[ 4]
Enqueue[1],Dequeue[2]End[0]:1
Data>3
List:[ 4, 3]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 3]
Enqueue[1],Dequeue[2]End[0]:1
Data>5
List:[ 3, 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[]
Enqueue[1],Dequeue[2]End[0]:0
List:[]
1-20>
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月23日まで
[5] その他の制限: 学び始めて間もなく理解していきたいので、多少コメントを含めて頂けると助かります。
宜しくお願いしますm(_ _)m
0440デフォルトの名無しさん
2006/01/22(日) 11:10:26ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1520.txt
このプログラムはキューに入ってるデータは表示されてないから、あとは自分で考えてくれ。
0441デフォルトの名無しさん
2006/01/22(日) 11:31:46int SWProc(void){ printf("発見\n"); return 0; }
int SerchWord(char *filename,char *key,int(*lpSWProc)(void) = SWProc)
{
FILE *in = fopen(filename,"r");
if(!in) return 0;
char *lpBuf = (char*)calloc(1024,sizeof(char));
if(!lpBuf){ fclose(in); return 9; }
while(fscanf(in,"%s",lpBuf)!=EOF)
if(!strcmp(lpBuf,key)) lpSWProc();
free(lpBuf); fclose(in); return 1;
}
SerchWord関数
char *filename 対象ファイルの名称
char *key 検索文字
int(*lpSWProc)(void) = SWProc コールバック関数もどき(判らなければ指定しなくてOK)
filenameを"r"モードでオープンして全単語(EOFまで)をkeyと照会
もしkeyとその単語が一致した場合SWProc関数もしくは第3引数で指定された関数が処理される。
使い方 SerchWord("nurupo.txt","こんにちは");
戻り値 0ならば関数失敗、0以外なら成功
#include <stdio.h> #include <stdlib.h> #include <string.h>
追伸:C++の機能つかっちまいました
0442デフォルトの名無しさん
2006/01/22(日) 12:22:25[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/last.htm
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: V.C6.0
[3.3] 言語: C++
[4] 期限: 今日中
57代目の852さん再アップお願いします。助けてください。
0443デフォルトの名無しさん
2006/01/22(日) 14:09:37[1] 情報処理
[2] ニュートン法orロンバーグ積分を用いて数値計算を行う(無理数など、出来れば自然対数の底)
[3] ビジュアルc
[3.1] OS: Windows
[3.2] ビジュアルc
[3.3] c++
[4] 今日中
[5] その他の制限:for文if文中心でお願いします。
0444デフォルトの名無しさん
2006/01/22(日) 15:00:07[2] 問題文
整数(AとB)をスキャンして
Aの値はBの〜%か求める。
[3] C Pad for Borland C++Compiler
[3.1] OS: Windows XP Pro
[3.2] BCC55
[3.3] C
[4] 今日中
[5] まだまだ始めの方なんですけど
0445デフォルトの名無しさん
2006/01/22(日) 15:16:15どうでもいいけどSearchな。
0446デフォルトの名無しさん
2006/01/22(日) 15:17:48#include<stdio.h>
int main()
{
int a,b;
scanf("%d,%d",&a,&b);
printf("%dは%dの%d%です\n",a,b,a*100/b);
return 0;
}
0447デフォルトの名無しさん
2006/01/22(日) 15:17:48#include<stdio.h>
int main(void){
long a,b;
double par;
printf("Aを入力:");scanf("%ld",&a);
printf("Bを入力:");scanf("%ld",&b);
par = (double)a*100/b;
printf("AはBの%f%\n",par);
return 0;
}
0448デフォルトの名無しさん
2006/01/22(日) 15:19:450449デフォルトの名無しさん
2006/01/22(日) 15:27:47ダメ。
printf()の書式中では'%'は"%%"としないといけない。ついでに言えば、percentなんだからparはないだろ。
0450デフォルトの名無しさん
2006/01/22(日) 15:28:46>>447
有り難うございます〜。
447の中には習ってないのがあったので
446を使わせてもらいます。
二人とも有り難うございました〜^^
0451デフォルトの名無しさん
2006/01/22(日) 15:30:55あ・・\\だけじゃなかったか
スペルは英語できないから勘弁
0452デフォルトの名無しさん
2006/01/22(日) 15:37:06ハズカシス
0453デフォルトの名無しさん
2006/01/22(日) 15:39:05'\\'はいつでもそう書かなければならないけど、
'%'はprintf()系scanf()系の書式文字列内のみだから念のため。
0454444
2006/01/22(日) 15:44:060455デフォルトの名無しさん
2006/01/22(日) 15:48:01お、本当だputsだと%2個出る
0456デフォルトの名無しさん
2006/01/22(日) 15:55:58俺通ってるガッコの先生の課題だな俺は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1522.txt
で出したんだが俺バカチンなのでこのスレの諸兄の方々の熱い煽りとツッコミをお待ちしています
0457デフォルトの名無しさん
2006/01/22(日) 15:59:570458デフォルトの名無しさん
2006/01/22(日) 16:02:02それを直すんなら
訂正前>while(s1[i]==s2[i]){
訂正後>while(s1[i] != '\0' && s1[i]==s2[i]){
だな。
0459デフォルトの名無しさん
2006/01/22(日) 16:05:42s2 もチェックな
あと関数名がキモい
0460デフォルトの名無しさん
2006/01/22(日) 16:10:05不要。
あと関数名がキモいのは同意。
0461デフォルトの名無しさん
2006/01/22(日) 16:14:580462デフォルトの名無しさん
2006/01/22(日) 16:19:020463デフォルトの名無しさん
2006/01/22(日) 16:28:020464デフォルトの名無しさん
2006/01/22(日) 16:28:02[2] 問題文(含コード&リンク):
球の半径r(倍精度浮動小数点型の変数)の値を関数scanfで入力して、
その面積S1と表面積S2(S1,S2は倍精度浮動小数点型変数)を計算し、
表示(出力)するという作業を繰り返すプログラムを作成せよ。
ただし、半径rとして数値0が入力されたときには、その処理を終了することとする。
また、面積はS1=π(r*r)、表面積はS2=4π(r*r)で計算されるものとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:StudyC
[3.3] 言語:C
[4] できれば火曜までに
[5] 宿題とかじゃなく、テスト勉強のですがお願いします。
0465デフォルトの名無しさん
2006/01/22(日) 16:37:580466デフォルトの名無しさん
2006/01/22(日) 16:38:330467デフォルトの名無しさん
2006/01/22(日) 16:42:00#include<stdio.h>
#define pi 3.14159
void kyu(double r){
printf("S1 = %f\n",pi*r*r);
printf("S2 = %f\n",4*pi*r*r);
}
int main(void){
double r;
while(1){
scanf("%lf",&r);
if(r==0.0)break;
kyu(r);
}
return 0;
}
0469デフォルトの名無しさん
2006/01/22(日) 16:49:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1524.txt
0471デフォルトの名無しさん
2006/01/22(日) 17:19:49[2] 問題文:
要素数20、char型の配列mojiを用意し、入力する。ポインタ変数を用いて
文字数を求めるプログラムを作成しなさい。
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数
実行結果
文字列入力==>ABCD
文字数:4
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 明日の午前まで。
[5]標準関数strlenは使わないこと。
0472デフォルトの名無しさん
2006/01/22(日) 17:20:57[2] 問題文:
char型の配列mojiを用意し、初期化する。ポインタ変数を用いて大文字、
小文字、数字の文字数を求めるプログラムを作成しなさい。
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
実行結果
英大文字:3
英小文字:2
数字:3
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 明日の午前まで。
この2つです。お願いします。
0473デフォルトの名無しさん
2006/01/22(日) 17:30:43int strlen(char *lpStr)
{
int count=0;
while(lpStr[count]) ++count;
return count;
}
こんなんでいいんじゃない?
>>472
2バイト文字は含むの?
0474デフォルトの名無しさん
2006/01/22(日) 17:31:16#include<stdio.h>
int main(void)
{
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数
printf("Input string\n");
gets(moji);
for(cnt=0;*(mp+cnt)!='\0';cnt++)
{}
printf("count:%d\n",cnt);
return 0;
}
0475デフォルトの名無しさん
2006/01/22(日) 17:35:142バイト文字は含まないです。
0476デフォルトの名無しさん
2006/01/22(日) 17:38:24#include<stdio.h>
int main(void)
{char moji[]="AB120aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
int cnt;
alphl=0;
alphs=0;
num=0;
for(cnt=0;*(mp+cnt)!='\0';cnt++){
if(*(mp+cnt)>='A'&&*(mp+cnt)<='Z'){
alphl++;
}
else if(*(mp+cnt)>='a'&&*(mp+cnt)<='z'){
alphs++;
}
else if(*(mp+cnt)>='0'&&*(mp+cnt)<='9'){
num++;
}
}
printf("大文字:%d\n",alphl); printf("小文字:%d\n",alphs); printf("数字:%d\n",num);
return 0;
}
0477デフォルトの名無しさん
2006/01/22(日) 17:41:06#include<stdio.h>
int main(void){
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl=0; //大文字の数
int alphs=0; //小文字の数
int num=0; //数字の数
while(*mp!='\0'){
if(*mp>='A'&&*mp<='Z')alphl++;
else if(*mp>='a'&&*mp<='z')alphs++;
else if(*mp>='0'&&*mp<='9')num++;
mp++;
}
printf("英大文字:%d\n",alphl);
printf("英小文字:%d\n",alphs);
printf("数字:%d\n",num);
return 0;
}
0478デフォルトの名無しさん
2006/01/22(日) 17:47:590479デフォルトの名無しさん
2006/01/22(日) 17:56:160480デフォルトの名無しさん
2006/01/22(日) 17:59:11提出する本人が知っていて使う分には問題ないと思うが
0481デフォルトの名無しさん
2006/01/22(日) 18:00:160482デフォルトの名無しさん
2006/01/22(日) 18:00:22出てこない授業も少なくない希ガス
0483デフォルトの名無しさん
2006/01/22(日) 18:06:220484デフォルトの名無しさん
2006/01/22(日) 18:07:54俺も思った 頑張ろう
0485デフォルトの名無しさん
2006/01/22(日) 18:11:250486デフォルトの名無しさん
2006/01/22(日) 18:12:560487デフォルトの名無しさん
2006/01/22(日) 18:15:170488デフォルトの名無しさん
2006/01/22(日) 18:18:110489デフォルトの名無しさん
2006/01/22(日) 18:18:45ガンガル。
>>485
いや素でかっこいい。知識ある者への敬う気持ちが生まれた。
モチベーションの確保にも役に立つし。
てかマジかっけ〜よ・・・。>>487くれ!!DNAを。
0490デフォルトの名無しさん
2006/01/22(日) 18:20:350491デフォルトの名無しさん
2006/01/22(日) 18:23:100492デフォルトの名無しさん
2006/01/22(日) 18:26:46俺20秒あれば昇天できんだけど・・・OTL
0493デフォルトの名無しさん
2006/01/22(日) 18:27:260494デフォルトの名無しさん
2006/01/22(日) 18:33:03「C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ」
というのが出題されたのですが、どうしたらいいのでしょうか?
0495デフォルトの名無しさん
2006/01/22(日) 18:34:09ちんぽ剥いてしこしこ汁
0496デフォルトの名無しさん
2006/01/22(日) 18:34:17api
0497デフォルトの名無しさん
2006/01/22(日) 18:39:15RegCreateKeyEx
とか
RegSetValueEx
とか
0498デフォルトの名無しさん
2006/01/22(日) 19:23:41できれば具体例を教えていただけないでしょうか?
0499デフォルトの名無しさん
2006/01/22(日) 19:25:260500デフォルトの名無しさん
2006/01/22(日) 19:37:11[1] 授業単元: プログラミング�V
[2] 問題文(含コード&リンク): C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: ([2006年2月04日午後まで]
[5] その他の制限: 特になし
0501デフォルトの名無しさん
2006/01/22(日) 19:39:17[2] 問題文
次のようなLISPプログラムを書け
アトムとして整数のみを含むs表現wを入力とし、w中に現れる0以外の整数を全て掛け合わせた結果を計算する関数MULTALL(w)を帰納的に定義せよ
帰納的でないプログラムは回答と見なさない
例 w=((3.((1.0).−2)).(2.0))のとき、MULTALL(w)=−12。
LISPの文法の詳細については問わないが、なるべく読みやすく書くこと。
なお、整数の乗算には、以下のLISPの組み込み関数TIMESを使うこと。
TIMES(m、n) =m×n
[3] 環境
[3.1] OS: Windows
[3.2] ごめんなさい、わかりません
[3.3] 同上
[4] 期限:今月中
超初心者なので、教科書とか読んでもサッパリです、出来ればどなたかどうかお願いします。
0502デフォルトの名無しさん
2006/01/22(日) 19:45:230503デフォルトの名無しさん
2006/01/22(日) 19:50:23正直コンピューター系とかは皆同じに見えてしまう…
スレ違いになるかもしれないど、その違いだけでも教えてもらえますか?
0504デフォルトの名無しさん
2006/01/22(日) 20:07:23[2] 問題文(含コード&リンク):自由課題、ただし条件判断と繰り返し命令、配列は
かならず用いること。関数、ポインターなどは必要に応じて用いればよい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C
[4] 期限: 1月23日12:00まで
[5] その他の制限:なし
C言語の授業が分からなかったため最終課題ながら
全然思いつきませんでした、よろしくお願いします。
0505デフォルトの名無しさん
2006/01/22(日) 20:09:54オセロ
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;int k(){if(m[p]==0)for(i=m;*i;i
++){for(v=p+*i;m[v]==9-t;v+=*i){}if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+=*
i;while(m[v]-t);}return 0;}int main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a
=d=0){for(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9
:s?s=0,puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}}
0506デフォルトの名無しさん
2006/01/22(日) 20:16:370507デフォルトの名無しさん
2006/01/22(日) 20:42:08#include <stdio.h>
#include <string.h>
int main()
{
char s[256];
int len;
int i;
char tmp;
printf(" input string: ");
scanf("%s",s);
if ((strlen(s))==1){ return 0; }
len = strlen(s);
for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = tmp;
}
printf("output string: %s\n", s);
return 0;
}
これは前の文字入れ替え課題の誰かが作った(どこにあるかわからんw)ソースに
ifを付け足した奴でつ。
たぶん大丈夫
0508デフォルトの名無しさん
2006/01/22(日) 20:50:45[2] 問題文(含コード&リンク): 1+2*3-4を標準入力から入力し計算順に
((1+(2*3))-4)とカッコをつけて出力
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限: 二分木で表現をお願いします。あと演算子の優先度と
左結合でお願いします。
ずっと出来なくて悩んでいます。どなたか教えてください。
0509デフォルトの名無しさん
2006/01/22(日) 20:52:070510デフォルトの名無しさん
2006/01/22(日) 20:52:480511デフォルトの名無しさん
2006/01/22(日) 20:55:42じゃあ俺も書いたけど結局貼らなかったやつ貼っとく
#include <stdio.h>
#include <string.h>
void strswap(char *s,int n)
{
int i,n1,n2;
char temp[256];
if(n%2==0){
n2=n/2;
}
else{
n2=n/2+1;
temp[n/2]=s[n/2];
}
for(i=0;i<n/2;i++){
temp[i]=s[n2+i];
temp[n2+i]=s[i];
}
temp[n]='\0';
strcpy(s,temp);
}
int main()
{
char s[256];
printf("-->");
scanf("%s",s);
strswap(s,strlen(s));
printf("-->%s\n",s);
return 0;
}
0512デフォルトの名無しさん
2006/01/22(日) 20:55:57ここであってますかね(´・ω・`)
0513デフォルトの名無しさん
2006/01/22(日) 20:57:340514デフォルトの名無しさん
2006/01/22(日) 20:58:220515デフォルトの名無しさん
2006/01/22(日) 20:59:380516515
2006/01/22(日) 21:00:360517デフォルトの名無しさん
2006/01/22(日) 21:00:59とりあえずLispスレへ行け。
Lispは方言が多種多様で、「Lisp」だけでは何もわからんという点にも留意しろ。
授業で使うならおそらくまともに規格があるCommonLispかSchemeだろうが…
0518デフォルトの名無しさん
2006/01/22(日) 21:03:29おそらくそんなスレないだろうからやるとしたらここじゃね?
とりあえず問題書いてみれ
0519512
2006/01/22(日) 21:04:200520デフォルトの名無しさん
2006/01/22(日) 21:04:580521デフォルトの名無しさん
2006/01/22(日) 21:06:41エラーの対処がよくわからなくて困ってる
使ってるフリーのコンパイラ(lsic330c)だとエラーを通してしまう上に
ウィンドウズエラーに発展するのでVC++にエラーチェックしてもらった
エラー箇所
NODE_T *new_node;
new_node=malloc(sizeof(NODE_T));
if(new_node == NULL){
fprintf(stderr,"malloc_ERR\n");
exit(1);
}
出力
1>.\tester.cpp(34) : error C2440: '=' : 'void *' から 'NODE_T *' に変換できません。
1> 'void*' から非 'void' 型への変換には明示的なキャストが必要です。
0522デフォルトの名無しさん
2006/01/22(日) 21:07:350523デフォルトの名無しさん
2006/01/22(日) 21:11:09C言語ではvoid *型から他のポインタへの変換は自由にやってよい。コンパイラもエラー報告しなくていい。
C++言語ではvoid *型から他のポインタへの変換には明示的なキャストが必要。
具体的には>>522のようにする。
0524デフォルトの名無しさん
2006/01/22(日) 21:11:12お前、CとC++を混同してるだろ?
0525デフォルトの名無しさん
2006/01/22(日) 21:11:39ありがとう、こいつが直接の原因じゃなかったみたいだ
もうちょっと悩むとしよう
0526デフォルトの名無しさん
2006/01/22(日) 21:12:110527デフォルトの名無しさん
2006/01/22(日) 21:13:15いや、してないつもりが親切なメッセージが出るので原因がわからないエラーを対処するのに使ってる
0528デフォルトの名無しさん
2006/01/22(日) 21:16:31ただ、ここは添削はスルーされることも多いんで、スルーされても文句言うな。
0529デフォルトの名無しさん
2006/01/22(日) 21:19:59C++でエラーになってもCでは正当なこともある。
尤も、CよりC++の方が安全寄りな警告をくれる傾向にあるので、
それを参考にするのは悪くないと思う。
でも、それなら最初からC++で書けばいいんじゃね?
0530512
2006/01/22(日) 21:24:40[2] 問題文 BASICをCに書き直す
[3] 環境
[3.1] OS:windows
[3.2] VC6.0
[3.3] C
[4] 期限: 無期限
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1525.txt
よろしくお願いします
0531デフォルトの名無しさん
2006/01/22(日) 21:28:41全文貼るには少々長すぎる
先生の作ったプログラムに関数を付け足す課題でね
printfで順にチェックすることにするよ
>>529
Cの課題だし、それは怒られそうな気がする
0532デフォルトの名無しさん
2006/01/22(日) 21:29:20mallocの戻り値はvoid *なので、明示的なキャストが必要。
0533デフォルトの名無しさん
2006/01/22(日) 21:31:40gcc入れるって選択肢は無かったのか?
-Wall -ansi(もしくは-std=c99)付ければちゃんとメッセージ吐いてくれるが
0534デフォルトの名無しさん
2006/01/22(日) 21:32:30漏れはBASICわからないのについつい見てしまう、
PRINT程度しかわからんw
0535デフォルトの名無しさん
2006/01/22(日) 21:32:410536504
2006/01/22(日) 21:33:510537530
2006/01/22(日) 21:37:570538デフォルトの名無しさん
2006/01/22(日) 21:38:31あれ、gccってwinで使えるのあるの?
0539デフォルトの名無しさん
2006/01/22(日) 21:39:220540デフォルトの名無しさん
2006/01/22(日) 21:41:390541デフォルトの名無しさん
2006/01/22(日) 21:48:19猫だけど参考になるかな
http://www.kumei.ne.jp/c_lang/sdk2/sdk_129.htm
0542デフォルトの名無しさん
2006/01/22(日) 21:55:00猫のをそのままパクって作った
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1526.txt
0543デフォルトの名無しさん
2006/01/22(日) 21:55:31お前はCygwinを知らないのかと小一時間ry
それにVMwarePlayerでLinuxって手もあるしな
0544デフォルトの名無しさん
2006/01/22(日) 22:02:18ぼちぼちやってるんで、てきとーに。>>536
1行1行をそのまま手作業てトランスレートするんで。今日は2行やったところでおしまい。
期限があるなら、明示しといて。
0545デフォルトの名無しさん
2006/01/22(日) 22:07:35[2] 問題文下に書きます
[3] 環境
[3.3] 言語: C
[4] 期限:2006年1月24日まで
[5] その他の制限:特にないです
長文になりますが申し訳ありません。
よろしく御願いします。
0546デフォルトの名無しさん
2006/01/22(日) 22:09:030547デフォルトの名無しさん
2006/01/22(日) 22:29:31失礼しました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
No1527です。よろしく御願いします
0548デフォルトの名無しさん
2006/01/22(日) 22:33:20[2] 問題文(含コード&リンク):http://mmmooo.web.fc2.com/c.txt
[3] 環境
[3.1] OS:winXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006.2.1
[5] その他の制限:特にありません。
よろしくお願いします
0549デフォルトの名無しさん
2006/01/22(日) 22:39:17[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1528.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみでおねがいします。
[4] 期限: 2006年1月24日15:00まで
[5] その他の制限: 非常に難しい問題です、知恵を貸してください。おねがいします。
0550デフォルトの名無しさん
2006/01/22(日) 22:50:42スレを別に立てるな!
0551デフォルトの名無しさん
2006/01/22(日) 22:52:47難しいんじゃなくて、問題文が長いだけ。
0552デフォルトの名無しさん
2006/01/22(日) 23:11:27[2] 問題文: ウィルスを作れ
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C or C++ (部分的にアセンブラも可(x86))
[4] 期限: 無期限
[5] その他の制限: 特にありません。
よろしくお願いします。
0553デフォルトの名無しさん
2006/01/22(日) 23:12:30トランザクションファイルを作れば簡単。
0554デフォルトの名無しさん
2006/01/22(日) 23:17:26その課題出したやつを晒せ。通報してやる
0555デフォルトの名無しさん
2006/01/22(日) 23:35:01#include <stdio.h>
#include <math.h>
void GYAKU();
int P,R,II,BIT;
main(){
int N,IR,I,J2,K,K1,KK,L1,L;
float DEG,ARG,A,B,C,S,tmp;
printf("input N,R");
scanf("%d,%d",&N,&R);
float XR[N],XI[N];
XR[0]=1; XR[1]=1; XR[2]=1; XR[3]=1;
IR=1;
J2=N;
DEG=2*3.14159/N;
K=0; L1=R-1;
for(L=1; L<=R; L++){
J2=J2/2;
for(I=1; I<=J2; I++){
P=K/pow(2,L1);
GYAKU();
ARG=DEG*BIT;
C=cos(ARG); S=IR*sin(ARG);
K1=K+J2;
A=XR[K1]*C+XI[K1]*S;
B=XI[K1]*C-XR[K1]*S;
XR[K1]=XR[K]-A; XI[K1]=XI[K]-B;
XR[K]=XR[K]+A; XI[K]=XI[K]+B;
K=K+1;
}
0556デフォルトの名無しさん
2006/01/22(日) 23:35:47if(K<N) continue;
K=0; L1=L1-1;
}
printf("final reordering");
for(KK=0; KK<N-1; KK++){
P=KK;
GYAKU();
if(BIT<=KK) continue;
tmp=XR[KK];XR[KK]=XR[BIT];XR[BIT]=tmp;
tmp=XI[KK];XI[KK]=XI[BIT];XI[BIT]=tmp;
}
for(I=0; I<N-1; I++)
printf("%2f.%3f",XR[I],XI[I]);
}
void GYAKU(){
int B1,B2;
B1=floor(P);
BIT=0;
for(II=1; II<R; II++){
B2=floor(B1/2);
BIT=BIT*2*B1-2*B2;
B1=B2;
}
return ;
}
大文字を小文字に変えるとかは知らね
0557デフォルトの名無しさん
2006/01/22(日) 23:50:18「ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。」
ローカルルールくらい読め。
0559デフォルトの名無しさん
2006/01/22(日) 23:57:07printf("making wirus");
for(i=0;i<10;i++)
printf("・");
printf("\nウィルス!!");
0560デフォルトの名無しさん
2006/01/23(月) 00:00:02素直にSQL教えればいいのに・・・
0561デフォルトの名無しさん
2006/01/23(月) 00:17:54[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):ある画像を3秒後に別の画像に差し替える。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:1/24
0562デフォルトの名無しさん
2006/01/23(月) 00:48:27RDBが如何にして動いてるかを教えるためじゃね?
0563デフォルトの名無しさん
2006/01/23(月) 00:56:07[2] 問題文:
実数(double)xと整数(int)nをキーボードから入力し、xの2乗、3乗、...、
n乗を計算し、画面に表示するプログラムを以下の点を守って作成し、
正しく動作することを確認せよ。
(1) xとnはmain関数内で入力すること。nに負の数が入力された場合にはそ
の旨表示して終了すること。
(2) 画面出力はmain関数内で以下のような出力形式で行うこと
(多少異なっていても構わないが、1行で表示される内容を同じにする
こと)
[x=2.5 n=5の例]
2.500000^2=6.250000
2.500000^3=15.625000
2.500000^4=39.062500
2.500000^5=97.656250
(3) べき乗y^iを計算する関数
double power1(double y, int i)
を作成し、main関数から必要回数呼び出して使用すること(非効率なプ
ログラムになるが、今回はそうすること)
(4) C言語にはべき乗を計算するpow関数があるが、今回は使用しないこと。
[3] 環境
[3.1] OS: Windows
[3.2] Borland bcc
[3.3] 言語: C
[4] 期限: 1月25日
[5] その他の制限:pow関数は使用しない。よろしくお願いします
0564デフォルトの名無しさん
2006/01/23(月) 00:56:44画像ファイル2つ用意してリネームしるw
0565デフォルトの名無しさん
2006/01/23(月) 01:18:24非効率ついでに…
#include <stdio.h>
#include <stdlib.h>
double power1(double x, int n){
return n==0 ? 1 : n==1 ? x : x*power1(x, n-1);
}
main(){
char buf[256]; double x; int n;
printf("根(実数)?"); gets(buf); x=atof(buf);
printf("冪数(正の整数または0)?"); gets(buf); n=atoi(buf);
if(n<0) printf("欲嫁!\n");
else if(n<=1) printf("%f^%d=%f\n", x, n, power1(x,n));
else{
int i;
for(i=2;i<=n;++i){
printf("%f^%d=%f\n",x,i,power1(x,i));
}
}
}
0566デフォルトの名無しさん
2006/01/23(月) 01:21:33単に…
・ファイルからの読み込み
・リスト演算
・ファイルへの書き込み
・標準出力
・標準入力
…をひとつの課題で表現しようとしただけのような都市ガス
0567デフォルトの名無しさん
2006/01/23(月) 01:53:39[2] 問題文(含コード&リンク):
int型が16bitで表される場合、引数の4乗を返す関数quadが正しく動作する
引数はいくつまでか検討せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月24日でお願いします。
[5] その他の制限:特にないです。
0568デフォルトの名無しさん
2006/01/23(月) 02:01:36int型が16bitと書かれてるだけで引数(及び返値)がintなのか
unsignedなのかshortなのかlongなのかetc.が示されてない
よって問題不備により回答不能
こう言っとけ
まぁsigned intと仮定してやると、最大値は2^15-1で32767
よって、こいつの4乗根を取ると13.*
であるから、引数の最大値は13
0569デフォルトの名無しさん
2006/01/23(月) 02:05:31わかりました。ありがとうございます!
0570デフォルトの名無しさん
2006/01/23(月) 05:16:00最大値は15だと直ちに判るわけなのだが。
0571デフォルトの名無しさん
2006/01/23(月) 05:29:12おまえヒドスwww
0572お願いします!!
2006/01/23(月) 07:05:091つはどうにか終わりましたが、あと1日半で
4つ終わらせなければいけません。
どうか、みなさんのお力をお貸しください!お願いします!!
言語はC++です!!
問題1:
Wallet w;
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;
w.visitATMForCash( 50 );
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;
if (w.canPayFor( 25, 35 )) {
// you have enough to pay for it...
w.payFor( 25, 35 );
}
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;
// this time you won't have enough money
if (w.canPayFor( 25, 35 )) {
// you have enough to pay for it...
w.payFor( 25, 35 );
}
cout << "d:" << w.getDollars( );
cout << " c:" << w.getCents( ) << endl;
問題としては、自分の持っているお財布はお札とコインを収納
することが出来て、銀行へ行くと、更にお金をお財布に現金を
ふやすことができるということです。
先生がいうには、上に書いてあるのが、サンプルドライバーコードで
そのクラスをもっと、よいものにしなさい。ということなのです。
どうか、よろしくお願いしたします。
0573デフォルトの名無しさん
2006/01/23(月) 07:06:500574お願いします!!
2006/01/23(月) 07:34:34クラスレコードプレ−ヤーを作成。 レコードプレーヤーは、ビニール・レコードをかけることができるステレオコンポを表わします。
先生によると、サンプル・ドライバー・コードを使ってよりよい ものにするということです。
サンプルドライバー; cout << "--Test 1--" << endl;
RecordPlayer r;
r.turnOn();
r.affixPlatter( "Barry Manilow I" );
r.plopNeedle( );
r.returnNeedle( );
r.turnOff( );
cout << "--Test 2--" << endl;
RecordPlayer badr;
badr.plopNeedle( );
cout << "--Test 3--" << endl;
RecordPlayer badr1;
badr1.turnOn( );
badr1.plopNeedle( );
cout << "--Test 4--" << endl;
RecordPlayer badr2;
badr2.returnNeedle( );
cout << "--Test 5--" << endl;
RecordPlayer badr3;
badr3.turnOn( );
badr3.returnNeedle( );
0575お願いします!!
2006/01/23(月) 07:35:12--Test 1-- レコードプレーヤー オン...
レコードプレーヤーはバリー マニロウのアルバムを持っている I
レコードプレーヤーはバリーマニロウのアルバムをプレイする
レコードプレーヤーの曲をストップする。
レコードプレーヤー オフ...
--Test 2-- もし、電源がついていなければ、針を落とすことはできません。
--Test 3-- レコードプレーヤー オン。そのときに、アルバムがないと、針を落とすことは出来ません。
--Test 4-- 電源がオンの状態じゃないと、針を返せません。
--Test 5-- レコードプレーヤーをオンにする
レコードプレーヤー;
RecordPlayer( );
void turnOn( );
void turnOff( );
bool isPoweredOn( );
void affixPlatter( string record );
void plopNeedle( );
void returnNeedle( );
bool my_isOn;
string my_Record;
bool my_NeedleIsOnTheRecord; よろしくお願いいたします!言語はc++です!!で、問題2の続きです!!
0576デフォルトの名無しさん
2006/01/23(月) 07:39:100577ごめんなさい!
2006/01/23(月) 07:43:20テンプレってなんですか??ほんとにごめんなさい。
全然分からないことばっかりなのに、C++をとらなきゃいけないことに、なってしまって。。。
テンプレがなにか、教えてもらえますか??
次から、気をつけます!!すみませんでした。
0578デフォルトの名無しさん
2006/01/23(月) 07:45:37だから諦めな
0579デフォルトの名無しさん
2006/01/23(月) 07:47:49分かりました。。
0580デフォルトの名無しさん
2006/01/23(月) 07:51:33RecordPlayerとかのクラスは独自ライブラリでしょ?
C++標準にそんなクラス定義されてるの?
0581デフォルトの名無しさん
2006/01/23(月) 08:29:32C++に関して、本当に無知なので、標準にそういうクラスの定義が
されているかは、分かりません。。。
0582デフォルトの名無しさん
2006/01/23(月) 08:35:360583デフォルトの名無しさん
2006/01/23(月) 08:36:14それと、独自ライブラリなら、その説明なり定義なりが必要。
0584デフォルトの名無しさん
2006/01/23(月) 08:54:10アメリカで、C++を勉強していて、問題が英語なので、C++&英語の両方理解
出来る方に是非教えて欲しいです!
0585デフォルトの名無しさん
2006/01/23(月) 08:55:400586デフォルトの名無しさん
2006/01/23(月) 08:59:32C++以外にとりえがないんですね。かわいそうに。
きっと人間関係もうまく築けない残念な人たちなんですね。
さっさと退散します☆☆
一生C++だけで、食べていくことが出来るといいですね♪♪
0587デフォルトの名無しさん
2006/01/23(月) 09:01:010588デフォルトの名無しさん
2006/01/23(月) 10:53:57[2] 問題文(含コード&リンク):
書ききれないので次の場所に書きます
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: マイクロソフトビジュアルスタジオ
[3.3] 言語: C++
[4] 期限: 1月23日
[5] その他の制限: できれば全文書いてくださると助かります。
0589デフォルトの名無しさん
2006/01/23(月) 10:55:43sumlist を拡張し, 二項演算子 + の使える全ての型 T に対して使える
template 関数 template <class T> T sumlist(list<T>&) に拡張して下さい.
#include <iostream>
#include <list>
using namespace std;
int sumlist(list<int>& l);
int main() {
list<int> lst;
for (int i = 0; i < 10; i++)
lst.push_back(i);
cout << "size =" << lst.size() << endl;
for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
cout << *it << ' ';
cout << endl;
cout << "sum of lst = " << sumlist(lst) << endl;
for (list<int>::iterator it = lst.begin(); it != lst.end(); )
if ((*it) % 3 == 0)
it = lst.erase(it);
else
++it;
for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
cout << *it << ' ';
cout << endl;
cout << "sum of lst = " << sumlist(lst) << endl;
return 0; }
int sumlist(list<int>& l) {
int i = 0;
for (list<int>::iterator it = l.begin(); it != l.end(); ++it)
i += *it;
return i; }
0590デフォルトの名無しさん
2006/01/23(月) 10:57:37提出期限は1月30日です。
0591デフォルトの名無しさん
2006/01/23(月) 11:11:02[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: Visual c++ 6.0
[3.3] 言語:C
[4] 期限: なるべく早くにお願いします
助けて下さい
0592デフォルトの名無しさん
2006/01/23(月) 12:00:27[2] 問題文(含コード&リンク):
次の関数は「戻り値」あり「引数」なしの関数です。
下記の関数を作成し、戻り値を加算した結果を表示させる様に
プログラムmain関数を作成しなさい。
int plusA()
{
return (20);
}
int plusB()
{
retrun (40);
}
[3] 環境
[3.1] OS:Windows
[3.2] VIsual C++ 6.0
[3.3] 言語: C++
[4] 期限:今日中
[5] その他の制限: 自分の力で解きたいので、
完璧な答えと言うより答えに繋がるヒントを下さい。
宜しくお願いします。
0593デフォルトの名無しさん
2006/01/23(月) 12:05:43問題文そのものがヒントだ。
0594デフォルトの名無しさん
2006/01/23(月) 12:16:060595デフォルトの名無しさん
2006/01/23(月) 12:35:48漏れのモンテカルロだと100万回試行させて、37.4くらいなんだよ・・・。
0596デフォルトの名無しさん
2006/01/23(月) 12:42:52確か前に英語の問題が解かれていたこともあったし、ここは結構大学の先生も
見ているみたいだから、多分対応はできるんじゃないかとは思うけど、
基本的には日本語でのコミュニケーションを前提としているからやっぱりスレ違い
だと思う。
英語の勉強が必要だったら、英語のニュースグループとか探して
alt.comp.lang.learn.c-c++ とか comp.lang.c++ とかで教えてもらった方が
いいんじゃないかなぁ。英語の勉強は日本語でするより英語でした方がいいと思うし。
0597デフォルトの名無しさん
2006/01/23(月) 12:56:39[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 今月いっぱいまで
問題文など、問題に必要なものは下記の方へうpしました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1529.zip
不十分と書かれた部分は1行とは限らないそうです。
あと、この次の問題で上記のプログラムの計算量を測るにはどうしたらよいかという問題があります。
これについても答えていただけたら幸いです
宜しくお願いします。
0598デフォルトの名無しさん
2006/01/23(月) 13:03:44横レス
(1,0)-(5,0)-(5,30)-(1,30)-(1,0)の範囲に入ってる?
はみ出たり欠けたりしてない?
(試行する範囲が求める図形を全て覆っていれば大きくても問題ないと思うが)
先の長方形の面積*((図形の中に入った回数)/(全試行回数))
で求まると思う
0599デフォルトの名無しさん
2006/01/23(月) 13:19:43問題文のヒントじゃ足りなかったので、
もう少し答えに近付けるヒントが欲しかったです。
>>594
有難うございます!
参考にして、もう少し考えてみます。
0600デフォルトの名無しさん
2006/01/23(月) 13:34:47#include <numeric>
#include <list>
template <class Containor> typename Containor::value_type sumlist(Containor c)
{
return accumulate(c.begin(), c.end(), typename Containor::value_type());
}
int main()
{
list<int> lst;
for (int i = 0; i < 10; i++)
lst.push_back(i);
cout << "size =" << lst.size() << endl;
for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
cout << *it << ' ';
cout << endl;
cout << "sum of lst = " << sumlist(lst) << endl;
for (list<int>::iterator it = lst.begin(); it != lst.end(); )
if ((*it) % 3 == 0)
it = lst.erase(it);
else
++it;
for (list<int>::iterator it = lst.begin(); it != lst.end(); ++it)
cout << *it << ' ';
cout << endl;
cout << "sum of lst = " << sumlist(lst) << endl;
return 0;
}
0601デフォルトの名無しさん
2006/01/23(月) 13:43:350603デフォルトの名無しさん
2006/01/23(月) 19:44:21[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1532.txt
[3] 環境
[3.3] 言語:C
[4] 期限: 1月25日まで
初心者ですので難しく感じます。どうかよろしく御願いします。
[2] 問題文(含コード&リンク):
1.自分の名前(ローマ字)を表示し、その文字列の長さを求めよ。
2.2数の和を求める関数を定義せよ。(add()を定義)
3.for構文を用いて1から10までの数を表示するが、例外として5は表示しない。
4.*を使ってひし形を描け。
5.回文を作れ。(「abcdcba」のようなもの)
[3] 環境
[3.1] OS: WindowsXP
[3.2] すみませんが分かりません
[3.3] 言語:C
[4] 期限: 2006年1月29日
[5] その他の制限: 特にありません
申し訳ありませんがよろしくお願いします。
0605デフォルトの名無しさん
2006/01/23(月) 20:22:590606デフォルトの名無しさん
2006/01/23(月) 20:38:211.
#include <stdio.h>
#include <string.h>
int main()
{
char name[]="ここに名前を入力";
printf("%s\n%d文字です。\n",name,strlen(name));
return 0;
}
2.
int add(int x,int y)
{
return x+y;
}
3.
#include <stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++){
if(i==5) continue;
printf("%d",i);
}
putchar('\n');
return 0;
}
0607デフォルトの名無しさん
2006/01/23(月) 20:39:340608デフォルトの名無しさん
2006/01/23(月) 20:51:58ひし形と回文はそれぞれの定義が曖昧だから手出ししたくない
0609デフォルトの名無しさん
2006/01/23(月) 20:55:00[2] 問題文(含コード&リンク): 関数f(x,y)を引き渡すと、-1≦x≦1、、-1≦y≦1
の範囲で。この関数値を色表示する関数を持つプログラムを作りなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] lcc
[3.3] c言語
[4] 期限:1月24日
[5] その他の制限: 構造体および関数を指すポインタ
という単元での課題です。よろしくお願いします。
0610デフォルトの名無しさん
2006/01/23(月) 21:05:48#include <string.h>
#include <stdlib.h>
を追加
strdup()
・ライブラリで持っている処理系もあるので、名前がかち合う可能性がある。
・int len;→size_t len; /* まあ、これはいちゃもんだけど */
(設問で除外されてるが、できれば、malloc()の戻り値をチェックしたほうがいい。)
getword()
・char c;→int c; /* 初心者はよくやる */
・*w = c;→*w++ = c; /* まあ・・・忘れることもある・・・かな? */
(設問で除外されてるが、できれば、文字数がオーバーしてないかチェックしたほうがいい。)
wordtree()
・node->c = 2;→node->c++; /* さすがにこれはやらない。ただ書き忘れすることがある */
(設問で除外されてるが、できれば、strdup()とmalloc()の戻り値をチェックしたほうがいい。)
printtree()
・穴埋めを埋める(a) printtree(node->left); (b) printtree(node-right);
main()
・char word[MAXWORD + 1]; /* まあ・・・+1の忘れってのはよくあることで */
・fclose(fp);を書いておくべき。
(設問で除外されてるが、できれば、fopen()の戻り値をチェックしたほうがいい。)
アルゴリズム自体
・ソート済みの文字列を多く読み込ませると、スタックオーバーフローするはず。
0611デフォルトの名無しさん
2006/01/23(月) 21:22:51ありがとうございました。
おかげで設問2も分かりそうです。本当に助かりました。
0612デフォルトの名無しさん
2006/01/23(月) 21:33:10[2] 問題文(含コード&リンク):
1. ファイルからデータを読み込み、最大値、最小値、平均値
を標準出力に出力するプログラムを作成せよ。
・入力はfopen関数を用いてファイル名を直接指定すること。
・ファイルは以下の形式で記述されている:
1行目:データ個数(自然数)
2行目以降:各行1個のデータ(実数)
※ 1行目に記述された個数のデータは必ずあると考えてよい
これがそのファイルです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1533.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] Borland bcc
[3.3] C言語
[4] 期限:1月26日
よろしくお願いします
0613デフォルトの名無しさん
2006/01/23(月) 21:35:52読み面杉。
ありがとうございました
感謝です
あとはまだ時間もあるんで自力であがいてみます
ちなみにひし形作れって言うのは
こんなん描けということらしいです(.が入ってる部分は本当は空白です。ずれるんで仕方なく・・・・・・)
............*
......***
*****
......***
............*
0615デフォルトの名無しさん
2006/01/23(月) 21:44:59[2] 問題文(含コード&リンク):
変数x,yに3と8を代入して,x/yを計算し、商sと余りrを表示させよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1534.txt
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:LSI C-86試食版
[3.3] 言語: C
[4] 期限: [2006年01月25日00:00まで]
[5] その他の制限:<stdio.h>でお願いします
ここまで自力でやったけど、実行できません。宜しくお願いします。
0616デフォルトの名無しさん
2006/01/23(月) 21:56:53一番最後の「}」が全角になってる
0617デフォルトの名無しさん
2006/01/23(月) 21:57:40#include <stdio.h>
/* 関数は戻り値を必ず明記すること */
int main(int argc, char *argv[])
{
/* これは整数 */
int x,y,r;
/* 商は整数じゃ無理 */
double s;
x = 3;
y = 8;
/*「x / yはdouble型で計算しますよ、と指示*/
s = (double)x / y;
r = x % y;
printf("%d ÷ %d\n",x,y);
printf("商 = %lf\n",s);
printf("余り = %d\n",r);
return 0;
}
0618デフォルトの名無しさん
2006/01/23(月) 22:07:21ファイル名はわからんので、勝手に変えてちょ
#include <stdio.h>
int main()
{
int i,n;
double temp,sum=0,max,min;
FILE *fp;
if((fp=fopen("kadai.txt","r"))==NULL){
printf("Can't open\n");
return 1;
}
fscanf(fp,"%d",&n);
fscanf(fp,"%lf",&temp);
sum=max=min=temp;
for(i=0;i<n-1;i++){
fscanf(fp,"%lf",&temp);
sum+=temp;
if(max<temp) max=temp;
else if(min>temp) min=temp;
}
printf("MAX:%lf MIN:%lf AVE:%lf\n",max,min,sum/n);
fclose(fp);
return 0;
}
0619デフォルトの名無しさん
2006/01/23(月) 22:33:21ごめん。こんなのしか思いつかない。
nはひし形の段数だから、適宜変更してちょ。偶数はだめだけど。
#include <stdio.h>
int main()
{
int i,j,k=1,f=0,n;
n=5;
while(k>0){
for(i=n-k;i>=1;i--) printf(" ");
for(j=0;j<k;j++) printf("* ");
putchar('\n');
if(k==n) f=1;
if(f==0) k+=2;
else if(f==1) k-=2;
}
return 0;
}
0620デフォルトの名無しさん
2006/01/23(月) 22:41:410621デフォルトの名無しさん
2006/01/23(月) 22:45:29[2] 問題文(含コード&リンク):
以下のヒントを参考にして動的計画法を用いてナップザック問題を解くプログラムを作成せよ。
(組み合わせとその合計重量を順次出力するよう)
(ヒントは以下)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年1月26日まで
ヒントはここにあります。(1535.txt)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?
k番目の荷物のkを行、物品の合計重量を列にした二次元の表にして出力したいと思っています。
お願いします。
0622デフォルトの名無しさん
2006/01/23(月) 23:55:25お願いします、誰かといてください。
0624デフォルトの名無しさん
2006/01/24(火) 00:08:20makerなんていう和製英語が嫌だから拒否する。
0625デフォルトの名無しさん
2006/01/24(火) 00:55:55[2] 問題文(含コード&リンク):
N個の要素よりなる配列をmain関数に宣言する
配列にデータヲ読み込む関数をmainから呼んで入力を行い
データを書き出す関数を呼んで出力するプログラムを
ポインタで呼んでポインタで受け取るやりかたで表せ
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月24日
[5] その他の制限: 締め切りが今日までなのでおねがいします
0626デフォルトの名無しさん
2006/01/24(火) 02:09:18[2] 問題文(含コード&リンク):
浮動少数型の引数3つを取り、引数の平均を戻り値とする関数。
関数名や引数名は自分できめてよい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月26日でお願いします。
[5] その他の制限:特にないです。
0627質問者
2006/01/24(火) 02:27:59[1] 授業
数値C言語プログラム
[2] 問題文
微分方程式
y'ーxy=0
をオイラー法ORルンゲクッタ法で計算するプログラムを作成せよ
[3] 環境
[3.1] OS: Windows
[3.2] すいませんちょっとわかりません
[3.3] 言語: C
[4] 期限: 明後日まで
[5] その他の制限: 特にありません よろしくお願いします
0628デフォルトの名無しさん
2006/01/24(火) 02:48:33これでいいかな?
#include<stdio.h>
double heikin(double, double, double);
int main(){
double x,y,z;
printf("3つの数を入力\n");
printf("x = ");
scanf("%lf",&x);
printf("y = ");
scanf("%lf",&y);
printf("z = ");
scanf("%lf",&z);
printf("3つの数の平均は%fです\n",heikin(x,y,z));
}
double heikin(double x, double y, double z){
return (x+y+z)/3;
}
0629デフォルトの名無しさん
2006/01/24(火) 02:55:27本当は宿題は自分でやらないとためにならないけど、
期限が迫っているみたいだから特別。
#include <stdio.h>
#define N 50
int SetArray( int* hairetu ){
int i;
for (i=0 ; i< N ;i++) hairetu[i] = i*i;
return 0;
}
int PrintArray( int* hairetu ){
int i;
for (i=0 ; i<N ; i++) printf("H[%d] = %d\n", i, hairetu[i]);
return 0;
}
int main(){
int h[N];
SetArray( h );
PrintArray( h );
return 0;
}
0630デフォルトの名無しさん
2006/01/24(火) 03:27:38初期条件がないと解けんぞ。
0631デフォルトの名無しさん
2006/01/24(火) 04:28:23お願いします。
0632デフォルトの名無しさん
2006/01/24(火) 07:09:01試験前だから長いの嫌だ
わ、ありがとうございます
助かりました
0634デフォルトの名無しさん
2006/01/24(火) 11:33:57この問題が解ける方いませんか?木曜日が期限なんです。お願いします
0635デフォルトの名無しさん
2006/01/24(火) 11:37:510636デフォルトの名無しさん
2006/01/24(火) 11:53:50返信用メールアドレス(※必入力):[email protected]
お問い合わせ内容: オセロの質問 その他
詳しい内容:
http://pc8.2ch.net/test/read.cgi/tech/1137522945/634
にて、そちらの生徒さんから、質問を受けたのですが、答えてよいか迷っています。
こちらが用意できるものは、
・コンパイラすら通らないプログラム
・コンパイラは通るがまったく動かない、評価対象外のプログラム
・一応動くがなにも考えてないプログラム
・alpha-beta法を使った、思考ルーチン付きのよわっちいプログラム
・ソースフリーで出回っている強いプログラムのコピー
0637634
2006/01/24(火) 11:55:14[2] 問題文(含コード&リンク): http://www.ime.st/www.wit.ac.jp/~izumi/c/
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:?
[3.3] 言語: c
[4] 期限:1/26
0638デフォルトの名無しさん
2006/01/24(火) 11:59:050639デフォルトの名無しさん
2006/01/24(火) 12:03:09・プレーヤーは双方とも人間とする。
・プレーヤーは標準入力から石を置く場所を入力する。
・手の合法性の判断,挟まれた石の処理,ゲーム終了の判断,勝敗の判断,ゲーム盤の再表示,これらのことをプログラムが自動的に行う。
つまらない。
0640デフォルトの名無しさん
2006/01/24(火) 12:08:08んじゃ約束どおり表示だけね
初期化やら中身はまぁ頑張って
void print_board(int board[][10]){
int i,k;
char baka[3][3]={" ","●","○"};
char num[8][3]={"1","2","3","4","5","6","7","8"};
puts(" 1 2 3 4 5 6 7 8");
puts(" ┏━┳━┳━┳━┳━┳━┳━┳━┓");
for(i=1;i<9;i++){
printf("%s",num[i-1]);
for(k=1;k<9;k++){
printf("┃%s",baka[board[i][k]]);
}
puts("┃");
if(i==8)break;
puts(" ┣━╋━╋━╋━╋━╋━╋━╋━┫");
}
puts(" ┗━┻━┻━┻━┻━┻━┻━┻━┛");
}
0641デフォルトの名無しさん
2006/01/24(火) 13:13:09お願いします。
0642デフォルトの名無しさん
2006/01/24(火) 13:22:520643デフォルトの名無しさん
2006/01/24(火) 14:33:172. OS is windows
3. gcc
4. vc++
5. ASAP
3-1 & 3-2:
http://www.smcclasses.net/cgi-bin/send_file?crs=Winter06/CS52&id=xyhwagtfIyDANp&user=hstahl&fname=fil_01092006113006_UuMSCr&info=inf_01092006113006_Do4R4k&attach=1&grp=6&ext=.html
4-1 & 4-2:
http://www.smcclasses.net/cgi-bin/send_file?crs=Winter06/CS52&id=xyhwagtfIyDANp&user=hstahl&fname=fil_01192006085137_6gebQ1&info=inf_01192006085137_co5yf1&attach=1&grp=6&ext=.html
5-1:
http://www.smcclasses.net/cgi-bin/send_file?crs=Winter06/CS52&id=xyhwagtfIyDANp&user=hstahl&fname=fil_01202006190944_JCy0Lc&info=inf_01202006190944_WpdcZq&attach=1&grp=6&ext=.html
0644デフォルトの名無しさん
2006/01/24(火) 14:35:49ありがとうございます。
0645デフォルトの名無しさん
2006/01/24(火) 14:41:19キモイ
0646デフォルトの名無しさん
2006/01/24(火) 14:46:41100回ほど氏ね
0647デフォルトの名無しさん
2006/01/24(火) 14:49:37お前>>586みたいなこと書いててやってもらえるとでも思ってんの?
0648デフォルトの名無しさん
2006/01/24(火) 15:00:31[2] 問題文(含コード&リンク):次のHP
http://kyoumu.educ.kyoto-u.ac.jp/cogpsy/personal/Kusumi/datasem03/nakamoto.files/frame.htm#slide0001.htmの
14数式で書くと、という数式を満たすプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows Home Edition
[3.2] VC 6.0
[3.3] 言語:C++
[4] 期限: 2006年1月27日
[5] 特にありません。よろしくお願いします。
0649デフォルトの名無しさん
2006/01/24(火) 15:01:12i heard this place from Japanese friends that there are people that are good about C/C++.
I can only accept english.
So if there is anyone who can try these projects and have some comments.
Please leave a message in English.
Thank you and I appliciate so much!!
0650デフォルトの名無しさん
2006/01/24(火) 15:07:49誰が英語でメッセージなんて残すか
0651デフォルトの名無しさん
2006/01/24(火) 15:50:500652デフォルトの名無しさん
2006/01/24(火) 15:51:270653デフォルトの名無しさん
2006/01/24(火) 15:57:190654デフォルトの名無しさん
2006/01/24(火) 17:00:41[2] 問題文(含コード&リンク):
コマンドライン引数からファイル名を入力して、そのファイルをテキストファイルと仮定して、
以下の規則に従って整形出力するするプログラムを開発したい。ソースファイルex33_1.cは
このために開発したソースコードの一部である。 ex33_1.cをダウンロードし、....の部分に
コード(1行とは限らない)を追加してプログラムを完成させよ。
[整形規則]
1行の文字数はdefine文により WIDTH として定義する。
1行の長さが WIDTH 文字以上の場合は、WIDTH 文字で強制的に改行する。
WIDTH 文字に満たない行は整形モード(左詰、右詰、中央寄せ)に従って表示する。
整形モードの初期値は左詰とする。
整形モードは/l(左詰), /r(右詰), /c(中央寄せ)のいずれかの2文字が連続して出現した直後に切り替わる。
/r, /l, /cの2文字は出力には表示されないが、/の後にr,l,c以外の文字が続いたときはそのまま表示され、
整形モードは切り替わらない。
1行中に/r, /l, /cが複数ある場合は末尾にある記号が有効。
/r, /l, /cは「1行の長さ」を数える文字数に含めない。
書式指定文字列中の *
関数 printf() や fprintf() 中の書式指定文字列中に出てくる * 記号は,数値と置き換えられることを意味する.
今回の場合だと,関数 flushline() 中の最後の fprintf() の書式文字列 "%*s" がそれである.
* は,直後の引数の値,つまり m*(........)/2 の答えに置き換えられる.これを用いることで,
s で示される文字列の表示長を状況に応じて調整して表示することができる.
0655654
2006/01/24(火) 17:02:08#define WIDTH 80
#define LEFT 0
#define CENTER 1
#define RIGHT 2
void fillchar(char c, int m);
void flushline(char *bp, int l, int m);
int main(int argc, char *argv[])
{
FILE *fpi;
int meta = 0;
int mode = LEFT;
char ch;
if(..........) {
fprintf(......, "Illegal number of argument.\n");
return(-1);
}
if((fpi=..........)==NULL) {
fprintf(stderr, "Can't open input file <%s>.\n", argv[1]);
return(-1);
}
0656654
2006/01/24(火) 17:02:42if(meta==1) {
switch(ch) {
case 'c': mode=......; break;
case 'r': mode=......; break;
case 'l': mode=......; break;
default: fillchar('/', mode);
fillchar(ch, mode);
break;
}
meta=...;
} else if( ch == ... ) {
meta=1;
} else {
fillchar(ch, mode);
}
}
fillchar(..........);
fclose(fpi);
return (0);
}
void fillchar(char c, int m)
{
static int length=0;
static char buf[........];
0657654
2006/01/24(火) 17:04:26flushline(buf, length, m);
length=0;
}
if(..........) {
flushline(buf, length, m);
length=....;
} else {
buf[.......]=....;
}
}
void flushline(char *bp, int l, int m)
{
*(......) ='\0';
fprintf(stdout, "%*s%s\n", m*(.......)/2, "", bp);
}
[3] 環境
[3.1] OS: (Windows/Linux/等々)
RedHat Linux
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
1月26日0時0分
0658654
2006/01/24(火) 17:05:13....以外のコードは書き換えないこと。書き加えるのは可。
宣言済みの変数名や型の変更は禁止。
変数の追加も禁止。
<stdio.h>, <ctype.h>に含まれないライブラリ関数の使用や、新たな関数定義は禁止。
すいません氏にそうなんで助けてください・・・
よろしくお願いします。
0659デフォルトの名無しさん
2006/01/24(火) 17:21:47[2] 問題文(含コード&リンク): n人を合計点の小さい順に並び替え、
出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: LSI C-86試食版
[3.3] 言語: C
[4] 期限: 01月24日23:59まで
[5] その他の制限: Cを始めて3ヵ月程度のレベルです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1538.txt
合計点まではできたけど、その先ができません。お願いします。
0660659? ◆giEIO/ghnY
2006/01/24(火) 17:22:00[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1537.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC 6.0
[3.3] 言語:C++
[4] 期限:2006年1月24日
[5] その他の制限:添付ファイルに記載
添付ファイルに書いてありますが、
mallocの動的配列確保をサンプルプログラムを基に行うものです。
サンプルの方も自作で、修正が必要だと思われます。
サンプルがおかしいせいか、詰まってしまって全く動けません。
お願いします。
0661660
2006/01/24(火) 17:37:130662デフォルトの名無しさん
2006/01/24(火) 17:49:21At first, I should tell you about this place.
This place, called "2ch" is not appropriate for serious
questions, and not so many people are kind.
Then, I'll leave a some comment about your homework.
q-1:It is a little ambiguous for us. It said,
"Represent each class using the class diagram notation
described during lecture". So I can only tell you some
hints. Three classes are, for example, movable blocks class,
piled blocks class, and judgement class. The methods are
maybe "Set valiables" and "Get valiables".
q-2:I can't get meaning of this question correctly,
but I think , for example, The answer is changing in 28th
line of the file "Bookshelf.cpp", "return( myNumberOfBooksOnShelf );"
to "if ( myNumberOfBooksOnShelf % 2 == 0){
return( myNumberOfBooksOnShelf * 2) }" and so on.
I feel a little tired, so the rest may be done in the mood. :-)
0663662
2006/01/24(火) 18:31:06The answer of 4-1 is as follows.(Attention! This code is no checked!)
class Wallet
{
private:
int my_Dollars;
int my_Cents;
public:
Wallet(){ my_Dollars = 0; my_Cents = 0;}
Wallet(int d, int c ){ my_Dollars = d ; my_Cents = c;}
int getDollars(){ return my_Dollars; }
int getCents(){ return my_Cents;}
bool canPayFor( int dollarAmount, int centsAmount );
void payFor( int dollarAmount, int changeAmount );
void visitATMForCash( int dollarAmount ){ my_Dollars += dollarAmount;}
}
bool Wallet::canPayFor( int dollarAmount, int centsAmount )
{
if( dollarAmount < my_Dollars ) return true;
else if( dollarAmount == my_Dollars && centsAmount =< my_Cents )
return ture;
else return false;
}
void Wallet::payFor( int dollarAmount, int changeAmount )
{
if( my_Cent < changeAmount && 0 < my_Dollars )
my_Dollars--; my_Cent += 100;
my_Dollars -= dollarAmount;
my_Cent -= changeAmount;
}
0664デフォルトの名無しさん
2006/01/24(火) 18:42:52一番簡単なソート。
for (i = 0; i < n; i++) {
for (j = i; j < n; j++) {
if (seiseki[i] > seiseki[j]) {
temp = seiseki[i];
seiseki[i] = seiseki[j];
seiseki[j] = temp;
}
}
}
0666デフォルトの名無しさん
2006/01/24(火) 19:23:43[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1539.txt
問題で使用するファイル
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1540.txt
[3] 環境
[3.1] OS: Windows
[3.2] Borland bcc
[3.3] C
[4] 期限:1月27日
[5] その他の制限:特になし
どうかお願いします
0667デフォルトの名無しさん
2006/01/24(火) 19:27:07[2] 問題文(含コード&リンク):
http://www.geocities.jp/marice999/index.html
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月27日でお願いします。
[5] その他の制限:特にないです。
0668デフォルトの名無しさん
2006/01/24(火) 20:19:09http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1543.txt
問題文に忠実に作ったつもり
0669659
2006/01/24(火) 22:41:47ありがとうございます。
しかし、ずっと健闘しているけどまだ動きません。
どこが違うか分からないので、すいませんが宜しくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1544.txt
0670デフォルトの名無しさん
2006/01/24(火) 22:49:00急に文字化けしたけど
0672デフォルトの名無しさん
2006/01/24(火) 22:53:58> int ko = 0, sy = 0, su = 0, ri = 0, ei = 0;
初期化する必要はないかと
> a= tokuten[0];
なぜaに代入するのか理解できん
ソートは>>664の変数を書き換えるだけでいいかと
> printf("\n 結果 \n");
> for(i=0; i>100, i++){
すごい・・・ありえないな。iが100より大きい間とか
あと、ここは100じゃなくてnでするべき
0673デフォルトの名無しさん
2006/01/24(火) 23:00:18日本語が全滅だ。
LinuxかUnixつかった?
0674デフォルトの名無しさん
2006/01/24(火) 23:01:25エンコードの設定をShift-JISにしる
0675デフォルトの名無しさん
2006/01/24(火) 23:03:35あははっははは、本当だ、直ったw
0676659
2006/01/24(火) 23:12:36やっと動くようになりました。提出も何とか間に合いそうです。
本当に感謝です。
0677デフォルトの名無しさん
2006/01/24(火) 23:33:55ありがとうございます!助かりました
0678660
2006/01/25(水) 00:09:37あれからもいろいろとやってみたんですが、
やればやるほど悪くなるばかりで一向によくなりません…
0679デフォルトの名無しさん
2006/01/25(水) 00:23:32遺伝的アルゴリズム(GA)か。
課題全文と、参考資料を書いたほうがいいと思うぞ。
0680デフォルトの名無しさん
2006/01/25(水) 00:38:47数値計算C言語プログラム
[2] 問題文
任意の微分方程式を数値解放で解きなさい
ただし解き方としてオイラー法かルンゲクッタ法を用いて計算するプログラムを作成せよ
任意の方程式として y'+xy=0 を挙げてみました
もしよければ好きなものでもかまいません
[3] 環境
[3.1] OS: Windows
[3.2] gcc
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 特にありません 本当によろしくお願いします
0681デフォルトの名無しさん
2006/01/25(水) 00:52:15malloc()うんぬんの問題もあるが、アルゴリズムの定義が足りない。
>>680 ルンゲクッタ 微分方程式 で ググって一発なんだが…
0682デフォルトの名無しさん
2006/01/25(水) 00:56:14オイラー法ってこんなんだっけか。
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[]){
double x,y,h,range;
x = atof(argv[1]);
y = atof(argv[2]);
h = atof(argv[3]);
range = atof(argv[4]);
for(;x<range;x+=h,y+=(-1)*h*x*y) printf("%f %f\n",x,y);
return 0;
}
0683デフォルトの名無しさん
2006/01/25(水) 01:04:43[2] 問題文(含コード&リンク):
[�T] n人分について国語,社会,数学,理科,英語の5科目の得点を入力し,
各科目の最高点を出力するプログラムを作成せよ。
ただし,各科目の配列名をjap,soci,math,sci,engとすること。
[�U] 5人の学生の4科目の試験の得点(1科目につき満点は100点)を入力する.
1人分入力する毎に「合計得点が240点以上で,
かつ各得点が40点以上であるとき合格とする」の条件で,合否を判定せよ.
[3] 環境
[3.1] OS: WindowsXP
[3.2] 初心者なんでわかりません。
[3.3] 言語: C かな。
[4] 期限: [本日中]
C言語難しくて、僕には全くわからないです。
期限も迫ってきてるんでよろしくお願いします!!!
0684デフォルトの名無しさん
2006/01/25(水) 01:10:22geneが3以上になったときの交雑の定義は?
ペア作って入れ換え? それとも乱交?
ちなみに評価は「evaluation」(関数なら動詞の「evaluate」)。
srand抜いて、ひとつずつ変更しながら確かめていけばそんなに難しくはないと思う。
0685デフォルトの名無しさん
2006/01/25(水) 01:26:18もっとスマートな書き方があるだろうけど、一応動くから書いておく
#include<stdio.h>
int main(){
int n,i;
int jap[128],soci[128],math[128],sci[128],eng[128];
int japh=0,socih=0,mathh=0,scih=0,engh=0;
printf("人数を入力してください:");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("%d人目の得点を入力して下さい\n",i+1);
printf("国語:");
scanf("%d",&jap[i]);
if(jap[i]>japh) japh=jap[i];
printf("社会:");
scanf("%d",&soci[i]);
if(soci[i]>socih) socih=soci[i];
0686デフォルトの名無しさん
2006/01/25(水) 01:26:55scanf("%d",&math[i]);
if(math[i]>mathh) mathh=math[i];
printf("理科:");
scanf("%d",&sci[i]);
if(sci[i]>scih) scih=sci[i];
printf("英語:");
scanf("%d",&eng[i]);
if(eng[i]>engh) engh=eng[i];
printf("\n");
}
printf("\n各科目の最高点\n");
printf("国語%d点 社会%d点 数学%d点 理科%d点 英語%d点\n",japh,socih,mathh,scih,engh);
}
0687デフォルトの名無しさん
2006/01/25(水) 01:52:32[�U]
#include<stdio.h>
int main(){
int i,n=5;
int jap,soci,math,sci,eng;
for(i=0;i<n;i++){
while(1){
printf("%d人目の得点を入力してください\n",i+1);
printf("国語:");
scanf("%d",&jap);
printf("社会:");
scanf("%d",&soci);
0688デフォルトの名無しさん
2006/01/25(水) 01:53:41scanf("%d",&math);
printf("理科:");
scanf("%d",&sci);
printf("英語:");
scanf("%d",&eng);
if(jap<=100 && soci<=100 && math<=100 && sci<=100 && eng<=100) break;
else printf("得点は100点満点で入力してください!!\n");
}
if(jap>=40 && soci>=40 && math>=40 && sci>=40 && eng>=40 && jap+soci+math+sci+eng >= 240) printf("合格じゃ!\n");
else printf("不合格じゃ!出直して来い!\n");
}
}
0689デフォルトの名無しさん
2006/01/25(水) 02:21:35ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1545.txt
かなりテキトーに作った。文句は却下。自分で改造しなさい。
0690デフォルトの名無しさん
2006/01/25(水) 03:06:33どうも眠れないから、なんとなく解いてみた。2次のrunge-kutta法で
解いた物をアップしておく。
ttp://www.uploda.org/uporg294770.zip.html
コメント読めば、使い方は分かると思う。関数のところは、自分の好きなのに
変えて使っておくれ。
>>682
既に答えた人がいたのか・・・気が付かなくて、被った・・(´・ω・`)。
オイラーは、台形積分を使うからそれでOKだとおもふ
0692デフォルトの名無しさん
2006/01/25(水) 08:09:04∧_∧
( ・∀・) ∧ ∧
( ⊃ ) (゚Д゚;)
` ̄ ̄ ̄ ̄(つ_つ_
` ̄日∇ ̄\|BIBLO|
 ̄ =====
0693デフォルトの名無しさん
2006/01/25(水) 10:25:02[2] 問題文(含コード&リンク):
シンプレックス法プログラミング課題
1 2変数(x,y)のシンプレックス法とする。
2 プログラミングができたら、数値を代入して確認する
�@条件: 2x+y <=100,3x+6y<=240のときz=2x+3y
答え: x=40,y=20のときz=140
�A条件: x=2y<=40,3x+2y<=60のときz=2500x+4000y
答え: x=10,y=15,z=85000
�B条件: x+2y<=40,3x+2y<=60のときz=2000x+4800y
答え: x=0,y=20のときz=96000
[3] 環境
[3.1] OS: WindowsXP
[3.2] VisualC++.NET
[3.3] c言語
[4] 期限:2006/1/30
[5] その他の制限: とくになし
0694デフォルトの名無しさん
2006/01/25(水) 10:42:19条件�Aなんかおかしくね?
0695デフォルトの名無しさん
2006/01/25(水) 11:13:46[2] 問題文(含コード&リンク):
以下のヒントを参考にして動的計画法を用いてナップザック問題を解くプログラムを作成せよ。
(組み合わせとその合計重量を順次出力するよう)
(ヒントは以下)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年1月26日まで
[5] その他の制限:動的計画法を用いる。
ヒントはここにあります。(1535.txt)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?
ナップサック問題です。
容積の決まった袋に、価値が最大になるようになるつめ方を見つけるという問題です。
制約として、「一番目の荷物から組み合わせを順番に検証し、新しい荷物を追加するたびに、『重量が同じで価値の最高が更新されればその時点時一度出力し、されなければそのまま次へいく』というのを繰り返す」というアルゴリズムでお願いします。
k番目の荷物のkを行、物品の合計重量を列にした二次元の表にして途中経過、結果を出力したいと思っています。
あまり時間が無いですがお願いします。
0696デフォルトの名無しさん
2006/01/25(水) 11:24:05すいません、間違えてました。
本当は、
�A条件: x+2y<=40,3x+2y<=60のときz=2500x+4000y
です。
0697デフォルトの名無しさん
2006/01/25(水) 11:31:19それはそれで条件�Bと全く同じになってしまうんだが
0699デフォルトの名無しさん
2006/01/25(水) 11:42:24あれ?俺なにか勘違いしてる?
�@の条件に当てはまったら結果を表示
当てはまらなかったら�Aの条件で〜・・・って感じで�Bまで行くと思ってたんだけど
それだと�Aと�Bが全く同じ条件だと永遠に�Bが実行されないよね
そういう意味じゃなかった・・?
0700デフォルトの名無しさん
2006/01/25(水) 11:50:52品物 個数 単価(ドル) の関係を示しているとする.
A 1 1.2
B 3 4.0
C 2 2.4
D 4 3.5
E 1 2.6
F 5 3.3
G 3 5.7
test.datを読み込み,各品物の合計金額を円に換算してファイル(enn.dat)に書き込むプログラムを作成しなさい.
ただし,1ドルは114円とする.
enn.datの中身の例(一円以下は四捨五入)
A 137
B 1368
C 547
D 1596
E 296
F 1881
G 1949
レポートにはenn.datの中身を示しなさい.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 2006年1月25日まで
お願いします・・・orz
0701デフォルトの名無しさん
2006/01/25(水) 11:51:32相変わらず問題の意味がわかんね
0702デフォルトの名無しさん
2006/01/25(水) 11:53:35何故全角で書く
0703デフォルトの名無しさん
2006/01/25(水) 11:56:31ナップザック問題?何それ
0704デフォルトの名無しさん
2006/01/25(水) 12:00:03コピペ&改行修正しただけなんです。すいません
0705デフォルトの名無しさん
2006/01/25(水) 12:02:57[2]問題文:
�@abc.txtから英文を読み込み画面に表示する
�A�@の英文の回答をキーボードから入力し、ans.txtとして保存する
�B�@の英文の文字数と単語数を数え画面に表示する(例:See you laterなら文字数は11、単語数は3)
�C4文字の英単語をキーボードから入力し、文字コードの合計をsum.txtに出力する
[3]環境
[3.1]OS:Windows
[3.2]コンパイラ名とバージョン:Visual C++ .NET
[3.3]言語:C
[4]期限:今週中
[5]その他の制限:なし
お願いします
0706デフォルトの名無しさん
2006/01/25(水) 12:12:42(゚Д゚)ノ ァィ
#include<stdio.h>
int main(void){
float x;
int k;
char name[3];
FILE *rp,*wp;
rp = fopen("text.dat","r");
wp = fopen("enn.dat","w");
while(fscanf(rp,"%s%d%f",&name,&k,&x)!=EOF)
fprintf(wp,"%s %d\n",name,(int)(x*k*114+0.5));
fclose(rp);
fclose(wp);
return 0;
}
0707デフォルトの名無しさん
2006/01/25(水) 12:15:32有難うございます!有難うございます!ありggggggえうydヴぃks
本当にありがとう
0708デフォルトの名無しさん
2006/01/25(水) 12:20:04[2] 問題文(含コード&リンク):
変数x,yにそれぞれ8と5を代入して,x/yを計算し,
整数解と実数解を出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン: (わかりません)
[3.3] 言語: (C)
[4] 期限: (06年01月25日14:00まで)
初心者です。
提出期限が近く、大変急いでいます。
どなたよろしくお願いします。
0709デフォルトの名無しさん
2006/01/25(水) 12:20:32数えるのは入力した方なのか?
それとも読み込んだ方なのか?
0710デフォルトの名無しさん
2006/01/25(水) 12:23:01(○口○*) ポーカン
0711デフォルトの名無しさん
2006/01/25(水) 12:27:17ヒントのほうに書いてあるんですけど
(重量、価値)=(2,4),(3,5),…,(6,11)という6個の荷物を重量制限10の鞄に入れるとき、
重量制限内&価値が最大になる組み合わせを見つける問題です。
自分はヒントのプログラムがわからなくて…。
0712デフォルトの名無しさん
2006/01/25(水) 12:37:37#include <stdio.h>
int main(){double x=8,y=5;printf("%d,%g\n",(int)(x/y),x/y);return0;}
0713デフォルトの名無しさん
2006/01/25(水) 12:40:18アルゴリズムとしてはオブジェクト(荷物)の合計が10以下の組み合わせを総当りにかけて
その中で価値がもっとも大きい組み合わせを保存するってのでいい?
美しくないけどそれしか思いつかない
0714デフォルトの名無しさん
2006/01/25(水) 12:41:09読み込んだ方でお願いします
0715デフォルトの名無しさん
2006/01/25(水) 12:41:36>int main(){double x=8,y=5;printf("%d,%g\n",(int)(x/y),x/y);return0;}
つーか、
>int main(){int x=8,y=5;printf("%d,%g\n",x/y,(double)x/y);return0;}
の方がよかないか。
>>706
>while(fscanf(rp,"%s%d%f",&name,&k,&x)!=EOF)
間違っている。nameに&は要らん。
0716デフォルトの名無しさん
2006/01/25(水) 12:47:15(゚Д゚)ノ ァィ とりあえず�Bまで
何か文字列関数使えば綺麗になるのかもしれないけど俺には思いつかない
#include<stdio.h>
int main(void){
FILE *fp;
char str[256],ans[256];
int cnt1=0,cnt2=0,i=0,flag=0;
fp = fopen("abc.txt","r");
fgets(str,256,fp);
printf(">%s\n",str);
fgets(ans,256,stdin);
fp = fopen("ans.txt","w");
fprintf(fp,"%s",ans);
while(1){
if(str[i]=='\0')break;
if(flag==0&&str[i]!=' '){
++cnt1;
flag = 1;
++cnt2;
}
else if(flag==1&&str[i]==' ')
flag = 0;
else if(str[i]!=' ')++cnt2;
++i;
}
printf("%d %d\n",cnt1,cnt2);
return 0;
}
0717デフォルトの名無しさん
2006/01/25(水) 12:48:26おお!しまった!
最初文字列じゃなくて文字で作ってたから消し忘れた!
でも、おもしろいからそのまま出してね♥
0718デフォルトの名無しさん
2006/01/25(水) 12:57:59(゚Д゚)ノ ァィ �C
認識間違ってても知らん
#include<stdio.h>
int main(void){
FILE *fp;
char str[5];
int sum=0,i;
fp = fopen("sum.txt","w");
fgets(str,5,stdin);
for(i=0;i<4;i++)
sum += str[i];
fprintf(fp,"%d",sum);
return 0;
}
0719デフォルトの名無しさん
2006/01/25(水) 13:06:20>>718
助かります。ありがとうございました
0720デフォルトの名無しさん
2006/01/25(水) 13:10:35i really appliciate that you tell me about this place and did that project!!
i can see you're good with C++.
i hope another people do my projects which i left cause' it's going to come one after another... you know?
anyway, thank you for taking your time!
i'll try to run it though!!
0722デフォルトの名無しさん
2006/01/25(水) 13:15:56しまったfcloseしてねぇw
0723デフォルトの名無しさん
2006/01/25(水) 13:30:54アルゴリズムについて(これが制約なんで)。
「まず一個目を入れるか入れないか」で2通り、
「上の2通りに対し、二個目を入れるか入れないか」で4通り
と言うのを6個目まで繰り返していきます。
新しい荷物で組み合わせができるたびに、以前にできた同じ重さの組み合わせと比べ、
総価値が上まっていれば組み合わせを記録して新しい価値を上書き。
ヒントで大まかな形は示されてるのはわかります。
答えが「3個目と5個目を入れた総価値19」だということもわかってるんですけど、
プログラムでできない…。
0724デフォルトの名無しさん
2006/01/25(水) 13:47:29/ ̄\|_D_,,|/ `ヽ
l r'~ヽ ゝ__.ノヽ/~ ヽ l
| | l ´・ ▲ ・`━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ゝ::--ゝ,__∀_ノヽ--::ノ
/ )
∩ / ,イ 、 ノ/ ドゴォォォ _ / 【呪いのトンファービームパンダ】
| | / / | (〈 ∧ ∧―= ̄ `ヽ, _
| | | | | } ∵. ・( 〈__ > ゛ 、_ このコピペを見たら明日死にます。
| | | | ヽ ヽ’ (/ , ´ノ \ 他の場所にコピペしても無駄です。
| |ニ(!、) \ \ / / /
∪ / ゝ ) / / ,'
/ / { | / /| |
/ _/ | |_ !、_/ / 〉
ヽ、_ヽ {_ ___ゝ |_/
0725デフォルトの名無しさん
2006/01/25(水) 13:52:250726デフォルトの名無しさん
2006/01/25(水) 13:54:430727デフォルトの名無しさん
2006/01/25(水) 13:55:38対策を立てなければ!(・ω・)ゝ
0728デフォルトの名無しさん
2006/01/25(水) 14:03:21>>718
助かります。ありがとうございました
0729デフォルトの名無しさん
2006/01/25(水) 14:07:350730デフォルトの名無しさん
2006/01/25(水) 14:17:53おねがいします。ほんとに、お願います、切実なんですよ。m(。_。)m
0731デフォルトの名無しさん
2006/01/25(水) 14:21:380732デフォルトの名無しさん
2006/01/25(水) 14:24:350733デフォルトの名無しさん
2006/01/25(水) 14:25:530734デフォルトの名無しさん
2006/01/25(水) 14:30:27[2] 問題文(含コード&リンク):
配列要素の合計を表示させるプログラムを
ポインタとユーザ定義関数を使用して作っています。
ユーザ定義関数が返ってきた所をどう書けば良いか悩んでいます。
ソースではなく、日本語でヒントが欲しいです。
#include <stdio.h>
int s_Total(int *n1);
int main()
{
int no[] = {32, 18, 45, 25, 62, 51, 89,100, 6, 77};
int sum = 0;
【この部分】
return(0);
}
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VisualC++6.0
[3.3] 言語:C++
[4] 期限:今日中
[5] その他の制限:変数sumに合計を代入して使用し、合計した値のみ表示
C言語開始1週間の初心者なのですが、宜しくお願いいたします。
0735デフォルトの名無しさん
2006/01/25(水) 14:35:04sum = 合計を取る関数(int* データ配列の先頭ポインタ, int 配列の要素数);
関数の中身は自分で考えな。
0736デフォルトの名無しさん
2006/01/25(水) 14:35:18例えば12という定数が返す値は12
同様にno[0]の変数が返す値は32
またs_Total関数が返す値はreturn n;の値だ
0737デフォルトの名無しさん
2006/01/25(水) 14:36:520738デフォルトの名無しさん
2006/01/25(水) 14:38:01そうです。商品はひとつずつです。
お願いします。
0739デフォルトの名無しさん
2006/01/25(水) 14:48:110740デフォルトの名無しさん
2006/01/25(水) 14:59:41[2] 問題文(含コード&リンク):ホリモンの目指した企業をシミュレートせよ!
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VC++
[3.3] 言語:C++
[4] 期限:ホリエモンが出所するまで
[5] その他の制限:なんでもOK
0741デフォルトの名無しさん
2006/01/25(水) 15:02:02なぜ言語指定?
0742デフォルトの名無しさん
2006/01/25(水) 15:08:14(3, 5) 3 5
(2, 4) (3, 5) 5 9
(2, 4) (4, 8) 6 12
(3, 5) (4, 8) 7 13
(2, 4) (3, 5) (4, 8) 9 17
(2, 4) (3, 5) (5, 9) 10 18
(4, 8) (6, 11) 10 19
ソースは汚いので、パス。
0743デフォルトの名無しさん
2006/01/25(水) 15:13:55そのうちRPGツクールで出てくるだろうからそれまで待て。
0745デフォルトの名無しさん
2006/01/25(水) 16:48:55[2] 問題文(含コード&リンク):
5桁以下の文字(数字を除く)と5桁以下の数字からなる文字列(例えば TARO1970) を入力し(必ず、文字の固まりの次に数字の固まりがあると仮定する)、これを分解して、文字部分を文字配列へ、数字部分を整数型の変数へ格納して、それぞれを標準出力へ出力
するプログラムを書け。但し、文字列の分解にはポインタ変数を使用すること。
/* 数字の抽出に使用すること*/
if ( (0<=(*cp-'0')) && ((*cp-'0')<=9) ){
・・・・・・
}
[3] 環境
[3.1] Linux
[3.2] gcc 2.9
[3.3] C言語
[4] 06年2月1日まで
[5] 標準ライブラリの使用は無しです。
まだ、基礎の基礎しか習っていないのでとりあえず
「動けば」それでいいという段階です。
できるだけ、簡単な作りが好ましいです。
よろすくおながいしまふ。
0746:デフォルトの名無しさん
2006/01/25(水) 16:52:13どうしたらいいですか?
0747デフォルトの名無しさん
2006/01/25(水) 16:52:420748デフォルトの名無しさん
2006/01/25(水) 17:08:37#include<stdio.h>
int main(void){
char in[11],str[6],*cp,*c;
int num[5],*p,i,n=0;
fgets(in,11,stdin);
cp = in;
c = str;
p = num;
while(*cp!='\0'){
if((0<=(*cp-'0'))&&((*cp-'0')<=9)){
*p = *cp-'0';
++p;
++n;
}
else{
*c = *cp;
++c;
}
++cp;
}
*c = '\0';
printf("%s\n",str);
for(i=0;i<n;i++)
printf("%d",num[i]);
return 0;
}
0749:デフォルトの名無しさん
2006/01/25(水) 17:14:14さっそく回答ありがとうございます。
次にDISC2をいれてみたのですが「現在CDにあるファイル」
とでてでうすればいかわかりません。
0750デフォルトの名無しさん
2006/01/25(水) 17:15:36音楽を聞くあれだ!
決してカレントディレクトリではないから騙されるな!
0751デフォルトの名無しさん
2006/01/25(水) 17:16:290752デフォルトの名無しさん
2006/01/25(水) 17:20:50int main(void)
{
int c =100;
size_t sz;
sz = sizeof c;
printf("size of int = %d\n",sz);
return 0;
これでコンパイルするとCに代入した値が使われていないとでるのですが、
理由を教えてくれませんか?
0753デフォルトの名無しさん
2006/01/25(水) 17:23:30まだ間に合うの?結構めんどい&長くて疲れるので、
できればやりたくないんだが・・・
0754デフォルトの名無しさん
2006/01/25(水) 17:23:41だって100って整数使ってないじゃん
0755デフォルトの名無しさん
2006/01/25(水) 17:27:54えぇ、使ってないってどういうことですか?
0756デフォルトの名無しさん
2006/01/25(水) 17:29:22sz = sizeof c;
ここの部分をコンパイラは
sz = sizeof (int);
これと同じと解釈したんじゃね?
0757デフォルトの名無しさん
2006/01/25(水) 17:32:40cに初期化時につっこんだ100がまったく放置プレイじゃんってこと
警告なんてどうでもいいけど
出したくないなら
int c
にするか
int c=100消して
sizeof c → sizeof(int) にする
0758お願いします。
2006/01/25(水) 17:47:22[2] 問題文 http://www-hi.comlab.soft.iwate-pu.ac.jp/~hito/2005/mediasystems/data/ms2005_report3.pdf
ID: ms05
Password: spectrum
です。 よろしくお願いします。
[3] 環境
言語: C言語
[4] 期限: 2006年1月27日 午後6時
[5] その他の制限:
0759デフォルトの名無しさん
2006/01/25(水) 18:00:16確かアクセス制御が掛かってる領域に権限無しで入ると
不正アクセス禁止法に引っかかると思ったが、おまいに責任が取れるのか?
0760お願いします。
2006/01/25(水) 18:03:43問題文を載せます。
0761デフォルトの名無しさん
2006/01/25(水) 18:09:11え、っていうことはCに何が入っててもこのsizeofってやつは
charが何バイトかしか見れないってことなんですか?
俺はてっきり100っていう数字のサイズが知れるんだと思ってたんですけど
0762デフォルトの名無しさん
2006/01/25(水) 18:16:18sizeof演算子は型以外の事は一切関知しない
例えば、\0が入っていようが\x30が入っていようが
sizeof(c)は常にcの型のサイズ
つまりchar型に限って言えば、sizeof(char)=1と保証されてる
0763デフォルトの名無しさん
2006/01/25(水) 18:16:370764デフォルトの名無しさん
2006/01/25(水) 18:17:45そーなんですかー勉強になります。ありがとうございました
0765デフォルトの名無しさん
2006/01/25(水) 18:18:07100を入れようが65535やら-32767入れようが器の大きさは同じ(int型)
っていうかその器の大きさの宣言がintとかdoubleとか。
0766デフォルトの名無しさん
2006/01/25(水) 18:26:20;y=ー(゚д゚)・∵. ターン
0767デフォルトの名無しさん
2006/01/25(水) 18:35:19[2] 問題文(含コード&リンク):
1.整数 P, X (1 < X < P で, P, X は互いに素) を与えて, X × Y を P で割った余りが 1 になるもっとも小さな正整数 Y を求めるプログラムを書いてください。
2.ユークリッドの互除法(正整数 X, Y (X > Y) の最大公約数は X を Y で割った余りと Y の最大公約数に等しい)の手順を使って最大公約数を見つけるプログラムを作れ
3.2を利用して1のプログラムを作り直せ。(P と X は「互いに素」なので,両者の最大公約数は必ず 1 というのを使う)
[3] 環境
[3.1] unix
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] C
[4] 期限:2006年1月末
0768767
2006/01/25(水) 18:40:22[1] 授業単元: プログラミング基礎演習
[2] 問題文(含コード&リンク):
1.getchar, putchar を用いて標準入力(stdin) からテキストデータを読み込みそのまま 標準出力(stdout) に書くプログラムを作成せよ。
ファイル末尾に達すると getchar の値が EOF になるのを利用するとよいだろう。
2.1のプログラムを改良して,アルファベット文字に関して大文字は小文字に変換,小文字は大文字に変換して表示するプログラムを作成しなさい。
3.1のプログラムを改良してそのままじゃなくて「行番号」を付けて表示させよ。
4.英文テキストファイルを読込んで,文字数,単語数,行数をカウントして表示するプログラム mywc を作成しなさい。
[3] 環境
[3.1] unix
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] C
[4] 期限:2006年1月末
0769デフォルトの名無しさん
2006/01/25(水) 18:46:15[1] 授業単元: プログラミング基礎演習
[2] 問題文(含コード&リンク):
1.2つの分数(fraction)を入力し,その四則演算(+,-,*,/)を計算するプログラムを作成してください.
ただし,次の構造体を利用すること.ここでは,四則演算を関数化しないこと.また,既約分数にしなくとも良いです.
/*fraction_t型の定義*/
typedef struct {
int numerator; /*分子*/
int denominator; /*分母*/
} fraction_t;
/*fraction_t型の変数の宣言*/
fraction_t frt;
2.和(add),差(subtract),積(multi),商(quotient)を計算する4つの関数を作成せよ.
その関数を利用し,1のプログラムと同じ構造体を利用し,同じ動作をするプログラムを作成せよ.
3.2のプログラムで,計算が正しく行われない場合を列挙して,その対応策を考えよ.
(例 1/-2 のような計算結果は,美しい表示方法とはいえません)
4.3で列挙した対応策を,2で作成したプログラム上で実現せよ.
[3] 環境
[3.1] unix
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] C
[4] 期限:2006年1月末
0770お願いします
2006/01/25(水) 19:47:11[2] 問題文 http://www.geocities.jp/iwatenet/ms2005_report3.pdf
問題文をこっちにのせましたので
よろしくお願いします。
[3] 環境
言語: C言語
[4] 期限: 2006年1月27日 午後6時
[5] その他の制限:
0771デフォルトの名無しさん
2006/01/25(水) 19:48:00[2] 問題文(含コード&リンク):
半径、高さから円柱の表面積を求める関数を
作りたいのですが、どう作って良いのか判りません。
プログラム自体は自分で考えたいので
フローチャート?のようなモノが欲しいです。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VisualC++6.0
[3.3] 言語:C++
[4] 期限:大至急
[5] その他の制限:とくになし
初心者なので、お手柔らかにお願いします。
0772デフォルトの名無しさん
2006/01/25(水) 19:48:12どうも間に合わなかったっぽいね。途中まで着手したけど、
やめておくか。
0773デフォルトの名無しさん
2006/01/25(水) 19:49:010774デフォルトの名無しさん
2006/01/25(水) 19:49:46ググれ
>>773は>>770宛てね
0775デフォルトの名無しさん
2006/01/25(水) 19:51:34ごめんなさい。
ググったんですけど、プログラムそのものばかりしか
みつけられなかったんで、ここに書き込んでみたんです。
0776デフォルトの名無しさん
2006/01/25(水) 19:53:510777デフォルトの名無しさん
2006/01/25(水) 19:58:07半径があるだろ?
ってことは円柱の上下の円の部分の面積は計算できるよな?
高さがわかってるな?
円柱を展開した時さっきの円の部分以外のところって高さ×円の円周の長方形になるだろ?
もうわかるよね?
0778デフォルトの名無しさん
2006/01/25(水) 19:59:38半径と高さの2つから表面積を算出する方法が分からないってことだろ?
そんなのC/C++以前の問題として算数からやり直せよ
0779デフォルトの名無しさん
2006/01/25(水) 20:00:28データを入力させて、それを円柱の表面積を求める関数に渡して、
円柱の表面積=円の半径の自乗×円周率×2 +
円の半径×円周率×2 × 高さ
に代入して、その値を返せばいい。
0780779
2006/01/25(水) 20:02:170781デフォルトの名無しさん
2006/01/25(水) 20:02:460782デフォルトの名無しさん
2006/01/25(水) 20:19:250783デフォルトの名無しさん
2006/01/25(水) 20:19:590784デフォルトの名無しさん
2006/01/25(水) 20:22:02pgmファイルが無い上、
既に作成されているメソッドまで回答者が入力しろというのか?
甘えすぎ。
0785デフォルトの名無しさん
2006/01/25(水) 20:26:270786デフォルトの名無しさん
2006/01/25(水) 20:26:450787お願いします。
2006/01/25(水) 20:41:22770ですけども。
関数relevancy() を作ってほしいのです。
課題2に関しては、自分で考えたいと思いますので。
どうか お願いします。
0788デフォルトの名無しさん
2006/01/25(水) 20:44:480789デフォルトの名無しさん
2006/01/25(水) 20:46:040790お願いします。
2006/01/25(水) 20:52:510791デフォルトの名無しさん
2006/01/25(水) 20:54:59むしろホリエモンをシミュレート
#include <iostream>
#include <string>
int main() {
std::string names = "ホリエモン ホラエモン ゼンカモン ホラレモン ムイチモン ドザエモン", scale = " ┝━━━━━┿━━━━━┿━━━━━┿━━━━━┿━━━━━┥";
for (int i = 0; i < 6; ++i) {
std::cout << names << '\n' << scale << "\n ";
for (int j = 0; j < i; ++j) std::cout << " ";
std::cout << "↑今この辺\n" << std::endl;
}
return 0;
}
0792デフォルトの名無しさん
2006/01/25(水) 20:59:51まあこうなったらやってもらうのは、諦めた方がいいな。
この流れでやってもらった人はほとんどいないだろう。
もう少し書くと、最初大元の問題を挙げた時に、ここからの
アクセスが増えているはずだから、たぶんチェックされるだろうな。
0793デフォルトの名無しさん
2006/01/25(水) 21:03:01なんか知らんが、パーミッションエラーになっとる。
0794デフォルトの名無しさん
2006/01/25(水) 21:03:03PDFなんだからコピペできるじゃんwww
0795デフォルトの名無しさん
2006/01/25(水) 21:06:210796デフォルトの名無しさん
2006/01/25(水) 21:06:470797デフォルトの名無しさん
2006/01/25(水) 21:15:310798デフォルトの名無しさん
2006/01/25(水) 21:16:21>>770のはまだ生きてるだろ
大元の奴はhtaccessにdeny from allでも書かれたっぽいが
0799デフォルトの名無しさん
2006/01/25(水) 21:23:010800795
2006/01/25(水) 21:28:06あ、本当だ。早とちりスマソ。700の方は生きているね。
しかし、合コン出会い系サイトにファイルが置いてあるって・・・
激しくやる気をそぐね。
0802お願いします。
2006/01/25(水) 21:46:260803デフォルトの名無しさん
2006/01/25(水) 21:53:461)たぶん、先生、ここ見てるぞ。それでもいいか?
2)やるにしても、提示されてるファイル(ソース、サンプル画像類)をどっかに上げてくれ
0804デフォルトの名無しさん
2006/01/25(水) 21:54:050805デフォルトの名無しさん
2006/01/25(水) 22:01:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1546.txt
0806お願いします
2006/01/25(水) 22:35:350807ww
2006/01/25(水) 22:36:200808ん?
2006/01/25(水) 23:06:250809デフォルトの名無しさん
2006/01/25(水) 23:12:10>間違っててもしらね
0810795
2006/01/25(水) 23:21:31これを使おうとはなかなかチャレンジャーだな。
0811デフォルトの名無しさん
2006/01/25(水) 23:25:190812お願いします
2006/01/25(水) 23:45:120813デフォルトの名無しさん
2006/01/25(水) 23:50:390814お願いします
2006/01/26(木) 00:17:170816デフォルトの名無しさん
2006/01/26(木) 00:21:48うんうん。知りたいのはわかったから。
本気なら調べるくらいはしたら?
追記:
くれぐれもセンセに教えるとかVIPに知らせるとか、
メールアドレス晒すとかしないよーに。
0817デフォルトの名無しさん
2006/01/26(木) 00:24:08整数型の変数を0〜2^5-1でループさせて・・・って組んだんで、UPはできないなぁ・・・。
0818お願いします
2006/01/26(木) 00:34:160819デフォルトの名無しさん
2006/01/26(木) 00:46:38>_ [仕事] 認証のやりなおし
>
>このサーバに設置している講義のサポートページには認証をかけ、特定の人以
>外には見られないようにしている。その認証に必要な ID とパスワードが流出
>した。
>
>流出させた人は、課題が書かれた PDF を見せて質問したかったらしい。課題
>そのものが曝されるのはともかく、その他に外部に曝したくない情報までアク
>セス可能になってしまうのは好ましくないと判断し、アクセス制限とパスワー
>ドの変更で対処した。どういう経緯で知ったか、具体的に何がまずいと考えた
>かについてはここでは伏せる。
>
>それにしても、課題について訊きたいことがあるなら、メールを筆者宛に出す
>なり、直接筆者のところまで質問しに来ればいいのに。ちょっと落ち込むなあ
いい先生だなぁ。
先生。講義資料をOPENにしてくださると、独学してる人間は助かります。
それと、学校でマジメに勉強しようとは思わない人間にいくら課題だしても
自分でやらんと思います。
0820805
2006/01/26(木) 00:50:06正しく数値出るけど、要求してる式とは違うって事?
0821デフォルトの名無しさん
2006/01/26(木) 00:58:24[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1547.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] gcc
[3.3] 言語: C
[4] 期限: [2006年01月27
[5] その他の制限:特にないです。よろしくお願いします
0822デフォルトの名無しさん
2006/01/26(木) 00:59:55課題の関数部分もちゃんと簡単な擬似コーディングしてあるし、
説明も平易でわかりやすく書いてある。
0823デフォルトの名無しさん
2006/01/26(木) 01:00:370824デフォルトの名無しさん
2006/01/26(木) 01:05:23>先生。講義資料をOPENにしてくださると、独学してる人間は助かります。
俺漏れも。なんだったら月会費払ってもいいよ。1000円ぐらい。
0825デフォルトの名無しさん
2006/01/26(木) 01:09:33IPに地域名でるんだ‥九州からじゃ丸分りだったな。
0826デフォルトの名無しさん
2006/01/26(木) 01:13:19いい先生だ・・・受けるなら、こんな先生の講義を受けたいね。
普通だったらこんな事態になったら、酷い場合は退学処分にすら
なるのに。
0827ww
2006/01/26(木) 01:28:02どこの情報だよ? それ
0828ぷろっぷ
2006/01/26(木) 01:33:040829デフォルトの名無しさん
2006/01/26(木) 01:38:38正直に言うけど、Makefileまで書いてくださってるので、すんごく親切。
あの資料作るのに何時間かけてるんだろ…。
0830デフォルトの名無しさん
2006/01/26(木) 01:54:550831デフォルトの名無しさん
2006/01/26(木) 02:00:58さて○○○して寝るか
0832805
2006/01/26(木) 02:02:250833デフォルトの名無しさん
2006/01/26(木) 02:46:20さぁお前らの宿題なんてやってらんね勉強しよ
宿題出すやつもちっとは自分で考えてみやがれ
0834デフォルトの名無しさん
2006/01/26(木) 03:18:240835デフォルトの名無しさん
2006/01/26(木) 04:12:05なんの試験勉強なんだ?
0836デフォルトの名無しさん
2006/01/26(木) 04:19:21確率統計と科学英語
まぁ大学の試験勉強
0837デフォルトの名無しさん
2006/01/26(木) 04:24:16そうかー
宿題はなんとかするからガンガレ! 健闘を祈る ノシ
0838デフォルトの名無しさん
2006/01/26(木) 04:28:11回答者なのか依頼者なのか
0839デフォルトの名無しさん
2006/01/26(木) 06:59:21[1] 授業単元: ファイルの入出力
[2] 問題文(含コード&リンク):
3個の数を入力し、それぞれを係数a, b, cとみなして
関数f(x) = ax2+bx+cが描くグラフを'*'を用いて表示するプログラムを作成せよ。
X軸、Y軸もつけて
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月26日10時
[5] その他の制限:特になし
誰か助けてください。atoiでも使うんでしょうか・・・
0840デフォルトの名無しさん
2006/01/26(木) 07:08:480841デフォルトの名無しさん
2006/01/26(木) 07:48:07x,yの範囲は?
0842デフォルトの名無しさん
2006/01/26(木) 08:26:030843デフォルトの名無しさん
2006/01/26(木) 08:28:39時間ないから超適当w
$ a.out .2 .4 .1 みたいな感じで。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define RANGE 20
int main(int argc,char *argv[]){
int graph[RANGE*2][RANGE*2],i,j,temp;
float x,y,a,b,c;
memset(graph,0,sizeof(graph));
a = atof(argv[1]);
b = atof(argv[2]);
c = atof(argv[3]);
for(i=0,x=(float)(-1)*RANGE/10;x<(float)RANGE/10;x+=.1,i++){
y = a*x*x + b*x + c;
temp =(int) RANGE + y * 10;
graph[temp][i]=1;
}
for(i=RANGE*2-1;i>=0;i--){
for(j=0;j<RANGE*2;j++){
if(graph[i][j]==1) printf("*");
else if (i==RANGE) printf("-");
else if (j==RANGE) printf("l");
else printf(" ");
}
printf("\n");
}
return 0;
}
0844デフォルトの名無しさん
2006/01/26(木) 08:36:58if((0<=temp)&&(temp<RANGE*2)) graph[temp][i]=1;
だな。
0845デフォルトの名無しさん
2006/01/26(木) 09:54:10[2] 問題文(含コード&リンク):
リストA:2,5,9,10
リストB:1,4,7,11
この2つのリストを先頭から順に読んで、以下の様なリストCを作る。
リストC:1,2,4,5,7,9,10
この様な操作はA,Bが整列されている事を前提とした上で、各リストの長さの和に比例する時間でリストマージが終了する。アルゴリズムとして書けば以下の様になる。
リストCを空とする
リストAの先頭をtopA、リストBの先頭をtopBとする(以降の動作では現在の位置となる)
topAもしくはtopBが空でない間、以下を繰り返す
topA->data<topB->dataならばtopA->dataをリストCにつなぎ、topA=topA->nextとする。topA->data>=topB->dataならばtopB->dataをリストCにつなぎ、topB=topB->nextとする。
注1:リスト構造は一方向とし、各要素はdata領域とnext領域を持つものとする。
注2:上記のアルゴリズムのままではtopAもしくはtopBが空になっても存在しないdata領域を使おうとするので、修正の要がある。
注3:リストマージの結果としては生成されたリストCを返す事。
課題:リストマージの関数を実現し、それを利用してリストマージを行え。リストのデータとしては整数を想定せよ。データは上記のデータを想定せよ。各リストに対して標準入力から入力するものとする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006/01/27
[5] その他の制限: 留年かかってますなんとかお願いします
0846デフォルトの名無しさん
2006/01/26(木) 10:02:15土日ならやってやれるんだが…。
0847デフォルトの名無しさん
2006/01/26(木) 10:13:020848デフォルトの名無しさん
2006/01/26(木) 10:14:19適当に大学に入ったカスどもがwwwww
0849デフォルトの名無しさん
2006/01/26(木) 10:20:07適当に行詰めたから自分で適宜改行してくれ
>>848
口だけだから高卒止まりなんですか?
言うだけなら幼稚園児でも出来ますよ
#include<stdio.h>
#include<stdlib.h>
typedef struct list list;
struct list{list*next;int data;};
list*cons(int data,list*next){
list*p=(list*)malloc(sizeof(list));
p->next = next;p->data = data;return p;}
list*maaaaazi(list*a,list*b){
list*base=NULL;list**c = &base;
while(a && b){
list**p=a->data < b->data ? &a : &b;*c = *p;*p = p[0]->next;c = &c[0]->next;
}
*c = a?a:b;
return base;
}
int main(void){
list*A = cons(2,cons(5,cons(9,cons(10,NULL))));
list*B = cons(1,cons(4,cons(7,cons(11,NULL))));
list*C = maaaaazi(A,B);list*itr;for(itr = C;itr;itr = itr->next)printf("%d,",itr->data);
return 0;
}
0850デフォルトの名無しさん
2006/01/26(木) 10:24:08まぁ、それ位は出来ると思うからその辺は自分でやってくれ。
fgets + strtolで簡単に出来るから
0851デフォルトの名無しさん
2006/01/26(木) 10:35:51上のソースのmain関数の部分をこれと置き換えて
list*inputList(char*p){
char*next=p;
int v = strtol(p,&next,0);
if(p == next)return NULL;
else return cons(v,inputList(next));
}
int main(void){
list*A,*B,*C,*itr;
char buf[80];
printf("A:");A = inputList(fgets(buf,80,stdin));
printf("B:");B = inputList(fgets(buf,80,stdin));
printf("C:");C = maaaaazi(A,B);
for(itr = C;itr;itr = itr->next)printf("%d,",itr->data);
return 0;
}
0852デフォルトの名無しさん
2006/01/26(木) 11:34:14ありがとうございます。
でもコンパイルするとmemsetの前がエラーって出るんですが・・・
0853デフォルトの名無しさん
2006/01/26(木) 11:38:54エラーメッセージの内容も書かない奴に何を言えと?
0854デフォルトの名無しさん
2006/01/26(木) 11:43:590855821
2006/01/26(木) 12:06:200856デフォルトの名無しさん
2006/01/26(木) 12:25:21寝てる間にえらいことになってるなw
まぁ先生に通報したのは俺な訳だが。
普段ならスルーしてるが、ID/Passまで晒したのが
仮にもム板に来てる人間にしてはモラル無さ杉だと思ったんでな
ってか、ほんとにいい先生だな
0857デフォルトの名無しさん
2006/01/26(木) 12:31:28#include <stdio.h>
#include <math.h>
#define PI 3.141592653589793238462643383279502884197169399375105820974944
double deg2rad(int deg){
return ((2*PI*deg)/360);
}
main(){
int i;
double d;
for(i=0;i<=360;i++){
d=deg2rad(i);
if(
printf("%d deg=%.6f[rad], sin=%.6f, cos=%.6f, tan=%.6f\n", i, d, sin(d), cos(d), tan(d));
}
}
途中まで
0858767
2006/01/26(木) 12:55:310859デフォルトの名無しさん
2006/01/26(木) 13:30:11#include <stdio.h>
#include <math.h>
#include <float.h>
#define PI 3.141592653589793238462643383279502884197169399375105820974944
typedef struct {
int c1;
int c2;
}comp;
double deg2rad(int deg){
return ((2*PI*deg)/360);
}
main(){
int i;
double d;
comp c;c.c1=0;c.c2=0;
for(i=0;i<=360;i++){
d=deg2rad(i);
if(i==90||i==270){
printf("計算不可\n");continue;
}
if(fabs(sin(d)/cos(d)-tan(d))<DBL_EPSILON){c.c1++;}else{c.c2++;}
printf("%d deg=%.6f[rad], sin=%.6f, cos=%.6f, tan=%.6f, c1=%d, c2=%d\n", i, d, sin(d), cos(d), tan(d), c.c1, c.c2);
}
}
c1が一致回数、c2が不一致回数ね
0860デフォルトの名無しさん
2006/01/26(木) 14:03:31ほんとありがとうございます!
0861デフォルトの名無しさん
2006/01/26(木) 14:34:25なんというか言動から高卒臭が漂ってきます
0862デフォルトの名無しさん
2006/01/26(木) 15:13:550863デフォルトの名無しさん
2006/01/26(木) 15:17:420864デフォルトの名無しさん
2006/01/26(木) 15:19:22貯金も無いようだけど
0865デフォルトの名無しさん
2006/01/26(木) 15:21:130866デフォルトの名無しさん
2006/01/26(木) 15:39:17そんな珍しくもなくね?
0867デフォルトの名無しさん
2006/01/26(木) 15:55:23先輩スゲーよ。高卒の漏れは最近まで年収240万だった。・゚・(ノД`)・゚・。
0868デフォルトの名無しさん
2006/01/26(木) 15:56:32[2] 問題文(含コード&リンク):
以下のチャットプログラムを参考にして、特定のIPからのアクセス制限をつける。
(アクセス権が無い旨のメッセージをクライアント側に表示)
サーバー側ソース
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1548.txt
クライアント側ソース
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1549.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: [2006年1月30日]
[5] その他の制限: なるべく簡単な変更でお願いします。
過去ログにアクセス制限の宿題が載っていたのですが、
すでにリンク切れで参考にできませんでした。
よろしくお願いします。
0869デフォルトの名無しさん
2006/01/26(木) 15:57:48俺無理
0870デフォルトの名無しさん
2006/01/26(木) 16:01:55入れるのがめんどくさい
0871デフォルトの名無しさん
2006/01/26(木) 16:06:270872デフォルトの名無しさん
2006/01/26(木) 16:11:39[3.1] OS: Windows
こう書いてある割りにはやけにLinuxなソースだな
#ifdef多用で読みづらいし何て糞ースだよ
0873デフォルトの名無しさん
2006/01/26(木) 16:14:460874デフォルトの名無しさん
2006/01/26(木) 16:37:45本当に感謝。
明日提出してなんとか留年免れてきます!
0875デフォルトの名無しさん
2006/01/26(木) 16:39:110876デフォルトの名無しさん
2006/01/26(木) 16:41:45大分前のスレで信州大の講義用ウェブサイトが貼られてて、その中で見た記憶がある。
ついでに信州大のそのサイトの講義内容は酷かった。
0877デフォルトの名無しさん
2006/01/26(木) 16:42:230878デフォルトの名無しさん
2006/01/26(木) 16:47:28大学のレベルを下げる生徒が卒業したら大問題だ
0879デフォルトの名無しさん
2006/01/26(木) 16:50:470880デフォルトの名無しさん
2006/01/26(木) 17:12:30これって乗せた人間も不正アクセス禁止法にひっかかるんだっけ?
0881デフォルトの名無しさん
2006/01/26(木) 17:37:53[2]ダイクストラ法により隣接行列で表されるグラフの最短経路を求めるプログラムを書きかけた。
このプログラムを完成させ、下の例のグラフで0番の節点から,4番の節点に至る最短経路を求めよ、
プログラム中には、動きがわかるように詳しいコメントを記すこと。
特に、shortestpath関数の詳しい説明を求める。
未完成プログラム⇒http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1550.txt
[3.1]Linux[3.2]gcc[3.3]c言語
[4] 1/31まで
[5] (↓グラフ例)
0 1 2 3 4 ⇒最初の行は節点番号
0 2 0 2 0
2 0 2 1 3
0 2 0 5 4
2 1 5 0 2
0 3 4 2 0
因みにこれを画像で表すとこうなります。↓
⇒http://ccfa.info/cgi-bin/up/src/up23553.bmp
念のため、ダイクストラ法の分かり易い説明が書いてあるサイトを貼っておきます。
⇒http://karel.tsuda.ac.jp/class2005/algo/c24.html
それではお願いしますm(__)m
0882デフォルトの名無しさん
2006/01/26(木) 18:54:19鬼w
でも今回の件で、苦労して問題出す先生もいるんだから、あんまり
完全回答しない方がいいのかなって気もした。一箇所だけ空欄とかw
0883デフォルトの名無しさん
2006/01/26(木) 19:05:050884デフォルトの名無しさん
2006/01/26(木) 19:08:22[2] 問題文(含コード&リンク):個数が未知のデータをメモリにためる方法の例
(http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1551.txt)において
メモリがどのように確保されるかを説明せよ.説明に図を用いる場合には,
その図と図中の文字は手書きでもかまわない.
[3] 環境
[3.1] OS: mac
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月27日17時まで
[5] その他の制限: 大学1年です。配列、ポインタあたりまでやりました。
0885デフォルトの名無しさん
2006/01/26(木) 19:19:36[2] 問題文(含コード&リンク):関数 mlc1 と mlc2 の違いを以下の観点から
500字以内で説明せよ.説明にソースコードの引用を用いる場合には,
その部分は字数制限の対象にはしない.説明に図を利用する場合,
その図と図中の文字は手書きでもよい.
・「値渡し」と「アドレス渡し」
・実行時間
プログラムhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1552.txt
[3] 環境
[3.1] OS: mac
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月27日17時まで
[5] その他の制限: >>894のものですが、
全部で五問あるのでお願いします。これは二問目です。
0886ど素人
2006/01/26(木) 19:27:23#include <stdio.h>
int main()
{
float x = 3.0, y = 8.0;
printf("商は%f, 余りは%f",x / y, x % y);
return0;
}
これでコンパイル通らず、%無効なオペランドです と出ます。
なんででしょうか・・・
0887デフォルトの名無しさん
2006/01/26(木) 19:30:110888デフォルトの名無しさん
2006/01/26(木) 19:30:13[2] 問題文(含コード&リンク):標準ライブラリとして提供されている
文字列処理の機能を使用することなく,標準関数strcmp()と同等の処理を行う
関数mystrcmp()を定義せよ.
[3] 環境
[3.1] OS: mac
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年1月27日17時まで
[5] その他の制限: >>894のものです、これは三問目です。
0889デフォルトの名無しさん
2006/01/26(木) 19:33:13>>884の間違いです、すんません
0890デフォルトの名無しさん
2006/01/26(木) 19:34:49[2] 問題文(含コード&リンク): 10人の名前、年齢、電話番号の入ったファイルを作り、それを読み出すファイルを作れ。
そのとき、ファイル名は画面上で自由に設定でき、ファイルの拡張子はdatとなるようにせよ。
また、ファイル名が8文字を越えると、入力したファイル名は無効となり、再度ファイル名の入力を要請できるようにせよ。
問題上のファイルに新たに1人のデータを追加するためのプログラムを作れ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: すいませんわかりません
[3.3] 言語:C
[4] 期限:2006年1月30日まで
[5] その他の制限: 初心者なので、あまり難しくないものでお願いします。
0891デフォルトの名無しさん
2006/01/26(木) 19:35:17int mystrcmp(const char*a,const char*b){
int diff;
for(;(diff = *a - *b)==0 && *a;++a,++b){}
return diff;
}
0892デフォルトの名無しさん
2006/01/26(木) 19:35:20printf("商は%.5f, 余りは%d",x / y, (int)x % (int)y);
0893デフォルトの名無しさん
2006/01/26(木) 19:37:38字数は数えてない。ポインタ経由でのアクセスによる影響は無視。どうせ両方スタックにあるんだし。
関数 mlc1 と mlc2の引数機構(parameter mechanism)は共に値渡しである。そもそもCには値渡し以外の引数機構は存在しない。故に「「値渡し」と「XXX」」という観点からこれら2つの関数の「違い」を説明するならば、「違いはない」としか言いようがない。
また、実行時間については
mlc1はstruct data型という巨大な方の引数をとるため、仮引数オブジェクトの生成に時間がかかる可能性がある
mlc2はstruct data*型という比較的小さな方の引数をとるため仮引数オブジェクトの生成にはmlc1程には時間はかからない可能性が高い
0894デフォルトの名無しさん
2006/01/26(木) 19:38:16>>885だった。
0898デフォルトの名無しさん
2006/01/26(木) 20:08:13ありがとうございます!
0899デフォルトの名無しさん
2006/01/26(木) 20:10:220900デフォルトの名無しさん
2006/01/26(木) 20:12:58どうもありがとうございます!
0901デフォルトの名無しさん
2006/01/26(木) 20:34:25最初、i=0のループを回すとき、D[i-1][???]のi-1って負になる気が
するんだが、気のせいかな?
ついでにいうと、ヒントの1535.txtはロダから流れている。
0903デフォルトの名無しさん
2006/01/26(木) 21:00:38アルゴリズムが大体同じならヒント通りじゃなくてもいいです。
0904デフォルトの名無しさん
2006/01/26(木) 21:04:39「全ての組み合わせのうち、最高のものを見つける」
ってアルゴリズムでOK?>>903
0905デフォルトの名無しさん
2006/01/26(木) 21:06:480907デフォルトの名無しさん
2006/01/26(木) 21:26:420908デフォルトの名無しさん
2006/01/26(木) 21:45:06Cらしく書いたつもり。
#include <stdio.h>
/* 問題の定義 */
#define n 5 /* 品物の種類 */
#define WMAX 10 /* 重さの最大 */
static int w[n]={2,3,4,5,6}; /*各物品の重量*/
static int v[n]={4,5,8,9,11}; /*各物品の価値*/
int sum(int *p, unsigned x) { int retval = 0; for (; x; p++, x >>= 1)
if (x & 1) retval += *p; return retval; } void print(unsigned x) {
int i; int sumw = sum(w, x); int sumv = sum(v, x); for (i = 0; x;
i++, x >>= 1) if (x & 1) printf("(%d, %d) ", w[i], v[i]);
printf("%d %d\n", sumw, sumv); } int main(void) { unsigned x, best
= 0; for (x = 0; x < (1 << n); x++) { if (sum(w, x) <= WMAX &&
sum(v, x) > sum(v, best)) { best = x; print(x); } } return 0; }
0909デフォルトの名無しさん
2006/01/26(木) 22:05:44九九の表を作るプログラミングを教えて下さい。すごく初歩的どとは思いますが、どうかお願いします。
/* kadai3.c */
/* */
#include<stdio>
int i,j;
ここまでしか出来なくて、どうやったら九九の表が作れるのか教えてください。
0910デフォルトの名無しさん
2006/01/26(木) 22:06:150911デフォルトの名無しさん
2006/01/26(木) 22:06:53氏ねマルチ
向こうで答えてもらっただろ
0912デフォルトの名無しさん
2006/01/26(木) 22:13:45printf("ここに書けば全て解決");
0913デフォルトの名無しさん
2006/01/26(木) 22:24:46ほらよ。これで満足かい?
int main(){
int x;
for(x=81;x--;)
printf("%2d%c",(9-x/9)*(9-x%9),x%9?' ':'\n');
}
0914デフォルトの名無しさん
2006/01/26(木) 22:24:49ナップサック問題やってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1554.txt
0915デフォルトの名無しさん
2006/01/26(木) 22:29:34#include <stdio.h>
int main(void) {
int i, j, res[9][9];
for (i = 1; i <= 9; i++)
for (j = 1; j <= 9; j++)
res[i - 1][j - 1] = i * j;
printf(" 1 2 3 4 5 6 7 8 9\n");
for (i = 1; i <= 9; i++){
printf("%d", i);
for (j = 1; j <= 9; j++)
printf("%3d", res[i - 1][j - 1]);
printf("\n");
}
}
0916デフォルトの名無しさん
2006/01/26(木) 22:41:27[2] 問題文(含コード&リンク):
1、c言語では関数の戻り値は1変数に限られている。したがって、2変数以上
の情報を呼び出し側(例えばmain内か呼び出された関数ならmainがその
関数の呼び出し側となる)に戻すことはできない。2変数以上の情報を呼び
出し側に返すためには、どのようにすればよいか。
2、3つの浮動少数型変数のポインタを引数にとり、引数のポインタの内容
平均を4番目の引数のポインタの内容に代入する関数(関数名と引数名は
自分で決めてよい)。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月27日でお願いします。
[5] その他の制限:特にないです。
0917デフォルトの名無しさん
2006/01/26(木) 22:45:251、その変数が全て格納できるフラットなメモリを確保して格納し、その先頭アドレスを返す。
呼び出し側はそれをvoid*で受け取り、ドキュメントとにらめっこしながらガンガル。
0918デフォルトの名無しさん
2006/01/26(木) 22:46:371b引数に戻り値を格納するアドレスを渡す
1c1変数のビットを分割して、それぞれに意味を持たせる
2 void f(double *a, double *b, double *c, double *d) {*d = (*a + *b + *c) / 3;}
0920916
2006/01/26(木) 22:58:541] 授業単元:プログラミング�T
[2] 問題文(含コード&リンク):
符号付き整数型の引数3つをとり引数のうち0以上のものの合計を戻り値(返値)
とする関数。ただし、引数全てが負の場合は-1を戻り値(返値)とする関数。
なお、関数名、引数名は自分で決めてよい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月27日でお願いします。
[5] その他の制限:特にないです。
0921デフォルトの名無しさん
2006/01/26(木) 23:00:500922デフォルトの名無しさん
2006/01/26(木) 23:02:23さすがにそのレベルはきいちゃだめだろ
0923デフォルトの名無しさん
2006/01/26(木) 23:03:59>>914
ありがとうございます!
最後ちょっとだけお願いなんですけど、出力の仕方で
(重さ、価値)で組み合わせが出るのではなく商品の番号(何個目か)で
表示されるようにはならないでしょうか?
0924デフォルトの名無しさん
2006/01/26(木) 23:05:28int positiveSum(int a,int b,int c){
return (a>0?a:0)+(b>0?b:0)+(c>0?c:0)-((a&b&c)<0);
}
0925デフォルトの名無しさん
2006/01/26(木) 23:06:200926914
2006/01/26(木) 23:43:38うp直前に慌ててゴミ掃除したからワーニング出てるな。笑ってゆるしておくれ。
しかし>>908のはすごいな。あんな組み方おれにはできない。
ソース出されればやってることはわかるが、いきなりそういう風には頭が働かない…
printf("(%d,%d) ",w[j],v[j]);
↓
printf("%d ",j);
あるいは
printf("%d(%d,%d) ",j, w[j],v[j]);
0927デフォルトの名無しさん
2006/01/26(木) 23:55:520928デフォルトの名無しさん
2006/01/26(木) 23:58:16記憶する方法の長所、短所を教えてください。
0929デフォルトの名無しさん
2006/01/27(金) 00:04:49(2)ランダムな位置への読み書きの手間(速度)
(3)要素の削除にかかる手間(速度)
(4)可変個数のデータの扱いの対応
で、それぞれ書けばよろしい。
0930デフォルトの名無しさん
2006/01/27(金) 00:06:12[2] 問題文(含コード&リンク):
一年三組の11人目があなただったとします。
一郎君から順に点数を入力、最後にあなたの点数を入力し、すべて入力し終わったあと、
一番成績の良い人の順から、点数を出力するプログラムを作成しなさい。
※ 入力を求める関数、並べ替える関数、出力する関数を作成すること。
また、処理順序として、すべて入力→並び替え処理→出力 とするようにしてください。
一年三組成績
A君 50点 F 90点
B君 75点 G 67点
C君 36点 H 82点
D君 88点 I 45点
E君 68点 J 77点
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン:初心者なので分かりません
[3.3] 言語: C言語
[4] 期限: 1/28
[5] その他の制限
0931デフォルトの名無しさん
2006/01/27(金) 00:06:58全角スペースでインデントつけられるより774倍マシなんですが。
コピペしてメモ帳でもテキストエディタでも張り付けて
自分でタブ入れていけば、ほぉら見やすい!
基本はコピペしたものが面倒なくそのままコンパイル通ることだと思ってる。
で、タブのつぶれた縦長のレス・ソースは読みにくいし。
0932デフォルトの名無しさん
2006/01/27(金) 00:09:01自分でタブ入れするよりは、全角をタブに一括置換のほうが楽な気が
0933デフォルトの名無しさん
2006/01/27(金) 00:09:440934デフォルトの名無しさん
2006/01/27(金) 00:11:37因数分解するプログラムを作れ。
54=2.3.3.3.
306=2.3.3.17.
#include <stdio.h>
main(){
long d,n;
printf("n=?"); scanf("%ld",&n);
d=2; /* 以下d でnを順に割って行く*/
while(1){
if (n==1) 【 A 】
if (n%d==0) { printf("%ld.",d); n=【 B 】;}
else d=【 C 】;
}
printf("\n");
}
これがわかりません、教えてください
0935デフォルトの名無しさん
2006/01/27(金) 00:12:19>>1読め
0936デフォルトの名無しさん
2006/01/27(金) 00:13:03あなたと一郎君とA君とF(呼び捨て)とニャン丸とルミ子の関係がよくわかりません。
メル友?
0938デフォルトの名無しさん
2006/01/27(金) 00:18:04問題の出し方として仕方ないのかもしれんが、Cのプログラムとしては気持ち悪いな。
0939デフォルトの名無しさん
2006/01/27(金) 00:22:03【A】break
【B】n/d
【C】d+1
0940デフォルトの名無しさん
2006/01/27(金) 00:23:32惜しいっ!
0941>>934
2006/01/27(金) 00:23:43[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows Me
[3.2] すいません、わかりません
[3.3] 言語: C
[4] 期限: [2006年01月30日まで]
[5] その他の制限:特にありません。
これでよろしいでしょうか?
0942>>934
2006/01/27(金) 00:37:23もう一問お願いしてもよrしいでしょうか?
1. キーボードから10個の実数を配列 double a[10] に読み込み、合計、平均、
及び最大値、最小値を求めて表示するプログラムを作れ。
ヒント: for(i=0;i<10;i++){ printf("a[%d]=??";i); scanf("%lf",&a[i]);}
でa[0],a[1],...,a[9] を入力!!
(次に) saidai=a[0];
そのあと、計算の為にforループを作るが、
(ループの中で) if (a[i]>saidai) saidai=a[i];
は何を表わすか?きっと最大値を求めるプログラム関連だろう。
しくみがわかれば最小値も同様にわかる。
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: Windows Me
[3.2] すいません、わかりません
[3.3] 言語: C
[4] 期限: [2006年01月30日まで]
[5] その他の制限:特にありません。
0943デフォルトの名無しさん
2006/01/27(金) 00:40:400945デフォルトの名無しさん
2006/01/27(金) 00:41:47しかし、xは2^n-1までループさせてるよねぇ・・・?
すまん。よくわからん。
0946デフォルトの名無しさん
2006/01/27(金) 01:09:11たぶん、xをどの荷物を加算するかのフラグ(ビット単位)にしているんだよ。
例えば、x=0b00000011だったら最初と次の荷物を加算するとか。
確かにCらしいね。スキルのない自分はなかなか思いつかないけど。
0947デフォルトの名無しさん
2006/01/27(金) 01:09:350948デフォルトの名無しさん
2006/01/27(金) 01:28:45スキルの無い自分もまだわからない。
今までやっていただいて何なんですが、アルゴリズムの制約にのっとって
もらえると非常にありがたいと言うか。
(n-1個目まで加えたときの結果を用いて、n個目加えたときの組み合わせを作る
って言うのを繰り返す。最適解の値を再帰的に定義して値の小さいところから
順に積み上げる。)
0949デフォルトの名無しさん
2006/01/27(金) 01:47:40ぜんぜん分からん
0950デフォルトの名無しさん
2006/01/27(金) 01:57:46この前シェルソート作ったからそのプログラムを流用した。
シェルソートを使う意味は全く無いが、気にするな!
#include<stdio.h>
struct data{
char name[128];
int score;
};
int i=0;
void Input(struct data *A,int n);
void ShellSort(struct data *A,int n);
void Output(struct data *A,int n);
int main(){
struct data D[128];
Input(D,11);
ShellSort(D,11);
printf("\n一年三組成績\n");
Output(D,11);
}
0951デフォルトの名無しさん
2006/01/27(金) 01:58:36printf("各生徒の名前と成績を入力してください\n");
for(i=0;i<n;i++){
("%d人目",i+1);
printf("名前:"); scanf("%s",A[i].name);
printf("得点:"); scanf("%d",&A[i].score);
}
}
void ShellSort(struct data *A,int n){
int j, k;
int h=1;
struct data damy;
do{h=3*h+1;}while(h<=n);
do{
h=h/3;
for (j=h; j<n; j++){
for (k=j-h; k>=0; k-=h) {
if (A[k].score>A[k+h].score) break;
0952デフォルトの名無しさん
2006/01/27(金) 01:59:41damy=A[k];
A[k]=A[k+h];
A[k+h]=damy;
}
}
}
}while(h>1);
}
void Output(struct data *A,int n){
for(i=0;i<n;i++) printf("%s君 %d点\n",A[i].name,A[i].score);
}
0953デフォルトの名無しさん
2006/01/27(金) 02:30:33最適解の値を再帰的に定義して値の小さいところから 順に積み上げる。
・・・うーん。>>914のどこがお気に召さないのだろうか?
穴埋めじゃないから?
0954デフォルトの名無しさん
2006/01/27(金) 02:43:34あんなヒントなんて、飾りです。偉い人には、それがわからんのです。
0956デフォルトの名無しさん
2006/01/27(金) 03:22:15C言語はまったくの初心者です。
無謀ながら3次元入力装置のデータグローブを作ってみようと、
いろいろなサイトの資料を参考に作ってきたのですが、
グローブからコンピュータにデータを送るC言語のプログラムを見つけまして、
C言語の本を読んでなんとか理解しようとしているのですが、
#include "g_lib.c" というのがどうしてもわからなくて悩んでいます。
どうか、この文がなんなのか詳しく教えて頂けないでしょうか。
0957デフォルトの名無しさん
2006/01/27(金) 05:57:57http://pc8.2ch.net/test/read.cgi/tech/1136726279/
0958デフォルトの名無しさん
2006/01/27(金) 07:44:17してないだけだろ
0959デフォルトの名無しさん
2006/01/27(金) 08:20:09#include<stdio.h>
#define N 5
#define WMAX 10
int main() {
int i, j, k, l;
int w[N] = {2,3,4,5,6}, v[N] = {4,5,8,9,11};
int D[N+1][WMAX+1], P[N+1][WMAX+1];
for (k = 0; k <= WMAX; ++k) D[0][k] = 0;
for (i = 0; i < N; ++i) {
for (k = 0; k <= WMAX; ++k) D[i+1][k] = D[i][k], P[i+1][k] = 0;
for (k = 0; k + w[i] <= WMAX; ++k)
if (D[i][k+w[i]] >= D[i][k]+v[i]) D[i+1][k+w[i]] = D[i][k+w[i]];
else D[i+1][k+w[i]] = D[i][k]+v[i], P[i+1][k+w[i]] = 1;
}
for (k = 0; k <= WMAX; ++k) {
if (!D[N][k]) continue;
for (i = N, l = k; i-1 >= 0; --i)
if (P[i][l]) printf("(%d,%d) ", w[i-1], v[i-1]), l -= w[i-1];
printf("%d %d\n", k, D[N][k]);
}
}
0960デフォルトの名無しさん
2006/01/27(金) 08:58:23strcmp()と同等の処理を行える関数shukudai()をつくってください。
お願いします。
0961デフォルトの名無しさん
2006/01/27(金) 09:03:19�Aあなたはどこまで考えたの?
0962デフォルトの名無しさん
2006/01/27(金) 09:10:05http://pc8.2ch.net/test/read.cgi/tech/1138320520/
0963デフォルトの名無しさん
2006/01/27(金) 09:11:05正確な機能シラネ
0964デフォルトの名無しさん
2006/01/27(金) 09:24:17ぐぐった
http://www.bohyoh.com/CandCPP/C/Library/strcmp.html
うまく動くかなんてしらね
0965デフォルトの名無しさん
2006/01/27(金) 09:25:21man 3 strcmp
0966デフォルトの名無しさん
2006/01/27(金) 10:03:09スルーされてる・・・
ほんとわからなくて困っています。
誰か助けてください。
0967デフォルトの名無しさん
2006/01/27(金) 10:15:53while(*a++ == *b++){if(*a=='\0')return 0;}return (*a - *b);}
0968デフォルトの名無しさん
2006/01/27(金) 10:17:06入出力例が示されてないとめんどくさい
ファイルを読み出すファイルってのがよく分かんない
0969デフォルトの名無しさん
2006/01/27(金) 10:17:30追記はfopen("filename","a")だよ
0970デフォルトの名無しさん
2006/01/27(金) 10:18:350971デフォルトの名無しさん
2006/01/27(金) 10:33:23最大の重さ 3 で、重さと価値の組み合わせが(1, 2) (2, 3) (3, 4)のとき
どう動いて欲しいか書いてみてくれ。
1)途中経過でどう出力してほしいのか? プログラムが動いたときの出力と同じに書いてくれ。
2)で、n個のときn-1個の場合の情報を使うっていうのは、1)の場合だとどこをどう使うか書いてみてくれ。
0972デフォルトの名無しさん
2006/01/27(金) 11:02:10自分もよくわからないんですが、
ファイルをdatで作っておいて、それをfopenとかで読み出すってカンジじゃないんでしょうか・・・
入出力は名前1年齢1電話番号1とかでかまいません。
人数も多かったら3人でかまいません。
申し訳ないんですが、どなたか教えてください。
>>969
ありがとうございます。参考にさせていただきます。
0973デフォルトの名無しさん
2006/01/27(金) 11:13:44てか微妙に問題の意味がわからない
読み込むならその読み込んだデータはどうするんだ?
0974デフォルトの名無しさん
2006/01/27(金) 11:25:55すいません。問題を写し間違えていたようです。
正しくは、「10人の名前、年齢、電話番号の入ったファイルを作り、それを読み出す「プログラム」を作れ」
でした。ご指摘の通りでした。申し訳ございません。
ほかのところは確認したところ、写し間違いはしていないようです。
よろしくお願い致します。
0975デフォルトの名無しさん
2006/01/27(金) 11:28:45いや・・・そこはまあ脳内補完できるんだけど
読み込んでどうするんだってこと・・・それを画面に表示するのか
もしくは追記モードを使わないでwで上書きしろってことなのか
0976デフォルトの名無しさん
2006/01/27(金) 11:32:140977デフォルトの名無しさん
2006/01/27(金) 11:34:19名前、年齢、電話番号に分解するのか?とかわかんないんだよ
0978デフォルトの名無しさん
2006/01/27(金) 11:35:010979デフォルトの名無しさん
2006/01/27(金) 11:53:45int main(void){
puts(" _、_\n( ,_ノ` )y━・~~~先生あんた教師向いてないぜ");
return 0;
}
0980デフォルトの名無しさん
2006/01/27(金) 12:24:330981デフォルトの名無しさん
2006/01/27(金) 12:29:450982デフォルトの名無しさん
2006/01/27(金) 12:36:580983デフォルトの名無しさん
2006/01/27(金) 12:40:32int main(void){
puts("先生あんた教師向いてないぜ :-P");
return 0;
}
0984デフォルトの名無しさん
2006/01/27(金) 12:43:34コンソールで使えるのそれ?
0985デフォルトの名無しさん
2006/01/27(金) 12:57:56int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
MessageBox(NULL," _、_\n( ,_ノ` )y━・~~~先生あんた教師向いてないぜ","",NULL);return 0;}
…必死すぎw
0986デフォルトの名無しさん
2006/01/27(金) 13:03:240987デフォルトの名無しさん
2006/01/27(金) 13:07:490989デフォルトの名無しさん
2006/01/27(金) 13:23:31[2] 問題文(含コード&リンク):構造体に初期値を入れた後、表示させ、
テストの点数が高い順に並び替えた後を、表示させるプログラムを作っています。
並び替えの部分が上手く作れなくて、困っています。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++6.0
[3.3] 言語: C++
[4] 期限: 今日中
[5] その他の制限: 表示させる所を関数化、並び替えの部分を関数化する
よろしくお願いします
0990デフォルトの名無しさん
2006/01/27(金) 13:43:40SWAPという並び替えの関数とバブルソートの関数をつかってプログラミングをつくる
のが条件です。あとwhile文は使わずにfor文だけをつかいたいです。
どなたかこの問題を解いて下さいませんか?宜しくお願いします。
0991デフォルトの名無しさん
2006/01/27(金) 13:45:410992デフォルトの名無しさん
2006/01/27(金) 14:02:00まず構造体の中身を教えろ
そして何を並び替えるんだ
0993デフォルトの名無しさん
2006/01/27(金) 14:03:24ソートの問題は既出なのでお断りしてるんです。
0994デフォルトの名無しさん
2006/01/27(金) 14:05:00ヒント:>>664
0995デフォルトの名無しさん
2006/01/27(金) 14:14:34次スレと両方に書かないでください><
0996デフォルトの名無しさん
2006/01/27(金) 14:15:050997デフォルトの名無しさん
2006/01/27(金) 14:15:500998デフォルトの名無しさん
2006/01/27(金) 14:16:550999デフォルトの名無しさん
2006/01/27(金) 14:16:571000デフォルトの名無しさん
2006/01/27(金) 14:17:2710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。