C/C++の宿題を片付けます 80代目

1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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/
2デフォルトの名無しさん:2006/12/24(日) 23:22:04
2げとずさー
3デフォルトの名無しさん:2006/12/24(日) 23:25:18
3げと
4デフォルトの名無しさん:2006/12/25(月) 21:47:27
ttp://www.bohyoh.com/CandCPP/C/Library/srand.html
http://pc8.2ch.net/test/read.cgi/tech/1165943509/987
誰だよ、srandにstdlib.hはCなら無くてもコンパイルできるはずだが。とか言っている
無知講師は?w
5デフォルトの名無しさん:2006/12/25(月) 21:48:09
[1] 数値解析応用
[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>のみでお願いします。


よろしくお願いします。
65:2006/12/25(月) 21:49:04
スマソ
乱数が必要なので、標準関数も必要です。
よろしくお願いします
7デフォルトの名無しさん:2006/12/25(月) 22:18:55
>>4
その無知講師とやらが誰だか知らんけど、コンパイルできるはずだよ。
Cではプロトタイプ宣言必須じゃないからね。C++では必須だけど。
8デフォルトの名無しさん:2006/12/25(月) 22:33:53
>>7
>はずだよ
はっきりしないね、出来るなら出来るってなぜ実演して確信をもって答えないんですか?
9デフォルトの名無しさん:2006/12/25(月) 22:34:21
>>4
そこに書かれているのは srand のプロトタイプが
stdlib.h に書かれている、ということだけ。

定義されていない関数であっても ISO 9899:1989 3.3.2.2、
implicit function declaration で定義されていない関数の
呼び出しは適当に解釈されることが保証されている。

# ISO 9899:1999 ではこの機能は撤廃されたので
# >>7 も必ずしも正しいとはいえない。
10デフォルトの名無しさん:2006/12/25(月) 22:37:56
昔はできたってだけの話だろ
11デフォルトの名無しさん:2006/12/25(月) 22:39:06
>>10
現実問題としてC89を受け付けないCコンパイラは存在しないし
C99を受け付けないコンパイラも多い

未だに一番よく使われてるCはC89だよ
12デフォルトの名無しさん:2006/12/25(月) 22:41:43
http://search.yahoo.co.jp/search?p=srand+stdlib.h&ei=UTF-8&fr=moz2&rls=org.mozilla:ja-JP:official
srand使っているものはstdlib.hを入れているものばかりだ罠
13デフォルトの名無しさん:2006/12/25(月) 22:43:00
そりゃ、C89でプロトタイプ宣言取り込まないのは決して「良いスタイル」
ではないからな。
んでも、コンパイルできるできないって話とは次元が違うよ。
14デフォルトの名無しさん:2006/12/25(月) 22:45:51
UNIXでgcc使ってたときはstdlib.hを入れたけどなぁ。
15デフォルトの名無しさん:2006/12/25(月) 22:46:36
普通は入れる。それが良いスタイル。
入れなくともコンパイルはできるけど。
そんだけの話。
16デフォルトの名無しさん:2006/12/25(月) 23:07:04
17デフォルトの名無しさん:2006/12/26(火) 00:15:06
>>5
課題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
の内容を参考にしました。
(参考にしました、と言うよりほとんど同じ(^^;))
18922:2006/12/26(火) 03:53:17
>>前スレ972さん
そのとおりだと思います。
問題事体が文章でなくて聞き取りみたいな感じなので難しい。

time[i] のときの値を data[i] とする。なんですが、このデータは昇順されてるとは言ってないので
初めにソートだけしています。その後がよくわかりません。
いろんなケースあると思うんですが、すべてに対応し切れてないのが現状です。
19デフォルトの名無しさん:2006/12/26(火) 04:11:25
>>18
・前スレ923の境界条件
・前スレ922の例の範囲時間110~130で区切り10の場合で結果が3つとなる矛盾
を解決しないと話が進まないよ
20デフォルトの名無しさん:2006/12/26(火) 04:23:02
> 問題事体が文章でなくて聞き取りみたいな感じなので難しい。
というのは問題の難しさではなく、あんたが問題を理解してないだけ。
そんな問題を又聞きでしか理解できない俺たちに解けるわけがない。

出題者に問題を正確に聞き、仕様をきっちり立ててからもう一度書き込みな。
21デフォルトの名無しさん:2006/12/26(火) 10:17:22
[1] 授業単元:c言語
[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] その他の制限:
22デフォルトの名無しさん:2006/12/26(火) 10:54:43
1] 授業単元:c言語
[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] その他の制限:
23デフォルトの名無しさん:2006/12/26(火) 11:12:26
[1] 授業単元: Cプログラミング
[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] その他の制限:

よろしくおねがいします。
24デフォルトの名無しさん:2006/12/26(火) 11:12:34
void main( void )
{
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 );
}
25デフォルトの名無しさん:2006/12/26(火) 11:57:04
>>23
つまんねぇ事聞くけど、なんで片方txtなん?
26デフォルトの名無しさん:2006/12/26(火) 12:18:26
[1] 授業単元: C言語
[2] 問題文:
(1)文字列のリストをファイルから文字列の2次元配列に読み込み、
キーボードから読み込んだ文字列を逐次探索するプログラムを作成する。

(2)2次元の配列とポインタの配列を使って文字列のソートを行う
プログラムを作成する。ただしデータはファイルから入力し結果は
ファイルに出力するものとする。またアルゴリズムは単純選択法を
使うこと。2次元配列に読み込んだ文字列は移動せず、ポインタを
付け替えることによりソートを行うこと。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年1月5日15:00まで
[5] その他の制限: ポインタの章での問題です
2723:2006/12/26(火) 13:45:50
>>25
問題文を載せただけなんです
28デフォルトの名無しさん:2006/12/26(火) 14:01:51
>>26
超適当に書いた。
#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;
}
29デフォルトの名無しさん:2006/12/26(火) 14:42:37
[1] 授業単元:プログラミング
[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)
}

イメージとしてはこんな感じなんですが書き方がわかりません>< お願いします。
30デフォルトの名無しさん:2006/12/26(火) 14:55:32
>>29
こう?
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ループは展開してくれる・・・はず
31デフォルトの名無しさん:2006/12/26(火) 15:09:23
展開するってどういう事?
32デフォルトの名無しさん:2006/12/26(火) 15:12:08
#include <iostream.h>
#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;
}
}
33デフォルトの名無しさん:2006/12/26(火) 15:43:22
>>30 >>32
ありがとうございました!説明がへたくそですいませんでした。
先生方のを参考にしてやったところうまくできました><
34デフォルトの名無しさん:2006/12/26(火) 18:36:17
[1] 授業単元:プログラミング
[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] その他の制限:文字列操作のライブラリ関数は使ってはいけないそうです。
35デフォルトの名無しさん:2006/12/26(火) 18:49:49
見たことある問題だと思ったが見つからない
36デフォルトの名無しさん:2006/12/26(火) 18:54:16
void str_cat(const char*a, const char*b, char*c){while(*a)*c=*a,c++,a++;while(*b)*c=*b,c++,b++;}
37デフォルトの名無しさん:2006/12/26(火) 20:49:14
>>34
#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;
}
38デフォルトの名無しさん:2006/12/26(火) 21:57:00
>>28
ありがとうございます。

[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] その他の制限: ポインタの章での問題です
39デフォルトの名無しさん:2006/12/26(火) 21:57:07
内容:
[1] 授業単元:Cプログラミング演習
[2] 問題文:学籍番号(5桁の英数文字列)、英、数、国の得点(各100点満点)を
      次々に読み込んで、各人の総得点を計算の上、①読み込んだ順に
      各人のデータを、②各人の平均と標準偏差を次の形に出力する
      cプログラムを作成せよ。

      但し、プログラム作成においては
      ・学生の人数は100人以下で不定とする。(100人以下なら何人でも、
       プログラムを修正せずにうまく対処しなければならない)
      ・学生一人のデータは構造体としてまとめて、それにStudentという
       データ型名をつけること。
      ・Student型を要素とする配列を用意してプログラムを組むこと。 
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 2007年1月10日12:00まで
その他:得点データはファイルから読み込みます。./a.out<ファイル名 といった風に
 
前もありましたが複数の回答を比較したいのです 
よろしくお願いします


40デフォルトの名無しさん:2006/12/26(火) 21:58:09
>>39
以下のような形で出力してください
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

ずれてますが解釈を良心的にお願いします
41デフォルトの名無しさん:2006/12/26(火) 21:59:41
標準偏差については前スレでも物議をかました(そこまでいってない?)ようですので
解答者の判断に任せます 
42デフォルトの名無しさん:2006/12/26(火) 22:00:14
前に作った人を侮辱したいのか
43デフォルトの名無しさん:2006/12/26(火) 22:17:58
[1] 授業単元:情報技術Ⅱ
[2] 問題文(含コード&リンク):
10個の整数をキーボードから入力し,入力されたデータの平均値を求めなさい.
さらに,平均値から最も離れているデータと最も近いデータが,それぞれ何番目に入力したか
とデータの値を求めて(複数の場合はすべて)表示するプログラムを作成し,提出しなさい.
なお,10個のデータをすべて入力し終わってから,平均値などを求めること.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006年12月28日まで
[5] その他の制限:配列まで習いました。

自分でがんばってみましたが、どうしてもできませんでした。
誰かこんな自分を助けてください。
44デフォルトの名無しさん:2006/12/26(火) 22:18:53
物議ってかますものなのか
45デフォルトの名無しさん:2006/12/26(火) 22:20:11
>>43
がんばったところまで見せてもらおうか
4643:2006/12/26(火) 22:28:30
#include<stdio.h>

int 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;

こんな感じでやってみたのですが、
途中でわけがわからなくなって断念しました。
47デフォルトの名無しさん:2006/12/26(火) 22:35:46
scanf &
min=max=a[0];
aveは浮動少数じゃなくていいのかな
問題文からするとsumは入力ループよりも下で
maxやminの判定の時に位置も決定
もうすこし頑張ってみては?
48デフォルトの名無しさん:2006/12/26(火) 23:45:45
>>42
侮辱なんてとんでもない
まだコンパイルすらしていません 学校開いてないので
49デフォルトの名無しさん:2006/12/27(水) 01:18:33
>>43
こんな感じで。侮ってかかったら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;
}
50デフォルトの名無しさん:2006/12/27(水) 01:47:42
>>43
#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;
}
51デフォルトの名無しさん:2006/12/27(水) 10:34:54
オッス!オラ悟空!オラにも簡単に答えられる宿題を出してくれ!
52デフォルトの名無しさん:2006/12/27(水) 10:50:01
>>51
次の問題を解きなさい。
1+1=
53デフォルトの名無しさん:2006/12/27(水) 10:50:17
>>52 田
54デフォルトの名無しさん:2006/12/27(水) 11:11:41
>>51
[1] 授業単元:年忘れプログラミング
[2] 問題文(含コード&リンク):
C言語のソースファイルを読み込み、ifとelseを使わないソースファイルに変換するプログラムを作成せよ。
(但し変換されたソースは元のプログラムと同等の処理を行えるものとする)
[3] 環境
 [3.1] OS: なんでもOK
 [3.2] コンパイラ名とバージョン: なんでもOK
 [3.3] 言語: C/C++
[4] 期限: 12月31日23時59分
[5] その他の制限: 特になし
55デフォルトの名無しさん:2006/12/27(水) 11:32:16
>>54
ソースが肥大化するのでパス
56デフォルトの名無しさん:2006/12/27(水) 11:49:44
if (CONDITION){
EXPRESSION_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
57デフォルトの名無しさん:2006/12/27(水) 12:11:56
CONDITION が複数回評価されると等価にならなくなる可能性がでてくるので、
下のような、コンパイラがやってるっぽいことをすればいいと思う

(CONDITION)?goto LABEL_IF_TRUE001:goto LABEL_IF_FALSE001;
LABEL_IF_TRUE001:
...
goto LABEL_IF_END001
LABEL_IF_FALSE001:
...
LABEL_IF_END001:
58デフォルトの名無しさん:2006/12/27(水) 12:23:36
>>57
gotoは文であって式ではないから三項演算子の被演算子にならない。
59デフォルトの名無しさん:2006/12/27(水) 13:21:07
三項演算子を使うには関数にしないといけない?
60デフォルトの名無しさん:2006/12/27(水) 14:21:39
↓みたいな時に困らないか?
for(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:;
}
615:2006/12/27(水) 22:06:04
>>16様、>>17
ありがとうございます。参考にさせていただきます!!
実は、冬季課題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] その他の制限:特にありません。


よろしくお願いします。
62デフォルトの名無しさん:2006/12/27(水) 23:14:37
>>61
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3289.txt

なお、前回うpした複合シンプソン則のプログラムは後から確かめて
みたら1e-8の精度が出ていなかったので、収束条件を変更した。

複合台形則は、関数の形によっては複合シンプソン則に比べて収束が
極めて悪くなり、今回も1e-8の精度を得るためには収束条件をかなり
厳しくする必要があった。

もしかしたら収束条件を前回の値との差で求める方法は正しくないの
かもしれないが、真値が判明していない以上、このような方法を摂らざる
を得ないのでご承知下さい。
63デフォルトの名無しさん:2006/12/27(水) 23:18:37
>>61
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3290.txt

スマソ。複合台形則のプログラムは間違った方をうpしてしまった。
こちらを使用して下さい。

収束にはこちらの環境では4791回のループを必要としたので、問題が
ある場合は33行目のprintf()をコメントアウトしてセミコロンだけにして下さい。
64デフォルトの名無しさん:2006/12/27(水) 23:29:35
[1] 授業単元: 基礎プログラミング
[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文を使用してください。

よろしくおねがいします。。。。
6543:2006/12/28(木) 00:15:51
>>49>>50
遅ればせながら、本当にありがとうございます。
66デフォルトの名無しさん:2006/12/28(木) 00:49:00
>>64
#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;
}
6723:2006/12/28(木) 19:04:25
すいません、問題文間違えていました。
6864:2006/12/28(木) 23:40:29
>>66
ありがとうございます!
おかげさまで助かりました。。。
69デフォルトの名無しさん:2006/12/28(木) 23:41:48
>>68
* 実際の板厚が知りたいのなら標準偏差ではなく標準誤差では?
* 母集団は無限なんだから不偏分散を使うべきでは?

と先生に聞いといて下さい。
70デフォルトの名無しさん: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] その他の制限: ポインタの章での問題です
71デフォルトの名無しさん:2006/12/29(金) 22:26:41
なぜ?
72デフォルトの名無しさん:2006/12/29(金) 22:29:19
>>70
>>28に書いてあるじゃん
73デフォルトの名無しさん:2006/12/30(土) 08:46:31
[1]授業単元:
[2]問題文:

数列 a = [a_1, ..., a_n] が与えられる。
これをバブルソートするときの要素の交換回数を効率よく求めよ。
[3]環境
[3.1]OS、コンパイラ問わず。
[3.2]言語:どちらでも可。

[4]期限:一月三日。
[5]その他の制限:特になし。
74デフォルトの名無しさん:2006/12/30(土) 09:05:06
>>73
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3294.c
効率が良いかは分からんが、交換すると分かったときカウントするかと・・・
75デフォルトの名無しさん:2006/12/30(土) 09:45:13
うまく機能しなかったんじゃない?
76デフォルトの名無しさん:2006/12/30(土) 22:49:14
[1] 授業単元: 基礎プログラミング
[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文でお願いします

お世話になってます。よろしくお願いします。

77デフォルトの名無しさん:2006/12/31(日) 00:31:34
>>76 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3296.txt
エクセルでグラフ化は自分でやってね
78デフォルトの名無しさん:2006/12/31(日) 00:32:06
たまには自分でやろうな
79デフォルトの名無しさん:2006/12/31(日) 00:38:39
なんだと?誰に向かって言ってるんだお前
8077:2006/12/31(日) 00:55:12
>>76 http://up.kabubu.net/cgi/img2/19366.jpg
まあ暇だからグラフ化したよ
81デフォルトの名無しさん:2006/12/31(日) 02:12:13
>>28 はバブルソートだから?
82デフォルトの名無しさん:2006/12/31(日) 07:39:01
オッス!オラ悟空!今年も、もう今日で終わり、なんだかわくわくしてきたぞ!
オラでも年明けまでに余裕で解ける宿題を出してくれ!
83デフォルトの名無しさん:2006/12/31(日) 15:14:36
つ四則演算
84デフォルトの名無しさん:2006/12/31(日) 15:35:00
っ計算機・・・GUIで
85デフォルトの名無しさん:2006/12/31(日) 19:17:20
[1] 授業単元: 基礎プログラミング
[2] 問題文(含コード&リンク):
1. 入力の行数を数えるプログラムを作れ。
2. 入力中に現れる「NG」という単語を全て「OK」に置き換えて出力するプログラムを作れ。
3. 関数pop とpush を定義し、スタックを実装せよ。
4. スタックを用いて、逆ポーランド記法で四則演算を行うことのできるプログラムを作れ。
5. クイックソートを実装せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:borland
 [3.3] 言語: C/C++
[4] 期限:
[5] その他の制限:

よろしくお願いします。
86デフォルトの名無しさん:2006/12/31(日) 21:33:24
87デフォルトの名無しさん:2006/12/31(日) 21:39:40
[1] 情報論
[2] 1)
N×Nマス目のフロアを前後左右に移動することができるロボットがある。
  スタート地点は常に左上(x,y)=(0,0)であり、全マス目を一度だけ通り、通った順序を表示するプログラムを作りなさい。
  フロアには障害物を置けるようにする。
  条件を満たすものがない場合、できませんでした。と表示したい。
  
[3] 環境
 [3.1] Linux
 [3.2] gcc 4.0
 [3.3] 言語:C
[4] 期限:
[5] その他の制限: 特になし。

88@part1:2007/01/01(月) 00:47:41
3日くらいやっていましたが、出来なくて困っています。
どうしていいのかわかりません。
申し訳ありませんが、お助けください!

[1] コンピュータプログラミング
[2] 問題文
------------------------------------------------------------------------

サッカーのリーグ戦の順位表を記述した(添付されたファイル)CSVファイルをD&Dで入力することで、
 ①誤りがある場合、質問形式で修正でき、・・・・・※
 ②1試合分の結果を反映でき、
 ③結果を新しいファイル(形式はCSV & html)として出力できる、
コンソールアプリケーションを作成しなさい。
(チーム数は、入力したCSVによって決定されるものとする)
89デフォルトの名無しさん:2007/01/01(月) 00:48:21
順位は、
・勝ち点によって決定する。
・勝ち点が同じ場合は、得失点差によって決定する。
・得失点差が同じ場合は、得点のよって決定する。
・得点も同じ場合は、同じ順位とする。
勝ち点は、次のようになる。
・“勝ち”→ 勝ち点が 3増える。
・“引分”→ 勝ち点が 1増える。
・“負け”→ 勝ち点は増えない。

※ 順位の付け方、勝ち点の計算等、矛盾がある場合は、
   順位,勝ちの数,引分の数,負けの数,得点,失点,得失点,勝点
  のいずれに問題があるかを質問形式で修正できるようにする。
  試合は、○回戦総当りときまってはいない。
------------------------------------------------------------------------
90@part3:2007/01/01(月) 00:49:31
↑part2
[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 (ファイルサイズが大きいので、圧縮しました。)

よろしくお願いします。
91デフォルトの名無しさん:2007/01/01(月) 02:19:12
>>85
4.のみ。ここで解凍 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=
92デフォルトの名無しさん:2007/01/01(月) 02:24:03
>>85
1.
#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;
}
93デフォルトの名無しさん:2007/01/01(月) 02:27:36
>>85
3. ここで解凍 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=
94デフォルトの名無しさん:2007/01/01(月) 02:39:54
>>85
2.
#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;
}
95デフォルトの名無しさん:2007/01/01(月) 11:21:25
>>73 バブルソートの交換回数は a[i] > a[j] (i < j) なる要素対の数だから
それをマージソートしながら数えてやる.計算量 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;
}
96デフォルトの名無しさん:2007/01/01(月) 11:40:15
交換回数と比較回数を勘違いしないように(・∀・)
97デフォルトの名無しさん:2007/01/01(月) 12:20:02
すまん、なんかプログラムが大きく間違ってた.
方針は間違ってないはずなのでしばし待たれ.
9895:2007/01/01(月) 12:32:45
>>95
そんなに大きくは間違ってなかった.
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; }
の結果と比較しても厳密に一致するけど.
99デフォルトの名無しさん:2007/01/01(月) 13:46:13
100デフォルトの名無しさん:2007/01/01(月) 13:48:42
>>98
> 俺何か勘違いしてる?
ヒント:main関数がない
101デフォルトの名無しさん:2007/01/01(月) 14:35:24
>>99
申し訳ない、よくわからないので、もっとはっきりと言って貰えないかな?

>>100
入力がどう与えられるか書かれていないので省略したのだけど、駄目?
102デフォルトの名無しさん:2007/01/01(月) 14:40:38
>バブルソートの交換回数は a[i] > a[j] (i < j) なる要素対の数だから
>交換回数は、元のデータ列によって異なる
並び順によって異なる交換回数を要素の数から判断はできない
103デフォルトの名無しさん:2007/01/01(月) 15:06:36
>>73 バブルソートの交換回数を調べる
#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;
}
104デフォルトの名無しさん:2007/01/01(月) 15:17:36
>>102
それが何か?
105デフォルトの名無しさん:2007/01/01(月) 15:24:11
101 名前:デフォルトの名無しさん 投稿日:2007/01/01(月) 14:35:24
>>99
申し訳ない、よくわからないので、もっとはっきりと言って貰えないかな?

95 名前:デフォルトの名無しさん 投稿日:2007/01/01(月) 11:21:25
>>73 バブルソートの交換回数は a[i] > a[j] (i < j) なる要素対の数だから
それをマージソートしながら数えてやる.計算量 O(n log n).
106103:2007/01/01(月) 15:32:55
>>103 の間違いも指摘してくれ
107デフォルトの名無しさん:2007/01/01(月) 15:37:50
>>103
元データを {1, 2, 3} とするとバブルソートしたとき
{2, 1, 3}
{2, 3, 1}
{3, 2, 1}
2 3 1
2 1 3
1 2 3
108デフォルトの名無しさん:2007/01/01(月) 15:39:58
途中で送信してもうた orz
元データを {1, 2, 3} とするとバブルソートしたとき
{1, 2, 3}
{2, 1, 3}
{2, 3, 1}
{3, 2, 1}
となるが >>103 のアルゴリズムだと
上記の 2 が移動した回数がカウントされない
10995:2007/01/01(月) 15:54:22
>>105
102 の「並び順によって異なる交換回数を要素の数から
判断はできない」というのは明らかに正しい主張だけれど,
それは 95 の「交換回数は a[i] > a[j] (i < j) なる要素対の数」
という主張に矛盾しない.

後者は条件を満たす要素のペアの数なので,並び順を実際に
見ていることになる.決して要素の数だけで判断しているわけではない.
110デフォルトの名無しさん:2007/01/01(月) 18:31:51
手元にある複数の楽曲ファイルを組み合わせて、手持ちの記録媒体(CD等)の空きが最も少なくなるようなコピーのしかたを決定する。

