C/C++の宿題を片付けます 80代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/12/24(日) 23:17:00【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html
【過去ログ検索】
http://chomework.sakura.ne.jp/
【wiki】
http://www23.atwiki.jp/homework/
【前スレ】
C/C++の宿題を片付けます 79代目
http://pc8.2ch.net/test/read.cgi/tech/1165943509/
0002デフォルトの名無しさん
2006/12/24(日) 23:22:040003デフォルトの名無しさん
2006/12/24(日) 23:25:180004デフォルトの名無しさん
2006/12/25(月) 21:47:27http://pc8.2ch.net/test/read.cgi/tech/1165943509/987
誰だよ、srandにstdlib.hはCなら無くてもコンパイルできるはずだが。とか言っている
無知講師は?w
0005デフォルトの名無しさん
2006/12/25(月) 21:48:09[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3281.zip
※スキャナで取ってjpgにしたため、zipに圧縮したうえでろだにあげました。
[3] 環境
[3.1] OS:Linux RedHat9.0
[3.2] コンパイラ名とバージョン: gcc(バージョン不明...)
[3.3] 言語: C言語
[4] 期限:2006年12月31日23:00まで(2006年12月31日23:59までにメール提出となっています)
[5] その他の制限: ライブラリは#include<math.h>のみでお願いします。
よろしくお願いします。
00065
2006/12/25(月) 21:49:04乱数が必要なので、標準関数も必要です。
よろしくお願いします
0007デフォルトの名無しさん
2006/12/25(月) 22:18:55その無知講師とやらが誰だか知らんけど、コンパイルできるはずだよ。
Cではプロトタイプ宣言必須じゃないからね。C++では必須だけど。
0008デフォルトの名無しさん
2006/12/25(月) 22:33:53>はずだよ
はっきりしないね、出来るなら出来るってなぜ実演して確信をもって答えないんですか?
0009デフォルトの名無しさん
2006/12/25(月) 22:34:21そこに書かれているのは srand のプロトタイプが
stdlib.h に書かれている、ということだけ。
定義されていない関数であっても ISO 9899:1989 3.3.2.2、
implicit function declaration で定義されていない関数の
呼び出しは適当に解釈されることが保証されている。
# ISO 9899:1999 ではこの機能は撤廃されたので
# >>7 も必ずしも正しいとはいえない。
0010デフォルトの名無しさん
2006/12/25(月) 22:37:560011デフォルトの名無しさん
2006/12/25(月) 22:39:06現実問題としてC89を受け付けないCコンパイラは存在しないし
C99を受け付けないコンパイラも多い
未だに一番よく使われてるCはC89だよ
0012デフォルトの名無しさん
2006/12/25(月) 22:41:43srand使っているものはstdlib.hを入れているものばかりだ罠
0013デフォルトの名無しさん
2006/12/25(月) 22:43:00ではないからな。
んでも、コンパイルできるできないって話とは次元が違うよ。
0014デフォルトの名無しさん
2006/12/25(月) 22:45:510015デフォルトの名無しさん
2006/12/25(月) 22:46:36入れなくともコンパイルはできるけど。
そんだけの話。
0016デフォルトの名無しさん
2006/12/25(月) 23:07:04とりあえず一つ目の課題だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3282.txt
0017デフォルトの名無しさん
2006/12/26(火) 00:15:06課題Bです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3283.txt
但し、このプログラムの内容はホームページ
http://www.asahi-net.or.jp/~UC3K-YMD/Lesson/Section03/section03_09.html
の内容を参考にしました。
(参考にしました、と言うよりほとんど同じ(^^;))
0018922
2006/12/26(火) 03:53:17そのとおりだと思います。
問題事体が文章でなくて聞き取りみたいな感じなので難しい。
time[i] のときの値を data[i] とする。なんですが、このデータは昇順されてるとは言ってないので
初めにソートだけしています。その後がよくわかりません。
いろんなケースあると思うんですが、すべてに対応し切れてないのが現状です。
0019デフォルトの名無しさん
2006/12/26(火) 04:11:25・前スレ923の境界条件
・前スレ922の例の範囲時間110〜130で区切り10の場合で結果が3つとなる矛盾
を解決しないと話が進まないよ
0020デフォルトの名無しさん
2006/12/26(火) 04:23:02というのは問題の難しさではなく、あんたが問題を理解してないだけ。
そんな問題を又聞きでしか理解できない俺たちに解けるわけがない。
出題者に問題を正確に聞き、仕様をきっちり立ててからもう一度書き込みな。
0021デフォルトの名無しさん
2006/12/26(火) 10:17:22[2] 問題文(含コード&リンク):
yasuo 170.5 70.5
hideaki 176.5 65.8
nobu 166.5 58.2
yuichi 168.0 65.4
この上記の5人の平均の身長と体重、平均の標準体重と肥満率
を求めてください。標準体重は標準体重 = (身長 - 100) * 0.9
で求める。肥満率は(体重 - 標準体重) * 100.0 / 標準体重
で求める。なお、求めた平均身長、平均体重、平均標準体重、
平均肥満率を最後に printf で出力してください
nori 152.7 68.6
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C/)
[4] 期限: 今日中
[5] その他の制限:
0022デフォルトの名無しさん
2006/12/26(火) 10:54:43[2] 問題文(含コード&リンク):
yasuo 170.5 70.5
hideaki 176.5 65.8
nobu 166.5 58.2
yuichi 168.0 65.4
nori 152.7 68.6
この上記の5人の平均の身長と体重、平均の標準体重と肥満率
を求めてください。標準体重は標準体重 = (身長 - 100) * 0.9
で求める。肥満率は(体重 - 標準体重) * 100.0 / 標準体重
で求める。なお、求めた平均身長、平均体重、平均標準体重、
平均肥満率を最後に printf で出力してください
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: 今日中
[5] その他の制限:
0023デフォルトの名無しさん
2006/12/26(火) 11:12:26[2] 問題文(含コード&リンク): ttp://www.geocities.jp/c_prog2011/file_4.txt
[3] 環境
[3.1] OS: Windows XP Home Edition
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: Cのみ
[4] 期限: 2006年12月31日23:59
[5] その他の制限:
よろしくおねがいします。
0024デフォルトの名無しさん
2006/12/26(火) 11:12:34{
struct status {
char name[ 20 ];
double height;
double weight;
double standard;
double obese;
};
struct status average = { "", 0.0, 0.0, 0.0, 0.0 }, data[ 5 ] = {
{ "yasuo", 170.5, 70.5 },
{ "hideaki", 176.5, 65.8 },
{ "nobu", 166.5, 58.2 },
{ "yuichi", 168.0, 65.4 },
{ "nori", 152.7, 68.6 }
};
int i;
for ( i = 0; i < 5; i++ ) {
average.height += data[ i ].height;
average.weight += data[ i ].weight;
average.standard += data[ i ].standard = ( data[ i ].height - 100.0 ) * 0.9;
average.obese += data[ i ].obese = ( data[ i ].weight - data[ i ].standard ) * 100.0 / data[ i ].standard;
}
average.height /= 5.0;
average.weight /= 5.0;
average.standard /= 5.0;
average.obese /= 5.0;
printf( "average height = %f\n", average.height );
printf( "average weight = %f\n", average.weight );
printf( "average standard = %f\n", average.standard );
printf( "average obese = %f\n", average.obese );
}
0025デフォルトの名無しさん
2006/12/26(火) 11:57:04つまんねぇ事聞くけど、なんで片方txtなん?
0026デフォルトの名無しさん
2006/12/26(火) 12:18:26[2] 問題文:
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。
(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です
0028デフォルトの名無しさん
2006/12/26(火) 14:01:51超適当に書いた。
#include<stdio.h>
#include<string.h>
int main(void){
char word[80][80],*table[80],*tmp;
int i,j,size;
for(i=0;i<80 && scanf("%79s",word[i])==1;++i)table[i]=word[i];
for(size=i,i=0;i<size;++i)
for(j=i+1;j<size;++j)
if(strcmp(table[i],table[j]) > 0)tmp = table[i],table[i]=table[j],table[j]=tmp;
for(i=0;i<size;++i)printf("%s ",table[i]);
return 0;
}
0029デフォルトの名無しさん
2006/12/26(火) 14:42:37[2] 問題文(含コード&リンク):下記
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VS2005 C++
[3.3] 言語: C++
[4] 期限: 明日まで
サブ関数で周りの画素を配列d[8]に入れたいんですが、どうやればいいでしょうか?returnを使うのではなくポインタを使って直にデータを入れたいんです。
配列ddは画像のピクセルデータがすべて入っている配列です。
void Get8(int i, int j, int dd[], int *d[]) //ポインタで8近傍を返す
{
*(d)=*dd[i+1][j];
*(d+1)=dd[i+1][j-1];
*(d+2)=dd[i][j-1];
*(d+3)=dd[i-1][j-1];
*(d+4)=dd[i-1][j];
*(d+5)=dd[i-1][j+1];
*(d+6)=dd[i][j+1];
*(d+7)=dd[i+1][j+1];
}
void main()
{
int d[8];
Get8(i,j,dd,d)
}
イメージとしてはこんな感じなんですが書き方がわかりません>< お願いします。
0030デフォルトの名無しさん
2006/12/26(火) 14:55:32こう?
void getNear8(int x, int y, int image[][], int dst[][]){
int dx, dy;
for(dx=-1;dx<=1;dx++)
for(dy=-1;dy<=1;dy++)
dst[dx+1][dy+1]=image[x+dx][y+dy]; //[x][y]なのか[y][x]なのかわかんねーけどいいや
}
最近のコンパイラならコレくらいのforループは展開してくれる・・・はず
0031デフォルトの名無しさん
2006/12/26(火) 15:09:230032デフォルトの名無しさん
2006/12/26(火) 15:12:08#define SIZE 3
void Get8(int i, int j, int dd[][SIZE], int d[]) //ポインタで8近傍を返す
{
*(d)=dd[i+1][j];
*(d+1)=dd[i+1][j-1];
*(d+2)=dd[i][j-1];
*(d+3)=dd[i-1][j-1];
*(d+4)=dd[i-1][j];
*(d+5)=dd[i-1][j+1];
*(d+6)=dd[i][j+1];
*(d+7)=dd[i+1][j+1];
}
void main()
{
int d[8];
int dd[SIZE][SIZE]={{1,2,3},{4,5,6},{7,8,9}};
Get8(1,1,dd,d);
for(int i=0;i<8;i++){
cout<<d[i]<<endl;
}
}
0033デフォルトの名無しさん
2006/12/26(火) 15:43:22ありがとうございました!説明がへたくそですいませんでした。
先生方のを参考にしてやったところうまくできました><
0034デフォルトの名無しさん
2006/12/26(火) 18:36:17[2] 【問題文】
文字列を2つ入力し、それを結合して表示するプログラムを作成せよ。
入力文字列(2つ)および結合文字列を格納する変数(配列)はmain()関数内で
各々別個に用意する。
結合文字列を作成する関数str_cat()を自作すること。
→strcat()など文字列操作のライブラリ関数を使わないこと。
2つの文字列は20バイト以内を前提とするが、拡張できるようにすること。
str_cat()の仕様は以下の通り。
----- str_cat() ----------------------------------------------------
void str_cat(char *文字列1へのポインタ,
char *文字列2へのポインタ
char *格納先へのポインタ);
引数 :文字列1へのポインタ:結合対象文字列1(先頭)の先頭アドレス
文字列2へのポインタ:結合対象文字列2(後方)の先頭アドレス
格納先へのポインタ :結合文字列格納先の先頭アドレス
返却値:なし
-------------------------------------------------------------------
※「void str_cat(const char*, const char*, char*);」でもよい
【実行例】
Enter String(1) : abcdef
Enter String(2) : XYZ
Result : abcdefXYZ
[3] 環境
[3.1] OS: Windowsxp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2006年12月27日
[5] その他の制限:文字列操作のライブラリ関数は使ってはいけないそうです。
0035デフォルトの名無しさん
2006/12/26(火) 18:49:490036デフォルトの名無しさん
2006/12/26(火) 18:54:160037デフォルトの名無しさん
2006/12/26(火) 20:49:14#include <stdio.h>
void str_cat(char *str1, char *str2, char* dest)
{
int i=0,j=0;
while(str1[i]){
dest[j] = str1[i];
i++;j++;
}
i=0;
while(str2[i]){
dest[j] = str2[i];
i++;j++;
}
dest[j] = '\0';
}
int main(int c,char **v){
char *str1="やらないか",*str2="アッー!",dest[16]="";
str_cat(str1,str2,dest);
printf(dest);
return 0;
}
0038デフォルトの名無しさん
2006/12/26(火) 21:57:00ありがとうございます。
[1] 授業単元: C言語
[2] 問題文: 2問あります
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。
(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です
0039デフォルトの名無しさん
2006/12/26(火) 21:57:07[1] 授業単元:Cプログラミング演習
[2] 問題文:学籍番号(5桁の英数文字列)、英、数、国の得点(各100点満点)を
次々に読み込んで、各人の総得点を計算の上、�@読み込んだ順に
各人のデータを、�A各人の平均と標準偏差を次の形に出力する
cプログラムを作成せよ。
但し、プログラム作成においては
・学生の人数は100人以下で不定とする。(100人以下なら何人でも、
プログラムを修正せずにうまく対処しなければならない)
・学生一人のデータは構造体としてまとめて、それにStudentという
データ型名をつけること。
・Student型を要素とする配列を用意してプログラムを組むこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 2007年1月10日12:00まで
その他:得点データはファイルから読み込みます。./a.out<ファイル名 といった風に
前もありましたが複数の回答を比較したいのです
よろしくお願いします
0040デフォルトの名無しさん
2006/12/26(火) 21:58:09以下のような形で出力してください
Id-No Eng Math Jap Total
----- --- ---- --- -----
G0342 44 65 51 160
G0343 83 100 84 267
G0344 58 30 57 145
.
.
.
G3621 85 80 90 255
G3622 74 100 65 239
------------------------------
Ave 72.5 75.8 68.1 216.4
Dev 15.3 19.6 12.4 33.3
ずれてますが解釈を良心的にお願いします
0041デフォルトの名無しさん
2006/12/26(火) 21:59:41解答者の判断に任せます
0042デフォルトの名無しさん
2006/12/26(火) 22:00:140043デフォルトの名無しさん
2006/12/26(火) 22:17:58[2] 問題文(含コード&リンク):
10個の整数をキーボードから入力し,入力されたデータの平均値を求めなさい.
さらに,平均値から最も離れているデータと最も近いデータが,それぞれ何番目に入力したか
とデータの値を求めて(複数の場合はすべて)表示するプログラムを作成し,提出しなさい.
なお,10個のデータをすべて入力し終わってから,平均値などを求めること.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年12月28日まで
[5] その他の制限:配列まで習いました。
自分でがんばってみましたが、どうしてもできませんでした。
誰かこんな自分を助けてください。
0044デフォルトの名無しさん
2006/12/26(火) 22:18:530045デフォルトの名無しさん
2006/12/26(火) 22:20:11がんばったところまで見せてもらおうか
004643
2006/12/26(火) 22:28:30int main(void)
{
int i,sum,ave,min,max,samax,samin;
int a[10];
for(i=0;i<10;i++){
printf("%d番:",i+1);
scanf("%d",a[i]);
sum+=a[i];
}
ave=sum/10;
min=max=a[i];
for(i=0;i<10;i++){
if(a[i]>max) max=a[i];
if(a[i]<max) min=a[i];
}
if(max-ave>ave-min)
max=samax;
こんな感じでやってみたのですが、
途中でわけがわからなくなって断念しました。
0047デフォルトの名無しさん
2006/12/26(火) 22:35:46min=max=a[0];
aveは浮動少数じゃなくていいのかな
問題文からするとsumは入力ループよりも下で
maxやminの判定の時に位置も決定
もうすこし頑張ってみては?
0048デフォルトの名無しさん
2006/12/26(火) 23:45:45侮辱なんてとんでもない
まだコンパイルすらしていません 学校開いてないので
0049デフォルトの名無しさん
2006/12/27(水) 01:18:33こんな感じで。侮ってかかったら3時間かかってしもーた。まだバグがあるかも。
俺も混乱してるから、デバッグはご自分で!
#include <stdio.h>
#define N 10
#define Abs(x) (x>0) ? x:-x
#define Max(a,b) (a>b) ? a:b
#define Min(a,b) (a<b) ? a:b
int Length(int ave,int x){int A,B,Ans;A= Max(ave,x);B= Min(ave,x);Ans = A-B;return Abs(Ans);}
int main(){
int val[N],Len[N],LenMax=0,LenMin=0,Ave,all=0,i;
for(i=0;i<N;i++){printf("Input data[%d/%d]:",i,N);scanf("%d",&val[i]);}
for(i=0;i<N;i++) all += val[i];
Ave = all/N;
for(i=0;i<N;i++) Len[i] = Length(Ave,val[i]);
LenMax=LenMin=Len[0];
for(i=0;i<N;i++){LenMax = Max(Len[i],LenMax);LenMin = Min(Len[i],LenMin);}
printf("Ave=%d",Ave);
printf("\nMin=%d\n",LenMin);
for(i=0;i<N;i++) if(Len[i] == LenMin){printf("[%d:%d:%d]",i,Len[i],val[i]);}
printf("\nMax=%d\n",LenMax);
for(i=0;i<N;i++) if(Len[i] == LenMax){printf("[%d:%d:%d]",i,Len[i],val[i]);}
return 0;
}
0050デフォルトの名無しさん
2006/12/27(水) 01:47:42#include <stdio.h>
#include <math.h>
int main()
{
int num[10]={0};
char buff[256] = {'\0'};
int average;
int max =0,min=0;
int temp=0;
int i=9,j=0,k=0;
while(i >= 0){
fgets(buff,sizeof(buff),stdin);
sscanf(buff,"%d",&num[i]);
i--;
}
i=9;while(i >= 0){temp +=num[i];i--;}
i= 9;average = temp/10;temp = max = min = abs(average - num[i]);
while(i>=0){temp = abs(average - num[i]);if(temp >= max){max = temp;
j=i;}if(temp <= min){min = temp;k = i;}i--;}for(i=0; i< 10; i++)
printf("num[%d] = %d ",i,num[i]);putchar('\n');
printf("Max num[%d]= %d Min num[%d]= %d Average = %d \n",j,num[j],k,num[k], average);
return 0;
}
0051デフォルトの名無しさん
2006/12/27(水) 10:34:540052デフォルトの名無しさん
2006/12/27(水) 10:50:01次の問題を解きなさい。
1+1=
0053デフォルトの名無しさん
2006/12/27(水) 10:50:170054デフォルトの名無しさん
2006/12/27(水) 11:11:41[1] 授業単元:年忘れプログラミング
[2] 問題文(含コード&リンク):
C言語のソースファイルを読み込み、ifとelseを使わないソースファイルに変換するプログラムを作成せよ。
(但し変換されたソースは元のプログラムと同等の処理を行えるものとする)
[3] 環境
[3.1] OS: なんでもOK
[3.2] コンパイラ名とバージョン: なんでもOK
[3.3] 言語: C/C++
[4] 期限: 12月31日23時59分
[5] その他の制限: 特になし
0055デフォルトの名無しさん
2006/12/27(水) 11:32:16ソースが肥大化するのでパス
0056デフォルトの名無しさん
2006/12/27(水) 11:49:44EXPRESSION_A
} else {
EXPRESSION_B
}
↑これを、↓こうする感じ?
for (BOOL b = TRUE; b && CONDITION; b = FALSE)
{
EXPRESSION_A
}
for (BOOL b = TRUE; b && !CONDITION; b = FALSE)
{
EXPRESSION_B
}
よく考えたら三項演算子のほうが早いか……orz
0057デフォルトの名無しさん
2006/12/27(水) 12:11:56下のような、コンパイラがやってるっぽいことをすればいいと思う
(CONDITION)?goto LABEL_IF_TRUE001:goto LABEL_IF_FALSE001;
LABEL_IF_TRUE001:
...
goto LABEL_IF_END001
LABEL_IF_FALSE001:
...
LABEL_IF_END001:
0058デフォルトの名無しさん
2006/12/27(水) 12:23:36gotoは文であって式ではないから三項演算子の被演算子にならない。
0059デフォルトの名無しさん
2006/12/27(水) 13:21:070060デフォルトの名無しさん
2006/12/27(水) 14:21:39for(i=0;i<sizeof(buff)/sizeof(buff[0]);++i)
if(!buff[i] || buff[i]=='\n') break;
>>57のやり方がいいのかも
{
switch((!buff[i] || buff[i]=='\n') != 0){
case 0: goto LABEL_IF_FALSE001;
}
break;
goto LABEL_IF_END001;
LABEL_IF_FALSE001:
LABEL_IF_END001:;
}
00615
2006/12/27(水) 22:06:04ありがとうございます。参考にさせていただきます!!
実は、冬季課題Cというのが冬季課題Bの下にありまして、
それは「冬季課題Aを複合台形公式を用いた自動積分法のプログラムを作成せよ」に
なっております。
もしよろしければ、引き続きお願いできないでしょうか?
テンプレは以下の通りになります。
[1] 数値解析応用
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3286.zip
※>>5のAの問題をCに書き換えました。実際のスキャナ画像ではありませんが、内容は全く同じです。
[3] 環境
[3.1] OS:Linux RedHat9.0
[3.2] コンパイラ名とバージョン: gcc(バージョン不明...)
[3.3] 言語: C言語
[4] 期限:2006年12月31日23:00まで(2006年12月31日23:59までにメール提出となっています)
[5] その他の制限:特にありません。
よろしくお願いします。
0062デフォルトの名無しさん
2006/12/27(水) 23:14:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3289.txt
なお、前回うpした複合シンプソン則のプログラムは後から確かめて
みたら1e-8の精度が出ていなかったので、収束条件を変更した。
複合台形則は、関数の形によっては複合シンプソン則に比べて収束が
極めて悪くなり、今回も1e-8の精度を得るためには収束条件をかなり
厳しくする必要があった。
もしかしたら収束条件を前回の値との差で求める方法は正しくないの
かもしれないが、真値が判明していない以上、このような方法を摂らざる
を得ないのでご承知下さい。
0063デフォルトの名無しさん
2006/12/27(水) 23:18:37http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3290.txt
スマソ。複合台形則のプログラムは間違った方をうpしてしまった。
こちらを使用して下さい。
収束にはこちらの環境では4791回のループを必要としたので、問題が
ある場合は33行目のprintf()をコメントアウトしてセミコロンだけにして下さい。
0064デフォルトの名無しさん
2006/12/27(水) 23:29:35[2] 問題文(含コード&リンク): こちらの画像をご覧ください。。。http://up.kabubu.net/cgi/img2/19186.jpg
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VC2005
[3.3] 言語: C/C++
[4] 期限: 2006.12.28
[5] その他の制限: for文を使用してください。
よろしくおねがいします。。。。
0066デフォルトの名無しさん
2006/12/28(木) 00:49:00#include <stdio.h>
#include <math.h>
#define N 50
int main() {
int i;
double x[N], ave=0.0, ss=0.0, var, std, err;
FILE *fp = fopen("kadai4.dat", "r");
if (fp == NULL) return 1;
for (i=0; i<N; i++) {
fscanf(fp, "%lf", &x[i]);
printf("%6.3f", x[i]); if ((i+1)%10 == 0) printf("\n");
}
fclose(fp);
for (i=0; i<N; i++) ave += x[i]; ave /= N;
for (i=0; i<N; i++) ss += pow(x[i]-ave,2);
var = ss/N; std = sqrt(var); err = 3.0 * std;
printf("平均値 : Xm = %f\n", ave);
printf("分散値 : Var = %f\n", var);
printf("標準偏差 : std = %f\n", std);
printf("誤差範囲 : Err = ±%f\n", err);
return 0;
}
006723
2006/12/28(木) 19:04:250069デフォルトの名無しさん
2006/12/28(木) 23:41:48* 実際の板厚が知りたいのなら標準偏差ではなく標準誤差では?
* 母集団は無限なんだから不偏分散を使うべきでは?
と先生に聞いといて下さい。
0070デフォルトの名無しさん
2006/12/29(金) 22:02:06もう一度お答え頂けるとありがたいです。
[1] 授業単元: C言語
[2] 問題文: 2問あります
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。
(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です
0071デフォルトの名無しさん
2006/12/29(金) 22:26:410072デフォルトの名無しさん
2006/12/29(金) 22:29:19>>28に書いてあるじゃん
0073デフォルトの名無しさん
2006/12/30(土) 08:46:31[2]問題文:
数列 a = [a_1, ..., a_n] が与えられる。
これをバブルソートするときの要素の交換回数を効率よく求めよ。
[3]環境
[3.1]OS、コンパイラ問わず。
[3.2]言語:どちらでも可。
[4]期限:一月三日。
[5]その他の制限:特になし。
0074デフォルトの名無しさん
2006/12/30(土) 09:05:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3294.c
効率が良いかは分からんが、交換すると分かったときカウントするかと・・・
0075デフォルトの名無しさん
2006/12/30(土) 09:45:130076デフォルトの名無しさん
2006/12/30(土) 22:49:14[2] 問題文(含コード&リンク): こちらの画像をご覧ください・・・・・ttp://up.kabubu.net/cgi/img2/19360.jpg
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C/C++
[4] 期限: 06.12.31
[5] その他の制限:for文でお願いします
お世話になってます。よろしくお願いします。
0077デフォルトの名無しさん
2006/12/31(日) 00:31:34エクセルでグラフ化は自分でやってね
0078デフォルトの名無しさん
2006/12/31(日) 00:32:060079デフォルトの名無しさん
2006/12/31(日) 00:38:39008077
2006/12/31(日) 00:55:12まあ暇だからグラフ化したよ
0081デフォルトの名無しさん
2006/12/31(日) 02:12:130082デフォルトの名無しさん
2006/12/31(日) 07:39:01オラでも年明けまでに余裕で解ける宿題を出してくれ!
0083デフォルトの名無しさん
2006/12/31(日) 15:14:360084デフォルトの名無しさん
2006/12/31(日) 15:35:000085デフォルトの名無しさん
2006/12/31(日) 19:17:20[2] 問題文(含コード&リンク):
1. 入力の行数を数えるプログラムを作れ。
2. 入力中に現れる「NG」という単語を全て「OK」に置き換えて出力するプログラムを作れ。
3. 関数pop とpush を定義し、スタックを実装せよ。
4. スタックを用いて、逆ポーランド記法で四則演算を行うことのできるプログラムを作れ。
5. クイックソートを実装せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語: C/C++
[4] 期限:
[5] その他の制限:
よろしくお願いします。
0086デフォルトの名無しさん
2006/12/31(日) 21:33:24ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3299.c
0087デフォルトの名無しさん
2006/12/31(日) 21:39:40[2] 1)
N×Nマス目のフロアを前後左右に移動することができるロボットがある。
スタート地点は常に左上(x,y)=(0,0)であり、全マス目を一度だけ通り、通った順序を表示するプログラムを作りなさい。
フロアには障害物を置けるようにする。
条件を満たすものがない場合、できませんでした。と表示したい。
[3] 環境
[3.1] Linux
[3.2] gcc 4.0
[3.3] 言語:C
[4] 期限:
[5] その他の制限: 特になし。
0088@part1
2007/01/01(月) 00:47:41どうしていいのかわかりません。
申し訳ありませんが、お助けください!
[1] コンピュータプログラミング
[2] 問題文
------------------------------------------------------------------------
サッカーのリーグ戦の順位表を記述した(添付されたファイル)CSVファイルをD&Dで入力することで、
�@誤りがある場合、質問形式で修正でき、・・・・・※
�A1試合分の結果を反映でき、
�B結果を新しいファイル(形式はCSV & html)として出力できる、
コンソールアプリケーションを作成しなさい。
(チーム数は、入力したCSVによって決定されるものとする)
0089デフォルトの名無しさん
2007/01/01(月) 00:48:21・勝ち点によって決定する。
・勝ち点が同じ場合は、得失点差によって決定する。
・得失点差が同じ場合は、得点のよって決定する。
・得点も同じ場合は、同じ順位とする。
勝ち点は、次のようになる。
・“勝ち”→ 勝ち点が 3増える。
・“引分”→ 勝ち点が 1増える。
・“負け”→ 勝ち点は増えない。
※ 順位の付け方、勝ち点の計算等、矛盾がある場合は、
順位,勝ちの数,引分の数,負けの数,得点,失点,得失点,勝点
のいずれに問題があるかを質問形式で修正できるようにする。
試合は、○回戦総当りときまってはいない。
------------------------------------------------------------------------
0090@part3
2007/01/01(月) 00:49:31[3] 環境
[3.1] OS: Windows XP
[3.2] Visual C++ 2005 Express Edition
[3.3] C言語
[4] (早いと嬉しいですが)今週中です。
[5] 標準ライブラリは使用不可
↓に、完成例(昔の生徒が作ったEXE)と、入力ファイル(JLeagueテスト.csv)
出力結果(JLeagueテスト_Result.csv、JLeagueテスト_Result.html)
をアップします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=3300
3300.zip (ファイルサイズが大きいので、圧縮しました。)
よろしくお願いします。
0091デフォルトの名無しさん
2007/01/01(月) 02:19:124.のみ。ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
dZLBTsMwDIbPRdo7mHJYOqAwJi7d2A2uPEOWZGu0LqkSl62gvTtu2sJGmVS1jv35t+v4RhtRVFLBQgi
sS7UcXd38uLT16BTfnTn9fz7kYksebRB2XBuWwNfoKkJXh2/kUWZZgBbSVqtCLcHPTwJOm00rC96zeJ
o+w1M6g1uYpY8wiZNfVtgKYbEgLKUEqtPYTUAZWQRM5NyBCGZbC2Q47HNNNmMCXprsjUKWJHD9Aq/vb
227UaTXwIKa9lJvNDKR9KGIcsoKV/QP5J33PlguO306EeBzJrvoEVThVZ/e9XK4g7rD66aRFG3JkjkZ
ZTDa0OFyyO81ihyoh15ZcKoyvh1n7bFv40Djqyl9RWPdzk/R+yF6fwGdDNHJBfRhiD4MUKnWvCqwJzF
3dg+xNh+80BJsqRxH667jDj+2gwzv/s5CKLjCbaVefyoWLnKawB9BdSid8l5b00me7VDMjd8rl8Vhib
pxN5RTWDkDj82hqSR4O3JrPEKzXxNQziUnu91LknuwkaRAzzc=
0092デフォルトの名無しさん
2007/01/01(月) 02:24:031.
#include <iostream>
#include <string>
int main() {
std::string str;
int n = 0;
while (std::getline(std::cin, str)) ++n;
std::cout << n << " lines" << std::endl;
return 0;
}
0093デフォルトの名無しさん
2007/01/01(月) 02:27:363. ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
jVRNb+IwED0Hif8w2wNyIFSlR772ttLew2lVRSEYEW0aR44DYiv623c8dhInQOmhJZ5582bmzdiKvxd
ZrDgs1bngefzOIZwF0B5e18PBUaQ7SEReKlklioWzMRSBMSBgBMc4q7gPH8OBl/MTsMJHEmasi+HgMh
yo6zSbmnjHkVec2QZZDUkxXX9u2P3QX0KeYrn7rbiMlZB9op4b9qksVdCPgiwulcl3OqQZB0Y4+LFyP
F7NORqTV9fkeZMJHfT35WF75Sku2GYEcQD4f2t4N6BDWOwvIIYVbBewxR9tu9t0iIQJVlZCqeLkb5Qi
QnMV1TZLkzmStnZWpv94pED/IO+Lr6uewzFiiFFpEiXY4TIcr5lBIAR+4t8cRGHVwUGSU+xZ6MOYqHz
fDzQTwJESEKAxVSXfRYxyfWAL3qdTT0/NYxRgMRMbY0RtMu94xhVHjG8F9lodW8oRCHXg0gd1kOJUJ5
jPCab5yf1sWRoH1d046dQFUEUNoK1P1xGOsWp9sPKaeNdAeDQUMj3i+HpTMTfG6YGYOz1ZEVa3sZfFd
1bjxlbcWQhNbKdYT83Aney10G6EUYe+a410vIbYu+T6YAk3AszAvPZZsd4IJuACg25w9Md1vpnh4Y10
rWS72KHVTdxStlkiqsWIRxfTmInHENNyaJepw7gkV5XMYawOaVnviBU6EVWucCtNsg8H3S+0WfCiKg+
2uHAE9QOU7nti4mW1Z7O9VkeneNeNN/cVBZ1Znex0qJG6xCV050JOKqaR3MXXkrcw+yp+pdQFeFby74
9cPZ6r1kgU7AuZXuzjAE9cSiHnoOdkrwh+YInq/Py0uJ5Nd8dgCrO37qQe5TUCdXJTNps8ifNcKE1j0
zviTKdXHTfP5h25fFeXmy/PMlybCHpD/gM=
0094デフォルトの名無しさん
2007/01/01(月) 02:39:542.
#include <iostream>
#include <string>
std::string replace_all(const std::string& source, const std::string& pattern, const std::string& placement) {
std::string result;
std::string::size_type pos_before = 0, pos = 0, len = pattern.size();
while((pos = source.find(pattern, pos)) != std::string::npos) {
result.append(source, pos_before, pos - pos_before);
result.append(placement);
pos += len ;
pos_before = pos ;
}
result.append(source, pos_before, source.size() - pos_before) ;
return result;
}
int main() {
std::string str;
while (std::getline(std::cin, str)) std::cout << replace_all(str, std::string("NG"), std::string("OK")) << std::endl;
return 0;
}
0095デフォルトの名無しさん
2007/01/01(月) 11:21:25それをマージソートしながら数えてやる.計算量 O(n log n).
#include <iostream>
#include <vector>
using namespace std;
int bubble_count(const vector<int> &a) {
int count = 0;
int n = a.size() / 2;
if (n > 1) {
vector<int> b(a.begin(), a.begin() + n/2);
vector<int> c(a.begin() + n/2, a.end);
count += bubble_count(b);
count += bubble_count(c);
for (int i = 0, j = 0, k = 0; i < n; ++i) {
if (k == c.size()) a[i] = b[j++];
else if (j == b.size()) a[i] = c[k++];
else if (b[j] <= c[k]) a[i] = b[j++];
else { a[i] = c[k++]; count += n/2 - j; }
}
}
return count;
}
0096デフォルトの名無しさん
2007/01/01(月) 11:40:150097デフォルトの名無しさん
2007/01/01(月) 12:20:02方針は間違ってないはずなのでしばし待たれ.
009895
2007/01/01(月) 12:32:45そんなに大きくは間違ってなかった.
const, int n = a.size()/2, a.end をそれぞれ適当に修正すれば
正しく動くはず.やっぱりコンパイルくらい通さないと駄目だな.
>>96
で,俺何か勘違いしてる?
このアルゴリズムの正当性は容易に証明できるし,
for (int i = 0; i < n; ++i)
for (int j = 0; j+1 < n; ++j)
if (a[j] > a[j+1]) { swap(a[j], a[j+1]); ++count; }
の結果と比較しても厳密に一致するけど.
0099デフォルトの名無しさん
2007/01/01(月) 13:46:130100デフォルトの名無しさん
2007/01/01(月) 13:48:42> 俺何か勘違いしてる?
ヒント:main関数がない
0101デフォルトの名無しさん
2007/01/01(月) 14:35:24申し訳ない、よくわからないので、もっとはっきりと言って貰えないかな?
>>100
入力がどう与えられるか書かれていないので省略したのだけど、駄目?
0102デフォルトの名無しさん
2007/01/01(月) 14:40:38>交換回数は、元のデータ列によって異なる
並び順によって異なる交換回数を要素の数から判断はできない
0103デフォルトの名無しさん
2007/01/01(月) 15:06:36#include<stdio.h>
#include<stdlib.h>
#define ARRAY_SIZE 10
typedef struct tag_qsort_data{
int *ptr;
}qsort_data;
int qsort_data_compare(const void *ptr1, const void *ptr2){
const qsort_data *a, *b;
a=ptr1;b=ptr2;
return *(b->ptr)-*(a->ptr);
}
int main(void){
qsort_data *qsort_array;
int a[ARRAY_SIZE];
int i, n=ARRAY_SIZE, swap_total_2=0;
for(i=0;i<n;i++) a[i]=rand()%100;
qsort_array=malloc(sizeof(qsort_data)*n);
for(i=0;i<n;i++) qsort_array[i].ptr=&a[i];
qsort(qsort_array, n, sizeof(qsort_array[0]), qsort_data_compare);
for(i=0;i<n;i++)
swap_total_2+=abs(qsort_array[i].ptr-&a[i]);
free(qsort_array);
printf("bubble sort swap num: %d\n", swap_total_2/2);
return 0;
}
0104デフォルトの名無しさん
2007/01/01(月) 15:17:36それが何か?
0105デフォルトの名無しさん
2007/01/01(月) 15:24:11>>99
申し訳ない、よくわからないので、もっとはっきりと言って貰えないかな?
95 名前:デフォルトの名無しさん 投稿日:2007/01/01(月) 11:21:25
>>73 バブルソートの交換回数は a[i] > a[j] (i < j) なる要素対の数だから
それをマージソートしながら数えてやる.計算量 O(n log n).
0107デフォルトの名無しさん
2007/01/01(月) 15:37:50元データを {1, 2, 3} とするとバブルソートしたとき
{2, 1, 3}
{2, 3, 1}
{3, 2, 1}
2 3 1
2 1 3
1 2 3
0108デフォルトの名無しさん
2007/01/01(月) 15:39:58元データを {1, 2, 3} とするとバブルソートしたとき
{1, 2, 3}
{2, 1, 3}
{2, 3, 1}
{3, 2, 1}
となるが >>103 のアルゴリズムだと
上記の 2 が移動した回数がカウントされない
010995
2007/01/01(月) 15:54:22102 の「並び順によって異なる交換回数を要素の数から
判断はできない」というのは明らかに正しい主張だけれど,
それは 95 の「交換回数は a[i] > a[j] (i < j) なる要素対の数」
という主張に矛盾しない.
後者は条件を満たす要素のペアの数なので,並び順を実際に
見ていることになる.決して要素の数だけで判断しているわけではない.
0110デフォルトの名無しさん
2007/01/01(月) 18:31:51という問題ですがどうやったらいいか分からないので教えてください
0111デフォルトの名無しさん
2007/01/01(月) 18:33:50http://ja.wikipedia.org/wiki/%E3%83%8A%E3%83%83%E3%83%97%E3%82%B5%E3%83%83%E3%82%AF%E5%95%8F%E9%A1%8C
0112デフォルトの名無しさん
2007/01/01(月) 22:48:08[2] 問題文(含コード&リンク): こちらの画像をご覧ください・・・・ttp://up.kabubu.net/cgi/img2/19509.jpg
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C++
[4] 期限: 07.01.03
[5] その他の制限:for文でお願いします
お世話になってます。
前回も同じ質問をしましたが、C/C++と記入ミスをしていたので、Cで答えていただきました。
しかし、科目がC++ですので、C++でお願いします。。。
よろしくお願いします。
0113デフォルトの名無しさん
2007/01/02(火) 00:29:01お願いします。
0114デフォルトの名無しさん
2007/01/02(火) 00:38:20Nの範囲はどれくらいまで?
全探索して解くアルゴリズムは思いついたけど
これだとNの値がある程度より増えると急激に難しくなる。
効率のいいやつは考え中。
0115デフォルトの名無しさん
2007/01/02(火) 00:39:18正月で暇だからやってみる
小一時間待ってろ
0117115ではないが
2007/01/02(火) 00:44:23グラフのpng付き
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3302.zip
0118デフォルトの名無しさん
2007/01/02(火) 01:04:39[2] 問題文(含コード&リンク):
2次元配列を用いて九九(9×9)の一覧表を計算して表示するプログラムを作りなさい.
ただし,各値は配列の初期化を使用せずに,計算で求めること.
また,一覧表の各値は整数3桁とする.
表示例:
>> a.out
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:1月4日
正月早々申し訳ございませんが、よろしくお願いします。
0119デフォルトの名無しさん
2007/01/02(火) 01:15:30#include <stdio.h>
int main(void) {
int i, j;
for (i = 1; i <= 9; i++){
for (j = 1; j <= 9; j++) printf("%3d", i * j);
printf("\n");
}
}
0120デフォルトの名無しさん
2007/01/02(火) 01:16:08#include <stdio.h>
int main(void)
{
int i, j;
int a[9][9];
for (i = 0; i < 9; ++i) {
for (j = 0; j < 9; ++j) {
a[i][j] = (i + 1) * (j + 1);
}
}
for (i = 0; i < 9; ++i) {
for (j = 0; j < 9; ++j) {
printf("%3d", a[i][j]);
}
puts("");
}
return 0;
}
0121118
2007/01/02(火) 02:26:200123デフォルトの名無しさん
2007/01/02(火) 02:45:20見てみたけど、中途半端なC++具合だな。互換性があるからいいんだと
言われればそれまでだが。
0124デフォルトの名無しさん
2007/01/02(火) 02:53:06[2] 問題文(含コード&リンク):
main関数内でchar str[] = "channel";を宣言する。
ユーザ定義関数で文字列を大文字→小文字、小文字→大文字に変換する機能を持たせる。
変換後の表示はmain内で行う。以下のようにプロトタイプ宣言をする。
void upper( char *p_data);
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限:C1年生の初心者なので入門書レベルのコードでお願いします。
よろしくお願いします
012677
2007/01/02(火) 03:00:540127デフォルトの名無しさん
2007/01/02(火) 03:04:25#include <ctype.h>
#include <stdio.h>
void upper(char *p_data);
void lower(char *p_data);
int main(void) {
char str[] = "channel";
upper(str);
printf("%s\n", str);
lower(str);
printf("%s\n", str);
return 0;
}
void upper(char *p_data) {
while (*p_data != '\0') {
*p_data = toupper(*p_data);
p_data++;
}
}
void lower(char *p_data) {
while (*p_data != '\0') {
*p_data = tolower(*p_data);
p_data++;
}
}
0128124
2007/01/02(火) 03:07:54<訂正>
void lower(char *p_data);
書き忘れてました。すいません。
0129デフォルトの名無しさん
2007/01/02(火) 03:11:31・変数を全て関数の先頭で宣言している。
・sprintfを使用している。(しかも<cstdio>のインクルードがない)
・fileはスコープを抜ければ自動的にcloseするのだから不要。
・str[200]なる決め打ちマジックナンバーが存在している。
以上について、個人的にはあまり好ましくないと感じる。あくまで、個人的に。
0130124
2007/01/02(火) 03:19:41[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
最長10文字の文字列2件入力しchar型配列に格納。
2つを比較し同じなら「equal!」異なってたら「Not equal!」を表示(main関数内で)
ただし一件ごとの入力処理は下記のプロトタイプ宣言を持つユーザ定義関数で行う
void get_string(char *p_str, int size);
/*1番目の引数は文字列を格納する配列の先頭アドレス、2番目の引数配列サイズ)
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限:C1年生の初心者なので入門書レベルのコードでお願いします。
よろしくお願いします
0131デフォルトの名無しさん
2007/01/02(火) 03:39:35>・変数を全て関数の先頭で宣言している。
Effective C++に変数は必要なときに使えって書いてあったの思い出した、すません。
>・sprintfを使用している。(しかも<cstdio>のインクルードがない)
sprintfはてっきりC++標準かと思ってた
>・fileはスコープを抜ければ自動的にcloseするのだから不要。
初耳。勉強になった
>・str[200]なる決め打ちマジックナンバーが存在している。
これは普通にすいません。
0132デフォルトの名無しさん
2007/01/02(火) 05:02:40>>131
sprintf()はc++標準関数でもあるが、使うのならcstdioをincludeしないのはまずい
ってこったろ。
実際にはiostreamあたりから間接的にincludeされるからコンパイル
できるんだろうが、それが保障されてるわけじゃないしな。
あと、せっかくcmathインクルードしてるんだし、π は M_PI
π/4 は M_PI_4 でいいんじゃないのか?
>(double)time
このキャストも不要だな。
0133デフォルトの名無しさん
2007/01/02(火) 07:40:51効率のよいアルゴリズムはおそらく存在しない.
これは制限格子上のハミルトン閉路問題なので,
NP 完全問題になる.
0134デフォルトの名無しさん
2007/01/02(火) 08:18:21効率とか速度を考えれば似たような物に行きつくと思うのだが・・・
各人の癖、というやつか?
0135デフォルトの名無しさん
2007/01/02(火) 08:29:020136デフォルトの名無しさん
2007/01/02(火) 08:31:08って出題者の隠れたお言葉に気づき賜えw
0137デフォルトの名無しさん
2007/01/02(火) 08:46:19効率悪く書く方が難しい
0138デフォルトの名無しさん
2007/01/02(火) 08:49:20ありきたりの答えなんだから、妙なやり方をするんじゃねーぞと
013970
2007/01/02(火) 09:58:07ありがとうございました。
014087
2007/01/02(火) 10:48:08Nはそれほど大きくはないかと思います。せいぜい20くらいがよければいいです。
014187
2007/01/02(火) 11:09:43すいません。間違えました。
20程度ができれば大丈夫です。
0142デフォルトの名無しさん
2007/01/02(火) 11:16:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3304.c
0143デフォルトの名無しさん
2007/01/02(火) 11:38:30さすがにgets()はどうかと。
↓ぐらいにしとけや。
void get_string(char *p_str, int size)
{
int c, i;
for (i = 0; i < size-1 && (c = getchar()) != EOF && c != '\n'; ++i)
p_str[i] = c;
p_str[i] = '\0';
}
0144デフォルトの名無しさん
2007/01/02(火) 11:42:09フィギュアスケートの織田信成だって最後はゲッツ!でしめてだ、良いじゃねーかw
ちうか何が しとけや だ?てめぇ?ぶちのめすぞ?偉そうにしている割には
てめぇのソースくそ杉w 冬厨がでしゃばってじゃねーぞたこw
0145デフォルトの名無しさん
2007/01/02(火) 11:43:36っつーかお前、それを入れ替えたソースをコンパイルしてみろ。
正常に実行されないからw
0146デフォルトの名無しさん
2007/01/02(火) 11:45:0810文字より多く入力した場合を考える必要はないが
もし11文字以上入力した場合、それだとおかしくなるよ
お前の汎用性のなさはどうでも良い。
どうしてそういうソースを書いたか理解できないなら
いちいちくそレスしないで自分で書いたソースを提出しろ、餓鬼
0147デフォルトの名無しさん
2007/01/02(火) 11:47:45ぷぷっ、なんだそれ?w
かっこつけたつもりが自爆してやんのw
0148デフォルトの名無しさん
2007/01/02(火) 11:48:24> c != '\n'
なんだこれ?お前バカじゃね?小学生からやり直せやw
0149デフォルトの名無しさん
2007/01/02(火) 11:48:30一体何をファビョってんのかね君は。
>>142のget_string()は>>143よりも長い上に、バッファオーバーランを
防ぎようが無い、互換性のためだけに残されている非推奨関数gets()を使っている。
main()ではstrcmp()を使っていながら、バイトコピーにmemcpy()を
使っていない点も不可解だ。というか、入力範囲外まで無駄にコピーしてるな。
>>130の環境はlinux&gccだが、gccならget()を使っているコードには
文句を言ってくるよ。
0150デフォルトの名無しさん
2007/01/02(火) 11:49:15自演乙
0151デフォルトの名無しさん
2007/01/02(火) 11:55:17>バッファオーバーランを 防ぎようが無い
余裕で防いでいるが?お前のソースの方が防げていないことが
11文字以上入力した場合に不正に処理されることでバレバレw
良いから知ったかは黙ってろ、初心者めが。ここでレスすることで
上級者気取りか?ばーーーかwwww
他人のソースをどうこう言うくせに、お前はmainから書いたソース出してねーじゃんw
ぐだぐだ言う前にてめぇが1から書いたソースを出せばそれで良いんだよ。
それが分からないならこんなスレにくるな、日ごろここに来ていない冬厨w
0152デフォルトの名無しさん
2007/01/02(火) 11:55:52#include <stdio.h>
void swap(int *x,int *y);
void main(void)
{
int i;
int x[3]={1,2,3};
int y[3]={4,5,6};
printf("関数実行前\n");
for(i=0; i<3; i++){
printf("x[%d] = %d y[%d] = %d\n", i,x[i],i,y[i]);}
printf("関数実行後\n");
for(i=0; i<3; i++){
swap(&x, &y);
printf("x[%d] = %d y[%d] = %d\n", i,x[i],i,y[i]);
}
}
void swap(int *x,int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
0153デフォルトの名無しさん
2007/01/02(火) 11:56:42>>142
さすがにgets()はどうかと。
↓ぐらいにしとけや。
void get_string(char *p_str, int size)
{
int c, i;
for (i = 0; i < size-1 && (c = getchar()) != EOF && c != '\n'; ++i)
p_str[i] = c;
p_str[i] = '\0';
↓ぐらいにしとけや。
↓ぐらいにしとけや。
(c = getchar()) != EOF && c != '\n'; ++i
(c = getchar()) != EOF && c != '\n'; ++i
>入力範囲外まで無駄にコピー
意味不明。ちゃんと10文字で処理されてますが?w
とにかくうぜぇからバカじゃないって証明したいなら
お前がmainから書き出せ、以上。これ以上お前との言い合いは無意味。
お前がソースを書けば良いだけ。他人の粗探ししているくらいならやれ。
粗探しのつもりが自分の無知を晒すとはなw どこの三流以下の大学生だ?w
あっ、専門学校程度か、わりぃわりぃ、お前じゃ話にならねーかw
0154デフォルトの名無しさん
2007/01/02(火) 11:58:06のURL行ける?
0155デフォルトの名無しさん
2007/01/02(火) 11:58:08http://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%83%B3
ぐらい読んどけ。Cプログラマの常識だから。
0156デフォルトの名無しさん
2007/01/02(火) 11:58:53お前のソースを書け、プログラマの常識だからw
0157デフォルトの名無しさん
2007/01/02(火) 11:59:04swap() に与える引数
たぶんx,yの要素全部入れ替えたいんだろからアドレスちゃんと渡さないと
0158デフォルトの名無しさん
2007/01/02(火) 12:00:07> swap(&x, &y);
swap(&x[i], &y[i]);
0159152
2007/01/02(火) 12:01:040160デフォルトの名無しさん
2007/01/02(火) 12:01:34ちゃんとそれを理解して言っているのか?
起こる場合の説明について
# ユーザが200文字以上のメールアドレスを入力する。
# プログラムがバッファの大きさをチェックせずに入力データを書き込む。
# バッファとして確保した領域をはみだしてデータが書き込まれてしまう。
比較するのに使う文字列を格納するs1、s2にはそれが起こらない措置をとっているが?
何のための char buf[256]を用意して文字列を10文字以内でコピーしているか理解しろよw
んじゃな、三流プログラマw
0161デフォルトの名無しさん
2007/01/02(火) 12:02:34>仮にはみ出した部分にプログラムの動作上意味を持つデータがあれば、
>これを上書きして破壊することにより、プログラムはユーザの意図しない挙動を示すであろう。
>>143で11文字以上入力するとおかしくなるんすけどぉ〜?
0162デフォルトの名無しさん
2007/01/02(火) 12:04:12えーとね。
試しに、256文字以上入力してみなよ。そうすりゃ分かるから。
君は256byteしかバッファを用意していないが、gets()はそんなことは
無関係にバファオーバーランを引き起こすのよ。
だから、危険な関数なの。
0163デフォルトの名無しさん
2007/01/02(火) 12:06:53何が「おかしく」なるのか言ってみそ?
少なくともバッファオーバーランは起きず、次回のget_string()で
続きの文字が読み取られるだけだろう?
「11文字以上入力された行については、残りの文字は全て破棄する」などという
仕様はどこにもないが、もしそうであれば、そのように書くのも簡単だ。
が、gets()だけはまずい。
0164デフォルトの名無しさん
2007/01/02(火) 12:08:07アホはアホでスルーしとけ
0165デフォルトの名無しさん
2007/01/02(火) 12:09:48何を指摘されてるのか、何が問題なのかもさっぱり理解もしてないし……
小学生か?>>142
0166デフォルトの名無しさん
2007/01/02(火) 12:14:24いや、何が問題かの指摘を分かっているかどうかはともかく
>>143が偉そうにレスした割には、ソース全部を書いていない他人の批判で
なおかつそのソースが不完全どころか自分がバッファオーバーランをする
ソースを書いているのが笑えるw
お前が幼稚園以下の知能の低いサルだなw
悔しかったら自分で書いたソースを出せよ?プログラマの常識だろ?w
0167デフォルトの名無しさん
2007/01/02(火) 12:15:45えーと、君、バッファオーバーランの意味分かってるのか?
>>143のソースではバッファオーバーランは発生しないのだが。
0168デフォルトの名無しさん
2007/01/02(火) 12:15:55>試しに、256文字以上入力してみなよ
bufに問題が起こるのはわかっているが、それを指摘する前に
お前がちゃんとソースを書けよ?うざいんだよ、このスレの趣旨分かってねーだろ?
ここは他人のソースを批判しにくるスレじゃない。ごちゃごちゃ言うまえに
てめぇ正しいソースを書いてから一蹴しろ?
お前のやっていることは、他人の落ち度を 自分基準 で言う割には
自分の基準もぐだぐだで、指摘したつもりがそれも間違っていて
恥さらしをしただけだな。とにかくごちゃごちゃ言ってないでお前の書いたソースを出せ、でなきゃ黙ってろ。
0169デフォルトの名無しさん
2007/01/02(火) 12:17:15いや、余裕でしているよ。11文字以上入力してみろよ?
256文字も打つ気しないなぁ。人間って間違えるからさ
10文字入力したつもりでも1文字くらい多く入力しちゃうこともあるんだよねw
まさか100文字以上も入力する奴いるかよ?w
あのCUIで?w笑える、一生文字入力してろ、知ったかの墓穴堀バカw
0170デフォルトの名無しさん
2007/01/02(火) 12:18:160171デフォルトの名無しさん
2007/01/02(火) 12:18:36大量の入力を与えるのはリダイレクトすれば簡単だけどな
0172デフォルトの名無しさん
2007/01/02(火) 12:19:24煽りまくってるのに、証拠は隠滅したのか>>142君はw
0173デフォルトの名無しさん
2007/01/02(火) 12:19:38バカです。自分が全部ソースを書けば良いだけじゃん。自分仕様のものを出せよ。
それはこれこれどういう問題があるから って話になってんだ?
現代において完璧なものがないから、何事も問題があることくらい分かってんだよ。
問題がなきゃ交通事故も犯罪も起こらない罠w
そこを人間の意志で問題を減らしていくことが必要なんじゃん。
お前みたいな問題を自分で起こす奴は社会に出てこないで檻の中に戻れよ、な?
0174デフォルトの名無しさん
2007/01/02(火) 12:20:33なんか必死ですね〜〜〜wwwww
お前のソースはここに残って、自分の間違い(バッファーオーバーラン)を
自分で指摘したのに自分が起こしていた証拠を残してしまうねw
とにかく必死だな、低学歴w
0175デフォルトの名無しさん
2007/01/02(火) 12:22:24それにオーバーランするなら、それをプリントスクリーンしてアップすればいいことじゃないの?
0176デフォルトの名無しさん
2007/01/02(火) 12:22:30void get_string(char *p_str, int size)
{
int c, i;
for (i = 0; i < size-1 && (c = getchar()) != EOF && c != '\n'; ++i)
p_str[i] = c;
p_str[i] = '\0';
}
> c != '\n';
なんすかこれ?(プ
0177デフォルトの名無しさん
2007/01/02(火) 12:23:41もとのソースが消失してるから訳和漢ね
0178デフォルトの名無しさん
2007/01/02(火) 12:23:590179デフォルトの名無しさん
2007/01/02(火) 12:24:32gets()がLinuxではタブーだと分かった以上出す必要ないだろ。
入力処理のライブラリを>>142に書き換えて提出しなさいw
11文字以上入力した場合、不具合が起こるから。256文字以内なら
オーバーランしないソースは洋ナシってことで、以後放置よろ。
0180デフォルトの名無しさん
2007/01/02(火) 12:25:37んじゃ、後はバッファオーバーランを指摘したのに自分で起こした
>>143がここを仕切るってことで、がんばれよ、墓穴堀さんw
0181デフォルトの名無しさん
2007/01/02(火) 12:29:27偉そうに言ってる割にはマジでカスだなww
0182デフォルトの名無しさん
2007/01/02(火) 12:31:23普通に使えばオーバーフローしないだろw
0183デフォルトの名無しさん
2007/01/02(火) 12:32:41どっちのソースも現状、mainから書いたのがすべて見れないのが
混乱させている気がする。レスだけ多くなる一方だいし。
0184143
2007/01/02(火) 12:38:15void get_string(char *p_str, int size)
{
int c, i;
again:
for (i = 0; i < size-1 && (c = getchar()) != EOF && c != '\n'; ++i)
p_str[i] = c;
p_str[i] = '\0';
if (c != EOF && c != '\n') {
if (getchar() != '\n') {
fprintf(stderr, "line too long. please input again\n");
while ((c = getchar()) != EOF && c != '\n')
;
goto again;
}
}
}
int main()
{
char buff[2][11];
get_string(buff[0], sizeof buff[0]);
get_string(buff[1], sizeof buff[1]);
printf("%s\n", strcmp(buff[0], buff[1]) ? "Not equal": "equal");
return 0;
}
0185143
2007/01/02(火) 12:39:10超親切仕様にしてやったぞ。
0186デフォルトの名無しさん
2007/01/02(火) 12:42:090187デフォルトの名無しさん
2007/01/02(火) 12:48:38きめぇソース書くなよ、最後まで粘着、しつこいお前が一番うぜぇ
このスレの趣旨が分かってないなら二度とくるな
ここはお前の絶対評価の場じゃないし、そのソースもきめぇ
うるさいのはむしろお前だから。ソースも書いてないくせに偉そうにして、馬鹿だろ。
>>124
>C1年生の初心者なので入門書レベルのコードでお願いします
分かったか?お前は肝心なものも忘れているんだよw
0188デフォルトの名無しさん
2007/01/02(火) 12:52:35>>185はいまとなっては見れない>>142のコードと違って、
・バッファオーバーランは発生しない
・10文字を超過する入力には再入力を促す
・標準関数はstdio.hの非常に基本的なものしか使っていない
(>>142はstring.hのものも使っていたな)
のだが。
>>185のどこが「入門書レベルのコード」を超過しているのかね?
0189デフォルトの名無しさん
2007/01/02(火) 12:53:11> >142の中に入れたときなんじゃねーの?w
だから最初っからmainも書いて出すべきだったろ?分かってないのはお前
0190デフォルトの名無しさん
2007/01/02(火) 12:55:09自分を自分で援護、擁護ですか?それが何か?
問題は>>184が間違っているってことじゃない。
最初っから書いていない奴が何批判を始めてんだと?
そこから間違っているから荒れたんだろ、お前もうぜぇ
0191デフォルトの名無しさん
2007/01/02(火) 12:55:42アンタが……
gets()の危険性も知らないなんて恥ずかしいよ。
0192デフォルトの名無しさん
2007/01/02(火) 12:56:24> 標準関数はstdio.hの非常に基本的なものしか使っていない
すいません、モロに strcmp を使っていて string.hがないという
コンパイルエラーが起きたんすけど・・・
0193デフォルトの名無しさん
2007/01/02(火) 12:57:14んがぁ!
失礼。全くその通り。
0194デフォルトの名無しさん
2007/01/02(火) 12:57:27し つ こ い お前も起こしたバッファーオーバーランを持ち出して
まだ自爆、墓穴堀を晒したいのかハゲw
0195デフォルトの名無しさん
2007/01/02(火) 12:58:28いやだから、起こさないでしょ。
>>143のコードでどうやって起こすの?
size引数に実際より小さな値を渡さない限りは起きないでしょ。
0196結局最後までエラーを残す自己厨な冬厨哀れ
2007/01/02(火) 12:58:47> printf("%s\n", strcmp(buff[0], buff[1]) ? "Not equal": "equal");
Call to function 'strcmp' with no prototype in function main
0197デフォルトの名無しさん
2007/01/02(火) 13:00:03C89なら、警告は出るかもしらんが、コンパイルは出来るはずだけど。
まぁ、俺が悪かったよ。
0198デフォルトの名無しさん
2007/01/02(火) 13:03:46もっとも、他人のソースの批判をする場所じゃないから、ここ。
ぐだぐだいちゃもんつける前に、自分がソースを書いて自分がとった手段を明確に
示せば良いだけ。出さない奴は卑怯者。そう、>>143みたいに結局mainを出さずに
その後、議論になった10文字より多かった場合のトラブルを他人に指摘されて
直しただけではだめってこと。
0199デフォルトの名無しさん
2007/01/02(火) 13:13:25ネタでもつまんね
0200デフォルトの名無しさん
2007/01/02(火) 13:14:47他にいままだ残っている宿題ってなんかあった?
0201デフォルトの名無しさん
2007/01/02(火) 13:16:21020287
2007/01/02(火) 13:34:1287お願い。
0203デフォルトの名無しさん
2007/01/02(火) 13:36:52[2] 問題文(含コード&リンク):
数列 a = [a_1, ..., a_n] が与えられる。ここから次の条件を
満たすような要素たちを効率よく選ぶプログラムを作れ。
条件 1. 隣り合う要素は選ばない。
条件 2.選んだ要素の総和が最大になる。
例: a = [1,3,3,2] のときは2つ目の3と4つ目の2を選ぶ(合計5)。
[3] 環境
[3.1,3.2] OS、コンパイラ: 問わず
[3.3] 言語: どちらでも可
[4] 期限: 1月4日
[5] その他の制限: 特になし
0204130
2007/01/02(火) 13:42:47142はもう消えているみたいだしどれを参考にすればよいのでしょうか?
書き忘れましたがコーディング規約でgetsとscanfは使わずに
fgetsとgetcharで作るように書かれてます。
0205デフォルトの名無しさん
2007/01/02(火) 13:43:59>>184にstring.hを追加して使えばおk
0206デフォルトの名無しさん
2007/01/02(火) 14:09:33void get_string(char *p_str, int size){
fgets(p_str,size,stdin);
while(*p_str) p_str++;
p_str--;
if(*p_str=='\n') *p_str = '\0';
else fflush(stdin);}
0207デフォルトの名無しさん
2007/01/02(火) 14:14:15stdinに対するfflush()の挙動は処理系依存だというのに
なんでこうも使いたがる奴が多いのか
0208デフォルトの名無しさん
2007/01/02(火) 14:29:45だからうざいって、お前はひっこんでろ。
他人の批判をする前に自分のソースを出せつっただろ?
0209デフォルトの名無しさん
2007/01/02(火) 14:40:40規定された方法が無いんだから仕方ないんじゃ。
rewind(stdin)もfseek(stdin,0,SEEK_SET)も出来る処理系はあるけど
動作が保障されてるやり方じゃない。
0210デフォルトの名無しさん
2007/01/02(火) 14:40:58だから、>>205でいいのでは?
0211デフォルトの名無しさん
2007/01/02(火) 14:45:40stdioのバッファを空にしたいというよりは、単に行末まで
読み飛ばしたいだけなんだから、いくらでも方法はあるはずだが。
scanf("%*[^\n]%*c");
でもいいし、
scanf()を使わないなら、>>205のやりかたでもいい。
0212デフォルトの名無しさん
2007/01/02(火) 14:55:53文字の入力受付はこうとか、ありきたりなソートに比較回数、交換回数を数えるものとか
そういったところまでありきたりなものが書かれたやつとか
0213デフォルトの名無しさん
2007/01/02(火) 15:04:17ここは丸投げスレだし、必要無いんじゃないかな?
丸投げでない人へは、俺に聞けスレへの誘導だけで良いと思う。
0214デフォルトの名無しさん
2007/01/02(火) 15:16:260215デフォルトの名無しさん
2007/01/02(火) 15:46:290216デフォルトの名無しさん
2007/01/02(火) 17:04:56難しいな。それなりに枝は刈ったつもりだけど、10x10 程度でも
下みたいに選択肢は多いのにクリア不能の盤面がきつい。
(ずれるので等幅フォントで見てください)
@......#.#
.......#..
....#####.
..........
..........
..........
..........
..........
..........
..........
0217デフォルトの名無しさん
2007/01/02(火) 17:12:59wikiがあるからぜひそこに書き記してくれ
0218デフォルトの名無しさん
2007/01/02(火) 18:25:200219デフォルトの名無しさん
2007/01/02(火) 18:33:450220デフォルトの名無しさん
2007/01/02(火) 18:56:50完全って証明できるの?
0221デフォルトの名無しさん
2007/01/02(火) 19:03:090222デフォルトの名無しさん
2007/01/02(火) 19:22:00これはグラフが相当制限されているが、それでも >>133 にあるように NP 完全。
証明は平面グラフのハミルトン閉路に帰着して行う。ただし、それほど簡単ではない。
0223デフォルトの名無しさん
2007/01/02(火) 19:41:33そんな宿題でるか普通?
0224デフォルトの名無しさん
2007/01/02(火) 20:23:53ハミルトン路の問題と、ハミルトン閉路の問題で違いが出たりはしないの?
0225デフォルトの名無しさん
2007/01/02(火) 21:26:49[2] 問題文(含コード&リンク):
0〜255の整数を入力し、数値に変換してunsigned char型変数に格納。
この数値に対し1ビット左にシフトした結果と1ビット右にシフトした結果
全ビット反転した結果をそれぞれ2進、10進、16進で表示。
<出力例>255と入力した場合
整数を入力 (0−255): 255
処理前 255 ff 11111111
右シフト 254 fe 11111110
左シフト 127 7f 01111111
全ビット反転 0 00 00000000
(エラー処理)
範囲外の整数、'0'〜'9'以外の入力 エラーメッセージ表示
改行のみ エラーメッセージ表示
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: なし
[5] その他の制限:
よろしくお願いします
0226デフォルトの名無しさん
2007/01/02(火) 21:34:36各ステップで立方体の体積を計算し、
その体積が初めて100を超えたときに
一辺の長さと体積を表示するプログラムを作成しなさい。
このプログラムでは一辺の長さの初期値と刻み幅を
キー入力で与えるようにすること。
結果表示の例)
刻み幅=0.01
辺の長さ=4.65 体積=100.545
この問題わかる方いますかぁ??
学校で始めたばかりなんですが、
全然わかりません。。。
よろしくお願いします。
0227デフォルトの名無しさん
2007/01/02(火) 21:40:52>>1読んで書き直し
0228デフォルトの名無しさん
2007/01/02(火) 21:58:33ハミルトン路問題とハミルトン閉路問題の変換は容易.
以下 G = (V, E) を固定する.
ハミルトン路問題をハミルトン閉路問題に帰着する:
新しい頂点 s を G に追加し,二頂点 u, v ∈ V を取って
辺 (u,s) と (s,v) を張る.G ∪ {s} にハミルトン閉路があれば
G に u-v 間を繋ぐハミルトン路がある.これを任意の u, v
について行えば, G にハミルトン路があるかどうか判定できる.
ハミルトン閉路をハミルトン路に帰着する:
新しい頂点 s, t を G に追加し,隣接する二頂点 u, v ∈ V を取って
辺 (s,u) と (v,t) を張る.G ∪ {s,t} にハミルトン路があれば
それは s を始点にし,t を終点にするものに限る.この路を用いると
u から出て v に行き,u に戻るようなハミルトン閉路が構成できる.
これを任意の u, v について行えば,ハミルトン閉路があるかどうか判定できる.
どっちの構成も図を描けばやりたいことは分かるとおもう.
0229デフォルトの名無しさん
2007/01/02(火) 22:38:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3306.c
0230デフォルトの名無しさん
2007/01/02(火) 22:47:41数字の後に数字以外を入力しても正しく入力されたことになっちゃうよ。
0231デフォルトの名無しさん
2007/01/02(火) 22:50:22そういう仕様でなんら問題ないよ。むしろそういう入力をする方がどうかと。
atoiも数字以外の英数文字があってもそれを無視して先頭の数字を
数値として認識するし、そういうもんだと割り切れば良いだけ。
0232デフォルトの名無しさん
2007/01/02(火) 22:52:30>>225 >>229を修正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3307.c
0233デフォルトの名無しさん
2007/01/02(火) 23:02:38[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3308.txt
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (Visuai Studio 2003)
[3.3] 言語: (C)
[4] 期限: 1月9日
[5] その他の制限: よろしく願いします。
0234デフォルトの名無しさん
2007/01/02(火) 23:12:44あー、ちょっと点を加えると相互の問題に変換できるのか
図に描いてみて把握した。タメになった�dクス
0235112
2007/01/02(火) 23:35:19また何かありましたら、よろしくお願いします。。。
0236デフォルトの名無しさん
2007/01/03(水) 00:28:05[2] 問題文(含コード&リンク): 一辺の長さを適当な刻み幅で増加させて
各ステップで立方体の体積を計算し、
その体積が初めて100を超えたときに
一辺の長さと体積を表示するプログラムを作成しなさい。
このプログラムでは一辺の長さの初期値と刻み幅を
キー入力で与えるようにすること。
結果表示の例)
刻み幅=0.01
辺の長さ=4.65 体積=100.545
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (Visuai Studio 2003)
[3.3] 言語: (C)
[4] 期限: ([2007年1月9日まで]
お願いします。
0237デフォルトの名無しさん
2007/01/03(水) 00:47:42#include<stdio.h>
#define THRESHOLD 100.0
int main(void)
{
double length, step, volume;
printf("辺の長さを入力して下さい :");
scanf("%lf", &length);
printf("刻み幅を入力して下さい :");
scanf("%lf", &step);
if(length<=0.0 || step<=0.0)
{
printf("Error: 正の数を入力して下さい\n");
return 1;
}
while(1)
{
volume=length*length*length;
if(volume>THRESHOLD)
break;
length+=step;
}
printf("刻み幅=%f\n辺の長さ=%f 体積=%f\n", step, length, volume);
return 0;
}
0238デフォルトの名無しさん
2007/01/03(水) 00:51:41023987
2007/01/03(水) 01:08:22とりあえず、探索の方法だけでもヒントがいただければ…
10×10程度ができれば大丈夫みたいです…すいません。
0240デフォルトの名無しさん
2007/01/03(水) 01:21:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3309.c
0241デフォルトの名無しさん
2007/01/03(水) 02:00:41本当にありがとうございます。助かりました。
0242デフォルトの名無しさん
2007/01/03(水) 02:45:13例えば今回の場合、各マスは上下左右4方向に繋がっていて、入ってきた
方向へは動けないので、各マスごとに最大3方向から1方向を決定することになる。
仮に全マス数100(N=10)、通過できるマスが半数の50個の場合を考えると、
答えがないかどうかをチェックするために大雑把に3の50乗個の道を調べないと
いけない。これでは、もし1秒間に平均1億個の道をチェックできたとしても、
解決までに約2億年もかかる計算になる。
だから論理上正しいだけのプログラムを作ったところで、よほどNを小さくするとか
よほど易しい特別なパターンでない限り、答えを出したり
>条件を満たすものがない場合、できませんでした。と表示
したりはできない。
0243デフォルトの名無しさん
2007/01/03(水) 02:57:17lengthはdata[], select[]の長さで,返り値は最大の合計値.また,その合計値に
data[i]が使われればselect[i] = 1,使われなければselect[i] = 0がセットされる.
処理はΘ(n).
int solve(int data[], int length, int select[]) {
int i, p1, p2, p3, w; p1 = p2 = p3 = 0;
for (i=0; i<length; i++) {
if (p2 <= p3)
{ w = data[i] + p3; select[i] = i-3; }
else
{ w = data[i] + p2; select[i] = i-2; }
p3 = p2; p2 = p1; p1 = w; }
i = length-1;
if (p1 < p2) select[i--] = 0;
while (i >= 0) {
w = select[i];
select[i--] = 1;
while (i > w) select[i--] = 0; }
return p1 < p2? p2 : p1; }
0244デフォルトの名無しさん
2007/01/03(水) 07:00:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3310.c
10×10 でも解けない盤面があるので未完成だが.
現在やっていることは
1. ハッシュで既出盤面をチェック.
2. 白マスと黒マスの個数が違うとクリア不能.
3. 非連結のときはクリア不能.
4. 行き止まりが多すぎるとクリア不能.
今後の加速の方針としては,ハッシュ方法を見直すことと,
アドホックにクリア不能パターンを列挙して枝を刈ることがある.
*問題のサイズはプログラムに対して相当影響するので
適当なことを言うと参考にしづらいものしか出てこないよ.
0245デフォルトの名無しさん
2007/01/03(水) 09:17:17243では数値の範囲を自然数に限定してしまったので,実数まで拡張したものを載せときます.
引数,返り値,効率に関しては上と同じ.main関数はおまけ.
double solve(double data[], int length, int select[]) {
int i, ix, w; double p1, px, v;
p1 = px = 0.0; ix = -1;
for (i=0; i<length; i++) {
v = p1; p1 = px + data[i]; select[i] = ix;
if (v > px) { px = v; ix = i-1; } }
i = length-1;
if (px > p1) while (i > ix) select[i--] = 0;
while (i >= 0) {
w = select[i]; select[i--] = 1;
while (i > w) select[i--] = 0; }
return px > p1? px : p1; }
#include <stdio.h>
#include <stdlib.h>
#define LENGTH 15
int main() {
srand(time(NULL));
int i, select[LENGTH];
double data[LENGTH];
printf("data :");
for (i=0; i<LENGTH; i++) {
data[i] = (double)rand()/RAND_MAX-0.3; printf("%5.2lf ", data[i]); }
printf("\nchoice:");
double max = solve(data, LENGTH, select);
for (i=0; i<LENGTH; i++) { printf("%5d ", select[i]); }
printf("\nmax: %3.2lf\n", max); }
0246デフォルトの名無しさん
2007/01/03(水) 10:17:54[2] 問題文(含コード&リンク):時間をdouble型に??時??分??秒.??ミリ秒として格納しているとして
二つのdoubleの差をミリ秒で求めるには?
[3] 環境ウィンドウズ
言語C++
例90004.45と85958.40だと答えは6000.5
9:00;04.45 8:59:58.40
なんですが1秒は1000ミリ秒でしたっけ?
100ミリ秒の気もするのですが、よろしくお願いします。
0247デフォルトの名無しさん
2007/01/03(水) 10:34:530248デフォルトの名無しさん
2007/01/03(水) 11:01:18>>>88-90
>のURL行ける?
見れませんでした?見れると思います。
>>215
>88却下。俺にはできん...
質問の仕方が悪かったですか?
(154さんと同じ方ですか?)
0249デフォルトの名無しさん
2007/01/03(水) 11:29:4290004.45と85958.40だと6050ミリ秒じゃないの?
0250デフォルトの名無しさん
2007/01/03(水) 12:27:08【問】
キーと値のペアを扱う、二分木クラスを自作せよ。std::map を参考にせよ。
下記のメンバ関数を実装せよ。
// 追加 - return: true: OK, false: NG(重複)
bool mymap::insert(int key, int val);
// 検索 - return: 見つかった key の val, 見つからない場合は、今のところは -1 で良い。
int mymap::find(int key);
// 削除 - return: true: OK, false NG(not found)
bool mymap::remove(int key);
// 表示 - 昇順
void mymap::print();
0251デフォルトの名無しさん
2007/01/03(水) 23:43:23[2] 問題文(含コード&リンク):
生年月日を入力させ、その人が何日生きたかを表示させるプログラムを書け。
(閏年も考慮すること)
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: C
[4] 期限: 2007/01/08
[5] その他の制限: なし
0252デフォルトの名無しさん
2007/01/04(木) 00:58:42#include<stdio.h>
#include<time.h>
int main(void){
time_t birthday, current;
struct tm birthday_str={0,0,0};
int year, mon, mday;
printf("\n生年月日を入力して下さい\n");
printf("例. 2007 1 1 : ");
scanf("%d %d %d", &year, &mon, &mday);
year-=1900;
mon-=1;
birthday_str.tm_year=year;
birthday_str.tm_mon=mon;
birthday_str.tm_mday=mday;
birthday=mktime(&birthday_str);
time(¤t);
printf("生まれてから %d 日経ちました\n", (int)(difftime(current, birthday)/(60*60*24)));
return 0;
}
0253デフォルトの名無しさん
2007/01/04(木) 01:18:32申し訳ありませんが、自分で考えてみてもさっぱりだったので、お願いします。
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
(1)外積による三角形の面積の計算方法を利用し、三角形の面積を求める関数
double trianglearea(double x1,double y1,double x2,double y2,double x3,double y3)
を作成しなさい。三角形は(x1,y1),(x2,y2),(x3,y3)の3つの頂点から成るとする。
(2) (1)の関数を利用して四角形の面積を求めるプログラムを作りたい。
4つの行からなる入力(x1,y1),(x2,y2),(x3,y3),(x4,y4)が、四角形の4つの頂点を示し、
それらの点は、右回りに頂点を選んでいるものと仮定してよい。
(それ以外のときには適切に計算できなくてもよい。)
1つの四角形は、2つの三角形からなると考えてプログラムを作成すること。
(3)四角形の内部の点(x0,y0)を与えた場合、四角形は、(x0,y0)と隣接する四角形の
2つの点からなる三角形4つから構成される。この考え方に基づきプログラムを作成しなさい。
ただし、(1)で作成したtriangleareaを利用すること。
入力は、ファイルから(x1,y1),(x2,y2),(x3,y3),(x4,y4)の順で読むこと。
キーボードから(x0,y0)を入れること(四角形内部の点を入力すること)。
0254253
2007/01/04(木) 01:19:00(4)外積から三角形の面積を求めるためには、負の値になったときに正の値にする必要がある。
そのようなことをせずに、単にそのまま外積の値を計算する関数
double gaiseki(double x1,double y1,double x2,double y2,double x3,double y3)を作成すること。
(5) (3)では、4つの三角形それぞれにtriangleareaを計算し、その合計を四角形の面積とした。
今度は、4つの三角形それぞれにgaisekiを計算し、その合計を求めなさい。
入力はファイルから(x1,y1),(x2,y2),(x3,y3),(x4,y4)の順で読むこと。
キーボードから(x0,y0)を入れること。
(6)(x0,y0)を四角形の内側にした場合と、外側にした場合で、計算結果が変わるかどうか、
いくつかのデータを入力し、確認しなさい。(入力したデータを示しなさい)
また、なぜそのようなことになるのか、考察しなさい。
(7)上記の結果を利用して、多角形の面積を求めるプログラムを作成せよ。
多角形の点は、右回りで与えられると仮定してよい。
多角形の中には、へこんでいるものも存在していると考える。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC++ 6.0
[3.3] 言語:C++
[4] 期限: (2007年1月7日22:00まで
[5] その他の制限:とくになし。
0255デフォルトの名無しさん
2007/01/04(木) 01:42:22[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3311.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年1月4日21:00まで
よろしくお願いします。
0256デフォルトの名無しさん
2007/01/04(木) 02:02:46ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
tVXbbuIwEH0OEv8w21VXNgoI2m5vKf2SlaqUONuouaDEpKCq/74zYyd2AvRtpRZsz/UcHw8/s3KT7xI
FT41Osmrx9jydTCebPG4aKA5FvIXP6WRbZ22s1eN0EjS63m00lFWiXvRhq8gcBFmp4V0dQmjjPAI6cQ
6zXKU6hFmd/X3T0cAmOC4E+mpD8GMGu1pSWPBINcS75DKixW9KLXJccHJh/D6/8POLKvkpqoqK42FbZ
QkgolK/4L+qS8zVO864rLSoUmDL/JnqwI81LOWpSGOXjI3NqbgQl0kIl4mEC4Nk/sz8mCW2b7xdBQbw
XQl24CiEt9295tmG7oPvSEh4BEIoMJrgo+G1qnIktlG1Fv31MNFY3ODz6JnRGtbwy/IUBB9vWa5AGIP
pi4O4Z0wG67W1SsYmoVZ6V5eQxnmjooHr08izKyb6Y0dgoDD8hIfDTwSY3KJru1QfTi+iU2IIS/yTkl
pdnujPHqCileUVP4miNCuTjrRjrmzNMVPfEdUroO+iF8KYKc+1A9dL7JggTxuOGltivnKoWA21KqpWn
Qd2LAIftdrTK+bXXMR7XOpia15UkFY1iCjygdtcp4k/r6HXWsXv/1s8Q/nYBLZXggleV45aTm0AWg7O
dmEVITqy5PB9D8NHPjaF7aOzmsOZi/TjnDQoqoMDg858u+nlJEjWD14slSYjH7pXtjdeicqVVmAEcOY
duTErrC5GY41ENpyZf8qLbsB9sbJIqUWclYKSmSzmN6kgt2Jhx9tNCA8ygn5/HcK1v8cpsFr6Bw8h3P
j737z3U16FcOd73I1TrMYHtyFc+ft7boJzWhYiO11apLJY8IwxHqTFlrQxX9nh7/+ApNWuTJAazIdTj
QO8DNREn2I9TEGv5zLB56C9JDagWNhpYEDYzb2/ufY3t8dY7LUvcY039g8=
0257デフォルトの名無しさん
2007/01/04(木) 02:24:41#include <stdio.h>
int main(void)
{
int i, j, a[5][4] = {0}, ave[4] = {0};
for(i=0; i<5; i++) {
printf("%d番目の人の成績を入力します\n", i+1);
for(j=0; j<3; j++) {
printf("%d番目の科目の点数をいれてください:", j+1);
scanf("%d", &a[i][j]);
a[i][3] += a[i][j];
}
}
for(i=0; i<5; i++) {
for(j=0; j<4; j++) {
printf("%d ", a[i][j]);
ave[j] += a[i][j];
}
putchar('\n');
}
puts("----------------");
for(i=0; i<4; i++) printf("%d ", ave[i]/5);
return 0;
}
0259250
2007/01/04(木) 10:05:11ありがとうございました。
参考にさせていただきます。
今後は質問のテンプレに従うようにします。すみません。
0260デフォルトの名無しさん
2007/01/04(木) 11:56:19[2] 問題文(含コード&リンク):適当に入力した数に
設定した適合な数{12,98,5,34,119,77,26,3}の中で近い値を出す
[3] 環境
[3.1] OS:WindowsXP
[3.2] Cygwin
[3.3] 言語:C
[4] 期限: 今週
[5] その他の制限:a[]を使うのと
#include <stdio.h>だけでお願いします。
0261デフォルトの名無しさん
2007/01/04(木) 12:22:41#include <stdio.h>
#define SIZE 8
int main(void)
{
const int a[] ={12,98,5,34,119,77,26,3};
int i, data, min , tmp , num;
printf("値を入れてください:");
scanf("%d",&data);
for( i = 0 , min = a[0] , num = 0; i < SIZE ; ++i ) {
tmp = data - a[i];
tmp = (tmp >= 0) ? tmp : -tmp;
if( min > tmp ) {
min = tmp;
num = i;
}
}
printf("一番近い値は %d です。",a[num]);
return 0;
}
a[]って使い方これでいいのか?
a[SIZE]ってやったほうがいい気がするんだがまあいいか
0262261
2007/01/04(木) 12:24:41if( tmp < 0 ) tmp = -tmp; って変えてね
むしろこっちのほうがいいな
0263261
2007/01/04(木) 12:28:44>>261 >>262は忘れて 間違えた
#include <stdio.h>
#define SIZE 8
int main(void)
{
const int a[] ={12,98,5,34,119,77,26,3};
int i, data, min , tmp , num;
printf("値を入れてください:");
scanf("%d",&data);
for( i = 0 , min = data - a[0] , num = 0; i < SIZE ; ++i ) {
tmp = data - a[i];
if( tmp < 0 ) tmp = -tmp;
printf("%d\n",tmp);
if( min > tmp ) {
min = tmp;
num = i;
}
}
printf("一番近い値は %d です。",a[num]);
return 0;
}
0264261
2007/01/04(木) 12:30:35printf("%d\n",tmp);
ここのprintfも消して
0265デフォルトの名無しさん
2007/01/04(木) 12:30:46値を入れてください:1234567
一番近い値は 12 です。
0266デフォルトの名無しさん
2007/01/04(木) 12:31:390267デフォルトの名無しさん
2007/01/04(木) 12:32:520268デフォルトの名無しさん
2007/01/04(木) 12:35:13>min = data - a[0]
0269261
2007/01/04(木) 12:37:25>>268 それどこ?
0270デフォルトの名無しさん
2007/01/04(木) 12:43:28263のforの初期設定部。
>for( i = 0 , min = data - a[0] , num = 0; i < SIZE ; ++i ) {
min = data - a[0] じゃダメ。
0271お願いします
2007/01/04(木) 12:54:06料金の割引
【プログラム名】
wari.c
【処理内容】
A商品はまとめて買うと、お得なな割引サービスがある 。
購入数量を与えて支払料金を計算する。
なお、A商品の1個当たりの単価は適当に決めてよい。
割引率は次のとおりである。
10〜99個まで 20%割引
100〜499個まで 25%割引
500個以上 30%割引
【実行例】
商品単価:1200
購入数量:120
購入金額:108,000円
…お願いいたします。
0272デフォルトの名無しさん
2007/01/04(木) 13:13:04#include <stdio.h>
int main(void){
int price, num, amount;
printf("商品単価:");
scanf("%d", &price);
printf("購入数量:");
scanf("%d", &num);
if(num>=500) amount = price * num * 0.7;
else if(num>=100) amount = price * num * 0.75;
else if(num>=10) amount = price * num * 0.8;
else amount = price * num;
printf("購入金額:%d円", amount);
return 0;}
0273デフォルトの名無しさん
2007/01/04(木) 13:14:41else if(num>=10) amount = price * num * 0.8;
を空白行に追加して
0274261
2007/01/04(木) 13:25:17飯食ってた そしてまた間違ってたorz 吊ってくる
>>260
何度もすまん 今度こそ大丈夫だ
てかabs使えればこんなに長くならないのだが・・・
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3314.txt
0275デフォルトの名無しさん
2007/01/04(木) 13:26:11>273はなかったことにしてくれ。
0276デフォルトの名無しさん
2007/01/04(木) 13:36:00できましたー。ありがとうございます!!
0277デフォルトの名無しさん
2007/01/04(木) 14:38:41ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3315.cpp
0278デフォルトの名無しさん
2007/01/04(木) 22:57:14[2] 問題文(含コード&リンク):
ttp://dlmsdlms.hp.infoseek.co.jp/memo.txt
http://dlmsdlms.hp.infoseek.co.jp/in.dat
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VisualStudio
[3.3] 言語: C++
[4] 期限: 2007年1月10日18:00まで
[5] その他の制限: 特にありません。
よろしくお願いします。
0279デフォルトの名無しさん
2007/01/04(木) 23:05:110280デフォルトの名無しさん
2007/01/04(木) 23:20:54/'''''' '''''':::::::\/'''''' '''/'''''' '''''':::::::\ /'''''' '''''':::::::\
. |(●), 、(●)、.:|(●), |(●), 、(●)、.:|、( |(●), 、(●)、.:|
| ,,ノ(、_, )ヽ、,, .::::| ,,ノ(、_, )| ,,ノ(、_, )ヽ、,, .::::|_, )| ,,ノ(、_, )ヽ、,, .::::|
. | `-=ニ=- ' .:::::::| `-=ニ= | `-=ニ=- ' .:::::::|ニ=| `-=ニ=- ' .:::::::|
\ `ニニ´ .:::::/\ `ニニ \ `ニニ´ .:::::/ニ´ \ `ニニ´ .:::::/
/`ー‐--‐‐―´\ /`ー‐- /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
できますた できますた できますた できますた できますた
0281デフォルトの名無しさん
2007/01/05(金) 00:10:08遅くなったけどありがとうございました。
0282デフォルトの名無しさん
2007/01/05(金) 00:31:04なんでこうハミルトン路といいナップサックといいNP困難な問題がいくつも…
宿題にだされてさくっと解けるようじゃ世の数学者が食っていけなくなるよ
0283デフォルトの名無しさん
2007/01/05(金) 00:51:04総当りで調べる方法しか思い浮かばない^^;
手持ちの楽曲ファイルの数によっては生きている間に解が出ないw
0284デフォルトの名無しさん
2007/01/05(金) 01:10:27[2] 問題文(含コード&リンク):
整数係数の2次方程式 ax^2+bx+c=0 を因数分解するプログラムを作りなさい。
ただし因数がすべて整数値になるものだけとします。整数値にならないものには「不可能」のメッセージを出力することとします。
このプログラムで、因数分解できるa,b,cの組み合わせを10組ほど探すこと。
例:a b c 因数分解
1 2 1 ( 1x + 1)( 1x + 1)
1 1 1 不可能
2 7 3 ( 2x + 1)( 1x + 3)
3 13 -10 ( 3x +-2)( 1x + 5)
[3] 環境
[3.1] OS:Windows
[3.2] bcc32
[3.3] 言語:C
[4] 期限:可能なら今週末まで
[5] その他の制限:特にありません
お願いします。
0285デフォルトの名無しさん
2007/01/05(金) 01:11:41配列 h[200][200] に配列 h2[200][200] を代入する方法を教えてください><
h=h2; とか
h[][]=h2[][] とか
h[][200]=h2[][200]
とかじゃできませんでした>< てかfor文使うしかないってことなんでしょうか( ;・∀・)??
0286デフォルトの名無しさん
2007/01/05(金) 01:20:31そこでmemcpy。
0287デフォルトの名無しさん
2007/01/05(金) 01:20:33for( int i= 0 ; i < 200; ++i ){
for( int j = 0; j < 200; ++j ){
h[i][j] = h2[i][j];
}
}
いま >>278の課題やってるが実に面倒だ
0288デフォルトの名無しさん
2007/01/05(金) 01:23:510289デフォルトの名無しさん
2007/01/05(金) 01:44:53顔文字とかうざいよ、もう来るな
0290デフォルトの名無しさん
2007/01/05(金) 01:48:10http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3316.txt
疲れた45分もかかった 合ってるかは知らないごめん
0291デフォルトの名無しさん
2007/01/05(金) 01:49:361】情報プログラミング演習
2】OpenGL及びGLUTを利用し、以下の条件を満たす3Dグラフィックを
描画するプログラムを作成しなさい
a:球体と輪で構成された土星形のオブジェ
b:マウスの左ボタンで押し続けている間回転
c:視点位置と視線方向は任意
d:球体と輪は適当な色で塗りつぶす
e:Zキーでプログラム終了
ex:可能ならば陰面消去処理を施すこと
3】
OS:Windows
言語:C
コンパイラ:VC6.0
4】1月7日正午
5】ポインタ・構造体などといったC言語の基礎項目一通りと、
OpenGLの3次元図形の描き方やアニメーションまで学んでいます
制限事項は特になく、GLUIは使用しても良いとの事です
0292デフォルトの名無しさん
2007/01/05(金) 02:21:58>>87ってホントにNP困難なのかなー
任意のグラフじゃなく格子状のグラフなのに難しそうだからって
NP困難って決め付けるのは早計だと思う
NP完全って言ってる人は信用できないし
(経路を求める問題だからNPに属してないでしょ?)
0293デフォルトの名無しさん
2007/01/05(金) 02:26:280294デフォルトの名無しさん
2007/01/05(金) 02:34:59#include <stdio.h>
void solve(int a, int b, int c) {
int i, j;
for (i = a > 0 ? 1 : a; i <= (a > 0 ? a : -1); ++i) {
if (a % i != 0) continue;
for (j = c > 0 ? 1 : c; j <= (c > 0 ? c : -1); ++j) {
if (c % j != 0) continue;
if (i * j + a / i * c / j == b) {
printf("(%dx+%d)(%dx+%d)\n", i, c / j, a / i, j);
return;
}
}
}
printf("不可能\n");
}
int main(void) {
int a, b, c;
for (; ; ) {
printf("a b c\n");
scanf("%d%d%d", &a, &b, &c);
solve(a, b, c);
}
}
0295294
2007/01/05(金) 02:42:510296294
2007/01/05(金) 02:56:36#include <stdio.h>
void solve(int a, int b, int c) {
int i, j;
if (a == 0) {
printf("a==0は2次方程式ではありません\n");
return;
}
if (c == 0) {
printf("(%dx+%d)(%dx+%d)\n", 1, 0, a, b);
return;
}
for (i = a > 0 ? 1 : a; i <= (a > 0 ? a : -1); ++i) {
if (a % i != 0) continue;
for (j = c > 0 ? 1 : c; j <= (c > 0 ? c : -1); ++j)
if (c % j == 0 && i * j + a / i * c / j == b) {
printf("(%dx+%d)(%dx+%d)\n", i, c / j, a / i, j);
return;
}
}
printf("不可能\n");
}
int main(void) {
int a, b, c;
for (; ; ) {
printf("a b c\n");
scanf("%d%d%d", &a, &b, &c);
solve(a, b, c);
}
}
0297デフォルトの名無しさん
2007/01/05(金) 03:12:56楽曲の数や容量はプログラムでランダムに決めるようにしたらいいんだと思います
0298デフォルトの名無しさん
2007/01/05(金) 03:13:59ダミーデータで埋めてごまかす……
0299デフォルトの名無しさん
2007/01/05(金) 03:24:13プログラムの書き方はどんなカンジになりますか???
0300デフォルトの名無しさん
2007/01/05(金) 03:26:590301デフォルトの名無しさん
2007/01/05(金) 03:40:44たぶん近似解しかない
これと一緒
http://www-or.amp.i.kyoto-u.ac.jp/packing/packing1.html
0302デフォルトの名無しさん
2007/01/05(金) 08:05:55お前>>283の意味わかってないだろ
0303NP 完全って言ってる人
2007/01/05(金) 08:14:31>>292
最初に「経路を求める問題だから NP に属してないでしょ?」
という指摘について.多分これは日本 Wikipedia の
> なお NP はクラス P 同様、判定問題のクラスであり
> yes/no で答えることの出来ない問題は NP には属さない。
という記述を参考にしたものだと思うが,微妙なところ.
判定問題以外の問題の計算量を考えるとき,特に証拠として
もとの問題の解が求まるような場合は,その判定問題版を考えて
NP などと主張するのが普通.今回も基本的にはそのノリで
NP と主張している.
しかし,わざわざ判定問題に落とすのが面倒だという話があって,
問題のクラスを一般化した FP や FNP という計算量のクラスがある.
適切な判定問題に落として P/NP という場合は 大体 FP/FNP に
なっており,整合性がある.そこで,これらを適当に混同し,
判定問題以外について NP と主張するのはそれほど特殊なことではない.
0304NP 完全って言ってる人
2007/01/05(金) 08:20:37次にこの問題について.この問題の存在判定版は制限格子上の
ハミルトン閉路というその筋では比較的有名な NP 完全問題.
これが NP 完全になることの証明は >>222 の方針でできる.
理解するだけなら,ハミルトン閉路問題が本質的には木幅について
指数の問題だということを使うのが現代的だと思う.
経路を求める問題は,明らかに経路の存在判定よりも難しいので
効率よく解けるわけはない.計算量のクラスとしては,FNP 完全に
属することが簡単に示せる.
決して「難しそうだから」NP 困難と決め付けているのではないよ.
0305デフォルトの名無しさん
2007/01/05(金) 09:03:32記憶媒体内の記憶量の取りうる数値が有限個数の離散値であれば,その離散値の個数mとファイルの個数n
に関して計算量(mn) +空間(m)で解ける.
例えばファイルのサイズが1KB単位で記憶容量が64MBなら,記憶量のとりうる値は0, 1, 2,..., 64*1024
の(64*1024+1)通りだからなんとかなる(1B単位なら非現実的だが).量子化の単位を適当に取れば,
それなりの近似は可能だろう.
#include <stdio.h>
#define MEMSIZE 64*1024 /* 記憶媒体の容量 (KB単位) */
int plot[MEMSIZE+1], trace[MEMSIZE+1];
int sizes[] = {1300, 2500, 3700, 4900, 12000, 23000, 34000, 45000}; /* ファイルのサイズ(KB単位)*/
int num = 8; /* sizes[]の要素数 */
int main() {
int i, j, sum=0; plot[0] = 1;
printf("items:\n");
for (i=0; i<num; i++) printf("%d: %dKB\n", i, sizes[i]);
for (i=num-1; i>=0; i--) for (j=MEMSIZE; j>=0; j--)
if (plot[j] && j+sizes[i] <= MEMSIZE && !plot[j+sizes[i]]) {
plot[j+sizes[i]] = 1; trace[j+sizes[i]] = i; }
for (i=MEMSIZE; !plot[i]; i--);
printf("\nchoice:\n");
while (i>0) {
int t = trace[i];
printf("%d: %dKB\n", t, sizes[t]); sum+=sizes[t]; i-=sizes[t];}
printf("\nsize: %dKB/%dKB\n", sum, MEMSIZE); }
0307デフォルトの名無しさん
2007/01/05(金) 10:26:05ありがとうございます!
続いてどなたかこれをお願いいたします。
[1] 授業単元:情報工学実験
[2] 問題文(含コード&リンク):
Cのソースプログラムの中から、コメントの部分を取り除くプログラムを作りなさい。
このプログラム自身にコメント行を入れておき、それをデータファイルとして読み込み、うまくコメント行が取り除けるかチェックすること。
[3] 環境
[3.1] OS:Windows
[3.2] bcc32
[3.3] 言語:C
[4] 期限:可能なら今週末まで
[5] その他の制限:特にありません
0308デフォルトの名無しさん
2007/01/05(金) 11:22:301ZVdSxtBFIbvA/kPp/TCrAYj9C5RQUJKL2qUxsuCbDejWZrsymajFyWQ2a1WtBT6JVUvRImtsUULQms
txR8z3Xz8i56ZzcasxiRaKHQuZiczZ56Z98zhzV1VU7KFNIHRvJlW9eHMeDAQDEQGobb2rbq8zqw3tf
IZo5swGAkGiFbIQVzP5YhmpkzZJPAsGABsyalkAsZgJAyi4fZGacs5PWX0yOVAl8bJ/Jt6OJF6EG5NI
4RZJ8zeZTb2q055g9FPzPrB7AqzbWZ9Z/Y+Xq/+cZ3RMqOvGd3x8yZSM4lHPl7cB1xZ5sASZdYex1rn
zD4Ug+PLWI8Yn41PTU4mkjPhNqLYaZWZ/RnVXjrgWq3x6WmP5ZGGhm7E4qRizH0sZCIg0h2BohqbZef
VT3xNZq2zkiW2Ocv7zoszZ22b0WPgNaBFsNcLJjjbZ87RFqOHHCQy5axWau8O6iVM3DFPll0SJ33hKc
MDXC5FNBXoOYPoC0QL3ZMEpII3+P3rHAle5FtGD5r3QDWLupoGg+T0RTKruEWWD0nBQLPGVM0EJeaOr
xZiXvRjohKbQW6/lFGzBEIhBRfnialkZCMkSXBnDBJT9yWvgHnLL6m4DCHFN6vIeQIDkYHoxVR7sDjX
t6G1iV8lCq2bifKOwRODyE9jHcLFerQV3lYhXTaJGo/61XeMLvp/Xg5xVQ7eXiVvCwU3vYrUW6age1L
7ENqKuRArtP+F2sfabeX65/uW3vakHRD+N7xBLvtFYRFLfYLdsroe3OPFeqQ/TebkQtb8t8n/T3PVXM
ZPsc3rgbs6t96TxsZe9f1Xz8zBOdqp776sblrcoUt0wdDnDTkHo+ieKGZYgXFAa3eH4v8BXXsF3bn6f
IfRD8LlPTvmfpuTVa3Ngq+Yc8ybNwuGBiMxccs/
ここで解凍↓
ttp://www.geocities.jp/c_cpp_cs/code/code.html
0309デフォルトの名無しさん
2007/01/05(金) 11:24:52やろうと考えたけど文字列中で/*が出たときの処理が面倒だからやめた。
0311308
2007/01/05(金) 11:30:00/* this is in string */ world\n");
みたいなのにも対応すんのか、マジめんどくせー。
つうわけで俺もパス。ごめんね。
0312デフォルトの名無しさん
2007/01/05(金) 11:32:51というかマトモにコメントに対応しようとしたらC言語のlexerつくるのと大差ないし。
この手の真面目にやればやるほど難しくなる課題ってのは嫌だなぁ。
0313デフォルトの名無しさん
2007/01/05(金) 11:48:57それはないわ。言語のクラスが違うでしょ。
0314308
2007/01/05(金) 11:57:06文字列中の\"とかの対応とか'"'みたいなケースとかがウゼー
>>308をちと拡張しただけだと汚くなるだけっぽいので、やっぱやめだ
0315デフォルトの名無しさん
2007/01/05(金) 12:08:56確かにlexerよりは簡単なんだけど
int/*hoge*/i='/*';
/*hoge*//*hoge*/
char*p="\\""\"/**/";
とかに対応しようとして俺が書くと、
演算子の種類の認識以外は殆ど果てしなくlexerに近くなる。
0316デフォルトの名無しさん
2007/01/05(金) 12:44:30lexerとか次元が違いすぎるかと。
#include<stdio.h>
#define ungetchar ungetc(c, stdin)
int main(void) {
int c;
while((c = getchar()) != -1) {
if(c == '/') {
if((c = getchar()) == '/') {
while((c = getchar()) != '\n' && c != -1)
if(c == '\r') { if((c = getchar()) != '\n') ungetchar; break; }
} else if(c == '*')
for(;;) { if((c = getchar()) == '*') { if((c = getchar()) == '/') break; ungetchar; } }
else { putchar('/'); ungetchar; break; }
} else if(c == '"') {
putchar(c);
for(;; putchar(c))
if((c = getchar()) == '\\') {
putchar(c);
c = getchar();
} else if(c == '"') { putchar(c); break; }
} else putchar(c);
}
return 0;
}
0317デフォルトの名無しさん
2007/01/05(金) 12:47:53ttp://www.geocities.jp/c_cpp_cs/code/code.html
xVVNb5tAED3bkv/DmKjBJij4I+4hhEpV0kqV3F7aqpVKDgss9tp8GZY0VeX/3ll2sU1M0hwa9bQw82b
evGGZOWGJH5UBhauCByw9X77pdXvdk4CGLKHw8e13mMxeCxNLOMSEJQO4S1kAQ7AMuE7jmKL9C73nYF
i97u9et/P+w/wdGKGN/pBFFLIUQ2le+Tv+kuQiMiCcoCX4UVHcqsMEop5sxApGhN6RqKSIZSasTMhM8
EzYgAMjE2JxKKhlLNMFNSzu6JahC2NtqU9Fb/xyNNfVNFezDMPSBFJkCGEAIeYL04yiSO360nW/pfna
dW+Yf87vuWaClmsofAhCZidMcwxhVQl4XInC8eHsrAaonAvKiwEQU/hNpBiC48Cnr/M5Pnk5JWt7D46
h78AUHTtlNY8nFa/kkUnWrGbNDlhlJmxkBreCSndHunACNpuJVq8QjJ7KYasSYCtji5+M+8t9/C6pTw
qKEa4Ol2BZ4BF/XUSkWEqv5PQqGk/WtgUaYYh8H+8Iap1Y2Li9KguLilWOo5gL1ZuprVwHHaxrTFSNO
eVlnoCfBrSZZ9jSikS3/y5l0yyrhVtX3J9ZssC7vylT/mjaZuclYCNEjirURvVNku+94523tUMv1FVN
CQvS0vsHwiYtwib/RZilhB3d5kaC2eO3o11t498+zCh7EB9/3KdEghI5eeryGUoJKTg5oq2HysUzrnn
l6m/g9PRZRU1FaFtZuERIGXF1ceTLQ3ZvP+he9GNvD2Zjv20EyIFnH8CqpLPmMJZpshwXTohL4lWBW0
FmgmGFqAChH6UFFfukMgrbLsStNtPD1ekmmsSqoSXoMOwP
こんな感じ?
0318316
2007/01/05(金) 12:49:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3320.c
0319デフォルトの名無しさん
2007/01/05(金) 12:49:37それだと'"'とかがダメじゃね?
0320デフォルトの名無しさん
2007/01/05(金) 12:52:462:以下に示す問題のどちらかを選択し、プログラムを作成しなさい
A:OpenGLライブラリを使用し、2本の円柱が交互に上下運動(ピストン運動)する
簡単な三次元オブジェクトをアニメーションさせるプログラムを作成しなさい
B:OpenGLライブラリを使用し、大きな球体の周囲を一つの小さな球体が回る
簡単な三次元オブジェクトをアニメーションさせるプログラムを作成しなさい
3:Windows C言語 VC6.0
4:8日の朝9時
5:C言語の基本はポインタや構造体まで
後はglutの使い方まで学んでいます
よろしくお願いします!
0321デフォルトの名無しさん
2007/01/05(金) 12:55:17ああ、そうだったw サンクス。
if文にこれを追加。
else if(c == '\'') {
putchar(c);
if((c = getchar()) == '\\') { putchar(c); c = getchar(c); }
putchar(c);
putchar(getchar(c));
}
0322デフォルトの名無しさん
2007/01/05(金) 12:57:29これだと int/**/i=0をinti=0と解釈してエラーにならね?
>>321
文字リテラルは最大4文字まで入るYO
0323デフォルトの名無しさん
2007/01/05(金) 13:01:270324デフォルトの名無しさん
2007/01/05(金) 13:03:01getchar(c) は getchar() の typo じゃね?
>>322
コメントは単に空白一文字に置換えちゃっていいのかな。
0325デフォルトの名無しさん
2007/01/05(金) 13:03:07いやいや規格上
'ABCD'
これが許される。
だから最長で考えると
'\xXX\xXX\xXX\xXX'
とかありえる。
0326デフォルトの名無しさん
2007/01/05(金) 13:03:59初めて見ると何事かと思うw
0327デフォルトの名無しさん
2007/01/05(金) 13:14:39無条件に空白に置き換えると問題はなくなるけど、
問題のない箇所のコメントも空白1文字に変わってやな感じ。
前後が<識別子>{<コメント>}<識別子>となっている部分だけ、
コメントを空白1字にすれば見た目の問題はなくなるけどマジめんどい。
俺としては>>312ということで対応しなくていいじゃんという方針で。
0328デフォルトの名無しさん
2007/01/05(金) 13:17:50// hoge\
huga
というコードに対してコンパイラによって挙動がまちまちなんだけど(hugaがコメントになったりならなかったり)。
規格で決まってたっけ?
0329デフォルトの名無しさん
2007/01/05(金) 13:19:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3321.c
0330デフォルトの名無しさん
2007/01/05(金) 13:44:28まぁ、普通に考えたら質問者のコンパイラ環境と同等にするのがベストだろうね。
0331308
2007/01/05(金) 13:45:30細かいところを突っ込むと切りがないんだろうけど
俺のアホなコードよりはるかに簡潔に文字列対応までされてて
スゲーと思った。
まぁ、文字列の途中とかでEOFが訪れると(runaway stringってやつ)
無限ループに陥るだろうけど。Cソースとして正しくないものは
処理しない、でいい気はするし、エラー処理入れると汚くなるだけって
気はするな。
一応為念。
0332デフォルトの名無しさん
2007/01/05(金) 13:57:37//の行の改行消されちゃうのね
0333308
2007/01/05(金) 14:37:11改善しといた(つもり)。そのかわり、オリジナルの簡潔性は失われているw
それと、>>327のお気には召さないだろうが、Cスタイルのコメントは
無条件でスペースで置換するようにしたよ。それ以上はさすがにちょっとね。
nVNRb4IwEH4n4T+cLrGgZmzPzL0s2+uSPZMYVos0g2JKG2PU/75WYAilYnYvwHFfv+++uz5QhjO5IfB
Sig0tHtNX13EdygTkMWWe7zpH1wEVOoWXsMahLtCZfUozAp6HYQVbInAac8/3YbKC988PH2rcBZuArl
oBClDnh44OPOz+uwnUEczhbbGAUhyUFFzkOVEy54FZeFMszGZKhnpHEUO+CdYRmmnJ9EmeckV7x/riz
0Cyklz1MLf3cEcHScGhKz+sRKsGQuj1NUDT+jmpteCCCcokGWitKe771Yzim5P4x4K7dD3izcUfM7WT
FRMCZHFzoLE/UGCAdIxNqf00BjZFcDpB9R4hc3pqcpo5KAWnbGtMrRG21ibiPvH916eJVlgUDa/SNat
B2C9oSYeG0/dC3wwbZZJkskw95W8hhY022SmTRKKrCOdLmH5JFu/jA1TuRWxqQ3IiJGfwfIfMNf6/L7
adtm/e6LHnsV07Dm9M57AaVT9qM55Ugcr8Ag==
解凍は ttp://www.geocities.jp/c_cpp_cs/code/code.html で。
0334デフォルトの名無しさん
2007/01/05(金) 15:28:01>>328
連結が先。
0335307
2007/01/05(金) 18:56:22>>333を頂くことにします。
申し訳ありませんが>>333のプログラムがどのように動作するのか説明を頂けないでしょうか?
0336デフォルトの名無しさん
2007/01/05(金) 19:22:18母校も俺の2個下の学年ぐらいからやってるぽかったけど面白いかな
0337デフォルトの名無しさん
2007/01/05(金) 20:27:440338デフォルトの名無しさん
2007/01/05(金) 21:06:030339デフォルトの名無しさん
2007/01/05(金) 21:25:510340デフォルトの名無しさん
2007/01/05(金) 21:36:30>>284
>>291
>>320
比較的最近の未解決
0341デフォルトの名無しさん
2007/01/05(金) 21:39:40>>253-254
>>284 はすでに終わってないか?
0342デフォルトの名無しさん
2007/01/05(金) 21:40:16277は無視ですか?
0343292の素人
2007/01/05(金) 21:42:11なるほど、よくわかった。
いくつか質問等を
計算量としては
NP完全≦NP困難
FNP完全≦FNP困難
NP完全≦FNP完全
NP困難≦FNP困難
ってゆう認識であってる?
あと、一般的な問題でなら経路存在判定はNPだけど
経路を求めるのはFNPにすら属さない(FPSPACEってのがあるかは知らないけれど)って
問題もありえるわけでしょ?
この可能性を言及せずに、NP困難かNP完全かを示さなきゃならないほど
「完全」ってのは重要なの?
# あと、上の計算量から言って
# NP困難じゃね? → NP完全だよ → 実はFNP完全でした
# って話の流れはソフトバンクに通じる詐欺くささを感じる件
0344デフォルトの名無しさん
2007/01/05(金) 21:49:29まとめありがと。しかし俺は手垢にまみれてない宿題を解きたいんだ。
というわけで出題者まだー?
0345デフォルトの名無しさん
2007/01/05(金) 21:53:06何を言うとるんだ。特に最後三行
0346デフォルトの名無しさん
2007/01/05(金) 21:53:59>>320は未着手だぞ
〆切近いから手伝ってやれ
0347デフォルトの名無しさん
2007/01/05(金) 22:09:47253-284は良く見たら回答されてるから、
今の所この2題だな
0348NP 完全って言ってる人
2007/01/05(金) 22:11:40正しい.
>経路を求めるのはFNPにすら属さない問題もありえるわけでしょ?
それはない.FNP に属すのは,FNP の定義とハミルトン閉路問題の
存在判定だけのものが NP に属する証明から明らか.
(こういう風に一般化できるので FNP と NP の混同が正当化できる)
なので,完全が重要というよりも,明らかに完全と分かるものを
わざわざ本来よりも難しいかもしれないと言うのが嫌なだけ.
>詐欺くささ
俺の文章が悪いのだけど,303 は「それほど厳密でない計算量の議論では,
判定問題じゃない問題に対しても NP といってしまうことがある.そして
それを正当化する手が少なくとも二つある」という主張なので,詐欺くさいと
言われるとちょっと心外.303 で微妙といっているのはこのあたりのこと.
まあ今改めて 292 を読むと「NP 困難は証明されている」の一言で
十分だった気はするな.信用できないと言われたので,その弁解で必死だった.
0349NP 完全って言ってる人
2007/01/05(金) 22:16:080350NP 完全って言ってる人
2007/01/05(金) 22:30:46連続書き込みで申し訳ない.ちょいと探したら NP と FNP を混同することを
明記している論文として次のものが見つかった.
http://www.cs.unipr.it/CILC04/DownloadArea/PrestwichRVW-CILC04.pdf
ここでは2ページ目脚注で
> More precisely it is in FNP-hard, since it is not a decision problem.
> In the rest of the paper we will write NP maning FNP when not
> related to decision problem.
と書かれている.俺以外の「混同する」ことについてのソースにどうぞ.
0351292の素人
2007/01/05(金) 23:11:17>それはない.FNP に属すのは,FNP の定義とハミルトン閉路問題の
>存在判定だけのものが NP に属する証明から明らか.
FNPの定義もググっても見つけられなかったし、素人には全然明らかじゃないやー
詐欺くさいって感じたのは220前後の話の流れであって、303に対してではないので悪しからず
0352NP 完全って言ってる人
2007/01/05(金) 23:27:57FNP と Complexity で Google 検索してトップに出る英語版の
Wikipedia にはちゃんと FNP の定義が書いてあるんだけどな.
インフォーマルには NP のチューリングマシンを用いた定義で,出力として
Yes/No 以外も許したもののことだと思っておけばよい.
ハミルトン閉路(判定問題)が NP に属することの証明は次のように行う:
適当に始点を選び「今いる頂点から移動できるまだ訪れていない頂点に
非決定的に移動する」という操作を繰り返す.n ステップ後に始点に
帰ってこれればハミルトン閉路が存在する.以上の手続きで,非決定的
チューリングマシンで O(n) で解けるため,この問題は NP に属する.
この証明で,移動するところで頂点の履歴を覚えておき,始点に帰ってきた
ときに覚えたものを表示すればいいだけなので FNP は自明.
0353292の素人
2007/01/06(土) 00:04:48こんな問題を考えてみた
n次元上に存在する格子状立方体、1辺上に存在する点は10(全点数は10^n)
障害物は存在しない
ハミルトン路を求める
この時、存在判定は常にyesなのでO(1)つまりPかつNP
一方、経路を求めるために352の非決定的チューリングマシンを使うとO(10^n)つまりFNPに属さない
どうだろう?
0354292の素人
2007/01/06(土) 00:07:34一辺10だと本当にyesになるか怪しいかも
一辺2にしておいてー
0355デフォルトの名無しさん
2007/01/06(土) 00:15:35頂点を指数関数で増やしてどうすんの。
計算量の基準が変わってるじゃない。
0356デフォルトの名無しさん
2007/01/06(土) 00:26:30[2] 問題文: マージソートを作成し、交換、比較回数、処理時間を表示できるようにする。
この時、入力する配列を昇順、ランダム、降順の3つのうちから指定でき、
入力するデータ数も任意で指定できるようにし、結果を昇順に整列せよ。
(整列した結果は出力しなくてもよいが、データ数が100000個を超えても正常に動くようにせよ。)
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語:C言語
[4] 期限:今週まで
[5] その他の制限:
0357デフォルトの名無しさん
2007/01/06(土) 00:30:030358デフォルトの名無しさん
2007/01/06(土) 00:35:36多分、gccです
0359NP 完全って言ってる人
2007/01/06(土) 00:37:02「どうだろう?」って,いろいろおかしい.
まず >>355 の言うとおり,入力を何にするかがおかしい.
それをハミルトン閉路問題だと考えた場合,入力のサイズは
頂点数 m = 2^n なので,何の問題も無く O(m),すなわち
多項式時間で解けている.
もし入力が n であることに固執するのであれば,それは
そもそもハミルトン閉路問題ではない.従ってそれに対する
チューリングマシンとして 352 を用いるのは間違っている.
実際その問題に対するチューリングマシンで,解を O(1) で
表示するものが次のようにして構成できる:
入力 n を受け取り,次のように表示する.
「n 桁のグレイコードの通りに進め」
0360292の素人
2007/01/06(土) 01:54:40だから>>343の時点からすでにハミルトン閉路問題の話はしていないって
で、チューリングマシンって
・>>87のように「通った順序を表示する」ってかいてあってもチューリングマシン的にはそれでOKなのか
・今回のパターンはたまたまグレイコードという既知の処理手順が符合したけど
一般的な場合でも処理手順を示せばOKなのか
ハミルトン閉路問題に対して
「深さ優先で全点を1度ずつ通り始点に戻るまで前進・後退を繰り返せ」
と表示するのと何が違うのか
0361デフォルトの名無しさん
2007/01/06(土) 02:08:350362デフォルトの名無しさん
2007/01/06(土) 02:45:30経路さえ見失わずにしっかりかんがえられたら結構スマートなのが出来ると思うが
0363NP 完全って言ってる人
2007/01/06(土) 07:26:28二つの質問は,どちらもまともな教科書には書いてある
上はコード化できるので問題ない.詳しくはハミルトン閉路問題が
NP である厳密な証明を見よ.
下はそれが解として十分かどうかによる.「グレイコード」は経路を
一意に定めるが「深さ優先で……」は訪問順に任意性があるので
経路を一意に定めない.
ハミルトン閉路(or もとの問題)の話をしていないのならスレ違い
なので,終わるか移動するかしよう.
0364デフォルトの名無しさん
2007/01/06(土) 07:50:500365デフォルトの名無しさん
2007/01/06(土) 08:43:49>>291 >>320 >>356
か
0366デフォルトの名無しさん
2007/01/06(土) 08:48:070367デフォルトの名無しさん
2007/01/06(土) 18:08:30[2] 問題文(含コード&リンク)
適当な整数値を読み込んで、下記の8個も整数の中から最も近い値を出力する
a[ ]={12,98,5,34,119,77,26,3}
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: (C)
[4] 期限: [2007年1月8日23:59まで]
配列の宿題なのですが、どうしても上手くできません。
よろしくお願いします。
0368367
2007/01/06(土) 18:13:48#include <stdio.h>
main(){
int b,x,i,answer,min;
int a[8]={12,98,5,34,119,77,26,3};
printf("数:");
scanf("%d",&x);
for(i=0; i<8; i++){
b=x-a[i];
abs(b);
if(b<min){
min=b;
answer=a[i];
}
}
printf("答え⇒%d\n",answer);
return (0);
}
0369デフォルトの名無しさん
2007/01/06(土) 18:20:330370デフォルトの名無しさん
2007/01/06(土) 18:24:58minに最大値入れなあかんね
0372デフォルトの名無しさん
2007/01/06(土) 18:38:07#define MAX 10000 /* 入力する数よりはるかに大きい数と設定 */
int a[ ]={12,98,5,34,119,77,26,3};
main(){
int p,i,j,min,dif;
min = MAX;
printf("a[ ] = {");
for(i=0;i<8;i++){
printf("%d,",a[i]);
}
printf("}\n");
printf("整数読み込み\n");
scanf("%d",&p);
for(i=0;i<8;i++){
dif = abs(p-a[i]);
if(min >= dif){
min = dif;
j = i;
}
}
printf("aにおいて一番近い要素は %d\n",a[j]);
}
作っちまったよ。
てか質問で、C++でコンピューター4台くらい使って並列にプログラミングを動かしたいんだけど、何の関数使えばいいとかさっぱりなんだわ。
とりあえず、子コンピューターは配列を引数に取って、整数を親コンピューターに返すって事をしたいんやが、誰かわかる人いますか?
お願いします。
0373デフォルトの名無しさん
2007/01/06(土) 18:43:020374デフォルトの名無しさん
2007/01/06(土) 18:56:48はいバカでした。すいません。
[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
コンピューターを複数台使い並列に処理するプログラムの概要を述べよ。
(子プロセスは引数を配列とし、返り値を整数とする。)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: bcc32
[3.3] 言語: /C++/
[4] 期限: 1月10日くらいまで
0375デフォルトの名無しさん
2007/01/06(土) 18:59:59>コンピューターを複数台
通信方法は?
0376デフォルトの名無しさん
2007/01/06(土) 19:06:230377374
2007/01/06(土) 19:14:55同じ部屋で行うみたいなので、家庭用など小規模ネットワーク(LAN)です。
IPアドレスが192.168.XXで始まって、下3桁でコンピューターを見分けます。
0378デフォルトの名無しさん
2007/01/06(土) 19:40:330380デフォルトの名無しさん
2007/01/06(土) 21:29:48普通にTCPなりなんなりで通信すりゃいいんじゃないの?
0381デフォルトの名無しさん
2007/01/06(土) 22:10:00本当に宿題?困ったことを聞く為に宿題風に装いました的な雰囲気を感じる。
0382デフォルトの名無しさん
2007/01/06(土) 22:16:210383依頼者
2007/01/06(土) 22:42:59[1]Cプログラミング
[2]複数の整数を昇順(小さい順)にソートするプログラムの作成
[3.1]OS:Windouws XP
[3.2]分かりません
[3.3]言語:C
[4]期限:1月8日まで
問題2
[1]Cプログラミング
[2]円周率を求めるプログラムを作成
[3.1]OS:Windouws XP
[3.2]分かりません
[3.3]言語:C
[4]期限:1月8日まで
初心者でも解けるような簡単なプログラムでお願いします。
0384デフォルトの名無しさん
2007/01/06(土) 22:45:58円周率は何桁まで求めるの?
0385・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/06(土) 22:49:220386デフォルトの名無しさん
2007/01/06(土) 22:49:27#include<stdio.h>
#include<math.h>
int main(void){printf("%f\n",atan(1.0)*4.0);return 0;}
完璧!
0387374
2007/01/06(土) 22:59:18スレの主旨に沿う内容じゃなかったみたいだな。本当にすまぬ。
0388依頼者
2007/01/06(土) 23:23:490389デフォルトの名無しさん
2007/01/06(土) 23:30:550390デフォルトの名無しさん
2007/01/06(土) 23:37:06#include <stdio.h>
#include <math.h>
int main(void)
{
printf("%3.2f", 4.0 * arctan(1.0));
return 0;
}
0391デフォルトの名無しさん
2007/01/06(土) 23:43:390392・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/06(土) 23:45:220393依頼者
2007/01/06(土) 23:48:481.rand()関数を用いて0〜1のx座標を作成する。
2.原点との距離を求め、座標が半径1の円内かどうか調べ、円内である場合、
円外である場合をそれぞれカウントする。
3.以上を多数繰り返し、半径1の円内である確率がπ/4であることからπを
求める
入力に関して
キーボードから、計算に用いる座標数(rand()関数の実行回数ではない)を入力す
る。上限をint型の最大値(実際には最大値を入れると膨大な時間がかかるの
でテストはmaxでも一分で終了する程度でよい)
出力に関して
結果(求めた円周率)のみを浮動小数点(double 型を%lf)で出力(+改行)
です。よろしくお願いします。
0394デフォルトの名無しさん
2007/01/07(日) 00:06:400395デフォルトの名無しさん
2007/01/07(日) 00:09:52モンテカルロなら先に言わんと
0396383
2007/01/07(日) 00:11:51#include <stdlib.h>
int main(void)
{
int counter = 0;
int points;
int i;
double pi;
scanf("%d", &points);
for(i=0; i<points; i++) {
double x = (double)rand() / RAND_MAX;
double y = (double)rand() / RAND_MAX;
if( x * x + y * y <= 1.0 ) counter++;
}
pi = (double)counter / points;
printf("pi = %lf\n", pi);
return 0;
}
テストしてないから知らんがたぶんこんな感じ。
0398396
2007/01/07(日) 00:19:200399デフォルトの名無しさん
2007/01/07(日) 01:10:31[2] 問題文(含コード&リンク):
以下の関数の計算時間をO記法で求めよ。
int comb(int n,int r)
{
if(n==r || r==0) return 1;
else comb(n-1,r) + comb(n-1,r-1);
}
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc バージョン分かりません。
[3.3] 言語: C
[4] 期限: 一月十日まで
[5] その他の制限: 基本的な文法は完全に理解しています。
0400399
2007/01/07(日) 01:12:16あと、n^2とかでは収まらず、2^nとかそういう値になりそうなのですが・・・。
0401依頼者
2007/01/07(日) 01:29:14シンボルが未定義ですってでます。
0402依頼者
2007/01/07(日) 01:31:12シンボルが未定義です. 'RAND_MAXとでます。解決策をお願いします。
0403・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/07(日) 01:32:030404デフォルトの名無しさん
2007/01/07(日) 01:32:560405・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/07(日) 01:38:050406デフォルトの名無しさん
2007/01/07(日) 01:59:34#include <stdlib.h>
↑この行を消したら同じエラーになったので、この行を抜かしていないか、
あるいは一文字でも書き間違えてないかもう一度よく確かめてください。
0407デフォルトの名無しさん
2007/01/07(日) 02:47:43[2] 問題文(含コード&リンク):
抽象データ型のリストを操作する関数を使って素数を求める問題です。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3323.txt
倍数をうまく削除する方法が思いつきません。
よろしくお願いします。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語: Cのみ
[4] 期限: 2006年01月08日16:00まで
[5] その他の制限:ポインタ習いたてです。。。
0408407
2007/01/07(日) 02:49:27○2007年
です。スミマセン・・・
0409デフォルトの名無しさん
2007/01/07(日) 03:13:08とりあえず、comb(n,r)=n!/(r!*(n-r!)) ってのは高校までに習ったよな?
それで返す定数が 1 だから最終的には comb(n,r) 回分の関数が 1 を返すんだ。
後はトーナメント式に値が求まるわけだから関数全体では 2n!/(r!(n-r!)) 回関数が呼ばれるんだ。
ということは O(n!/(r!(n-r!))) = O(n^n / (r^r * (n-r)^(n-r))) だ。
0410253
2007/01/07(日) 04:00:55遅くなりましたが、どうもありがとうございました!
こんなに長い問題も丁寧に解いていただき非常に助かりました!
次からはココに頼らず自力で解けるように頑張りますm(__)m
0411デフォルトの名無しさん
2007/01/07(日) 11:25:07どうせ〆切前にしか仕事しないし。
0412デフォルトの名無しさん
2007/01/07(日) 12:08:310413以前sleepyとか言う偽者が出てえらい迷惑した277
2007/01/07(日) 12:57:320414デフォルトの名無しさん
2007/01/07(日) 13:00:130415デフォルトの名無しさん
2007/01/07(日) 13:01:390417デフォルトの名無しさん
2007/01/07(日) 13:45:17昔もなかったけど。
0418依頼者
2007/01/07(日) 14:21:55入力に関して
キーボードからまず、入力する整数の個数を入力(最大で100とする)し、次
に指定した数の整数をスペース1つ開けて1行で入力するものとする。この時、
入力を促す文字をいっさい表示しないこと。
出力に関して
ソートした整数をスペース1つのみをあけて1行で出力する(+改行)。指定した数
値・改行以外の出力は入力時も含め、提出版では一切行なわないこと。
これでお願いします。
0419デフォルトの名無しさん
2007/01/07(日) 14:27:500420デフォルトの名無しさん
2007/01/07(日) 14:57:20#include <stdio.h>
#define MAX 100
int main(void){
int i, j, temp, n, a[MAX];
scanf("%d", &n);
if(n>MAX) return 1;
for(i=0; i<n; i++) scanf("%d", &a[i]);
for(i=0; i<n-1; i++) {
for(j=n-1;j>i; j--) {
if(a[j-1]>a[j]) {
temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;}}}
for(i=0; i<n; i++) printf("%d ", a[i]);
putchar('\n');
return 0;}
0421デフォルトの名無しさん
2007/01/07(日) 15:23:45[2] 問題文:
ファイルを読み込み、英字のみか、先頭が英字で二文字目
以降が英字または数字である文字列を抽出し、文字列の長
さが長い順に並べ、その文字列の頻度と共に表示するプロ
グラムを作成したい。但し、文字列の長さが同じものに関
しての順序は任意で良い。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:mingw32
[3.3] 言語: /C++/
[4] 期限: 1月10日まで
0422デフォルトの名無しさん
2007/01/07(日) 15:26:31[2] 問題文(含コード&リンク):
n次のヒルベルト曲線を描く関数を再帰を使わずに定義せよ。
ただし、90度右折をR 90度左折をL 向いている方向に線を描くをF
として表せ(必ずしも、このような記号を使う必要はない)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月9日まで
[5] その他の制限: 特にありません。
つまりは、再帰つぶしってことなんですが
どうすればいいでしょうか。
どなたかお願いします
0423デフォルトの名無しさん
2007/01/07(日) 15:29:02その文面だけだと、よくわからないので
例などがあるとわかりよいかと思います。
0424デフォルトの名無しさん
2007/01/07(日) 15:35:26[2] 問題文(含コード&リンク):
C言語のソースコードを与える。
このソースコードに含まれるすべての宣言
(当然、関数、構造体、共用体も含まれる)
を抽出し、意味を表示するようなプログラムを作れ。
意味とは、その変数名を抽出した上で
どのようなものかの説明を表示する。
例
入力
int main(void){
int dim[10];
return 0;
}
出力
mainは関数で、引数はなし。戻り値はint型。
関数mainのローカル変数dimはint型の配列で大きさは10。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1/15まで
[5] その他の制限: なし。
0425デフォルトの名無しさん
2007/01/07(日) 15:37:46入力
#include <stdio.h>
#include <ctype.h>
int main(void){
int c0;
char c1;
c1='\0';
b='\0';
while((c0=getchar())!=EOF){
if((!isalnum(c1))&&isalnum(c0)){
printf("\n");
}
if(isalnum(c0)){
printf("%c",c0);
}
c1=c0;
}
return 0;
}
0426デフォルトの名無しさん
2007/01/07(日) 15:39:03getchar:1
include:2
isalnum:3
printf:2
return:1
stdio:1
while:1
ctype:1
char:1
main:1
void:1
EOF:1
int:2
if:2
c1:4
c0:6
h:2
n:1
c:1
0427デフォルトの名無しさん
2007/01/07(日) 15:51:38[2] 問題文(含コード&リンク):
timedate_sample.c を基に カレンダーを出力するプログラムの作成。
cal に似たものを作成する。
現在時間の表示、指定年月日のカレンダー表示ができると、なお良い。
例)
./a.out
December 2006
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: 1月10日
[5] その他の制限:特になし
0428デフォルトの名無しさん
2007/01/07(日) 16:01:34ttp://www.geocities.jp/c_cpp_cs/code/code.htmlで解凍
jVPbbqswEHyPlH/YtBKy1RzUvoYkv1IZ44BVsBE2SFXVf+/6Ugco6ikv2LM7s971+FEq3o6VgLPUxg6
Cddf97jGBCElVL6BJcKuHBcTaWg/SNksu5/a9Fwjtd6NBFVCsE6ZnXICxVeFwlB+5Ba5HZcWw333sd4
BfqOrzi4BIhVnKxl3MJxQ+HAoXeC7gcxnjWhkblTIwLtXpYa4p/ko6+rpqi6sSt9S6Bd2LgeFYLpeoE
RUzYI49CDsOKopcgOW+tU2Fw/8VDguFTxyKV+Bd/4N6hBVS0jTlKEmCVt4KVdsGZ3qFcolQrICFJi0r
HIgRg/05qOCKc6xzzWC6F1rFTidpQ68gcZI3qSoy5aWopSIUlXKBAD2mSzH+AN4FNyDSDTDm0AD7Gnk
/mua1ZPyNJOIRXhJXtEbc05+e5L9rMBR25m65Y6782oKm2GwBprkvvZXd7oYtEY49canyWlhCi7DUuv
LreQhv9X4e35lhbd8wwpehjdMkeNY04Q0bKKerlN+PBFkGrqwaOyy7PuBS6Y8FHb0fbbiIdTC6x/llH
orvIP6MxpRNQ3T9N8u39buvkkKB20PyTOHuftYasi2cz4B+8I8Llw+nh4i4t44rJLbF4tE8B+N8AQ==
0429デフォルトの名無しさん
2007/01/07(日) 16:14:46#include <stdio.h>
#include <string.h>
#define N 1000000
char *dic[] = { "LbFRaFaRFbL", "RaFLbFbLFaR", "F", "L", "R" };
char ch[] = { 'a', 'b', 'F', 'L', 'R' };
char *s, *t, *u, buf[2][N];
int main() {
int i, j, k;
int n = 5;
s = buf[0]; t = buf[1];
strcpy(s, "a");
for (k = 0; k < n; ++k) {
strcpy(t, "");
for (i = 0; s[i] != '\0'; ++i)
for (j = 0; j < 5; ++j)
if (s[i] == ch[j]) strcat(t, dic[j]);
u = s; s = t; t = u;
}
for (i = 0; s[i] != '\0'; ++i)
if (s[i] != 'a' && s[i] != 'b')
putchar(s[i]);
}
0430デフォルトの名無しさん
2007/01/07(日) 16:28:27timedate_sample.cってどこよ
0431デフォルトの名無しさん
2007/01/07(日) 16:31:51vector<counter>::find で insert するのは O(n^2) かかって非効率。
hVLLboQwDLwj8Q/uVloFQVHPC8uPVFUVQgCrkKAkILXV/nsdYB9waC+JPc7MOImfUYlurCTkqK0zkvd
FGDzfQIJQNRtoksJps4F412iDrt1yhXBfg9xAPR8oD4PRkioo3ks7cCHBuirzuCdUsoaBo1m9E0DlCh
B6VE4aOlVq3YHoB2BCK+uuFTjyBHZIGcFPGAAY6UajgKc1GutSi9+SRVBAuQFI+xIG5AY9R8VW7tIF2
Mwn1P+2rQrFXPCsJaq1oc7gDAJV2khHukuodTXHj6XVg/g1MLS8G1rOxB3e2c9AOoy2/Si5+GRMtNxE
IroV/zaH4xG8iRp7Mtm3ctX4x8IThtHNxQeYHuLNvsfxClz8Ni/LuOTrnxQwMTqalrLxT5x4XioVNbd
IWW0cm+7laSkm/sOj+/vuRE8npI0TBEh3uvEzSp/OV5EM4hjXaxLTQZ4DvhTzCPj4cDqskJU0SJVPiN
hlDyP06ofkFw==
0432デフォルトの名無しさん
2007/01/07(日) 16:49:08[2] 問題文(含コード&リンク):
http://www.vipper.net/vip156634.jpg
(図があるため画像ファイルで問題文を示します)
[3] 環境
[3.1] OS:Windows
[3.2] bcc32
[3.3] 言語:C
[4] 期限:明後日まで
[5] その他の制限:どこがどう動作しているのかコメントで説明を付けてもらえると嬉しいです
0433デフォルトの名無しさん
2007/01/07(日) 16:52:32入力データ打ち込んでくれないかな?
0434デフォルトの名無しさん
2007/01/07(日) 16:58:42�@津山 �A岡山 �B鳥取 �C倉敷 �D新見
�E米子 �F福山 �G松江 �H三原 �I三次
�J呉 �K広島 �L江津 �M小郡 �N益田 �O下関
です。
0435デフォルトの名無しさん
2007/01/07(日) 17:01:10いや、辺(始点・終点・距離)のリストのほう。
0436デフォルトの名無しさん
2007/01/07(日) 17:04:18目的地(1〜16):11
出力例: 1:津山 から 11:呉へ 距離 220 km
道順:1:津山 => 2:岡山 => 4:倉敷 => 7:福山 => 9:三原 => 11:呉
0437デフォルトの名無しさん
2007/01/07(日) 17:06:04仕方ないからオレ様流のを作ってくるよ
スタックマシンにするだろ?
0438デフォルトの名無しさん
2007/01/07(日) 17:08:30ネタですか?
1 津山 | 0 | 59 | 71 | ...
2 岡山 | 59 | 0 | 30 | ...
...
という表をグラフから読み取って全部打ち込んでくれと言っている。
面倒なら始点と終点と距離の三つ組みのリスト
1 2 59
1 3 71
1 5 72
...
という形式でもいいが。
0439437
2007/01/07(日) 17:10:440440デフォルトの名無しさん
2007/01/07(日) 17:13:26ネタですか?
その表を作るプログラムを書けって話だろ。
0441デフォルトの名無しさん
2007/01/07(日) 17:16:12違う。求められているプログラムはこの表の閉包を計算するプログラム。
0442デフォルトの名無しさん
2007/01/07(日) 17:19:48ただ、手で打ち込むのが面倒だから辺のリストが欲しいのは本当のところ。
0443デフォルトの名無しさん
2007/01/07(日) 17:20:11図で言うと、例えばノード15は13,14,16と隣接してるから、
13〜15が69
14〜15が94
16〜15が163
ってな、隣接ノード間の距離を示す情報は欲しいってこったべ?
問題は、任意の二点間の最短距離を求めろってこったから、
隣接ノードには限らないわけだべ?
0444432
2007/01/07(日) 17:23:4116×15=240通りを人間の頭で考えないといけないということですか?
その部分をプログラムで計算させるんじゃないかと思うのですが・・・
0445デフォルトの名無しさん
2007/01/07(日) 17:26:40グラフに描かれてる部分だけでいいよ
0446デフォルトの名無しさん
2007/01/07(日) 17:26:47>という表をグラフから読み取って全部打ち込んでくれと言っている
全部って言っちゃってるからなぁ。
0447デフォルトの名無しさん
2007/01/07(日) 17:28:18んだから、全都市同士の組み合わせをあらわす二次元行列全部を
あらかじめ埋めろってことではないべ。
地図に示されている、隣接してる都市同士の距離だけを埋めておいて、
後は例えば-1でもつっこんでおく。
そこをプログラムに計算させるってこったべ?
0448デフォルトの名無しさん
2007/01/07(日) 17:30:460449432
2007/01/07(日) 17:32:040450依頼者
2007/01/07(日) 17:39:260451デフォルトの名無しさん
2007/01/07(日) 17:43:570452デフォルトの名無しさん
2007/01/07(日) 17:56:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3325.c
末尾についているデータを data.in という名前で保存して同じディレクトリ
に保存してから、実行すること。データはチェックしてないので間違ってるかもしれん。
実行するとまず表を表示する。次に、始点終点の番号を受け取るとその間の
経路を表示する。出力は手を抜いたので気に入らないのなら適当に直してくれ。
0453デフォルトの名無しさん
2007/01/07(日) 18:02:23[2] 問題文(含コード&リンク):
スペースで区切った2つの実数を1つの行として、3行分のデータを読み込みます。
1つの行にある2つの実数は、2次元座標上の点P(x,y)の座標を示すと考えます。例えば
1.0 1.0
3.0 -1.0
2.0 -2.0
この3つの点が三角形の頂点だと考えて、ヘロンの公式を用いて面積を求めよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: BorlandもしくはVisualC++
[3.3] 言語: C++
[4] 期限: 2007年1月8日19:00まで
[5] その他の制限: ユーザ定義関数を使ってもらえるとありがたいです。
それではお願いします。
0454物乞い
2007/01/07(日) 18:56:43メールを読み込んで
添付ファイルを保存したい。
欲しいもの
Cソース
ギブミーチョコレート!!!
0455デフォルトの名無しさん
2007/01/07(日) 18:58:300456デフォルトの名無しさん
2007/01/07(日) 19:12:52[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3326.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: C
[4] 期限: 1月19日
[5] その他の制限: 課題8-1をやっていただきたいです。
0457453
2007/01/07(日) 20:31:10もしや私に言ってます?
0458432
2007/01/07(日) 20:32:42どうもありがとうございます!
次にこの�@�Aをお願いします。
[1] 授業単元:情報工学実験
[2] 問題文(含コード&リンク):
�@ある団体でロードレースを行なったところ次の結果になりました。下表を計算して表示するプログラムを作りなさい。
──────┬──────┬──────┬─────┬───
ゼッケンNo │スタートタイム.│ゴールタイム │ラップタイム│順位
──────┼──────┼──────┼─────┼───
1 │9h30m01s │11h12m55s │ │
2 │9h30m29s │11h13m43s │ │
3 │9h31m03s │11h13m49s │ │
4 │9h31m30s │11h14m05s │ │
5 │9h32m05s │11h14m23s │ │
6 │9h32m33s │11h14m48s │ │
7 │9h33m01s │11h15m20s │ │
8 │9h33m31s │11h15m54s │ │
9 │9h34m00s │11h16m11s │ │
�A上の課題のデータを、構造体で定義して処理するプログラムを作りなさい。
[3] 環境
[3.1] OS:Windows
[3.2] bcc32
[3.3] 言語:C
[4] 期限:明後日まで
[5] その他の制限:どこがどう動作しているのかコメントで説明を付けてもらえると嬉しいです
0459デフォルトの名無しさん
2007/01/07(日) 20:39:29どうもありがとうございます!
0460デフォルトの名無しさん
2007/01/07(日) 20:42:33上手く行きました○.○
0461デフォルトの名無しさん
2007/01/07(日) 20:44:520462デフォルトの名無しさん
2007/01/07(日) 21:18:42[2] 問題文(含コード&リンク):
http://vipper.jpn.org/www/upload/src/VIPphoto0113.zip
↑のzipに格納してある2つのカラー画像image02.ppm、image06.ppmについて
image02.ppmの左上角を(X,Y)=(0,0)として、(100,150)の座標にimage06.ppmの
左上角が位置するように2つの画像を合成したppmファイルを出力する。
ただしimage06.ppmの白い背景はimage02.ppmにおきかえ、
文字だけを取り出してimage02.ppmが背景となるように貼り付けることとする。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc バージョン分かりません
[3.3] 言語: C
[4] 期限: 1月9日7:00まで
画像処理の課題です。よろしくお願いします。
0463デフォルトの名無しさん
2007/01/07(日) 21:43:25class triangle{
struct pos_ { double x,y; } *tbl;
public:
triangle(){
tbl = new struct pos_ [3];
tbl[0].x = 1.0; tbl[0].y = 1.0;
tbl[1].x = 3.0; tbl[1].y = -1.0;
tbl[2].x = 2.0; tbl[2].y = -2.0;
}
~triangle() { delete [] tbl; }
double calcArea(){
double s, a, b, c;
a = calcDist(tbl[0], tbl[1]);
b = calcDist(tbl[1], tbl[2]);
c = calcDist(tbl[2], tbl[0]);
s = (a + b + c) / 2.0;
return sqrt(s * (s - a) * (s - b) * (s - c));
}
private:
double calcDist(struct pos_ a, struct pos_ b){
double dx, dy;
dx = a.x - b.x;
dy = a.y - b.y;
return sqrt(dx * dx + dy * dy);
}
};
...C++はよくわからんのだ(;´Д`)
0464デフォルトの名無しさん
2007/01/07(日) 21:51:40[2] 問題文(含コード&リンク):構造体を用いたトランプのゲームを作る(何でもいい)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年1月8日正午まで
[5] その他の制限:ビット演算まで習いました
どうかよろしくお願いします
0465デフォルトの名無しさん
2007/01/07(日) 21:54:15image06がグラデーション入りの微妙に白じゃないデータなので合成のしかたは乗算にした。
多分だいたい題意は満たす。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*getline(char buf[],int size,FILE*fp){char*p;while( (p=fgets(buf,size,fp)) != NULL && *p=='#'){}return p;}
typedef struct{int width;int height;unsigned char*vram;}Image;
Image load(char*filename){
Image p;FILE*fp = fopen(filename,"rb");char buf[512];getline(buf,sizeof(buf),fp);
getline(buf,sizeof(buf),fp);sscanf(buf,"%d%d",&p.width,&p.height);
getline(buf,sizeof(buf),fp);fread(p.vram = malloc(p.width*p.height*3),p.width*3,p.height,fp);
fclose(fp);return p;}
void save(char*filename,Image img){
FILE*fp=fopen(filename,"wb");fprintf(fp,"P6\n%d %d\n%d\n",img.width,img.height,255);
fwrite(img.vram,img.width*3,img.height,fp);fclose(fp);}
int main(){
Image i02 = load("image02.ppm"),i06 = load("image06.ppm");
int y,x;
for(y=0;y<i06.height;++y)for(x=0;x<i06.width*3;++x)i02.vram[(y+150)*i02.width*3 + x+100*3] =
i02.vram[(y+150)*i02.width*3 + x+100*3] * i06.vram[y*i06.width*3 + x] / 255;
save("out.ppm",i02);return 0;}
0467デフォルトの名無しさん
2007/01/07(日) 22:05:28ゲームのアイデアくらいはあなたが出そう
0468453
2007/01/07(日) 22:05:55ありがとうございます
ですがCだとまずいので、それを自分でC++に直そうと考えています。
それでだいたいの計算方法はわかったのですが、
「a = calcDist(tbl[0], tbl[1]); 」
の意味がわからないので、それを教えてください。
0469デフォルトの名無しさん
2007/01/07(日) 22:07:520470デフォルトの名無しさん
2007/01/07(日) 22:08:49>>463は普通にC++ですよ!
Cっぽいところとかstatic関数にしたほうがいんじゃねとか微妙に突っ込みどころがあるけど。
まぁ課題として出して問題ないと思うよ。
0471デフォルトの名無しさん
2007/01/07(日) 22:10:24[2] 問題文(含コード&リンク):
数当てゲーム
実行すると、コンピュータが1つ数字を用意しま
す。数字は0から100までです。
キーボードから数字を入力して、当ててください。
ただしチャンスは10回までです。
入力して外れた場合は、画面にヒントが出ます。
(大きい・小さい・惜しいなど)
10回挑戦しても外れた場合は、ゲームオーバー。
正解が画面に出力されて終了します。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: C
[4] 期限: 1月8日 12:00
よろしくお願いします。
0472デフォルトの名無しさん
2007/01/07(日) 22:16:00[2] 問題文(含コード&リンク):
二分探索木のノードの挿入と木の表示を行う関数を作成し、
以下の処理を行いなさい。
12を追加
14を追加
20を追加
18を追加
木の表示
5を追加
3を追加
7を追加
13を追加
木の表示
1を追加
4を追加
6を追加
木の表示
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: C
[4] 期限: 1月8日 12:00
よろしくお願いします。
0473453
2007/01/07(日) 22:16:04えっ、そうなんですか?そのままコンパイルしたら、「宣言が違う」と言われたので、てっきりC言語で書かれたのだと。
早とちりすいませんでした。
あらためて463さん、ありがとうございます。
0474デフォルトの名無しさん
2007/01/07(日) 22:16:44ってどんなヒントだよw
0475デフォルトの名無しさん
2007/01/07(日) 22:19:06>463 は
>スペースで区切った2つの実数を1つの行として、3行分のデータを読み込みます。
をまるっきり無視しとるぞい
0476デフォルトの名無しさん
2007/01/07(日) 22:19:30惜しいのついでに大きさも出してるけど嫌なら適当に直して。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int ans,n,i;
srand(time(0));
ans = rand()%100;
for(i=0;i<10;++i){
scanf("%d",&n);
if( n == ans){
puts("正解!!");
return 0;
}
if(abs(n-ans)<10)printf("惜しい");
puts(n>ans?"大きい":"小さい");
}
puts("はい残念");
return 0;
}
0477デフォルトの名無しさん
2007/01/07(日) 22:22:43ttp://www.geocities.jp/c_cpp_cs/code/code.htmlで解凍
bVHtaoMwFP0v+A4HCsOstuvan7q+SJERY7oFNNokFqX03Xf93JQFEm7uPffknNyN0iKvM4lYldYZyYu
z723mpCi4+6ZMbZX+guaFtBUXEtZlke/5HrXUwqEqlXZ4+B5oZWWd5hJNiDYaMn05YHigwQda2ocIT9
979hwjPlPWcS3kZyBKbUfOF/AQi3vKVu9kHSffN9gh3TfRstb2tbavTWqMdLXRsDfjAmp+7Ri2HZSil
hHoOWvi9CFLOdVKzm11N2t5nBT8WqP2G1tqTBcA4jMrgFgATIhqBbAECDh5SGkLhjcc/7FqyR8dO3A2
RekcCTYa7+ZYcKWD2ccw2/vllIyk19Ig6HJqGKRCjFOE7VaxAdAtoTTOZ2pTCY1miqYRqCsCQvzFl7V
DHA8/fr8ckpA63vvzmLCuInWWL20dBsk/
0478453
2007/01/07(日) 22:25:04あっ、ホントだ……ご指摘ありがとうございます。
「エラー E2141 12_02he.c 3: 宣言の構文エラー」
というのが出る原因も、誰か教えていただけるとありがたいのですが。
0479デフォルトの名無しさん
2007/01/07(日) 22:26:22ありがとうございました。
0480デフォルトの名無しさん
2007/01/07(日) 22:28:45がエラーのげいいん(なぜか変換できない)ぢゃねの?
0482・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/07(日) 22:31:10protected:
double m_x, m_y;
public
Point2D(double x = 0.0, double y = 0.0) : m_x(x) , m_y(y) {}
friend istream& operator>>(istream& ist, Point2D& p) { ist >> p.m_x >> p.m_y ; }
};
続きメンドイ
0483453
2007/01/07(日) 22:36:53致命的エラー F1003 C:\borland\bcc55\Include\stdcomp.h 5: error 指令: Must use C++ for STDCOMP.H
と出てしまいます。
>>480
ご指摘どうり、数字がいけないのかと思い、「heron」という名前にしてやってみました。
エラー E2141 heron.c 1: 宣言の構文エラー
……orz
0484デフォルトの名無しさん
2007/01/07(日) 22:39:53^^^^^^^^↑これ
0485デフォルトの名無しさん
2007/01/07(日) 22:41:16^^^^^^^^^^↑これ
0486デフォルトの名無しさん
2007/01/07(日) 22:41:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3327.c
表示のさせ方は適当。
0487デフォルトの名無しさん
2007/01/07(日) 22:42:13カジノで行われるブラックジャックでは、プレイヤーはプレイヤー同士ではなくディーラー(親、胴元、ハウス)
との間で1対1の勝負を行う。プレイヤーが何人かいる場合には、ディーラーは複数のプレイヤーと同時に勝負を
することになる。各プレイヤーの目標は、21を超えないように手持ちのカードのポイントの合計を21に近づけ、
その数字がディーラーより21に近づくことである。手の中のカードのポイントは、カード2〜10ではその数字通りの値であり、
また、絵札であるK(キング)、Q(クイーン)、J(ジャック)は10と数える。A(エース)のみは、1あるいは11の
どちらかとして数えることができ、どちらの数をとるかは状況に応じプレイヤーが選択することができる。
0488453
2007/01/07(日) 22:45:50今まで「.c」でしかプログラムを書いたことがないのですが、
「.cpp」と「.h」と「.c」って、まったくの別物なのですか?
0489デフォルトの名無しさん
2007/01/07(日) 22:50:03それらのどこが同じに見えるんだ
0490・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/07(日) 22:50:130491デフォルトの名無しさん
2007/01/07(日) 22:50:54>今まで「.c」でしかプログラムを書いたことがないのですが、
0492デフォルトの名無しさん
2007/01/07(日) 22:52:37コンパイラの動作が違うだろ
コンパイラへのソースファイルの与え方によるが
0493デフォルトの名無しさん
2007/01/07(日) 22:53:270494453
2007/01/07(日) 22:56:35あ〜、なるほど、普段VisualC++を使ってるから、完全にc++を使ってるもんだと……
「.cpp」にして動作しました。
ホント、迷惑かけてすみませんでした。
0495デフォルトの名無しさん
2007/01/07(日) 22:56:36printfでアドレスを表示するときに%xは使いません
0496・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/07(日) 22:58:12まあ宗教論でしかないが
0497デフォルトの名無しさん
2007/01/07(日) 22:58:180498デフォルトの名無しさん
2007/01/07(日) 23:01:26違いは
%p
&i=0xbffff964
&j=0xbffff960
&g=0x80a3504
&h=0x80a3508
%x
&i=bfffdc64
&j=bfffdc60
&g=80a3504
&h=80a3508
%xだと16進数を示す0xが表示されないんですね。
今気づいたけど、グローバル変数はアドレス変わらないのに、
ローカル変数はアドレス変わるんですね…
0499デフォルトの名無しさん
2007/01/07(日) 23:02:54宿題で無いならすれ違い。次からは正しいスレで聞くこと。
%p は引数がその環境でのアドレスとして解釈できる場合、それを
その環境におけるアドレスの形式で表示する。
たとえばアドレスが文字で指定されるような変態環境も仕様準拠だが、
この場合 %p は %s のような振る舞いをするはず。
0500デフォルトの名無しさん
2007/01/07(日) 23:03:46○文字列
0501デフォルトの名無しさん
2007/01/07(日) 23:08:05%pが16進数になるのであって、%pそのものが16進数の意味を含んでいる分けでは無いという感じですか。
ありがとうございましたm(__)m
0502デフォルトの名無しさん
2007/01/07(日) 23:16:23/ヽ 〈/\ お別れの時にはお土産を持たせてね!
/| ̄ ̄ ̄|.\/
| .モツ煮..|/
 ̄ ̄ ̄
現在の所持品:たばこ・ライター・コーヒー・PlayStation3(60GB)・枕・PlayStation3(60GB)
聖教新聞 ・PlayStation3(60GB)・外付けRIGEL340MHDD・PlayStation3(60GB)・寄生虫キムチ
虫食い付きウールセーター・PlayStation3(60GB)・PlayStation3(60GB)・クターの生首・PlayStation3(60GB)
LANケーブル・PlayStation3(60GB)・リラックマ・マリモ・六法全書・単三電池
ファブリーズ・PlayStation3(60GB)・水・PlayStation3(60GB)・クタウイルス
寄生虫入りキムチ ・ワセリン湿布・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
あんぱん ・エレメント・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
びすけっと ・タカヤ3巻・ネルハード ・バスタードソード・PlayStation3(60GB)・ふくにゅうの巻物・PlayStation3(60GB)
ラストチャンス ・まじかる★ステッキ ・PlayStation3(60GB) ・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)・PlayStation3(60GB)
【BOOKOFFで入手した新・ゴーマニズム宣言1〜15巻】
0503 ◆g/ZMVdytmo
2007/01/07(日) 23:58:30[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3329.txt
[3] 環境
[3.1] OS:XP Pro
[3.2] コンパイラ名とバージョン:ボーランドのやつだと思います
[3.3] 言語: C言語
[4] 期限:2007年 1月8日 15:00まで
[5] その他の制限:型はint型とchar型、標準ライブラリは<stdio.h>
命令はscanf,printf,while,for,do-while,if,return,breakしか習ってません。
0504 ◆g/ZMVdytmo
2007/01/08(月) 00:02:430505デフォルトの名無しさん
2007/01/08(月) 00:13:17おまえPlayStation3(60GB)持ちすぎだろ。
俺に一個よこせ。
0506デフォルトの名無しさん
2007/01/08(月) 00:27:54どなたかプログラムの作成依頼受けてもらえませんか?
ソートなのでそんなに難しくないのですが、
期限以内に自力で作ることができそうにありません・・・
どなたか力を貸してください。お願いします
0507デフォルトの名無しさん
2007/01/08(月) 00:30:410508デフォルトの名無しさん
2007/01/08(月) 00:40:06C言語です。
スレは監視されていて使えないのですが
お願いしていいですか?
0509デフォルトの名無しさん
2007/01/08(月) 00:44:050510デフォルトの名無しさん
2007/01/08(月) 00:49:430511デフォルトの名無しさん
2007/01/08(月) 00:52:392日以内に完成必須で
報酬は3万で引き受けてくれる人お願いします
スレ違いだし、これを見て不快になる人もいるかと思いますがお願いします:;
メッセアド[email protected]
0512デフォルトの名無しさん
2007/01/08(月) 00:54:48では、次の課題どうぞー
0513デフォルトの名無しさん
2007/01/08(月) 00:55:060514デフォルトの名無しさん
2007/01/08(月) 00:58:22卒業かかってるので必死なのです・・・
0515デフォルトの名無しさん
2007/01/08(月) 01:01:310516デフォルトの名無しさん
2007/01/08(月) 01:03:43( ・ω・) いやどす
ハ∨/^ヽ
ノ::[三ノ :.'、
i)、_;|*く; ノ
|!: ::.".T~
ハ、___|
"""~""""""~"""~"""~"
0517・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/08(月) 01:04:300518デフォルトの名無しさん
2007/01/08(月) 01:04:410519デフォルトの名無しさん
2007/01/08(月) 01:05:08スレ違い失礼しました
C言語まじめに勉強してなかったので卒論のプログラムができなくて
期限が3日しかなかったので・・・
お金は気持ちということです
0520・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/08(月) 01:06:460521デフォルトの名無しさん
2007/01/08(月) 01:07:02どう考えても黒だろ…
>>503
fopen習ってないのにファイルから読み込めとか
どんな鬼課題だよ。
0522デフォルトの名無しさん
2007/01/08(月) 01:08:40リダイレクトって書いてるあるよん
0523デフォルトの名無しさん
2007/01/08(月) 01:09:06ソートアルゴリズムは決まっていて実装するだけだろうけど、ややこしそうだ
0524デフォルトの名無しさん
2007/01/08(月) 01:17:100525デフォルトの名無しさん
2007/01/08(月) 01:20:01あ、見落としてた。
でも何でリダイレクトなんだろうか…
余計にソースがゴチャると思うんだが。
getsもgetcも使えなくてscanf縛りってのも疑問だ。
0526デフォルトの名無しさん
2007/01/08(月) 01:32:49---------------------------------------------
1/08 .......... >>320 >>407 >>464
1/09 .......... >>458
1/15 .......... >>424 >>427
1/19 .......... >>456
0527デフォルトの名無しさん
2007/01/08(月) 01:45:37作ってみようと思ったけど縛りがキツすぎてわけわかんね(;´Д`)
一次元配列で集計するってのは構造体の配列じゃ駄目なのか?(そもそも構造体習ってるか?)
「どの位置に文字xと同じ既出文字種があるか」って文体から、集計する配列には
ひとつの要素に「既出文字」と「その文字の出現頻度」の二つの情報が必要だと解釈してるんだが。
普通構造体無しでこういう集計するならintの配列を文字の種類分確保して(この場合ならASCII分だから0x80)
文字そのものをインデックスとして扱えるようにするんだが、これだと要件のひとつである
「並べ替え」が実行できない(そもそも並べ替えの必要が無くなる)+search関数の必要性も無くなる。
fopenじゃなくてリダイレクトで読めっていう縛りも相まってわけわかんなくなってきた。
0528デフォルトの名無しさん
2007/01/08(月) 01:48:27うそをつくなよw
標準入力が"ファイルから"になるからすっきりするだろがヴォk
0529デフォルトの名無しさん
2007/01/08(月) 01:49:350530デフォルトの名無しさん
2007/01/08(月) 02:02:28少なくとも「ファイルをオープンして云々」、はあるとナイトでコードが変わるよ
0531デフォルトの名無しさん
2007/01/08(月) 02:03:57友達いないのか?
0532デフォルトの名無しさん
2007/01/08(月) 02:16:37[2] 問題文(含コード&リンク):手元にある複数の楽曲ファイルを組み合わせて、手持ちの記録媒体
(CD等)の空きが最も少なくなるようなコピーのしかたを決定する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: Cのみ
[4] 期限: 1月9日まで
[5] その他の制限:なるべくスマートなアルゴリズムを書けとの事です
考え方が複雑すぎてうまく出来ないのでお願いします。
0533デフォルトの名無しさん
2007/01/08(月) 02:21:51たぶんナップサック問題
0534デフォルトの名無しさん
2007/01/08(月) 02:45:45要件色々満たしてないけど一応置いとく。一応の縛りには対応した。
可読性無さ杉?三項演算子使うな?(´・ω・`)もう知らんがな
#include <stdio.h>
int frq_list[0x80];
int search(char x)
{
return frq_list[x] ? x : -1;
}
int main( int ac, char **v)
{
FILE *fp = NULL;
int c = 0, p = 0;
printf("\t* * * 文字種調査 * * *\n[英文]\n");
while(scanf("%c",&c) != EOF){
if(search(c) != -1) frq_list[search(c)]++; else frq_list[c]++;
printf("%c",c);
}
c=0; printf("\n%8s%8s%8s%8s%8s%8s\n","文字","度数","文字","度数","文字","度数");
while(1){
if(c >= 0x80) break;
if(!frq_list[c] || c == 0x0A || c == 0x0D){
c++; continue;
}
printf("%8c%8d",(char)c,frq_list[c]);
if(!((++p)%3)) printf("\n");
c++;
}
return 0;
}
0535デフォルトの名無しさん
2007/01/08(月) 02:59:47searchの条件の意図がわからん。。。
それさえなければ10行くらいで書けそうなのにな
0536別回答
2007/01/08(月) 03:30:17int appear[256]={0}; /* 既出文字種を格納する配列 */
int numOfletter=0;
int search(char x){
/*
仕様 :int search(char x)
昨日 :文字xと同じ文字が既出文字種を格納する配列のどこにあるか検索する。
戻り値:同じ文字が存在する場合は、その場所の要素番号。
存在しない場合は、-1を返す。
*/
int pos;
for(pos=numOfletter-1; pos>=0; --pos) if(appear[pos]==(int)x) break;
return pos;
}
int main(void){
int ch,count[256]={0};
printf(" * * * 文字種調査 * * *\n[英文]\n");
while(scanf("%c",&ch)==1){ printf("%c",ch);
if(!(ch=='\n'||ch=='\r')){
if(search((char)ch)==-1) appear[numOfletter++]=ch;
++count[ch];
} }
printf("\n 文字 度数 文字 度数 文字 度数 \n");
{ int i,col=0;
for(i=0; i<256; ++i){
if(count[i]>0){ ++col; printf(" %4c %4d ",i,count[i]); }
if(col==3){ col=0; printf("\n"); }
} printf("\n");
}
return 0;
}
...おらぁもsearch()の意味わかんねぇだ
0537デフォルトの名無しさん
2007/01/08(月) 03:46:10ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3330.c
とりあえずやったらこうなった。
0538デフォルトの名無しさん
2007/01/08(月) 06:00:043つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□偽装派遣先の社員の意見にはたとえ間違っていても反対しない
□偽装派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□偽装派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□偽装派遣先社員より自分の生涯収入が低いのは当然だ
□偽装派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ偽装派遣先に常駐したい
0539デフォルトの名無しさん
2007/01/08(月) 06:06:47・質問は【質問テンプレ】を利用してください。
0540デフォルトの名無しさん
2007/01/08(月) 07:56:36楽曲ファイルのサイズおよび記憶媒体のサイズは整数としてよい?
それとも実数も考慮しないといけない?
0541デフォルトの名無しさん
2007/01/08(月) 08:15:55とりあえず楽曲ファイルサイズ・媒体サイズどちらとも自然数に仮定した:
#include <stdio.h>
#define C 20 /* capacity */
#define n 4 /* number of files */
int a[n] = { 4, 5, 6, 8 }; /* sizes of files */
int main() {
int i, c;
int table[C+1];
int prev[C+1];
for (c = 0; c <= C; ++c)
table[c] = 0;
table[0] = 1;
for (i = 0; i < n; ++i) {
for (c = C - a[i]; c >= 0; --c) {
if (table[c] && !table[c + a[i]]) {
table[c + a[i]] = 1;
prev[c + a[i]] = c;
}
}
}
for (c = C; !table[c]; --c);
for (; c > 0; c = prev[c])
printf("%d ", c - prev[c]);
}
0542デフォルトの名無しさん
2007/01/08(月) 08:28:30「既に用意されている」関数たちをうp
0543462
2007/01/08(月) 11:23:44亀レスですみませんがありがとうございます。
実はもう1問あったのを忘れていたのですが
どなたか答えて頂けないでしょうか。
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
http://vipper.jpn.org/www/upload/src/VIPphoto0133.zip
↑のzipに格納してある2つのグレー画像image05.pgm、filter.pgmについて
image05.pgmを田の字型の4つの領域でみたとき
対角線上にある左上と右下、右上と左下を入れ替える。
12 → 43
34 → 21
その後filter.pgmの黒円を前問のようにimage05.pgmに合成し、
再度対角線上に入れ替えて、最終的には元の画像の四隅に
四分の一の円が重なったものを出力する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc バージョン分かりません
[3.3] 言語: C
[4] 期限: 1月9日7:00まで
0544デフォルトの名無しさん
2007/01/08(月) 13:44:16#define toULong(h,m,s) ((h*60+m)*60+s)
struct race_ { int id; unsigned long start, goal, rap; int rank;
}list[]={
/* ゼッケンNo, スタートタイム, ゴールタイム, ラップタイム, 順位 */
{1, toULong(9,30, 1), toULong(11,12,55), 0, 0},
{2, toULong(9,30,29), toULong(11,13,43), 0, 0},
{3, toULong(9,31, 3), toULong(11,13,49), 0, 0},
{4, toULong(9,31,30), toULong(11,14,05), 0, 0},
{5, toULong(9,32, 5), toULong(11,14,23), 0, 0},
{6, toULong(9,32,33), toULong(11,14,48), 0, 0},
{7, toULong(9,33, 1), toULong(11,15,20), 0, 0},
{8, toULong(9,33,31), toULong(11,15,54), 0, 0},
{9, toULong(9,34, 0), toULong(11,16,11), 0, 0},
};
int num=sizeof(list)/sizeof(list[0]);
0545デフォルトの名無しさん
2007/01/08(月) 13:45:35void toString_exec(char *dst, unsigned long t){ sprintf(dst, "%dh%02dm%02ds", (t/3600)%60, (t/60)%60, t%60); }
#define makeString() { static char dst[14]; toString_exec(dst, t); return dst; }
char *toString_s(unsigned long t){ makeString(); }
char *toString_g(unsigned long t){ makeString(); }
char *toString_r(unsigned long t){ makeString(); }
int main(void){
int i, rank; unsigned long min;
/* ラップタイム計算 */
for(i=0; i<num; ++i) list[i].rap = list[i].goal - list[i].start;
/* 順位付け */
rank=1;
do{ min=9999999;
for(i=0; i<num; ++i) if(list[i].rank==0 && min>list[i].rap) min=list[i].rap;
if(min!=9999999){ int cnt=0; for(i=0; i<num; ++i) if(min==list[i].rap){ ++cnt; list[i].rank=rank; } rank+=cnt; }
}while(min!=9999999);
printf("───────┬───────┬───────┬───────┬───\n");
printf(" ゼッケンNo │スタートタイム│ゴールタイム │ラップタイム │順位 \n");
printf("───────┼───────┼───────┼───────┼───\n");
for(i=0; i<num; ++i)
printf("%12d │%-14s│%-14s│%-14s│%5d\n", list[i].id, toString_s(list[i].start), toString_g(list[i].goal), toString_r(list[i].rap), list[i].rank);
return 0;
}
0546デフォルトの名無しさん
2007/01/08(月) 13:48:48char *toString_s(unsigned long t){ makeString(t); }
:
の方が良かったかな...
0547458
2007/01/08(月) 14:11:300548デフォルトの名無しさん
2007/01/08(月) 14:39:25list[].〜 をメンバそれぞれの配列 id[], start[], goal[], rap[], rank[] に置き換えると
�@になるであろうw
後、
int num=sizeof(list)/sizeof(list[0]);
↓
int num=sizeof(id)/sizeof(id[0]);
にするのを忘れずに(ちなみに id[] ぢゃなくても rank[] でも何でもOK)
0549458
2007/01/08(月) 14:43:52エラー E2268 課題29.cpp 20: 未定義の関数 'sprintf' を呼び出した(関数 toString_exec(char *,unsigned long) )
エラー E2268 課題29.cpp 36: 未定義の関数 'printf' を呼び出した(関数 main() )
となりました。
0550458
2007/01/08(月) 14:45:240551デフォルトの名無しさん
2007/01/08(月) 14:46:05#include <stdio.h>
0552デフォルトの名無しさん
2007/01/08(月) 14:56:55> [3.3] 言語:C
ぢゃねの?
> 課題29.cpp
って名前みたいだけどちゃんとCとしてコンパイルしてる?
0553依頼者
2007/01/08(月) 15:49:04[2]円周率を求めるプログラムを作成
[3.1]OS:Windouws XP
[3.2]分かりません
[3.3]言語:C
[4]期限:1月8日まで
1.rand()関数を用いて0〜1のx座標を作成する。
2.原点との距離を求め、座標が半径1の円内かどうか調べ、円内である場合、
円外である場合をそれぞれカウントする。
3.以上を多数繰り返し、半径1の円内である確率がπ/4であることからπを
求める
入力に関して
キーボードから、計算に用いる座標数(rand()関数の実行回数ではない)を入力す
る。上限をint型の最大値(実際には最大値を入れると膨大な時間がかかるの
でテストはmaxでも一分で終了する程度でよい)
出力に関して
結果(求めた円周率)のみを浮動小数点(double 型を%lf)で出力(+改行)
です。よろしくお願いします。
もう一度円周率を求める問題をお願いします。初心者が作ったようなプログラムで
お願いします。
0554デフォルトの名無しさん
2007/01/08(月) 16:10:00#include <stdio.h>
#include <stdlib.h>
int main(){
int i,j;
double k,x,y,pi;
scanf("%d",&j);
k=0.0;
for(i=0;i<=j;i++){
x=rand()/(RAND_MAX+1.0);
y=rand()/(RAND_MAX+1.0);
if((x*x+y*y)<1.0)k+=1.0;}
pi=k/j*4.0;
printf("%lf\n",pi);
return 0;}
0555デフォルトの名無しさん
2007/01/08(月) 16:21:59[2] :ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3331.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: 2007年01月10日17:00まで
[5] その他の制限: 今規制中なので携帯からのカキコで返事等遅くなりますがよろしくお願いします
0556デフォルトの名無しさん
2007/01/08(月) 16:22:40void quick_sort(int n,int a[])に合わせないと不都合があるのですが
0557デフォルトの名無しさん
2007/01/08(月) 16:25:15>>1
0558デフォルトの名無しさん
2007/01/08(月) 16:28:27他に関数を定義できるのなら可能
0559デフォルトの名無しさん
2007/01/08(月) 16:31:480560デフォルトの名無しさん
2007/01/08(月) 16:34:26int(*compar)(const void *, const void *));
使うとするなら
void quick_sort(int n, int a[])
{
qsort(a, n, sizeof(a[0]), compar);
}
ってことだろ?
0561デフォルトの名無しさん
2007/01/08(月) 16:45:540562依頼者
2007/01/08(月) 18:32:52シンボルが未定義です. 'RAND_MAXとでます。解決策をお願いします。
0563デフォルトの名無しさん
2007/01/08(月) 19:22:12>>554のソースをちゃんとそのまんまコピペしてコンパイルした?
#include <stdlib.h>が抜けてるんじゃないか?
0564依頼者
2007/01/08(月) 19:58:060565デフォルトの名無しさん
2007/01/08(月) 20:00:18コンパイラはなに?
わからなくても、コンパイル時のコマンドはわかるだろ?
0566デフォルトの名無しさん
2007/01/08(月) 20:00:350567デフォルトの名無しさん
2007/01/08(月) 20:11:580568デフォルトの名無しさん
2007/01/08(月) 20:17:27stdlib.h を探して、中に RAND_MAX が定義されているか確認しる!
0569デフォルトの名無しさん
2007/01/08(月) 21:49:580570デフォルトの名無しさん
2007/01/08(月) 22:06:11[2] 問題文(含コード&リンク):
二元連立二次方程式の解を求めるプログラムを作成せよ。
1)異なる二つの実数解、二重解、虚数解が求められること
2)二次の係数が0の場合は「エラーがある」と表示し、実行を停止すること。
[3] 環境
[3.1] OS: WindowsXP
[3.2] bcc
[3.3] C言語
[4] 期限: 明日まで
[5] その他の制限: 特になし
よろしくお願いします。
0571デフォルトの名無しさん
2007/01/08(月) 22:11:560572デフォルトの名無しさん
2007/01/08(月) 22:50:160573デフォルトの名無しさん
2007/01/08(月) 22:53:210574デフォルトの名無しさん
2007/01/08(月) 22:59:150575デフォルトの名無しさん
2007/01/08(月) 23:00:24スルーフラグが立ってしまったわけだが・・・・
0576デフォルトの名無しさん
2007/01/08(月) 23:05:40a x^2 + b xy + c y^2 + d x + e y + f = g x^2 + h xy + i y^2 + j x + k y + l = 0
どうやるんだったか
0578デフォルトの名無しさん
2007/01/08(月) 23:15:55x^i, x^kはi≠kで一次独立
0579デフォルトの名無しさん
2007/01/08(月) 23:28:58実装はできる。
解法を教えろ。
屏風の虎をつかまえる話みたいだがw
0580デフォルトの名無しさん
2007/01/08(月) 23:30:200581デフォルトの名無しさん
2007/01/08(月) 23:31:590582デフォルトの名無しさん
2007/01/08(月) 23:33:160583570
2007/01/08(月) 23:41:16問題は、連立二次方程式の間違いでした。
ああ、ID表示してほしい・・・
0584デフォルトの名無しさん
2007/01/08(月) 23:42:450585デフォルトの名無しさん
2007/01/08(月) 23:43:400586・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/08(月) 23:43:530587デフォルトの名無しさん
2007/01/08(月) 23:44:151番
「文字数」は印字可能な文字(SPより後)の個数という意味にとった。
#include <stdio.h>
#include <stdbool.h>
void main() {
int c, chars = 0, words = 0, sentences = 0;
bool sp = false;
while((c = getchar()) != EOF) {
switch(c) {
case '.':
case '?':
case '!':
sentences++;
case ',':
chars++;
case ' ':
if(!sp) words++, sp = true;
break;
default:
if(c > 0x20) chars++;
sp = false;
}
}
printf("%d %d %d\n", chars, words, sentences);
}
0588・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/08(月) 23:48:12連立だと楕円すら表現できるような
0589デフォルトの名無しさん
2007/01/08(月) 23:54:29http://pc9.2ch.net/test/read.cgi/jisaku/1167973189/
ウンコリオンは自作板に帰ってくれない?お前はお呼びじゃねーよ、でしゃばりデヴ
ダンゴリオンの免許証の顔
ttp://ehoba.mydns.jp/loada/src/txup0147.png
0590デフォルトの名無しさん
2007/01/08(月) 23:56:48ステコテ使えばええヤン
0591デフォルトの名無しさん
2007/01/09(火) 00:10:390593デフォルトの名無しさん
2007/01/09(火) 00:16:56一元なら簡単だが二元なら解法よろ
0594デフォルトの名無しさん
2007/01/09(火) 00:17:42ダンゴリオンの免許証の顔写真(本人がマジで提示したものなので本物)
ttp://ehoba.mydns.jp/loada/src/txup0147.png
自作板の嫌われもの&自分を大きく見せようと知識をひけらかすわりには
間違った知識を持ち出すんで相手にしないように
0595デフォルトの名無しさん
2007/01/09(火) 00:29:17反面教師という言葉もある
折角コテつけてくれてるんだから、嫌ならあぼーん汁
0596デフォルトの名無しさん
2007/01/09(火) 00:40:200597555
2007/01/09(火) 00:57:28お答えいただきありがとうございます
プログラムを実行させてみた所インクルードファイルがオープンできませんとでます
どう直せばいいでしょうか
0598デフォルトの名無しさん
2007/01/09(火) 01:01:47標準で付属のファイルも開発環境によっては存在しない事があるから。
0599・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:01:58#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
char buf[1024];
double a, b, c;
double d;
puts("a * x^2 + b * x + c = 0");
printf("a : ");
a = atof(fgets(buf, sizeof(buf), stdin));
if (a == 0.0) {
puts ("エラーがあります");
return 0;
}
printf("b : ");
b = atof(fgets(buf, sizeof(buf), stdin));
printf("c : ");
c = atof(fgets(buf, sizeof(buf), stdin));
d = (b*b - 4*a*c);
if (d > 0) {
printf("x = %lf, %lf\n", (-b+sqrt(d))/(2*a), (-b-sqrt(d))/(2*a));
} else {
double re, im;
re = -b/(2*a);
im = fabs(sqrt(-d)/(2*a));
printf("x = %lf+%lfi, %f-%fi\n", re, im, re, im);
}
return 0;
}
0600デフォルトの名無しさん
2007/01/09(火) 01:07:57s/%lf/%f/g
0601デフォルトの名無しさん
2007/01/09(火) 01:08:57標準でboost::close_at_toleranceみたいなのが欲しい
0602・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:09:40解の公式の変形が必要だが課題程度ならこれで十分だろ。
(むしろ自分でやれ)
0604デフォルトの名無しさん
2007/01/09(火) 01:11:50一元二次方程式の解を求めるプログラムが欲しいの?
>>599
成功報酬って話は、もう終わったんじゃないの?
0605・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:11:54double型の時は%lf
まあどのみち同じ結果になるのであとは宗教論でしかないが。
0606デフォルトの名無しさん
2007/01/09(火) 01:15:57[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3332.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限: 本日の10時
[5] その他の制限:なし
宜しくお願いします。
0607・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:17:13ソートの論文だろ。たしかに終わってたね。
つーか、仕事の案内ならたまに来るよ。
某サイトの管理人さんが、登録者にメールで投げてくる開発依頼を投げてくるんだけど
単発で80万とか。
この前はIEツールバーの開発の案件が。
まあ、今んとこ内職やるほど暇もないが内容によっちゃ容易い仕事だったかも。
0608デフォルトの名無しさん
2007/01/09(火) 01:20:32printfにlfってあったっけ?
0609デフォルトの名無しさん
2007/01/09(火) 01:26:0780マソ!?それはおいしいが「たまに」しかないんじゃ効率悪いな・・・
どうせなら専門でやれば?自作板で油売ってないでw
0610デフォルトの名無しさん
2007/01/09(火) 01:30:43printf での %lf は C99 で正式に許容されるようになった
それまでは規格として正式ではないものの、
実装として %lf でも動作するコンパイラが多かっただけ
※かつては、鼻から悪魔が出てきても文句を言えなかった
0611デフォルトの名無しさん
2007/01/09(火) 01:31:510612・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:36:48また宗教論になりそうな。。。
http://www.google.co.jp/search?sourceid=navclient&aq=t&hl=ja&ie=UTF-8&rls=GGIH,GGIH:2006-50,GGIH:ja&q=lf+printf
printfでの暗黙の型変換(float→double)って標準仕様だっけ
ど忘れした。
0613デフォルトの名無しさん
2007/01/09(火) 01:38:11終わりそうにないので、お願いしてもいいですか?
メッセ送っておきます
0614デフォルトの名無しさん
2007/01/09(火) 01:39:36わざわざlf使って移植性を低くすることはないってことですね
>>612
>printfでの暗黙の型変換(float→double)
これは標準仕様
0615・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:44:43論文って何百時間もかけてやるもんだろ。3万くらい残業数日やれば稼げるしさ。
0616デフォルトの名無しさん
2007/01/09(火) 01:45:08こっちも夜露死苦!
0617デフォルトの名無しさん
2007/01/09(火) 01:45:46#include <stdbool.h>
↓
typedef enum{false,true}bool;
0618・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:46:330619デフォルトの名無しさん
2007/01/09(火) 01:49:08こっちも夜露死苦!
0620デフォルトの名無しさん
2007/01/09(火) 01:52:460621デフォルトの名無しさん
2007/01/09(火) 01:53:55こっちも4649!
0622・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 01:53:570623デフォルトの名無しさん
2007/01/09(火) 01:54:31こっちもよろぴく!
0624デフォルトの名無しさん
2007/01/09(火) 01:56:290625デフォルトの名無しさん
2007/01/09(火) 01:57:06ここでの株が上がるよ?w
0626・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 02:04:47しかもよい子の寝る時間とっくに過ぎてるし。
0627デフォルトの名無しさん
2007/01/09(火) 02:06:420628デフォルトの名無しさん
2007/01/09(火) 02:13:15カレンダーの宿題の邪魔やりたいみたいだなおまい
0629デフォルトの名無しさん
2007/01/09(火) 02:13:23[2] 問題文(含コード&リンク):
円周率を求めるプログラムの作成
1.rand()関数を用いて、0〜1のx座標、y座標を生成する
2.原点との距離を求め、座標が半径1の円内かどうか調べ、円内である場合、円外である場合をそれぞれカウントする。
3.以上を多数繰り返し、半径1の円内である確率はπ/4であることからπを求める。
【入力に関して】
キーボードから、計算に用いる座標数(rand()関数の実行回数ではない)を入力する。
上限はint型の最大値(実際には最大値を入れると膨大な時間が掛かるのでテストはmaxでも1分で終了する程度でよい)
【出力に関して】
結果(求めた円周率)のみを%lfで出力
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Study C Ver2
[3.3] 言語: C
[4] 期限: 本日の正午まで
[5] その他の制限: なし
すみません、宜しくお願いします。
0630デフォルトの名無しさん
2007/01/09(火) 02:13:32一読お願いします。
0631デフォルトの名無しさん
2007/01/09(火) 02:15:37百読お願いします。
0632デフォルトの名無しさん
2007/01/09(火) 02:16:46デジャヴ&話題の%lf
タイミングが良すぎるw
0633デフォルトの名無しさん
2007/01/09(火) 02:36:58発想を変えるんだ、
printfとは書いてない
%lfを実装すればいいんだ!
0634デフォルトの名無しさん
2007/01/09(火) 02:40:350635デフォルトの名無しさん
2007/01/09(火) 02:42:010637デフォルトの名無しさん
2007/01/09(火) 02:54:56逆なら本当に切ないが
0638デフォルトの名無しさん
2007/01/09(火) 02:57:33[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3332.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC8
[3.3] 言語:C
[4] 期限: 本日の12時
[5] その他の制限:なし
宜しくお願いします。
0640デフォルトの名無しさん
2007/01/09(火) 03:01:400641デフォルトの名無しさん
2007/01/09(火) 03:02:54Ctrl+ZでEOFを入力すればいい
改行で止めたければ
while((c = getchar()) != EOF && c != '\n') {
0642629
2007/01/09(火) 03:05:26全く同じ問題が書き込まれてたとは…
0643デフォルトの名無しさん
2007/01/09(火) 03:10:51ああ?これ何のまねだよ?
0644デフォルトの名無しさん
2007/01/09(火) 03:11:56[2] 問題文(含コード&リンク):構造体を用いて以下のプログラムを作成せよ
1 7人分の氏名(ローマ字),試験の点数(100点満点)をそれぞれ構造体に格納する。
2 7人分の氏名、試験の点数をすべて画面に表示する。
3 試験の点数の中央値と氏名を画面に表示する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: C
[4] 期限: 1月10日
[5] その他の制限:
0645644
2007/01/09(火) 03:13:13struct DATA_LIST
{
char name[20];
char seiseki[20];
};
struct DATA_LIST data_list[7];
int main(void)
{
int i;
struct DATA_LIST data_list[7]= {
{"taro","90"},
{"ziro","40"},
{"saburo","76"},
{"siro","34"},
{"goro","80"},
{"hanako","56"},
{"momoko","72"},
};
for(i=0;i<7;i++)
{
printf("%s\n",data_list[i].name);
printf("%s\n",data_list[i].seiseki);
}
この続きからお願いします。
0646デフォルトの名無しさん
2007/01/09(火) 03:13:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3334.txt
C++で書き直してから>>638に気がついた。残念ながらCのソースは保存してないんだ
0647555
2007/01/09(火) 03:17:13回答ありがとうございます
書き直した所うまく動きました
もう一問の方もよろしければお願いします
>>642
おんなじ大学な気がするけど気のせいか
0648646
2007/01/09(火) 03:17:49だいぶ無駄な計算だw
0649デフォルトの名無しさん
2007/01/09(火) 03:21:46struct celldata{
int color;
};
上の様な構造体を定義して、main関数で以下のように
構造体を宣言しています。
struct celldata *cell[DEPTH][HEIGHT][WIDTH];
ここで、cell[0][i][j]に数値を入れていきます。(0<i<HEIGHT, 0<j<WIDTH)
次にcell[1][i][j]にcell[0][i][j]の数値をコピーします。
その後cell[1][2][2]->colorの数値を直接変えるのですが、
同時にcell[0][2][2]->colorの数値も同じ値に変わってしまいます。
cell[1][2][2]の数値だけを変えたいのですが、どのようにすればいいのでしょうか?
0650デフォルトの名無しさん
2007/01/09(火) 03:25:02まずは趣旨にあったスレを見つけるところから始めるといいと思うよ
cell[1][i][j]=cell[0][i][j];なんてのをやってそうな予感
0651649
2007/01/09(火) 03:28:26まさにそんな感じでやってるのですが・・・。
何が間違いなんでしょうか(ノд;)
宿題とかじゃないのですれ違いなのかもしれませんが。。。
0652デフォルトの名無しさん
2007/01/09(火) 03:34:06^^^^^^^^^^^^^^^^^^↑これがあるのに...
> cell[1][i][j]=cell[0][i][j];
って、同じアドレスにしたいのかなw
0654デフォルトの名無しさん
2007/01/09(火) 06:28:16[2] ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3335.c
[3] 環境
[3.1] WindowsXP
[3.2] gcc
[3.3] C言語
[4] 期限:1/9 PM5:00まで
[5] その他の制限:malloc使用可能
みんな寝てるかもしれませんが、よろしくお願いします
0655606
2007/01/09(火) 08:29:41回答ありがとうございます。なんとか間に合いそうです。
夜遅くまで本当にありがとうございます。私も、いずれは教える側になって
皆さんのようになりたいです。
0656デフォルトの名無しさん
2007/01/09(火) 10:34:02[2] 問題文(含コード&リンク):数独(ナンバープレース)を解くプログラムを作りなさい
4×4のますめの数字をファイルから入力。
1〜4の数字を配置。
各行、各列、2×2の小領域で各数字は1つだけ使用。
例:
1000
0200
3001
0004
(数字の無いところは0)
↓
1342
4213
3421
2134
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: ([2007年1月16日12:00まで]
[5] その他の制限:特に無し
お願いします
0657デフォルトの名無しさん
2007/01/09(火) 11:04:080658デフォルトの名無しさん
2007/01/09(火) 11:21:03ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3336.txt
0659デフォルトの名無しさん
2007/01/09(火) 11:46:38[2] :ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3331.txt
これの2
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Study C
[3.3] 言語: C
[4] 期限: 2007年01月10日17:00まで
[5] その他の制限:
0660デフォルトの名無しさん
2007/01/09(火) 11:51:53> 省略に使う「,」は今回はないものとする。
Q. 英語の省略に使用されるのは「.」だと思うのだが?
0661デフォルトの名無しさん
2007/01/09(火) 11:55:35「>>555の2をお願いします」くらいにしておけよ
新しい宿題かと思っちゃうだろ
0662デフォルトの名無しさん
2007/01/09(火) 12:09:43おそらくアポストロフィ
>>659
ふたつまとめてやっといたので,途中で分割してくれ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3337.txt
0663656
2007/01/09(火) 12:15:130664捨て猫
2007/01/09(火) 13:32:10[2] ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列を抽出し、
文字列の長さが長い順に並べ、その文字列の頻度と共に表示するプログラムを作成したい。
但し、文字列の長さが同じものに関しての順序は任意で良い。以下の設問にしたがって回答しなさい。
[3] 環境
[3.1] Windows XP
[3.3] CかC++かJava
[4] 期限: 2007年1月10日20:00まで
[5] その他の制限: Windows の API は使用しないで作って下さい。
0665捨て猫
2007/01/09(火) 13:33:50#include <stdio.h>
#include <ctype.h>
int main(void){
int c0;
char c1;
c1='\0';
b='\0';
while((c0=getchar())!=EOF){
if((!isalnum(c1))&&isalnum(c0)){
printf("\n");
}
if(isalnum(c0)){
printf("%c",c0);
}
c1=c0;
}
return 0;
}
0666捨て猫
2007/01/09(火) 13:34:40getchar:1
include:2
isalnum:3
printf:2
return:1
stdio:1
while:1
ctype:1
char:1
main:1
void:1
EOF:1
int:2
if:2
c1:4
c0:6
h:2
n:1
c:1
よろしくお願いします
0667デフォルトの名無しさん
2007/01/09(火) 13:46:19なんか見たことある問題だな>>421
0668依頼者
2007/01/09(火) 17:20:27[2]配列
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Study C Ver2
[3.3] 言語: C
[4] 期限: 本日まで
[5] その他の制限: なし
mXn(m行n列)行列とnXm行列の乗算を求めるプログラムを作成する。
m、nはメモリーの許す範囲で特に上限を定めないので必要とする領域はmalloc()
により確保すること。行列を格納する領域は1次元配列でも2次元配列でもよい。
(2次元の場合は行数分のポインタ領域を確保し、次に各行毎に数値用の領域を確保すること。)
入力に関して
キーボードから、まず、行列の大きさ、mとnをスペース1つあけて1行で
入力する。次にmXn行列を1行ずつ(=n個の数値を一度に)入力する。
各数値はスペース1つ分あけて入力する。続けてnXm行列を同様に入力する。
全部で(1+m+n)行にて入力が完了する。
出力に関して
mXm行列を、1行ずつ改行し、m行出力する。数値はスペース1つあけて
そのまま(%d)出力するものとし、%4dのような整形は行なわないこと。
です。お願いします。
0669デフォルトの名無しさん
2007/01/09(火) 17:24:07[2] 問題文(含コード&リンク):
円周率を求めるプログラムを作成せよ。
1.rand()関数を用いて0〜1のx座標、y座標を生成する。
2.原点との距離を求め、座標が半径1の円内かどうかを調べ、円内である場合、円外である場合をそれぞれカウントする。
3.以上を多数繰り返し、半径1の円内である確立がπ/4である事からπを求める。
入力に関して
キーボードから計算に用いる座標数(rand()関数の実行回数ではない)を入力する。上限はint型の最大値(実際には最大値をいれると莫大な時間がかかるのでテストはmaxでも1分で終了する程度でよい)
出力に関して
結果(求めた円周率)のみを浮動小数点(double型を%lf)で出力(+改行)
[3] 環境
[3.1] Windows
[3.2]StudyC
[3.3]C
[4] 期限:2007/01/10
[5] その他の制限:
お願いします
0670デフォルトの名無しさん
2007/01/09(火) 17:29:23>>659>>662
>>669
>>393>>396>>553>>554>>629
あのなーお前らいったいどこの学校だ
教授とっちめてやるから所属を言えw
それとも何か。俺は釣られてるのか……orz
0671デフォルトの名無しさん
2007/01/09(火) 17:33:28不覚にもワラタ
0672デフォルトの名無しさん
2007/01/09(火) 17:50:02ttp://www.vector.co.jp/soft/win95/prog/se087583.html?g
これか……
こんなん使ってる学校もあるんだねぇ
0673デフォルトの名無しさん
2007/01/09(火) 17:51:05長期休暇最後の日の風物詩というか
0674デフォルトの名無しさん
2007/01/09(火) 17:51:26これ関連の学校か?
0675デフォルトの名無しさん
2007/01/09(火) 17:56:57へー。インタープリタなんか。
亀さん使えるってのはなんとも懐かしいね
俺も小学校低学年の頃はLogoで遊んでたなあ
0676デフォルトの名無しさん
2007/01/09(火) 19:37:15[2] 問題文(含コード&リンク): 以下に示した「氏名」と「英語」,「数学」,「物理」の得点を構造体の配列を用いて格納する.各
科目について得点の高い順にソートし,ソート終了後に画面表示するプログラムを作成しなさ
い(すなわち,ソート,画面表示という一連のプロセスが3 回繰り返されることになる).ただし,
構造体の型は以下に示したものを利用し,各データは構造体の「初期化」により格納しておくこ
と.また,ソートを行う場合には,必ず構造体の要素(メンバ)の入れ替えを行うこと.
得点表
氏名 英語 数学 物理
小野妹子 82 93 56
菅原道真 89 87 91
源頼朝 56 76 45
豊臣秀吉 62 83 65
徳川家康 78 56 87
構造体の型
struct SCORE {
char name[20];
int english;
int mathematics;
int physics;
};
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
0677デフォルトの名無しさん
2007/01/09(火) 19:47:15[1] 授業単元:基本プログラミング
[2] 問題文(含コード&リンク): ある正の数値を読み込み、その約数をすべて(ただし1と自分自身は除く)出力するプログラムを作成せよ。
約数が複数個ある場合はスペースで区切って出力する。繰り返し処理できるようにし、−1を読み込むと終了するようにせよ。
なお約数が存在しない場合は”約数はありません”と出力すること。
実行例
正の整数を入力せよ:50
50の約数は 2 5 10 25 です。
正の整数を入力せよ:53
53の約数はありません。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明日
0678デフォルトの名無しさん
2007/01/09(火) 20:00:32http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3338.txt
0679デフォルトの名無しさん
2007/01/09(火) 20:03:13ごめん、SCORE[]とmain()をこう直して
struct SCORE{
char name[20];
int english, mathematics, physics;
} SCORE[]={
{"小野妹子", 82, 93, 56},
{"菅原道真", 89, 87, 91},
{"源頼朝", 56, 76, 45},
{"豊臣秀吉", 62, 83, 65},
{"徳川家康", 78, 56, 87}
};
int main(void){
printout();
sort(0);printout();
sort(1);printout();
sort(2);printout();
}
0680デフォルトの名無しさん
2007/01/09(火) 20:09:06http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3339.txt
0681555
2007/01/09(火) 21:17:17回答ありがとうございます
実行させた所宣言に誤りがありますとでました
int A,Bをscanfの上に置くと今度はポインタとほかの型が混在していますとでます
どう直せばよいでしょうか
0682デフォルトの名無しさん
2007/01/09(火) 21:17:250683デフォルトの名無しさん
2007/01/09(火) 22:23:12[2] 問題文(含コード&リンク):
二分探索木のノードの挿入と木の表示と削除を行う関数を作成し
以下の処理を行いなさい。
12を追加
14を追加
20を追加
18を追加
木の表示
5を追加
3を追加
7を追加
13を追加
木の表示
1を追加
4を追加
6を追加
14を削除
木の表示
12を削除
18を削除
20を削除
13を削除
木の表示
[3] 環境
[3.1] OS: xp
[3.2] コンパイラ名とバージョン: visualstudio 2003
[3.3] 言語: C
[4] 期限: 明日の朝11時までに
[5] その他の制限: 特になし
よろしくお願いします。
0684デフォルトの名無しさん
2007/01/09(火) 22:25:45[2] 問題文(含コード&リンク):
引数として与えられた文字列から、
ハッシュ値を計算するハッシュ関数を作成し、
以下の文字列についてハッシュ値を計算して
画面に出力しなさい。
(ハッシュ関数は実習時間中に作成したものでよい)
ハッシュ値を計算する文字列
"Matsuzaka"
"Igawa"
"Kuwata"
"Okajima"
自分の名字
ハッシュ関数の内容
与えられた文字列の、一つ一つの文字の文字コードを合計し、
最後にハッシュ表の大きさで割った余りを計算する。
ハッシュ表の大きさは7とする
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: VISUAL STUDIO 2005
[3.3] 言語: C
[4] 期限: 締め切りは明日の朝
[5] その他の制限: 制限は無い
急ぎですが、どうかお願いします
0685デフォルトの名無しさん
2007/01/09(火) 22:31:12実習はしなかったのか?それともハッシュ関数の内容ってのが実習でやったことなのか?
0686デフォルトの名無しさん
2007/01/09(火) 22:35:41>>472の付近を捜せ以上
0687デフォルトの名無しさん
2007/01/09(火) 22:36:36すまん。
0688デフォルトの名無しさん
2007/01/09(火) 22:57:24[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3340.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: VC2005
[3.3] 言語: Cです
[4] 期限:11日までです
[5] その他の制限: 特にありません
よろしくお願いします
0689デフォルトの名無しさん
2007/01/09(火) 23:23:28問題文通りのハッシュ関数を作成していただければ問題ないと思います。実習内で作ったものでもよいというのは、実習時間内で作成したものが、そのまま延長で課題になったみたいです
0690デフォルトの名無しさん
2007/01/09(火) 23:26:37#define HASHTABLESIZE (7)
int hash(const char *str){
int i, sum;
for(i=sum=0;str[i];sum+=str[i++]);
return sum%HASHTABLESIZE;
}
0691デフォルトの名無しさん
2007/01/09(火) 23:27:21int hash(const char *s) {
int x;
for(x = 0; *s; x += *(s++));
return x % HASH_MAX;
}
0692デフォルトの名無しさん
2007/01/09(火) 23:40:00#define HASH_SIZE 7
int hash(char* s){
int h = 0;
while(*s!='\0') h += *s++;
return h % HASH_SIZE;}
int main(){
printf("Matsuzaka %d\n",hash("Matsuzaka"));
printf("Igawa %d\n",hash("Igawa"));
printf("Kuwata %d\n",hash("Kuwata"));
printf("Okajima %d\n",hash("Okajima"));
printf("Jibun %d\n",hash("Jibun"));
return 0;}
この宿題大人気だなw
0693デフォルトの名無しさん
2007/01/09(火) 23:41:260694・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 23:55:54>>688
int strsize(STR *s){
return s->size;
}
int addchararray(STR *s,char *c){
for (;c != NULL; c++) {
if (addchar(s, *c) == 0) {
return 0;
}
}
return 1;
}
void appendstr(STR *s, STR *t){
SLIST *p, tmp;
for(p = t->begin; p->next != NULL; tmp = p, p = p->next, free(tmp)) {
addchar(s, p->moji);
}
free(t);
}
int fputstr(FILE *fh, STR *s){
SLIST *p;
for(p = s->begin; p->next != NULL; p = p->next)
fputchar(fh, p->moji);
}
0695・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/09(火) 23:59:41int fputstr(FILE *fh, STR *s){
SLIST *p;
for(p = s->begin; p->next != NULL; p = p->next)
fputchar(p->moji, fh);
}
0696デフォルトの名無しさん
2007/01/10(水) 00:10:59http://ehoba.mydns.jp/loada/src/txup0147.png
0697デフォルトの名無しさん
2007/01/10(水) 00:19:220698デフォルトの名無しさん
2007/01/10(水) 01:24:31[1] 授業単元: プログラミング言語1
[2] 問題文(含コード&リンク):
自由課題ということで、○×ゲームを作ろうと思っていました。
しかし、自分では難しかったのでお願いします。
[3] 環境
[3.1] OS: WindowsXP Home
[3.2] visual studio.net
[3.3] 言語:C言語
[4] 期限:[2007年01月12日まで]
期限が短いですが、よろしくお願いします。
[5] その他の制限: コマンドプロンプト上で、
1|2|3 ○|2|3
4|5|6 → 4|5|6
7|8|9 7|8|×
と、数字を指定→その位置が○or×なるようにお願いします。
0699デフォルトの名無しさん
2007/01/10(水) 01:26:11[2] 問題文(含コード&リンク): 以下に示した構造体の型を利用して,複素数を扱う構造体変数a,b を宣言する.それぞれの
構造体変数の実数部,虚数部の係数をキーボードから入力し,複素数の和,差,積,商を演
算して画面表示するプログラムを作成しなさい.
構造体の型
struct complex_number {
double real, imaginary;
};
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
よろしくお願いします。
0700デフォルトの名無しさん
2007/01/10(水) 02:26:56ルールは?TickTackToeでいいの?
0701デフォルトの名無しさん
2007/01/10(水) 03:07:04char * toString(int r, int c){
if (ban[r][c] == 0){ char *num[]={"1", "2", "3", "4", "5", "6", "7", "8", "9"}; return num[r * 3 + c]; }
return (ban[r][c]==1) ? "○" : "×";
}
void dispBan(void){
int c, r;
putchar('\n');
for (r = 0; r < 3; ++r){ for (c = 0; c < 3; ++c) printf("%2s", toString(r, c)); putchar('\n'); }
}
int isBlank(int pos){ return (ban[(pos - 1) / 3][(pos - 1) % 3] == 0); }
void setValue(int turn){
int pos;
do{ pos = getchar()-'0'; } while (pos < 1 || 9 < pos || isBlank(pos)==0);
ban[(pos - 1) / 3][(pos - 1) % 3] = turn;
}
int main(void){
int cnt,turn = 1;
for (cnt = 1; cnt <=9 ; ++cnt){
dispBan();
printf("where?> "); setValue(turn);
turn = -turn;
}
dispBan();
return 0;
}
とりあえず並び判定なしでw
0702デフォルトの名無しさん
2007/01/10(水) 03:17:05起動してみるとRAND_MAXのシンボルが未定義です。と言われるのですがどうしたらいいのでしょうか?
0703デフォルトの名無しさん
2007/01/10(水) 03:18:380704デフォルトの名無しさん
2007/01/10(水) 03:22:17すいませんorz RAND_MAXでした
702のは変換ミスですorz
0705デフォルトの名無しさん
2007/01/10(水) 03:29:22#include <stdlib.h>
の下に次の三行を追加してみて
#ifndef RAND_MAX
#define RAND_MAX 0x7FFF
#endif
0706デフォルトの名無しさん
2007/01/10(水) 03:33:590707デフォルトの名無しさん
2007/01/10(水) 03:35:38#ifndef、#define、#endif
この三つは習った事が無いので避けたいのですが使わずには無理でしょうか?><
0708デフォルトの名無しさん
2007/01/10(水) 03:37:41>>705 を追加してみて正常に動くかどうか確認するのが先だよ
0709デフォルトの名無しさん
2007/01/10(水) 03:38:57Study CとかいうインタプリタはC89準拠じゃないんか。
学習用としては厄介な環境だね。
0710デフォルトの名無しさん
2007/01/10(水) 03:40:330711デフォルトの名無しさん
2007/01/10(水) 03:41:210712デフォルトの名無しさん
2007/01/10(水) 03:44:03追加で動くみたいです
0713デフォルトの名無しさん
2007/01/10(水) 03:46:360714デフォルトの名無しさん
2007/01/10(水) 03:54:380715デフォルトの名無しさん
2007/01/10(水) 03:59:23とりあえずvectorにあるお試し版を試してみたところ、randの最大は0x7FFFみたい
しかし、面白いねこれ。stdio.hなんか5行しかないしw
0716デフォルトの名無しさん
2007/01/10(水) 06:41:52ありがとうございます。
0717デフォルトの名無しさん
2007/01/10(水) 07:47:45>>695
ありがとうございました
0718デフォルトの名無しさん
2007/01/10(水) 09:15:38以前の課題に付け加えで何かする課題なら、それを言うべきだな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3343.c
0719688
2007/01/10(水) 09:23:50void appendstr(STR *s, STR *t){
SLIST *p, tmp;
for(p = t->begin; p->next != NULL; tmp = p, p = p->next, free(tmp)) {
addchar(s, p->moji);
}
free(t);
}
int fputstr(FILE *fh, STR *s){
SLIST *p;
for(p = s->begin; p->next != NULL; p = p->next)
fputchar(p->moji, fh);
}
この部分で、
.\str.c(46) : error C2440: '=' : 'SLIST *' から 'SLIST' に変換できません。
.\str.c(46) : error C2172: 'free' : 1 番目の実引数がポインタではありません。
.\str.c(54) : warning C4020: 'fputchar' : 実引数が多すぎます。
とエラーが出てしまいコンパイルできません。
どのようにすればよいでしょうか?
0720デフォルトの名無しさん
2007/01/10(水) 09:42:47[2] 問題文(含コード&リンク):
二次元平面上の点の列 p = [ (x1,y1), ..., (xn,yn) ] が与えられる。
これらのうち、最も近いペアと最も遠いペアをそれぞれ効率よく求めよ。
なお効率の評価について、点は適当に分散していると仮定してよい。
[3] 環境
[3.1,3.2] OS, コンパイラ問わず。
[3.3] 言語: どちらでも可。
[4] 期限: 1月13日程度。
[5] その他の制限: 特になし。
0721デフォルトの名無しさん
2007/01/10(水) 10:28:02[2] 問題文(含コード&リンク):
ttp://www.uploda.org/uporg649214.txt
[3] 環境
[3.1] OS:Windows XP Professional SP2
[3.2] コンパイラ名とバージョン:Borland C++ 5.5.1 for Win32
[3.3] 言語:C言語
[4] 期限:2007/01/07
[5] その他の制限:
可能な限り問題の欄でうpしましたテキストの一番下に記載してあります、
ヒントとして提示された資料を書き換える形でお願いします。
よろしくお願いいたします。
0722デフォルトの名無しさん
2007/01/10(水) 10:30:27SLIST *p, tmp; <- 片方ポインタじゃないヨ
0723デフォルトの名無しさん
2007/01/10(水) 10:59:09たとえば
p = [ (1, 1), (1, 1), (1, 1), (1, 2), (1, 2), (1, 2)]
ならどういう風に求まるの?
0724デフォルトの名無しさん
2007/01/10(水) 11:00:29それよりだったらこっちだ
p=[(1, 1), (1, 2), (2, 3), (3, 4)]
0725デフォルトの名無しさん
2007/01/10(水) 11:14:46ありがとうございます〜
0726720
2007/01/10(水) 11:22:20同じ座標であっても異なる点とみなします。また、同じ距離のものが
複数あった場合、どれを表示してもよいことにします。従ってその入力の場合
最近点対: (1,1),(1,1)、最遠点対: (1,1),(1,2) などが解の候補です。
なお、同一距離のものが複数あったり、同一点があったりすることで実装が
面倒になるのであれば、それらは無いものとしてもかまいません。
>>724
その場合は問題なく最近点対: (1,1),(1,2)、最遠点対 (1,1),(3,4) と思います。
0727デフォルトの名無しさん
2007/01/10(水) 12:11:06[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3344.txt
プログラムを2種類作成する問題です。標準の問題文までのと、それに発展を加えた2種類です
できれば考察のコメントをしてもらえばうれしいです
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン: VISUAL STUDIO 2005
[3.3] 言語: C
[4] 期限: 3日以内
[5] その他の制限: 制限は無い
どうかよろしくお願いします
0728デフォルトの名無しさん
2007/01/10(水) 12:30:22面白い問題も時々出てくるし
0729デフォルトの名無しさん
2007/01/10(水) 12:37:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3345.txt
0730デフォルトの名無しさん
2007/01/10(水) 13:02:11[2] 問題文:A、B、Cの3人の英語・国語・数学・物理の点数を入力し、合計・平均を含む次の表を出力する
英語 国語 数学 物理 合計 平均
A XX XX XX XX XX XX
B XX XX XX XX XX XX
C XX XX XX XX XX XX
合計 XX XX XX XX XX XX
平均 XX XX XX XX XX XX
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限:1月12日まで
よろしくお願いします
0731デフォルトの名無しさん
2007/01/10(水) 13:15:08C++なら、クラス使えってこと?
RoomクラスとかStudentクラスとか登場しちゃう?
0732デフォルトの名無しさん
2007/01/10(水) 13:21:51三人の点数の入力は手打ちなのか、それともファイルから読み込むのか
それぐらいは分からないと難しいな
0733デフォルトの名無しさん
2007/01/10(水) 13:28:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3346.txt
('A`)
0734デフォルトの名無しさん
2007/01/10(水) 13:34:52クリックなんかじゃ見せないって訳ね
プログラムは、コピペだと
0735デフォルトの名無しさん
2007/01/10(水) 14:17:51ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
nVTNTttAED4TKe8wChLYxEpCCaiNk0jAYyAOrrOFRfHa8k9RFXFsS38OXHqipeqhVVupVauqhx76OIY
8Rmd214txQISioN39PPPNNzszu8iFP85GDPoiC1jM/WG9tmgwHgae4FEFS9KYecEVECEu9hCq13Cb+S
kkKX4Qab02qdcWknTU6ykbEF7AXMS4SIGJvTFP9h048CJPsIQ5EHgpnqP9Jwn3E1f6SiLLhslR6eiHI
qEohngJhAOSVC0HagnUEtnQk6EtYTtFXIvZl6GtA1tFtwLbCLAiHZY4kixAFSrwJGZpFouCCZqGB7fE
gkuRBPmPwuzhmIH3mMXeHpuhUdRt6LbcUpJLEEZon4Zxc2AS1l8SFIaWC0bAAJKWPrglMQQXJ1crI4x
2biFRQaVLX9C6VtJ9LoFrVbUHFt2LqEhpD0CUJKijjKy2RVB5ujkYVparVlvCEkZZalUwG80mJX8Ow6
GsMa2FGNwaJbiXMnAt5WqihQVzhP2koxks1CUrYiapl3Jfl5Fu4ZCPkHoA69g8MfN5wkOBx245wxD6f
d2zLD20pItNGKkmOyj+brDTWc1jWmQ9jy3dyjx2+tbmMZUdPZehxsylWWYnv5uR0bU6ctUrU26FoiGH
w2qPOFcnphi3lmoobtO4VQqtufr9agc4cM0MGkbVNKFkJM5Ke1AvrEnp8lXyuKDrmVyOFSQ7YteR99b
IT46nn48bDnTMT6b/KIxBjhxHto6LS58GqtnkegSlYj/MUrq5Rv70Y/7yVDaXc+tb22uYajAxGruXdF
zQxCQ7fFeBWSDfC30241OELb3J1oYDy7As69iYvvo5/XoG+elfWs7f/Mi/fYKLF18uTp6BShjyP7/yd
89nhdwtb1I2QzErE9OoGiHWkg/IAC9PaXGlYfFU3cqg26GDe9kH7ZV6Lf/+fvrh9cXvk/Ozt4TdrSz1
2iasduBeB9Y60O3c3X3L+ML6f7hvG1/YQHc1y3PXUjls4j/mAKQEiA+IESGJrSujrZnvFBNW5W5NG23
PfEdVaHRfYmSkwyscHtBHYl0l267cdaSZlHdbyJX2Pw==
0736735
2007/01/10(水) 14:18:57#include <numeric>
は消しといてくれ。
0737デフォルトの名無しさん
2007/01/10(水) 14:25:240738デフォルトの名無しさん
2007/01/10(水) 14:36:53ですが、87、89行目がエラーでうまくビルドできないみたいです
0739デフォルトの名無しさん
2007/01/10(水) 14:46:50[2] 問題文(含コード&リンク):
100以下の素数をすべて出力するプログラムを作成しなさい。
自然数xに対して、2以上で、√x以下の素数で割り切れない数が素数である。
ただし、1は素数でも合成数でもない。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1/12
0740デフォルトの名無しさん
2007/01/10(水) 14:55:17#include<stdio.h>
int IsPrime(int n){
int i;
if(n<2)
return 0;
else if(n==2)
return 1;
if(n%2==0)
return 0;
for(i=3;i*i<=n;i+=2)
if(n%i==0)
return 0;
return 1;}
int main(){
int x;
for(x=0;x<=100;x++)
if(IsPrime(x))
printf("%d ",x);
return 0;}
0741デフォルトの名無しさん
2007/01/10(水) 15:02:10ありがとうございます
#include<stdio.h>
int prime[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97,};
int main(void){for(int i=0;i<(sizeof(prime)/sizeof(int));i++){printf("%d\n",prime[i]);}return 0;}
0743デフォルトの名無しさん
2007/01/10(水) 15:08:150744デフォルトの名無しさん
2007/01/10(水) 15:09:17寝ぼけてて問題文よく読んでなかった
見逃してくれ
まあ>>742よりは遅いだろうが。
0746デフォルトの名無しさん
2007/01/10(水) 15:11:33>for(x=0;x<=100;x++)
もっとお怒りになられるでしょ?奇数ずつでやったものよりさらに・・・
おお、これはいかん。
0748デフォルトの名無しさん
2007/01/10(水) 15:16:21上の方でせっかく偶数をはねてるのにx++はなかろう。
0750デフォルトの名無しさん
2007/01/10(水) 15:18:58>、√x以下の素数で割り切れない数が素数である。
いや、まぁそれはおいといて、↑これもソースの中に意味があるように
取り込まなきゃならんのでは?ってことは、やっぱりあのありきたりな
やり方をするべきかと。
>for(i=3;i*i<=n;i+=2)
があるじゃん。
んで、問題文は「表示しろ」とあるだけで「計算しろ」とは書いてない。
0752デフォルトの名無しさん
2007/01/10(水) 15:21:22いやだから寝ぼけてて読んでなかったって書いたじゃん
見逃してくれよ
0753デフォルトの名無しさん
2007/01/10(水) 15:22:19姿勢で書かれてるんだろうからこれでいいと思うんだけどなあ
0754デフォルトの名無しさん
2007/01/10(水) 15:32:36>、√x以下の素数で
xは素数って条件は入らないん?まぁ良いや。
ちうかそれ、お主がもろに指摘したことだろ?
奇数を順番に使って割っていくことに対して文句を。
あんたは素数か判別するのにすでに求められた素数だけを使ったんじゃないのかね?
0755デフォルトの名無しさん
2007/01/10(水) 15:35:26[2] 問題文(含コード&リンク): 以下に示した「氏名」と「英語」,「数学」,「物理」の得点を構造体の配列を用いて格納する.各
科目について得点の高い順にソートし,ソート終了後に画面表示するプログラムを作成しなさ
い(すなわち,ソート,画面表示という一連のプロセスが3 回繰り返されることになる).ただし,
構造体の型は以下に示したものを利用し,各データは構造体の「初期化」により格納しておくこ
と.また,ソートを行う場合には,必ず構造体の要素(メンバ)の入れ替えを行うこと.
得点表
氏名 英語 数学 物理
小野妹子 82 93 56
菅原道真 89 87 91
源頼朝 56 76 45
豊臣秀吉 62 83 65
徳川家康 78 56 87
構造体の型
struct SCORE {
char name[20];
int english;
int mathematics;
int physics;
};
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
よろしくお願いします。
>xは素数って条件は入らないん?まぁ良いや。
だからその通りになってるじゃん。
>あんたは素数か判別するのにすでに求められた素数だけを使ったんじゃないのかね?
既知の定数を使うことに何か問題でも?
0758デフォルトの名無しさん
2007/01/10(水) 15:59:41[2] 問題文(含コード&リンク):
英数字列 s[] と2以上の整数 r を入力とし、 r進数sを10進数に変換する関数 rad(s, r) を定義する。
10以上の数字には、英字を用いる。すなわち、aは10を、zは35を表す。したがって、36進法までに対応する。
例えば、rad_dec("1z", 36) は、71 を返す。
int rad_dec(char s[], int r);
空行まで入力と計算を繰返すプログラムを作成する。
? 1011 2
= 13
? 2a 11
= 32
数字を数値に変換する関数 char_num() を定義する。
情報数学で扱った上位桁から変換する算法で、10進数を求める。
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] 期限:できれば早いうちにおねがいしたい。
0760デフォルトの名無しさん
2007/01/10(水) 16:16:17んな面倒なことしないでソースをうpロダにうpしろ。できない奴は
ソースを見なくても良いってならはじめっから書かなくて良いよ。
0761デフォルトの名無しさん
2007/01/10(水) 16:17:06#include <stdio.h>
#include <string.h>
#include <ctype.h>
int rad(char s[], int r) {
unsigned int x = 0;
size_t i, len;
for (i = 0, len = strlen(s); i < len; i++) {
x *= r;
x += isdigit(s[i]) ? s[i] - '0' : toupper(s[i]) - 'A' + 10;
}
return (int)x;
}
int char_num(char s[]) {
return rad(s, 19);
}
int main(void) {
char s[256], r[4];
for (; ; ) {
printf("?");
scanf("%255s%3s", s, r);
printf("= %d\n", rad(s, rad(r, 10)));
}
}
0763デフォルトの名無しさん
2007/01/10(水) 16:44:07何を?
0765デフォルトの名無しさん
2007/01/10(水) 16:51:25[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3347.txtのサンプルプログラムを参考にして,
台形公式(http://www.paiotu.net/php/paiotu109.jpg.php)で同じ関数 (∫12(1/x2)dx) を数値積分するプログラムを作成しなさい.
[3] 環境
[3.1] OS: WindowsXP(Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:BorlandC++
[3.3] 言語: C言語
[4] 期限:無期限ですが、できるだけ早いほうがいいです。
[5] その他の制限:なし
よろしくお願いします。
0766デフォルトの名無しさん
2007/01/10(水) 16:56:06それぐらい分かってるがな
0768デフォルトの名無しさん
2007/01/10(水) 17:09:17>>735
0770765
2007/01/10(水) 17:28:53[1] 授業単元:コンピュータ入門
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3347.txtのサンプルプログラムを参考にして,
台形公式(http://www.paiotu.net/php/paiotu109.jpg.php)で同じ関数 (∫_[1,2](1/x^2)dx) を数値積分するプログラムを作成しなさい.
[3] 環境
[3.1] OS: WindowsXP(Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:BorlandC++
[3.3] 言語: C言語
[4] 期限:無期限ですが、できるだけ早いほうがいいです。
[5] その他の制限:なし
サンプルプログラムはシンプソンの公式なるものが使われているようです。
よろしくお願いします。
0771デフォルトの名無しさん
2007/01/10(水) 17:50:42double trapezium(double a, double b, int n) {
int i;
double x, w;
w = b - a;
x = (func1(a) + func1(b)) / 2;
for(i = 1; i < n; i++) x += func1( a + w * i / n );
return x * w / n;
}
simpsonと挿しかえれ
0772765
2007/01/10(水) 18:12:24できました!ありがとうございます。
0773デフォルトの名無しさん
2007/01/10(水) 18:32:34[2] 問題文(含コード&リンク):
int型の変数256個分をメモリ上に動的に10回確保する操作を行え。この際、メモリを確保できた場合
その先頭アドレス(16進数)を順次テキストファイルに書き出せ。
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4] 期限: 1/11 8:00まで
[5] その他の制限:malloc関数を使う問題です。
よろしくお願いします。
0774デフォルトの名無しさん
2007/01/10(水) 18:57:51-----------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i ;
FILE* pFile = fopen( "c:\\address.txt", "w" ) ;
int* p = NULL ;
for ( i = 0 ; i < 10 ; ++i ) {
p = malloc( sizeof( int )*256 ) ;
if ( p != NULL ) {
fprintf( pFile, "%p\n", p ) ;
free( p ) ;
p = NULL ;
}
}
fclose( pFile ) ;
}
0775デフォルトの名無しさん
2007/01/10(水) 18:58:42-----------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i ;
FILE* pFile = fopen( "c:\\address.txt", "w" ) ;
int* p[10] = { NULL } ;
for ( i = 0 ; i < 10 ; ++i ) {
p[i] = malloc( sizeof( int )*256 ) ;
if ( p[i] != NULL ) fprintf( pFile, "%p\n", p[i] ) ;
}
fclose( pFile ) ;
for ( i = 0 ; i < 10 ; ++i ) {
if ( p[i] != NULL ) free( p[i] ) ;
}
}
0776デフォルトの名無しさん
2007/01/10(水) 19:02:03-----------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i ;
FILE* pFile = fopen( "c:\\address.txt", "w" ) ;
int* p[10] = { NULL } ;
for ( i = 0 ; i < 10 ; ++i ) {
p[i] = malloc( sizeof( int )*256 ) ;
if ( p[i] != NULL ) fprintf( pFile, "%p\n", p[i] ) ;
}
fclose( pFile ) ;
}
0777デフォルトの名無しさん
2007/01/10(水) 19:08:20-----------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i ;
FILE* pFile = fopen( "c:\\address.txt", "w" ) ;
int* p[10] = { NULL } ;
fprintf( pFile, "Fuck You!" ) ;
for ( i = 0 ; i < 10 ; ++i ) {
p[i] = malloc( sizeof( int )*256 ) ;
if ( p[i] != NULL ) fprintf( pFile, "%p\n", p[i] ) ;
}
fclose( pFile ) ;
}
0779688
2007/01/10(水) 23:00:44[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3348.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC2005
[3.3] 言語: Cです
[4] 期限: 明日
[5] その他の制限: 特にありません
>>694さん
>>719さんに助けていただき、上記の課題2-2に取り掛かろうとしたのですが、NULLが返され"memory error"となってしまいます。
どのように修正すればよいでしょうか?
よろしくおねがいします
0781デフォルトの名無しさん
2007/01/10(水) 23:16:37この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A10、5、7、12、8
仕事B14、20、15、10、15
仕事C18、30、20、25、22
仕事D35、8、18、20、12
仕事E20、13、8、10、17
C#でやりなさいで言われました。全然できなくて、誰か教えていただけないでしょうか?
よろしくお願いします
0782デフォルトの名無しさん
2007/01/10(水) 23:21:510783デフォルトの名無しさん
2007/01/10(水) 23:24:080784デフォルトの名無しさん
2007/01/10(水) 23:25:090785デフォルトの名無しさん
2007/01/10(水) 23:26:05[2]問題文
m*n(m行n列)行列とn*m行列の乗算を求めるプログラムを作成する。
m,nはメモリの許す範囲で特に上限を定めないので、必要とする領域はmalloc()
により確保すること、行列を格納する領域は一次元配列でも二次元配列でもよい
(二次元の場合は行数分のポインタ領域を確保し、次に各行毎に数値用の領域を確保すること)
[3.1] OS: windows xp
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4]1月11日10時まで
[5]よくわからないので、お願いします
0786デフォルトの名無しさん
2007/01/10(水) 23:27:39XNAスレにまでマルチしてからかわれてた奴かw
0787デフォルトの名無しさん
2007/01/10(水) 23:28:39その問題、こないだも見た。
0788デフォルトの名無しさん
2007/01/10(水) 23:30:29解けてない!;;( ´Д`)
よくわからないです
0789デフォルトの名無しさん
2007/01/10(水) 23:30:31addchararray appendstr fputstrがどう見ても腐っているので修正。 これで動かなかったら俺は知らん。
int addchararray(STR *s,char *c){
for (;*c != NULL; c++) {
if (addchar(s, *c) == 0) {
return 0;
}
}
return 1;
}
void appendstr(STR *s, STR *t){
s->end->moji = t->begin->moji;
s->end->next = t->begin->next;
s->end = t->end;
s->size += t->size;
free(t->begin);
free(t);
}
int fputstr(FILE *fh, STR *s){
SLIST *p;
for(p = s->begin; p->next != NULL; p = p->next)
fputc(p->moji, fh);
return s->size;
}
0790デフォルトの名無しさん
2007/01/10(水) 23:31:17>>670
こう問題が被るところをみると、教師用の課題虎の巻でもあるんだろうか。
0791789
2007/01/10(水) 23:32:18*c != NULLを*c != '\0'に直して。
0793デフォルトの名無しさん
2007/01/11(木) 00:04:52[2]問題文
5種類の仕事と5人の人がいて、5種類の仕事を行うコストが個人で異なる。
この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A10、5、7、12、8
仕事B14、20、15、10、15
仕事C18、30、20、25、22
仕事D35、8、18、20、12
仕事E20、13、8、10、17
[3.1] OS: windows xp
[3.3] 言語: C C++ C#
[4]明日まで
[5]本当にわからないので、お願いします
0794デフォルトの名無しさん
2007/01/11(木) 00:29:59http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3349.txt
0795デフォルトの名無しさん
2007/01/11(木) 00:36:04ちと遅れたがせっかく書いたし。
ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
fVPbbtpAEH12pPzDNCiKL+uGqxLFUIm0fehD8tRKlVqEKF6UBWwj2yQg4n/vzOwFpDaJtNnZ3cOZM2f
GLZXP19tUwrCqU1V8fPp0ftZyd2uVqbriy+dCpVC9zDa+yusQdgJ43wdwOD/zMIZaZhsYQbhL8CLcUb
jncI8hPeKhMUSlfJZlJTXXQpVVbfjWs6rWlIui9BNIIMDYUwvwGQajEWPg9RXcRRzrn5Wy3pY55fTku
pJaLqOiSGhqrYHk5nJXTzeyzLb1rFZF/p4WPiowqWPoCAiXuFaU6x1tEXTspVUH7eS0OKb3lkit4jix
pYYKhpjBvHork5nfvZcntZbgfzCoOF4FwaHhJ90fAatAQ63Ny2P1fMtCOnxqbE5FSlm2TWt/bTz5l6H
tGBq2tZXKhcolPP54gIF2OZup3KeWH+dEkb2p3P1C2AQrO7QFGdoV0BPQbwRkKp/Oi+wPAwTMC7IW2v
aBT98ev08fxj8Tw7ksNNpxkrDrEPAvm2GpuHdx9XD1cQ0gvDaIMYZw6CA7DHDdoBZUAreNMIB7DeijQ
hKKoA7vDvBZA25Rf1uDugjqdh3gCwN6RI8gAjLTEfCVAXzZMyCKb9hZLBG3tNA1WTPYeZwi7hsegWYB
i8cgigLtWTRiX7TZajLB5SaMAcORs9T2/MRi2nS7387jWqXIdZvpOBZghvU/HxtCzSDgZ4KMQaArfTv
ZpsRWL/wL6uhlenc5x/+/8wtkoQ9NwNX4CoMTSYLrP7kgC3iEHZXKVbbNuNY7w+YsIeDJpDd/AQ==
0796デフォルトの名無しさん
2007/01/11(木) 00:39:31あー、そっか
順列ってタネの列作ってどんどん転置していけばいいんだ(orz
0797デフォルトの名無しさん
2007/01/11(木) 00:51:30本当に感謝します。ありがとうございます。
0798デフォルトの名無しさん
2007/01/11(木) 01:05:52[2] 問題文(含コード&リンク):数独を解くプログラムを作成せよ。
また別に、数独の問題を作成するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 1月12日
0799デフォルトの名無しさん
2007/01/11(木) 02:19:00[2] 問題文:X-Y平面上に三点A,B,Cがある。点Bの座標は(0,0)とし、
点Cの座標を(100,0)とする。このとき、AB間距離をP、
AC間の距離をQとする。このときPとQの値を与えると、
Aの座標を表示するプログラムを作成せよ。
ただし、X,Yの座標の値および、P,Qの値はいずれも正の値を
とるものとする。
[3] 環境
[3.1] OS:Linux
[3.2] gcc
[3.3] 言語:C
[4] 期限: 2007年1月26日正午
[5] その他の制限: なし
0800デフォルトの名無しさん
2007/01/11(木) 02:38:43[2] コマンドライン上の括弧文字列を読み込んで、左括弧と右括弧がつりあっているか(整合しているか)
どうかを判定し、つりあっている場合には対応した括弧対に番号をつけて出力する
プログラムを作成せよ。
例:入力[ [ ] [ [ ] ] ] [ ] →[ 1[2 ]2 [3 [4 ]4 ]3 ]1 [5 ]5
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] C
[4] 期限:明日10時
[5] その他の制限:特になし
冬休みやってない僕が馬鹿でしたorz
0801デフォルトの名無しさん
2007/01/11(木) 02:48:06つりあっていない場合は表示しちゃ駄目なの?
0802デフォルトの名無しさん
2007/01/11(木) 03:08:41多分その場合は「整合していません」とかエラー文を出して終了させるんだと思います
0803・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/11(木) 03:38:35int main() {
char str[1024], *p;
int open_cnt = 0;
char ret_buf[1024] = "";
char tmp[80];
int stack[100];
int st_level = 0, br_cnt = 0;
printf("括弧入れろやゴルァ : ");
fgets(str, sizeof(str), stdin);
for (p = str; *p != '\n'; p++) {
if (*p == '[') {
stack[st_level++] = ++br_cnt;
sprintf(tmp, " [%d", br_cnt);
strcat(ret_buf, tmp);
} else if (*p == ']') {
st_level--;
if (st_level < 0) break;
sprintf(tmp, " ]%d", stack[st_level]);
strcat(ret_buf, tmp);
}
}
if (st_level != 0) {
puts("括弧の対応が不正です");
return 1;
}
puts(ret_buf);
return 0;
}
0804デフォルトの名無しさん
2007/01/11(木) 03:41:36って、引数として渡せってこっちゃないん?
0805・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/11(木) 03:43:470806デフォルトの名無しさん
2007/01/11(木) 03:46:09あとは・・・頑張ってコマンドライン引数をどうやって取り込むか理解するだけ・・・
0807デフォルトの名無しさん
2007/01/11(木) 03:47:29なんか複雑そうですな・・・orz
0808・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
2007/01/11(木) 04:00:59#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
int open_cnt = 0;
char ret_buf[1024] = "";
char tmp[80];
int stack[100], st_level = 0, br_cnt = 0;
int i;
for (i = 1; i < argc; i++) {
if ( strcmp(argv[i] , "[") == 0 ) {
stack[st_level++] = ++br_cnt;
sprintf(tmp, " [%d", br_cnt);
strcat(ret_buf, tmp);
} else if ( strcmp(argv[i] , "]") == 0 ) {
st_level--;
if (st_level < 0) break;
sprintf(tmp, " ]%d", stack[st_level]);
strcat(ret_buf, tmp);
} else {
puts("引数指定が不正です");
return 1;
}
}
if (st_level != 0) {
puts("括弧の対応が不正です");
return 1;
}
puts(ret_buf);
return 0;
}
0809デフォルトの名無しさん
2007/01/11(木) 04:14:520810デフォルトの名無しさん
2007/01/11(木) 04:16:55#include <stdio.h>
int main(void) {
double p, q, x, y;
printf("P="); scanf("%lf", &p);
printf("Q="); scanf("%lf", &q);
if(p <= 0 || q <= 0 || p + q < 100) goto no_solution;
x = 50 + (p * p - q * q) / 200;
if(x <= 0 || abs(p) < abs(x)) goto no_solution;
y = sqrt(p * p - x * x);
if(y == 0) goto no_solution;
printf("(x, y) = (%f, %f)\n", x, y);
return 0;
no_solution: puts("解なし");
return 1;
}
結果の数学的な正しさはちょっと保障できんが。
0811デフォルトの名無しさん
2007/01/11(木) 04:26:49[2] 問題文(含コード&リンク):1方向線状リストを使ってスタックを実現せよ。
ただし、各記憶要素xは整数値をとるものとする。
関数としてpush(x),pop(),empty(),ならびに現在のスタック内容を表示するためのshow()を用意する。
[3] 環境
[3.1] windows
[3.2] gcc
[3.3] C
[4] 期限: 1月11日午後1時迄
0812デフォルトの名無しさん
2007/01/11(木) 04:29:54もうとかれてるけど、教授を挑発するタイプ。一度やってみたかった。
#include<stdio.h>
int main(int argc, char* argv[]) {
if(argc == 1) abort();
if(argc != -1) {
char m = 0, n = 0, *argv_[] = {argv[1], &m, &n};
main(-1, argv_);
} else {
char *m = argv[1], *n = argv[2];
while(argv[0][*m] == '[') {
char *argv_[] = {argv[0], m, n}, n_ = ++*n;
++*m;
printf("[%d: ", n_);
main(-1, argv_);
if(argv[0][(*m)++] != ']') abort();
printf(":%d] ", n_);
}
}
return 0;
}
0813デフォルトの名無しさん
2007/01/11(木) 05:00:22ふざけたインターフェースで悪いが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3350.c
0814デフォルトの名無しさん
2007/01/11(木) 10:20:21[2] 問題文
平面上の2点の座標を読み込み、それら2点の距離を出力するC
プログラムを作成せよ。但し、作成においては平面上の座標を構造体で表し、
それに Point というデータ型名をつけるものとする。
[3] 環境
[3.1] Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 1月12日
ごめんなさい皆さん。力を貸してください。
0815デフォルトの名無しさん
2007/01/11(木) 11:58:06読み込む形式は何?キーボード?ファイルから?
座標の情報はどこまで精度を保持すればいいの?
整数?小数?
0816デフォルトの名無しさん
2007/01/11(木) 12:01:02再帰ワロタ
0817デフォルトの名無しさん
2007/01/11(木) 12:50:56[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3351.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: C
[4] 期限: 1月12日
[5] その他の制限:とくになし
よろしくお願いします
0818デフォルトの名無しさん
2007/01/11(木) 13:39:29[2] 問題文:
文字列str内の全ての英字を大文字に変換する関数および小文字に変換する関数
void str_toupper(char *str) { /* … */ }
void str_tolower(char *str) { /* … */ }
を作成せよ。
実行結果
文字列を入力してください:aBcDEf
大文字:ABCDEF
小文字:abcdef
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C
[4] 期限:1月15日
以上です。よろしくお願いします。
0819デフォルトの名無しさん
2007/01/11(木) 13:41:41なにをしていいのかわからんのです。
誰か助けてください。
0820798
2007/01/11(木) 13:43:53お願いします。
0821デフォルトの名無しさん
2007/01/11(木) 13:45:03なにをしていいのかわからんのです。
・データはファイルから読み込む
・扱う変数は実測値、係数ともに10コ。
とりあえずメイン処理部分さえ助けていただけたら最高です。
誰か助けてください。
0822デフォルトの名無しさん
2007/01/11(木) 14:08:13>>1
0823johnny
2007/01/11(木) 14:35:41[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):相関係数を求めるプログラムの作成
[3] 環境
[3.1] OS: (Windows XP
[3.2] コンパイラ名とバージョン: Win32TeX
[3.3] 言語: C++
[4] 期限: すいません。明日の昼の1時までです。1月12日13:00
[5] その他の制限: 制限はありません。 自分ではまったくわかりません。
宜しくお願いします。
0824デフォルトの名無しさん
2007/01/11(木) 14:39:11#include <stdio.h>
void str_toupper(char *str){while(*str){*str++=*str>96?*str-32:*str;}}
void str_tolower(char *str){while(*str){*str++=*str<96?*str>64?*str+32:*str:*str;}}
int main()
{
char s[64];
printf("文字列を入力してください:");
scanf("%s",s);
str_toupper(s);
printf("大文字:%s\n",s);
str_tolower(s);
printf("小文字:%s\n",s);
}
0825デフォルトの名無しさん
2007/01/11(木) 14:44:55[2] 重回帰分析をするプログラムを作成しなさい。
[3] 環境
[3.1] cygwin
[3.2] gcc 3.4
[3.3] 言語: C
[4] 期限: 1/12
よろしくお願いします。
0826デフォルトの名無しさん
2007/01/11(木) 15:13:50> ・データはファイルから読み込む
> ・扱う変数は実測値、係数ともに10コ
これも入れとけよ阿呆
0827825
2007/01/11(木) 15:34:03> ・扱う変数は実測値、係数ともに10コ
すいません、書き忘れてました。
よろしくおねがいします。
0828デフォルトの名無しさん
2007/01/11(木) 17:49:02[2] 問題文(含コード&リンク):
long intの範囲を超えた多数桁の足し算を正確に行うシュミレータの機能を拡張しなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3352.txt
問題1:「0」が入力されるまで入力を受け付けて足し算を繰り返すプログラムを作りなさい。
問題2:引き算の筆算をするプログラムに改変しなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ 5.5.1
[3.3] 言語: C
[4] 期限: 来週の月曜まで
[5] その他の制限:特になし
お願いします。
0829424
2007/01/11(木) 17:51:08月曜日に締め切りです。
どうかよろしくお願いします
0830デフォルトの名無しさん
2007/01/11(木) 18:04:31[2] 問題文(含コード&リンク):
http://loda.dip.jp/upload/data/loda00067.txt
質問スレで色々聞いていたのですが、どうしても分かりませんでした。
スケジュール帳を作ろうとしているのですが、fopenの部分でエラーが出ます。
どなたか解決お願いします。
[3] 環境
[3.1] OS: (Windows/Linux/等々) WindowsXP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Visual studio
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限:早い方がよいのですが、明日の朝8時くらいまで
[5] その他の制限:
0831デフォルトの名無しさん
2007/01/11(木) 18:06:53http://pc10.2ch.net/test/read.cgi/tech/1167325490/416
0833デフォルトの名無しさん
2007/01/11(木) 18:10:01Cは変態言語だから難しそうだね
コンパイラのパーサ部分をまるまる作んなきゃいけないわけだし。
0834デフォルトの名無しさん
2007/01/11(木) 18:24:16入力値の読み込みをコメント部分に入れれば動くはず
a, bに仮の値を入れてるからそこも適当に直して
ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
dVHLbsMgELzzFatElRzXdZyz035D720VAcY1koMpj8g08r8XDLS+1AfEzs7O7OA9F3S0HYOzNh2f6uE
F7X+hKzZDQJBxknWsB22UpQZeJy4M3BH4r5ssGRnMFbgWLbHVIhQpN0Yv2pIiVrhKk+SA4nAsZbsWsp
7hGbA/n4DUcwbdCroVdBFUzFglwtyCUFogWI1MJCuZHRJVfylTeIMymDwGVX9zh61Ax7XBgrJ/l01S2
Shn80RyiEqBfsVcFKuA+qQV0AGrMtxvbx9ZSPNvdjHgRWKcyPFv224eBfvYdzhVcIJli5OIN77RhM7a
OpbAhbTpz2gojxGXypd9sXsY+3exq/4y5qU3uZoQ4Qc=
0835814
2007/01/11(木) 18:28:16からでお願いします。
0836デフォルトの名無しさん
2007/01/11(木) 18:35:16> sprintfをどう使えばいいのか分からないのです。
ならそう書いておけよ
int a = 1, b = 2;
char str[128];
sprintf(str, "%d %d", a, b);
のような使い方ができて、strには"1 2"が入る
fopenの引数は下のようになっているので、
>FILE *fopen(const char *path, const char *mode);
ファイル名をprintfのような形では渡せない
0837デフォルトの名無しさん
2007/01/11(木) 19:03:43bison&flex とか使えるならともかく、まともに構文解析書くのマンドクセ
0838デフォルトの名無しさん
2007/01/11(木) 19:08:07[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
PVMを用いて、行列のかけ算を並列演算で行うプログラムを作成せよ。
1台で行うコードは↓のような感じでできるんですが、
PVMを用いるとどのようになるのかがさっぱり見当がつきません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3353.cpp
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.3
[3.3] 言語: どちらでも可
[4] 期限: なるべく早くお願いします。
[5] その他の制限: 特になし
0839デフォルトの名無しさん
2007/01/11(木) 19:09:18構文解析は情報の課題ではかなり難度(めんどくささ)が高いぞ。
丸投げせざるを得ない程度の知識でそんな課題が出る講義でてるのか?
0840デフォルトの名無しさん
2007/01/11(木) 19:25:48[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3354.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++
[4] 期限: 2007年11月11日23:55まで
[5] その他の制限:特にないです。
急ですが、無理を承知で宜しくお願いします!
0841デフォルトの名無しさん
2007/01/11(木) 19:32:220842デフォルトの名無しさん
2007/01/11(木) 19:34:19コンパイルできました。
ありがとうございます。
0843デフォルトの名無しさん
2007/01/11(木) 19:46:53とりあえず課題部分だけ。
長くなるからdiffとった。
71,72c71
< FILE *fin = fopen("neko.txt", "r"); //テキスト オープン
< //改良1:入力ファイルを↑のような決め打ちでなく,コマンドライン引数から設定できるようにする.
---
> FILE *fin;
78a78,81
> if(argc<2 || (fin=fopen(argv[1],"r"))==NULL) {
> fprintf(stderr, "Unable to open input file.\n");
> return 0;
> }
254,256c257,259
<
< //改良2: この関数を完成させる
<
---
> FILE *fp=fopen("result.csv");
> fprintf(fp, "%s, %d, %lf, %lf, %d\n", text, count_type, t_diff, speed, count_miss);
> fclose(fp);
0844デフォルトの名無しさん
2007/01/11(木) 19:57:532問あります。お願いします。
1.ID番号、名前、英語の得点、数学の得点、国語の得点、総得点を格納する構造体を
定義し、その構造体変数にID番号、名前、各教科の得点を入力し、総得点を求めて
表示するプログラムを作成せよ。
ID番号はint型、名前はchar型の配列(要素数20個)、各得点はint型、総得点はint
型とし、構造体名は任意でよい。
全ての処理はmain()関数内で行うこと(別関数に分けないこと)。
2.1と同様の処理を、以下の仕様で実現するプログラムを作成せよ。
・データを格納する構造体変数はmain()関数にて宣言する ・データの入力は別関数により行う
----- 入力処理の関数の例 ------------------------------------
void inp_data(構造体変数へのポインタ);
返却値:なし
引数 :データ格納先のアドレス
処理 :引数で示される構造体に値を入力する
-------------------------------------------------------------
※main()関数内の変数に対して別関数で入力を行うため、引数にはポインタを用いることになる
・データの表示は別関数により行う
実行例
ID-No. : 2310
Name : example
English : 83
Mathematics : 92
Japanese : 78
example(ID:2310)
Total point 253
[3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc 3.4 [3.3] 言語:C
[4] 期限: 2007年1月13日
0845デフォルトの名無しさん
2007/01/11(木) 20:05:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3355.txt
1・2とボーナスA・Bまで。
デバッグしてないからちゃんと動くか確認しろよ!
0847デフォルトの名無しさん
2007/01/11(木) 22:49:06[1] 授業単元:C言語によるプログラミング実習II
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3357.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] 期限: 2007/01/15
[5] その他の制限:
もし可能であればUPしたテキスト
の一番下の参考のバージョンに追記する形でお願いします。
勿論、オリジナルでもかまいません。
よろしくお願いいたします。
0848デフォルトの名無しさん
2007/01/11(木) 23:00:16[2] 重回帰分析をするプログラムを作成しなさい。
[3] 環境
[3.1] cygwin
[3.2] gcc 3.4
[3.3] 言語: C
[4] 期限: 1/13
[5] その他の制限: 扱う変数は実測値、係数ともに10コ程度
急で難しい問題ですが、よろしくお願いします。
0849デフォルトの名無しさん
2007/01/11(木) 23:05:18>>825
0850デフォルトの名無しさん
2007/01/11(木) 23:18:03派遣のほうが給料が高いというから俺様は正社員を辞めて派遣になったんだぞ!
謝る気があるなら俺様に正社員に戻る方法を教えてくれ
0851デフォルトの名無しさん
2007/01/11(木) 23:19:48そして大手に売り込め
0852デフォルトの名無しさん
2007/01/11(木) 23:21:40[2] 優先的選択モデルによるSFN(Scale Free Network)の作成
http://aquae.dislab.ynu.ac.jp/johokisoIB/2006/report/sfn/sfntemplate.c
↑の穴埋め
[3] 環境
[3.1] Windows XP
[3.2] bcc32
[3.3] C
[4] 期限: 1/17
穴埋め形式なのですが、手も足も出ません…。
長いプログラムですので、穴埋めの部分だけでもお願いします。
0853デフォルトの名無しさん
2007/01/11(木) 23:24:25別にいいけどさ
0854デフォルトの名無しさん
2007/01/11(木) 23:29:07スイマセン。
どうしようか迷ったのですが、コピペするのも迷惑かと思いまして…。
0855デフォルトの名無しさん
2007/01/11(木) 23:31:33いや普通は自分でアップするだろ
ファイルのコピーとか
0856デフォルトの名無しさん
2007/01/11(木) 23:32:08/* 自分で書いてください*/
}
これとか戻り値じゃなくてサイズと構造体のアドレス取得しときゃmemsetで一発だろ
0857デフォルトの名無しさん
2007/01/11(木) 23:54:28一問目のソース書いてて、むなしくなったので途中でやめました
その途中までのソースアップしました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3358.txt
0858デフォルトの名無しさん
2007/01/12(金) 00:36:49fgets
0859デフォルトの名無しさん
2007/01/12(金) 00:37:29stdin
0861デフォルトの名無しさん
2007/01/12(金) 01:02:35[2]縦100 横100 のマス目(点)に分けられた紙の各点が、白と黒に塗り分けられたものを考え
る。この中に、下にあるように黒い点で囲まれた図形が1 つだけある。図形は必ず、黒い
点で囲まれており、内部は白い点で埋め尽くされている。この「囲まれている」とは、各
黒い点の上下左右および斜めの8 つの点のどれかが黒い点となっているものと考えよう。
なお下の例では紙は小さいが、実際には縦横とも100 のマス目がある。
(一応ペイントで例の図を描いてみました…
http://up2.viploader.net/pic/src/viploader392409.jpg)
この図形は整数値の2 次元配列(例えばC 言語ならa[y,x] ただし)で表されている。x 軸は左
から右、y 軸は上から下とするので、a[1,1]は一番左上の点になる。この配列はプログラム
に入る前に何らかの方法で、白い点は0、黒い点は1 になっているものとする。
さて図形の面積、つまり黒い点で囲まれた内部の「白い点」の数を数えるプログラムを
考えよう。ただし図形は必ず紙の上に1 つだけ存在し、またかならず紙の端から点1 つ以
上ずつ少し離れた位置にあるとする(つまり黒い点は紙の上下左右の端には存在しない)。
レポートとしては、プログラムのうち面積を計算する部分を記述して提出すること。ど
のようなプログラミング言語でもかまわないが、プログラムに各自コメントを加え、どの
ようなアルゴリズムに基づいてプログラムが動作しているのか説明すること。
[3]環境
[3.1]OS:Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4]期限:今日中
[5]特にないと思います
問題文長いですが、黒い点で囲まれた内部の「白い点」の数を数えるプログラムが
書ければできると思うんです
お願いします
0862デフォルトの名無しさん
2007/01/12(金) 01:16:41あー、明日仕事なんだがなー
0863デフォルトの名無しさん
2007/01/12(金) 01:30:54[2] 問題文(含コード&リンク)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3200.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: visual studio2003
[3.3] 言語: C++
[4] 期限: 1月12日14:00
[5] その他の制限: 特になし
あと少し・・・あと少しで卒業なんだ・・・・
0864デフォルトの名無しさん
2007/01/12(金) 01:36:17#include <memory.h>
int main(void)
{
int i, j;
short NumTotal[4];
short data[][3] =
{
{ 80, 70, 70 },
{ 50, 60, 90 },
{ 70, 100, 60 },
{ 60, 70, 90 },
{ 90, 90, 90 }
};
short *p;
p = &data[0][0];
memset(&NumTotal[0], 0x00, sizeof(NumTotal));
for(i = 0; i < 4; i++)
{
for(j = 0; j < 3; j++)
{
NumTotal[i] = NumTotal[i] + *(p + i) + j;
}
printf("%d番目のトータル = %d\r\n", i, NumTotal[i]);
}
/* 後の平均処理やレイアウトは考えろ */
return 0;
}
0865864
2007/01/12(金) 01:44:31何だよ終わってるじゃねーか
csv(桁区切り)にしたけりゃこれ参考にしな
#include <stdio.h>
#include <string.h>
char *ReadName = "moto.txt";
char *WriteName = "kekka.txt";
int main(void)
{
FILE *fp;
int i, j;
char readBuf[256];
char writeBuf[256];
memset(&readBuf[0], 0x00, sizeof(readBuf));
memset(&writeBuf[0], 0x00, sizeof(writeBuf));
i = 0;
j = 0;
fp = fopen(ReadName, "rb");
if(fp == NULL)
{
return -1;
}
0866デフォルトの名無しさん
2007/01/12(金) 01:45:10{
fread(&readBuf[0], sizeof(readBuf), 1, fp);
if(feof(fp) != 0)
{
break;
}
}
fclose(fp);
fp = NULL;
fp = fopen(WriteName, "wb");
if(fp == NULL)
{
return -1;
}
while(1)
{
if(readBuf[i] == 0x0D && readBuf[i + 1] == 0x0A)
{
if(readBuf[i + 2] == 0x00)
{
break;
}
writeBuf[j] = ',';
i = i + 1;
}
0867864
2007/01/12(金) 01:45:46{
writeBuf[j] = readBuf[i];
}
j = j + 1;
i = i + 1;
}
fwrite(&writeBuf[0], sizeof(writeBuf), 1, fp);
fclose(fp);
fp = NULL;
return 0;
}
じゃ、寝る
0869デフォルトの名無しさん
2007/01/12(金) 02:00:28[2] 問題文(含コード&リンク):数独 問題を表示させ、キーボードから数字を入力し解答する。
同時に、解答プログラムも作成すること。
[3] 環境
[3.1] OS: Windows Xp
[3.2] コンパイラ名とバージョン: Borland C++ 5.02
[3.3] 言語: C言語
[4] 期限: 2007/01/15
[5] その他の制限:APIを使用すること。
0870デフォルトの名無しさん
2007/01/12(金) 02:21:52教科書片手に必死で書いたのに、残念!!
てか、俺みたいなやつは書き込んじゃいけなかったかな・・・?
0871デフォルトの名無しさん
2007/01/12(金) 02:37:31[2] 問題文(含コード&リンク):テイラー展開を用いてsinx,cosx,tanxの値を求めよ。
ただしx はキーボードから入力すること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語:c
[4] 期限: 1月12日
[5] その他の制限: よろしくお願いします。
0872デフォルトの名無しさん
2007/01/12(金) 03:24:43[2] 問題文(含コード&リンク):
引数付きmain()関数main(int argc,char *argv[ ])により,MS-DOSプロンプトから
入力された実行プログラム名およびそれに対する引数の文字列を順に表示する。
実行プログラム名はprnとし、MS-DOSプロンプトから実行する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: VisualBasic
[3.3] 言語: C
[4] 期限:今日中
[5] その他の制限:MS-DOSプロンプトから実行というのをしたことがなくて
どうすればいいかわかりませんorz
軽く解説つけてもらえるとありがたいですm(_ _)mよろしくおねがいします
0873デフォルトの名無しさん
2007/01/12(金) 03:34:43[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3359.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC++ 6.0
[3.3] 言語: C++
[4] 期限: 今日の昼くらい
[5] その他の制限: ポインタ、構造体は習ってません
お願いします。
0874デフォルトの名無しさん
2007/01/12(金) 03:39:26やってくれた人いませんか???お願いします。
0875デフォルトの名無しさん
2007/01/12(金) 03:56:26#include<stdio.h>
#define USER_PI 3.1415926535897932384626433832795
double user_sin_0_n(int n){
if(n%4==1) return 1.0;
if(n%4==3) return -1.0;
return 0.0;
}
double user_sin(double x){
double ret=0.0, kaijo=1.0, x_n=1.0;
int i;
for(i=1;i<100;i++){
kaijo*=i;
x_n*=x;
ret+=user_sin_0_n(i)*x_n/kaijo;
}
return ret;
}
double user_cos(double x){return user_sin(x+USER_PI/2);}
double user_tan(double x){return user_sin(x)/user_cos(x);}
int main(int argc, char *argv[]){
double x;
printf("Input x : ");
scanf("%lf", &x);
printf("sin(%f)=%f\n", x, user_sin(x));
printf("cos(%f)=%f\n", x, user_cos(x));
printf("tan(%f)=%f\n", x, user_tan(x));
return 0;
}
0876871
2007/01/12(金) 04:07:30ありがとうございました。
0877デフォルトの名無しさん
2007/01/12(金) 08:37:13int main(int argc, char *argv[]) {
while(argc - 1) {
printf("%s", argv[argc - 1];
argc--;
}
return 0;
}
コマンドラインからnnnn.exeを起動する場合
c:\nnnn str1 str2 str3 と、半角スペースを空けて、実行するとmain関数の
argcには引数の総数、*argv[]には
半角スペースごとに1つの引数として、引数文字列の先頭アドレスが渡される。
が、しかし、nnnn.exeを引数なしで実行しても、argcが1
実行ファイルの絶対パスがargv[0]に必ず入るので
実行時に自分で指定した引数は[1]以降になる。
0878デフォルトの名無しさん
2007/01/12(金) 09:18:03数独はぐぐったらそこらへんに転がってるよ
0879デフォルトの名無しさん
2007/01/12(金) 09:22:59すいません、これお願いします・・・
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3360.txt
>例えばC 言語ならa[y,x]
このクソ出題者の名前を晒したら答えてやる。
0881デフォルトの名無しさん
2007/01/12(金) 10:10:29ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3361.c
0882デフォルトの名無しさん
2007/01/12(金) 10:13:56[2] 問題文(含コード&リンク):
ポインタ,構造体,関数分割,ファイル分割のすべてを利用した簡単なプログラム
を作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:c
[4] 期限:2007/01/15
[5] その他の制限: なし
よろしくお願いいたします。
0883デフォルトの名無しさん
2007/01/12(金) 10:16:19ありがとうございます。
問題に「実行プログラム名はprnとする」とありますが
これは自分で作成しなければならないのでしょうか??
どういう操作をすれば目的を達成できるのかまだ理解できてません・・・
初心者で申し訳ないです(lll´Д`)
0884デフォルトの名無しさん
2007/01/12(金) 10:21:23よろしくお願いします!
0885838
2007/01/12(金) 10:34:310886デフォルトの名無しさん
2007/01/12(金) 10:36:07ああごめんファイル名が決まってるの忘れてた。
nnnnって書いたとこprnに読み替えてくだしあ。
あとVBでCなんて書いた事ないからわかんないけど
>>877に書いたソースをprnってファイル名で作れば済むと思うけど
それ自体がわからないなら、まずぐぐってHelloWorld作る所からどうぞ。
0887874
2007/01/12(金) 10:47:04APIを絡めたのが見つからないので…
0888デフォルトの名無しさん
2007/01/12(金) 10:54:02さっきprnの名前でファイル作ることを試みてたんですが
「prnはデバイス名として予約されています」
って出てきて作成できなかったんです(;゚д゚)
0889デフォルトの名無しさん
2007/01/12(金) 10:58:11数独解いたり問題作るのにAPIを使う必要はないと思うのだが。
0890デフォルトの名無しさん
2007/01/12(金) 11:00:13MS-DOS/MS-Windowsではそのメッセージの言うように"prn.exe"と言う名前でファイルを作ることは(通常)できない。
問題を出した香具師に文句を言え。
0891デフォルトの名無しさん
2007/01/12(金) 11:05:47拡張子ついてても関係ない。
0893874
2007/01/12(金) 11:19:09問題を表示させ、キーボードとマウスを使って解答できるモノを作れとのことです。
0894デフォルトの名無しさん
2007/01/12(金) 11:37:34解く方なら。
なんか例題ない?
0895デフォルトの名無しさん
2007/01/12(金) 11:46:21>>798にそんなこと書いてない時点で論外
0896デフォルトの名無しさん
2007/01/12(金) 11:54:19ほい、プログラムで解いてもちょっと難しいのを。
6 □□□9 4 □□8
□□1 □□□4 2 □
7 □□1 □□□□□
□7 □□□1 □□□
5 3 □2 7 8 □9 1
□□□3 □□□5 □
□□□□□7 □□6
□6 7 □□□3 □□
3 □□4 6 □□□5
↑はデータとして使い難いだろうからデータ用も。
6.. .94 ..8
..1 ... 42.
7.. 1.. ...
.7. ..1 ...
53. 278 .91
... 3.. .5.
... ..7 ..6
.67 ... 3..
3.. 46. ..5
簡単に解けるのがよければ作ってもいいけどどこにでも転がってるっしょ。
0897デフォルトの名無しさん
2007/01/12(金) 12:01:02│6 □□│□9 4 │□□8 │
│□□1 │□□□│4 2 □│
│7 □□│1 □□│□□□│
├───┼───┼───┤
│□7 □│□□1 │□□□│
│5 3 □│2 7 8 │□9 1 │
│□□□│3 □□│□5 □│
├───┼───┼───┤
│□□□│□□7 │□□6 │
│□6 7 │□□□│3 □□│
│3 □□│4 6 □│□□5 │
└───┴───┴───┘
0898デフォルトの名無しさん
2007/01/12(金) 12:40:47[2] 問題文 RS232Cのプログラム
[3] 環境
[3.1] OS: Linux(Debian)
[3.2] gcc
[3.3] 言語: C
[4] 期限: 1月末
[5] その他の制限: 「やさしいC」を読んだだけの初心者ですが、
よろしくお願いします
0899デフォルトの名無しさん
2007/01/12(金) 12:48:29[2] 問題文(含コード&リンク): 以下に示した「氏名」と「英語」,「数学」,「物理」の得点を構造体の配列を用いて格納する.各
科目について得点の高い順にソートし,ソート終了後に画面表示するプログラムを作成しなさ
い(すなわち,ソート,画面表示という一連のプロセスが3 回繰り返されることになる).ただし,
構造体の型は以下に示したものを利用し,各データは構造体の「初期化」により格納しておくこ
と.また,ソートを行う場合には,必ず構造体の要素(メンバ)の入れ替えを行うこと.
得点表
氏名 英語 数学 物理
小野妹子 82 93 56
菅原道真 89 87 91
源頼朝 56 76 45
豊臣秀吉 62 83 65
徳川家康 78 56 87
構造体の型
struct SCORE {
char name[20];
int english;
int mathematics;
int physics;
};
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
よろしくお願いします。
0900デフォルトの名無しさん
2007/01/12(金) 12:59:23最初に習う気がするバブルでいいのか?
0901デフォルトの名無しさん
2007/01/12(金) 13:20:42もっと具体的に。
「RS232Cのプログラム」では余りに内容がなさ過ぎる。
0902デフォルトの名無しさん
2007/01/12(金) 13:48:58[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3363.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 2003
[3.3] 言語:c
[4] 期限:2007/01/15
[5] その他の制限: なし
よろしくお願いします。
0903デフォルトの名無しさん
2007/01/12(金) 13:54:17[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3364.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Visual Studio 2003
[3.3] 言語:c
[4] 期限:2007/01/15
[5] その他の制限: なし
よろしくお願いします。
0904デフォルトの名無しさん
2007/01/12(金) 13:56:31>>486
0905デフォルトの名無しさん
2007/01/12(金) 13:58:00問題にある、「実習時間中に作成したもの」を提示したまえ。
0906デフォルトの名無しさん
2007/01/12(金) 14:17:11悪いな、少し遅れた。
ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
rVTNbtNAED4nUt5h5F4cSK22cMkvD0Ii5DibxIqzrrxrhEA5uIJGAvUHBCpwQFRAkUBtT5WqquJl3CT
k1Fdgdtd24pCcwBfvznz7zbczs7NmU8vxWwQqptNxPZt3+7Vcdi2xWn2Td1OWNuMeMdMo211iZMts3L
NpB025rE059E2b6nl4lstmxPapSVtmzywA66KUAvQQa/b8MroZb5VK6nQMe6S2ideOlAEudK1pOia1i
MGfcC0vMHYbdPSoaLhjUKvFVOXIZFiOy4gu8QMgDiPCEYGgChvC0XY90MtQhohKBneVmEiBy5ikxD9U
KiARZpPpEZPkz6SvgeyINnCjwitajzwmHipKY40m6YjEFRZSYRDa0vPquFQpkrqNzPfK+Kssoh1CO7y
L4dB5twr3o/ssCDNsyojH9e0CaAWVyszgPwiUxy3X5yJDWp3W6R3xwehgf/z2fHz2avrz/eTseHK4C9
IhEMoaBudQr2uCBJIPSWIReNMNeADaugYl0LS88C0kewla/33xdXR6lI8O/cWuQRh8D4MPt9f7QsrDz
YaQOnrxDddbDUDNo+EVrovFBkwudm6udgVsNDzBG4Q7b6bB5fjlpzA4CoOTMDgIg89h8C4Mnt9ef9SS
Hmk7PuvOZcemoknla4haFHS5g2oVisW4YE1sut6sMKJvIQXdjJGLSVc3mA5fT4/3VihJSZl7kbN3gb0
zb1+hYWuVBpW5f9SwvkrDspg3l3vj0y9h8COqTlzXWWjsU0cFsFzKbeqThHYQz5uETlVblvbXKiI1JO
IJ5S6dUGida1Vh8Qj3PSrHzuAP
0907デフォルトの名無しさん
2007/01/12(金) 15:23:39他の媒体から、文字を受け取って表示させるRS232Cのプログラムです。
0908デフォルトの名無しさん
2007/01/12(金) 15:29:43http://news22.2ch.net/test/read.cgi/newsplus/1168583082/
はやいとこ宿題質問しとけw
0909デフォルトの名無しさん
2007/01/12(金) 15:35:11PAD書けって宿題も受け付けてくれるスレおせーてください
0910デフォルトの名無しさん
2007/01/12(金) 15:38:35http://www2.ee.knct.ac.jp/el/E2/L210/algorism/pad1.html
0911デフォルトの名無しさん
2007/01/12(金) 15:46:13このプログラムを作るためのPADを書けとかいうヤツでさっぱり書けません
0912助けてください
2007/01/12(金) 16:38:08[2] 問題文(含コード&リンク):課題 20×20のタイルからできた2次元平面を考える。左上のタイルSから右下のタイルGまでロボットRが移動しようとしている。Rは次の条件でタイル平面上を移動する。
(1)現在位置から東西南北いずれかの隣接タイルに移動する。それまでに通過したタイルには移動しない。
(2)移動するタイルは可能なタイルのなかからランダムにきめる。
(3)移動できるタイルがなければ停止する。
従って、ロボットRはSから出発すると、Gに到着するか、または途中で身動きできなくなって移動を停止する。次のプログラムを書け。
(1)20×20のタイル上で左上にS右下にGが与えられたときに、Gに到着するか停止するまでに通過したタイルを表示する。通過タイルをX、非通過タイルをOで表示する。
(2)Sから出発してGに到着するか停止するまで移動する、という試行を100回繰り返したとき、ロボットがGに到着した回数を求めよ。到達した場合に、SからGまでに通過したタイル数の平均を求めよ。
(3)int sense(int i, int j)を使用する。
(4)Gに到達した最後のタイルパターンを提出せよ。
[3] 環境
[3.1] OS:Linux Redhat
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語 : C
[4] 期限: 2007年1月15日17時まで
[5]特になし
すいません、ホントに分かんなくて困ってます。。。
助けてください。よろしくお願いします。
0913デフォルトの名無しさん
2007/01/12(金) 16:52:33何か指示がなかった?
0914初心者修行中
2007/01/12(金) 16:55:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3365.txt
バブルソート使いました。
お暇で気が向く先輩居ましたら、添削をお願いします。
こうした方が綺麗だよ、とか、
この部分の処理勿体無いよ等のアドバイスありましたら、是非お願いします。
0915デフォルトの名無しさん
2007/01/12(金) 16:59:19見事に文字化けしてるな
0916助けてください
2007/01/12(金) 17:01:04現在位置(i,j)を引数にもらって、次に移動すべき隣接タイルの方向をランダムに選んで戻す。(東西南北には、整数1、2、3、4をそれぞれ対応させる。移動できるタイルが見つからなかったら0をもどす。)
って書いてあるんですけどこの事ですか??わかりにくくてすいません。
0917初心者修行中
2007/01/12(金) 17:07:34http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3366.txt
文字化けとのことなので、再度。ソートは、バブルソートです。
お暇で、見てやっても良いぞって先輩居ましたら、添削をお願いします。
こうした方が綺麗だよ、とか、悪くは無いがこうした方が一般的だとか、
この部分の処理勿体無いよ等のアドバイスありましたら、是非お願いします。
>>915
ご指摘ありがとうございました。上げ直してみました。
これで駄目なら、もうダメポ
0918デフォルトの名無しさん
2007/01/12(金) 17:08:49・コーディングスタイルが気色悪い。
・整数値に意味を持たせてはいけない。⇒enumを使うべき。
・ifやforが1行野郎じゃないなら複文化({})すべき。
・配列の要素数は自分で数えるな。
・ループの上限は配列サイズから得るようにするべき。
0919お願いします
2007/01/12(金) 17:10:15最短距離計算の一種なのですが・・・
複数(数十個)の部品があり各部品は複数(2or3個)のインターフェース(繋がれる点)を持っています。
それらの部品間を直線で繋いだときの距離の総和が最短となる場合を見つけたいのですが
分かる方がいたらお願いします。
ちなみに各部品はどのインターフェースを何度でも繋いでもよいのですが
必ず全ての部品が繋がっているようにしなければなりません。
0920初心者修行中
2007/01/12(金) 17:10:54ありがとうございます。これから書くときは、意識するようにします。
直してみます。
0921デフォルトの名無しさん
2007/01/12(金) 17:23:38>・コーディングスタイルが気色悪い
これほとんど因縁だろwwwwww
いや、俺もどうかなって思ったけどさ
0922デフォルトの名無しさん
2007/01/12(金) 17:28:39よ〜し、おじちゃん因縁付けちゃうぞ。
r;ァ'N;:::::::::::::,ィ/ >::::::::::ヽ
. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ< switch と case のインデントぐらいは揃えろ。
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ< な!?
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
0923デフォルトの名無しさん
2007/01/12(金) 17:32:26とはいえここまで括弧の対応が分かりづらいソースは久しぶりに見た
0924初心者修行中
2007/01/12(金) 17:35:17http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3367.txt
修正しました。
>>918
勉強になりました。精進します。
0925初心者修行中914
2007/01/12(金) 17:44:39いや、右も左もわからない状態なのに、勉強になるからといって、
回答者になる時点でどうかと思ってたので、こういう指摘はありがたいです。
どうすれば良いかが、まるでわからないので、書いた物へのアドバイスは大変貴重なのです。
綺麗なソースを、できるだけ沢山読むようにしてみます。
>>922
ずれてますね。申し訳ない。
>>923
中括弧要らなかったですね。
なんか、もう初歩的なところでグダグダです。
見にくいソースを読んで、アドバイスくださった皆さん、
ありがとうございました。
指摘されたこと気を付けて、いっぱい書いてみます。
0926デフォルトの名無しさん
2007/01/12(金) 17:49:46じゃアドバイス一つだけ。
ここで指摘された事が全てと思わない方が良い。
>>918みたいに主観と客観が織り交じった意見は
主観の部分は真に受ける必要は無い。
0927デフォルトの名無しさん
2007/01/12(金) 17:53:19インデントが狂って泣ける。
0928デフォルトの名無しさん
2007/01/12(金) 17:57:10間に合うか?w
ちと面白い問題だった
ここで解凍 http://www.geocities.jp/c_cpp_cs/code/code.html
jZRNTxNBGMfvJHyHsUQy2xe35daUPWJC0tSLnOoelnZXNta22S5kG2nCbFGBghgPGoy1IgqlRnsQI4Z
GvwvD0vbEV/CZ2SKlL9htuy//Ps/sb/7PzDOhpxOpxaSKPDkzqWfuLHjGxya6tZQ+z0WQk6qmp1V0b+
4+wlPC+JgoXkrR2dgMwiHhKmg2FkM4KLC8nKmYegIlFhQDKfFQMCjzU4T9J4qt5zVn7Rkl39pv985ff
KZkh9qls+ONs+OS83Pf2f4Of1FySMkeJSVKNp1Prx1yREmN2uudXNt2xdOdGl1ZOV05ocUN/t2lpN7a
L7FgsvoPRE+bAPMIs2vezx8tBKRPxscQHIZqLhppzGYgSUo8L8ctGU1OIowwzPxSCoRkAS0vX9N8vRo
IkHxdC3Q0+IADBWbCUkZPoseKDi9lMIrxMOF37fLC/VJc7tDdnY3OIK+WhTwO7c/7zYyppKRgxEXXNc
ySJWlK6EzGVYE9NheN3pKwlpW0TFZNYz5wSPZ7jHkPh+lK6EnSDFVJYswoDa+g+KF4/Kdl+9PYIYqXN
arDpCk5cColahMo60VjzVkrt3Y3mz9sODtPq+1ilZKq83IVHtsfvsL5/N0XSHRHuGis9w+vZQyELZiz
NQ0UEcvnGwTBDiUeZF6D65YMt3ANh68EuJeAL9KfWxjy0rwUiuSnw+FIfvg7O3QhoIPAG+CuO3VAiQ0
GwRJv1f6cV04oedO90GnxPS02qF13t8fwEXnZ2OKGhW0JbN0Mi3QN4qt7iA1dlNtbTv03pykxGtsGSk
p+jYYCVQoADruMgsTDeYsI3Ig2oEoDJFGEfUztV82jevNwC2ylpMI7yma7/BEU6BmjVHvUYt9sR3dL+
Y8PfGP7fAPmnjVg82vY4/JfNMq3kw/SHrcTCD3xPYZoiVQmp0IT6I7rxBR4M/oL
0929デフォルトの名無しさん
2007/01/12(金) 18:08:57おおボケこいたm(_ _)m
33〜34行目
if ( chk(100-y, 100-x) )
a[100-y][100-x]=OUT;
の100は99にしてくれ
if ( chk(99-y, 99-x) )
a[99-y][99-x]=OUT;
0930デフォルトの名無しさん
2007/01/12(金) 18:29:42これでどう?
pVRNb5RAGL7zK6ZsthkKWNjuScCkscbtoTVp1qhB0rADWwaR3QwsjWm41IMHz6Ynb968mHjy5MF/4qb
+DucDGFaz9SAJM/A+7+cz7zsDnKNsFcXALcoIL+4lD5RBX5ThGZMpgyie4zwGz46PphMwsjrB5NHx48
mUSXBegmRxEftcJ/AFEjgKR4o4L2LIvrAB2JZqVwrgX8gfB94VtNwU7O6CHe4DB35q2oFmQKzbrojaQ
3Wb4hSlHuQDU6ra5LPhSOeOLBf3xKbwUDtNEsRDvhXoyLfZMmLLQcDBOSQ8VUB1SJhHUNsj+2eHp0fn
J4fPHQ7MFwRiz3KwO3Z0HTfq3BbRDHhYSExT6xDmjFbhdL8zEoev2t9aaVf2krhckRwQR6kFl0l4EcO
OPmykBmKWMgvOVy8ThqQUSRt6KJR2qXQ0BVRjIzAWglRsSGzRQhj2zHQdCUNaL/Y8Ht20WdWp54mIpq
21dTS6xSUuUQKbvjBSyQ0KixhY9yVTws5y+rgt8dQ0t/DINUdSE+v6XZoHPZ93a457PrdE5yReJjiLo
a3xo6sWOALLVcmnIPtjTPrHydlOQgL2lj6dDPXHjWqoP2/eq/V/HPOSUO9zqA4L1Vj6O5k4u0CT2Uqd
l7nK5Uy6KavlVTA9e/HwydPTKbAtS/Tl6xDnkFUpR9tg3Uk8y6iMiogGau+J8ywsyr8uC1EF6zXkthF
oHaipo82mJG/AMKI5GUi3ta77YOWJ4ZDdVBHdq9oT2s7dP/lre16kzckDXm8KZBPUyuZO2l5qSKYdwM
w6hns3TFve7bevtx/fra+/r68/rd9+/vXhCxjOWbUwWqxmWaxVZJ80Zbf+eGKdUzk0tfIb
0931デフォルトの名無しさん
2007/01/12(金) 18:30:21>>912だった。
0932デフォルトの名無しさん
2007/01/12(金) 18:36:21[1] 授業単元:プログラミング演習
[2] 問題文:
x^3-4x^2-51x+54=0をNewton法を用いて解くプログラムを作成し、
そのプログラムと3つの解を示せ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2007年1月15日
[5] その他の制限: 手計算の結果はx=1,9,-6となりました。
多分合ってると思うので、プログラムのみをお願いします。
0933デフォルトの名無しさん
2007/01/12(金) 19:22:02初期値を求めるアルゴリズムはなんでもいいのか?
0934デフォルトの名無しさん
2007/01/12(金) 19:44:38特に指定がないので、xの解が出ればなんでも良いと思います。
0935デフォルトの名無しさん
2007/01/12(金) 19:49:50だめです。
0936861
2007/01/12(金) 20:12:02晒すのはご勘弁を・・
>>881さん
どうもありがとうございます!
本当に助かりました!
>>928さん
ありがとうございます、時すでに遅しでしたが
プログラムを拝見させてもらったところ丁寧にコメントまで
つけて頂き本当にありがとうございました!
参考にさせて頂きます!
0937デフォルトの名無しさん
2007/01/12(金) 20:29:29ニュートン法だけならこんな感じか。
複数の解があるときに近似解を求める方法がわからん
#include <stdio.h>
#include <math.h>
#define N 10
#define eps 0.00001
double func(double x) { return x*x*x - 4*x*x - 51*x + 54; }
double d_func(double x) { return 3*x*x - 8*x - 51; }
double newton(double s, double (*f)(double x), double (*d_f)(double x)) {
int i;
for(i = 0; i < N; i++) if(fabs((*f)(s = s - (*f)(s) / (*d_f)(s))) < eps) return s;
return NAN;
}
void main() {
printf("%f\n", newton(-10, func, d_func));
printf("%f\n", newton(0, func, d_func));
printf("%f\n", newton(10, func, d_func));
}
0939デフォルトの名無しさん
2007/01/12(金) 20:40:06どの部分より効率が悪いと判断したんですか?
0940720
2007/01/12(金) 20:49:35どの部分というよりも、アルゴリズム自体が非効率に思えます。
具体的には、実際に全ての点対について距離を計算しているので、計算量 O(n^2) です。
0941デフォルトの名無しさん
2007/01/12(金) 20:58:560942デフォルトの名無しさん
2007/01/12(金) 21:09:00計算量とかアルゴリズムも分からんでやっていけるのは
本当に底辺のプログラマだけだと思うが
0943デフォルトの名無しさん
2007/01/12(金) 21:31:280944デフォルトの名無しさん
2007/01/12(金) 21:37:12もっとも遠いペアなら、
まずは凸包を求めて、
その凸包の各点の対角に当たる点との
距離のうち一番遠い奴ってのが、
それっぽいけど、
もっとも近いペアはどうやるんだろ?
ちょっと思いつかない。
0945944
2007/01/12(金) 21:42:39あ、やっぱり対角とは限らないか・・・
0946デフォルトの名無しさん
2007/01/12(金) 21:42:39アルゴリズムイントロダクションに乗ってた気がするけど手持ちにないし。
0947向井
2007/01/12(金) 23:12:02[2] 問題文:商品の種類・名前・単価・購入個数を入力し、以下のように出力するプログラムを作れ
商品の種類数を入力してください:○○
商品名を入力してください:A B C
商品名:A
単価:○○
個数:○○
商品名:B
単価:○○
個数:○○
商品名:C
単価:○○
個数:○○
小計:○○ 商品は○○種類です
ーーーーーーーーーーーーーーーーーー
商品名 個数 単価(円) 計(円)
A ○○ ○○ ○○
B ○○ ○○ ○○
C ○○ ○○ ○○
−−−−−−−−−−−−−−−−−−−−
小計:○○
消費税:○○
合計:○○
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VISUAL STUDIO 2005、Win32コンソールアプリケーション(.cppタイプ)
[3.3] 言語:C++
[4] 期限:明日の昼までです
[5] その他の制限:「ザ・C」を読んだだけの初心者です。#include<stdio.h>の型でお願いします
どうぞ、よろしくお願いします
0948デフォルトの名無しさん
2007/01/12(金) 23:18:300951デフォルトの名無しさん
2007/01/13(土) 00:00:52ドロネー図を作ればO(n log n)で求まるらしい
0952デフォルトの名無しさん
2007/01/13(土) 00:01:21とりあえずスキャンライン型の最近点対探索.
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3369.c
n x1 y1 x2 y2 ... xn yn
のようなファイルをプログラムの第一引数に渡す(区切り文字は改行でもいい).
第一引数を省略した場合,標準入力から同様の形式を読み込む.
0953デフォルトの名無しさん
2007/01/13(土) 01:14:23[2] 問題文(含コード&リンク):生まれてから今日までの日数の表示(閏年考慮)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
0954869 ◆xkG5F/RZlA
2007/01/13(土) 01:15:14よろしくお願いします。
0955デフォルトの名無しさん
2007/01/13(土) 01:47:18思って探したら出てきた
http://pc10.2ch.net/test/read.cgi/tech/1142467359/49
0956デフォルトの名無しさん
2007/01/13(土) 02:22:54量子化雑音の式をz変換しなきゃだめ?
0957デフォルトの名無しさん
2007/01/13(土) 02:30:040958デフォルトの名無しさん
2007/01/13(土) 02:35:54z変換って線形成なかったっけ?
(もしあるなら)量子化雑音の伝達関数をN(x)とすれば単純に足し合わせるのがいいんじゃないかと
というか"量子化雑音を組み込む"って何
むしろ居た違い死ね
0959デフォルトの名無しさん
2007/01/13(土) 02:36:31量子化雑音の式をz変換しなきゃだめ?
0960デフォルトの名無しさん
2007/01/13(土) 02:44:57量子化雑音の式が定義されてるの?
なけりゃ話にならないよ?
というよりオレも消えて欲しいと思っているから
0961デフォルトの名無しさん
2007/01/13(土) 02:47:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3370.txt
眠いからトンチンカンなことやってても許してくれ
0962デフォルトの名無しさん
2007/01/13(土) 02:53:28[2] 問題文:CUI/GUI問わずウンコの絵が出てくるアプリを作成せよ
あらかじめ作成した画像を使用することはならず、アニメーション表示されるとなおよし
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC8
[3.3] 言語:C++
[4] 期限:明後日
[5] その他の制限:なし
お願いします。
0963デフォルトの名無しさん
2007/01/13(土) 03:00:00つ カンニング竹山
0964デフォルトの名無しさん
2007/01/13(土) 03:04:25if(by==ty&&-days>=td)return 1;
を入れると未来の日付をはじけるかも・・・ 眠い・・・
0965デフォルトの名無しさん
2007/01/13(土) 03:15:30その2つの座標が結ぶ直線の通る座標を出す方法を教えてください
座標の範囲は(0,0)(600,600)です
0966デフォルトの名無しさん
2007/01/13(土) 03:25:16単純に中等数学の問題なの?
そうでなく離散座標上の話なの?
0967デフォルトの名無しさん
2007/01/13(土) 03:27:200968デフォルトの名無しさん
2007/01/13(土) 04:53:26直線上の座標は無限。
別の条件もないと特定はできない。
0969デフォルトの名無しさん
2007/01/13(土) 06:29:45だいたい正しい。その解法をキャリパー法という。
0970デフォルトの名無しさん
2007/01/13(土) 10:17:56よろしくお願いします!
0971デフォルトの名無しさん
2007/01/13(土) 11:13:00[2] 問題文(含コード&リンク):
配列に格納されたデータをソートするプログラムを作成するにあたり、
以下の機能を持つ関数を作成しプログラムを完成させなさい。
乱数を生成し配列要素に格納する
init_array(int *pa, int n)
配列要素を1行で画面に出力する
output_array(int *pa, int n)
指定された2つアドレスのデータを交換する
swap(int *x, int *y)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2003
[3.3] 言語: C
[4] 期限: 1月15日
よろしくお願いします。
0972デフォルトの名無しさん
2007/01/13(土) 11:53:15void swap(int *x, int *y)
{
*x = *x ^ *y;
*y = *x ^ *y;
*x = *x ^ *y;
retrun;
}
x = 0x01
y = 0x02
x = 0x01 xor 0x02 ... x = 0x03
y = 0x03 xor 0x02 ... y = 0x01
x = 0x03 xor 0x01 ... x = 0x02
0973972
2007/01/13(土) 11:56:27乱数を生成し配列要素に格納ってあるが
引数の意味は何?int *paは配列のアドレスでint nが要素数なわけか?
だとすると配列要素を1行で画面に出力もわかるんだが
0974デフォルトの名無しさん
2007/01/13(土) 12:07:11正しく動きません><
int x = 30;
swap(&x,&x);
0975デフォルトの名無しさん
2007/01/13(土) 12:14:32#include <stdio.h>
#define MAX_ARRAY 10
void init_array(int *pa, int n);
void swap(int *x, int *y);
void output_array(int *pa, int n);
int main(void)
{
/* その他変数割愛 */
int nArray[MAX_ARRAY];
init_array(&nArray[0], MAX_ARRAY);
/********************************************************/
/* この辺でソートするんじゃね?勉強と思って自分で考えろ */
swap();
/********************************************************/
output_array(&nArray[0], MAX_ARRAY);
return;
}
0976デフォルトの名無しさん
2007/01/13(土) 12:15:07{
int i;
srand((unsigned)time(NULL));
for(i = 0;, i < n; i++)
{
*(pa + i) = rand();
}
return;
}
void swap(int *x, int *y)
{
*x = *x ^ *y;
*y = *x ^ *y;
*x = *x ^ *y;
return;
}
0977デフォルトの名無しさん
2007/01/13(土) 12:15:42{
int i;
for(i = 0; i < n; i++)
{
fprintf(stdout, "結果 = %d", *(pa + i));
}
fprintf(stdout, "\r\n");
return;
}
0980デフォルトの名無しさん
2007/01/13(土) 12:27:44[2] 問題文(含コード&リンク):
配列を用いてリングバッファを実現せよ。ただし、データは整数型とする。
キーボードから入力された文字により以下のような動作をする。
i : 後に続いて入力されたデータをキューの末尾に挿入。
d: キューの先頭のデータを削除。キューが空ならその旨を出力。
p: キューのデータを先頭から順番に出力。
q: プログラムの終了。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: LSI C-86
[3.3] 言語: C
[4] 期限: 1月16日
[5] その他の制限: 特になし
よろしくお願いします。
0981デフォルトの名無しさん
2007/01/13(土) 12:46:33LSI C-86は環境ないんでうまく動くかはわからん。
#include<stdio.h>
int main(){
enum{QUEUE_SIZE = 10};
int queue[QUEUE_SIZE],pos=0,size=0,i;
char c;
while(scanf(" %c",&c)==1)switch(c){
default: printf("unknown operation '%c'\n",c);
break;case 'i':
if(scanf("%d",&i) != 1)continue;
else if(size == QUEUE_SIZE)printf("queue is full\n");
else queue[(pos+size++)%QUEUE_SIZE] = i;
break;case 'd':
if(size == 0) printf("queue is empty\n");
else pos = (pos+1)%QUEUE_SIZE , --size;
break;case 'p':
for(i=0;i<size;++i)printf("%d ",queue[(pos+i)%QUEUE_SIZE]);
printf("\n");
break;case 'q':return 0;
}
return 0;
}
0982RYO
2007/01/13(土) 12:58:39問題がでてきました。誰か解いてもらえないでしょうか?
自分はプログラマー超初心者で、CもC++の区別もつかないし、自分
がどの分野をやってるのかすら分かりません。
問題はPseudocode(擬似コード)を取り扱ったもので、果たしてこの
スレに書いていい分野かすら分かりません。それでも、だれか優しい人
教えてちょ
問題 擬似コードを使って一から十までのランダムで決められた
一つの数字をあてるプログラムを作る。もし、プレイヤーが数字を言い当てたら
”YOU WIN!!"とスクリーン上に表示させてプログラムが終了する。
もし、プレイヤーが数字を引き当てなければ、プログラムは、プレイヤー
に数字を引き当てるまで新しい数字を入力するよう尋ねる。
(注意点)プログラムは、もしプレイヤーが数字をはずした場合
その数字よりも大きいか小さいかをスクリーンに表示させ、もし
プレイヤーが、数字とイコール(引き当て)た場合、"YOU WIN!!"と
スクリーンに表示させる。
なので、プレイヤーが数字を引き当てなかった
場合に、プログラムがずっとプレイヤーに大きいか小さいかを尋ねる
プログラムループを作成しなければいけない。
このランダムで引き当てられた数字は、モジュールですでに書かれて
いるものとする。
問題 終了
IF THEN ELSE や FOR を使って表示させるみたいなん
だけど、誰か教えて。たぶん、基本的なところだ思うんで。
0983RYO
2007/01/13(土) 13:08:13ユーザーに入力された5つの数字の平均を計算するプログラムをつくる。
最後に 数字の合計と平均をスクリーンに表示させる。ただし5つの
数字をいれるためのループを作ってくれぇいー
0984デフォルトの名無しさん
2007/01/13(土) 13:11:28擬似コードといっても、いろんなものが世の中にあふれすぎていて、
どう書いていいのかまったく想像もつかない。
その擬似コードの規格を具体的かつ厳密に述べよ。
0986デフォルトの名無しさん
2007/01/13(土) 13:53:13C/C++の宿題を片付けます 81代目
http://pc10.2ch.net/test/read.cgi/tech/1168663908/
0988972
2007/01/13(土) 14:44:57IF THENとかだとCOBOLとかBASIC関連だと思うんだがCで組んじゃっていいのか
擬似コードだから環境は選ばないって認識でいいのか
0989972
2007/01/13(土) 14:48:06>>このランダムで引き当てられた数字は、モジュールですでに書かれているものとする。
って言うのはモジュール内で生成すればいいんだな?
とりあえず飯
0990デフォルトの名無しさん
2007/01/13(土) 14:49:43これは前に見たなぁ
0991972
2007/01/13(土) 14:57:55とりあえずこれ
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
char useInput[256];
short total, ave;
total = 0;
ave = 0;
for(i = 0; i < 5; i++)
{
fgets(&useInput[0], sizeof(useInput), stdin);
total = total + (short)atoi(&useInput[0]);
}
ave = total / 5;
fprintf(stdout, "合計 = %d\r\n", total);
fprintf(stdout, "平均 = %d\r\n", ave);
return 0;
}
0992デフォルトの名無しさん
2007/01/13(土) 15:00:20擬似コードなら日本語でちゃちゃっと書いとけばいいんでは
0993デフォルトの名無しさん
2007/01/13(土) 15:01:05{
if(x!=y){
*x = *x ^ *y;
*y = *x ^ *y;
*x = *x ^ *y;
}
retrun;
}
XORの場合って同じアドレスを排除しなきゃ駄目じゃなかったっけ?
0995デフォルトの名無しさん
2007/01/13(土) 15:09:46いいんだが初心者にfgetsやらfprintfでのI/O切り替えは酷だろうw
0996デフォルトの名無しさん
2007/01/13(土) 15:09:47こうすりゃいいってじっちゃんが言ってた
0997972
2007/01/13(土) 16:07:31多分動く
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int ans, cmp;
char useInput[256];
srand((unsigned)time(NULL));
ans = rand() % 10 + 1;
while(1)
{
fgets(&useInput[0], sizeof(useInput), stdin);
cmp = atoi(&useInput[0]);
if(ans == cmp)
{
fprintf(stdout, "You Win!!\r\n");
break;
}
else
{
ans > cmp ? fprintf(stdout, "もっと大きい\r\n") : fprintf(stdout, "もっと小さい\r\n");
}
}
return 0;
}
0998972
2007/01/13(土) 16:09:24わかるんだが昔scanfばっか使ってて抜け出すまで苦しんだ経験があるから
いっそ最初からfgetsやら使ったほうが・・・と思ってる。
>>996
おお、そっちのほうがスマートだね
0999デフォルトの名無しさん
2007/01/13(土) 16:12:26void swap(int*x,int*y)
{
    int wk;
    wk=*x;
    *x=*y;
    *y=wk;
}
そしたらこっちもメモリ・・・・・w
void init_array(int *pa, int n)
{
    srand((unsigned)time(NULL));
    while (n--)
      *pa++ = rand();
}
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。