という問題ですがどうやったらいいか分からないので教えてください
111デフォルトの名無しさん:2007/01/01(月) 18:33:50
112デフォルトの名無しさん:2007/01/01(月) 22:48:08
[1] 授業単元: 基礎プログラミング
[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++でお願いします。。。
よろしくお願いします。
113デフォルトの名無しさん:2007/01/02(火) 00:29:01
>>87
お願いします。
114デフォルトの名無しさん:2007/01/02(火) 00:38:20
>>113
Nの範囲はどれくらいまで?
全探索して解くアルゴリズムは思いついたけど
これだとNの値がある程度より増えると急激に難しくなる。
効率のいいやつは考え中。
115デフォルトの名無しさん:2007/01/02(火) 00:39:18
>>112
正月で暇だからやってみる
小一時間待ってろ
116112:2007/01/02(火) 00:42:51
>>115
ありがとうございます。
でももう眠いので寝てもいいでしょうか。。。
117115ではないが:2007/01/02(火) 00:44:23
118デフォルトの名無しさん:2007/01/02(火) 01:04:39
[1] 授業単元:情報技術
[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日

正月早々申し訳ございませんが、よろしくお願いします。
119デフォルトの名無しさん:2007/01/02(火) 01:15:30
>>118
#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");
    }
}
120デフォルトの名無しさん:2007/01/02(火) 01:16:08
>>118
#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;
}
121118:2007/01/02(火) 02:26:20
迅速なご回答ありがとうございます。
12277:2007/01/02(火) 02:29:11
>>112 俺がC++で答えてやっただろーが
123デフォルトの名無しさん:2007/01/02(火) 02:45:20
>>122
見てみたけど、中途半端なC++具合だな。互換性があるからいいんだと
言われればそれまでだが。
124デフォルトの名無しさん:2007/01/02(火) 02:53:06
[1] 授業単元: プログラミング
[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年生の初心者なので入門書レベルのコードでお願いします。

よろしくお願いします
12577:2007/01/02(火) 02:59:31
>>123
sprintfの部分と関数分割してないところ?
sprintf俺C++でよく使うんだが。。。
12677:2007/01/02(火) 03:00:54
あと定数にconst つけてねーや 忘れてたごめん
127デフォルトの名無しさん:2007/01/02(火) 03:04:25
>>124
#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++;
    }
}
128124:2007/01/02(火) 03:07:54
>>127さんありがとうございます!

<訂正>
void lower(char *p_data);
書き忘れてました。すいません。
129デフォルトの名無しさん:2007/01/02(火) 03:11:31
>>126
・変数を全て関数の先頭で宣言している。
・sprintfを使用している。(しかも<cstdio>のインクルードがない)
・fileはスコープを抜ければ自動的にcloseするのだから不要。
・str[200]なる決め打ちマジックナンバーが存在している。
以上について、個人的にはあまり好ましくないと感じる。あくまで、個人的に。
130124: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年生の初心者なので入門書レベルのコードでお願いします。

よろしくお願いします


131デフォルトの名無しさん:2007/01/02(火) 03:39:35
>>129
>・変数を全て関数の先頭で宣言している。
Effective C++に変数は必要なときに使えって書いてあったの思い出した、すません。
>・sprintfを使用している。(しかも<cstdio>のインクルードがない)
sprintfはてっきりC++標準かと思ってた
>・fileはスコープを抜ければ自動的にcloseするのだから不要。
初耳。勉強になった
>・str[200]なる決め打ちマジックナンバーが存在している。
これは普通にすいません。
132デフォルトの名無しさん:2007/01/02(火) 05:02:40
>>129ではないが。
>>131
sprintf()はc++標準関数でもあるが、使うのならcstdioをincludeしないのはまずい
ってこったろ。
実際にはiostreamあたりから間接的にincludeされるからコンパイル
できるんだろうが、それが保障されてるわけじゃないしな。

あと、せっかくcmathインクルードしてるんだし、π は M_PI
π/4 は M_PI_4 でいいんじゃないのか?

>(double)time
このキャストも不要だな。
133デフォルトの名無しさん:2007/01/02(火) 07:40:51
>>114
効率のよいアルゴリズムはおそらく存在しない.
これは制限格子上のハミルトン閉路問題なので,
NP 完全問題になる.
134デフォルトの名無しさん:2007/01/02(火) 08:18:21
いつも思うんだが、なんでみんな回答が違うの?
効率とか速度を考えれば似たような物に行きつくと思うのだが・・・

各人の癖、というやつか?
135デフォルトの名無しさん:2007/01/02(火) 08:29:02
そもそも効率とか速度を考慮するような問題がほとんど(ry
136デフォルトの名無しさん:2007/01/02(火) 08:31:08
効率の悪いやり方をするんじゃねーぞゴルァ
って出題者の隠れたお言葉に気づき賜えw
137デフォルトの名無しさん:2007/01/02(火) 08:46:19
だれが書いてもほとんど同じのお馴染みの問題ばかり
効率悪く書く方が難しい
138デフォルトの名無しさん:2007/01/02(火) 08:49:20
だから課題を出された生徒に対してであって、ここの回答者に対してじゃないってw
ありきたりの答えなんだから、妙なやり方をするんじゃねーぞと
13970:2007/01/02(火) 09:58:07
>>86さん
ありがとうございました。
14087:2007/01/02(火) 10:48:08
>>114

Nはそれほど大きくはないかと思います。せいぜい20くらいがよければいいです。
14187:2007/01/02(火) 11:09:43
>>114
すいません。間違えました。
20程度ができれば大丈夫です。
142デフォルトの名無しさん:2007/01/02(火) 11:16:50
143デフォルトの名無しさん:2007/01/02(火) 11:38:30
>>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';
}
144デフォルトの名無しさん:2007/01/02(火) 11:42:09
>>143
フィギュアスケートの織田信成だって最後はゲッツ!でしめてだ、良いじゃねーかw
ちうか何が しとけや だ?てめぇ?ぶちのめすぞ?偉そうにしている割には
てめぇのソースくそ杉w 冬厨がでしゃばってじゃねーぞたこw
145デフォルトの名無しさん:2007/01/02(火) 11:43:36
>>143
っつーかお前、それを入れ替えたソースをコンパイルしてみろ。
正常に実行されないからw
146デフォルトの名無しさん:2007/01/02(火) 11:45:08
>>143
10文字より多く入力した場合を考える必要はないが
もし11文字以上入力した場合、それだとおかしくなるよ
お前の汎用性のなさはどうでも良い。
どうしてそういうソースを書いたか理解できないなら
いちいちくそレスしないで自分で書いたソースを提出しろ、餓鬼
147デフォルトの名無しさん:2007/01/02(火) 11:47:45
>>143
ぷぷっ、なんだそれ?w
かっこつけたつもりが自爆してやんのw
148デフォルトの名無しさん:2007/01/02(火) 11:48:24
>>143
> c != '\n'
なんだこれ?お前バカじゃね?小学生からやり直せやw
149デフォルトの名無しさん:2007/01/02(火) 11:48:30
>>144
一体何をファビョってんのかね君は。

>>142のget_string()は>>143よりも長い上に、バッファオーバーランを
防ぎようが無い、互換性のためだけに残されている非推奨関数gets()を使っている。
main()ではstrcmp()を使っていながら、バイトコピーにmemcpy()を
使っていない点も不可解だ。というか、入力範囲外まで無駄にコピーしてるな。

>>130の環境はlinux&gccだが、gccならget()を使っているコードには
文句を言ってくるよ。
150デフォルトの名無しさん:2007/01/02(火) 11:49:15
>>144-148
自演乙
151デフォルトの名無しさん:2007/01/02(火) 11:55:17
>>149
>バッファオーバーランを 防ぎようが無い
余裕で防いでいるが?お前のソースの方が防げていないことが
11文字以上入力した場合に不正に処理されることでバレバレw
良いから知ったかは黙ってろ、初心者めが。ここでレスすることで
上級者気取りか?ばーーーかwwww
他人のソースをどうこう言うくせに、お前はmainから書いたソース出してねーじゃんw
ぐだぐだ言う前にてめぇが1から書いたソースを出せばそれで良いんだよ。
それが分からないならこんなスレにくるな、日ごろここに来ていない冬厨w
152デフォルトの名無しさん:2007/01/02(火) 11:55:52
swapしたいんですけど分かりません。reinterpret_castを使うみたいですけど。。。

#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;
}
153デフォルトの名無しさん:2007/01/02(火) 11:56:42
143 名前:デフォルトの名無しさん 投稿日:2007/01/02(火) 11:38:30
>>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
154デフォルトの名無しさん:2007/01/02(火) 11:58:06
>>88-90
のURL行ける?
155デフォルトの名無しさん:2007/01/02(火) 11:58:08
156デフォルトの名無しさん:2007/01/02(火) 11:58:53
>>155
お前のソースを書け、プログラマの常識だからw
157デフォルトの名無しさん:2007/01/02(火) 11:59:04
>>152
swap() に与える引数
たぶんx,yの要素全部入れ替えたいんだろからアドレスちゃんと渡さないと
158デフォルトの名無しさん:2007/01/02(火) 12:00:07
>>152
> swap(&x, &y);
swap(&x[i], &y[i]);
159152:2007/01/02(火) 12:01:04
ありがとうございます。
160デフォルトの名無しさん:2007/01/02(火) 12:01:34
>>155
ちゃんとそれを理解して言っているのか?
起こる場合の説明について
# ユーザが200文字以上のメールアドレスを入力する。
# プログラムがバッファの大きさをチェックせずに入力データを書き込む。
# バッファとして確保した領域をはみだしてデータが書き込まれてしまう。
比較するのに使う文字列を格納するs1、s2にはそれが起こらない措置をとっているが?
何のための char buf[256]を用意して文字列を10文字以内でコピーしているか理解しろよw
んじゃな、三流プログラマw
161デフォルトの名無しさん:2007/01/02(火) 12:02:34
>>155
>仮にはみ出した部分にプログラムの動作上意味を持つデータがあれば、
>これを上書きして破壊することにより、プログラムはユーザの意図しない挙動を示すであろう。
>>143で11文字以上入力するとおかしくなるんすけどぉ~?
162デフォルトの名無しさん:2007/01/02(火) 12:04:12
>>160
えーとね。
試しに、256文字以上入力してみなよ。そうすりゃ分かるから。

君は256byteしかバッファを用意していないが、gets()はそんなことは
無関係にバファオーバーランを引き起こすのよ。
だから、危険な関数なの。
163デフォルトの名無しさん:2007/01/02(火) 12:06:53
>>161
何が「おかしく」なるのか言ってみそ?
少なくともバッファオーバーランは起きず、次回のget_string()で
続きの文字が読み取られるだけだろう?

「11文字以上入力された行については、残りの文字は全て破棄する」などという
仕様はどこにもないが、もしそうであれば、そのように書くのも簡単だ。
が、gets()だけはまずい。
164デフォルトの名無しさん:2007/01/02(火) 12:08:07
>>143が想像を絶する無能でFAなのになんでこじれるのよ
アホはアホでスルーしとけ
165デフォルトの名無しさん:2007/01/02(火) 12:09:48
つうかここまでファビョった奴は流石にはじめて見たわ
何を指摘されてるのか、何が問題なのかもさっぱり理解もしてないし……

小学生か?>>142
166デフォルトの名無しさん:2007/01/02(火) 12:14:24
>>165
いや、何が問題かの指摘を分かっているかどうかはともかく
>>143が偉そうにレスした割には、ソース全部を書いていない他人の批判で
なおかつそのソースが不完全どころか自分がバッファオーバーランをする
ソースを書いているのが笑えるw
お前が幼稚園以下の知能の低いサルだなw
悔しかったら自分で書いたソースを出せよ?プログラマの常識だろ?w
167デフォルトの名無しさん:2007/01/02(火) 12:15:45
>>166
えーと、君、バッファオーバーランの意味分かってるのか?
>>143のソースではバッファオーバーランは発生しないのだが。
168デフォルトの名無しさん:2007/01/02(火) 12:15:55
>>162
>試しに、256文字以上入力してみなよ
bufに問題が起こるのはわかっているが、それを指摘する前に
お前がちゃんとソースを書けよ?うざいんだよ、このスレの趣旨分かってねーだろ?
ここは他人のソースを批判しにくるスレじゃない。ごちゃごちゃ言うまえに
てめぇ正しいソースを書いてから一蹴しろ?
お前のやっていることは、他人の落ち度を 自分基準 で言う割には
自分の基準もぐだぐだで、指摘したつもりがそれも間違っていて
恥さらしをしただけだな。とにかくごちゃごちゃ言ってないでお前の書いたソースを出せ、でなきゃ黙ってろ。
169デフォルトの名無しさん:2007/01/02(火) 12:17:15
>>167
いや、余裕でしているよ。11文字以上入力してみろよ?
256文字も打つ気しないなぁ。人間って間違えるからさ
10文字入力したつもりでも1文字くらい多く入力しちゃうこともあるんだよねw
まさか100文字以上も入力する奴いるかよ?w
あのCUIで?w笑える、一生文字入力してろ、知ったかの墓穴堀バカw
170デフォルトの名無しさん:2007/01/02(火) 12:18:16
>142が見れないんだけど、消したの?
171デフォルトの名無しさん:2007/01/02(火) 12:18:36
>>169
大量の入力を与えるのはリダイレクトすれば簡単だけどな
172デフォルトの名無しさん:2007/01/02(火) 12:19:24
あ、ほんとだ。見えなくなってるね。
煽りまくってるのに、証拠は隠滅したのか>>142君はw
173デフォルトの名無しさん:2007/01/02(火) 12:19:38
>>143は間違ったソースしかかけないくせに、他人のソースの穴を指摘するだけの
バカです。自分が全部ソースを書けば良いだけじゃん。自分仕様のものを出せよ。
それはこれこれどういう問題があるから って話になってんだ?
現代において完璧なものがないから、何事も問題があることくらい分かってんだよ。
問題がなきゃ交通事故も犯罪も起こらない罠w
そこを人間の意志で問題を減らしていくことが必要なんじゃん。
お前みたいな問題を自分で起こす奴は社会に出てこないで檻の中に戻れよ、な?
174デフォルトの名無しさん:2007/01/02(火) 12:20:33
>>172
なんか必死ですね~~~wwwww
お前のソースはここに残って、自分の間違い(バッファーオーバーラン)を
自分で指摘したのに自分が起こしていた証拠を残してしまうねw
とにかく必死だな、低学歴w
175デフォルトの名無しさん:2007/01/02(火) 12:22:24
ってかソースをもう一度アップしてもらえません?(自信あるなら)
それにオーバーランするなら、それをプリントスクリーンしてアップすればいいことじゃないの?
176デフォルトの名無しさん:2007/01/02(火) 12:22:30
さぁ~~~~みなさん!11文字以上を入力して試してみよう。↓これくらいにしとけや?
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 != '\n';
なんすかこれ?(プ
177デフォルトの名無しさん:2007/01/02(火) 12:23:41
今北産業

もとのソースが消失してるから訳和漢ね
178デフォルトの名無しさん:2007/01/02(火) 12:23:59
その前になぜfgetsを使わなかったの?
179デフォルトの名無しさん:2007/01/02(火) 12:24:32
>>175
gets()がLinuxではタブーだと分かった以上出す必要ないだろ。
入力処理のライブラリを>>142に書き換えて提出しなさいw
11文字以上入力した場合、不具合が起こるから。256文字以内なら
オーバーランしないソースは洋ナシってことで、以後放置よろ。
180デフォルトの名無しさん:2007/01/02(火) 12:25:37
入力処理のライブラリを>>143に書き換えて、だった、すまそw
んじゃ、後はバッファオーバーランを指摘したのに自分で起こした
>>143がここを仕切るってことで、がんばれよ、墓穴堀さんw
181デフォルトの名無しさん:2007/01/02(火) 12:29:27
>>143はデバッグで追えばすぐに気づくことなのに・・・
偉そうに言ってる割にはマジでカスだなww
182デフォルトの名無しさん:2007/01/02(火) 12:31:23
つーか>143がおかしくなるのは>142の中に入れたときなんじゃねーの?w
普通に使えばオーバーフローしないだろw
183デフォルトの名無しさん:2007/01/02(火) 12:32:41
今見たばかりでよく分からないけど、
どっちのソースも現状、mainから書いたのがすべて見れないのが
混乱させている気がする。レスだけ多くなる一方だいし。
184143:2007/01/02(火) 12:38:15
#include <stdio.h>

void 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;
}
185143:2007/01/02(火) 12:39:10
ぐだぐだうるさいから、11文字を超えた場合は再入力を促す
超親切仕様にしてやったぞ。
186デフォルトの名無しさん:2007/01/02(火) 12:42:09
142=143で荒らしたいためにわざと阿呆なコード書いてるんじゃないか。
187デフォルトの名無しさん:2007/01/02(火) 12:48:38
>>185
きめぇソース書くなよ、最後まで粘着、しつこいお前が一番うぜぇ
このスレの趣旨が分かってないなら二度とくるな
ここはお前の絶対評価の場じゃないし、そのソースもきめぇ
うるさいのはむしろお前だから。ソースも書いてないくせに偉そうにして、馬鹿だろ。
>>124
>C1年生の初心者なので入門書レベルのコードでお願いします
分かったか?お前は肝心なものも忘れているんだよw
188デフォルトの名無しさん:2007/01/02(火) 12:52:35
>>187
>>185はいまとなっては見れない>>142のコードと違って、

・バッファオーバーランは発生しない
・10文字を超過する入力には再入力を促す
・標準関数はstdio.hの非常に基本的なものしか使っていない
 (>>142はstring.hのものも使っていたな)

のだが。
>>185のどこが「入門書レベルのコード」を超過しているのかね?
189デフォルトの名無しさん:2007/01/02(火) 12:53:11
>>181 >>182
> >142の中に入れたときなんじゃねーの?w
だから最初っからmainも書いて出すべきだったろ?分かってないのはお前
190デフォルトの名無しさん:2007/01/02(火) 12:55:09
>>188
自分を自分で援護、擁護ですか?それが何か?
問題は>>184が間違っているってことじゃない。
最初っから書いていない奴が何批判を始めてんだと?
そこから間違っているから荒れたんだろ、お前もうぜぇ
191デフォルトの名無しさん:2007/01/02(火) 12:55:42
ていうかバッファオーバーランの意味も知らずにファビョってただけでしょ
アンタが……
gets()の危険性も知らないなんて恥ずかしいよ。
192デフォルトの名無しさん:2007/01/02(火) 12:56:24
>>188
> 標準関数はstdio.hの非常に基本的なものしか使っていない
すいません、モロに strcmp を使っていて string.hがないという
コンパイルエラーが起きたんすけど・・・
193デフォルトの名無しさん:2007/01/02(火) 12:57:14
>>192
んがぁ!
失礼。全くその通り。
194デフォルトの名無しさん:2007/01/02(火) 12:57:27
>>191
し  つ  こ  い  お前も起こしたバッファーオーバーランを持ち出して
まだ自爆、墓穴堀を晒したいのかハゲw
195デフォルトの名無しさん:2007/01/02(火) 12:58:28
>>194
いやだから、起こさないでしょ。
>>143のコードでどうやって起こすの?
size引数に実際より小さな値を渡さない限りは起きないでしょ。
>>184
> printf("%s\n", strcmp(buff[0], buff[1]) ? "Not equal": "equal");
Call to function 'strcmp' with no prototype in function main
197デフォルトの名無しさん:2007/01/02(火) 13:00:03
>>184がエラーになるコンパイラって、C99モードでコンパイルしてる?
C89なら、警告は出るかもしらんが、コンパイルは出来るはずだけど。
まぁ、俺が悪かったよ。
198デフォルトの名無しさん:2007/01/02(火) 13:03:46
これからは指摘でふぁびょる前に自分が書いたソースを出してから意見しましょうね。
もっとも、他人のソースの批判をする場所じゃないから、ここ。
ぐだぐだいちゃもんつける前に、自分がソースを書いて自分がとった手段を明確に
示せば良いだけ。出さない奴は卑怯者。そう、>>143みたいに結局mainを出さずに
その後、議論になった10文字より多かった場合のトラブルを他人に指摘されて
直しただけではだめってこと。
199デフォルトの名無しさん:2007/01/02(火) 13:13:25
なにこのくだらない言い争い
ネタでもつまんね
200デフォルトの名無しさん:2007/01/02(火) 13:14:47
ってかレスが増えてわからなくなった。
他にいままだ残っている宿題ってなんかあった?
201デフォルトの名無しさん:2007/01/02(火) 13:16:21
バッファオーバーランを知らないバカと標準入力のバッファがわかってないバカの喧嘩。
20287:2007/01/02(火) 13:34:12
>>200
87お願い。
203デフォルトの名無しさん:2007/01/02(火) 13:36:52
[1] 授業単元:
[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] その他の制限: 特になし
204130:2007/01/02(火) 13:42:47
たくさんのレスいただいてありがとうございます。
142はもう消えているみたいだしどれを参考にすればよいのでしょうか?

書き忘れましたがコーディング規約でgetsとscanfは使わずに
fgetsとgetcharで作るように書かれてます。
205デフォルトの名無しさん:2007/01/02(火) 13:43:59
>>204
>>184にstring.hを追加して使えばおk
206デフォルトの名無しさん:2007/01/02(火) 14:09:33
>204
void 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);}
207デフォルトの名無しさん:2007/01/02(火) 14:14:15
>>206
stdinに対するfflush()の挙動は処理系依存だというのに

なんでこうも使いたがる奴が多いのか
208デフォルトの名無しさん:2007/01/02(火) 14:29:45
>>207
だからうざいって、お前はひっこんでろ。
他人の批判をする前に自分のソースを出せつっただろ?
209デフォルトの名無しさん:2007/01/02(火) 14:40:40
どちらにせよstdinをフラッシュする
規定された方法が無いんだから仕方ないんじゃ。

rewind(stdin)もfseek(stdin,0,SEEK_SET)も出来る処理系はあるけど
動作が保障されてるやり方じゃない。
210デフォルトの名無しさん:2007/01/02(火) 14:40:58
>>208
だから、>>205でいいのでは?
211デフォルトの名無しさん:2007/01/02(火) 14:45:40
>>209
stdioのバッファを空にしたいというよりは、単に行末まで
読み飛ばしたいだけなんだから、いくらでも方法はあるはずだが。
scanf("%*[^\n]%*c");
でもいいし、
scanf()を使わないなら、>>205のやりかたでもいい。
212デフォルトの名無しさん:2007/01/02(火) 14:55:53
ありきたりな定石を載せたサイトでも作ればぁ~?
文字の入力受付はこうとか、ありきたりなソートに比較回数、交換回数を数えるものとか
そういったところまでありきたりなものが書かれたやつとか
213デフォルトの名無しさん:2007/01/02(火) 15:04:17
>>212
ここは丸投げスレだし、必要無いんじゃないかな?
丸投げでない人へは、俺に聞けスレへの誘導だけで良いと思う。
214デフォルトの名無しさん:2007/01/02(火) 15:16:26
そうだね。とりあえず課題できればいいって人と職人のスレだからね。
215デフォルトの名無しさん:2007/01/02(火) 15:46:29
88却下。俺にはできん...
216デフォルトの名無しさん:2007/01/02(火) 17:04:56
>>87
難しいな。それなりに枝は刈ったつもりだけど、10x10 程度でも
下みたいに選択肢は多いのにクリア不能の盤面がきつい。
(ずれるので等幅フォントで見てください)

@......#.#
.......#..
....#####.
..........
..........
..........
..........
..........
..........
..........
217デフォルトの名無しさん:2007/01/02(火) 17:12:59
>>212
wikiがあるからぜひそこに書き記してくれ
218デフォルトの名無しさん:2007/01/02(火) 18:25:20
つか>>87てNP-hardじゃねえの?
219デフォルトの名無しさん:2007/01/02(火) 18:33:45
うむ。更に言うとNP-completeだな。
220デフォルトの名無しさん:2007/01/02(火) 18:56:50
>>219
完全って証明できるの?
221デフォルトの名無しさん:2007/01/02(火) 19:03:09
ハミルトン路問題って一般的にNP完全だっけか?
222デフォルトの名無しさん:2007/01/02(火) 19:22:00
一般的にという意味がよくわからないが、ハミルトン閉路問題は NP 完全。
これはグラフが相当制限されているが、それでも >>133 にあるように NP 完全。

証明は平面グラフのハミルトン閉路に帰着して行う。ただし、それほど簡単ではない。
223デフォルトの名無しさん:2007/01/02(火) 19:41:33
20x20なんて解けんだろ。
そんな宿題でるか普通?
224デフォルトの名無しさん:2007/01/02(火) 20:23:53
正直、この手の証明とか全く見たことなくて素人考えなのだけど
ハミルトン路の問題と、ハミルトン閉路の問題で違いが出たりはしないの?
225デフォルトの名無しさん:2007/01/02(火) 21:26:49
[1] 授業単元:c
[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] その他の制限:

よろしくお願いします
226デフォルトの名無しさん:2007/01/02(火) 21:34:36
一辺の長さを適当な刻み幅で増加させて
各ステップで立方体の体積を計算し、
その体積が初めて100を超えたときに
一辺の長さと体積を表示するプログラムを作成しなさい。
このプログラムでは一辺の長さの初期値と刻み幅を
キー入力で与えるようにすること。

結果表示の例)
刻み幅=0.01
辺の長さ=4.65 体積=100.545

この問題わかる方いますかぁ??
学校で始めたばかりなんですが、
全然わかりません。。。
よろしくお願いします。
227デフォルトの名無しさん:2007/01/02(火) 21:40:52
>>226
>>1読んで書き直し
228デフォルトの名無しさん:2007/01/02(火) 21:58:33
>>224
ハミルトン路問題とハミルトン閉路問題の変換は容易.
以下 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 について行えば,ハミルトン閉路があるかどうか判定できる.


どっちの構成も図を描けばやりたいことは分かるとおもう.
229デフォルトの名無しさん:2007/01/02(火) 22:38:10
230デフォルトの名無しさん:2007/01/02(火) 22:47:41
>229
数字の後に数字以外を入力しても正しく入力されたことになっちゃうよ。
231デフォルトの名無しさん:2007/01/02(火) 22:50:22
>>230
そういう仕様でなんら問題ないよ。むしろそういう入力をする方がどうかと。
atoiも数字以外の英数文字があってもそれを無視して先頭の数字を
数値として認識するし、そういうもんだと割り切れば良いだけ。
232デフォルトの名無しさん:2007/01/02(火) 22:52:30
233デフォルトの名無しさん:2007/01/02(火) 23:02:38
[1] 授業単元:
[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] その他の制限: よろしく願いします。
234デフォルトの名無しさん:2007/01/02(火) 23:12:44
>>228
あー、ちょっと点を加えると相互の問題に変換できるのか
図に描いてみて把握した。タメになった㌧クス
235112:2007/01/02(火) 23:35:19
遅ればせながら、ありがとうございました。
また何かありましたら、よろしくお願いします。。。
236デフォルトの名無しさん:2007/01/03(水) 00:28:05
[1] 授業単元:
[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日まで]
お願いします。
237デフォルトの名無しさん:2007/01/03(水) 00:47:42
>>236
#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;
}
238デフォルトの名無しさん:2007/01/03(水) 00:51:41
それじゃ誤差が酷くなりそうな気がするが
23987:2007/01/03(水) 01:08:22
>>216
とりあえず、探索の方法だけでもヒントがいただければ…
10×10程度ができれば大丈夫みたいです…すいません。
240デフォルトの名無しさん:2007/01/03(水) 01:21:45
241デフォルトの名無しさん:2007/01/03(水) 02:00:41
>>240
本当にありがとうございます。助かりました。
242デフォルトの名無しさん:2007/01/03(水) 02:45:13
>>239
例えば今回の場合、各マスは上下左右4方向に繋がっていて、入ってきた
方向へは動けないので、各マスごとに最大3方向から1方向を決定することになる。

仮に全マス数100(N=10)、通過できるマスが半数の50個の場合を考えると、
答えがないかどうかをチェックするために大雑把に3の50乗個の道を調べないと
いけない。これでは、もし1秒間に平均1億個の道をチェックできたとしても、
解決までに約2億年もかかる計算になる。

だから論理上正しいだけのプログラムを作ったところで、よほどNを小さくするとか
よほど易しい特別なパターンでない限り、答えを出したり
>条件を満たすものがない場合、できませんでした。と表示
したりはできない。
243デフォルトの名無しさん:2007/01/03(水) 02:57:17
>>203
lengthは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; }
244デフォルトの名無しさん:2007/01/03(水) 07:00:58
>>239
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3310.c

10×10 でも解けない盤面があるので未完成だが.
現在やっていることは

1. ハッシュで既出盤面をチェック.
2. 白マスと黒マスの個数が違うとクリア不能.
3. 非連結のときはクリア不能.
4. 行き止まりが多すぎるとクリア不能.

今後の加速の方針としては,ハッシュ方法を見直すことと,
アドホックにクリア不能パターンを列挙して枝を刈ることがある.


*問題のサイズはプログラムに対して相当影響するので
 適当なことを言うと参考にしづらいものしか出てこないよ.
245デフォルトの名無しさん:2007/01/03(水) 09:17:17
>>203
243では数値の範囲を自然数に限定してしまったので,実数まで拡張したものを載せときます.
引数,返り値,効率に関しては上と同じ.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); }
246デフォルトの名無しさん:2007/01/03(水) 10:17:54
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):時間をdouble型に??時??分??秒.??ミリ秒として格納しているとして
二つのdoubleの差をミリ秒で求めるには?
[3] 環境ウィンドウズ
言語C++
例90004.45と85958.40だと答えは6000.5
 9:00;04.45 8:59:58.40
なんですが1秒は1000ミリ秒でしたっけ?
100ミリ秒の気もするのですが、よろしくお願いします。
247デフォルトの名無しさん:2007/01/03(水) 10:34:53
ミリは1/1000
248デフォルトの名無しさん:2007/01/03(水) 11:01:18
>>154
>>88-90
>のURL行ける?
見れませんでした?見れると思います。

>>215
>88却下。俺にはできん...
質問の仕方が悪かったですか?
(154さんと同じ方ですか?)
249デフォルトの名無しさん:2007/01/03(水) 11:29:42
>246
90004.45と85958.40だと6050ミリ秒じゃないの?
250デフォルトの名無しさん:2007/01/03(水) 12:27:08
C++の宿題です。お願いします。

【問】
キーと値のペアを扱う、二分木クラスを自作せよ。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();
251デフォルトの名無しさん:2007/01/03(水) 23:43:23
[1] 授業単元:Cによるプログラミング実習
[2] 問題文(含コード&リンク):
生年月日を入力させ、その人が何日生きたかを表示させるプログラムを書け。
(閏年も考慮すること)
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: 2007/01/08
[5] その他の制限: なし
252デフォルトの名無しさん:2007/01/04(木) 00:58:42
>>251
#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;
}
253デフォルトの名無しさん: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)を入れること(四角形内部の点を入力すること)。

254253: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] その他の制限:とくになし。
255デフォルトの名無しさん:2007/01/04(木) 01:42:22
[1] 授業単元:プログラミング
[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まで

よろしくお願いします。
256デフォルトの名無しさん:2007/01/04(木) 02:02:46
>>250
ここで解凍 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=
257デフォルトの名無しさん:2007/01/04(木) 02:24:41
>255
#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;
}
258255:2007/01/04(木) 02:54:40
>>257
ありがとうございます。
259250:2007/01/04(木) 10:05:11
>>256
ありがとうございました。
参考にさせていただきます。

今後は質問のテンプレに従うようにします。すみません。
260デフォルトの名無しさん:2007/01/04(木) 11:56:19
[1] 授業単元: 情報1
[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>だけでお願いします。
261デフォルトの名無しさん:2007/01/04(木) 12:22:41
>>260
#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]ってやったほうがいい気がするんだがまあいいか
262261:2007/01/04(木) 12:24:41
あ、tmp = (tmp >= 0) ? tmp : -tmp;  のところが分かりにくかったら
if( tmp < 0 ) tmp = -tmp; って変えてね
むしろこっちのほうがいいな
263261:2007/01/04(木) 12:28:44
>>260 ごめん新年早々ぼけてるわ
>>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;
}
264261:2007/01/04(木) 12:30:35
if( tmp < 0 ) tmp = -tmp;
printf("%d\n",tmp);

ここのprintfも消して
265デフォルトの名無しさん:2007/01/04(木) 12:30:46
>>261
値を入れてください:1234567
一番近い値は 12 です。
266デフォルトの名無しさん:2007/01/04(木) 12:31:39
あ、直したのね。
267デフォルトの名無しさん:2007/01/04(木) 12:32:52
もうごちゃごちゃしてて間違っているんでうロダ使ってください ><;
268デフォルトの名無しさん:2007/01/04(木) 12:35:13
>263
>min = data - a[0]
269261:2007/01/04(木) 12:37:25
270デフォルトの名無しさん:2007/01/04(木) 12:43:28
>269
263のforの初期設定部。
>for( i = 0 , min = data - a[0] , num = 0; i < SIZE ; ++i ) {
min = data - a[0] じゃダメ。
271お願いします:2007/01/04(木) 12:54:06
【テーマ】
料金の割引
【プログラム名】
wari.c
【処理内容】
A商品はまとめて買うと、お得なな割引サービスがある 。
購入数量を与えて支払料金を計算する。
なお、A商品の1個当たりの単価は適当に決めてよい。
割引率は次のとおりである。
10~99個まで  20%割引
100~499個まで 25%割引
500個以上    30%割引

【実行例】
商品単価:1200
購入数量:120
購入金額:108,000円



…お願いいたします。
272デフォルトの名無しさん:2007/01/04(木) 13:13:04
>271
#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;}
273デフォルトの名無しさん:2007/01/04(木) 13:14:41
>272
else if(num>=10) amount = price * num * 0.8;
を空白行に追加して
274261:2007/01/04(木) 13:25:17
>>270 どもありがと
飯食ってた そしてまた間違ってたorz 吊ってくる

>>260
何度もすまん 今度こそ大丈夫だ
てかabs使えればこんなに長くならないのだが・・・

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3314.txt
275デフォルトの名無しさん:2007/01/04(木) 13:26:11
ブラウザの調子悪くて行が表示されなかっただけみたいだ。
>273はなかったことにしてくれ。
276デフォルトの名無しさん:2007/01/04(木) 13:36:00
>>272
できましたー。ありがとうございます!!
277デフォルトの名無しさん:2007/01/04(木) 14:38:41
278デフォルトの名無しさん:2007/01/04(木) 22:57:14
[1] 授業単元: 情報処理
[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] その他の制限: 特にありません。

よろしくお願いします。
279デフォルトの名無しさん:2007/01/04(木) 23:05:11
>110          できた人いる?
280デフォルトの名無しさん:2007/01/04(木) 23:20:54
    /\___/ヽ   /\___ /\___/ヽ _/ヽ /\___/ヽ
   /''''''   '''''':::::::\/''''''   '''/''''''   '''''':::::::\   /''''''   '''''':::::::\
  . |(●),   、(●)、.:|(●),    |(●),   、(●)、.:|、( |(●),   、(●)、.:|
  |   ,,ノ(、_, )ヽ、,, .::::|   ,,ノ(、_, )|   ,,ノ(、_, )ヽ、,, .::::|_, )|   ,,ノ(、_, )ヽ、,, .::::|
.   |   `-=ニ=- ' .:::::::|   `-=ニ= |   `-=ニ=- ' .:::::::|ニ=|   `-=ニ=- ' .:::::::|
   \  `ニニ´  .:::::/\  `ニニ \  `ニニ´  .:::::/ニ´ \  `ニニ´  .:::::/
   /`ー‐--‐‐―´\ /`ー‐-  /`ー‐--‐‐―´\-‐‐ /`ー‐--‐‐―´\
     できますた    できますた できますた できますた できますた
281デフォルトの名無しさん:2007/01/05(金) 00:10:08
>>261
遅くなったけどありがとうございました。
282デフォルトの名無しさん:2007/01/05(金) 00:31:04
>>279
なんでこうハミルトン路といいナップサックといいNP困難な問題がいくつも…
宿題にだされてさくっと解けるようじゃ世の数学者が食っていけなくなるよ
283デフォルトの名無しさん:2007/01/05(金) 00:51:04
>>279
総当りで調べる方法しか思い浮かばない^^;
手持ちの楽曲ファイルの数によっては生きている間に解が出ないw
284デフォルトの名無しさん:2007/01/05(金) 01:10:27
[1] 授業単元:情報工学実験
[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] その他の制限:特にありません


お願いします。
285デフォルトの名無しさん:2007/01/05(金) 01:11:41
簡単な質問なんでテンプレ抜きでやらせてもらいます。
配列 h[200][200] に配列 h2[200][200] を代入する方法を教えてください><
h=h2; とか
h[][]=h2[][] とか
h[][200]=h2[][200]
とかじゃできませんでした>< てかfor文使うしかないってことなんでしょうか( ;・∀・)??
286デフォルトの名無しさん:2007/01/05(金) 01:20:31
>>285
そこでmemcpy。
287デフォルトの名無しさん:2007/01/05(金) 01:20:33
>>285
for( int i= 0 ; i < 200; ++i ){
for( int j = 0; j < 200; ++j ){
h[i][j] = h2[i][j];
}
}
いま >>278の課題やってるが実に面倒だ

288デフォルトの名無しさん:2007/01/05(金) 01:23:51
memcpy(h2, h, sizeof(h));
289デフォルトの名無しさん:2007/01/05(金) 01:44:53
>>285
顔文字とかうざいよ、もう来るな
290デフォルトの名無しさん:2007/01/05(金) 01:48:10
>>278
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3316.txt

疲れた45分もかかった 合ってるかは知らないごめん
291デフォルトの名無しさん:2007/01/05(金) 01:49:36
よろしくお願いします。

1】情報プログラミング演習
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は使用しても良いとの事です
292デフォルトの名無しさん:2007/01/05(金) 02:21:58
wikipedia見ながら考えてる素人だけど
>>87ってホントにNP困難なのかなー

任意のグラフじゃなく格子状のグラフなのに難しそうだからって
NP困難って決め付けるのは早計だと思う

NP完全って言ってる人は信用できないし
(経路を求める問題だからNPに属してないでしょ?)
293デフォルトの名無しさん:2007/01/05(金) 02:26:28
経路を一つ探すよりも経路がないことを求めるほうが難しい
294デフォルトの名無しさん:2007/01/05(金) 02:34:59
>>284
#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);
    }
}
295294:2007/01/05(金) 02:42:51
悪い。これじゃx(x+2)とかに対応できない。
296294:2007/01/05(金) 02:56:36
>>284 やり直し
#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);
    }
}
297デフォルトの名無しさん:2007/01/05(金) 03:12:56
>>283
楽曲の数や容量はプログラムでランダムに決めるようにしたらいいんだと思います
298デフォルトの名無しさん:2007/01/05(金) 03:13:59
>>279
ダミーデータで埋めてごまかす……
299デフォルトの名無しさん:2007/01/05(金) 03:24:13
>>298
プログラムの書き方はどんなカンジになりますか???
300デフォルトの名無しさん:2007/01/05(金) 03:26:59
puroguramu
301デフォルトの名無しさん:2007/01/05(金) 03:40:44
>>299
たぶん近似解しかない
これと一緒

http://www-or.amp.i.kyoto-u.ac.jp/packing/packing1.html
302デフォルトの名無しさん:2007/01/05(金) 08:05:55
>>297
お前>>283の意味わかってないだろ
303NP 完全って言ってる人:2007/01/05(金) 08:14:31
長文失礼.

>>292
最初に「経路を求める問題だから NP に属してないでしょ?」
という指摘について.多分これは日本 Wikipedia の
> なお NP はクラス P 同様、判定問題のクラスであり
> yes/no で答えることの出来ない問題は NP には属さない。
という記述を参考にしたものだと思うが,微妙なところ.

判定問題以外の問題の計算量を考えるとき,特に証拠として
もとの問題の解が求まるような場合は,その判定問題版を考えて
NP などと主張するのが普通.今回も基本的にはそのノリで
NP と主張している.
しかし,わざわざ判定問題に落とすのが面倒だという話があって,
問題のクラスを一般化した FP や FNP という計算量のクラスがある.
適切な判定問題に落として P/NP という場合は 大体 FP/FNP に
なっており,整合性がある.そこで,これらを適当に混同し,
判定問題以外について NP と主張するのはそれほど特殊なことではない.
304NP 完全って言ってる人:2007/01/05(金) 08:20:37
>>292
次にこの問題について.この問題の存在判定版は制限格子上の
ハミルトン閉路というその筋では比較的有名な NP 完全問題.
これが NP 完全になることの証明は >>222 の方針でできる.
理解するだけなら,ハミルトン閉路問題が本質的には木幅について
指数の問題だということを使うのが現代的だと思う.

経路を求める問題は,明らかに経路の存在判定よりも難しいので
効率よく解けるわけはない.計算量のクラスとしては,FNP 完全に
属することが簡単に示せる.

決して「難しそうだから」NP 困難と決め付けているのではないよ.
305デフォルトの名無しさん:2007/01/05(金) 09:03:32
>>110
記憶媒体内の記憶量の取りうる数値が有限個数の離散値であれば,その離散値の個数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); }
306278:2007/01/05(金) 09:14:09
>>290
ありがとうございました
307デフォルトの名無しさん:2007/01/05(金) 10:26:05
>>296
ありがとうございます!


続いてどなたかこれをお願いいたします。

[1] 授業単元:情報工学実験
[2] 問題文(含コード&リンク):
Cのソースプログラムの中から、コメントの部分を取り除くプログラムを作りなさい。
このプログラム自身にコメント行を入れておき、それをデータファイルとして読み込み、うまくコメント行が取り除けるかチェックすること。

[3] 環境
 [3.1] OS:Windows
 [3.2] bcc32
 [3.3] 言語:C
[4] 期限:可能なら今週末まで
[5] その他の制限:特にありません
308デフォルトの名無しさん:2007/01/05(金) 11:22:30
>>307

1ZVdSxtBFIbvA/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
309デフォルトの名無しさん:2007/01/05(金) 11:24:52
>>307
やろうと考えたけど文字列中で/*が出たときの処理が面倒だからやめた。
310308:2007/01/05(金) 11:27:19
>>309
あ、スマン
俺それ対応してないわwwww
311308:2007/01/05(金) 11:30:00
printf("hello,\
/* this is in string */ world\n");

みたいなのにも対応すんのか、マジめんどくせー。
つうわけで俺もパス。ごめんね。
312デフォルトの名無しさん:2007/01/05(金) 11:32:51
正直、それは対応しなくてもよくね?
というかマトモにコメントに対応しようとしたらC言語のlexerつくるのと大差ないし。
この手の真面目にやればやるほど難しくなる課題ってのは嫌だなぁ。
313デフォルトの名無しさん:2007/01/05(金) 11:48:57
>C言語のlexerつくるのと大差ないし。
それはないわ。言語のクラスが違うでしょ。
314308:2007/01/05(金) 11:57:06
ちょっと弄ってみたが、
文字列中の\"とかの対応とか'"'みたいなケースとかがウゼー

>>308をちと拡張しただけだと汚くなるだけっぽいので、やっぱやめだ
315デフォルトの名無しさん:2007/01/05(金) 12:08:56
>>313
確かにlexerよりは簡単なんだけど
int/*hoge*/i='/*';
/*hoge*//*hoge*/
char*p="\\""\"/**/";
とかに対応しようとして俺が書くと、
演算子の種類の認識以外は殆ど果てしなくlexerに近くなる。
316デフォルトの名無しさん:2007/01/05(金) 12:44:30
文字リテラル中に /* .. */ とか // が現れることは文法上ないでしょ。
lexerとか次元が違いすぎるかと。

#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;
}
317デフォルトの名無しさん:2007/01/05(金) 12:47:53
面白そうだから俺もやってみた

ttp://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

こんな感じ?
318316:2007/01/05(金) 12:49:14
319デフォルトの名無しさん:2007/01/05(金) 12:49:37
>>316
それだと'"'とかがダメじゃね?
320デフォルトの名無しさん:2007/01/05(金) 12:52:46
1:プログラミング実習2
2:以下に示す問題のどちらかを選択し、プログラムを作成しなさい

A:OpenGLライブラリを使用し、2本の円柱が交互に上下運動(ピストン運動)する
簡単な三次元オブジェクトをアニメーションさせるプログラムを作成しなさい

B:OpenGLライブラリを使用し、大きな球体の周囲を一つの小さな球体が回る
簡単な三次元オブジェクトをアニメーションさせるプログラムを作成しなさい

3:Windows C言語 VC6.0
4:8日の朝9時
5:C言語の基本はポインタや構造体まで
後はglutの使い方まで学んでいます

よろしくお願いします!
321デフォルトの名無しさん:2007/01/05(金) 12:55:17
>>391
ああ、そうだったw サンクス。
if文にこれを追加。
else if(c == '\'') {
putchar(c);
if((c = getchar()) == '\\') { putchar(c); c = getchar(c); }
putchar(c);
putchar(getchar(c));
}
322デフォルトの名無しさん:2007/01/05(金) 12:57:29
>>316
これだと int/**/i=0をinti=0と解釈してエラーにならね?
>>321
文字リテラルは最大4文字まで入るYO

323デフォルトの名無しさん:2007/01/05(金) 13:01:27
\xXX なんてのがあったな、そういえば。忘れてた。
324デフォルトの名無しさん:2007/01/05(金) 13:03:01
>>321
getchar(c) は getchar() の typo じゃね?
>>322
コメントは単に空白一文字に置換えちゃっていいのかな。
325デフォルトの名無しさん:2007/01/05(金) 13:03:07
>>323
いやいや規格上
'ABCD'
これが許される。
だから最長で考えると
'\xXX\xXX\xXX\xXX'
とかありえる。
326デフォルトの名無しさん:2007/01/05(金) 13:03:59
L'あ'とかじゃなくて'あ'とか書けるよな。
初めて見ると何事かと思うw
327デフォルトの名無しさん:2007/01/05(金) 13:14:39
>>324
無条件に空白に置き換えると問題はなくなるけど、
問題のない箇所のコメントも空白1文字に変わってやな感じ。

前後が<識別子>{<コメント>}<識別子>となっている部分だけ、
コメントを空白1字にすれば見た目の問題はなくなるけどマジめんどい。

俺としては>>312ということで対応しなくていいじゃんという方針で。
328デフォルトの名無しさん:2007/01/05(金) 13:17:50
というかどこまでをコメントとするかでも悩む。
// hoge\
huga
というコードに対してコンパイラによって挙動がまちまちなんだけど(hugaがコメントになったりならなかったり)。
規格で決まってたっけ?
329デフォルトの名無しさん:2007/01/05(金) 13:19:06
ほったらかしにするのもアレなんで、一応文字リテラルと/**/対応。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3321.c
330デフォルトの名無しさん:2007/01/05(金) 13:44:28
>>328
まぁ、普通に考えたら質問者のコンパイラ環境と同等にするのがベストだろうね。
331308:2007/01/05(金) 13:45:30
>>329
細かいところを突っ込むと切りがないんだろうけど
俺のアホなコードよりはるかに簡潔に文字列対応までされてて
スゲーと思った。

まぁ、文字列の途中とかでEOFが訪れると(runaway stringってやつ)
無限ループに陥るだろうけど。Cソースとして正しくないものは
処理しない、でいい気はするし、エラー処理入れると汚くなるだけって
気はするな。
一応為念。
332デフォルトの名無しさん:2007/01/05(金) 13:57:37
>>329
//の行の改行消されちゃうのね
333308:2007/01/05(金) 14:37:11
ほとんど>>329さんのコードそのままだが、runaway stringの対応とEOFの処理だけ
改善しといた(つもり)。そのかわり、オリジナルの簡潔性は失われている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 で。
334デフォルトの名無しさん:2007/01/05(金) 15:28:01
コメントは一個のスペースになるので正しい。
>>328
連結が先。
335307:2007/01/05(金) 18:56:22
皆さんありがとうございます!
>>333を頂くことにします。
申し訳ありませんが>>333のプログラムがどのように動作するのか説明を頂けないでしょうか?
336デフォルトの名無しさん:2007/01/05(金) 19:22:18
なんかOpenGLの課題がちらほらあるのな
母校も俺の2個下の学年ぐらいからやってるぽかったけど面白いかな
337デフォルトの名無しさん:2007/01/05(金) 20:27:44
出題者マダー?
338デフォルトの名無しさん:2007/01/05(金) 21:06:03
週末あたりに冬休みの宿題が終わらなくて来るやつがいそうだな
339デフォルトの名無しさん:2007/01/05(金) 21:25:51
そろそろ卒論のシーズンですお
340デフォルトの名無しさん:2007/01/05(金) 21:36:30
>>253-254
>>284
>>291
>>320

比較的最近の未解決
341デフォルトの名無しさん:2007/01/05(金) 21:39:40
>>340

>>253-254
>>284 はすでに終わってないか?
342デフォルトの名無しさん:2007/01/05(金) 21:40:16
>>340
277は無視ですか?
343292の素人:2007/01/05(金) 21:42:11
>>303
なるほど、よくわかった。
いくつか質問等を

計算量としては
NP完全≦NP困難
FNP完全≦FNP困難
NP完全≦FNP完全
NP困難≦FNP困難
ってゆう認識であってる?

あと、一般的な問題でなら経路存在判定はNPだけど
経路を求めるのはFNPにすら属さない(FPSPACEってのがあるかは知らないけれど)って
問題もありえるわけでしょ?
この可能性を言及せずに、NP困難かNP完全かを示さなきゃならないほど
「完全」ってのは重要なの?

# あと、上の計算量から言って
# NP困難じゃね? → NP完全だよ → 実はFNP完全でした
# って話の流れはソフトバンクに通じる詐欺くささを感じる件
344デフォルトの名無しさん:2007/01/05(金) 21:49:29
>340
まとめありがと。しかし俺は手垢にまみれてない宿題を解きたいんだ。
というわけで出題者まだー?
345デフォルトの名無しさん:2007/01/05(金) 21:53:06
>>343
何を言うとるんだ。特に最後三行
346デフォルトの名無しさん:2007/01/05(金) 21:53:59
>>344
>>320は未着手だぞ
〆切近いから手伝ってやれ
347デフォルトの名無しさん:2007/01/05(金) 22:09:47
>>291も手つけられてないが今は自分の課題でいっぱいいっぱいだぜ・・・
253-284は良く見たら回答されてるから、
今の所この2題だな
348NP 完全って言ってる人:2007/01/05(金) 22:11:40
>不等式
正しい.

>経路を求めるのはFNPにすら属さない問題もありえるわけでしょ?
それはない.FNP に属すのは,FNP の定義とハミルトン閉路問題の
存在判定だけのものが NP に属する証明から明らか.
(こういう風に一般化できるので FNP と NP の混同が正当化できる)
なので,完全が重要というよりも,明らかに完全と分かるものを
わざわざ本来よりも難しいかもしれないと言うのが嫌なだけ.

>詐欺くささ
俺の文章が悪いのだけど,303 は「それほど厳密でない計算量の議論では,
判定問題じゃない問題に対しても NP といってしまうことがある.そして
それを正当化する手が少なくとも二つある」という主張なので,詐欺くさいと
言われるとちょっと心外.303 で微妙といっているのはこのあたりのこと.

まあ今改めて 292 を読むと「NP 困難は証明されている」の一言で
十分だった気はするな.信用できないと言われたので,その弁解で必死だった.
349NP 完全って言ってる人:2007/01/05(金) 22:16:08
>>348>>343
350NP 完全って言ってる人:2007/01/05(金) 22:30:46
>>343
連続書き込みで申し訳ない.ちょいと探したら 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.
と書かれている.俺以外の「混同する」ことについてのソースにどうぞ.
351292の素人:2007/01/05(金) 23:11:17
>>348

>それはない.FNP に属すのは,FNP の定義とハミルトン閉路問題の
>存在判定だけのものが NP に属する証明から明らか.
FNPの定義もググっても見つけられなかったし、素人には全然明らかじゃないやー

詐欺くさいって感じたのは220前後の話の流れであって、303に対してではないので悪しからず
352NP 完全って言ってる人:2007/01/05(金) 23:27:57
>>351
FNP と Complexity で Google 検索してトップに出る英語版の
Wikipedia にはちゃんと FNP の定義が書いてあるんだけどな. 

インフォーマルには NP のチューリングマシンを用いた定義で,出力として
Yes/No 以外も許したもののことだと思っておけばよい.

ハミルトン閉路(判定問題)が NP に属することの証明は次のように行う:
 適当に始点を選び「今いる頂点から移動できるまだ訪れていない頂点に
 非決定的に移動する」という操作を繰り返す.n ステップ後に始点に
 帰ってこれればハミルトン閉路が存在する.以上の手続きで,非決定的
 チューリングマシンで O(n) で解けるため,この問題は NP に属する.

この証明で,移動するところで頂点の履歴を覚えておき,始点に帰ってきた
ときに覚えたものを表示すればいいだけなので FNP は自明.
353292の素人:2007/01/06(土) 00:04:48
>>352
こんな問題を考えてみた

n次元上に存在する格子状立方体、1辺上に存在する点は10(全点数は10^n)
障害物は存在しない
ハミルトン路を求める

この時、存在判定は常にyesなのでO(1)つまりPかつNP
一方、経路を求めるために352の非決定的チューリングマシンを使うとO(10^n)つまりFNPに属さない


どうだろう?
354292の素人:2007/01/06(土) 00:07:34
あー
一辺10だと本当にyesになるか怪しいかも
一辺2にしておいてー
355デフォルトの名無しさん:2007/01/06(土) 00:15:35
>>353
頂点を指数関数で増やしてどうすんの。
計算量の基準が変わってるじゃない。
356デフォルトの名無しさん:2007/01/06(土) 00:26:30
[1] 授業単元: 情報工学応用
[2] 問題文: マージソートを作成し、交換、比較回数、処理時間を表示できるようにする。
        この時、入力する配列を昇順、ランダム、降順の3つのうちから指定でき、
        入力するデータ数も任意で指定できるようにし、結果を昇順に整列せよ。
        (整列した結果は出力しなくてもよいが、データ数が100000個を超えても正常に動くようにせよ。)
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語:C言語
[4] 期限:今週まで
[5] その他の制限:
357デフォルトの名無しさん:2007/01/06(土) 00:30:03
cygwinはコンパイラではないいいいいいいいいいいいいいいいいいいい
358デフォルトの名無しさん:2007/01/06(土) 00:35:36
>>356 ごめんなさい
多分、gccです
359NP 完全って言ってる人:2007/01/06(土) 00:37:02
>>353-354
「どうだろう?」って,いろいろおかしい.

まず >>355 の言うとおり,入力を何にするかがおかしい.
それをハミルトン閉路問題だと考えた場合,入力のサイズは
頂点数 m = 2^n なので,何の問題も無く O(m),すなわち
多項式時間で解けている.

もし入力が n であることに固執するのであれば,それは
そもそもハミルトン閉路問題ではない.従ってそれに対する
チューリングマシンとして 352 を用いるのは間違っている.
実際その問題に対するチューリングマシンで,解を O(1) で
表示するものが次のようにして構成できる:

 入力 n を受け取り,次のように表示する.
 「n 桁のグレイコードの通りに進め」
360292の素人:2007/01/06(土) 01:54:40
>>359

だから>>343の時点からすでにハミルトン閉路問題の話はしていないって

で、チューリングマシンって
>>87のように「通った順序を表示する」ってかいてあってもチューリングマシン的にはそれでOKなのか
・今回のパターンはたまたまグレイコードという既知の処理手順が符合したけど
 一般的な場合でも処理手順を示せばOKなのか
  ハミルトン閉路問題に対して
  「深さ優先で全点を1度ずつ通り始点に戻るまで前進・後退を繰り返せ」
  と表示するのと何が違うのか
361デフォルトの名無しさん:2007/01/06(土) 02:08:35
そろそろ板違いっぽくなってきたな
362デフォルトの名無しさん:2007/01/06(土) 02:45:30
>>110
経路さえ見失わずにしっかりかんがえられたら結構スマートなのが出来ると思うが
363NP 完全って言ってる人:2007/01/06(土) 07:26:28
>>360
二つの質問は,どちらもまともな教科書には書いてある

上はコード化できるので問題ない.詳しくはハミルトン閉路問題が
NP である厳密な証明を見よ.
下はそれが解として十分かどうかによる.「グレイコード」は経路を
一意に定めるが「深さ優先で……」は訪問順に任意性があるので
経路を一意に定めない.

ハミルトン閉路(or もとの問題)の話をしていないのならスレ違い
なので,終わるか移動するかしよう.
364デフォルトの名無しさん :2007/01/06(土) 07:50:50
そろそろ宿題に答えてあげなよ
365デフォルトの名無しさん:2007/01/06(土) 08:43:49
えーと未解決なのは
>>291 >>320 >>356
366デフォルトの名無しさん:2007/01/06(土) 08:48:07
マージソートの交換回数って何?
367デフォルトの名無しさん:2007/01/06(土) 18:08:30
[1] 授業単元:情報処理
[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まで]


配列の宿題なのですが、どうしても上手くできません。
よろしくお願いします。
368367: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);
}
369デフォルトの名無しさん:2007/01/06(土) 18:20:33
min が初期化も更新もされとらんね
370デフォルトの名無しさん:2007/01/06(土) 18:24:58
>>368
minに最大値入れなあかんね
371370:2007/01/06(土) 18:27:03
>>368
あやや

minの初期値として最大値を

>abs(b);
この結果を使っていない
b=abs(b); ←こうする
372デフォルトの名無しさん:2007/01/06(土) 18:38:07
#include <stdio.h>
#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台くらい使って並列にプログラミングを動かしたいんだけど、何の関数使えばいいとかさっぱりなんだわ。
とりあえず、子コンピューターは配列を引数に取って、整数を親コンピューターに返すって事をしたいんやが、誰かわかる人いますか?
お願いします。
373デフォルトの名無しさん:2007/01/06(土) 18:43:02
スレタイも読めないバカ?
374デフォルトの名無しさん:2007/01/06(土) 18:56:48
>>373
はいバカでした。すいません。

[1] 授業単元:情報処理
[2] 問題文(含コード&リンク):
  コンピューターを複数台使い並列に処理するプログラムの概要を述べよ。
  (子プロセスは引数を配列とし、返り値を整数とする。)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: /C++/
[4] 期限: 1月10日くらいまで
375デフォルトの名無しさん:2007/01/06(土) 18:59:59
>>374
>コンピューターを複数台
通信方法は?
376デフォルトの名無しさん:2007/01/06(土) 19:06:23
377374:2007/01/06(土) 19:14:55
>>375
同じ部屋で行うみたいなので、家庭用など小規模ネットワーク(LAN)です。
IPアドレスが192.168.XXで始まって、下3桁でコンピューターを見分けます。
378デフォルトの名無しさん:2007/01/06(土) 19:40:33
プログラミングを動かしたいのか
379368:2007/01/06(土) 21:13:39
>>371
ありがとうございました。
380デフォルトの名無しさん:2007/01/06(土) 21:29:48
>>374
普通にTCPなりなんなりで通信すりゃいいんじゃないの?
381デフォルトの名無しさん:2007/01/06(土) 22:10:00
>>374
本当に宿題?困ったことを聞く為に宿題風に装いました的な雰囲気を感じる。
382デフォルトの名無しさん:2007/01/06(土) 22:16:21
いまどきの流行はDCOMじゃね?
383依頼者:2007/01/06(土) 22:42:59
問題1
[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日まで

初心者でも解けるような簡単なプログラムでお願いします。
384デフォルトの名無しさん:2007/01/06(土) 22:45:58
>>383
円周率は何桁まで求めるの?
104万桁でいいんじゃね?
386デフォルトの名無しさん:2007/01/06(土) 22:49:27
2)
#include<stdio.h>
#include<math.h>
int main(void){printf("%f\n",atan(1.0)*4.0);return 0;}
完璧!
387374:2007/01/06(土) 22:59:18
すまぬ381の言うとおりだ。困ってるから聞いた。
スレの主旨に沿う内容じゃなかったみたいだな。本当にすまぬ。
388依頼者:2007/01/06(土) 23:23:49
円周率は2桁でお願いします
389デフォルトの名無しさん:2007/01/06(土) 23:30:55
printf("3.14\n");
390デフォルトの名無しさん:2007/01/06(土) 23:37:06
>>388
#include <stdio.h>
#include <math.h>

int main(void)
{
printf("%3.2f", 4.0 * arctan(1.0));
return 0;
}
391デフォルトの名無しさん:2007/01/06(土) 23:43:39
求めてねぇーし
テーラー展開で求めろとかのアレじゃね?
393依頼者:2007/01/06(土) 23:48:48
すいません。先ほどの円周率の問題に対して付け加えをします。
1.rand()関数を用いて0~1のx座標を作成する。
2.原点との距離を求め、座標が半径1の円内かどうか調べ、円内である場合、
 円外である場合をそれぞれカウントする。
3.以上を多数繰り返し、半径1の円内である確率がπ/4であることからπを
 求める

入力に関して
キーボードから、計算に用いる座標数(rand()関数の実行回数ではない)を入力す
る。上限をint型の最大値(実際には最大値を入れると膨大な時間がかかるの
でテストはmaxでも一分で終了する程度でよい)

出力に関して
結果(求めた円周率)のみを浮動小数点(double 型を%lf)で出力(+改行)
です。よろしくお願いします。
394デフォルトの名無しさん:2007/01/07(日) 00:06:40
クソ!作ったのが無駄になった!!!
395デフォルトの名無しさん:2007/01/07(日) 00:09:52
これはひどいwww
モンテカルロなら先に言わんと
396383:2007/01/07(日) 00:11:51
#include <stdio.h>
#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;
}

テストしてないから知らんがたぶんこんな感じ。
397396:2007/01/07(日) 00:13:41
すまん、酔った勢いで名前欄に出題レス番入れちまった...
正しくは名前が名無しさんで本文に >>383 だ。

398396:2007/01/07(日) 00:19:20
あぁ、しかもよく見ると pi を * 4.0 してないじゃないかorz
399デフォルトの名無しさん:2007/01/07(日) 01:10:31
[1] 授業単元: 再帰
[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] その他の制限: 基本的な文法は完全に理解しています。
400399:2007/01/07(日) 01:12:16
nとrに依存するところまでは分かります。
あと、n^2とかでは収まらず、2^nとかそういう値になりそうなのですが・・・。
401依頼者:2007/01/07(日) 01:29:14
エラーがでましたぁ。double x = (double)rand() / RAND_MAX;の部分が
シンボルが未定義ですってでます。
402依頼者:2007/01/07(日) 01:31:12
エラーがでました。double x = (double)rand() / RAND_MAX;の部分がエラーで
シンボルが未定義です. 'RAND_MAXとでます。解決策をお願いします。
まさかCですって落ちはないよな
404デフォルトの名無しさん:2007/01/07(日) 01:32:56
出題にCってかいてあるじゃない
よくみたらRAND_MAXが未定義って出てますね。
406デフォルトの名無しさん:2007/01/07(日) 01:59:34
>>402
#include <stdlib.h>
↑この行を消したら同じエラーになったので、この行を抜かしていないか、
あるいは一文字でも書き間違えてないかもう一度よく確かめてください。
407デフォルトの名無しさん:2007/01/07(日) 02:47:43
[1] 授業単元: C言語
[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] その他の制限:ポインタ習いたてです。。。
408407:2007/01/07(日) 02:49:27
×2006年
○2007年

です。スミマセン・・・
409デフォルトの名無しさん:2007/01/07(日) 03:13:08
>>399
とりあえず、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))) だ。
410253:2007/01/07(日) 04:00:55
>>277
遅くなりましたが、どうもありがとうございました!
こんなに長い問題も丁寧に解いていただき非常に助かりました!
次からはココに頼らず自力で解けるように頑張りますm(__)m

411デフォルトの名無しさん:2007/01/07(日) 11:25:07
いやどんどん頼ってくれよ。お姉さん暇なんだ。
どうせ〆切前にしか仕事しないし。
412デフォルトの名無しさん:2007/01/07(日) 12:08:31
お姉さんオメコさせてくださいwww
411 は私ではないので念のため。
414デフォルトの名無しさん:2007/01/07(日) 13:00:13
んなこと言われても知らんもんは知らん
415デフォルトの名無しさん:2007/01/07(日) 13:01:39
だれだよw
416399:2007/01/07(日) 13:18:34
>>409
ありがとうございます。
417デフォルトの名無しさん:2007/01/07(日) 13:45:17
最近は「おっ!?」って思わせる宿題ないよねー。
昔もなかったけど。
418依頼者:2007/01/07(日) 14:21:55
またまたお願いします。次は複数の整数を昇順にソートするプログラムです。

入力に関して
キーボードからまず、入力する整数の個数を入力(最大で100とする)し、次
に指定した数の整数をスペース1つ開けて1行で入力するものとする。この時、
入力を促す文字をいっさい表示しないこと。

出力に関して
ソートした整数をスペース1つのみをあけて1行で出力する(+改行)。指定した数
値・改行以外の出力は入力時も含め、提出版では一切行なわないこと。

これでお願いします。
419デフォルトの名無しさん:2007/01/07(日) 14:27:50
>>418 環境などが不明。テンプレ参照。
420デフォルトの名無しさん:2007/01/07(日) 14:57:20
>418
#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;}
421デフォルトの名無しさん:2007/01/07(日) 15:23:45
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文:
  ファイルを読み込み、英字のみか、先頭が英字で二文字目
  以降が英字または数字である文字列を抽出し、文字列の長
  さが長い順に並べ、その文字列の頻度と共に表示するプロ
  グラムを作成したい。但し、文字列の長さが同じものに関
  しての順序は任意で良い。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:mingw32
 [3.3] 言語: /C++/
[4] 期限: 1月10日まで
422デフォルトの名無しさん:2007/01/07(日) 15:26:31
[1] 授業単元: フラクタル図形
[2] 問題文(含コード&リンク):
n次のヒルベルト曲線を描く関数を再帰を使わずに定義せよ。
ただし、90度右折をR 90度左折をL 向いている方向に線を描くをF
として表せ(必ずしも、このような記号を使う必要はない)

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月9日まで
[5] その他の制限: 特にありません。

つまりは、再帰つぶしってことなんですが
どうすればいいでしょうか。
どなたかお願いします
423デフォルトの名無しさん:2007/01/07(日) 15:29:02
>>421
その文面だけだと、よくわからないので
例などがあるとわかりよいかと思います。
424デフォルトの名無しさん:2007/01/07(日) 15:35:26
[1] 授業単元: 解析
[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] その他の制限: なし。
425デフォルトの名無しさん:2007/01/07(日) 15:37:46
>>421
入力
#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;
}
426デフォルトの名無しさん:2007/01/07(日) 15:39:03
出力
getchar: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
427デフォルトの名無しさん:2007/01/07(日) 15:51:38
[1] 授業単元:コンピューター実習
[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] その他の制限:特になし
428デフォルトの名無しさん:2007/01/07(日) 16:01:34
>>421
ttp://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==
429デフォルトの名無しさん:2007/01/07(日) 16:14:46
>>422
#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]);
}
430デフォルトの名無しさん:2007/01/07(日) 16:28:27
>427
timedate_sample.cってどこよ
431デフォルトの名無しさん:2007/01/07(日) 16:31:51
>>428
vector<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==
432デフォルトの名無しさん:2007/01/07(日) 16:49:08
[1] 授業単元:情報工学実験
[2] 問題文(含コード&リンク):
http://www.vipper.net/vip156634.jpg
(図があるため画像ファイルで問題文を示します)
[3] 環境
 [3.1] OS:Windows
 [3.2] bcc32
 [3.3] 言語:C
[4] 期限:明後日まで
[5] その他の制限:どこがどう動作しているのかコメントで説明を付けてもらえると嬉しいです
433デフォルトの名無しさん:2007/01/07(日) 16:52:32
>>432
入力データ打ち込んでくれないかな?
434デフォルトの名無しさん:2007/01/07(日) 16:58:42
>>433
①津山 ②岡山 ③鳥取 ④倉敷 ⑤新見
⑥米子 ⑦福山 ⑧松江 ⑨三原 ⑩三次
⑪呉 ⑫広島 ⑬江津 ⑭小郡 ⑮益田 ⑯下関
です。
435デフォルトの名無しさん:2007/01/07(日) 17:01:10
>>434
いや、辺(始点・終点・距離)のリストのほう。
436デフォルトの名無しさん:2007/01/07(日) 17:04:18
入力データ: 出発地(1~16):1
         目的地(1~16):11

出力例:   1:津山 から 11:呉へ 距離 220 km
        道順:1:津山 => 2:岡山 => 4:倉敷 => 7:福山 => 9:三原 => 11:呉
 
437デフォルトの名無しさん:2007/01/07(日) 17:06:04
>>433
仕方ないからオレ様流のを作ってくるよ

スタックマシンにするだろ?
438デフォルトの名無しさん:2007/01/07(日) 17:08:30
>>436
ネタですか?

1 津山 | 0 | 59 | 71 | ...
2 岡山 | 59 | 0 | 30 | ...
...

という表をグラフから読み取って全部打ち込んでくれと言っている。
面倒なら始点と終点と距離の三つ組みのリスト

1 2 59
1 3 71
1 5 72
...

という形式でもいいが。
439437:2007/01/07(日) 17:10:44
やめた。
440デフォルトの名無しさん:2007/01/07(日) 17:13:26
>438
ネタですか?
その表を作るプログラムを書けって話だろ。
441デフォルトの名無しさん:2007/01/07(日) 17:16:12
>>440
違う。求められているプログラムはこの表の閉包を計算するプログラム。
442デフォルトの名無しさん:2007/01/07(日) 17:19:48
ちょっと書き方が悪かった。上の表形式にしたのは俺が悪かった。
ただ、手で打ち込むのが面倒だから辺のリストが欲しいのは本当のところ。
443デフォルトの名無しさん:2007/01/07(日) 17:20:11
>>440
図で言うと、例えばノード15は13,14,16と隣接してるから、
13~15が69
14~15が94
16~15が163
ってな、隣接ノード間の距離を示す情報は欲しいってこったべ?

問題は、任意の二点間の最短距離を求めろってこったから、
隣接ノードには限らないわけだべ?
444432:2007/01/07(日) 17:23:41
>>438
16×15=240通りを人間の頭で考えないといけないということですか?
その部分をプログラムで計算させるんじゃないかと思うのですが・・・
445デフォルトの名無しさん:2007/01/07(日) 17:26:40
>>444
グラフに描かれてる部分だけでいいよ
446デフォルトの名無しさん:2007/01/07(日) 17:26:47
ノード間の距離情報は欲しいってのはわかるけど、>438は
>という表をグラフから読み取って全部打ち込んでくれと言っている
全部って言っちゃってるからなぁ。
447デフォルトの名無しさん:2007/01/07(日) 17:28:18
>>444
んだから、全都市同士の組み合わせをあらわす二次元行列全部を
あらかじめ埋めろってことではないべ。

地図に示されている、隣接してる都市同士の距離だけを埋めておいて、
後は例えば-1でもつっこんでおく。
そこをプログラムに計算させるってこったべ?
448デフォルトの名無しさん:2007/01/07(日) 17:30:46
あー俺が悪かったよ。自分で打つよ。
449432:2007/01/07(日) 17:32:04
つまり「図に書き込まれている数字を打ち出せ」ということだったのですか?
450依頼者:2007/01/07(日) 17:39:26
420さん。ありがとうございました。ほんと助かりました。
451デフォルトの名無しさん:2007/01/07(日) 17:43:57
丸投げスレでもないのにこの勢いは一体・・・!!
452デフォルトの名無しさん:2007/01/07(日) 17:56:25
>>432
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3325.c

末尾についているデータを data.in という名前で保存して同じディレクトリ
に保存してから、実行すること。データはチェックしてないので間違ってるかもしれん。

実行するとまず表を表示する。次に、始点終点の番号を受け取るとその間の
経路を表示する。出力は手を抜いたので気に入らないのなら適当に直してくれ。
453デフォルトの名無しさん:2007/01/07(日) 18:02:23
[1] 授業単元: プログラミング演習
[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] その他の制限: ユーザ定義関数を使ってもらえるとありがたいです。
それではお願いします。
454物乞い:2007/01/07(日) 18:56:43
やりたいこと
 メールを読み込んで
 添付ファイルを保存したい。

欲しいもの
 Cソース

ギブミーチョコレート!!!
455デフォルトの名無しさん:2007/01/07(日) 18:58:30
マルチ乙
456デフォルトの名無しさん:2007/01/07(日) 19:12:52
[1] 授業単元: プログラミング演習
[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をやっていただきたいです。
457453:2007/01/07(日) 20:31:10
>>455
もしや私に言ってます?
458432:2007/01/07(日) 20:32:42
>>452
どうもありがとうございます!

次にこの①②をお願いします。

[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  │        │

②上の課題のデータを、構造体で定義して処理するプログラムを作りなさい。

[3] 環境
 [3.1] OS:Windows
 [3.2] bcc32
 [3.3] 言語:C
[4] 期限:明後日まで
[5] その他の制限:どこがどう動作しているのかコメントで説明を付けてもらえると嬉しいです
459デフォルトの名無しさん:2007/01/07(日) 20:39:29
>>455
どうもありがとうございます!
460デフォルトの名無しさん:2007/01/07(日) 20:42:33
ありがとうございます!
上手く行きました○.○
461デフォルトの名無しさん:2007/01/07(日) 20:44:52
自己解決しました!!
462デフォルトの名無しさん:2007/01/07(日) 21:18:42
[1] 授業単元: プログラミング演習
[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まで

画像処理の課題です。よろしくお願いします。
463デフォルトの名無しさん:2007/01/07(日) 21:43:25
>453
class 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++はよくわからんのだ(;´Д`)
464デフォルトの名無しさん:2007/01/07(日) 21:51:40
[1] 授業単元:情報基礎
[2] 問題文(含コード&リンク):構造体を用いたトランプのゲームを作る(何でもいい)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007年1月8日正午まで
[5] その他の制限:ビット演算まで習いました

どうかよろしくお願いします
465デフォルトの名無しさん:2007/01/07(日) 21:54:15
>>402
image06がグラデーション入りの微妙に白じゃないデータなので合成のしかたは乗算にした。
多分だいたい題意は満たす。

#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;}
466465:2007/01/07(日) 21:55:08
× >>402
○ >>462
467デフォルトの名無しさん:2007/01/07(日) 22:05:28
>>464
ゲームのアイデアくらいはあなたが出そう
468453:2007/01/07(日) 22:05:55
>>463
ありがとうございます
ですがCだとまずいので、それを自分でC++に直そうと考えています。
それでだいたいの計算方法はわかったのですが、
   「a = calcDist(tbl[0], tbl[1]); 」
の意味がわからないので、それを教えてください。
469デフォルトの名無しさん:2007/01/07(日) 22:07:52
>463はC++だが...
470デフォルトの名無しさん:2007/01/07(日) 22:08:49
>>468
>>463は普通にC++ですよ!
Cっぽいところとかstatic関数にしたほうがいんじゃねとか微妙に突っ込みどころがあるけど。
まぁ課題として出して問題ないと思うよ。
471デフォルトの名無しさん:2007/01/07(日) 22:10:24
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
数当てゲーム
実行すると、コンピュータが1つ数字を用意しま
す。数字は0から100までです。
キーボードから数字を入力して、当ててください。
ただしチャンスは10回までです。
入力して外れた場合は、画面にヒントが出ます。
(大きい・小さい・惜しいなど)
10回挑戦しても外れた場合は、ゲームオーバー。
正解が画面に出力されて終了します。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Studio 2003
 [3.3] 言語: C
[4] 期限: 1月8日 12:00
よろしくお願いします。
472デフォルトの名無しさん:2007/01/07(日) 22:16:00
[1] 授業単元: プログラミング演習
[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
よろしくお願いします。
473453:2007/01/07(日) 22:16:04
>>469,470
えっ、そうなんですか?そのままコンパイルしたら、「宣言が違う」と言われたので、てっきりC言語で書かれたのだと。
早とちりすいませんでした。
あらためて463さん、ありがとうございます。
474デフォルトの名無しさん:2007/01/07(日) 22:16:44
> 惜しい

ってどんなヒントだよw
475デフォルトの名無しさん:2007/01/07(日) 22:19:06
>453 よ
>463 は
>スペースで区切った2つの実数を1つの行として、3行分のデータを読み込みます。
をまるっきり無視しとるぞい
476デフォルトの名無しさん:2007/01/07(日) 22:19:30
>>471
惜しいのついでに大きさも出してるけど嫌なら適当に直して。
#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;
}
477デフォルトの名無しさん:2007/01/07(日) 22:22:43
>>453
ttp://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/
478453:2007/01/07(日) 22:25:04
>>475
あっ、ホントだ……ご指摘ありがとうございます。

「エラー E2141 12_02he.c 3: 宣言の構文エラー」
  というのが出る原因も、誰か教えていただけるとありがたいのですが。
479デフォルトの名無しさん:2007/01/07(日) 22:26:22
>>476
ありがとうございました。
480デフォルトの名無しさん:2007/01/07(日) 22:28:45
> 12_02he.c
がエラーのげいいん(なぜか変換できない)ぢゃねの?
481464:2007/01/07(日) 22:30:49
>>467
失礼しました
ブラックジャックでお願いします
class Point2D {
protected:
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 ; }
};

続きメンドイ
483453:2007/01/07(日) 22:36:53
>>477
致命的エラー F1003 C:\borland\bcc55\Include\stdcomp.h 5: error 指令: Must use C++ for STDCOMP.H
と出てしまいます。
>>480
ご指摘どうり、数字がいけないのかと思い、「heron」という名前にしてやってみました。
エラー E2141 heron.c 1: 宣言の構文エラー
……orz
484デフォルトの名無しさん:2007/01/07(日) 22:39:53
> heron.c
^^^^^^^^↑これ
485デフォルトの名無しさん:2007/01/07(日) 22:41:16
> 12_02he.c
^^^^^^^^^^↑これ
486デフォルトの名無しさん:2007/01/07(日) 22:41:49
487デフォルトの名無しさん:2007/01/07(日) 22:42:13
ルール

カジノで行われるブラックジャックでは、プレイヤーはプレイヤー同士ではなくディーラー(親、胴元、ハウス)
との間で1対1の勝負を行う。プレイヤーが何人かいる場合には、ディーラーは複数のプレイヤーと同時に勝負を
することになる。各プレイヤーの目標は、21を超えないように手持ちのカードのポイントの合計を21に近づけ、
その数字がディーラーより21に近づくことである。手の中のカードのポイントは、カード2~10ではその数字通りの値であり、
また、絵札であるK(キング)、Q(クイーン)、J(ジャック)は10と数える。A(エース)のみは、1あるいは11の
どちらかとして数えることができ、どちらの数をとるかは状況に応じプレイヤーが選択することができる。
488453:2007/01/07(日) 22:45:50
>>485,484
今まで「.c」でしかプログラムを書いたことがないのですが、
「.cpp」と「.h」と「.c」って、まったくの別物なのですか?
489デフォルトの名無しさん:2007/01/07(日) 22:50:03
>>488
それらのどこが同じに見えるんだ
C++で.cは無いな
491デフォルトの名無しさん:2007/01/07(日) 22:50:54
> [3.3] 言語: C++ 
>今まで「.c」でしかプログラムを書いたことがないのですが、 
492デフォルトの名無しさん:2007/01/07(日) 22:52:37
>488
コンパイラの動作が違うだろ
コンパイラへのソースファイルの与え方によるが
493デフォルトの名無しさん:2007/01/07(日) 22:53:27
printfでアドレスを表示するときに使う変換指定子で%xと%pで使い分ける事ってあるのでしょうか?
494453:2007/01/07(日) 22:56:35
>>489~492
あ~、なるほど、普段VisualC++を使ってるから、完全にc++を使ってるもんだと……
「.cpp」にして動作しました。
ホント、迷惑かけてすみませんでした。
495デフォルトの名無しさん:2007/01/07(日) 22:56:36
>>493
printfでアドレスを表示するときに%xは使いません
むしろ整数型を16進数表示させたいときがxでアドレスの時だけp
まあ宗教論でしかないが
497デフォルトの名無しさん:2007/01/07(日) 22:58:18
sizeof(unsigned int)≠sizeof(void*)の時とか。
498デフォルトの名無しさん:2007/01/07(日) 23:01:26
某初心者本では%xで出力していたので、なんでかなと思ったのですが。
違いは
%p
&i=0xbffff964
&j=0xbffff960
&g=0x80a3504
&h=0x80a3508

%x
&i=bfffdc64
&j=bfffdc60
&g=80a3504
&h=80a3508

%xだと16進数を示す0xが表示されないんですね。

今気づいたけど、グローバル変数はアドレス変わらないのに、
ローカル変数はアドレス変わるんですね…
499デフォルトの名無しさん:2007/01/07(日) 23:02:54
>>493
宿題で無いならすれ違い。次からは正しいスレで聞くこと。

%p は引数がその環境でのアドレスとして解釈できる場合、それを
その環境におけるアドレスの形式で表示する。

たとえばアドレスが文字で指定されるような変態環境も仕様準拠だが、
この場合 %p は %s のような振る舞いをするはず。
500デフォルトの名無しさん:2007/01/07(日) 23:03:46
×文字
○文字列
501デフォルトの名無しさん:2007/01/07(日) 23:08:05
なるほど、Cで標準的な処理系ではたまたまアドレスは16進数で表されているから
%pが16進数になるのであって、%pそのものが16進数の意味を含んでいる分けでは無いという感じですか。

ありがとうございましたm(__)m
502デフォルトの名無しさん: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巻】
503 ◆g/ZMVdytmo :2007/01/07(日) 23:58:30
[1] C言語I
[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しか習ってません。
504 ◆g/ZMVdytmo :2007/01/08(月) 00:02:43
どうぞよろしくお願いします<(_ _)>
505デフォルトの名無しさん:2007/01/08(月) 00:13:17
>502
おまえPlayStation3(60GB)持ちすぎだろ。
俺に一個よこせ。
506デフォルトの名無しさん:2007/01/08(月) 00:27:54
スレ違いっぽいんですけど
どなたかプログラムの作成依頼受けてもらえませんか?
ソートなのでそんなに難しくないのですが、
期限以内に自力で作ることができそうにありません・・・
どなたか力を貸してください。お願いします

507デフォルトの名無しさん:2007/01/08(月) 00:30:41
C/C++の宿題なら受ける。さもなくば(・∀・)カエレ!!
508デフォルトの名無しさん:2007/01/08(月) 00:40:06
>>507
C言語です。
スレは監視されていて使えないのですが
お願いしていいですか?
509デフォルトの名無しさん:2007/01/08(月) 00:44:05
堂々とやったらええやん
510デフォルトの名無しさん:2007/01/08(月) 00:49:43
ここを使ってもいいのは、バレたとき開き直れる根性のある人だけです。
511デフォルトの名無しさん:2007/01/08(月) 00:52:39
堂々とは無理ですorz
2日以内に完成必須で
報酬は3万で引き受けてくれる人お願いします
スレ違いだし、これを見て不快になる人もいるかと思いますがお願いします:;
メッセアドshell_so@hotmail.co.jp
512デフォルトの名無しさん:2007/01/08(月) 00:54:48
プログラマたるもの納期を踏み倒す技術くらい身につけんといかんよ。

では、次の課題どうぞー
513デフォルトの名無しさん:2007/01/08(月) 00:55:06
絶対仕事だな、これは…
514デフォルトの名無しさん:2007/01/08(月) 00:58:22
仕事じゃなくて卒業研究です
卒業かかってるので必死なのです・・・
515デフォルトの名無しさん:2007/01/08(月) 01:01:31
ソートのプログラムで >>511 にとって3万以上の価値を持つ物が何なのか興味があります
516デフォルトの名無しさん:2007/01/08(月) 01:03:43
    ∧__∧
    ( ・ω・)   いやどす
    ハ∨/^ヽ
   ノ::[三ノ :.'、
   i)、_;|*く;  ノ
     |!: ::.".T~
     ハ、___|
"""~""""""~"""~"""~"
単位
518デフォルトの名無しさん:2007/01/08(月) 01:04:41
どなたか>>458をお願いします
519デフォルトの名無しさん:2007/01/08(月) 01:05:08
やっぱり無理ですね・・・
スレ違い失礼しました

C言語まじめに勉強してなかったので卒論のプログラムができなくて
期限が3日しかなかったので・・・
お金は気持ちということです
金と聞いて黙っておく俺様ではないわぐはははは
521デフォルトの名無しさん:2007/01/08(月) 01:07:02
金取って人に卒研書かせるとか
どう考えても黒だろ…

>>503
fopen習ってないのにファイルから読み込めとか
どんな鬼課題だよ。
522デフォルトの名無しさん:2007/01/08(月) 01:08:40
>>521
リダイレクトって書いてるあるよん
523デフォルトの名無しさん:2007/01/08(月) 01:09:06
卒業研究ってことは、論文発表でもされたソートアルゴリズムの評価みたいなもんかな?
ソートアルゴリズムは決まっていて実装するだけだろうけど、ややこしそうだ
524デフォルトの名無しさん:2007/01/08(月) 01:17:10
ま、一年くらい勉強代だと考えれば安いもんだろ
525デフォルトの名無しさん:2007/01/08(月) 01:20:01
>>522
あ、見落としてた。

でも何でリダイレクトなんだろうか…
余計にソースがゴチャると思うんだが。
getsもgetcも使えなくてscanf縛りってのも疑問だ。
526デフォルトの名無しさん:2007/01/08(月) 01:32:49
未回答の課題(>>300以降)

---------------------------------------------
1/08 .......... >>320 >>407 >>464
1/09 .......... >>458
1/15 .......... >>424 >>427
1/19 .......... >>456
527デフォルトの名無しさん:2007/01/08(月) 01:45:37
>>503
作ってみようと思ったけど縛りがキツすぎてわけわかんね(;´Д`)
一次元配列で集計するってのは構造体の配列じゃ駄目なのか?(そもそも構造体習ってるか?)
「どの位置に文字xと同じ既出文字種があるか」って文体から、集計する配列には
ひとつの要素に「既出文字」と「その文字の出現頻度」の二つの情報が必要だと解釈してるんだが。
普通構造体無しでこういう集計するならintの配列を文字の種類分確保して(この場合ならASCII分だから0x80)
文字そのものをインデックスとして扱えるようにするんだが、これだと要件のひとつである
「並べ替え」が実行できない(そもそも並べ替えの必要が無くなる)+search関数の必要性も無くなる。

fopenじゃなくてリダイレクトで読めっていう縛りも相まってわけわかんなくなってきた。

528デフォルトの名無しさん:2007/01/08(月) 01:48:27
> 余計にソースがゴチャる
うそをつくなよw

標準入力が"ファイルから"になるからすっきりするだろがヴォk
529デフォルトの名無しさん:2007/01/08(月) 01:49:35
入力がキーボードだろうがファイルだろうがパイプだろうが、コードがそう変わったりせんだろ
530デフォルトの名無しさん:2007/01/08(月) 02:02:28
>529
少なくとも「ファイルをオープンして云々」、はあるとナイトでコードが変わるよ
531デフォルトの名無しさん:2007/01/08(月) 02:03:57
3万も払えば喜んでやる人も多いだろうに、学生なら特に。
友達いないのか?
532デフォルトの名無しさん:2007/01/08(月) 02:16:37
[1] 授業単元:プログラミングc言語
[2] 問題文(含コード&リンク):手元にある複数の楽曲ファイルを組み合わせて、手持ちの記録媒体
(CD等)の空きが最も少なくなるようなコピーのしかたを決定する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: Cのみ
[4] 期限: 1月9日まで
[5] その他の制限:なるべくスマートなアルゴリズムを書けとの事です
考え方が複雑すぎてうまく出来ないのでお願いします。
533デフォルトの名無しさん:2007/01/08(月) 02:21:51
>>532
たぶんナップサック問題
534デフォルトの名無しさん:2007/01/08(月) 02:45:45
>>503
要件色々満たしてないけど一応置いとく。一応の縛りには対応した。
可読性無さ杉?三項演算子使うな?(´・ω・`)もう知らんがな
#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;
}
535デフォルトの名無しさん:2007/01/08(月) 02:59:47
>>503
searchの条件の意図がわからん。。。
それさえなければ10行くらいで書けそうなのにな
536別回答:2007/01/08(月) 03:30:17
#include <stdio.h>
int 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()の意味わかんねぇだ
537デフォルトの名無しさん:2007/01/08(月) 03:46:10
>>503
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3330.c
とりあえずやったらこうなった。
538デフォルトの名無しさん:2007/01/08(月) 06:00:04
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□偽装派遣先の社員の意見にはたとえ間違っていても反対しない
□偽装派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□偽装派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□偽装派遣先社員より自分の生涯収入が低いのは当然だ
□偽装派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ偽装派遣先に常駐したい
539デフォルトの名無しさん:2007/01/08(月) 06:06:47
>>538
・質問は【質問テンプレ】を利用してください。
540デフォルトの名無しさん:2007/01/08(月) 07:56:36
>>532
楽曲ファイルのサイズおよび記憶媒体のサイズは整数としてよい?
それとも実数も考慮しないといけない?
541デフォルトの名無しさん:2007/01/08(月) 08:15:55
>>532
とりあえず楽曲ファイルサイズ・媒体サイズどちらとも自然数に仮定した:

#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]);
}
542デフォルトの名無しさん:2007/01/08(月) 08:28:30
>>407
「既に用意されている」関数たちをうp
543462:2007/01/08(月) 11:23:44
>>465
亀レスですみませんがありがとうございます。
実はもう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まで
544デフォルトの名無しさん:2007/01/08(月) 13:44:16
>458 データ定義編
#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]);
545デフォルトの名無しさん:2007/01/08(月) 13:45:35
>458 本体編
void 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;
}
546デフォルトの名無しさん:2007/01/08(月) 13:48:48
#define makeString(t) { static char dst[14]; toString_exec(dst, t); return dst; }
char *toString_s(unsigned long t){ makeString(t); }
 :

の方が良かったかな...
547458:2007/01/08(月) 14:11:30
①と②をそれぞれ別々のプログラムにして頂けないでしょうか?
548デフォルトの名無しさん:2007/01/08(月) 14:39:25
>547
list[].~ をメンバそれぞれの配列 id[], start[], goal[], rap[], rank[] に置き換えると
①になるであろうw

後、
int num=sizeof(list)/sizeof(list[0]);
 ↓
int num=sizeof(id)/sizeof(id[0]);
にするのを忘れずに(ちなみに id[] ぢゃなくても rank[] でも何でもOK)
549458:2007/01/08(月) 14:43:52

エラー E2268 課題29.cpp 20: 未定義の関数 'sprintf' を呼び出した(関数 toString_exec(char *,unsigned long) )
エラー E2268 課題29.cpp 36: 未定義の関数 'printf' を呼び出した(関数 main() )

となりました。
550458:2007/01/08(月) 14:45:24
もとい、何でもありません
551デフォルトの名無しさん:2007/01/08(月) 14:46:05
>549
#include <stdio.h>
552デフォルトの名無しさん:2007/01/08(月) 14:56:55
>458
> [3.3] 言語:C
ぢゃねの?

> 課題29.cpp
って名前みたいだけどちゃんとCとしてコンパイルしてる?
553依頼者:2007/01/08(月) 15:49:04
[1]Cプログラミング
[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)で出力(+改行)
です。よろしくお願いします。

もう一度円周率を求める問題をお願いします。初心者が作ったようなプログラムで
お願いします。
554デフォルトの名無しさん:2007/01/08(月) 16:10:00
>>553
#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;}
555デフォルトの名無しさん:2007/01/08(月) 16:21:59
[1] 授業単元:Cプログラミング入門演習2
[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] その他の制限: 今規制中なので携帯からのカキコで返事等遅くなりますがよろしくお願いします
556デフォルトの名無しさん:2007/01/08(月) 16:22:40
クイックソートなんですが、変数2つでもできますか?
void quick_sort(int n,int a[])に合わせないと不都合があるのですが
557デフォルトの名無しさん:2007/01/08(月) 16:25:15
558デフォルトの名無しさん:2007/01/08(月) 16:28:27
>>556
他に関数を定義できるのなら可能
559デフォルトの名無しさん:2007/01/08(月) 16:31:48
お前はあっちのスレで何も学べなかったのかよ
560デフォルトの名無しさん:2007/01/08(月) 16:34:26
void qsort(void *base, size_t nmemb, size_t size,
int(*compar)(const void *, const void *));
使うとするなら

void quick_sort(int n, int a[])
{
 qsort(a, n, sizeof(a[0]), compar);
}
ってことだろ?
561デフォルトの名無しさん:2007/01/08(月) 16:45:54
向こうで解決したんなら、解決したって書いとくれよ。
562依頼者:2007/01/08(月) 18:32:52
554様 
シンボルが未定義です. 'RAND_MAXとでます。解決策をお願いします。
563デフォルトの名無しさん:2007/01/08(月) 19:22:12
>>562
>>554のソースをちゃんとそのまんまコピペしてコンパイルした?
#include <stdlib.h>が抜けてるんじゃないか?
564依頼者:2007/01/08(月) 19:58:06
ちゃんとコピーしました。#include <stdlib.h>も入っています
565デフォルトの名無しさん:2007/01/08(月) 20:00:18
>>562
コンパイラはなに?
わからなくても、コンパイル時のコマンドはわかるだろ?
566デフォルトの名無しさん:2007/01/08(月) 20:00:35
コンパイル環境晒して見れ。
567デフォルトの名無しさん:2007/01/08(月) 20:11:58
コンパイッテクル
568デフォルトの名無しさん:2007/01/08(月) 20:17:27
>564
stdlib.h を探して、中に RAND_MAX が定義されているか確認しる!
569デフォルトの名無しさん:2007/01/08(月) 21:49:58
#define RAND_MAX 0x7FFFU って書いてあるっす(Borland C++より)
570デフォルトの名無しさん:2007/01/08(月) 22:06:11
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
二元連立二次方程式の解を求めるプログラムを作成せよ。
1)異なる二つの実数解、二重解、虚数解が求められること
2)二次の係数が0の場合は「エラーがある」と表示し、実行を停止すること。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] bcc
 [3.3] C言語
[4] 期限: 明日まで
[5] その他の制限: 特になし

よろしくお願いします。
571デフォルトの名無しさん:2007/01/08(月) 22:11:56
あと2時間弱で回答を出せと
572デフォルトの名無しさん:2007/01/08(月) 22:50:16
あと25時間強で回答を出せと
573デフォルトの名無しさん:2007/01/08(月) 22:53:21
ごちゃごちゃ言ってねーで回答をだせよ
574デフォルトの名無しさん:2007/01/08(月) 22:59:15
ごちゃごちゃ言ってねーで回答を出せと
575デフォルトの名無しさん:2007/01/08(月) 23:00:24
>>573-574>>570だったら
スルーフラグが立ってしまったわけだが・・・・
576デフォルトの名無しさん:2007/01/08(月) 23:05:40
二元二次方程式系ということはこれを解くのか?

a 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


どうやるんだったか
577555:2007/01/08(月) 23:13:03
どなたか>>555お願いします
578デフォルトの名無しさん:2007/01/08(月) 23:15:55
>>576
x^i, x^kはi≠kで一次独立
579デフォルトの名無しさん:2007/01/08(月) 23:28:58
>>570
実装はできる。
解法を教えろ。

屏風の虎をつかまえる話みたいだがw
580デフォルトの名無しさん:2007/01/08(月) 23:30:20
は?
581デフォルトの名無しさん:2007/01/08(月) 23:31:59
プログラマに数学をやらせるなんて以ての外だわな
582デフォルトの名無しさん:2007/01/08(月) 23:33:16
方程式の解を関数の一次独立性から求められるの?関係ないような…
583570:2007/01/08(月) 23:41:16
すみません。
問題は、連立二次方程式の間違いでした。

ああ、ID表示してほしい・・・
584デフォルトの名無しさん:2007/01/08(月) 23:42:45
ID表示が欲しいとか文句言う前に、トリップつけろよ
585デフォルトの名無しさん:2007/01/08(月) 23:43:40
本当に[連立]か?
ニュートン法って虚数解って求められたっけ
587デフォルトの名無しさん:2007/01/08(月) 23:44:15
>>577
1番
「文字数」は印字可能な文字(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);
}
x = (-b±√D)/2a



連立だと楕円すら表現できるような
589デフォルトの名無しさん:2007/01/08(月) 23:54:29
【一生XP】 INTEL Core 2 Duo Part60 【Vista厳禁】
http://pc9.2ch.net/test/read.cgi/jisaku/1167973189/
ウンコリオンは自作板に帰ってくれない?お前はお呼びじゃねーよ、でしゃばりデヴ
ダンゴリオンの免許証の顔
ttp://ehoba.mydns.jp/loada/src/txup0147.png
590デフォルトの名無しさん:2007/01/08(月) 23:56:48
>>583
ステコテ使えばええヤン
591デフォルトの名無しさん:2007/01/09(火) 00:10:39
こいつ知ってるwww
592570 ◆NgkKV9slIw :2007/01/09(火) 00:15:02
>>585
指摘された通り、二次方程式でした・・・
すいません。
593デフォルトの名無しさん:2007/01/09(火) 00:16:56
>>570 ◆NgkKV9slIw
一元なら簡単だが二元なら解法よろ
594デフォルトの名無しさん:2007/01/09(火) 00:17:42
・∀・)っ-○◎●創聖のダンゴリオン ◆DanGorION6
ダンゴリオンの免許証の顔写真(本人がマジで提示したものなので本物)
ttp://ehoba.mydns.jp/loada/src/txup0147.png
自作板の嫌われもの&自分を大きく見せようと知識をひけらかすわりには
間違った知識を持ち出すんで相手にしないように
595デフォルトの名無しさん:2007/01/09(火) 00:29:17
>>594
反面教師という言葉もある
折角コテつけてくれてるんだから、嫌ならあぼーん汁
596デフォルトの名無しさん:2007/01/09(火) 00:40:20
あぼーんするのもマンドクセ('A`)
597555:2007/01/09(火) 00:57:28
>>587
お答えいただきありがとうございます
プログラムを実行させてみた所インクルードファイルがオープンできませんとでます
どう直せばいいでしょうか
598デフォルトの名無しさん:2007/01/09(火) 01:01:47
コンパイラが指定されてないな。
標準で付属のファイルも開発環境によっては存在しない事があるから。
>>592

#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;
}
600デフォルトの名無しさん:2007/01/09(火) 01:07:57
>>599
s/%lf/%f/g
601デフォルトの名無しさん:2007/01/09(火) 01:08:57
それにしても浮動小数点の比較はなんとかならんもんかね?
標準でboost::close_at_toleranceみたいなのが欲しい
D≒abs(b)の場合は、激しく精度落ちが発生するため
解の公式の変形が必要だが課題程度ならこれで十分だろ。

(むしろ自分でやれ)
603555:2007/01/09(火) 01:10:52
>>598
すいません書き忘れてました
コンパイラはstudy Cというやつです
604デフォルトの名無しさん:2007/01/09(火) 01:11:50
>>570 ◆NgkKV9slIw
一元二次方程式の解を求めるプログラムが欲しいの?

>>599
成功報酬って話は、もう終わったんじゃないの?
>>600
double型の時は%lf
まあどのみち同じ結果になるのであとは宗教論でしかないが。
606デフォルトの名無しさん:2007/01/09(火) 01:15:57
[1] 授業単元: プログラミング入門
[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] その他の制限:なし

宜しくお願いします。
>>604
ソートの論文だろ。たしかに終わってたね。

つーか、仕事の案内ならたまに来るよ。
某サイトの管理人さんが、登録者にメールで投げてくる開発依頼を投げてくるんだけど
単発で80万とか。

この前はIEツールバーの開発の案件が。
まあ、今んとこ内職やるほど暇もないが内容によっちゃ容易い仕事だったかも。
608デフォルトの名無しさん:2007/01/09(火) 01:20:32
>>605
printfにlfってあったっけ?
609デフォルトの名無しさん:2007/01/09(火) 01:26:07
>>607
80マソ!?それはおいしいが「たまに」しかないんじゃ効率悪いな・・・
どうせなら専門でやれば?自作板で油売ってないでw
610デフォルトの名無しさん:2007/01/09(火) 01:30:43
>>608
printf での %lf は C99 で正式に許容されるようになった
それまでは規格として正式ではないものの、
実装として %lf でも動作するコンパイラが多かっただけ

※かつては、鼻から悪魔が出てきても文句を言えなかった
611デフォルトの名無しさん:2007/01/09(火) 01:31:51
>>608
また宗教論になりそうな。。。

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)って標準仕様だっけ
ど忘れした。
613デフォルトの名無しさん:2007/01/09(火) 01:38:11
>>607 ソートの論文今は自力でやってますが
終わりそうにないので、お願いしてもいいですか?
メッセ送っておきます
614デフォルトの名無しさん:2007/01/09(火) 01:39:36
>>610
わざわざlf使って移植性を低くすることはないってことですね

>>612
>printfでの暗黙の型変換(float→double)
これは標準仕様
内容によっちゃ断るよ。
論文って何百時間もかけてやるもんだろ。3万くらい残業数日やれば稼げるしさ。
616デフォルトの名無しさん:2007/01/09(火) 01:45:08
ttp://tripper.kousaku.in/
こっちも夜露死苦!
617デフォルトの名無しさん:2007/01/09(火) 01:45:46
>>603
#include <stdbool.h>

typedef enum{false,true}bool;
2ちゃんよりもASCII24やkakaku.comからの来客が増えてるよ
619デフォルトの名無しさん:2007/01/09(火) 01:49:08
ttp://www.evangelion.co.jp/
こっちも夜露死苦!
620デフォルトの名無しさん:2007/01/09(火) 01:52:46
それでもかまいません
621デフォルトの名無しさん:2007/01/09(火) 01:53:55
ttp://www.evangelion.co.jp/
こっちも4649!
カレンダーの宿題の邪魔やりたいみたいだなおまいら
623デフォルトの名無しさん:2007/01/09(火) 01:54:31
http://www.evangelion.co.jp/
こっちもよろぴく!
624デフォルトの名無しさん:2007/01/09(火) 01:56:29
stdboolってC99だっけ?
625デフォルトの名無しさん:2007/01/09(火) 01:57:06
カレンダぁー?まんどっちぃ。どうせなら団子がやってあげれば?
ここでの株が上がるよ?w
俺もそんな日下部陽一みたいな低レベルにでもやらせとけばいいような課題まんどくさい
しかもよい子の寝る時間とっくに過ぎてるし。
627デフォルトの名無しさん:2007/01/09(火) 02:06:42
だからこそ適任ジャマイカw
628デフォルトの名無しさん:2007/01/09(火) 02:13:15
>>626
カレンダーの宿題の邪魔やりたいみたいだなおまい
629デフォルトの名無しさん:2007/01/09(火) 02:13:23
[1] 授業単元:Cプログラミング入門
[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] その他の制限: なし

すみません、宜しくお願いします。
630デフォルトの名無しさん:2007/01/09(火) 02:13:32
>>626 メールしました
一読お願いします。
631デフォルトの名無しさん:2007/01/09(火) 02:15:37
>>630 メールしました
百読お願いします。
632デフォルトの名無しさん:2007/01/09(火) 02:16:46
>>629
デジャヴ&話題の%lf
タイミングが良すぎるw
633デフォルトの名無しさん:2007/01/09(火) 02:36:58
>>632
発想を変えるんだ、
printfとは書いてない
%lfを実装すればいいんだ!
634デフォルトの名無しさん:2007/01/09(火) 02:40:35
ありゃ。カレンダーCで組んどった・・・
635デフォルトの名無しさん:2007/01/09(火) 02:42:01
>>606をCで作り終えてからC++だということに気がついた なんか切ない
636634:2007/01/09(火) 02:44:23
>>635
(・∀・)人(・∀・)なかーま!

俺は寝るから後は任せた。
637デフォルトの名無しさん:2007/01/09(火) 02:54:56
Cで作ったんならほとんど手間要らずでC++ソースとして使えるからいいじゃん
逆なら本当に切ないが
638デフォルトの名無しさん:2007/01/09(火) 02:57:33
[1] 授業単元: プログラミング入門
[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] その他の制限:なし

宜しくお願いします。
639555:2007/01/09(火) 02:58:18
>>617
回答ありがとうございます
書き直して実行してみたところ
延々と文字の入力を求めてきてプログラムが止まる気配がありません
640デフォルトの名無しさん:2007/01/09(火) 03:01:40
気合いで止めろ
641デフォルトの名無しさん:2007/01/09(火) 03:02:54
>>639
Ctrl+ZでEOFを入力すればいい
改行で止めたければ

while((c = getchar()) != EOF && c != '\n') {
642629:2007/01/09(火) 03:05:26
スレ読まずに書き込んですみませんorz
全く同じ問題が書き込まれてたとは…
643デフォルトの名無しさん:2007/01/09(火) 03:10:51
>>638
ああ?これ何のまねだよ?
644デフォルトの名無しさん:2007/01/09(火) 03:11:56
[1] 授業単元:
[2] 問題文(含コード&リンク):構造体を用いて以下のプログラムを作成せよ
1 7人分の氏名(ローマ字),試験の点数(100点満点)をそれぞれ構造体に格納する。
2 7人分の氏名、試験の点数をすべて画面に表示する。
3 試験の点数の中央値と氏名を画面に表示する。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語: C
[4] 期限: 1月10日
[5] その他の制限:
645644:2007/01/09(火) 03:13:13
#include<stdio.h>
struct 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);
}
この続きからお願いします。
646デフォルトの名無しさん:2007/01/09(火) 03:13:41
>>606
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3334.txt

C++で書き直してから>>638に気がついた。残念ながらCのソースは保存してないんだ
647555:2007/01/09(火) 03:17:13
>>641
回答ありがとうございます
書き直した所うまく動きました
もう一問の方もよろしければお願いします

>>642
おんなじ大学な気がするけど気のせいか
648646:2007/01/09(火) 03:17:49
if(j%7 == 0){なんて書いてあるけど、if(j == 7){かif(j > 6){あたりに変えておいて
だいぶ無駄な計算だw
649デフォルトの名無しさん:2007/01/09(火) 03:21:46
C言語の構造体の値の書き換えでつまづいてます。

struct 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]の数値だけを変えたいのですが、どのようにすればいいのでしょうか?
650デフォルトの名無しさん:2007/01/09(火) 03:25:02
>>649
まずは趣旨にあったスレを見つけるところから始めるといいと思うよ
cell[1][i][j]=cell[0][i][j];なんてのをやってそうな予感
651649:2007/01/09(火) 03:28:26
>>650
まさにそんな感じでやってるのですが・・・。
何が間違いなんでしょうか(ノд;)

宿題とかじゃないのですれ違いなのかもしれませんが。。。
652デフォルトの名無しさん:2007/01/09(火) 03:34:06
> struct celldata *
^^^^^^^^^^^^^^^^^^↑これがあるのに...

> cell[1][i][j]=cell[0][i][j];
って、同じアドレスにしたいのかなw
653649:2007/01/09(火) 03:42:48
>>652
ポインタの理解がまだ浅かったです(///)
->colorでコピーしたら正常に動作しました。
ありがとうございました;;

654デフォルトの名無しさん:2007/01/09(火) 06:28:16
[1] 情報工学演習応用
[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使用可能

みんな寝てるかもしれませんが、よろしくお願いします
655606:2007/01/09(火) 08:29:41
>>635 >>636 >>646
回答ありがとうございます。なんとか間に合いそうです。
夜遅くまで本当にありがとうございます。私も、いずれは教える側になって
皆さんのようになりたいです。
656デフォルトの名無しさん:2007/01/09(火) 10:34:02
1] 授業単元:プログラミング
[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] その他の制限:特に無し
お願いします
657デフォルトの名無しさん:2007/01/09(火) 11:04:08
658デフォルトの名無しさん:2007/01/09(火) 11:21:03
659デフォルトの名無しさん:2007/01/09(火) 11:46:38
[1] 授業単元:Cプログラミング入門演習2
[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] その他の制限:
660デフォルトの名無しさん:2007/01/09(火) 11:51:53
>>659
> 省略に使う「,」は今回はないものとする。
Q. 英語の省略に使用されるのは「.」だと思うのだが?
661デフォルトの名無しさん:2007/01/09(火) 11:55:35
>>659
>>555の2をお願いします」くらいにしておけよ
新しい宿題かと思っちゃうだろ
662デフォルトの名無しさん:2007/01/09(火) 12:09:43
>>660
おそらくアポストロフィ

>>659
ふたつまとめてやっといたので,途中で分割してくれ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3337.txt
663656:2007/01/09(火) 12:15:13
658さん、有難うございました
664捨て猫:2007/01/09(火) 13:32:10
1] 授業単元:データ構造とアルゴリズム
[2] ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列を抽出し、
   文字列の長さが長い順に並べ、その文字列の頻度と共に表示するプログラムを作成したい。
   但し、文字列の長さが同じものに関しての順序は任意で良い。以下の設問にしたがって回答しなさい。
[3] 環境
 [3.1] Windows XP
 [3.3] CかC++かJava
[4] 期限: 2007年1月10日20:00まで
[5] その他の制限: Windows の API は使用しないで作って下さい。
665捨て猫: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;
}
666捨て猫:2007/01/09(火) 13:34:40
出力
getchar: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
よろしくお願いします
667デフォルトの名無しさん:2007/01/09(火) 13:46:19
>>664
なんか見たことある問題だな>>421
668依頼者:2007/01/09(火) 17:20:27
[1] 授業単元:Cプログラミング演習
[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のような整形は行なわないこと。

です。お願いします。
669デフォルトの名無しさん:2007/01/09(火) 17:24:07
[1] 授業単元: プログラム演習
[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] その他の制限:

お願いします
670デフォルトの名無しさん:2007/01/09(火) 17:29:23
>>668
>>659>>662

>>669
>>393>>396>>553>>554>>629

あのなーお前らいったいどこの学校だ
教授とっちめてやるから所属を言えw

それとも何か。俺は釣られてるのか……orz
671デフォルトの名無しさん:2007/01/09(火) 17:33:28
>>670
不覚にもワラタ
672デフォルトの名無しさん:2007/01/09(火) 17:50:02
Study Cってなんやねんと思ったら
ttp://www.vector.co.jp/soft/win95/prog/se087583.html?g
これか……

こんなん使ってる学校もあるんだねぇ
673デフォルトの名無しさん:2007/01/09(火) 17:51:05
もう被りまくりでgdgdだなw
長期休暇最後の日の風物詩というか
674デフォルトの名無しさん:2007/01/09(火) 17:51:26
ttp://www.orchid.co.jp/
これ関連の学校か?
675デフォルトの名無しさん:2007/01/09(火) 17:56:57
>>672
へー。インタープリタなんか。

亀さん使えるってのはなんとも懐かしいね
俺も小学校低学年の頃はLogoで遊んでたなあ
676デフォルトの名無しさん:2007/01/09(火) 19:37:15
[1] 授業単元: C言語
[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
677デフォルトの名無しさん: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] 期限:明日
678デフォルトの名無しさん:2007/01/09(火) 20:00:32
679デフォルトの名無しさん:2007/01/09(火) 20:03:13
>>676
ごめん、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();
}
680デフォルトの名無しさん:2007/01/09(火) 20:09:06
681555:2007/01/09(火) 21:17:17
>>662
回答ありがとうございます
実行させた所宣言に誤りがありますとでました
int A,Bをscanfの上に置くと今度はポインタとほかの型が混在していますとでます
どう直せばよいでしょうか
682デフォルトの名無しさん:2007/01/09(火) 21:17:25
いまさらだけど、ループはi<=n/2まででいい気がする
683デフォルトの名無しさん:2007/01/09(火) 22:23:12
[1] 授業単元:C言語
[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] その他の制限: 特になし

よろしくお願いします。
684デフォルトの名無しさん:2007/01/09(火) 22:25:45
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
引数として与えられた文字列から、
ハッシュ値を計算するハッシュ関数を作成し、
以下の文字列についてハッシュ値を計算して
画面に出力しなさい。
(ハッシュ関数は実習時間中に作成したものでよい)
ハッシュ値を計算する文字列
"Matsuzaka"
"Igawa"
"Kuwata"
"Okajima"
自分の名字
ハッシュ関数の内容
与えられた文字列の、一つ一つの文字の文字コードを合計し、
最後にハッシュ表の大きさで割った余りを計算する。
 ハッシュ表の大きさは7とする
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: VISUAL STUDIO 2005
 [3.3] 言語: C
[4] 期限: 締め切りは明日の朝
[5] その他の制限: 制限は無い

急ぎですが、どうかお願いします
685デフォルトの名無しさん:2007/01/09(火) 22:31:12
>>684
実習はしなかったのか?それともハッシュ関数の内容ってのが実習でやったことなのか?
686デフォルトの名無しさん:2007/01/09(火) 22:35:41
>>683
>>472の付近を捜せ以上
687デフォルトの名無しさん:2007/01/09(火) 22:36:36
って削除機能追加されたのか。
すまん。
688デフォルトの名無しさん:2007/01/09(火) 22:57:24
[1] 授業単元:データ構造とアルゴリズム
[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] その他の制限: 特にありません

よろしくお願いします
689デフォルトの名無しさん:2007/01/09(火) 23:23:28
>>685 実習は参加できず、プログラム作成ができませんでした。
問題文通りのハッシュ関数を作成していただければ問題ないと思います。実習内で作ったものでもよいというのは、実習時間内で作成したものが、そのまま延長で課題になったみたいです
690デフォルトの名無しさん: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;
}
691デフォルトの名無しさん:2007/01/09(火) 23:27:21
#define HASH_MAX 7
int hash(const char *s) {
int x;
for(x = 0; *s; x += *(s++));
return x % HASH_MAX;
}
692デフォルトの名無しさん:2007/01/09(火) 23:40:00
#include<stdio.h>
#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
693デフォルトの名無しさん:2007/01/09(火) 23:41:26
何この三者三様
>>688
>>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);
}
しまったこいつは修正

int fputstr(FILE *fh, STR *s){
    SLIST *p;
    for(p = s->begin; p->next != NULL; p = p->next)
        fputchar(p->moji, fh);
}
696デフォルトの名無しさん:2007/01/10(水) 00:10:59
697デフォルトの名無しさん:2007/01/10(水) 00:19:22
顔と同じソースコードだな
698デフォルトの名無しさん: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×なるようにお願いします。
699デフォルトの名無しさん:2007/01/10(水) 01:26:11
1] 授業単元: 情報処理
[2] 問題文(含コード&リンク): 以下に示した構造体の型を利用して,複素数を扱う構造体変数a,b を宣言する.それぞれの
構造体変数の実数部,虚数部の係数をキーボードから入力し,複素数の和,差,積,商を演
算して画面表示するプログラムを作成しなさい.
構造体の型
struct complex_number {
double real, imaginary;
};
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C

よろしくお願いします。
700デフォルトの名無しさん:2007/01/10(水) 02:26:56
>>698
ルールは?TickTackToeでいいの?
701デフォルトの名無しさん:2007/01/10(水) 03:07:04
int ban[3][3] = {0};
char * 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
702デフォルトの名無しさん:2007/01/10(水) 03:17:05
>>554
起動してみるとRAND_MAXのシンボルが未定義です。と言われるのですがどうしたらいいのでしょうか?
703デフォルトの名無しさん:2007/01/10(水) 03:18:38
アンダーバーを全角から半角に変えてみるとか?
704デフォルトの名無しさん:2007/01/10(水) 03:22:17
>>703
すいませんorz RAND_MAXでした
702のは変換ミスですorz
705デフォルトの名無しさん:2007/01/10(水) 03:29:22
>>702
#include <stdlib.h>
の下に次の三行を追加してみて
#ifndef RAND_MAX
#define RAND_MAX 0x7FFF
#endif
706デフォルトの名無しさん:2007/01/10(水) 03:33:59
書き込みする前に更新してみような
707デフォルトの名無しさん:2007/01/10(水) 03:35:38
>>705
#ifndef、#define、#endif
この三つは習った事が無いので避けたいのですが使わずには無理でしょうか?><
708デフォルトの名無しさん:2007/01/10(水) 03:37:41
>>707
>>705 を追加してみて正常に動くかどうか確認するのが先だよ
709デフォルトの名無しさん:2007/01/10(水) 03:38:57
そういや前もそんなこと言ってる奴がいたな。

Study CとかいうインタプリタはC89準拠じゃないんか。
学習用としては厄介な環境だね。
710デフォルトの名無しさん:2007/01/10(水) 03:40:33
CASLI/IIみたいなもんだと思えばいいんでね?
711デフォルトの名無しさん:2007/01/10(水) 03:41:21
一体何を伝えたいのやら・・・
712デフォルトの名無しさん:2007/01/10(水) 03:44:03
>>708
追加で動くみたいです
713デフォルトの名無しさん:2007/01/10(水) 03:46:36
RAND_MAXを0x7FFFに書き換えればいいんじゃないか?
714デフォルトの名無しさん:2007/01/10(水) 03:54:38
本当の RAND_MAX が分からないと円周率が求まらないのが問題だ
715デフォルトの名無しさん:2007/01/10(水) 03:59:23
>>709
とりあえずvectorにあるお試し版を試してみたところ、randの最大は0x7FFFみたい

しかし、面白いねこれ。stdio.hなんか5行しかないしw
716デフォルトの名無しさん:2007/01/10(水) 06:41:52
>>680
ありがとうございます。
717デフォルトの名無しさん:2007/01/10(水) 07:47:45
>>694
>>695
ありがとうございました
718デフォルトの名無しさん:2007/01/10(水) 09:15:38
>>683
以前の課題に付け加えで何かする課題なら、それを言うべきだな。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3343.c
719688:2007/01/10(水) 09:23:50
>>694

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(p->moji, fh);
}
この部分で、
.\str.c(46) : error C2440: '=' : 'SLIST *' から 'SLIST' に変換できません。
.\str.c(46) : error C2172: 'free' : 1 番目の実引数がポインタではありません。
.\str.c(54) : warning C4020: 'fputchar' : 実引数が多すぎます。
とエラーが出てしまいコンパイルできません。
どのようにすればよいでしょうか?
720デフォルトの名無しさん:2007/01/10(水) 09:42:47
[1] 授業単元:
[2] 問題文(含コード&リンク):

二次元平面上の点の列 p = [ (x1,y1), ..., (xn,yn) ] が与えられる。
これらのうち、最も近いペアと最も遠いペアをそれぞれ効率よく求めよ。

なお効率の評価について、点は適当に分散していると仮定してよい。

[3] 環境
 [3.1,3.2] OS, コンパイラ問わず。
 [3.3] 言語: どちらでも可。
[4] 期限: 1月13日程度。
[5] その他の制限: 特になし。
721デフォルトの名無しさん:2007/01/10(水) 10:28:02
[1] 授業単元:C言語によるプログラミング実習
[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しましたテキストの一番下に記載してあります、
ヒントとして提示された資料を書き換える形でお願いします。
よろしくお願いいたします。
722デフォルトの名無しさん:2007/01/10(水) 10:30:27
>>719
SLIST *p, tmp; <- 片方ポインタじゃないヨ
723デフォルトの名無しさん:2007/01/10(水) 10:59:09
>>720
たとえば
p = [ (1, 1), (1, 1), (1, 1), (1, 2), (1, 2), (1, 2)]
ならどういう風に求まるの?
724デフォルトの名無しさん:2007/01/10(水) 11:00:29
>>723
それよりだったらこっちだ
p=[(1, 1), (1, 2), (2, 3), (3, 4)]
725デフォルトの名無しさん:2007/01/10(水) 11:14:46
>>722
ありがとうございます~
726720:2007/01/10(水) 11:22:20
>>723
同じ座標であっても異なる点とみなします。また、同じ距離のものが
複数あった場合、どれを表示してもよいことにします。従ってその入力の場合
最近点対: (1,1),(1,1)、最遠点対: (1,1),(1,2) などが解の候補です。

なお、同一距離のものが複数あったり、同一点があったりすることで実装が
面倒になるのであれば、それらは無いものとしてもかまいません。

>>724
その場合は問題なく最近点対: (1,1),(1,2)、最遠点対 (1,1),(3,4) と思います。
727デフォルトの名無しさん:2007/01/10(水) 12:11:06
[1] 授業単元:プログラミング実習
[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] その他の制限: 制限は無い

どうかよろしくお願いします
728デフォルトの名無しさん:2007/01/10(水) 12:30:22
正直授業受けるよりココに座って宿題片してた方が力つくな
面白い問題も時々出てくるし
729デフォルトの名無しさん:2007/01/10(水) 12:37:34
730デフォルトの名無しさん:2007/01/10(水) 13:02:11
[1] 文系プログラミング
[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日まで

よろしくお願いします
731デフォルトの名無しさん:2007/01/10(水) 13:15:08
>>730
C++なら、クラス使えってこと?
RoomクラスとかStudentクラスとか登場しちゃう?

732デフォルトの名無しさん:2007/01/10(水) 13:21:51
>>730
三人の点数の入力は手打ちなのか、それともファイルから読み込むのか
それぐらいは分からないと難しいな
733デフォルトの名無しさん:2007/01/10(水) 13:28:28
734デフォルトの名無しさん:2007/01/10(水) 13:34:52
>>733
クリックなんかじゃ見せないって訳ね
プログラムは、コピペだと
735デフォルトの名無しさん:2007/01/10(水) 14:17:51
>>730
ここで解凍 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==
736735:2007/01/10(水) 14:18:57
すまん、先頭の
#include <numeric>
は消しといてくれ。
737デフォルトの名無しさん:2007/01/10(水) 14:25:24
>>729 それって別に効率よくないんじゃね?
738デフォルトの名無しさん:2007/01/10(水) 14:36:53
>>733 ありがとうございます。
ですが、87、89行目がエラーでうまくビルドできないみたいです
739デフォルトの名無しさん:2007/01/10(水) 14:46:50
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
100以下の素数をすべて出力するプログラムを作成しなさい。
自然数xに対して、2以上で、√x以下の素数で割り切れない数が素数である。
ただし、1は素数でも合成数でもない。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1/12
740デフォルトの名無しさん:2007/01/10(水) 14:55:17
>>739
#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;}
741デフォルトの名無しさん:2007/01/10(水) 15:02:10
>>740
ありがとうございます
742デフォルトの名無しさん:2007/01/10(水) 15:04:42 BE:31057128-2BP(202)
>>739
#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;}
743デフォルトの名無しさん:2007/01/10(水) 15:08:15
>>740 うわっ、また性帝トーマスさんに怒られちゃいますよ?
744デフォルトの名無しさん:2007/01/10(水) 15:09:17
>>743
寝ぼけてて問題文よく読んでなかった
見逃してくれ
745デフォルトの名無しさん:2007/01/10(水) 15:10:17 BE:95109577-2BP(202)
どこを怒れと?
まあ>>742よりは遅いだろうが。
746デフォルトの名無しさん:2007/01/10(水) 15:11:33
>>745
>for(x=0;x<=100;x++)
もっとお怒りになられるでしょ?奇数ずつでやったものよりさらに・・・
747デフォルトの名無しさん:2007/01/10(水) 15:14:38 BE:46585038-2BP(202)
>>746
おお、これはいかん。
748デフォルトの名無しさん:2007/01/10(水) 15:16:21
100以下の自然数xを表現したかったんだけどなんかまずかった?
749デフォルトの名無しさん:2007/01/10(水) 15:17:24 BE:139752689-2BP(202)
>>748
上の方でせっかく偶数をはねてるのにx++はなかろう。
750デフォルトの名無しさん:2007/01/10(水) 15:18:58
>>739
>、√x以下の素数で割り切れない数が素数である。
いや、まぁそれはおいといて、↑これもソースの中に意味があるように
取り込まなきゃならんのでは?ってことは、やっぱりあのありきたりな
やり方をするべきかと。
751デフォルトの名無しさん:2007/01/10(水) 15:20:38 BE:139752498-2BP(202)
>>750
>for(i=3;i*i<=n;i+=2)
があるじゃん。

んで、問題文は「表示しろ」とあるだけで「計算しろ」とは書いてない。
752デフォルトの名無しさん:2007/01/10(水) 15:21:22
>>750
いやだから寝ぼけてて読んでなかったって書いたじゃん
見逃してくれよ
753デフォルトの名無しさん:2007/01/10(水) 15:22:19
740 は素数判定ルーチンがあって、main はそれを使います、って
姿勢で書かれてるんだろうからこれでいいと思うんだけどなあ
754デフォルトの名無しさん:2007/01/10(水) 15:32:36
>>751
>、√x以下の素数で
xは素数って条件は入らないん?まぁ良いや。
ちうかそれ、お主がもろに指摘したことだろ?
奇数を順番に使って割っていくことに対して文句を。
あんたは素数か判別するのにすでに求められた素数だけを使ったんじゃないのかね?
755デフォルトの名無しさん:2007/01/10(水) 15:35:26
[1] 授業単元: C言語
[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

よろしくお願いします。
756デフォルトの名無しさん:2007/01/10(水) 15:35:58 BE:104814296-2BP(202)
>>754
>xは素数って条件は入らないん?まぁ良いや。

だからその通りになってるじゃん。

>あんたは素数か判別するのにすでに求められた素数だけを使ったんじゃないのかね?

既知の定数を使うことに何か問題でも?
757730:2007/01/10(水) 15:43:27
>>732 手打ちです。
>>731 Roomとかstudentとかって何ですか?おそらく、考慮しなくても大丈夫だと思いますが・・・
758デフォルトの名無しさん:2007/01/10(水) 15:59:41
[1] 授業単元:programingⅡ
[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] 期限:できれば早いうちにおねがいしたい。
759735:2007/01/10(水) 16:06:53
>>757
これを参照先の解凍ページに貼り付けてボタンをクリックすれば
コードが得られる。
760デフォルトの名無しさん:2007/01/10(水) 16:16:17
>>759
んな面倒なことしないでソースをうpロダにうpしろ。できない奴は
ソースを見なくても良いってならはじめっから書かなくて良いよ。
761デフォルトの名無しさん:2007/01/10(水) 16:17:06
>>758
#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)));
    }
}
762730:2007/01/10(水) 16:37:35
>>759>>760 先生に口頭と板書で説明されたのですが
763デフォルトの名無しさん:2007/01/10(水) 16:44:07
>>762
何を?
764730:2007/01/10(水) 16:49:39
>>763 課題内容です。
765デフォルトの名無しさん:2007/01/10(水) 16:51:25
[1] 授業単元:コンピュータ入門
[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] その他の制限:なし

よろしくお願いします。
766デフォルトの名無しさん:2007/01/10(水) 16:56:06
>>764
それぐらい分かってるがな
767730:2007/01/10(水) 17:02:49
>>766 すいません。では、どうしたらいいですか?
768デフォルトの名無しさん:2007/01/10(水) 17:09:17
769730:2007/01/10(水) 17:27:03
>>768 おさわがせしてすいません。

>>735 ありがとうございました。
770765: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] その他の制限:なし

サンプルプログラムはシンプソンの公式なるものが使われているようです。
よろしくお願いします。
771デフォルトの名無しさん:2007/01/10(水) 17:50:42
>>770
double 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と挿しかえれ
772765:2007/01/10(水) 18:12:24
>>771
できました!ありがとうございます。
773デフォルトの名無しさん:2007/01/10(水) 18:32:34
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
int型の変数256個分をメモリ上に動的に10回確保する操作を行え。この際、メモリを確保できた場合
   その先頭アドレス(16進数)を順次テキストファイルに書き出せ。
 [3.1] OS: windows xp
 [3.2] コンパイラ名とバージョン: gcc3.4
 [3.3] 言語: C
[4] 期限: 1/11 8:00まで
[5] その他の制限:malloc関数を使う問題です。

よろしくお願いします。
774デフォルトの名無しさん:2007/01/10(水) 18:57:51
mallocしてすぐfreeを10回するバージョン
-----------------------------
#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 ) ;
}
775デフォルトの名無しさん:2007/01/10(水) 18:58:42
mallocを10回して後で全部freeするバージョン
-----------------------------
#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] ) ;
}
}
776デフォルトの名無しさん:2007/01/10(水) 19:02:03
mallocしてfreeしないバージョン
-----------------------------
#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 ) ;
}
777デフォルトの名無しさん: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 ) ;
}
778773:2007/01/10(水) 20:11:39
>>774~777
ありがとうございます。教授を挑発しない程度にがんばります。
779688:2007/01/10(水) 23:00:44
[1] 授業単元:データ構造とアルゴリズム
[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"となってしまいます。
どのように修正すればよいでしょうか?

よろしくおねがいします
780688:2007/01/10(水) 23:03:41
>>694さん
>>722さんでした
781デフォルトの名無しさん:2007/01/10(水) 23:16:37
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
C#でやりなさいで言われました。全然できなくて、誰か教えていただけないでしょうか?
よろしくお願いします
782デフォルトの名無しさん:2007/01/10(水) 23:21:51
スレ違い
783デフォルトの名無しさん:2007/01/10(水) 23:24:08
781の問題はCでもいいので、教えてください!
784デフォルトの名無しさん:2007/01/10(水) 23:25:09
お前、まだその問題解けてなかったのかよ……
785デフォルトの名無しさん:2007/01/10(水) 23:26:05
[1]授業単元;プログラミング
[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]よくわからないので、お願いします
786デフォルトの名無しさん:2007/01/10(水) 23:27:39
>>781
XNAスレにまでマルチしてからかわれてた奴かw
787デフォルトの名無しさん:2007/01/10(水) 23:28:39
>>785
その問題、こないだも見た。
788デフォルトの名無しさん:2007/01/10(水) 23:30:29
784>
   解けてない!;;( ´Д`)
   よくわからないです
789デフォルトの名無しさん:2007/01/10(水) 23:30:31
>>779
addchararray 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;
}
790デフォルトの名無しさん:2007/01/10(水) 23:31:17
>>785
>>670

こう問題が被るところをみると、教師用の課題虎の巻でもあるんだろうか。
791789:2007/01/10(水) 23:32:18
あ、型チェックを強化するためにC++でやったのが裏目に出た
*c != NULLを*c != '\0'に直して。
792688:2007/01/10(水) 23:39:19
>>789さん

コンパイル通って正常に出力されました。
ありがとうございました~
793デフォルトの名無しさん:2007/01/11(木) 00:04:52
[1]授業単元;プログラミング
[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]本当にわからないので、お願いします
794デフォルトの名無しさん:2007/01/11(木) 00:29:59
795デフォルトの名無しさん:2007/01/11(木) 00:36:04
>>793
ちと遅れたがせっかく書いたし。

ここで解凍 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==
796デフォルトの名無しさん:2007/01/11(木) 00:39:31
>>795
あー、そっか
順列ってタネの列作ってどんどん転置していけばいいんだ(orz
797デフォルトの名無しさん:2007/01/11(木) 00:51:30
>>794
   本当に感謝します。ありがとうございます。

798デフォルトの名無しさん:2007/01/11(木) 01:05:52
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):数独を解くプログラムを作成せよ。
また別に、数独の問題を作成するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月12日
799デフォルトの名無しさん:2007/01/11(木) 02:19:00
[1] 授業単元:情報科学基礎
[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] その他の制限: なし
800デフォルトの名無しさん:2007/01/11(木) 02:38:43
[1] 授業単元:離散数学Ⅱ
[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
801デフォルトの名無しさん:2007/01/11(木) 02:48:06
>800
つりあっていない場合は表示しちゃ駄目なの?
802デフォルトの名無しさん:2007/01/11(木) 03:08:41
>>801
多分その場合は「整合していません」とかエラー文を出して終了させるんだと思います
#include <stdio.h>
int 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;
}
804デフォルトの名無しさん:2007/01/11(木) 03:41:36
>コマンドライン上の括弧文字列を読み込んで、
って、引数として渡せってこっちゃないん?
そう思ったが、 [ はシェルによっては意味を持つからエスケープしてやんないと駄目だぞ
806デフォルトの名無しさん:2007/01/11(木) 03:46:09
この時間にわざわざありがとうございます
あとは・・・頑張ってコマンドライン引数をどうやって取り込むか理解するだけ・・・
807デフォルトの名無しさん:2007/01/11(木) 03:47:29
>>805
なんか複雑そうですな・・・orz
こういうことか
#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;
}
809デフォルトの名無しさん:2007/01/11(木) 04:14:52
本当にありがとうございますorz
810デフォルトの名無しさん:2007/01/11(木) 04:16:55
>>799
#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;
}

結果の数学的な正しさはちょっと保障できんが。
811デフォルトの名無しさん:2007/01/11(木) 04:26:49
[1] 授業単元: プログラミング2
[2] 問題文(含コード&リンク):1方向線状リストを使ってスタックを実現せよ。
ただし、各記憶要素xは整数値をとるものとする。
関数としてpush(x),pop(),empty(),ならびに現在のスタック内容を表示するためのshow()を用意する。
[3] 環境
 [3.1] windows
 [3.2] gcc
 [3.3] C
[4] 期限: 1月11日午後1時迄
812デフォルトの名無しさん:2007/01/11(木) 04:29:54
>>800
もうとかれてるけど、教授を挑発するタイプ。一度やってみたかった。

#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;
}
813デフォルトの名無しさん:2007/01/11(木) 05:00:22
>>811
ふざけたインターフェースで悪いが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3350.c
814デフォルトの名無しさん :2007/01/11(木) 10:20:21
[1] 授業単元: プログラミング
[2] 問題文
平面上の2点の座標を読み込み、それら2点の距離を出力するC
プログラムを作成せよ。但し、作成においては平面上の座標を構造体で表し、
それに Point というデータ型名をつけるものとする。
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 1月12日

ごめんなさい皆さん。力を貸してください。
815デフォルトの名無しさん:2007/01/11(木) 11:58:06
>>814
読み込む形式は何?キーボード?ファイルから?
座標の情報はどこまで精度を保持すればいいの?
整数?小数?
816デフォルトの名無しさん:2007/01/11(木) 12:01:02
>>812
再帰ワロタ
817デフォルトの名無しさん:2007/01/11(木) 12:50:56
[1] 授業単元: プログラミング演習
[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] その他の制限:とくになし

よろしくお願いします
818デフォルトの名無しさん:2007/01/11(木) 13:39:29
[1] 授業単元: C言語 文字列とポインタ
[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日

以上です。よろしくお願いします。
819デフォルトの名無しさん:2007/01/11(木) 13:41:41
C言語で重回帰分析のプログラムを作ろうとしてるけど
なにをしていいのかわからんのです。

誰か助けてください。
820798:2007/01/11(木) 13:43:53
>798
お願いします。
821デフォルトの名無しさん:2007/01/11(木) 13:45:03
C言語で重回帰分析のプログラムを作ろうとしてるけど
なにをしていいのかわからんのです。

・データはファイルから読み込む
・扱う変数は実測値、係数ともに10コ。

とりあえずメイン処理部分さえ助けていただけたら最高です。
誰か助けてください。
822デフォルトの名無しさん:2007/01/11(木) 14:08:13
823johnny: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] その他の制限: 制限はありません。 自分ではまったくわかりません。

宜しくお願いします。
824デフォルトの名無しさん:2007/01/11(木) 14:39:11
>>818
#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);
}
825デフォルトの名無しさん:2007/01/11(木) 14:44:55
[1] 授業単元:統計解析学
[2] 重回帰分析をするプログラムを作成しなさい。
[3] 環境
 [3.1] cygwin
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限: 1/12

よろしくお願いします。
826デフォルトの名無しさん:2007/01/11(木) 15:13:50
>>825
> ・データはファイルから読み込む
> ・扱う変数は実測値、係数ともに10コ

これも入れとけよ阿呆
827825:2007/01/11(木) 15:34:03
> ・データはファイルから読み込む
> ・扱う変数は実測値、係数ともに10コ

すいません、書き忘れてました。
よろしくおねがいします。
828デフォルトの名無しさん:2007/01/11(木) 17:49:02
[1] 授業単元: C言語
[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] その他の制限:特になし

お願いします。
829424:2007/01/11(木) 17:51:08
>>424をお願いします
月曜日に締め切りです。
どうかよろしくお願いします
830デフォルトの名無しさん:2007/01/11(木) 18:04:31
[1] 授業単元: プログラミング
[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] その他の制限:
831デフォルトの名無しさん:2007/01/11(木) 18:06:53
832830:2007/01/11(木) 18:09:43
>>831
sprintfをどう使えばいいのか分からないのです。
833デフォルトの名無しさん:2007/01/11(木) 18:10:01
>>829
Cは変態言語だから難しそうだね
コンパイラのパーサ部分をまるまる作んなきゃいけないわけだし。
834デフォルトの名無しさん:2007/01/11(木) 18:24:16
>>814 途中で飽きたけどせっかくだから出す
入力値の読み込みをコメント部分に入れれば動くはず
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=
835814:2007/01/11(木) 18:28:16
座標の情報は整数+少数第2位程度まで、読み込むのはキーボード
からでお願いします。
836デフォルトの名無しさん:2007/01/11(木) 18:35:16
>>832
> 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のような形では渡せない
837デフォルトの名無しさん:2007/01/11(木) 19:03:43
>>829
bison&flex とか使えるならともかく、まともに構文解析書くのマンドクセ
838デフォルトの名無しさん: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] その他の制限: 特になし
839デフォルトの名無しさん:2007/01/11(木) 19:09:18
>>829
構文解析は情報の課題ではかなり難度(めんどくささ)が高いぞ。
丸投げせざるを得ない程度の知識でそんな課題が出る講義でてるのか?
840デフォルトの名無しさん:2007/01/11(木) 19:25:48
[1] 授業単元: C++プログラミング
[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] その他の制限:特にないです。

急ですが、無理を承知で宜しくお願いします!

841デフォルトの名無しさん:2007/01/11(木) 19:32:22
あと10ヶ月あれば余裕だろ
842デフォルトの名無しさん:2007/01/11(木) 19:34:19
>>824
コンパイルできました。
ありがとうございます。
843デフォルトの名無しさん:2007/01/11(木) 19:46:53
>>840
とりあえず課題部分だけ。
長くなるから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);
844デフォルトの名無しさん:2007/01/11(木) 19:57:53
[1] 授業単元:プログラミング [2] 問題文
2問あります。お願いします。
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日
845デフォルトの名無しさん:2007/01/11(木) 20:05:14
>>840
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3355.txt
1・2とボーナスA・Bまで。
デバッグしてないからちゃんと動くか確認しろよ!
846デフォルトの名無しさん:2007/01/11(木) 20:59:00
>>843,>>845
どうもありがとうございました。とても助かりました!
847デフォルトの名無しさん: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したテキスト
の一番下の参考のバージョンに追記する形でお願いします。
勿論、オリジナルでもかまいません。

よろしくお願いいたします。
848デフォルトの名無しさん:2007/01/11(木) 23:00:16
[1] 授業単元:統計解析学
[2] 重回帰分析をするプログラムを作成しなさい。
[3] 環境
 [3.1] cygwin
 [3.2] gcc 3.4
 [3.3] 言語: C
[4] 期限: 1/13
  [5] その他の制限: 扱う変数は実測値、係数ともに10コ程度

急で難しい問題ですが、よろしくお願いします。
849デフォルトの名無しさん:2007/01/11(木) 23:05:18
850デフォルトの名無しさん:2007/01/11(木) 23:18:03
どうしてくれるんだ
派遣のほうが給料が高いというから俺様は正社員を辞めて派遣になったんだぞ!
謝る気があるなら俺様に正社員に戻る方法を教えてくれ
851デフォルトの名無しさん:2007/01/11(木) 23:19:48
なにかすごいソフトウェアを作れ
そして大手に売り込め
852デフォルトの名無しさん:2007/01/11(木) 23:21:40
[1] 授業単元:情報論
[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

穴埋め形式なのですが、手も足も出ません…。
長いプログラムですので、穴埋めの部分だけでもお願いします。
853デフォルトの名無しさん:2007/01/11(木) 23:24:25
おいおい。研究室直リンかよw
別にいいけどさ
854デフォルトの名無しさん:2007/01/11(木) 23:29:07
>>853
スイマセン。
どうしようか迷ったのですが、コピペするのも迷惑かと思いまして…。
855デフォルトの名無しさん:2007/01/11(木) 23:31:33
>>854
いや普通は自分でアップするだろ
ファイルのコピーとか
856デフォルトの名無しさん:2007/01/11(木) 23:32:08
struct node* InitNode(int size){

/* 自分で書いてください*/

}
これとか戻り値じゃなくてサイズと構造体のアドレス取得しときゃmemsetで一発だろ
857デフォルトの名無しさん :2007/01/11(木) 23:54:28
>>844
一問目のソース書いてて、むなしくなったので途中でやめました
その途中までのソースアップしました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3358.txt
858デフォルトの名無しさん:2007/01/12(金) 00:36:49
>>857
fgets
859デフォルトの名無しさん:2007/01/12(金) 00:37:29
>>857
stdin
860817:2007/01/12(金) 00:47:26
>>817
本日9時までにお願いできないでしょうか。
どなたかよろしくお願いします
861デフォルトの名無しさん:2007/01/12(金) 01:02:35
[1]基礎情報処理
[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]特にないと思います

問題文長いですが、黒い点で囲まれた内部の「白い点」の数を数えるプログラムが
書ければできると思うんです
お願いします
862デフォルトの名無しさん:2007/01/12(金) 01:16:41
>>860
あー、明日仕事なんだがなー
863デフォルトの名無しさん:2007/01/12(金) 01:30:54
[1] 授業単元: プログラミング演習
[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] その他の制限: 特になし
あと少し・・・あと少しで卒業なんだ・・・・
864デフォルトの名無しさん:2007/01/12(金) 01:36:17
#include <stdio.h>
#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;
}
865864:2007/01/12(金) 01:44:31
>>863
何だよ終わってるじゃねーか

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;
}

866デフォルトの名無しさん:2007/01/12(金) 01:45:10
while(1)
{
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;
}
867864:2007/01/12(金) 01:45:46
else
{
writeBuf[j] = readBuf[i];
}
j = j + 1;
i = i + 1;
}

fwrite(&writeBuf[0], sizeof(writeBuf), 1, fp);

fclose(fp);
fp = NULL;

return 0;
}

じゃ、寝る
868817:2007/01/12(金) 01:48:04
>>864
ありがとうございます!
869デフォルトの名無しさん:2007/01/12(金) 02:00:28
[1] 授業単元:総合演習
[2] 問題文(含コード&リンク):数独 問題を表示させ、キーボードから数字を入力し解答する。
  同時に、解答プログラムも作成すること。
[3] 環境
 [3.1] OS: Windows Xp
 [3.2] コンパイラ名とバージョン: Borland C++ 5.02
 [3.3] 言語: C言語
[4] 期限: 2007/01/15
[5] その他の制限:APIを使用すること。
870デフォルトの名無しさん:2007/01/12(金) 02:21:52
>863 C++だったのか!!
教科書片手に必死で書いたのに、残念!!
てか、俺みたいなやつは書き込んじゃいけなかったかな・・・?
871デフォルトの名無しさん:2007/01/12(金) 02:37:31
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):テイラー展開を用いてsinx,cosx,tanxの値を求めよ。
ただしx はキーボードから入力すること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語:c
[4] 期限: 1月12日
[5] その他の制限: よろしくお願いします。
872デフォルトの名無しさん:2007/01/12(金) 03:24:43
[1] 授業単元:Cプロ演習
[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よろしくおねがいします
873デフォルトの名無しさん:2007/01/12(金) 03:34:43
[1] 授業単元: プログラミング
[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] その他の制限: ポインタ、構造体は習ってません

お願いします。
874デフォルトの名無しさん:2007/01/12(金) 03:39:26
>>798
やってくれた人いませんか???お願いします。
875デフォルトの名無しさん:2007/01/12(金) 03:56:26
>>871
#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;
}
876871:2007/01/12(金) 04:07:30
>>875
ありがとうございました。
877デフォルトの名無しさん:2007/01/12(金) 08:37:13
>>872

int 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]以降になる。
878デフォルトの名無しさん:2007/01/12(金) 09:18:03
>>874
数独はぐぐったらそこらへんに転がってるよ
879デフォルトの名無しさん:2007/01/12(金) 09:22:59
>>861
すいません、これお願いします・・・
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3360.txt
880デフォルトの名無しさん:2007/01/12(金) 09:54:46 BE:46584083-2BP(202)
>>861
>例えばC 言語ならa[y,x]
このクソ出題者の名前を晒したら答えてやる。
881デフォルトの名無しさん:2007/01/12(金) 10:10:29
882デフォルトの名無しさん:2007/01/12(金) 10:13:56
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
ポインタ,構造体,関数分割,ファイル分割のすべてを利用した簡単なプログラム
を作成しなさい
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:2007/01/15
[5] その他の制限: なし

よろしくお願いいたします。
883デフォルトの名無しさん:2007/01/12(金) 10:16:19
>>877
ありがとうございます。
問題に「実行プログラム名はprnとする」とありますが
これは自分で作成しなければならないのでしょうか??
どういう操作をすれば目的を達成できるのかまだ理解できてません・・・
初心者で申し訳ないです(lll´Д`)
884デフォルトの名無しさん:2007/01/12(金) 10:21:23
>>848
よろしくお願いします!
885838:2007/01/12(金) 10:34:31
あまりなじみがないと思うのですがよろしくお願いいたします。
886デフォルトの名無しさん:2007/01/12(金) 10:36:07
>>883
ああごめんファイル名が決まってるの忘れてた。
nnnnって書いたとこprnに読み替えてくだしあ。
あとVBでCなんて書いた事ないからわかんないけど
>>877に書いたソースをprnってファイル名で作れば済むと思うけど
それ自体がわからないなら、まずぐぐってHelloWorld作る所からどうぞ。
887874:2007/01/12(金) 10:47:04
>>878
APIを絡めたのが見つからないので…
888デフォルトの名無しさん:2007/01/12(金) 10:54:02
>>886
さっきprnの名前でファイル作ることを試みてたんですが
「prnはデバイス名として予約されています」
って出てきて作成できなかったんです(;゚д゚)
889デフォルトの名無しさん:2007/01/12(金) 10:58:11
>>887
数独解いたり問題作るのにAPIを使う必要はないと思うのだが。
890デフォルトの名無しさん:2007/01/12(金) 11:00:13
>>888
MS-DOS/MS-Windowsではそのメッセージの言うように"prn.exe"と言う名前でファイルを作ることは(通常)できない。
問題を出した香具師に文句を言え。
891デフォルトの名無しさん:2007/01/12(金) 11:05:47
PRNとかCONとかAUXとか、いわゆるDOSデバイスの名前はダメだな。
拡張子ついてても関係ない。
892デフォルトの名無しさん:2007/01/12(金) 11:09:35
>>890
>>891
今から学校行ってクレームつけてきます(爆
色々ありがとうございます┏oペコリ
893874:2007/01/12(金) 11:19:09
>>889
問題を表示させ、キーボードとマウスを使って解答できるモノを作れとのことです。
894デフォルトの名無しさん:2007/01/12(金) 11:37:34
>>798
解く方なら。
なんか例題ない?
895デフォルトの名無しさん:2007/01/12(金) 11:46:21
>>893

>>798にそんなこと書いてない時点で論外
896デフォルトの名無しさん:2007/01/12(金) 11:54:19
>>894
ほい、プログラムで解いてもちょっと難しいのを。
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
簡単に解けるのがよければ作ってもいいけどどこにでも転がってるっしょ。
897デフォルトの名無しさん: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 │
└───┴───┴───┘
898デフォルトの名無しさん:2007/01/12(金) 12:40:47
[1] 授業単元: プログラミング
[2] 問題文  RS232Cのプログラム
[3] 環境
 [3.1] OS: Linux(Debian)
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 1月末
[5] その他の制限: 「やさしいC」を読んだだけの初心者ですが、
よろしくお願いします
899デフォルトの名無しさん:2007/01/12(金) 12:48:29
[1] 授業単元: C言語
[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

よろしくお願いします。
900デフォルトの名無しさん:2007/01/12(金) 12:59:23
こういうのってソートどういうの習ったか言ってくれないと回答しにくいよね…
最初に習う気がするバブルでいいのか?
901デフォルトの名無しさん:2007/01/12(金) 13:20:42
>>898
もっと具体的に。
「RS232Cのプログラム」では余りに内容がなさ過ぎる。
902デフォルトの名無しさん:2007/01/12(金) 13:48:58
1] 授業単元:プログラミング実習
[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] その他の制限: なし
よろしくお願いします。
903デフォルトの名無しさん:2007/01/12(金) 13:54:17
1] 授業単元:プログラミング実習
[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] その他の制限: なし
よろしくお願いします。
904デフォルトの名無しさん:2007/01/12(金) 13:56:31
905デフォルトの名無しさん:2007/01/12(金) 13:58:00
>>902
問題にある、「実習時間中に作成したもの」を提示したまえ。
906デフォルトの名無しさん:2007/01/12(金) 14:17:11
>>863
悪いな、少し遅れた。
ここで解凍 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
907デフォルトの名無しさん:2007/01/12(金) 15:23:39
>>901
他の媒体から、文字を受け取って表示させるRS232Cのプログラムです。

908デフォルトの名無しさん:2007/01/12(金) 15:29:43
【ネット】再来週にも2ちゃんねる停止? -ZAKZAK-★12 [01/12]
http://news22.2ch.net/test/read.cgi/newsplus/1168583082/
はやいとこ宿題質問しとけw
909デフォルトの名無しさん:2007/01/12(金) 15:35:11
PADが書けねーよー
PAD書けって宿題も受け付けてくれるスレおせーてください
910デフォルトの名無しさん:2007/01/12(金) 15:38:35
>>909 それくらい自分で書けるでしょ。胸にPADでも入れとけー(女なら)
http://www2.ee.knct.ac.jp/el/E2/L210/algorism/pad1.html
911デフォルトの名無しさん:2007/01/12(金) 15:46:13
>>910
このプログラムを作るためのPADを書けとかいうヤツでさっぱり書けません
912助けてください:2007/01/12(金) 16:38:08
[1] 授業単元:プログラミング演習
[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]特になし
すいません、ホントに分かんなくて困ってます。。。
助けてください。よろしくお願いします。
913デフォルトの名無しさん:2007/01/12(金) 16:52:33
int sense(int i, int j)については?
何か指示がなかった?
914初心者修行中:2007/01/12(金) 16:55:07
>>899
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3365.txt
バブルソート使いました。

お暇で気が向く先輩居ましたら、添削をお願いします。
こうした方が綺麗だよ、とか、
この部分の処理勿体無いよ等のアドバイスありましたら、是非お願いします。
915デフォルトの名無しさん:2007/01/12(金) 16:59:19
>>914
見事に文字化けしてるな
916助けてください:2007/01/12(金) 17:01:04
返事ありがとうございます。
現在位置(i,j)を引数にもらって、次に移動すべき隣接タイルの方向をランダムに選んで戻す。(東西南北には、整数1、2、3、4をそれぞれ対応させる。移動できるタイルが見つからなかったら0をもどす。)
って書いてあるんですけどこの事ですか??わかりにくくてすいません。
917初心者修行中:2007/01/12(金) 17:07:34
>>899
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3366.txt
文字化けとのことなので、再度。ソートは、バブルソートです。

お暇で、見てやっても良いぞって先輩居ましたら、添削をお願いします。
こうした方が綺麗だよ、とか、悪くは無いがこうした方が一般的だとか、
この部分の処理勿体無いよ等のアドバイスありましたら、是非お願いします。

>>915
ご指摘ありがとうございました。上げ直してみました。
これで駄目なら、もうダメポ

918デフォルトの名無しさん:2007/01/12(金) 17:08:49
>>914
・コーディングスタイルが気色悪い。
・整数値に意味を持たせてはいけない。⇒enumを使うべき。
・ifやforが1行野郎じゃないなら複文化({})すべき。
・配列の要素数は自分で数えるな。
・ループの上限は配列サイズから得るようにするべき。
919お願いします:2007/01/12(金) 17:10:15
質問です。
最短距離計算の一種なのですが・・・
複数(数十個)の部品があり各部品は複数(2or3個)のインターフェース(繋がれる点)を持っています。

それらの部品間を直線で繋いだときの距離の総和が最短となる場合を見つけたいのですが
分かる方がいたらお願いします。

ちなみに各部品はどのインターフェースを何度でも繋いでもよいのですが
必ず全ての部品が繋がっているようにしなければなりません。
920初心者修行中:2007/01/12(金) 17:10:54
>>918
ありがとうございます。これから書くときは、意識するようにします。
直してみます。
921デフォルトの名無しさん:2007/01/12(金) 17:23:38
>>918
>・コーディングスタイルが気色悪い
これほとんど因縁だろwwwwww
いや、俺もどうかなって思ったけどさ
922デフォルトの名無しさん:2007/01/12(金) 17:28:39
>>914
よ~し、おじちゃん因縁付けちゃうぞ。

      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 ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
923デフォルトの名無しさん:2007/01/12(金) 17:32:26
case:に中括弧つけるか普通?

とはいえここまで括弧の対応が分かりづらいソースは久しぶりに見た
924初心者修行中:2007/01/12(金) 17:35:17
>>899
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3367.txt
修正しました。

>>918
勉強になりました。精進します。
925初心者修行中914:2007/01/12(金) 17:44:39
>>921
いや、右も左もわからない状態なのに、勉強になるからといって、
回答者になる時点でどうかと思ってたので、こういう指摘はありがたいです。
どうすれば良いかが、まるでわからないので、書いた物へのアドバイスは大変貴重なのです。
綺麗なソースを、できるだけ沢山読むようにしてみます。

>>922
ずれてますね。申し訳ない。

>>923
中括弧要らなかったですね。
なんか、もう初歩的なところでグダグダです。

見にくいソースを読んで、アドバイスくださった皆さん、
ありがとうございました。
指摘されたこと気を付けて、いっぱい書いてみます。
926デフォルトの名無しさん:2007/01/12(金) 17:49:46
>>925
じゃアドバイス一つだけ。
ここで指摘された事が全てと思わない方が良い。
>>918みたいに主観と客観が織り交じった意見は
主観の部分は真に受ける必要は無い。
927デフォルトの名無しさん:2007/01/12(金) 17:53:19
caseの中括弧は、case内で変数宣言したいときとかに使うなぁ。
インデントが狂って泣ける。
928デフォルトの名無しさん:2007/01/12(金) 17:57:10
>>861
間に合うか?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
929デフォルトの名無しさん:2007/01/12(金) 18:08:57
>>928
おおボケこいた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;
930デフォルトの名無しさん:2007/01/12(金) 18:29:42
>>921
これでどう?

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
931デフォルトの名無しさん:2007/01/12(金) 18:30:21
アンカー間違い。
>>912だった。
932デフォルトの名無しさん: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となりました。
多分合ってると思うので、プログラムのみをお願いします。
933デフォルトの名無しさん:2007/01/12(金) 19:22:02
ニュートン法の部分は組み終わったんだが、
初期値を求めるアルゴリズムはなんでもいいのか?
934デフォルトの名無しさん:2007/01/12(金) 19:44:38
>>933
特に指定がないので、xの解が出ればなんでも良いと思います。
935デフォルトの名無しさん:2007/01/12(金) 19:49:50
>>933
だめです。
936861:2007/01/12(金) 20:12:02
>>880さん
晒すのはご勘弁を・・

>>881さん
どうもありがとうございます!
本当に助かりました!

>>928さん
ありがとうございます、時すでに遅しでしたが
プログラムを拝見させてもらったところ丁寧にコメントまで
つけて頂き本当にありがとうございました!
参考にさせて頂きます!
937デフォルトの名無しさん:2007/01/12(金) 20:29:29
>>932
ニュートン法だけならこんな感じか。
複数の解があるときに近似解を求める方法がわからん

#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));
}
938720:2007/01/12(金) 20:37:41
>>720 お願いします。

>>729 さんが解答していますが、「効率よく」という条件を
満たしていないので、別解を希望します。
939デフォルトの名無しさん:2007/01/12(金) 20:40:06
>>938
どの部分より効率が悪いと判断したんですか?
940720:2007/01/12(金) 20:49:35
>>939
どの部分というよりも、アルゴリズム自体が非効率に思えます。
具体的には、実際に全ての点対について距離を計算しているので、計算量 O(n^2) です。
941デフォルトの名無しさん:2007/01/12(金) 20:58:56
プログラマにアルゴリズムの質問したって碌な答えは返ってこないぞ
942デフォルトの名無しさん:2007/01/12(金) 21:09:00
そんなことはないだろ
計算量とかアルゴリズムも分からんでやっていけるのは
本当に底辺のプログラマだけだと思うが
943デフォルトの名無しさん:2007/01/12(金) 21:31:28
しかし新たなアルゴリズムを編み出すのは本業じゃないからな
944デフォルトの名無しさん:2007/01/12(金) 21:37:12
>>938
もっとも遠いペアなら、
まずは凸包を求めて、
その凸包の各点の対角に当たる点との
距離のうち一番遠い奴ってのが、
それっぽいけど、
もっとも近いペアはどうやるんだろ?

ちょっと思いつかない。
945944:2007/01/12(金) 21:42:39
>その凸包の各点の対角に当たる点との 

あ、やっぱり対角とは限らないか・・・
946デフォルトの名無しさん:2007/01/12(金) 21:42:39
最近(遠)点対問題とか有名なんだけどWeb上でリソースがみつからんなぁ。
アルゴリズムイントロダクションに乗ってた気がするけど手持ちにないし。
947向井:2007/01/12(金) 23:12:02
[1] 授業単元:プログラミング入門
[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>の型でお願いします

  どうぞ、よろしくお願いします
948デフォルトの名無しさん:2007/01/12(金) 23:18:30
CがいいのかC++がいいのかはっきりしろ
949向井:2007/01/12(金) 23:23:36
>>948 C++です
950814:2007/01/12(金) 23:58:36
>>834
ありがとうございます。書いてくれたことに気づいていませんでした・・
これをもとにがんばります。本当にすいません。
951デフォルトの名無しさん:2007/01/13(土) 00:00:52
>>944
ドロネー図を作ればO(n log n)で求まるらしい
952デフォルトの名無しさん:2007/01/13(土) 00:01:21
>>938
とりあえずスキャンライン型の最近点対探索.
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3369.c

n x1 y1 x2 y2 ... xn yn

のようなファイルをプログラムの第一引数に渡す(区切り文字は改行でもいい).
第一引数を省略した場合,標準入力から同様の形式を読み込む.
953デフォルトの名無しさん:2007/01/13(土) 01:14:23
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):生まれてから今日までの日数の表示(閏年考慮)
   
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
954869 ◆xkG5F/RZlA :2007/01/13(土) 01:15:14
869ですが、何とかならないでしょうか?
よろしくお願いします。
955デフォルトの名無しさん:2007/01/13(土) 01:47:18
数独の解答計算機なら、確か七行プログラミングスレにあったなあと
思って探したら出てきた
http://pc10.2ch.net/test/read.cgi/tech/1142467359/49
956デフォルトの名無しさん:2007/01/13(土) 02:22:54
伝達関数に量子化雑音を組み込むのってどうすればいいのかわかりません…。
量子化雑音の式をz変換しなきゃだめ?
957デフォルトの名無しさん:2007/01/13(土) 02:30:04
ここは愚痴スレじゃないんだよ
958デフォルトの名無しさん:2007/01/13(土) 02:35:54
>>956
z変換って線形成なかったっけ?
(もしあるなら)量子化雑音の伝達関数をN(x)とすれば単純に足し合わせるのがいいんじゃないかと

というか"量子化雑音を組み込む"って何


むしろ居た違い死ね
959デフォルトの名無しさん:2007/01/13(土) 02:36:31
伝達関数に量子化雑音を組み込むのってどうすればいいのかわかりません…。
量子化雑音の式をz変換しなきゃだめ?
960デフォルトの名無しさん:2007/01/13(土) 02:44:57
>>959
量子化雑音の式が定義されてるの?
なけりゃ話にならないよ?

というよりオレも消えて欲しいと思っているから
961デフォルトの名無しさん:2007/01/13(土) 02:47:44
>>953
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3370.txt
眠いからトンチンカンなことやってても許してくれ
962デフォルトの名無しさん:2007/01/13(土) 02:53:28
[1] 授業単元:プログラミング
[2] 問題文:CUI/GUI問わずウンコの絵が出てくるアプリを作成せよ
あらかじめ作成した画像を使用することはならず、アニメーション表示されるとなおよし
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC8
 [3.3] 言語:C++
[4] 期限:明後日
[5] その他の制限:なし
お願いします。
963デフォルトの名無しさん:2007/01/13(土) 03:00:00
>>962
つ カンニング竹山
964デフォルトの名無しさん:2007/01/13(土) 03:04:25
>>961 days-=bd;の下に
if(by==ty&&-days>=td)return 1;
を入れると未来の日付をはじけるかも・・・ 眠い・・・
965デフォルトの名無しさん:2007/01/13(土) 03:15:30
2つの座標が与えられた時、
その2つの座標が結ぶ直線の通る座標を出す方法を教えてください
座標の範囲は(0,0)(600,600)です
966デフォルトの名無しさん:2007/01/13(土) 03:25:16
>>965
単純に中等数学の問題なの?
そうでなく離散座標上の話なの?
967デフォルトの名無しさん:2007/01/13(土) 03:27:20
ユークリッド空間の話だとは思いたくないが。
968デフォルトの名無しさん:2007/01/13(土) 04:53:26
>965
直線上の座標は無限。
別の条件もないと特定はできない。
969デフォルトの名無しさん:2007/01/13(土) 06:29:45
>>944-945
だいたい正しい。その解法をキャリパー法という。
970デフォルトの名無しさん:2007/01/13(土) 10:17:56
>>848なんとかならないでしょうか?
よろしくお願いします!
971デフォルトの名無しさん:2007/01/13(土) 11:13:00
[1] 授業単元: プログラミング演習
[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日
よろしくお願いします。
972デフォルトの名無しさん:2007/01/13(土) 11:53:15
>>971

void 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


973972:2007/01/13(土) 11:56:27
>>971
乱数を生成し配列要素に格納ってあるが
引数の意味は何?int *paは配列のアドレスでint nが要素数なわけか?

だとすると配列要素を1行で画面に出力もわかるんだが
974デフォルトの名無しさん:2007/01/13(土) 12:07:11
>>972
正しく動きません><
int x = 30;
swap(&x,&x);

975デフォルトの名無しさん: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;
}

976デフォルトの名無しさん:2007/01/13(土) 12:15:07
void init_array(int *pa, int n)
{
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;
}

977デフォルトの名無しさん:2007/01/13(土) 12:15:42
void output_array(int *pa, int n)
{
int i;

for(i = 0; i < n; i++)
{
fprintf(stdout, "結果 = %d", *(pa + i));
}
fprintf(stdout, "\r\n");

return;
}
978972:2007/01/13(土) 12:16:35
あとヘッダに#include <stdlib.h>も必要だった
srand()
rand()

>>974
動くわけないだろう・・・・
979972:2007/01/13(土) 12:17:28
>>974
そういう意味で言うなら

int x = 30;
int y = 20;

swap(&x,&y);
980デフォルトの名無しさん:2007/01/13(土) 12:27:44
[1] 授業単元: データ構造とアルゴリズム
[2] 問題文(含コード&リンク):

配列を用いてリングバッファを実現せよ。ただし、データは整数型とする。
キーボードから入力された文字により以下のような動作をする。

i : 後に続いて入力されたデータをキューの末尾に挿入。
d: キューの先頭のデータを削除。キューが空ならその旨を出力。
p: キューのデータを先頭から順番に出力。
q: プログラムの終了。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: LSI C-86
 [3.3] 言語: C
[4] 期限: 1月16日
[5] その他の制限: 特になし

よろしくお願いします。
981デフォルトの名無しさん:2007/01/13(土) 12:46:33
>>980
LSI 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;
}
982RYO:2007/01/13(土) 12:58:39
 最近、プログラムの研修を参加して、どうしても解かなければいけない
問題がでてきました。誰か解いてもらえないでしょうか?
 自分はプログラマー超初心者で、CもC++の区別もつかないし、自分
がどの分野をやってるのかすら分かりません。

 問題はPseudocode(擬似コード)を取り扱ったもので、果たしてこの
スレに書いていい分野かすら分かりません。それでも、だれか優しい人
教えてちょ
 
 問題 擬似コードを使って一から十までのランダムで決められた
一つの数字をあてるプログラムを作る。もし、プレイヤーが数字を言い当てたら
”YOU WIN!!"とスクリーン上に表示させてプログラムが終了する。
 もし、プレイヤーが数字を引き当てなければ、プログラムは、プレイヤー
に数字を引き当てるまで新しい数字を入力するよう尋ねる。
 
(注意点)プログラムは、もしプレイヤーが数字をはずした場合
 その数字よりも大きいか小さいかをスクリーンに表示させ、もし
プレイヤーが、数字とイコール(引き当て)た場合、"YOU WIN!!"と
スクリーンに表示させる。
 なので、プレイヤーが数字を引き当てなかった
場合に、プログラムがずっとプレイヤーに大きいか小さいかを尋ねる
プログラムループを作成しなければいけない。
 
 このランダムで引き当てられた数字は、モジュールですでに書かれて
いるものとする。             
            問題 終了

IF THEN ELSE や FOR を使って表示させるみたいなん
だけど、誰か教えて。たぶん、基本的なところだ思うんで。
983RYO:2007/01/13(土) 13:08:13
 ついでにこれも
ユーザーに入力された5つの数字の平均を計算するプログラムをつくる。
 最後に 数字の合計と平均をスクリーンに表示させる。ただし5つの
数字をいれるためのループを作ってくれぇいー
984デフォルトの名無しさん:2007/01/13(土) 13:11:28
>>982
擬似コードといっても、いろんなものが世の中にあふれすぎていて、
どう書いていいのかまったく想像もつかない。
その擬似コードの規格を具体的かつ厳密に述べよ。
985980:2007/01/13(土) 13:14:31
>>981
動作確認しました。こちらの意図したとおりに動いてくれました。
ありがとうございます。
986デフォルトの名無しさん:2007/01/13(土) 13:53:13
次スレ
C/C++の宿題を片付けます 81代目
http://pc10.2ch.net/test/read.cgi/tech/1168663908/
987972:2007/01/13(土) 14:38:02
>>983
スクリーンって言うのはコマンドプロンプトの事か?
それとも自分で作ったウィンドウ上に表示しろって事か?
988972:2007/01/13(土) 14:44:57
>>982
IF THENとかだとCOBOLとかBASIC関連だと思うんだがCで組んじゃっていいのか
擬似コードだから環境は選ばないって認識でいいのか
989972:2007/01/13(土) 14:48:06
因みに
>>このランダムで引き当てられた数字は、モジュールですでに書かれているものとする。
って言うのはモジュール内で生成すればいいんだな?

とりあえず飯
990デフォルトの名無しさん:2007/01/13(土) 14:49:43
>>971
これは前に見たなぁ
991972:2007/01/13(土) 14:57:55
>>983
とりあえずこれ

#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;
}
992デフォルトの名無しさん:2007/01/13(土) 15:00:20
>>982
擬似コードなら日本語でちゃちゃっと書いとけばいいんでは
993デフォルトの名無しさん:2007/01/13(土) 15:01:05
void swap(int *x, int *y)
{
if(x!=y){
*x = *x ^ *y;
*y = *x ^ *y;
*x = *x ^ *y;
}
retrun;
}
XORの場合って同じアドレスを排除しなきゃ駄目じゃなかったっけ?
994972:2007/01/13(土) 15:03:37
>>993
あー、なるほど
アドレス検知は考えてなかったなー

つか吉野家いってくるわ
995デフォルトの名無しさん:2007/01/13(土) 15:09:46
>>991
いいんだが初心者にfgetsやらfprintfでのI/O切り替えは酷だろうw
996デフォルトの名無しさん:2007/01/13(土) 15:09:47
void swap(int*x,int*y){if(x!=y)*x^=*y^=*x^=*y;}

こうすりゃいいってじっちゃんが言ってた
997972:2007/01/13(土) 16:07:31
>>982
多分動く
#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;
}
998972:2007/01/13(土) 16:09:24
>>995
わかるんだが昔scanfばっか使ってて抜け出すまで苦しんだ経験があるから
いっそ最初からfgetsやら使ったほうが・・・と思ってる。

>>996
おお、そっちのほうがスマートだね
999デフォルトの名無しさん:2007/01/13(土) 16:12:26
素直にメモリ使ったらあかんの?
void 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();
}
1000972:2007/01/13(土) 16:17:43
>>999
前者はテクニック使うか使わないかの問題だと思う

後者は人それぞれ組み方が違うねー
そのやり方は俺は思い浮かばなかったw
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。