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

このエントリーをはてなブックマークに追加
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++の宿題片付けます 133代目
http://pc12.2ch.net/test/read.cgi/tech/1260532772/
2デフォルトの名無しさん:2010/01/19(火) 00:02:05
ぬるぽ
3デフォルトの名無しさん:2010/01/19(火) 05:26:24
マジかよゴキブリ湧いてきた
4デフォルトの名無しさん:2010/01/19(火) 05:35:52
痴漢はこんなとこにもわくのかよw
5デフォルトの名無しさん:2010/01/19(火) 08:17:21
★宿題をやってあげる方は仕事でやっているわけではないので
品質に文句を付けるのはやめてください(質問は構いません)
★宿題をやった方は依頼者がまだ居るか確かめてから貼るように
心がけて下さい。
★複数やってくださった方が居た場合でも依頼者は全員に貼って
もらう必要はありません。批評を書き込むことは慎みましょう
6デフォルトの名無しさん:2010/01/19(火) 08:26:29
何をどうやって確かめろと?
7前スレ999:2010/01/19(火) 11:31:41
>>1
乙です。

>>前スレ1000
すみません、>>984-986,990で全部です。
8デフォルトの名無しさん:2010/01/19(火) 12:22:53
>>7
アップローダを使ってくださいませんか。コンパイルするまでが面倒です。
9デフォルトの名無しさん:2010/01/19(火) 12:33:05
てかテンプレに沿った形にするのもプログラミングの練習
10デフォルトの名無しさん:2010/01/19(火) 12:48:04
scanf系ってあんな柔軟だっけ?
11デフォルトの名無しさん:2010/01/19(火) 13:08:40
前スレにも書きましたが
お願いします
[1] 授業単元: プログラミング演習V
[2] 問題文(含コード&リンク):
Printfを作る。
%d, %c, %sのみサポートする。
既存の関数・マクロは呼んではいけない。
使えるものはputchar()のみ。

[3] 環境
 [3.1] OS: WindouwsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月21日(木)まで
[5] その他の制限: 特にありません
12デフォルトの名無しさん:2010/01/19(火) 13:54:05
大学のプログラミングで使っている教科書だと、

main()

{
プログラム
}


なのに対して、時々ネット上で

int main()

{
プログラム
}

と言うのを見かけます。何が違うのでしょうか?
13デフォルトの名無しさん:2010/01/19(火) 13:59:00
すいません。自己解決しました。
14デフォルトの名無しさん:2010/01/19(火) 15:15:08
[1] 授業単元: プログラミング演習V
[2] 問題文(含コード&リンク):
終了時、xとB、まらはAとHの内積のどちらかが0のプログラム。
(xを入力→Hを設定)
AとBはそれぞれHやxの最小多項式の係数となるはず。
X1=(x1,...,xn)の転置行列;
H=(X1,...,Xt);


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


http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10386.c

なにか気づいた点でもよいのでお願いします。
15デフォルトの名無しさん:2010/01/19(火) 15:18:06
14>>
授業単元は情報数学演習です。
すみません>>11
16デフォルトの名無しさん:2010/01/19(火) 15:42:00
>>11
前スレで回答が出てるわけだが、再依頼の理由は?

908 名前: デフォルトの名無しさん [sage] 投稿日: 2010/01/17(日) 22:37:55
>>894,905-907
OSもコンパイラも指定でできないわけない。
http://codepad.org/Ep9uoXLa
17デフォルトの名無しさん:2010/01/19(火) 17:54:44
18デフォルトの名無しさん:2010/01/19(火) 18:24:02
>>16
すいません
ありがとうございます
19デフォルトの名無しさん:2010/01/19(火) 21:22:19
[1] 授業単元:c言語
[2] 問題文 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10388.txt
[3] 環境
 [3.1] Windows
 
 [3.3] 言語: C
[4] 期限: 2009 1月21日
[5] その他 一応自分でも組み立てて考えたのですが強制エラーが出て,,,
  簡単かもしれませんがよろしくお願いします
20デフォルトの名無しさん:2010/01/19(火) 21:54:53
>>007
#include <stdio.h>
#define DATA_MAX      5  /* データの最大件数 */
#define NAME_LEN_MAX    16  /* 名前の長さ */
#define TEL_NUMBER_LEN_MAX  16  /* 電話番号の長さ */
#define YUUBINN_LEN_MAX    8  /* 郵便番号の長さ */
#define ADDRESS_DATA_MAX  64  /* 住所の長さ */
typedef struct Address_Note {
  char name[NAME_LEN_MAX];  /* 名前 */
  char tel_number[TEL_NUMBER_LEN_MAX]; /* 電話番号 */
  char zip_code[YUUBINN_LEN_MAX]; /* 郵便番号 */
  char address[ADDRESS_DATA_MAX]; /* 住所 */
} NOTE;
int g_address_data_count = 0;
int main(void) {
  int i, sts;
  NOTE data[DATA_MAX];
  NOTE *p;
  FILE *fp;

  if((fp = fopen("address_note.txt", "r"))==NULL) {
    printf("ファイルが見つかりませんでした---address_note.txt\n");
    exit(1);;
  }
  for(i=sts=0; i<DATA_MAX; i++) {
    p = &data[i]; /*データの読み込み*/
    sts = fscanf(fp,"%16s%16s%8s%64s", p->name, p->tel_number, p->zip_code, p->address);
    if(sts==EOF) break;
    g_address_data_count++;
    printf("\n名前:%s\n電話番号:%s\n郵便番号:%s\n住所:%s\n", p->name, p->tel_number, p->zip_code, p->address);
  }
}
21デフォルトの名無しさん:2010/01/19(火) 23:02:01
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10390.txt
[3] 環境
 [3.1] OS:Linux 
 [3.3] 言語:C
[4] 期限:明日まで

皆様よろしくお願いします。
22デフォルトの名無しさん:2010/01/19(火) 23:09:41
↑問題訂正します

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10392.txt
[3] 環境
 [3.1] OS:Linux 
 [3.3] 言語:C
[4] 期限:明日まで

皆様よろしくお願いします。
23デフォルトの名無しさん:2010/01/19(火) 23:09:59
>>21
全角と半角、大文字小文字が入り混じってハイフンが一になってることから
OCR ソフトでも使ったかな?
最近のは優秀なんだねぇ
24デフォルトの名無しさん:2010/01/19(火) 23:13:16
>>23はい。

もし見にくければ、もとの画像ファイルもアップしますのでよろしくお願いします。
25デフォルトの名無しさん:2010/01/19(火) 23:16:10
>>24
ソースコード部分だけでいいからコンパイルできるように修正してよ
26デフォルトの名無しさん:2010/01/19(火) 23:35:27
>>25
修正しました。よろしくお願いいたします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10393.txt

27デフォルトの名無しさん:2010/01/19(火) 23:57:26
>>19
char *resの領域が確保されていない
28デフォルトの名無しさん:2010/01/20(水) 02:11:23
★依頼してから「納品」までは最低24時間は下さい。
(ただし最低品質です)
29デフォルトの名無しさん:2010/01/20(水) 05:04:06
>>26
http://codepad.org/ZR6qj0XE

バグあったら教えて下さい。
30デフォルトの名無しさん:2010/01/20(水) 05:37:43
>>19
http://codepad.org/aELKPmc0

問題あったら教えて下さい。
31デフォルトの名無しさん:2010/01/20(水) 18:06:03
[1] プログラミング実習
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10397.txt
[3] 環境
 [3.1] WindowsXP
 [3.2] Visual C++
 [3.3] C言語
[4] 期限:2010年1月21日正午まで
[5] 特にないと思います

穴抜け問題となっています。ほとんど時間がありませんが
必須問題なのでみなさんよろしく願いします
32デフォルトの名無しさん:2010/01/20(水) 18:26:43
>>26と同じ問題でした
よく見ずに書き込んでしまい申し訳ありません
ご協力ありがとうございました
33デフォルトの名無しさん:2010/01/20(水) 22:39:30
[1] プログラミング基礎実習
[2] 文字列strを逆順に格納する関数("SEC"を受け取ったら"CES"とする)
void rev_string(char str[]){ /*…*/ }
を作成せよ。
[3] 環境
[3.1]Linux
[3.2]gcc、バージョンはわかりません。
[3.3]C言語
[4]明後日まで
[5]ポインタ使えません。

よろしくお願いいたします。
34デフォルトの名無しさん:2010/01/20(水) 22:49:20
ポインタ禁止といいながら、いきなり仮引数strがポインタ…
35デフォルトの名無しさん:2010/01/20(水) 23:00:50
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10398.txt
@insert_btを、再帰関数を使わずに繰り返し構文で書き換えよ
A指定した数字を削除する関数delete_btを作成せよ

[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:VisualC++2008ExpressEdition
 [3.3] 言語:どちらでも可
[4] 期限: 2010年1月25日まで
[5] その他の制限: 習っているのはポインタ、構造体辺りまで。

よろしくお願いします。
特に@は再帰無しで2分木をつなげるヒントだけでもいただけると幸いです。
3634:2010/01/20(水) 23:23:37
>>33 ポインタ禁止ではなく間接/アドレス演算子使用不可ということだと判断しておく
#include <stdio.h>
#include <string.h>
void rev_string(char str[]){
    char c;
    int s = 0;
    int e = strlen(str) - 1;
    do{
        c = str[s];
        str[s] = str[e];
        str[e] = c;
    }while(++s < --e);
}
int main(){
    char str[] = "SEC";
    printf("%s\n", str);
    rev_string(str);
    printf("%s\n", str);
    return 0;
}
3734:2010/01/20(水) 23:29:39
>>37 ってこれだと空文字列の時にバグるか…訂正
void rev_string(char str[]){
    char c;
    int s = -1;
    int e = strlen(str);
    while(++s < --e){
        c = str[s];
        str[s] = str[e];
        str[e] = c;
    };
}
38デフォルトの名無しさん:2010/01/21(木) 01:52:18
長くなったのでうpロダお借りしました。

問題1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10399.txt
問題2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10400.txt

よろしくお願いします。
3919:2010/01/21(木) 02:06:45
>>30

解決できました.すごく丁寧なプログラムわざわざありがとうございます.
40デフォルトの名無しさん:2010/01/21(木) 02:35:30
スレ荒れの原因になるんで、期限迄十分余裕を持って
依頼して欲しいですな。期限まで15時間、しかも
時間帯を考えると実質7〜8時間しかない。
平日の昼間に他人の宿題を無償で片付けられるような
暇人が居るとでも思っているんだったらちょっと自分の
常識を疑ったほうがよいんじゃないでしょうか?
41デフォルトの名無しさん:2010/01/21(木) 03:08:29
>>40
荒れるほど難解な問題でもないっしょ
即答できない人は荒らそうとせずにスルーすればいいだけだ
42デフォルトの名無しさん:2010/01/21(木) 03:44:23
即答ラッシュになってつまらぬ喧嘩を始める
奴らが過去に居たもんで....
43デフォルトの名無しさん:2010/01/21(木) 07:06:55
>>35
http://codepad.org/27osWYjf
問題の元のプログラムの設計が酷いな
44デフォルトの名無しさん:2010/01/21(木) 09:58:23
C++なんですが
.datファイルがもともとありまして、
文字列(単語が1つでない場合あり)
実数
文字列(単語が1つでない場合あり)
実数
……
の順に200行まで入ってるファイルを
ifstream使用して
文字列は文字列の配列に、実数は実数の配列に入れたいのですが、
どうすればよいか分かりますか?

入力ストリームfinを文字列lineに入れるとすると
int i=0; string s[200]; double d[200];
while(getline(fin,line)){
s[i]=line;
fin>>d[i];
i++;
}

かな、と思ったんですが出力の時にうまくいかなくて
どなたか教えてください
お願いします
45デフォルトの名無しさん:2010/01/21(木) 11:04:01
>>38
期限間違ってました。
金曜日まででお願いします。
本当すいません。

>>40
申し訳ありません。
46デフォルトの名無しさん:2010/01/21(木) 11:16:52
1] プログラミング演習I
[2]

[3] 環境
 [3.1] OS: WindouwsXP
 [3.2] microsoft visual stadio 2005
 [3.3] 言語: C
[4] 期限: 2010年1月21日(木)11:45まで
5 おねがいしまつ
47デフォルトの名無しさん:2010/01/21(木) 11:20:03
〉〉46でつ・・・まちがました。。。
1] プログラミング演習I
[2] int型,long型,double型の三つのメンバを持つ構造体xyzを定義して各メンバに値を格納する関数 void set_xyz(struct xyz*p.int X,long y.....)」を作成

[3] 環境
 [3.1] OS: WindouwsXP
 [3.2] microsoft visual stadio 2005
 [3.3] 言語: C
[4] 期限: 2010年1月21日(木)11:45まで
5 おねがいしまつ
48デフォルトの名無しさん:2010/01/21(木) 11:24:21
>>47
#define xyz struct{¥
int int_member;¥
long long_member;¥
double double_member}

void set_xyz( xyz *p,int X,long Y,double Z){
(*p)->int_mbmer=X;
(*p)->long_mbmer=Y;
(p*)->double_membr=Z;
}
49デフォルトの名無しさん:2010/01/21(木) 11:37:59
〉〉48
神!!
書いていただいた回答を見てわかりますた!!
ありがとうございました!!
50デフォルトの名無しさん:2010/01/21(木) 11:40:58
え?w
51デフォルトの名無しさん:2010/01/21(木) 12:24:30
>>43
ありがとうございます、助かりました。

それと、設計が酷いとは具体的にはどういうことでしょうか?
52デフォルトの名無しさん:2010/01/21(木) 13:25:34
>>044 質問は質問スレへ
#include <iostream>
#include <fstream>
using namespace std;
int main(){
  int   i;
  double  d[200];
  string  line[200], s;
  ifstream fin("test.txt");

  for(i=0; getline(fin, line[i], '\n') && getline(fin, s, '\n'); i++){
    d[i] = atof( s.c_str() );
    cout << i <<":"<< d[i] <<"="<< line[i] <<endl;
  }
  return 0;
}
5352:2010/01/21(木) 13:41:56
#include <iostream>
#include <fstream>
using namespace std;
int main(){
  int   i;
  double  d[200];
  string  line[200], s;
  ifstream fin("test.txt");

  for(i=0; getline(fin, line[i], '\n'); i++){
    fin >> d[i]; getline(fin, s, '\n');
    cout << i <<":"<< d[i] <<"="<< line[i] <<endl;
  }
  return 0;
}
54デフォルトの名無しさん:2010/01/21(木) 14:11:39
昨日から、ラウンジにアクセスしようとすると403になるんだが、俺だけか?
55yui ◆zuLLaJzEzk :2010/01/21(木) 15:56:47
[1] 授業単元:情報処理入門
[2] 問題文(含コード&リンク):
データファイルdata.binには,数値データがバイナリ形式で保存されている
(1行に羅列).データの数は75×75=5625,データの型はshortである.
data.binのデータを,freadを用いて読み出して配列に格納し,gnuplotで3次元表示できる形式のテキスト
ファイル(data2.txt)に保存するプログラムを作成せよ.(ファイルrep2.c,data2.txt)
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
Cでおねがいします。
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
提出期限2010年1月25日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にございません。

わたしはもともと情報系の学生ではないのですが、情報処理の授業も履修しています。簡単な課題なのかもしれませんが私にとっては全く分かんないです。どなたか教えていただけたらありがたいです。よろしくお願い致します。

data.binのファイルはこちらになります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10402.zip
56デフォルトの名無しさん:2010/01/21(木) 17:31:40
>>055 これでgnuplot出来るか確認してくれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10403.zip
57デフォルトの名無しさん:2010/01/21(木) 18:19:59
>>55
11,250/4 割り切れないから元データが不正じゃない?

#include <stdio.h>
#pragma pack(1)
typedef struct POINT{
short x;
short y;
};
#pragma pack()
int main(){
struct POINT pt;
FILE *fin,*fout;
fin = fopen("data.bin","rb");
if(fin==NULL)return -1;
fout = fopen("out.txt","w");
if(fout==NULL)return -1;
fprintf(fout,"#X\tY\n");
while(fread(&pt,sizeof pt,1,fin)==1){
fprintf(fout,"%d\t%d\n",pt.x,pt.y);
}
fclose(fin);
fclose(fout);
return 0;
}
58デフォルトの名無しさん:2010/01/21(木) 18:22:11
11,250/2 = 75*75 いいんだよ
59デフォルトの名無しさん:2010/01/21(木) 18:34:04
うーん、3次元なのに75*75って分かんないなぁ
>>57スルーしてください
60デフォルトの名無しさん:2010/01/21(木) 18:37:08
1ブロック25ポイントで75ブロックって事なのかな
61デフォルトの名無しさん:2010/01/21(木) 19:29:07
>>055
IPOで言う、PROCESSとOUTPUT両方提出すればいい課題なのかな?
OUTPUTは決まって無いのかな?
62デフォルトの名無しさん:2010/01/21(木) 20:11:16
[1] 授業単元: プログラミング演習
[2] 問題文:
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン: microsoft visual stadio 2003
 [3.3] 言語: c++
[4] 期限: 2010年1月22日まで
[5] その他の制限: とくにありません

エラーが出てビルドできません
データはこちらです↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10404.cpp
63デフォルトの名無しさん:2010/01/21(木) 20:16:59
>>62
// typedef struct KAMOKU;

printf("プログラムを終了します。\nデータベースファイルは作成されていません。\n");

}
}

}
64yui ◆zuLLaJzEzk :2010/01/21(木) 22:42:06
>>56-61 皆さん本当にありがとうございます。実はわたしも課題の内容すら分かってないみたいで、本当にすみません。

これが前回出された課題と答えなのですが、これを参考にすれば解けるみたいです。
よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10405.txt
こちらがデータになります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10406.txt
6544:2010/01/21(木) 23:52:47
>>52-53
ありがとうございます!!!!
66デフォルトの名無しさん:2010/01/22(金) 01:06:47
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):穴埋め問題です
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C
[4] 期限: 2010年1月23日
[5] その他の制限: 特にありません


http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10407.txt

皆様よろしくお願いします。
67デフォルトの名無しさん:2010/01/22(金) 02:55:42
68デフォルトの名無しさん:2010/01/22(金) 03:12:32
>>64
イミフだな。
69デフォルトの名無しさん:2010/01/22(金) 07:55:39
>>64
printf("%2d %2d %u\n",j,i,dat[wx0*i+j]);
70デフォルトの名無しさん:2010/01/22(金) 10:55:01
>>67
ありがとうございます、助かりました。
71デフォルトの名無しさん:2010/01/22(金) 11:35:05
72デフォルトの名無しさん:2010/01/22(金) 16:24:34
>>71
なるほど。
http://www.rupan.net/uploader/download/1264145041.jpg
ドラえもんだね
73デフォルトの名無しさん:2010/01/22(金) 18:51:02
>>055
// data.binのデータを,freadを用いて読み出して配列に格納し,gnuplotで3次元表示できる形式のテキストファイル(data2.txt)に保存するプログラムを作成せよ.
#include <stdio.h>
#define wx0 75
#define wy0 75
main()
{
  int i,j;
  unsigned short dat[wx0*wy0];
  FILE *fp;
  fp=fopen("data.bin","rb");
  for(i=0;i<wx0*wy0;++i) fread(&dat[i],sizeof(short),1,fp);
  fclose(fp);
  fp=fopen("data2.txt","w");
  for(i=wy0-1;i>=0;--i){
    for(j=wx0/2;j<wx0;++j){
      fprintf(fp,"%2d %2d %d\n",j,i,dat[wx0*i+j]);
/*      fprintf(fp,"%d\t",dat[wx0*i+j]);*/
    }
    for(j=0;j<wx0/2;++j){
      fprintf(fp,"%2d %2d %d\n",j,i,dat[wx0*i+j]);
/*      fprintf(fp,"%d\t",dat[wx0*i+j]);*/
    }
/*    fprintf(fp,"\n");*/
  }
  fclose(fp);
}
74デフォルトの名無しさん:2010/01/22(金) 19:03:45
[1] 授業単元:プロトタイプ宣言
[2] 問題文(含コード&リンク):『私は○○です』と表示する関数を作成して、main関数でそれを三回呼び出して、画面に三回出力プログラムを作成せよ。表示のための関数の名前は『display_name』とせよ
[3] 環境
 [3.1] OS:xbunt
 [3.3] 言語:C++
[4] 期限: 2010年1月23日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。
7574:2010/01/22(金) 19:04:48
xbuntuでしたすみません。
76yui ◆zuLLaJzEzk :2010/01/22(金) 19:23:43
>>73さん、他の皆さん、本当にありがとうございました。本当に助かりました。感謝しています。
77無能:2010/01/22(金) 21:39:27
[1] 授業単元:プログラミング実習
[2] 問題文:クラスタリングk-means法
1、初期値として、クラスタ数および初期のデータ分割を与える。
 2、データ分割に基づき各分割の重心を求める。
   さらに、重心と各事例データとの距離を求める
 3、各事例を最も近いクラスタに割り当てる。
 4、上記の割り当てが前回と同じであれば終了。
   更新があれば2に戻る
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C言語
[4] 期限:2010年1月23日

できなくて本当に困ってます。お願いします。
78デフォルトの名無しさん:2010/01/22(金) 23:50:34
前スレの>>963
式を展開して左結合にするというやつ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10395.c
79デフォルトの名無しさん:2010/01/23(土) 00:57:07
[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10409.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:2010年1月25日7:00まで
[5] その他の制限:

自分で考えてみましたが、もう無理です…。
よろしくお願いします。
80デフォルトの名無しさん:2010/01/23(土) 11:13:50
>>79
あんま動作確認やってないのでよろしく
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10410.txt
81デフォルトの名無しさん:2010/01/23(土) 13:41:33
>>77
>>1
>・問題文は、出題されたまま全文を書いてください。

・クラスタリングするデータの型は?
・データの入力はどうするのか、ランダム生成するのか?
・クラスタリング結果はどう出力するのか?
 表示用のプログラムがあるのか、gnuplotか何かで描くのか、
 ただテキストで吐けばいいのか
82デフォルトの名無しさん:2010/01/23(土) 13:46:35
>>74
#include <iostream>
using namespace std;
void display_name(){
std::cout << "私は○○です。" << std::endl;
}
int main(){
display_name();
display_name();
display_name();
return 0;
}
83デフォルトの名無しさん:2010/01/23(土) 13:58:48
[1]プログラミング演習(大学専門過程演習授業)
[2] コマンドライン引数で与えられたテキストファイルを読み込み
空行でなければ、その行に含まれているスペース、タブを
除去したものを標準出力するプログラム。但し英数字と"_"で
構成される文字列同士の間には一つのスペースは残す。
",'で囲まれた部分に関してはスペース、タブはそのまま残す
"で囲まれた部分について最後の文字が¥であってはならない。
'で囲まれた部分について最後の文字が¥であってはならない。
(テキストファイルの空行と余計な空白/タブを除去する
プログラムでクオテーションに配慮したもの)
[3-1] Windows Vista
[3-2] Visual studio 2008
[3-3] C言語
[4] 2/7迄
[5] 使用出来る標準ライブラリはstdio.h stdlib.h string.h定
義のものだけでこれらのヘッダファイルのみインクルード可
ファイルI/O,標準出力が出来るのはmain関数内のみとする。
84デフォルトの名無しさん:2010/01/23(土) 14:04:58
★品質によるトラブル防止の為、片付けた宿題を貼る場合は
依頼者がまだ見ているかを確認してから貼るようにしましょう。
★依頼者は、宿題を片付けて下さる方が出てからすぐもらえる
とは考えず、一定時間のテスト、チェック時間を考慮して下さい。
★依頼者は、依頼してから次にスレをいつ見るのかも記述して
下さると助かります。(ずっと見てますというのは非現実的で
信用されません)
8583:2010/01/23(土) 14:12:11
今日明日は入試関連のバイトと期末試験準備が
あるんで次見るのは月曜日夜以降になると思いますが
片付けて下さる方がいらっしゃいましたら、お助け
下さい。
86デフォルトの名無しさん:2010/01/23(土) 14:16:04
>>84 いやがらせか
>>74
#include <iostream>
using namespace std;
void display_name(){
cout << "私は○○です。" << endl;
}
int main(){
for(i=0;i<3;i++)
display_name();
return 0;
}
87デフォルトの名無しさん:2010/01/23(土) 14:47:12
軽いものはすぐに出来るだろうけど時々かなり重いもの
もあるしな...(依頼者にはわかりようがないかも)
やっぱし少しでも間を取ったほうがいいよ
88無能:2010/01/23(土) 18:52:58
>>80 
77のものです。

属性数d=2
x,y
事例データ数n=5
事例No.1 x=5,y=1
事例No.2 x=4,y=2
事例No.3 x=1,y=5
事例No.4 x=5,y=4
事例No.5 x=5,y=5

クラスタ数;2

初期クラスタ{1,3},{2,4,5}

結果はテキストでお願いします。
89デフォルトの名無しさん:2010/01/23(土) 19:26:46
>>82>>86
>>74の授業単元にプロトタイプ宣言ってあるから
問題文に書いてなくてもプロトタイプ宣言した方が良いような。
90デフォルトの名無しさん:2010/01/23(土) 19:30:00
>>80
ありがとうございます。
自宅では開発環境ないので月曜の朝学校で動作確認してみます。
91デフォルトの名無しさん:2010/01/23(土) 22:40:48
[1] 授業単元:情報処理
[2] 問題文:

問1 キーボードから3個の実数(整数でない)値を1行に1組として計5組入力し、
ファイル(ファイル名data1.txt)に保存する。

問2
 問1で作ったファイルから実数値を読み込み、総合計と各組の実数の平均を求める。
ただし、ファイルに書かれている組の数は不明とする。

[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C言語
[4] 期限:2010年1月25日
[5] その他の制限: なし

よろしくお願いします。
9274:2010/01/23(土) 22:45:54
ありがとうございました
93デフォルトの名無しさん:2010/01/24(日) 01:09:15
[1] 授業単元:プロトタイプ宣言
[2] 問題文(含コード&リンク):
次の式を以下の条件(値)に基づいて計算.表示するプログラムを作成せよ。ただし式は簡単化せずそのままプログラムすることとして、更に表示するときは計算の答えと合わせて条件(値)も表示して分かりやすくせよ。

計算する式
{(a+b)c-a(b-c)}/{(c/b)a+abc-ca}

条件1
a=3 b=4 c=2
a=3 b=4.3 c=2.5
a=32.6 b=57.82 c=2.543

この問題を、
式の分だけを関数化した場合
式と出力部分を関数化した場合
の2つの場合でプログラムを作成せよ
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月25日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。
94デフォルトの名無しさん:2010/01/24(日) 02:09:37
[1] C
[2]
反復列 x_n+1=a*x_n(1-x_n),0<=a<=4,0<=x<=1
に対して、x_nが1周期(不動点)、2周期、4周期、8周期、16周期
をもつaの範囲について、プログラムを作成して確かめよ。

○周期というのはaがある値のとき、○個の解で振動するという意味です※
[3] LINUX C
[4] 1/24 18:00
95デフォルトの名無しさん:2010/01/24(日) 03:11:24
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):http://www.acm-japan.org/past-icpc/domestic2008/problems/all_ja.html
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: ([2010年01月25日23:59まで]
[5] その他の制限: Problem A の問題です。
頑張ってみたのですが、わかりませんでした。
どなたか、よろしくお願いします。
96デフォルトの名無しさん:2010/01/24(日) 03:29:40
>>87
このスレで放置されるパターンの多くは
問題が難解なのではなく問題文が難解なんだ
難解というか不備だな
出題者の不備、質問者のコピペミスなどで
解答を一つに絞れず面倒なやり取りが目に見えるので
放置されちゃう
ま、重いっちゃ重いけど症状が重いという意味合いだな
97デフォルトの名無しさん:2010/01/24(日) 04:30:31
98デフォルトの名無しさん:2010/01/24(日) 05:20:49
>>83
なんか問題の定義があいまいだから適当に補完して書いた
だからかだいぶ>>97と結果が違うな
好きなほう使ってくれ
http://codepad.org/9VH9AxnZ
99デフォルトの名無しさん:2010/01/24(日) 05:33:13
>>93
式の分だけを関数化した場合
http://codepad.org/aD7M3Jat
式と出力部分を関数化した場合
http://codepad.org/mBSphWnG
100デフォルトの名無しさん:2010/01/24(日) 06:28:17
101デフォルトの名無しさん:2010/01/24(日) 10:31:57
102デフォルトの名無しさん:2010/01/24(日) 11:23:52
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10419.zip
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月25日 5:00まで
[5] その他の制限:

宜しくお願い致します。
txtがうまくうpされなかったので、ファイルはひとつですがzipにてうpしました。
103 ◆NPjWSW9EXI :2010/01/24(日) 18:57:41
[1] 授業単元:Cプログラミング演習2
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10420.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: [2010年1月27日18:00まで]
[5] その他の制限:
よろしくお願い致します。
104homi:2010/01/24(日) 20:19:28
本当に困ってます。
このままでは留年して泣いてしまいます><



20 桁までの自然数の足し算と掛け算を浮動小数点演算を用いないで実施するプログラムlongcomp.c を
作成し、C のソースコードを提出しなさい。
実行形式をlongcomp とした動作仕様は以下です。

>./longcomp 12345678901234567890 + 12345678901234567890
>12345678901234567890 + 12345678901234567890 = 24691357802469135780
>./longcomp 1234567890 * 1234567890
>1234567890 * 1234567890 = 1524157875019052100

105homi:2010/01/24(日) 20:23:41
上の人です;;


b01, b001 のように二進数をb で始まるように表記する。二進数の集合を、できるだけ少ないノード数
の二分木に分類するためには、二分木のノードに蓄積する二進数の桁数を可変にすることが有効である。こう
することで二進数表記した値(たとえばキーワードとか、位置とか、日付とか)に紐づけられたデータを少な
い検索で見つけることができる。
扱う二進数の集合を、たとえば
b00, b001, b0011, b00111, b1000, b11100, b0
として、これらを図1に示すようにニ分木に分類して、帰りがけ(ポストオーダ)で次のように出力するプロ
グラム(tree) を作成し、C のソースコードを提出しなさい。
>./tree
>1 1 1 0 0 000 1100 0 1 b


提出期限は1/26 23:59までです;;
上も合わせてC++です;;
106デフォルトの名無しさん:2010/01/24(日) 20:24:59
テンプレ使ってね
107デフォルトの名無しさん:2010/01/24(日) 20:28:06
これができたらBPS
http://pc12.2ch.net/test/read.cgi/tech/1264331633/

その前にこのスレとの関係を聞きたいもんだな
108デフォルトの名無しさん:2010/01/24(日) 20:30:17
CなのかC++なのかくらいはっきりしろ
109homi:2010/01/24(日) 20:35:05
上のヒトです;;
フォーマットに気が付きませんでした

[1] データ構造とプログラミング
[2] http://www.geocities.jp/t07644fb/kadai.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限


ご迷惑おかけしました;;
110デフォルトの名無しさん:2010/01/24(日) 20:51:03
げげ、2ちゃんに依頼するなんてどこのFランかと思ったら慶應かよ……orz
111デフォルトの名無しさん:2010/01/24(日) 20:53:16
>>104
> 20 桁までの自然数の足し算と掛け算を浮動小数点演算を用いないで
多倍長整数のライブラリを使えばおk
112デフォルトの名無しさん:2010/01/24(日) 21:46:28
113デフォルトの名無しさん:2010/01/24(日) 21:54:58
>>103
(1)と(3)だけ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10423.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10424.txt

(2)は、行列が分かる人、よろしくお願いします。
114デフォルトの名無しさん:2010/01/24(日) 21:55:48
>>109
課題1だけ。手元に多バイト長演算ライブラリの自作がありましたのでそれを使いました。
http://codepad.org/0WrPn4ib

>>84
> ★品質によるトラブル防止の為、片付けた宿題を貼る場合は
> 依頼者がまだ見ているかを確認してから貼るようにしましょう。
意味不明。依頼者がみてるかどうかと、品質とどんな関係があるのですか?
回答者はできたら貼るだけいいのでは?
生徒さんですか。最近の学校ではこんなんがはやっているのですか?
115114 ◆QZaw55cn4c :2010/01/24(日) 21:57:14
シェルによっては * を解釈してしまうでしょうから、
./a.exe 2 '*' 3
のように入力してください。
116デフォルトの名無しさん:2010/01/24(日) 22:05:21
>>99
ありがとうございました
int main()の後のvoidって、今までいらなかったんですが、今回はいるんですか?
117デフォルトの名無しさん:2010/01/24(日) 22:08:22
118homi:2010/01/24(日) 22:16:02
>>114、117
助かりました!!ありがとうございます!!
119デフォルトの名無しさん:2010/01/24(日) 22:27:24
[1] 授業単元: 画像解析
[2] 問題文(含コード&リンク)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10427.txt
[3] 環境
 [3.1] OS:Windows or Vista どちらでも可
 [3.3] 言語: C/C++ どちらでも可
[4] 期限: 2010年02月03日まで
[5] その他の制限: リンクのtxtファイルに書き込みました
120デフォルトの名無しさん:2010/01/24(日) 22:30:05
>>102
とりあえず問2は、こういう発想でうまく動きました(投げやり

修正は2つの関数を以下のように書き換えました。
あとは適当に修正してください。

struct node *make_clist(char *s){
struct node *head = initlist();
struct node *p = head;
int len = strlen(s);
int i;
//while (*s != '\0'){
for (i = 0; i <= len; i++) {
insert(p, *s);
p = p->next;
s++;
};
return head;
}

void print_clist(struct node *p) {
printf("[");
while (p->next) {
/* 表示する文字が\0なら終了 */
if (p->next->element == '\0') {
break;
}
printf("%c", p->next->element);
p = p->next;
}
printf("]\n");
}
121デフォルトの名無しさん:2010/01/24(日) 22:30:11
>>116
別になくてもいいよ
122 ◆jPpg5.obl6 :2010/01/24(日) 23:00:05
テスト
123 ◆jPpg5.obl6 :2010/01/24(日) 23:00:18
テスト
124デフォルトの名無しさん:2010/01/24(日) 23:11:09
[1] 授業単元: Cプログラミング入門
[2] 問題文(含コード&リンク): 入力された2つの文字列(日本語その他バイト文字は不可)
を比較するプログラムを作成せよ。ただし、大文字小文字の違いは無視。単語間に連続して
スペース・タブが複数入っていても単独のスペースとしない。
[3] 環境
 [3.1] OS: vista
 [3.3] 言語: C
[4] 期限: [2010年1月26日12:00まで]
[5] その他の制限: 文字列とポインタまでやってます。

入力に関して、キーボードから1つ目の文字列を1行で入力し、改行する。
この時、入力を促す文字は一切表示しない。入力文字数は128文字まで。
出力に関して、一致すれば何も表示しない。不一致の場合は最初に不一致となる
入力1の文字と入力2の文字(1文字+スペース+1文字+改行)を表示する。
どちらかが末端の場合は代わりにスペースで埋める。

どうかよろしくお願いします。
125120:2010/01/24(日) 23:20:27
>>120
すいません。。。
editを修正しなくちゃいけないんですね(汗

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10428.txt

投げやりなのは仕様です。
126デフォルトの名無しさん:2010/01/24(日) 23:44:27
>>121
ごめんなさい。calcoutputとかcalcというのは何か特殊な効果があったりしますか?習ってないんですが
127デフォルトの名無しさん:2010/01/24(日) 23:54:31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10431.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: ([2009年1月26日まで]
[5] 特にありません お願いします。
128デフォルトの名無しさん:2010/01/25(月) 00:05:51
>>126
>>93
> この問題を、
> 式の分だけを関数化した場合
> 式と出力部分を関数化した場合
> の2つの場合でプログラムを作成せよ
って書いてあるでしょ
calcは「式の分だけを関数化した」もの、
calcoutputは「式と出力部分を関数化した」ものだよ
129128:2010/01/25(月) 00:44:03
>>126
言い忘れてた。
calcとかcalcoutputとかは適当に決めたものだから別の名前に変えてもいい
130デフォルトの名無しさん:2010/01/25(月) 00:59:34
[1] 再帰的データ構造
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10432.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2010年1月25日17:30まで])
[5] その他の制限
よろしくお願いします。
131デフォルトの名無しさん:2010/01/25(月) 01:06:19
>>127
void quick(int a[], int left, int right) {
int p, center;

if(left != right){
p = pivot(a, left, right);
center = partition(a, left, right, a[p]);

check(a, left, right, p, center);
quick(a, left, center - 1);
quick(a, center, right);
}
}
132デフォルトの名無しさん:2010/01/25(月) 01:09:07
>>130
ダメな問題だな
133デフォルトの名無しさん:2010/01/25(月) 01:29:25
>>131
うおおお 
無限ループです
134デフォルトの名無しさん:2010/01/25(月) 02:33:51
>>127
まだいる?
135デフォルトの名無しさん:2010/01/25(月) 03:23:22
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10408.txt
[3] 環境
 [3.1] OS: vista(Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: visual studio2008
 [3.3] 言語: C
[4] 期限: 1月27日
[5] その他の制限: 特になし

よろしくお願いします。
136デフォルトの名無しさん:2010/01/25(月) 06:02:38
>>127
3箇所修正

(1) pivot関数の書き換え
return (left + right + 1) / 2;

(2)partition関数内の条件
while (a[j] > p) // 軸以下のデータを探索

(3)quick関数先頭にブロック
if (left >= right) return;
137デフォルトの名無しさん:2010/01/25(月) 06:31:44
[1] 授業単元: プログラミング概論
[2] 問題文:"in_file"という名前のファイルの中に18個の整数データが空白や改行コードで区切られて並んでいると仮定した上で、この入力ファイルの中のデータを1行に5個ずつきれいに並べて"out_file"という名前のファイルに出力するCプログラムを作成せよ。
入力ファイルの内容が
-1111111111 2222222 333333 4444 55 6 7 8 9 0 1 2 3 4
5         6           7890123
-5666
の時には、例えば次のような内容を"out_file"に書き出す
_-1111111111_____2222222______333333________4444__________55
_________________6_______________7______________8_____________9___________0
________________ 1_______________2______________3_____________4___________5
_________________6_____7890123________-5666
[3] 環境
 [3.1] OS:windows7
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月26日まで
[5] その他の制限: とくにありません
問題文ではアンダーバーではなく半角の空白記号でしたが、見やすさを考慮して_に変えておきました
講義で構造体やファイル入出力等、基本的なことは終わっています
よろしくお願いします
138デフォルトの名無しさん:2010/01/25(月) 07:34:39
[1] 再帰的データ構造
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10432.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2010年1月25日17:30まで])
[5] その他の制限:特になし

よろしくお願いします。
139デフォルトの名無しさん:2010/01/25(月) 07:52:26
>>130
http://codepad.org/5SmBZ1C1

これでどうでしょうか?
140デフォルトの名無しさん:2010/01/25(月) 09:06:52
>>135
問題1
http://codepad.org/bgcSjgxX
問題2
http://codepad.org/SE5EpdPz

モレの頭ではうまいソート方法が思いつかんかったよ。
バグってたらごめん。
問題2のスペース,タブの扱いがよくわからんかったので,
そっとしておいたお。
こちらの環境は Cygwin,gcc なので問題あるかも。
141デフォルトの名無しさん:2010/01/25(月) 09:55:59
[1] 授業単元:動画像の圧縮と復号
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10433.txt
[3] 環境
 [3.1] OS: Windowsvita
 [3.2] gcc バージョンはわかりません cygwinを使っています
 [3.3] 言語: C
[4] 期限: ([2010年1月25日15:00まで] 時間なくてすみません;;
[5] 特にないです

必修課題なんです
どうかお願いします
142 ◆QZaw55cn4c :2010/01/25(月) 10:43:25
>>141
期待していただいては困るのであらかじめ行っておけば、
この種のプログラミングは専門性が高いので、
経験豊かな人間にしか手をつけられません。

必修というのであれば、ココに期待しないほうがいいと思います。
143homi:2010/01/25(月) 13:38:14
[1] データ構造とプログラミング
[2]
演習問題4.5 逆ポーランド記法による入力文字列(空白で区切られている)に対して、
16進数と10進数で答えを返すプログラムrpnを作りなさい。
(入力例)rpn 5 2 + 7 *
(出力例)0x31, 49(decimal)
[3] 環境
 [3.1] (Windows)
 [3.2] (gcc)
 [3.3] (C++)
[4] 期限: ([2010年1月25日23:59まで] )
[5] 特にないです


お願いします
144homi:2010/01/25(月) 13:44:30
[1] データ構造とプログラミング
[2]
[1] データ構造とプログラミング
[2]
自然入力した数式を逆ポーランド記法に変換するアルゴリズムを考えなさい。アルゴリズムをPADやフローチャートで示すだけでもよい。プログラム化することができれば、ボーナスポイントです。
(入力例)./a (5+2)*7
(出力例)5 2 + 7 *[3] 環境
 [3.1] (Windows)
 [3.2] (gcc)
 [3.3] (C++)
[4] 期限: ([2010年1月25日23:59まで] )
[5] 特にないです
145homi:2010/01/25(月) 13:46:13
上ちょっとフォーマット崩れました。ごめんなさい。

[1] データ構造とプログラミング
[2]
自然入力した数式を逆ポーランド記法に変換するアルゴリズムを考えなさい。アルゴリズムをPADやフローチャートで示すだけでもよい。プログラム化することができれば、ボーナスポイントです。
(入力例)./a (5+2)*7
(出力例)5 2 + 7 *
[3] 環境
 [3.1] (Windows)
 [3.2] (gcc)
 [3.3] (C++)
[4] 期限: ([2010年1月25日23:59まで] )
[5] 特にないです


よろしく願いたします
146デフォルトの名無しさん:2010/01/25(月) 13:51:19
>>125
いえいえ、助かります。問2について解決致しました。
規制にて書き込みできず遅れましたが、ありがとうございました。

提出期限は過ぎてしまいましたが、どなたか>>102の問3をよろしければお願いします。
147デフォルトの名無しさん:2010/01/25(月) 13:55:02
148デフォルトの名無しさん:2010/01/25(月) 15:01:34
★依頼してから「納品」までは最低6時間は下さい。それ
以下の場合は、品質が著しく低い場合があります。
★依頼してからの宿題内容の修正はやめてください。
やむをえず行う場合は3時間以内にしてください。6時間
を経過した場合は依頼自体を取り消して貼り直して下さい。
(宿題をやって下さる方も、問題の内容自体の理解も覚束ない
人間が一発で問題文を正確に転記/略述することは出来ない
ので、少なくとも3時間以内までには修正が入るかもしれないと
いう前提でお願いできないでしょうか?)
★宿題をやってあげる方は仕事でやっているわけではないので
品質に文句を付けるのはやめてください(質問は構いません)
★複数やってくださった方が居た場合でも依頼者は全員に貼って
もらう必要はありません。時間を割いて片付けてくれた人を
比較するようなことは失礼に当たります。(宿題を貼る場合は
依頼者がまだ見ているかどうか確かめてから貼るように
お願いします。)最初に貼ってくれた人の回答で満足なら
回答をお寄せ下さった方にお礼と回答を貼ることを遠慮して
もらうようにして下さい。
149デフォルトの名無しさん:2010/01/25(月) 15:05:27
> ★複数やってくださった方が居た場合でも依頼者は全員に貼って
> もらう必要はありません。

書いている意味がよくわからない。
複数回答が出た場合に、どこにだれが何を貼るって?
150デフォルトの名無しさん:2010/01/25(月) 15:21:17
依頼者はどんなにひどい回答でも、喜んで受け取り、
以降その人以外から回答は受け取らないようにしろだと?

依頼者には酷かもしれないけど正論だな。
ようするに既に回答者が出てた場合は、最初の回答者を通
す形にしてやったほうがいいかも。
但し最初の回答者になる為に意図的に糞コード貼ってる
と認識された場合は袋叩きにあうかも知れないんで
回答者も少し辛くなる。
151デフォルトの名無しさん:2010/01/25(月) 15:23:36
いやそれ構わなくていいから・・・
152デフォルトの名無しさん:2010/01/25(月) 15:34:29
>>148
が一体何を望んでいるのか、サッパリ分からない。
153デフォルトの名無しさん:2010/01/25(月) 15:35:33
>>152
ただ、仕切りたいだけだろ
154デフォルトの名無しさん:2010/01/25(月) 16:27:07
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):http://www.acm-japan.org/past-icpc/domestic2008/problems/all_ja.html
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: ([2010年01月26日23:00まで]
[5] その他の制限
Problem A の問題です。
頑張ってみたのですが、わかりませんでした。
どなたか、よろしくお願いします。
155デフォルトの名無しさん:2010/01/25(月) 17:24:48
>>148
とりあえず赤くしておく
156デフォルトの名無しさん:2010/01/25(月) 18:00:15
>137
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10440.txt

・入力例に全角スペースが含まれていますが、全角スペース対応はしていません。
・出力例が意味不明だったので、独自解釈をしました。
・ファイル読み込み(fscanf)のエラーチェックとバッファーオーバーラン対策はしていません。
・ファイル書き込み(fprintf)のエラーチェックはしていません。

問題があれば具体的に指摘してください。たぶん、対応します。
157デフォルトの名無しさん:2010/01/25(月) 18:01:21
158デフォルトの名無しさん:2010/01/25(月) 19:36:12
>>153
最近こんな生徒さんが多いですね。こういうのが学校ではやっているんですかね?
159デフォルトの名無しさん:2010/01/25(月) 19:37:27
>>154
さすがにこれに答えちゃいけないでしょう。自力でなんとかしなさい。
160デフォルトの名無しさん:2010/01/25(月) 19:51:47
>>136
遅くなりました
ありがとうございました
161デフォルトの名無しさん:2010/01/25(月) 20:11:44
[1] 授業単元: プログラミング演習(木構造と数式処理)
[2] 問題文(含コード&リンク):

累乗の計算の逆を行うプログラムを作ってください。


x*x*xと入力されればx^3と画面に出力する。

x*x*x*aなどの場合はx^3*aと出力されればよい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月28日12:00まで
162 ◆NPjWSW9EXI :2010/01/25(月) 20:28:20
103です
>>113
遅くなりました
有難うございました。

どなたか2番を解いてくださいお願いします。
163デフォルトの名無しさん:2010/01/25(月) 20:46:36
>>129
すみません…ありがとうございます。あと、昨日聞き忘れてしまったんですが、
意味的に同じであると思うんですが、この2つを書き方分けてる理由は何ですか?
cout << "{(a+b)c-a(b-c)}/{(c/b)a+abc-ca} = ";
cout << ((a+b)*c-a*(b-c))/((c/b)*a+a*b*c-c*a) << '\n';
16493:2010/01/25(月) 20:51:51
言い忘れてしまいました。これを考察というのをするんですが、この2つを比較でもしようかなと思うんですが、
プログラムの文章の書き方が違うとかそういう事以外で何かありますか?
165120:2010/01/25(月) 22:20:29
166デフォルトの名無しさん:2010/01/25(月) 22:24:24
>>162
#include <stdio.h>

void mult_array(int a0[4][4],int a1[4][4],int result[4][4]){
int x,y,k;
for(y=0;y<4;y++){
for(x=0;x<4;x++){
for(k=0;k<4;k++){
result[y][x]+=a0[y][k]*a1[k][x];
}
}
}
}
int main(){
int a0[4][4]={0};
int a1[4][4]={0};
int result[4][4]={0};
int y;
for(y=0;y<4;y++)scanf("%d%d%d%d",&a0[y][0],&a0[y][1],&a0[y][2],&a0[y][3]);
for(y=0;y<4;y++)scanf("%d%d%d%d",&a1[y][0],&a1[y][1],&a1[y][2],&a1[y][3]);
mult_array(a0,a1,result);
for(y=0;y<4;y++)
printf("%d %d %d %d\n",result[y][0],result[y][1],result[y][2],result[y][3]);
return 0;
}
167hoge:2010/01/25(月) 23:07:26
上の105ですが、もう一度質問させて頂きます。
なぜなら、課題2対しての回答がないからです。
皆様よろしくお願いします。

[1] データ構造とプログラミング
[2]b01, b001 のように二進数をb で始まるように表記する。二進数の集合を、できるだけ少ないノード数
の二分木に分類するためには、二分木のノードに蓄積する二進数の桁数を可変にすることが有効である。こう
することで二進数表記した値(たとえばキーワードとか、位置とか、日付とか)に紐づけられたデータを少な
い検索で見つけることができる。
扱う二進数の集合を、たとえば
b00, b001, b0011, b00111, b1000, b11100, b0
として、これらを図1に示すようにニ分木に分類して、帰りがけ(ポストオーダ)で次のように出力するプロ
グラム(tree) を作成し、C のソースコードを提出しなさい。
>./tree
>1 1 1 0 0 000 1100 0 1 b
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限
168 ◆QZaw55cn4c :2010/01/25(月) 23:15:59
>>143
コマンドラインで * を入力すると、シェルが解釈していまうので、
実行後、標準入力から式を入力してください。
http://codepad.org/H4KWIkS9
169 ◆NPjWSW9EXI :2010/01/26(火) 00:39:43
>>166
助かりました
有難うございます
170homi:2010/01/26(火) 00:46:56
>>168
ありがとうございます!!><
171homi:2010/01/26(火) 00:50:11
前にこれを上げたものです。
課題1はすでにやってもらったのですが、
課題2がまだです。
再UPになりますが、もしできる方いらっしゃいましたらよろしくお願いします><

[1] データ構造とプログラミング
[2] http://www.geocities.jp/t07644fb/kadai.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限

失礼しました
172デフォルトの名無しさん:2010/01/26(火) 00:56:37
>>171
あなたはそのために単発スレまで建てたんだからそっちでやりなよ
173137:2010/01/26(火) 01:27:20
>>156
返事が遅くなってすいません
全角スペースは対応しなくても大丈夫だと思います
私の独自解釈では、おそらく"in_file"内の整数18個を5*3+3の4行に分け、最も長くなる行に揃えて出力すればいいのかと…
適当に入力した数値が綺麗に並んで出力されたので、問題ないと思います
助かりました
ありがとうございました
174デフォルトの名無しさん:2010/01/26(火) 01:30:22
[1] データ構造とプログラミング
[2]
リングバッファを使って、9個のキューを作り、データを追加したり、
データを取り出すプログラムを完成させなさい。
以下の添付にあるプログラムを完成させろという課題です。
http://www.geocities.jp/pegasus_violet/en5-2.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限


よろしくお願いいたします
175デフォルトの名無しさん:2010/01/26(火) 02:40:07
いつから質疑応答スレになったんだ?
宿題を依頼し、片付けてもらうスレだろ?
176デフォルトの名無しさん:2010/01/26(火) 02:48:16
>>175
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他の発言はスルーの方向で。
気に入らない質問やその他の発言はスルーの方向で。
気に入らない質問やその他の発言はスルーの方向で。
気に入らない質問やその他の発言はスルーの方向で。
177デフォルトの名無しさん:2010/01/26(火) 03:18:10
気に入らない依頼やその他の質問はスルーの方向で。
178デフォルトの名無しさん:2010/01/26(火) 05:25:11
17983:2010/01/26(火) 07:46:44
>>97,98
遅くなりましたがどうもありがとうございました。
180デフォルトの名無しさん:2010/01/26(火) 08:27:07
問題文の曖昧さと回答の多様性の擦り合わせの先に真の回答が
あるんじゃね?

ことプログラム作文に関しては
問題、回答、終了という気持ちのよいスケジュールが
立てられるとは思わないほうがいいかも
数学問題の影響受け過ぎ(てか数学が異常な学問)
181デフォルトの名無しさん:2010/01/26(火) 09:17:28
>>161
http://codepad.org/C6kJenpg

木構造ってあったから,2分木を使ったけど,
配列を使った方が,入力サイズは限られるが,楽だと思う。
問題文から察するにソートする必要ないし。

エラーチェックは甘いけど,バグってたりしたら,
教えて下さい。治さないかもしれないけど。
182デフォルトの名無しさん:2010/01/26(火) 09:19:50
>>180
が一体何を望んでいるのか、サッパリ分からない。
183デフォルトの名無しさん:2010/01/26(火) 09:23:35
>>161
http://codepad.org/hBX7Dn6H

ごめん。余分な出力が入ってたので修正した。
184デフォルトの名無しさん:2010/01/26(火) 09:33:44
>>182
>>180の望みをわかることも>>180は望んでいる
んだろう。しかしね。ここは2chでプログラミング
の宿題を片付けるスレで、いろいろと制約も多い
んで、質疑応答形式になってしまっているんだ。
185デフォルトの名無しさん:2010/01/26(火) 09:42:30
>>184
が一体何を望んでいるのか、サッパリ分からない。
186デフォルトの名無しさん:2010/01/26(火) 09:46:52
>>180にもわからないだろね
187デフォルトの名無しさん:2010/01/26(火) 10:19:16
>>180
>問題文の曖昧さと回答の多様性の擦り合わせの先に真の回答が
>ある
そうなんだろうが、誰もがそういう水準に到達出来るわけじゃ
ない。国語の作文の授業みたいに完全に自由か、
数学の入試問題のように極度に不自由かのいずれ
か一つじゃないと皆やらないだろ?
188デフォルトの名無しさん:2010/01/26(火) 10:49:19
>>178
遅くなりましたが
ありがとうございました!
189デフォルトの名無しさん:2010/01/26(火) 10:52:56
[1] データ構造とプログラミング
[2]
ツリーにノードを追加するプログラムを完成させなさい。またプログラム中 に使われている要素 mitsugi, emura, satou, yonemura, murai, nakamura, kwkt がツリー上でどのように配置され ているか書きなさい。
以下の添付にあるプログラムを完成させろという課題です。
http://www.geocities.jp/pegasus_violet/en9-5.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限


よろしくお願いいたします
190デフォルトの名無しさん:2010/01/26(火) 11:00:16
[1] データ構造とプログラミング
[2]
以下の添付にあるプログラムを完成させ配列のrotateを完成させろという課題です。
http://www.geocities.jp/pegasus_violet/en8-4.pdf
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C++)
[4] 期限: ([2010年1月26日23:59まで])
[5] その他の制限

よろしくお願いいたします;;
191デフォルトの名無しさん:2010/01/26(火) 11:43:16
>>189
void AddChild(struct NODE** p, char* name){
if (!*p) {
*p = (struct NODE *)malloc(sizeof (struct NODE));
(*p)->left = (*p)->right = 0;
strcpy((*p)->name, name);
} else {
AddChild(strcmp(name, (*p)->name) < 0 ? &(*p)->left : &(*p)->right, name);
}
}
192デフォルトの名無しさん:2010/01/26(火) 13:15:50
>>191
大変ありがとうございます
193デフォルトの名無しさん:2010/01/26(火) 13:23:04
[1] 授業単元:プロトタイプ宣言とか引数
[2] 問題文(含コード&リンク):[3〜6]∫x^2 dx(これだと正解は63)を計算するプログラムを作成せよ。
尚、積分本体(始点と終点)と関数本体f(x)に分けること。dx=1/N N=(10,1000…10000)誤差評価を行う事。積分範囲を変更すること。x^2の関数を変更すること。
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月25日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。
194デフォルトの名無しさん:2010/01/26(火) 14:15:37
>>193
http://codepad.org/PqWWIDA4
積分範囲とか積分関数変えるのは適当に自分でやってくれ
(積分関数:6行目、積分範囲:20〜22行目、厳密解:27行目)
195デフォルトの名無しさん:2010/01/26(火) 14:31:19
>>193
期限後なのに1時間も経たずにやってくれた人が
居たのはラッキーだったと思うべし
つーか期限後の宿題を片付けるのはややルール違反
気味
196デフォルトの名無しさん:2010/01/26(火) 14:33:44
>>195
もういいからお前は消えろ。
二度とこのスレに来るな。
197よろしくお願いします(m_m):2010/01/26(火) 14:55:29
[1] 計算機概論
[2] 8bit整数が8つ与えられている。これをunsigned char配列と
みなしa[]と名付ける。
unsigned char 整数のor,not演算だけを用いて1<=n<=8からa[n]を
計算するC計算式を出力するプログラム
例:a[]={1,2,3,4,5,6,7,8}; 出力 return n;
a[]={1,0,1,0,1,0,1,0}; 出力 return !(!n or 11111110b);
[3.1] OS:Mac OS-X
[3.2] XCode 3.0(gcc 4.0)
[3.3] C言語
[4] 1/25 正午(厳守)
[5] 出来るだけ短いコードを出力するプログラムを書く事
198デフォルトの名無しさん:2010/01/26(火) 16:41:15
仕切り男が不快だから、次のスレのテンプレから期限を外そうじゃないか。
199デフォルトの名無しさん:2010/01/26(火) 17:15:36
気に入らない質問やその他の発言はスルーの方向で。
200デフォルトの名無しさん:2010/01/26(火) 17:29:34
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
A組、B組、C組にそれぞれn人の生徒がいて、
A組の生徒が一列に並んでいる。
このとき、B組の生徒をA組の生徒の隣に並ばせたいが
なるべく隣同士で身長に差がないようにしたい。
どうやって計算すればいいでしょう?
加えて、C組の生徒もB組の隣に並ばせたい場合はどうすれば?
(身長の配列) double height_a[n], height_b[n], height_c[n];
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2010年1月28日(木)16:00
[5] その他の制限: 特にありません

B組だけを考える場合はn!、C組も考える場合はn!×n!の並び方を生成して、
身長差の合計を計算して最小ならその並び方を保存って感じでいいと思うんだけど
そのやり方が思いつかない・・・

B組のみの場合
(B組をn!通り並ばせるループ){
diff = sum(n人の身長差の合計);
if(diffが最小){
B組の並び順を保存
}
}

こんな感じになると思うんだけど・・・
お助けください。
201デフォルトの名無しさん:2010/01/26(火) 17:30:10
>>197
意味不明だな・・・
202デフォルトの名無しさん:2010/01/26(火) 17:34:13
>>201
a[n-1] と等価となる  NOT, AND, OR の連結で得られる式を作るプログラムを作れ
だと思うが… 俺には難しい。 a[n] が 0〜255 を取り得るからなぁ
203デフォルトの名無しさん:2010/01/26(火) 17:36:59
>>200
A<Bの時
A:1 2 3 4 5 6
B:1 2 3 4
こういう並びはアリですか?
ナシならA=Bの時と同じで
Bがどのように並んでも身長差の合計は同じですよね
204デフォルトの名無しさん:2010/01/26(火) 17:41:09
★期限の過ぎた問題を依頼してはいけません
205デフォルトの名無しさん:2010/01/26(火) 17:48:42
>>202
オレは加算演算子や添え字を使わずに
a[n],*(a+n)をnot,orのみで表現しろと言う事か
添え字が1からなので減算も必要だしめんどくさそうだね
206200:2010/01/26(火) 17:54:01
>>203
すいませんA<Bっていうのがよくわかりません
B組のほうが平均身長が高いという意味でしょうか?
身長の値については定まったものではなく任意です。

A,B,C組で人数は同じn人です。n=6だとすると下のようになります。
A:1 2 3 4 5 6 は固定で隣同士の身長差の和が最小となる
B:5 1 6 2 4 3 みたいな並び方をn!で総当りで調べる・・・

B組の並び順をint narabi_b[n]として、
narabi_b[n]にn!通りの1〜nの数字を入れる?
うーん・・・
207デフォルトの名無しさん:2010/01/26(火) 18:02:27
>>206
人数の事ね。
不等号が逆だったごめん。

A,B,C組で人数は同じn人で
身長差の和が最小となる
という条件ならどう並んでも同じだよ。

(A1-B1)+(A2-B2)+(A3-B3)=(A1+A2+A3)-(B1+B2+B3)
208デフォルトの名無しさん:2010/01/26(火) 18:04:18
>>207
絶対値を取る可能性もあるぞ
209デフォルトの名無しさん:2010/01/26(火) 18:05:09
>>202
添字n(1,2,3,4,5,6,7,8)から対応するa[n](これは任意の0~255
となり得る)をor とnotからなる式で表す。nと定数は
使っても良い。
(n or (! n or 11110011b) ) or !( !n or 10110111b) ....
という式のn=1,2,3,4,...,8 に対する値が指定したものに
なるように式を選ぶプログラムを作れ
って意味じゃないかなと思うが、これは多分不可能じゃないかと...
a[n] = n >> 1 とかの場合はどーすんだ?
ネタじゃないかとは思ってはいるが...
210デフォルトの名無しさん:2010/01/26(火) 18:05:42
>>208
あぁ、それなら納得
211200:2010/01/26(火) 18:07:01
>>207
確かにその通りです。
ちょっと私の書き方がよくなかったです。
身長差の絶対値の和というべきでした。
すいません。
212デフォルトの名無しさん:2010/01/26(火) 18:52:01
よろしくお願いします。
[1] 授業単元: Cプログラミング入門演習U
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10445.txt
[3] 環境
 [3.1] OS: WindouwsVista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月28日(木)
[5] その他の制限: 特にありません
213デフォルトの名無しさん:2010/01/26(火) 18:57:51
[1] 授業単元: プログラミングとコンパイラ
[2] 問題文:kadai.cを単項演算子の+-、剰余演算子%に対応するように改造せよ
  サイトhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htmのC/C++の宿題片付けます132代目の10446.zip
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年1月29日まで
[5] その他の制限:パーサがどのようにして解析コード生成されていくかの説明も添付
214デフォルトの名無しさん:2010/01/26(火) 19:37:47
>>212
#include <stdio.h>
#include <stdlib.h>
int average(int *nums, int size) {
int i, sum = 0;
for (i = 0; i < size; i++) sum += nums[i];
return size ? sum / size : -1;
}
static int min_distance_target;
int min_distance_cmp(const int *a, const int *b) {
int diff = abs(min_distance_target - *a) - abs(min_distance_target - *b);
return diff ? diff : (*a - *b);
}
void min_distance_sort(int *nums, int size, int target) {
min_distance_target = target;
qsort(nums, size, sizeof (int), (int (*)(const void*, const void*))min_distance_cmp);
}
void scan(int *nums, int size) {
int i, tmp;
for (i = 0; i < size; i++) {
scanf("%d", &tmp);
nums[i] = tmp;
}
}
215デフォルトの名無しさん:2010/01/26(火) 19:39:49
>>212つづき
void print(int *nums, int size) {
int i;
for (i = 0; i < size; i++) printf("%s%d", i ? " " : "", nums[i]);
puts("");
}
int main() {
int size, nums[100];
scanf("%d", &size);
if (100 < size) size = 100; // (最大で100とする)
scan(nums, size);
min_distance_sort(nums, size, average(nums, size));
print(nums, size);
return 0;
}


注:肝心のソートが手抜き(qsort頼り)だから先生によっては怒られるかも。
やむをえずstatic int min_distance_target; というグローバル変数も使ってしまってる。
216備忘録:2010/01/26(火) 20:49:27
★関連スレ

大学のプログラミング演習の課題を添削するスレ
http://pc12.2ch.net/test/read.cgi/tech/1188501699/
217デフォルトの名無しさん:2010/01/26(火) 21:33:02
C++でOpenGLの勉強してます。OpenGLなんですが、言語はC++なのでこちらで質問していいのかな?
218デフォルトの名無しさん:2010/01/26(火) 21:40:03
OpenGLに限らずそういう専門的なものはあんまり期待しない方が良いよ。
ダメとは言わないけど
219誘導:2010/01/26(火) 21:46:59
OpenGLスレ Part14
http://pc12.2ch.net/test/read.cgi/tech/1263901596/
でどーぞ
220デフォルトの名無しさん:2010/01/26(火) 21:47:03
[1] 再帰リスト構造
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10447.txt
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: (1月29日0時まで)
[5] その他の制限: (特になし)
上のソースでプログラムは実行しますが、
name、emailに2文字以下だと大丈夫なのですが、3文字以上入力すると
出力のテンプレートが崩れてしまいます。
どこがおかしいかお願いします。
221デフォルトの名無しさん:2010/01/26(火) 21:58:12
222デフォルトの名無しさん:2010/01/26(火) 22:03:21
>>220
age2 = (char*)malloc(sizeof(char));
これでは、char一文字分しか確保されない。
文字数nの文字列の場合、
age2 = (char*)malloc(sizeof(char) * n + 1);
と書く。+1は終端文字'/0'のために準備。

getline(age2, sizeof(age2));
これでは、int nとして渡すには不十分。
sizeof (char *)の意味になる。
文字数nの文字列の場合、
getline(age2, n);
と書く。getlineが実際にどう動くかは想像しかしてないけど。
223212:2010/01/26(火) 22:13:29
>>214-215
素早い回答感謝します
224デフォルトの名無しさん:2010/01/26(火) 22:16:39
やはりここでOpenGLの質問は、あまりよくないようですねorz

>>219様の誘導先は質問スレではないのでダメかな?
って思ってやめておいたのですが、そちらのスレに質問を書かせていただきました。

もしOpenGLのことも分かる方が居ましたらOpenGLの掲示板に書かせていただきましたので
ご回答していただけるとすごく嬉しいです><
225デフォルトの名無しさん:2010/01/26(火) 23:00:20
[1] 授業単元:情報科学U
[2] 問題文(含コード&リンク):http://www.f.csce.kyushu-u.ac.jp/~ogi/kougi/11.pdf
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年1月27日23:59まで
[5] その他の制限:特にありません

どうしてもわかりません。すみませんがよろしくお願いします。
226デフォルトの名無しさん:2010/01/26(火) 23:15:18
>>225
void DspArray(int *p,int n){
while(n--){
printf("%d ",*(p++));
}
printf("\n");
}

こう言う事?
227デフォルトの名無しさん:2010/01/26(火) 23:15:23
[1] 授業単元:(大学専門課程某講座)
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10450.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:Visual studio .NET
 [3.3] 言語: C
[4] 期限: 2010年1月31日まで
[5] その他の制限:特にありません
228226:2010/01/26(火) 23:19:42
>>225
よく読んでなかった。
void DspArray(int array[],int n){
int i;
for(i=0;i<n;i++){
printf("%d ",array[i]);
}
printf("\n");
}
229デフォルトの名無しさん:2010/01/27(水) 00:19:45
>>222
ありがとうございます。
230デフォルトの名無しさん:2010/01/27(水) 01:00:28
231デフォルトの名無しさん:2010/01/27(水) 01:17:34
>>194
ありがとうございました。
232デフォルトの名無しさん:2010/01/27(水) 01:27:49
[1] 授業単元:プロトタイプ宣言とか引数
[2] 問題文(含コード&リンク): 得点を入力して以下のルールに従った成績を返す関数を実装せよ。
90点以上 S
80点以上 A
60点以上 B
それ未満 C
()の中に何か入るらしいです () score(int sc) {
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月28日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。
233デフォルトの名無しさん:2010/01/27(水) 01:29:01
[1] 授業単元:プロトタイプ宣言とか引数
[2] 問題文(含コード&リンク): 入力された数字が偶数なら、trueを返す関数。それ以外ならfalse
()の中に何か入るらしいです () even(int sc) {
[3] 環境
 [3.1] OS:xbuntu
 [3.3] 言語:C++
[4] 期限: 2010年1月28日
[5] その他の制限:出力→cout,入力→cin,あと、簡単にお願いします。始まりは、
#include <iostream>
using namespace std;です。
234デフォルトの名無しさん:2010/01/27(水) 02:29:00
>>227
http://codepad.org/hRbZ2Z1N
左端の数字は元の行数。修正した行には/*修正*/
修正内容は
・後半のソートの呼び出しの引数が逆になっていたのを修正(26行目)
・ & を && に変更(42行目)
・ ++p などを p++ に変更(11,42-45行目)

N=10000だと表示がアレなんだがN=100くらいだとちゃんと表示される
235デフォルトの名無しさん:2010/01/27(水) 02:30:50
>>232
char score(int sc){
if(sc>=90) return 'S';
if(sc>=80) return 'A';
if(sc>=60) return 'B';
return 'C';
}
236デフォルトの名無しさん:2010/01/27(水) 02:31:52
>>233
bool even(int sc){
return (sc%2 == 0);
}
237デフォルトの名無しさん:2010/01/27(水) 03:28:16
>>235
実行してみたんですが、できないんですが、どうしてでしょうか
238デフォルトの名無しさん:2010/01/27(水) 04:37:48
>>237
「できないんです」 は禁句
何を期待したか、どんな操作をしたか、そしてどんな結果になったかの 3 点を書かないと
何が問題なのか見た人には分からない
239デフォルトの名無しさん:2010/01/27(水) 07:51:08
>>230
ありがとうございました!
240227:2010/01/27(水) 12:07:55
>>234
ありがとうございます。大変面倒な課題のほうたった2時間余りで
迅速にやって頂けて試験前なので助かりました。
(1月31日位になるかと思ってました)
実はもっと長いもの(数値計算関連で長さ約300行)も出てい
るので(そちらのほうは必須ではないですが試験が出来なかっ
た場合に提出していれば不可になる確率がずっと低くなるそうで)
そちらもやって頂けると非常に嬉しいのですがよろしいでしょうか?
241147:2010/01/27(水) 13:09:03
147をどなたかお願いできないでしょうか?
よろしくお願いします。
242デフォルトの名無しさん:2010/01/27(水) 13:37:16
>>232
#include <iostream>
using namespace std;
char score(int sc){
if(sc>=90) return 'S';
if(sc>=80) return 'A';
if(sc>=60) return 'B';
return 'C';
}
fatal error LNK1120: 外部参照 1 が未解決です。
未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
とでるんですが…
243デフォルトの名無しさん:2010/01/27(水) 13:38:14
>>238でしたすみません。
244デフォルトの名無しさん:2010/01/27(水) 14:22:57
245デフォルトの名無しさん:2010/01/27(水) 17:23:10
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
キーボードから正の整数nを入力し、n!を計算して画面表示するプログラムを
作成せよ。ただし、階乗を計算する関数のプロトタイプを「void kaiyo(int , int *)」
とし、第1引数にnを、第2引数に計算結果を格納する変数のポインタを指定すること。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C++
[4] 期限: 2010年1月28日木
[5] その他の制限: よろしくお願いします
246デフォルトの名無しさん:2010/01/27(水) 17:32:11
>>245
#include <iostream>
void kaiyo(int , int *);
int main() {
int n, ret;
std::cin >> n;
kaiyo(n, &ret);
std::cout << ret;
}
void kaiyo(int n, int *ret) {
*ret = 1;
for (int i = 1; i <= n; i++) {
*ret = *ret * i;
}
}
247デフォルトの名無しさん:2010/01/27(水) 17:47:37
>>246
ありがとうございます!
248デフォルトの名無しさん:2010/01/27(水) 17:55:11
>>234
よくこんな糞問題に手を出すなぁw

show()が2つあるのはソート前後の比較用でしょ
ソート途中を示すものじゃないと思うよ
N=10000でもエディタの設定で折り返しなしにすれば
見れないことは無いけど1行8000バイトだからひどいもんだ
249デフォルトの名無しさん:2010/01/27(水) 18:02:03
>>242
main() を書きましたか?
250デフォルトの名無しさん:2010/01/27(水) 20:23:38
[1] 授業単元:情報処理演習
[2] 問題文(含コード&リンク):
次のプログラムで作成される縞パターンを縦にした画像を作成するプログラムを作成せよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10454.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
提出期限2010年1月29日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にないです

よろしくお願いします。
251デフォルトの名無しさん:2010/01/27(水) 21:09:22
>>250
txtでうpしてるのに何でインデント潰すの?
必要なスペースまで潰すのは嫌がらせ?

//if(i>=75 && i<=125){
if(j>=150 && j<=250){ //元々の数字がマジックナンバーなので好きに替えてくれ
252デフォルトの名無しさん:2010/01/27(水) 21:11:05
sin のマクローリン展開とコンピュータ定義のsinとの誤差を求めよとの問題なのですが
エントリーポイントを定義しなければならないとエラーが出ているのですが解決方法がわかりません
#include <stdio.h>
#include <math.h>
#define gosa 0.00001
double sa(double x){
double d,dt;
int k;
k=1;
d=0;
dt=x;
d=d+dt;
while(1){
if(fabs(sa(x)-cos(x))<gosa)break;
}
dt=dt*(-1)/((k+1)*(k+2))*x*x;
k=k+2;
return fabs(sa(x)-cos(x));
}
int main(){
double x;
x=0.00;
while(1){
printf("x=%3f cosの差=%12f\n",x,sa(x));
x=x+0.01;
if(x<=1.00)break;
}
}
どうかよろしくお願いします
計算式が間違ってる・・・とかはスルーして貰って結構です
[3] 環境 [3.1]windows vista[3.2] visual C++ 2008[3.3] C++[4] [無期限]
253 ◆QZaw55cn4c :2010/01/27(水) 21:21:49
>>145
http://codepad.org/01OEgrMz
期限切れでしたか。残念です。
254デフォルトの名無しさん:2010/01/27(水) 21:34:44
>>249
#include <iostream>
using namespace std;
char score(int sc){
if(sc>=90) return 'S';
if(sc>=80) return 'A';
if(sc>=60) return 'B';
return 'C';
}
mainをどこに入れるんですか?
255デフォルトの名無しさん:2010/01/27(水) 21:35:57
依頼者が見てるか確認してから貼るのがマナーだよん
見てるかどうか確かめても返事がない場合や、見てそうにも
ない場合で、世間を騒がせたまま逃げ出した依頼者の尻拭い
をしたいという気持ち(大抵の場合は杞憂)でコードを貼る
場合はアンカーは>>1にしようぜ
256デフォルトの名無しさん:2010/01/27(水) 21:43:16
>>252
スレタイ嫁
hello worldからやり直して貼り付けろカス
257デフォルトの名無しさん:2010/01/27(水) 21:44:21
>>254
http://codepad.org/L4M6uCey
問題自体は関数を実装せよ、ということでしたから、回答者は関数 score() だけを回答した(と思います)のですが、
実際に score() の動作を確かめたいというのであれば、こんな感じで main() から書かないといけないでしょうね。

>>255
> 依頼者が見てるか確認してから貼るのがマナーだよん
そんなマナーがあるのですか?そんなマナーにどんな意味があるのですか?
258デフォルトの名無しさん:2010/01/27(水) 21:49:36
>>252
エラーは要約しないで、丸ごとコピペしろ。
259デフォルトの名無しさん:2010/01/27(水) 22:05:15
>>257
プログラムを作成せよじゃないから多分そうですね。一応、>>236はどうすると実行ができますか?
260デフォルトの名無しさん:2010/01/27(水) 22:23:44
>>253
いえいえ!ありがとうございます!!
261デフォルトの名無しさん:2010/01/27(水) 22:33:34
>>200
順列を生成するクラスだけで十分そうなので、後はご自分でどうぞ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10455.txt
262デフォルトの名無しさん:2010/01/27(水) 22:38:52
>>261
next_permutation使えば?
C限定ならまだ分かるけど。
263デフォルトの名無しさん:2010/01/27(水) 22:48:15
>>262
それは>>200の人に言ってあげてください。
264デフォルトの名無しさん:2010/01/27(水) 22:49:39
>>263
>[3.3] 言語: C++
>[5] その他の制限: 特にありません
え?
265デフォルトの名無しさん:2010/01/27(水) 22:50:58
>>264
だから>>200の人に言ってあげてください。
266200:2010/01/27(水) 22:54:07
>>261
うおおーありがとうございます!
Cの最低限しか学んでないんで
C++っぽいclassとかの使い方の勉強にもなります。

>>262
ぐぐるとそれ使えばいけそうですね。ありがとうございます!

いやーそうか、やりたいことのキーワードで検索すれば
ライブラリであったりするんだな。
今回は順列でpermutationか。
そういった意味でも勉強になりました。ありがとうございました!
267デフォルトの名無しさん:2010/01/27(水) 22:58:38
>>252
これで動くと思うけど問題の意味を取り違えてるような
あとなぜかcosが出てきたけどsinに書き換えといた。
#include <stdio.h>
#include <math.h>
#define gosa 0.00001
double sa(double x){
double d,dt;
int k;
k=1;
d=0;
dt=x;
d=d+dt;
while(1){
if(fabs(d-sin(x))<gosa)break;
dt=dt*(-1)/((k+1)*(k+2))*x*x;
d=d+dt;
k=k+2;
}
return fabs(d-sin(x));
}
int main(){
double x;
x=0.00;
while(1){
printf("x=%3f sinの差=%12f\n",x,sa(x));
x=x+0.01;
if(x>1.01)break;
}
}
268デフォルトの名無しさん:2010/01/27(水) 22:58:43
>>265
え?理由は?
269デフォルトの名無しさん:2010/01/27(水) 23:40:40
>>268
理由は、必要としているのは私ではないから。
便利な道具があることを教えるのもいいことだと思います。
個人的には、(テーマが「宿題」ということもあり)ブラックボックスのままよりは、
多少勉強のネタになる状態で提供するのも、悪くはないかなという意見ですが。
270200:2010/01/27(水) 23:52:51
わたし非常に勉強になりましたのでいいじゃないですか!
271デフォルトの名無しさん:2010/01/28(木) 00:15:16
>>269
えと、あなたのレスに疑問を抱いたのに
質問者にあれこれ問い質しても意味不明ですよね?
自分が学生時代のころは
特に明記の無い限り標準関数の車輪は減点対象でしたので。
272デフォルトの名無しさん:2010/01/28(木) 01:07:12
>>270
私もちょっと困惑気味…

>>271
「next_permutation使えば?」と言われましたが、使う機会の無い私に言われるのも
意味不明ですから、質問者へのアドバイスとして言われればよいと判断したまでです。
また、何が減点対象で何が加点対象かは、時代背景も無いとはいいませんが、主には
講義や目的や教授の方針に依るよるでしょうから、質問者が適切に判断されれば良いと
思いますけれど。車輪を自分で発明をするのも勉強のうちですし。
273デフォルトの名無しさん:2010/01/28(木) 01:12:27
「講義や目的や」は「講義の目的や」の間違いです。すみません。
274デフォルトの名無しさん:2010/01/28(木) 01:24:25
基本的にここ、質疑応答スレじゃないんで。
知力、実力共に実態が質問者と教授回答者
であっても、形式的かつ論理的かつ法的には
依頼者と作業実行者の関係になります。
275デフォルトの名無しさん:2010/01/28(木) 01:32:55
要するに宿題代行を依頼する人もコード記述を代行する人も
かかる行為が世に100%賛同されているとは
言い切れないという認識は常に頭の片隅にでも...
276デフォルトの名無しさん:2010/01/28(木) 02:09:45
>>272
明らかな糞ソースを張って突っ込みが入ったとしても
苦情は質問者に言ってくれ!ってことね。おkw
277デフォルトの名無しさん:2010/01/28(木) 02:10:52
誰か>>259を教えてください
278デフォルトの名無しさん:2010/01/28(木) 02:18:28
依頼者が代行者のコードに苦情を言うのはマナー違反
だが程度問題

偶然の別代行者が代行者のコードを見てあれこれ
アドバイスするのは美徳でないとは言い切れない。

別の代行者からコードを受け取ったことがわかって
いる時点でコードを渡すのは美徳とは言い切れない。

複数の代行者が同調していたとしても
依頼者の依頼の仕方が悪いと決めつけられ
るかは状況依存
279デフォルトの名無しさん:2010/01/28(木) 02:33:20
>>278
不毛だな
宿題スレ代行者のレスを添削するスレ
とか出来そうだ
280233:2010/01/28(木) 03:01:29
>>236で回答もらったんですがboolってやつを習ってないんですよね…double.int.charとかは習ったんですが…しかしそれ以外だと出来ないとするとそれが正解ですよね
281デフォルトの名無しさん:2010/01/28(木) 07:41:59
>>280
bool を int に置き換えればOK
282デフォルトの名無しさん:2010/01/28(木) 16:20:52
>>281
それをintに変えたんですが>>257で書いてもらった感じで実行もするんですよね…
283257:2010/01/28(木) 18:04:29
>>282
ん、そうです。自力でかけば力がつくことでしょう。
284デフォルトの名無しさん:2010/01/28(木) 18:16:16
>>283
これじゃダメなんですよね…

#include <iostream>
using namespace std;
int even(int num) {
if(0 == sc%2) {
return true;
}
return false;
}
285デフォルトの名無しさん:2010/01/28(木) 18:25:57
>>284
int main() から実行されますから、int main() を書かなくてはいけません。>>257 をちょっと変えればいいです。がむばってください。
286デフォルトの名無しさん:2010/01/28(木) 18:26:41
>>284
じれったいw
boolをintに書きかえれ、と教えてもらってるでしょうに。
booをintに。
bool even(int sc){
return (sc%2 == 0);
}

int even(int sc){
return (sc%2 == 0);
}
に。
287デフォルトの名無しさん:2010/01/28(木) 18:26:56
>>284
//int even(int num) {
int even(int sc) {
にしましょう

true/falseで返すなら
bool even(int sc) {
にしたほうがいいと思います。

int even(int sc) {
ならば
return 1;
return 0;
としたほうがいいと思います。
288286:2010/01/28(木) 18:30:39
あ、失礼。
元々、
>>233
> [2] 問題文(含コード&リンク): 入力された数字が偶数なら、trueを返す関数。それ以外ならfalse
>  [3.3] 言語:C++

なのか。だったら
bool even(int sc){
return (sc%2 == 0);
}
か。
289デフォルトの名無しさん:2010/01/28(木) 18:33:01
>>288
return に括弧はいらない。
290デフォルトの名無しさん:2010/01/28(木) 18:41:19
自分で書いて使うだけなら括弧はいらないが、
省略する癖はつけないほうが良い
291デフォルトの名無しさん:2010/01/28(木) 18:43:15
だからといって
return (0)とか
return (1.0)とか
return ("aho-desuka?")
とかはやり過ぎ
式には括弧を付ける癖をつけましょう

失礼しました
292デフォルトの名無しさん:2010/01/28(木) 18:50:37
#include <iostream>
using namespace std;
int even(int sc){
return (sc%2 == 0);
}
int main() {
int num;
cout << "> ";
cin >>num;
cout << even(num);
return 0; }

これじゃダメなんですよね…boolっていうの使えないからもう滅茶苦茶ですよね
293デフォルトの名無しさん:2010/01/28(木) 18:52:44
return 0とかreturn 1とかは何か習ったみたいですがboolとかどこにもないんですよね
294デフォルトの名無しさん:2010/01/28(木) 19:14:32
>>292
#include <iostream>
using namespace std;
bool even(int sc){
return sc%2==0;
}
int main(){
int num;
cout << ">";
cin >> num;
cout << boolalpha << even(num) << endl;
return 0;
}

習っていようがいまいが、true/falseで返せってのはboolを使えと言う事だから使うしかない。
295デフォルトの名無しさん:2010/01/28(木) 19:55:20
1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10458.txt
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限:2010年1月29日16:00まで
[5] その他の制限: 特にありません
よろしくお願いします。
296デフォルトの名無しさん:2010/01/28(木) 19:57:42
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
10個の要素を持つ動的な整数配列を作るプログラムを作成しなさい。
動的な配列へのポインタを整数ポインタに代入しなさい。
次に、ポインタ算術または配列の添字を使って、1から10までの値を配列を構成する整数に代入しなさい。
最後に、代入した値を表示し、メモリを解放しなさい。
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限:2010年1月29日16:00まで
[5] その他の制限: 特にありません
よろしくお願いします。
297デフォルトの名無しさん:2010/01/28(木) 20:01:53
>>294
三行目に書いたところは、scじゃなくてnumでした。すみません。boolalphaってなんですか?
298デフォルトの名無しさん:2010/01/28(木) 20:04:45
>>296
#include <iostream>
int main() {
int *p = new int[10]; // 動的な配列へのポインタを整数ポインタに代入
for (int i = 0; i < 10; i++) {
p[i] = 1 + i; // ポインタ算術または配列の添字を使って、1から10までの値を配列を構成する整数に代入
}
for (int i = 0; i < 10; i++) {
std::cout << p[i] << std::endl; // 代入した値を表示し
}
delete p; // メモリを解放
return 0;
}
299デフォルトの名無しさん:2010/01/28(木) 20:28:30
[1] 授業単元:コンピュータリテラシー
[2] 問題文(含コード&リンク):
あるファイルの名簿を呼びだし、名前もしくは名字で検索しその結果を新しいファイルに保存する。あるファイルの名簿は特に決められていない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10456.txt
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:BCC Developer Borland C++ 5.5.1
[3.3] 言語:C++
[4] 期限:2010年1月29日12:00まで]
[5] その他の制限: 上記のプログラミングの他に fp while float else puts gets
strlen strcpy strcat  以外は使用しないでください。授業で習っていないので…
よろしくおねがいしまつ。
PC規制で携帯からですみません…
300デフォルトの名無しさん:2010/01/28(木) 20:38:42
301デフォルトの名無しさん:2010/01/28(木) 20:40:23
>>193
今更なんですが、『厳密解』って所に『double exact=63』ってあるんですが、これを計算するプログラムを作るんじゃないんですか?これをプログラムに書いてもいいんですかね?
302301:2010/01/28(木) 20:42:52
でも
//厳密解 の部分は出力される結果は同じですね。入れるとどう違うんですか
303298:2010/01/28(木) 20:43:48
て、訂正! >>296さん気をつけて。

×delete p; // メモリを解放
○delete[] p; // メモリを解放
304デフォルトの名無しさん:2010/01/28(木) 20:44:22
>>301
大丈夫?中学校からやり直す?
305デフォルトの名無しさん:2010/01/28(木) 20:52:41
>>304
306デフォルトの名無しさん:2010/01/28(木) 20:56:54
ごめんなさい。納得しました
307デフォルトの名無しさん:2010/01/28(木) 20:57:01
[1] Cプログラミング入門:
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10460.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc(すいませんバージョンがわかりません)
 [3.3] 言語:C
[4] 期限: 2010年1月31日23:59まで
[5] その他の制限: 特にないです。

お願いします。
308デフォルトの名無しさん:2010/01/28(木) 21:10:31
>>299
> fp while float else puts gets
>strlen strcpy strcat  以外は使用しないでください。
その条件じゃオレには無理。

//(前略)
fin=fopen(filename1,"r");//fout=fopen(filename1,"r");
fout=fopen("kojin.txt","w");//fin=fopen("kojin.txt","w");

for(i=0;i<100;i++)
if(fscanf(fin,"%s%s%s%s",&date[i].myouji,&date[i].name,&date[i].jusho,&date[i].denwa)==EOF)break;

fclose(fin);//fclose(fout);
printf("名前もしくは名字=");
scanf("%s",&ss);
for(i=1; i<=5; i++){
if(strcmp(ss,date[i].myouji)==0){
//printf("%s %s %d %d\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
fprintf(fout,"%s %s %d %d\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
k=k+1;
}

if(strcmp(ss,date[i].name)==0){
//printf("%s %s %s %s\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
fprintf(fout,"%s %s %s %s\n",date[i].myouji,date[i].name,date[i].jusho,date[i].denwa);
k=k+1;
}
}
fclose(fout);//fclose(fin);
}
309デフォルトの名無しさん:2010/01/28(木) 21:21:00
[1] C言語プログラミング演習(大学任意科目)
[2] コマンドラインで指定された各テキストファイルに対して個別に以下の処理を行うCプログラムを作成
☆テキストファイルを通読し、各行のインデント深度の最大値を求める(それをNとおく)
☆テキストファイルの先頭から再度読み出し、それぞれの行についてインデント深度がnなら
ば、インデント深度をN-nに変更したものを標準出力する。
☆新しいテキストファイルのNが判明した時点で、その改行とファイル名、改行を標準出力する。
ここでインデント深度とは、行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合
深度=nとする。
[3]
[3-1] Windows XP Professional Edition
[3-2] Visual-C++ 6.0 SP6
[3-3] C言語
[4] 2/1迄
[5] stdio.hを使用可 (他は暗黙的にNG)
310309:2010/01/28(木) 21:24:53
すみません。転記ミスです
×
☆新しいテキストファイルのNが判明した時点で、その改行とファイル名、改行を標準出力する。
ここでインデント深度とは、行頭からタブ、空白以外の文字が現れるまでがn回(n>=0)現れた場合
深度=nとする。


☆新しいテキストファイルのNが判明した時点で、改行とそのファイル名、改行を標準出力する。
ここでインデント深度とは、行頭からタブ、空白以外の文字が現れるまでタブがn回(n>=0)現れた場合
深度=nとする。
311デフォルトの名無しさん:2010/01/28(木) 21:32:45
>>308
わざわざご返答ありがとうございます。そうですか…無茶振りすいません。
一応引き続き、>>299お答え出来る方いらっしゃいましたら厚かましいですが宜しくお願い致します…
312デフォルトの名無しさん:2010/01/28(木) 21:40:54
>>310
スペースがいくら続こうともタブが一つも無ければ深度=0ですか?

313デフォルトの名無しさん:2010/01/28(木) 21:50:33
>>311
freopenもダメなんでしょ?
314デフォルトの名無しさん:2010/01/28(木) 22:02:09
>>313
すみません。習ってないのでわからないです…
315デフォルトの名無しさん:2010/01/28(木) 22:03:34
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10461.txt[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual studio 2003
 [3.3] 言語:C
[4] 期限:2010年2月2日正午まで
[5] その他の制限: 特にありません

よろしくお願いします。
316デフォルトの名無しさん:2010/01/28(木) 22:04:06
>>307
ttp://codepad.org/c7Hr0Iqm

ヒントがひどいよ(´;ω;`)
一応ヒントに沿う形で書いたけどいろいろ酷い…。
こちらの環境では動いてるけど、そちらの環境で動くかどうか不明。
codepadでOutput: 1 Segmentation faultとか出ちゃってるから。

317デフォルトの名無しさん:2010/01/28(木) 22:06:10
>>315
問題文URLでミスしました。再投稿します。

[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10461.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual studio 2003
 [3.3] 言語:C
[4] 期限:2010年2月2日正午まで
[5] その他の制限: 特にありません

今度こそ、よろしくお願いします。
318316:2010/01/28(木) 22:08:10
あ、Resultsの中の
for (i = 0; i < N; i++) printf("%d:%d\n", i, COM[i]);
for (i = 0; i < n; i++) printf("%d:%d\n", i, MAN[i]);
printf("count = %d\n", count);
この三行はデバッグ用なので不要です。消しておいてください。
319デフォルトの名無しさん:2010/01/28(木) 22:26:00
>>311
その条件で問題を解くのは不可能だから、
あきらめるか、条件を見直すしかないね。
320デフォルトの名無しさん:2010/01/28(木) 22:39:27
>311
あ、コマンドラインパラメタとパイプ・リダイレクトを使えばいけるな。

type 入力ファイル | 宿題.EXE 検索語句 > 出力ファイル

こんな起動方法はあり?
321デフォルトの名無しさん:2010/01/28(木) 22:43:19
322デフォルトの名無しさん:2010/01/28(木) 22:44:06
>>316 >>318
どうもありがとうございます。一人ではどうにもなりませんでした。
323デフォルトの名無しさん:2010/01/28(木) 22:49:08
>>321
ありがとうございます!
なんとかのりきれそうですm(_ _)m
324デフォルトの名無しさん:2010/01/28(木) 22:52:05
>>320
あの…
名簿の人数が大体5人と考えてみても無理でしょうか?
その中から一人検索するので…
条件が習ってる範囲なので変えることができないのですが。
325デフォルトの名無しさん:2010/01/28(木) 23:03:15
>324
データ数は関係ない。
その条件だとファイルの読み書きができない。
使用可能関数に記述もれは無いのか?
fで始まる名前の関数を習って無いのか?
326デフォルトの名無しさん:2010/01/28(木) 23:07:18
>>299
> fp while float else puts gets
>strlen strcpy strcat 以外は使用しないでください。
これだけだと、ファイルに入出力できない。

>>320 タソが言ってる方法もあるが・・・

> 名簿の人数が大体5人と考えてみても無理でしょうか?
人数は関係ないかと。
というか、名簿のフォーマットは決められていないですか?

ファイルの入出力関数について何も習ってないならば、
この問題は解けないと思います。

とりあえず、講義資料とかノートとか読み返して、
fgetsとかfputsとかを習っていないか確認してください。
327デフォルトの名無しさん:2010/01/28(木) 23:15:56
>>324
>上記のプログラミングの他に fp while float else puts gets
>strlen strcpy strcat  以外は使用しないでください。授業で習っていないので…
それ、あなたが勝手に付けた条件だよね?
上記に記載されていない
fopen,fclose,scanf,printf,struct等使ってるけど
それはいいの?
fopenやfcloseは使ってるのに
fprintf,fgets,fputs等のファイル入出力関数は使っちゃダメなの?


・問題文は、出題されたまま全文を書いてください。
328デフォルトの名無しさん:2010/01/28(木) 23:16:59
翻弄された回答者が(´・ω・)カワイソス
329デフォルトの名無しさん:2010/01/28(木) 23:17:22
>>320
>>326
すみません!!見直したところfscanf、fprintf、fputsとfgetsも使ってました。
不注意でご迷惑お掛けしました…

330デフォルトの名無しさん:2010/01/28(木) 23:18:53
>>329
なら308でいいよね?
331デフォルトの名無しさん:2010/01/28(木) 23:29:58
>>330
それがEOFとbreakがつかえないもので…すみません。
332デフォルトの名無しさん:2010/01/28(木) 23:45:17
連投すみません。これ以上書くと私物化も甚だしいので控えます。
頂いたヒントで頑張ります。情報不足でご迷惑お掛けしました。
本当にありがとうございました。
333デフォルトの名無しさん:2010/01/29(金) 04:07:06
下痢便飲みたいのかそうか
334デフォルトの名無しさん:2010/01/29(金) 16:23:54
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10465.txt
[3]環境
 [3.1] OS:WindouwsXP
 [3.2] コンパイラ名とバージョン:Microsoft VisualC++2008 Express Edition
 [3.3] 言語:C
[4] 期限: (2010年1月31日17:00まで
[5] その他の制限:特になし

ファイルの入出力について理解したいので、
すみませんが、よろしくお願いします。
335デフォルトの名無しさん:2010/01/29(金) 17:43:11
>>334
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
FILE *fp,*fin;
char s[256]="gomibako";
char fname[256], buff[256];
long pos;
printf("出力するファイル名を入力せよ。\n");
fgets(fname,256,stdin); //スペース入りファイル名なので
fname[strlen(fname)-1]='\0'; //\n → \0
strcat(fname, ".txt");
fp = fopen(fname, "a"); fin = fopen("word.txt","r");//fpは"a"追記モード
if ((fp == NULL)||(fin == NULL)) {
printf("ファイルオープン失敗。\n");
exit(EXIT_FAILURE);
}
fseek(fp,0,SEEK_END); //ファイル名出力は最初の1回目のみのようなので
pos=ftell(fp);
if(pos==0)
fprintf(fp,"%s\n",fname);
while(fscanf(fin,"%s",buff)!=EOF)
if(strcmp(buff,s)!=0)
fprintf(fp,"%s\n",buff);
fclose(fin);
fclose(fp);
printf("読み込み完了/書き込み完了。\n\n");
return 0;
}
336デフォルトの名無しさん:2010/01/29(金) 20:20:50
[1] 授業単元: 情報処理B
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10463.txt
[3] 環境
 [3.1] OS: Windows vista
 [3.2] Cygwin
 [3.3] 言語: C
[4] 期限:2月9日まで
[5] その他の制限: とりあえずstrcpyは習っています。

課題5以外はプログラム中の省略を補っていただきたいです。多いですがよろしくお願い致します。
337200:2010/01/29(金) 22:56:13
>>200ですがおかげさまでプログラムを完成させられました。
do{
}while(next_permutation(intary.begin(), intary.end()));
を使いました。

ところで>>200ではn!もしくはn!×n!の組み合わせを計算することになりますが
nが10だとn!×n!は1.31681894 × 10^13もの組み合わせになります。
この辺をうまいことごまかす方法ってないものでしょうか。
厳密な解でなくともそこそこの解を短時間で計算できる、みたいな・・・。
338デフォルトの名無しさん:2010/01/29(金) 23:26:09
>>335さん。
詳しい解説助かります。本当にありがとうございました。
339デフォルトの名無しさん:2010/01/30(土) 01:16:49
>>337
「B組の隣にA組を並ばせる」「身長差を最小にする」
の2つを同時に満たす解があるとは限らないので、よくあるのは重みWを利用して
  点数=(1-W)×(Bの隣にAがいるか?)+W×(身長差が最小か?)
で並びを評価する。2つの条件のどちらを重視するかでWの値を調節する。
あとは色々とアルゴリズムあると思うけど、ランダム山登り探索でもすればいいんじゃないかね
 @今の並びの点数を計算
 Aランダムに2つ選んで交換してみる
 B交換したあとの点数を計算
 C点数が高くなっていたら交換を採用、低くなっていたら元に戻す
を繰り返していって、何回か連続で失敗したら終了。
340デフォルトの名無しさん:2010/01/30(土) 03:04:51
341デフォルトの名無しさん:2010/01/30(土) 09:16:33
>>339
これは組み合わせ最適化ってカテゴリになるんですかね?
う〜ん、なかなか手の込んだことしないといけないっぽいなぁ。
342デフォルトの名無しさん:2010/01/30(土) 11:14:15
>>337

計算途中で、過去の最小を超えたら中止したらいいんじゃね?
少しはラクになるはずw
343デフォルトの名無しさん:2010/01/30(土) 11:19:52
身長順にソートして、
隣の組の子と手を繋がせて、
A組の子を元の順に並べる。

これじゃダメなの?
344342:2010/01/30(土) 11:33:03
あ、中止つうのは、端折って次へ、という意味。
345デフォルトの名無しさん:2010/01/30(土) 12:09:33
>>341
宿題のレベル超えるから最適化アルゴリズムでも調べてくれ
>>342
それをやったとしても計算量のオーダーには寄与しないよ
テクニックとしては重要だが。
>>343
そのやり方だと「AとBが隣り合う」という条件を完全に満たして、
「身長差が小さい」についてはそこそこ、という解が得られる。
そういう解が欲しいときにはその手の方法がベストだと思う。
>>200の問題文を見る限り、その解釈でいいと思う。
346デフォルトの名無しさん:2010/01/30(土) 13:21:56
Microsoft社 Visual Studio C++のソフトウェアを用いて
チャットアプリケーションを作れと言われたのですが、
当方C言語系がとても苦手で困っています;;

システムの仕様は
・1対1の環境でのみ動作。
・サーバ側はポート番号を指定して、クライアントからの接続を待つ。
・クライアント側はサーバのIPアドレスとポート番号を指定して、サーバに接続する。
・この時の通信はTCPで行う。
・クライアントが通信をやめたい場合は"endc"
・サーバ側がやめたい場合は"ends"と入力。
・WinSockを使用してWindowsのコンソールプログラムとして基本的な簡易なチャット

以上の条件でプログラミングしていただけると幸いです。
よろしくお願いします m__)m
347デフォルトの名無しさん:2010/01/30(土) 13:38:34
348200:2010/01/30(土) 14:21:39
身長順にソートできれば確かに楽になりそうですね。
ただ>>200の問題はもっと複雑なものの一部分を抜き出したもので、
本当は身長順というよりも2次元平面上で距離が近いもの同士って感じなんです。
そうなると・・・ちょっと安易にはソートできないかな?

なんにしても宿題としては提出してしまっているので自分が気になってるだけです。
最適化アルゴリズムでいろいろ見てみようと思います。
349デフォルトの名無しさん:2010/01/30(土) 14:45:58
Cマガのプログラミング研究会を思い出した。
350デフォルトの名無しさん:2010/01/30(土) 15:26:06
>>345
343じゃないけど、>>343のやり方で、
身長差が最小とならない場合って、どんな場合?
計算してみたら、常に最小になりそうなんだが。

それとも「そこそこ」ってのは
「最小にならない場合がある」って意味ではない?
351デフォルトの名無しさん:2010/01/30(土) 15:29:09
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク):
□1□2□3□4□5□6□7□8□9
の□に四則の演算子(+,−)や空白を入れて100なるような
小町算の全ての解を求めるプログラムを作成すること

例えば
12 + 3 - 4 + 5 + 67 + 8 + 9 = 100
123 - 45 - 67 + 89 = 100
[3] 環境
 [3.1] OS: Windows
 [3.2] VC3.5SP1
 [3.3] 言語: C++
[4] 期限: 本日4時まで
[5] その他の制限: 特にないです

かなり切羽詰まってるのでお願いします…
352350:2010/01/30(土) 15:42:36
と、思ったけど、AとBが隣り合わない場合を考慮すると、
343のやり方では、身長差が最小とならない場合がある、
という意味だったのね。
失礼、読み違えてました。
353デフォルトの名無しさん:2010/01/30(土) 16:14:36
[1] 授業単元:コンピュータグラフィック
[2] 問題文(含コード&リンク):10468.txt
モノクロ画像を読み込み,(319,239) の画素値を 0 とする
画像を関数を使用して読み込み,それを 2 次元配列に格納する関数を作成する.
指定した画素の画素値をセットする.
2 次元配列に格納していた画像を 1 次元配列に再度格納し,関数を使用して画像ファイルとして書き戻す.

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] VC 05
 [3.3] 言語:C
[4] 期限: ([2010年2月1日01:00まで]
[5] その他の:
前スレで24日辺りに回答を頂いた問題なのですが、差し戻されました
自分なりに分かる部分を書き直してみましたが、一向に解決しないので回答をいただけないでしょうか?
354デフォルトの名無しさん:2010/01/30(土) 16:16:35
>>351
31分でコードを作ってもらおうという考えは非常識
355デフォルトの名無しさん:2010/01/30(土) 17:51:17
>>351
前にIPAの試験に出てたので、そのまま作ってみたよ
http://codepad.org/2eIcdrm7
356デフォルトの名無しさん:2010/01/30(土) 18:07:34
[1]情報科学特論 (大学院講義レポート課題)
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10469.txt
[3] OS:Solaris GNU-C-compiler 4.0 C言語
[4] 2/11迄
[5] 面倒なのでよろしく
357デフォルトの名無しさん:2010/01/30(土) 18:28:17
[1] 授業単元:計算機自論
[2] 問題文(含コード&リンク):
LISPはCと同じで関数型言語ではないということを200文字以内で表現してください
[3] 環境
 [3.1] OS: すべて
 [3.2] コンパイラ名とバージョン: すべて
 [3.3] 言語: 日本語
[4] 期限: 無期限
358デフォルトの名無しさん:2010/01/30(土) 19:15:44
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10471.txt
[3] 環境
 [3.1] OS:WindouwsXP
 [3.2] コンパイラ名とバージョン:VisualC++2008 Express Edition
 [3.3] 言語:C
[4] 期限:2010年2月2日15:00まで
[5] その他の制限:特になし

なんとか途中まで頑張りましたが、今の自分ではこれが限界でした・・・。
問題文リンク先の≪問題と条件≫の全てを満たすソースを、お教え下さい。
お手数かけますが、よろしくお願いします。
359デフォルトの名無しさん:2010/01/30(土) 19:21:19
>>351
なんか変数いっぱい散らかしてもっちゃりしてるけど。
処理もなんかぐねぐねぐねぐねとしてるし。駄目だな。
ttp://codepad.org/E2NpBjB2

>>355さんのを見て勉強しなおしてきます。
360デフォルトの名無しさん:2010/01/30(土) 19:44:31
>>358
#include <stdio.h>
int main(int argc,char *argv[]){
FILE *fp1=NULL,*fp2=NULL;
char buf;
int i=1;
int result=0;
if(argc!=3){
printf("引数が不正\n");
result=-1;
goto EXIT;
}
fp1 = fopen(argv[1],"rb");
fp2 = fopen(argv[2],"w");
if(fp1==NULL || fp2==NULL){
printf("file open error\n");
result=-1;
goto EXIT;
}
while(fread(&buf,1,1,fp1)){
fprintf(fp2,"%02X ",buf);
if(i%16==0)
fprintf(fp2,"\n");
i++;
}
EXIT:
if(fp1) fclose(fp1);
if(fp2) fclose(fp2);
return result;
}
361デフォルトの名無しさん:2010/01/30(土) 20:26:12
360さん。回答ありがとうございます。
早速、このソースでコンパイルしたところ問題なくビルドは出来ました。
しかし、その後の「デバックなし」で実行してみましたが、
「引数が不正」と表示されてしまい、上手く出来ません。
これは何故でしょうか?しょぼい質問ですいません・・・。
362デフォルトの名無しさん:2010/01/30(土) 20:38:24
>>361
≪問題と条件≫
第1引数に指定したファイルからバイナリーモードで1バイトずつファイルを読み込み、
ファイルの内容を16進数で示したものを第2引数に指定したファイルに書き込むプログラムを作成せよ。ただし、16バイトごとに改行を入れること。
(実行)
>free1.exe test.txt test2.txt

でしょ?
363デフォルトの名無しさん:2010/01/30(土) 20:41:50
>>361
横からだけど、
今の場合引数っていうのは、プログラム実行時にプログラム名の後に続けて書くもの

>free1.exe test.txt test2.txt
この場合はtest.txtが第1引数で、test2.txtが第2引数

例えばここを
>free1.exe hoge.txt fuga.txt
にしても、ちゃんとhoge.txtから読み込んでfuta.txtに出力するような
プログラムを作れっていうのが、この課題なんじゃないかな
364デフォルトの名無しさん:2010/01/30(土) 20:45:52
>>362
はい、そうです。
365デフォルトの名無しさん:2010/01/30(土) 20:51:31
>>363
はい、test.txtとhoge.txtは、あらかじめ作成している状態です。
366デフォルトの名無しさん:2010/01/30(土) 20:57:08
分かってねー
367363:2010/01/30(土) 20:59:19
>>365
だったら実行時に指定しないと。
VC++でどうやって指定するか分かんないけど
368デフォルトの名無しさん:2010/01/30(土) 21:11:35
>>365
コマンドライン引数というものが分かってないので
ttp://www9.plala.or.jp/sgwr-t/c/sec11-4.html
ttp://www.geocities.jp/ky_webid/c/045.html
この辺読みましょう
369デフォルトの名無しさん:2010/01/30(土) 22:28:36
[1] 授業単元: プログラム演習U
[2] 問題文(含コード&リンク):
3次元空間において線分が平面を通過しているか判定するプログラムを作りなさい
(線分の座標(x1,y1,z1) (x2,y2,z2)と平面の四隅の座標は入力する)
平面を通過していても平面の四隅の中に交点がない場合は通過していないものとする
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語: C
[4] 期限:2010/2/8

お願いします
370デフォルトの名無しさん:2010/01/30(土) 22:43:05
>>358です。
稚拙ですが、質問をURLにまとめたので、よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10472.txt
371デフォルトの名無しさん:2010/01/30(土) 22:46:23
>>370
>>368を読め。
372デフォルトの名無しさん:2010/01/30(土) 22:58:55
>>370
Cドライブ直下にfreeフォルダを作成します。
C:\free です。

>>360のソースを free1.c などとしコンパイルして free1.exe を作成します。
作成された free1.exe を C:\free フォルダ内にコピーします
C:\free\free1.exe です。

作成済みのデータ test.txt も同様に C:\free フォルダ内にコピーします
C:\free\test.txt です。

C:\free フォルダの中には free1.exe test.txt 2つのファイルがあります。

コマンドプロンプトを起動します。
スタート>ファイル名を指定して実行>cmd.exe OKボタン

コマンドプロンプトが立ち上がりました。
C:\............... >_ (_は点滅状態)
となります。

カレントディレクトリを C:\free に移動します。
C:\............... >cd c:\free
です。

C:\free>_ (_は点滅状態)
になりました。

この状態で
C:\free>free1.exe test.txt test2.txt
を実行します。

C:\freeフォルダの中に test2.txt が作成されました。おしまい。
373デフォルトの名無しさん:2010/01/30(土) 23:03:50
>>340

ありがとうございます!助かりました!

課題4、5については引き続きどなたかよろしくお願い致します。。
374デフォルトの名無しさん:2010/01/30(土) 23:30:33
>>353
ファイルの入出力はファイルポインタを用いたものに変更してます。
(インデントが変な所はタブをスペース4つに換えて下さい)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10473.txt
375デフォルトの名無しさん:2010/01/31(日) 00:04:17
372さん。回答ありがとうございます。
アドバイス通りにしてみて、実行したのですが、
「Lhaplus slef extractor」というのが
表示されます。展開先のフォルダはC:\free を選べるのですが、
展開されるファイルが何故かfree1.cしか選べません・・・。
何度も見直して実行したのですが、結果は一緒です。
これは、なにか他に原因があるのでしょうか?
376デフォルトの名無しさん:2010/01/31(日) 01:53:57
>>356
には手だすな。
>>357>>369
やんないほうがいい
377デフォルトの名無しさん:2010/01/31(日) 02:16:46
>>375
それ以上の質問はスレ違いどころか板違い。
378デフォルトの名無しさん:2010/01/31(日) 02:35:35
乱数は言語学習レベルの人がうかつに手を出すべきものじゃない。
補助的に使うのならともかく
高度に依存するプログラムの生成には高度な専門知識が必要で
専門家”集団”レベルで扱うべきもの。
みだりに使う癖だけは付けないほうが良い

以上自戒を込めて
379378:2010/01/31(日) 02:37:05
誤爆につき謝罪
380デフォルトの名無しさん:2010/01/31(日) 07:42:21
381デフォルトの名無しさん:2010/01/31(日) 07:47:50
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク): 入出力とデータファイルへの保存とその間の処理あるプログラムを作成する
               http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10475.txt 
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限:2010年2月4日まで
[5] その他の制限:特にありません

自分では手のつけようがなく、非常に困っています。
どなたかよろしくお願いします。
382デフォルトの名無しさん:2010/01/31(日) 14:33:52
漠然としすぎ
383357:2010/01/31(日) 15:40:24
ほとほと困っています。どなたか回答お願いします。
384 ◆QZaw55cn4c :2010/01/31(日) 15:41:15
[1] 自主課題:前スレ http://pc12.2ch.net/test/read.cgi/tech/1260532772/776 関連
[2] パイプ機能(prog1|prog2|prog3) を有するシェルを作成せよ。
[3.1] WindowsXP/cygwin または Linux(Vine linux 4.2)
[3.2] gcc3
[3.3] C
[4] 特になし

前スレ http://pc12.2ch.net/test/read.cgi/tech/1260532772/776 を解こうとして挫折しました。
なにとぞ、お手本のプログラムを示していただきたく、お願いいたします。

私のほうでは、
まず、pipe() -> fork() ->read()/write()またはgetchar()/printf() の流れでチャイルドプロセスの鎖の間をパイプでつなごうとしましたがうまくいきません。

プログラムは 
http://codepad.org/lkCrVtuo です。

#define LOWLEVEL ではパイプが頭からお尻までつながって、 read()/write() 低水準入出力てデータが渡り、最後にプロンプトが表示されます。
ところが、
/* #define LOWLEVEL */ とコメントアウトした場合、FILE stdin, stdout でデータの読み書きを行うのですが、EOF を検出できず
チャイルドプロセスがロックしてしまいます。
ヒントでもかまいませんので、この種のプログラムのやりかたをどうか教えていただきたくよろしくお願いいたします。
385デフォルトの名無しさん:2010/01/31(日) 16:06:44
>>384
> EOF を検出できず
EOFではなく0x0Aを検出したらどうでしょ
386デフォルトの名無しさん:2010/01/31(日) 19:35:06
387デフォルトの名無しさん:2010/01/31(日) 19:43:07

息抜きにって下さい。
自分は分からないっす

お客様に「今後の夏のセールには、必ず連絡してほしい」といわれた時

お客様に「もらいもので気に入らないので他の商品と取り替えて欲しい」といわれた時

販売員の正しい行動を。
388デフォルトの名無しさん:2010/01/31(日) 20:49:08
上司に聞け
389デフォルトの名無しさん:2010/01/31(日) 22:26:49
390384:2010/01/31(日) 23:00:10
>>389
提示されたコードを読ませていただき、私のコードがうまくいかなかった原因がわかりました。
int fd[2];

pipe(fd);
dup2(fd[0], 0);
close(fd[0]);

のあとに、

close(fd[1]);

が必要でした。
その他、いろいろと示唆にとむコードを掲示していただき、ありがとうございました。
391デフォルトの名無しさん:2010/02/01(月) 00:47:15
すいませんが規制されてるので携帯から簡単に
問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10482.txt
環境:XP、gcc、C言語
期限:今日の午前中
その他制限:なし

構造体とfwrite関数とコマンドライン引数等を使うらしいのですがよく分かりません
よろしくおねがいします
392デフォルトの名無しさん:2010/02/01(月) 00:50:31
>>391
追加ですいません
バイナリファイルです
393デフォルトの名無しさん:2010/02/01(月) 01:44:49
>>391
名前〜年齢間のタブ数が一定ではないけどそのルールはどうなってるの?
394デフォルトの名無しさん:2010/02/01(月) 05:48:48
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 住所録の機能を実現するプログラムを作成せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2月3日 17時まで
[5] その他の制限: 特になし
395デフォルトの名無しさん:2010/02/01(月) 08:23:12
>>384,390
EOFの検出はfeof()でできるよ。
396デフォルトの名無しさん:2010/02/01(月) 09:15:16
>>393
タブ数は共通して一回です
397デフォルトの名無しさん:2010/02/01(月) 10:27:05
>>391
http://codepad.org/YWsKOWtO

これじゃダメ?
398デフォルトの名無しさん:2010/02/01(月) 10:28:21
>>391
連投スマソ。
構造体も,fwrite() も使ってなかったorz
忘れて下さい。
399デフォルトの名無しさん:2010/02/01(月) 10:32:02
[1] 授業単元: C++実習
[2] 問題文(含コード&リンク):

●自由にクラスを設計する
設計図を提出 : クラスのデータメンバ、メンバ関数、仕様、
使い方等を詳しく説明したドキュメント 形式自由
(ただし電子化されたものに限る)


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VisualStudio2008
 [3.3] 言語: C++
[4] 期限: 2010年2月7日まで

プログラム作成ではないのですが、よろしければよろしくお願いします。
400デフォルトの名無しさん:2010/02/01(月) 11:11:23
設計図て。図まで書けと申すか。
401デフォルトの名無しさん:2010/02/01(月) 11:32:51
規制中なので携帯から失礼します
[1] 授業単元:プログラミングI
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10477.txt
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C++
[4] 期限:2010年02月5日まで
[5] その他の制限:特になし

自分では全然作れませんでした・・・
よろしくお願いします
402デフォルトの名無しさん:2010/02/01(月) 12:47:47
配列の使い方がイヤすぎるw
403デフォルトの名無しさん:2010/02/01(月) 12:48:02
schaffleって英語じゃないよな?何語?
404デフォルトの名無しさん:2010/02/01(月) 12:51:07
シャッフルしてランダムな結果を返すならシャッフル関数は2つもいらない気がする
405デフォルトの名無しさん:2010/02/01(月) 12:55:25
schaffle1(int n, int a[]) {
while(n > 1) {
int i = rand() / (RAND_MAX + 1.0) * n + 1;
int temp = a[n];
a[n--] = a[i];
a[i] = temp;
}}

schaffle2(int n, int a[]) {
int i, j, temp;
for(i=1; i<=n; i++) {
j = rand() / (RAND_MAX + 1.0) * i + 1;
temp = a[j];
a[j] = a[i];
a[i] = temp;
}}
406デフォルトの名無しさん:2010/02/01(月) 14:48:08
[1] 授業単元:プログラミング応用演習
[2] 問題文(含コード&リンク): ttp://mikilab.doshisha.ac.jp/dia/research/report/2008/1118/002/report20081118002.html
[3] 環境
 [3.1] OS: Windows
 [3.2] )
 [3.3] 言語:C++
[4] 期限: 2010/2/2or3
[5] その他の制限: ライブラリは使わず。問題文のリンク先のプログラム(DIRECT)を組む。

よろしくお願いします。できれば解説を付けてくださると助かります。
407390:2010/02/01(月) 18:25:32
>>395
C 言語というより UNIX/POSIX システムコールの問題でした。
パイプを pipe() で作成した後適切に処理しなければ、パイプが閉じたことにならず、EOF が検出できずに getchar()やread() がブロックされたのでした。
これは fcntl() で NONBLOCK 属性をつけてもうまくいきませんでした。

http://codepad.org/WiYTFttG
408395:2010/02/01(月) 19:13:22
>>407
オレの言いたかったのはget_line()の方。
これじゃコマンドを入力するときのEOFを検出できないと言いたかったの。
409デフォルトの名無しさん:2010/02/01(月) 19:26:11
[1] C言語演習
[2]
int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
が与えられている。
値x[0]*y[0]+2*x[1]*y[1]+3*x[2]*y[2]+4*x[3]*y[3]+5*x[4]*y[4]+6*x[5]*y[5]
が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
[3] Windows XP/Borland C++ 5.0/C言語
[4] 2/18迄
[5] 特に無し
410デフォルトの名無しさん:2010/02/01(月) 20:27:14
>>408
拙作のgetline() のほうでしたら、fgets() が NULL を返すのをみて、一行入力の終わりがきたことを検知できます。特に問題はありません。
411デフォルトの名無しさん:2010/02/01(月) 20:36:37
>>410
EOF入力してみた?
412デフォルトの名無しさん:2010/02/01(月) 20:37:07
>>409
6以降はどうすんの?
413410:2010/02/01(月) 20:41:12
>>411
わざわざ Ctrl-Dを入力しなくとも、一行の終わりは検知できていますが、何か?
414409:2010/02/01(月) 20:43:57
すみません。誤りがありましたので訂正させて下さい。
[1] C言語演習
[2]
int x[10]={-1,2,-3,4,-5,6,-7,8,-9,10}
int y[10]={-5,-4,-3,-2,-1,1,2,3,4,5}
が与えられている。
値x[0]*y[0] - 2*x[1]*y[1]+3*x[2]*y[2]- 4*x[3]*y[3]+5*x[4]*y[4]-6*x[5]*y[5]
+7*x[6]*y[6]-8*x[7}*y[7]+9*x[8]}*y[8]-10*x[9]*x[9]
が最大/最小になるようにx,yの各要素を並べ替えたものを出力するプログラム
最大/最小になる時のx[],y[]とその値を出力すること

[3] Windows XP/Borland C++ 5.0/C言語
[4] 2/18迄
[5] 特に無し
415デフォルトの名無しさん:2010/02/01(月) 20:51:49
>>413
入力してみ。
416デフォルトの名無しさん:2010/02/01(月) 21:05:14
>>415
特になにもおこりません。というか fgets() で一行入力できているのですが。
どんな振る舞いが発生して、どうおかしいのか教えていただけないでしょうか?
417デフォルトの名無しさん:2010/02/01(月) 21:21:57
>>416
> >
cannot found
がずっとでたけど。
EOFになったら綺麗に終了したほうがいいよ。
418デフォルトの名無しさん:2010/02/01(月) 21:34:01
[1] C言語プログラミング演習(大学専門課程選択教科期末課題)
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10483.txt
[3]
[3-1] Windows Vista
[3-2] Visual C++ 2005
[3-3] C/C++どちらでも可(なるべくC言語)
[4] 2/11迄
[5]SQLがイマイチ理解できないので、指針だけでも
よろしくお願いします
419デフォルトの名無しさん:2010/02/01(月) 21:36:53
>>417
なるほど、bash でも Ctrl-D できれいに終了しますね。
これは改良の余地がありました。アドバイスありがとうございます。
コード中のgetline() (とmain())を書き直しました。
http://codepad.org/5NsN385B
420デフォルトの名無しさん:2010/02/02(火) 00:56:53
[1] 授業単元:プログラミング実践
[2] 問題文
アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして90°回転した結果を出力せよ。
(図)affin.txt
00000
00000
11111
00000
00000

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名: gcc
 [3.3] 言語:C++
[4] 期限:2010年2月4日まで
[5] その他の制限:特にありません

色々試しましたが、うまくいきませんでした。
よろしくお願いします。
421409:2010/02/02(火) 00:59:25
すみません。
>>414の問題なんですがこちらの写し間違いみたいですので
結構です。取り敢えず今回はお願いを取り消させてください。
もういちど確かめてお願いするかもしれません。
422418:2010/02/02(火) 14:40:57
>>418
の宿題のほう一部SQLが間違ったようですので
修正しました。まだ間違いがあるかもしれませんが。
注意事項も入れ忘れてましたので、いれました.
改めて依頼させて頂きます。

[1] C言語プログラミング演習(大学専門課程選択教科期末課題)
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10484.txt
[3]
[3-1] Windows Vista
[3-2] Visual C++ 2005
[3-3] C/C++どちらでも可(なるべくC言語)
[4] 2/11迄
[5]SQLがイマイチ理解できてないので、指針だけでも
よろしくお願いします
423デフォルトの名無しさん:2010/02/02(火) 15:56:42
[1] 授業単元:DirectX研究
[2] 問題文(含コード&リンク):
サイコロを転がして目を決める。
 ・テーブルとサイコロを作成する。
 ・キー操作でサイコロを投げ下ろすように振る。
 ・落下してきて,1つの目を上にして止まる。
 ・何度でも遊べる

 ◎テーブルにサイコロの影がある
 ◎回転しながら落下してくる
 ◎自由な方向から見ることができる
 ◎テーブルの上でサイコロは跳ね,転がる。
 ◎サイコロとして正しい

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: 2月10日まで
[5] よろしくお願いいたします。
424デフォルトの名無しさん:2010/02/02(火) 16:51:53
>>420
どのように試したの?
>>421
素朴だが10!x10!の組み合わせ最適化問題
この手には一般論は無いだろから、奇麗なCプロ
グラム一つに纏めるという発想が頭にあると困難かと.
(いろいろ「補助手段」を開発しているうちに
別の手段で偶然、解けてしまって目的自体が大
きく喪失してしまう危険性がこの手の問題に
はつきまとう)
てか宿題としてC言語限定というのは不適当
>>422
SQLをわかる奴は少ないとオモ
425デフォルトの名無しさん:2010/02/02(火) 16:59:09
SQL文はわかるが、プログラムに組み込めといわれると・・・
426デフォルトの名無しさん:2010/02/02(火) 17:06:40
>>422
RDBMSには何を使うの?
コネクションを張ってSQL文を投げるのには何のライブラリ使うの?自作するの?
427デフォルトの名無しさん:2010/02/02(火) 17:09:14
SQL文を組み込むんじゃなくて、SQLで書かれた
抽象的な処理仕様に基づいて実装しろってことじゃ?
SQL鯖とかが出てなかった昔は結構この手の奴あった
常識的にこの手の奴ではテーブル配列自体は勝手に
ソート出来なかったり項目を拡張してはならなかったり
とか色々とウルサイし、処理速度向上の為に細かい
最適化が要求されてメンドイんで俺はパス
428デフォルトの名無しさん:2010/02/02(火) 17:15:17
>>427
そういう意味か。それは面倒だ。
429デフォルトの名無しさん:2010/02/02(火) 17:21:16
>>427
問題文の http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10484.txt
前半: 固定項で項目の拡張無しの配列

後半:
 解釈1) 題中のSQL文を与えたとして得られるであろう結果 と 同じ結果が得られるような関数を実装せよ
   (→ 関数実装時 SQL構文を解釈する必要は全く無い。 同じ結果を求めるコードを直接記述してね)

 解釈2) 題中のSQL文を渡して結果が得られるような 関数を実装せよ
   (→ 関数実装時 SQL構文を解釈する必要が出てくる) ((題中に出てこない SQL文に関してはスルーの方向で))

こう読み取れるっぽいけど… …俺 SQL文わからんのでパス
430デフォルトの名無しさん:2010/02/02(火) 17:40:19
>>429
どこの大学か知らんが、宿題として汎用SQLパーサーを
作れって奴出す教師も、それを真に受ける奴もちょっと
って感じ。
てか市販のRDBMSのSQLパーサーの性能は相当に
高くなってきてるけど、ちょっと大きなデータ+複雑なSQLに
なると手動で作ったCPG+CSVデータにパフォーマンスで
大敗することも多い。
酷いSQLだったり酷い構造のテーブルが多いってことも
多いけど
431デフォルトの名無しさん:2010/02/02(火) 17:57:49
>>429
とても動きそうにないコードだけど、これは 解釈1)の方だね。
http://pc12.2ch.net/test/read.cgi/tech/1261443439/569
432429:2010/02/02(火) 18:09:32
>>430
俺はそこらへんの事情を全く知らないんで勘弁して。
問題文の意図が分からなかったんで >>429 と…
433デフォルトの名無しさん:2010/02/02(火) 19:50:16
あんだけgroup byがネストしてたらやる気失う。
434429:2010/02/03(水) 00:28:45
>>431
とりあえずありがとうございます。
がprologではなくあくまでもCの宿題なので、
参考のみにさせて頂きます。
ちなみにそのスレに私は書き込んでいません。
もし誰かが転記したのをやって頂いてここに貼りなおして
下さったというのであれば結果的に相当無駄なお手数を
おかけしたことになります。
構造体をほぼSQLのまま定義しその構造体の配列にデータ
が詰め込まれた状態でlist関数が呼び出されるという前提で、
SQLが記述しているセレクト処理で得られるレコードを
そのままコンソール出力すれば良いと
同輩が言ってたのですがやっぱり皆様が御指摘の
通りめんどうなコードになるんでしょうか?
(ちなみにSQL自体が何をする処理なのか
今ひとつつかめてません。おわかりの方が
いらしゃいましたら教えて頂けると嬉しいです)
DB板というのがあるそうでそちらのほうでも
聞いてみます。
435デフォルトの名無しさん:2010/02/03(水) 00:29:10
どなたか317を作ってもらえませんか?
私の力では手におえません。。。
 
436418:2010/02/03(水) 00:30:16
レス番号のほう間違えました。
>>418=>>422=>>434でした。
437デフォルトの名無しさん:2010/02/03(水) 00:42:08
配列 int out[3]={1,5,3};
の配列の各要素の大小関係を比べるプログラムをfor文で作りたんですけど
どうすればいいですか?
438デフォルトの名無しさん:2010/02/03(水) 00:42:52
質問は「俺に聞け」スレで
439デフォルトの名無しさん:2010/02/03(水) 00:49:00
>>434
>>431じゃないけどSQLは多少わかる
「テーブルSEISEKIHYOUから、
より人数が多いクラスの5科目平均点
以上の5科目成績の生徒で、より人数が
多いクラスの国語平均点の最高よりは
下の国語成績で、数学が最も成績が
高かった生徒について、その担当教師
と氏名、数学成績、国語成績を
リストする。」
440デフォルトの名無しさん:2010/02/03(水) 00:58:45
420のものです。

ファイル読み込みまではいけたのですが、回転はさっぱりでした。

ご教授ねがいます。
441デフォルトの名無しさん:2010/02/03(水) 01:09:31
>>440
公式を当てがうだけのつまらない問題だね
出来ないのは言語によるものじゃなくて
アフィン変換がどういうものか分かってないだけ。
442デフォルトの名無しさん:2010/02/03(水) 01:13:22
00000
00000
11111
00000
00000
を90度

回転させると

00100
00100
00100
00100
00100

これじゃ駄目?
443デフォルトの名無しさん:2010/02/03(水) 01:14:55
>>435
書こうと思ったけどエラー処理がめんどくさいんだよな
444デフォルトの名無しさん:2010/02/03(水) 17:13:38
>>442

まさにその通りなんですが、それをプログラムでかくことができなかったです・・・
445デフォルトの名無しさん:2010/02/03(水) 18:28:27
自分用のメモ
>>317
446デフォルトの名無しさん:2010/02/03(水) 18:47:37
447デフォルトの名無しさん:2010/02/03(水) 19:25:39
>>420
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10486.c
tp://www.geocities.co.jp/SiliconValley-Bay/4543/Rubic/Mathematics/Mathematics-2.html
448434:2010/02/03(水) 19:33:42
DB板で相談したところすんなりとコードを
書いて頂けました。
もちろん許可をとってないのでお見せする
わけにはいかないのですが合計250行にも
なる立派なコードでした。
449デフォルトの名無しさん:2010/02/03(水) 19:43:01
>>446
ご回答ありがとうございます。
試してみたんですが、コンパイルはうまくいきましたが何も表示されませんでした。
何か打ち込まなくては、いけないのですか?

質問ばっかですいません。。。
450デフォルトの名無しさん:2010/02/03(水) 19:54:22
>>448
「立派なコード」を「すんなり」ですか
451yui ◆zuLLaJzEzk :2010/02/03(水) 20:26:20
[1] 授業単元:情報処理入門
[2] 問題文(含コード&リンク):
rep1.ppmとrep2.ppmの2つの画像を加算するプログラムを作成せよ.
プログラム中で加算したデータは,コントラスト強調を行った上で
PPM画像ファイル(h12r.ppm)として保存するようにすること.
Cのソースファイルh12r.cおよび実行することにより作成
される画像ファイルを提出すること.rep1.ppmとrep2.ppmの
サイズはいずれも横124×縦124画素である.h12r.ppmのサイズも同じとする.

rep1.ppm
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10487.zip
rep2.ppm
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10488.zip


[3] 環境
[3.1] OS: (Windows/Linux/等々)
Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 3.4
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
Cでおねがいします。
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
提出期限2010年2月8日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特にありません。


前回は皆さんに本当にお世話になりました。あらためてお礼を言いたいです。本当にありがとうございました。
今回が最終レポートになるのですがどうか助けていただけないでしょうか?
よろしくお願い致します。
452デフォルトの名無しさん:2010/02/03(水) 21:15:14
>>451
#include <stdio.h>
#define W 124
#define H 124
int main(){
double d,cl = -10.0;
unsigned char data1[H*W*3],data2[H*W*3],data3[H*W*3];
char buff[128];
FILE *fin1,*fin2,*fout;
int i;
if((fin1=fopen("rep1.ppm","rb"))==NULL)goto EXIT;
if((fin2=fopen("rep2.ppm","rb"))==NULL)goto EXIT;
if((fout=fopen("h12r.ppm","wb"))==NULL)goto EXIT;
for(i=0;i<3;i++)fgets(buff,128,fin1);
for(i=0;i<3;i++)fgets(buff,126,fin2);
fread(data1,1,sizeof(data1),fin1);
fread(data2,1,sizeof(data2),fin2);
for(i=0;i<H*W*3;i++){
d=data1[i]+data2[i];
d=d+cl*(d-127.5);
if(d>255)data3[i]=255;
else if(d<0)data3[i]=0;
else data3[i]=(unsigned char)d;
}
fprintf(fout,"P6\n124 124\n255\n");
fwrite(data3,1,H*W*3,fout);
EXIT:
if(fin1)fclose(fin1);
if(fin2)fclose(fin2);
if(fout)fclose(fout);
return 0;
}
453デフォルトの名無しさん:2010/02/03(水) 21:25:30
>>447
ひえーこの場合はこれで正解なのか
偶然だな
454デフォルトの名無しさん:2010/02/03(水) 22:51:55
>>447
ご回答ありがとうございます。

その処理を
00000
00000
11111
00000
00000

でしたいんですが、どうしたらいいですか?
455デフォルトの名無しさん:2010/02/03(水) 23:31:12
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):課題2−2と2−3です。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C
[4] 期限: [2010年02月07日23:59まで]
[5] その他の制限:
よろしくお願いします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10490.zip
456デフォルトの名無しさん:2010/02/03(水) 23:59:33
[1] 授業単元: データ演習
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C言語
[4] 期限: [2010年02月08日20:00まで]
[5] その他の制限:
努力はするも此方も断念 何方か宜しくお願い致す。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10491.zip
457447:2010/02/04(木) 01:19:54
>>454
// 入力
for(i=0; i<MAX; ++i)
  for(j=0; j<MAX; ++j)
    a[i][j] = (i==MAX/2)?1:0;
458デフォルトの名無しさん:2010/02/04(木) 01:28:05
>>457
ありがとうございます。
ちゃんと表示されました。
459デフォルトの名無しさん:2010/02/04(木) 01:35:10
[1] 授業単元:プログラミング実践
[2] 問題文
アフィン変換のプログラムを作成し、下の図の真ん中を座標の中心にして60°回転した結果を出力せよ。
(図)affin.txt
000000000
000010000
000010000
000010000
011111110
000010000
000010000
000010000
000000000

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名: gcc
 [3.3] 言語:C++
[4] 期限:2010年2月5日まで
[5] その他の制限:特にありません

420のものです。
度々申し訳ありませんが、よろしくお願いします。
460デフォルトの名無しさん:2010/02/04(木) 02:03:01
>>459
・問題文は、出題されたまま全文を書いてください。

もしそのまま出題されているとするなら糞問題です
添削スレで晒しちゃいましょう
461デフォルトの名無しさん:2010/02/04(木) 02:29:39
良問自作テキスト:熱心な先生だ
悪問自作テキスト:着服しただろこいつ
462447:2010/02/04(木) 02:45:18
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10492.c
数学なら左回転でいいのでした。
463デフォルトの名無しさん:2010/02/04(木) 03:51:41
>459
アンチエイリアシング
464デフォルトの名無しさん:2010/02/04(木) 05:56:57
>>460
なぜ糞問題と思ったのでしょうか、そこをひとつ。
465デフォルトの名無しさん:2010/02/04(木) 07:29:06
[2] CIP法での1次元の移流計算
[3] 環境
[3.1] OS:Vista
[3.2] コンパイラ名:Microsoft Visual Studio 2008  
[3.3] 言語:C++
自分で以下のプログラムを作ったところ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10493.txt

tの値を増やすにつれてf[n][t]のnの初期のほうの値がなぜかでかい数字が出てしまいます。
自分の計算ではtの値を増やせば、f[n][t]のnの初期のほうの値は0になると思うんですが、一体どこが悪いのか、ご教授をお願いいたします。
466デフォルトの名無しさん:2010/02/04(木) 08:26:07
467デフォルトの名無しさん:2010/02/04(木) 08:40:53
>>466
オレなら
if(x>=-4 && x<=4 && y>=-4 && y<=4)
mat2[i][j] = mat1[4 + x][4 + y];
こうするな
はみ出たらカット
468447:2010/02/04(木) 12:23:47
>>462 間違い sqrt(3)/2 だった。
x = i - MAX/2;
y = j - MAX/2;
m = x/2.0 - y*SQRT3/2;
n = x*SQRT3/2 + y/2.0;
x = m + MAX/2;
y = n + MAX/2;
if(x<0 || x>=MAX) continue;
if(y<0 || y>=MAX) continue;
// 左回転
if(b[x][y]==0)
  b[x][y] = a[i][j];
469デフォルトの名無しさん:2010/02/04(木) 20:21:37
>>462
>>466

ありがとうございました。
手つかずだったので、ほんと助かりました。。
470466:2010/02/05(金) 16:32:53
要素の計算方法が逆だったのかな?と今考えてるけど。
変換先位置から変換元の要素を求めたんだけど、
画像の変換の問題じゃないんだから、逆の方が良かったかな?
471デフォルトの名無しさん:2010/02/05(金) 19:17:12
>>470
90度回転なら、どちらの方法でも、隙間ができない。
60度回転では、・・・

ってことがポイントになる問題だったのでは?
画像かどうかは関係ないでしょ。
472デフォルトの名無しさん:2010/02/06(土) 15:42:11
473デフォルトの名無しさん:2010/02/06(土) 16:15:20
どなたか406お願い出来ないでしょうか?
474っっ:2010/02/06(土) 16:26:33
このプログラミングの前まではうまくいっているのですが、この部分がうまくいきません。助けてくださいm(_ _)m

printf("A/Sの式\n");
for(j=1;j<=12;j++){
a[i][j]/s[j];
printf("%3.1f\n",a[i][j]);
}
475っっ:2010/02/06(土) 16:32:18
                          _. - ._             _
                      /. -−- \             l `i   __
                         //      ヽ          } ´ ̄ ´ '´ う
                     |{      /\  ____  j     /
      ( ヽ              '.l.   ___/    ヽ´  ー-=ニ.¨`7     r '
   r──’ `ヽ            .ゞ ' ´         '.       `丶、  /
 (´_ ̄       ヽ         /             |       \  \/
 ‘ー⊂.         \      /  ,    l  |    |、        ヽ‐-,ヽ
      ̄ ̄\     \.     /  /     !  ∧   ||ヽ__|     ∨ `
          \     \  /  /     | / '   ||'´ヽ l      l. ',     オワタ
            \     \l  '    |  ,ィ´′ ∨ ハ. |   Nヽ.   |、 i
              \     \l.    |  /|/     / /       ',   |、ヽ!
                \     ヽ、.  | i       ∨    三三 ハ.  ! \
                  \.   /\ | | xィ彡        ・{ l. ∧ /
                /\ /   }'ヽ! "´       ,、_,   l |∨ ∨
                  / /   /   \     ‘7´  )   .ノ |     l
               {      /    ',\    、__,. ' ,/  |    /
                 \   /      ', ヽ----r ' ´ |   |  ./
                 | ー ´         ',  ',   ヽ    |   |  /

提出期限過ぎてしまった
476デフォルトの名無しさん:2010/02/06(土) 19:00:28
>474
s/\//\/=/
477デフォルトの名無しさん:2010/02/06(土) 20:55:03
478デフォルトの名無しさん:2010/02/06(土) 20:56:51
>>474
a[i][j]/s[j];
の結果をどうしたいのですか?どこに保存するのですか?
479デフォルトの名無しさん:2010/02/06(土) 23:49:03
>>475
小学校の国語から始めるべきです
C言語はその後で良いでしょう
480デフォルトの名無しさん:2010/02/07(日) 01:25:57
[2] プログラム
環境
[3.1] OS:Linux
[3.2] コンパイラ名:gcc  
[3.3] 言語:C++
以下の実行結果はどうなるか


#include<stdio.h>
#define N10
int main(){
int i,wa=0;
for(i=1;i<N;i++){
if((i%2) == 0) continue;
wa+=i;}
printf("%d\n",wa);
return 0;}


よろしくお願いします。
481デフォルトの名無しさん:2010/02/07(日) 01:31:24
>>480
Nが未定義という類のエラーが出るでしょう
482デフォルトの名無しさん:2010/02/07(日) 01:40:50
483デフォルトの名無しさん:2010/02/07(日) 03:45:18
[1] C言語プログラミング初歩(専門学校)
[2] int型の配列変数A[64][32]をB[32][64]に代入する.
次の対応があるようにすること
A[0][0] -> A[0][1] -> A[0][31] ->A[1][0] ->....->A[63][31]
B[0][0] -> B[0][1]-> B[0][31] -> B[0][32]->....->B[31][63]
(上の段と下の段が一致)
A[m][n]には値 (m+n) % 31が入っているものとする。
[3] Windows Vista /Visual studio 2008/C言語
[4] 2/15迄
[5] 1月開講です。ポインタはまだ習ってません
484デフォルトの名無しさん:2010/02/07(日) 05:03:38
>>483
こんな感じ?

#include<stdio.h>
int main()
{
  static int A[64][32], B[32][64];
  int m,n;

  for(m=0;m<64;m++)
    for(n=0;n<32;n++)
      A[m][n]=(m+n)%31;

  for(m=0;m<32;m++)
    for(n=0;n<64;n++)
      B[m][n]=A[2*m+n/32][n%32];

  return(0);
}
485冷やかしです:2010/02/07(日) 05:41:31
return(0)はかっこ良すぎ(カッコ付け過ぎ)
return 0;で十分w
てか関数呼び出しと見間違えやすいので付けないほうが吉
486温めます:2010/02/07(日) 09:35:40
int *a = &A[0][0], *b = &B[0][0];

for(m=0;m<32;m++)
  for(n=0;n<64;n++)
    *b++ = *a++;
487前スレ639:2010/02/07(日) 11:46:40
宿題でなく質問させてもらいます。
http://pc12.2ch.net/test/read.cgi/tech/1260532772/652
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10348.txt
上のプログラムについて聞きたいのですが

このプログラムはfor文を2回まわしているので数列の長さをLとしたとき計算量は2LなのでO(L)と言えるのでしょうか?
それと、ソースの下の方にある ? はifの省略記法なのでしょうか?

初心者でよくわからなかったのでお教えください
488デフォルトの名無しさん:2010/02/07(日) 12:08:15
>>487
O(n^2) 実際に適当な値入れて何回実行されるか考えたらいいと思う。

そういう捉え方もできなくもないが別物。
三項演算子とかでググったらいいと思う。
489前スレ639:2010/02/07(日) 12:22:19
>>488
このプログラムを作ったくれた作者さんのレスを載せると

>数列のn[i]について毎回「n[i]の前後にn[i]よりも大きい数と小さい数があるか」を調べる場合、
>計算量は数列の長さをLとして O(L^2)かかる。
>一方、>>646のように、n[i]までの最大値と最小値を先に計算してしまうと計算量はO(L)で済む。

と書いてあり、
自分で考えてみてもl-1回計算するfor文が2個あるので2l-2なので、やはりO(L)といえる気もしますが・・・よくわかりません。


?は条件演算子ですね。分かりました。ありがとうございました。
490デフォルトの名無しさん:2010/02/07(日) 12:23:36
>>487
>計算量は2LなのでO(L)と言えるのでしょうか?
YES。入れ子になってれば積になってO(L^2)だけど、
別々になっているので全体の計算量は多い方(今回は同じ)になる。

?は "c ? a : b" という三項演算子の一部。詳細はぐぐれば分かる。
基本的にはifとは別物だが、非常に限定された場面では代わりに使うこともできる。
491488:2010/02/07(日) 12:30:26
最初の奴はよく見てなかった。
492デフォルトの名無しさん:2010/02/07(日) 12:31:17
しかも、今度は途中送信スマン
493前スレ639:2010/02/07(日) 12:38:12
それでは計算量は作者のとおりO(L)ということで正しいのですね?
ありがとうございます!勉強になりました!
494デフォルトの名無しさん:2010/02/07(日) 13:14:34
【質問テンプレ】
[1] 授業単元:C言語入門
[2] 問題文:
キーボードから英文を1文字ずつ入力し母音の出現数をカウントする。その数だけアスタリスクを表示する。ただし、入力を終了するときはCtrl+Zを押すものとする。(vowel.c)
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2月8日
[5] その他の制限:特にありません。

よろしくお願いします。
495デフォルトの名無しさん:2010/02/07(日) 14:55:13
496デフォルトの名無しさん:2010/02/07(日) 15:55:53
>>495
ありがとうございます!
ですがコンパイル出来ませんでした;
制御構造の単元なのですが、While文などを使ってもう少し簡単にしていただくことはできるでしょうか?;
497495:2010/02/07(日) 16:46:58
>>496
エラーメッセージを全部コピペしてもらえます?
498デフォルトの名無しさん:2010/02/07(日) 17:18:05
>>497
vowel.c:
エラー E2140 vowel.c 31: ここでは宣言はできない(関数 countVowel )
エラー E2141 vowel.c 32: 宣言の構文エラー(関数 countVowel )
エラー E2139 vowel.c 70: 宣言に ; がない(関数 countVowel )
エラー E2134 vowel.c 70: 複合文に } がない(関数 countVowel )
*** 4 errors in Compile ***
です。
499デフォルトの名無しさん:2010/02/07(日) 17:24:13
>>497
すみません。
こちら側のミスでエラではなく警告のみでした。
vowel.c:
警告 W8057 vowel.c 68: パラメータ 'argc' は一度も使用されない(関数 main )
警告 W8057 vowel.c 68: パラメータ 'argv' は一度も使用されない(関数 main )
500デフォルトの名無しさん:2010/02/07(日) 17:35:10
>>499
int main (int argc, char* argv[])



int main ()

もしくは

int main(void)

に書き換えてみてください。
501デフォルトの名無しさん:2010/02/07(日) 17:58:32
>>500
int main()に書き換えたらコンパイル出来ました!
for文苦手なので本当に助かりました。
ありがとうございました!!
502デフォルトの名無しさん:2010/02/07(日) 18:16:02
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  入力された2つの文字列str1,str2を比較し、str1にstr2の文字列が含まれている場合に1を、含まれていない場合に-1を返す関数、strcmpを作成せよ。
int strcmp( char *str1, char *str2);
ex. str1=”abaabab” , str2=”aab” 1
ex. str1=”abaabab” , str2=”abb” -1
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 出来れば今日中に。急ぎで申し訳ありません。
#include<stdio.h>
#include<string.h>
#define LENGTH 10

int strcmp(char *sp1,char *sp2);
int main(){
char str1[LENGTH+1];
char str2[LENGTH+1];

printf("aとbを使って10文字入力してください。\n");
scanf("%s",str1);
printf("aとbを使って2文字入力してください。\n");
scanf("%s",str2);

printf(結果)

strcmp(&str1[0],&str2[0]);

ここまで作ったのですが(中途半端ですみません)関数に行き詰まり、ネットで調べたところ本来のstrcmpの使い方とこの課題で求められているstrcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。
この後、関数strcmpを使い、str1とstr2を比較して・・・をどうのようにすれば良いでしょうか?
503デフォルトの名無しさん:2010/02/07(日) 19:23:30
>>502
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10500.c
これでいいかな。
「strcmp」という名前で関数を定義できなかたので、別名をつけています。

> ネットで調べたところ本来のstrcmpの使い方とこの課題で求められている
> strcmpの使い方が異なることが分かりどうすればいいのか混乱してしまいました。

その通り。
標準関数のstrcmpは、二つの文字列が一致しているか判定する関数。
課題の出し方が悪いと思う。
(あるいは学生をあえて混乱させようとしているのか・・・)
504デフォルトの名無しさん:2010/02/07(日) 19:47:32
strstrだよね
505デフォルトの名無しさん:2010/02/07(日) 20:54:35
strstrでググったら実装がすぐ見つかっちゃうからじゃないの
strcmpと被せたのは<string.h>使わせないためとか
506デフォルトの名無しさん:2010/02/07(日) 21:00:09
それ以前に今日中という期限設定は常識を疑いたいもの
507デフォルトの名無しさん:2010/02/07(日) 21:02:59
#include<string.h>をはずして関数名strcmpにしてなんとか形になりました。
>>503さん、本当にありがとうございました。
またこのスレにお世話になってしまうかもしれませんが宜しくお願いします。
508デフォルトの名無しさん:2010/02/07(日) 21:20:25
1] 授業単元:プログラミング演習
[2] 問題文:次のプログラムを改造し、定積分の面積を求めるプログラムにせよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:無期限
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10501.txt

お願いします
509 ◆QZaw55cn4c :2010/02/07(日) 21:49:54
>>456
ちょっと皆さんにご意見をお聞きしたいところです。
二分木で番兵(sentinel) をおく意義がわからない、どんなsentinel をおけばいいかわからないのですが、
どうすればいいのでしょうか。
sentinel をおくことで if 文が減らなければならない、と考えているのですが。
510デフォルトの名無しさん:2010/02/07(日) 21:50:58
511デフォルトの名無しさん:2010/02/07(日) 22:02:39
>>510
真に受けた俺が悪うございました。
512デフォルトの名無しさん:2010/02/07(日) 23:32:58
>>509
[1] 授業単元:プログラミングコミュニケーション演習
[2] 問題文:>>456の正解を皆さんに”必ず”知らせてください。
[3] 環境
 [3.1] OS:2ch
 [3.2] コンパイラ名とバージョン:jd等
 [3.3] 言語:無制限
[4] 期限:無期限
513デフォルトの名無しさん:2010/02/08(月) 01:34:32
>>508
単純な台形則による定積分で、関数F(X)のXY座標を、X座標の小さい順に
V[][0], v[][1] に入力と解釈するなら

#include <stdio.h>
double daikei(double xa, double ya, double xb, double yb){
return(ya+yb)*(xb-xa)/2;
}

int main(void){
 int n;
 int i;
 double V[1000][2];
 double S,D;

 scanf("%d",&n);
 for(i=0;i<n;i++){
  scanf("%lf",&V[i][0]);
  scanf("%lf",&V[i][1]);
 }

 S=0.0;
 for(i=0;i<n-1;i++)
  S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]);

 printf("\n面積:%f\n",S);
 return 0;
}

とか?
514デフォルトの名無しさん:2010/02/08(月) 03:11:53
>>509
NODE sentinel;
NODE *root = &sentinel;
以降、全ての NULL を &sentinel に置き換える。
(malloc の戻り値チェックの NULL はそのまま)

元々 NULL が番兵の役割を果たしていたので、簡単な変更で済む。
NULL が番兵ではないと誤認識させる糞問題でした。
515デフォルトの名無しさん:2010/02/08(月) 04:49:23
【質問テンプレ】
[1] 授業単元:C言語
[2] 問題文:
input.ppm というPPMフォーマットのファイルを読み込み, ヘッダをつけて縦横をそれぞれ 1/2(面積にして1/4) にして出力するプログラムを書きなさい.
input.ppm のサイズは 410x307 である.
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/8

よろしくお願いします。
516デフォルトの名無しさん:2010/02/08(月) 07:56:54
517デフォルトの名無しさん:2010/02/08(月) 09:07:12
>>516
丁寧にありがとうございます
ですが難しくてよく分からないです
たぶんもっとシンプルで(いい加減で)良い課題なので、それを参考にもう少し頑張ります
518デフォルトの名無しさん:2010/02/08(月) 12:09:37
>517
論理ミスしていた
diff main.c main.c.bk
75,76c75,76
< rl.x = (x == 0 ? 1 : x*2);
< rl.y = (y == 0 ? 1 : y*2);
---
> rl.x = x*2;
> rl.y = y*2;

縦横1/2の間引きだから、単純に縮小先の画素から見た縮小元の2x2の画素の平均値を新しい画素値にすればいいけど、
1/2の線形補間はになるためあまりきれいに縮小できない
以下疑似コード
x, yは、整数, imageは元画像, new_imageは縮小画像を表す
array(u, v)は、imageの縦u, 横vの値を表す
height, widthは、それぞれ元画像の縦幅と横幅を表す
for y in 0 <= y < height/2
 for x in 0 <= x < width/2
  new_value <- image(y*2, x*2) + image(y*2, x*2+1) + image(y*2+1, x*2) + image(y*2+1, x*2+1)
  new_value <- new_value / 4
  new_image(y, x) <- new_value
 end
end
実際のコードでは、RGBの値をそれぞれ計算しないといけないけど
519デフォルトの名無しさん:2010/02/08(月) 12:15:31
>518
diff恥ずかしいなぁ、寝不足はいかんね
520デフォルトの名無しさん:2010/02/08(月) 14:01:32
>>515-517
mkr_allocate_3d_array()で行のポインタがheightを一つ越えて
初期化されてしまってますね。バグバグバグ。
521デフォルトの名無しさん:2010/02/08(月) 17:59:07
>>513
台形規則のプログラムではなくて
画像の関数の始点Aから終点Bで囲まれた赤色の面積を求めるような
プログラムが欲しいです・・・
http://www1.axfc.net/uploader/Sc/so/80859

文章の記述不足すみません
522デフォルトの名無しさん:2010/02/08(月) 18:02:02
台形近似でも面積を求めることに変わりはないと思うんだが・・・
523デフォルトの名無しさん:2010/02/08(月) 18:25:02
>>521
それを求める公式の一つが台形則。
希望があるならそれを明記しないと伝わらんぞ。
524デフォルトの名無しさん:2010/02/08(月) 18:45:13
すみません;;
教科書読んだら台刑則のプログラムで面積を求めることが出来ると書いてありました…

あとプログラムについて質問なのですが
S+=daikei(V[i][0],V[i][1],V[i+1][0],V[i+1][1]);
の部分の+=という演算子はどのような働きがあるのかと
コンパイルしたあとは始点(xa,ya)終点(xb,yb)だけを打ち込めばいいのかわかりません
そこについてもよろしくお願いします
525デフォルトの名無しさん:2010/02/08(月) 18:50:14
a+=bはa=a+bと同義
526デフォルトの名無しさん:2010/02/08(月) 19:43:34
>>524
(1)最初に関数F(x)上の点の数nを入力
(2)F(x)上の点(x,y)を、x座標の小さい順にn回入力。

下図を良〜く見れば、そのうち分かってくるはず
http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Composite_trapezoidal_rule_illustration.png/180px-Composite_trapezoidal_rule_illustration.png
527デフォルトの名無しさん:2010/02/08(月) 23:35:10
>520
ありがとうございます
潜在的なバグの原因になり兼ねますね

有効なアドレスを参照しているからメモリチェッカでは検出できていませんでした
修正は簡単だけど、エレガントなコードが浮かばない
もう、ppm.c自体の完成度が低すぎて笑える、即席の使いまわしの接ぎ木
528至急お願いします。:2010/02/09(火) 03:50:53
[1] 授業単元:C言語
[2] 問題文: ガウス分布における数値積分 I=∫f(x)dx,←xmin〜xmax f(x)=1/√(2*π*σ)*exp(a)  a=-(x-μ)*(x-μ)/(2*σ*σ)
積分区間は[xmin,xmax]=[myuu-2siguma,myuu+2siguma]として計算すること。なおμ=0,σ=1とした場合、I=0.95449と
  なるので確認すること。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2/9 正午まで 出来ればすぐにお願いします。
529デフォルトの名無しさん:2010/02/09(火) 03:59:06
>>528
確認しました。

で提出すりゃいいよ。
530至急お願いします。:2010/02/09(火) 04:09:11
追記 528>>関数を使ってください。
531至急お願いします。:2010/02/09(火) 04:10:07
529>>どういうことですか?
532デフォルトの名無しさん:2010/02/09(火) 04:26:05
計算すること
確認すること

参考書のページ数稼ぎによくあるパターンだな
533デフォルトの名無しさん:2010/02/09(火) 05:39:00
>>528
多少誤差があるけど

#include <stdio.h>
#include <math.h>

double f(double sigma, double mu, double x)
{
return 1/sqrt(2*M_PI*sigma) * exp(-(x-mu)*(x-mu)/(2*sigma*sigma));
}

int main(int argc, char *argv[])
{
int i, n = 10000000;
double sigma=1, mu=0;
double xmin = mu-2*sigma, xmax=mu+2*sigma;
double a = f(sigma, mu, xmin), b;
double sum = 0.0;

for(i = 0; i < n; i++){
b = f(sigma, mu, xmin+(xmax-xmin)/n*i);
sum += (a+b)*(xmax-xmin)/n/2;
a = b;
}

printf("%f\n", sum);

return 0;
}
534デフォルトの名無しさん:2010/02/09(火) 07:18:38
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
配列に
Institute of Technology
という文字列を代入し、ポインタを利用して
・各文字が格納されているアドレス
・そのアドレスに格納されている文字
を表示するプログラムを作成せよ。

[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月9日まで]
[5] その他の制限:
お願いします。
535デフォルトの名無しさん:2010/02/09(火) 07:33:03
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
まず次の内容のテキストファイルを準備せよ。
(メモ帳で作成し、test02.txtという名前で保存すること)

abc
123
def
456
ghi
789
jkl
000

次に、作成したテキストファイルから内容を読み出し、
各行の先頭に 01 02 03 というように番号を付加して
画面に出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
536デフォルトの名無しさん:2010/02/09(火) 09:23:35
>>534
#include <stdio.h>

int main(void)
{
char *pstr,str[30]="Institute of Technology";
pstr = str;
for(;*pstr!='\0';++pstr)
printf("%08x: %c\n",&*pstr,*pstr);
}
537デフォルトの名無しさん:2010/02/09(火) 09:26:13
>>535
#include <stdio.h>

int main(void){
int i=0;
char text[200];
FILE *ifp;
ifp = fopen("test02.txt", "r");
if(!ifp) return 1;
while(fgets(text,200,ifp) != NULL)
printf("%02d %s", ++i, text);
fclose(ifp);
}
538デフォルトの名無しさん:2010/02/09(火) 11:34:00
>>535
#include <stdio.h>
int main(void){
FILE *f;
f=fopen("test02.txt","r");
if(f==NULL) return 0;
fclose(f);
printf("01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n");
return 0;
}
センセーが期待した解答とは異なるだろうがよ
539至急お願いします。:2010/02/09(火) 14:07:26
534>>ありがとうございます。argvの後はなんてかいてあるのですか?
540デフォルトの名無しさん:2010/02/09(火) 14:37:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://codepad.org/9ra3PWuv
上のコードが正しく動かないんです・・・
input.txtとして
1
2
3
4
5
の内容を保存して実行ファイルから読み込ませる
./a input.txt
[3] 環境
 [3.1] OS:ubuntu
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[出来れば今日中で]
[5] その他の制限:
541デフォルトの名無しさん:2010/02/09(火) 15:17:43
>>540
自分が作ったプログラムを理解出来ていないようだ。(笑)
input.txtとして↓を与える。
5
1
2
3
4
5
542デフォルトの名無しさん:2010/02/09(火) 15:32:17
うわ、そんな安易な間違いでしたか・・・
ずっとプログラム睨んでました。
ありがとうございます。
543デフォルトの名無しさん:2010/02/09(火) 16:07:04
バカもん。
> ずっとプログラム睨んでました。

プログラム睨んでたら普通気が付くだろ。
544デフォルトの名無しさん:2010/02/09(火) 16:32:55
コードは鏡、自分自身が見えます。
545デフォルトの名無しさん:2010/02/09(火) 16:36:53
自分で書いてないのがバレバレだなw
546デフォルトの名無しさん:2010/02/09(火) 20:17:21
>>538
死ね
547デフォルトの名無しさん:2010/02/09(火) 22:17:58
[1] 情報処理応用
[2] Fortranで,


階乗 n! を計算する関数を作成し,

順列
n個の異なるものからr個取り出して並べる。
このときの順列の総数をnPrとあらわす。
nPr=n(n-1)(n-2)・・・(n-r+1)
を計算する関数を作成し,

組み合わせ
異なるn個からr個取り出して組を作る。
このときの組合せの総数をnCrとあらわす。
nCr = nPr/r!
を計算するプログラムを作成してください
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:fortran
[4] 期限: 明日まで。急ぎですみません。
[5] その他の制限: 特にないですが、板を間違えていたらすみません。
548デフォルトの名無しさん:2010/02/09(火) 22:18:01
[1]C言語課題
[2] コマンドラインに与えられた文字列が単数で自然数を表しているとい
下の例ように出力されるプログラムを作れ
入力==>3
132
231
入力==>5
1304
2552
4031
入力==>10
136107
259084
480952
710631
入力==>20
13610150016
25914201711
48131918127
71218191384
11172014952
16001510631
[3] [3-1]Linux [3-2]GNU C++ [3-3]C言語
[4] 2/22日正午迄 それ以降は不可
[5]stdio.h string.h stdlib.hを使用可能
549デフォルトの名無しさん:2010/02/09(火) 22:39:57
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
球の体積をもとめよ。またこの問題は間違っているのでそれを書き換えよ
#include<stdio.h>

int main(void)
{
double r,v;


printf("直径を入力して下さい\n");

scanf("%1f",&r);
v=4.0/3.0*3.14159*(r/2.0)*(r/2.0)*(r/2.0);
printf("直径%fの球の体積は%fです。\n",r, v);


}
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
550デフォルトの名無しさん:2010/02/09(火) 22:40:50
>>547
とりあえずスレタイをn!回声に出して読んでみようか
551デフォルトの名無しさん:2010/02/09(火) 22:47:32
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
二つの数列の和を表示したい。またこの問題は間違っているのでそれを書き換えよ
#include<stdio.h>
main()
{
int suretu1[]={2,4,6,8,10,12,14,16,18,20};
int suretu2[]={1,2,4,8,16,32,64,128,258,512};
int kotae;
int count;

for (count = 0; count <=10; count++ )
printf("%d,", suretu1[count]+suretu2[count]);
{
suretu1[count] = 2 * count +2;
suretu2[count] = count* count;
kotae= suretu1[count] + suretu2[count];
printf("二つのの整列の和によってできる数列は,\n");
printf("%d\t",kotae);
}
}
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
552デフォルトの名無しさん:2010/02/09(火) 23:00:56
[1] プログラミング基礎
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10503.txt
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:2月10日 18時まで
[5] その他の制限: 説明は詳しく書いてくれるととてもありがたいです。

現在とても困っています。皆さんよろしくお願いします。
553デフォルトの名無しさん:2010/02/09(火) 23:15:56
>>548
入力==>15
136101511
259141127
481311384
712114952
111510631
入力==>11
1361011
2590007
4800084
7000952
1110631
入力==>9
13607
25984
48952
70631
入力==>8
1367
2584
4852
7631
入力==>6
1364
2552
4631
入力==>4
134
202
431
554デフォルトの名無しさん:2010/02/09(火) 23:19:47
[1] 授業単元:プログラミング 1
[2] 問題文(含コード&リンク):
/*************************
ある二つの文字列str1,str2 の編集距離はつぎの3つの操作を行うことによりstr1 をstr2 に変換するのに要する操作の最低回数である
・ 1文字挿入する
・ 1文字削除する
・ 1文字を他の1文字に置き換える
たとえば str1="sport" はstr2="sort" に, 文字 'p' を削除することによりstr2 に変換できるため編集距離は 1 である

str_n を文字列str の頭からn 番目までの部分列としm(i,j)をstr i とstr j の編集距離を表すものとする.m(i,j)とm(i+1,j),m(i,j+1),m(i+1,j+1)の間に成り立つ再帰式を記述しなさい

この再帰式に基づき効率良く編集距離を計算するプログラムを2次元配列を利用して作成しなさい.ただし,関数m(i,j)はint型の編集距離を返り値とする.
******************************/
[3] 環境
 [3.1] OS:windows vista
 [3.2] コンパイラ名とバージョン:visual studio2008
 [3.3] 言語:C
[4] 期限:[2010年2月10日まで]
[5] その他の制限:
555デフォルトの名無しさん:2010/02/09(火) 23:20:08
[1]C言語とプログラミング
[2] キーボードから3つの整数を受け取り大きさの小さい順に出力するプログラムを作りなさい。
但しmain関数内ではint変数一つだけが使えるものとします。またmain関数の再帰呼び出しも
出来ません。(main関数の引数、argc,argvをint変数として使用することも勿論禁止します)
main関数のみで構成されるプログラムとして下さい。
入力される数は1から10までの範囲にあることを常にチェックし、それ以外の入力の場合は
再入力を促して下さい。
[3]
[3-1]Windows XP HomeEdition
[3-2]Visual Studio 2008
[3-3]C言語
[4] 2/11迄
[5] 特に無し
556デフォルトの名無しさん:2010/02/09(火) 23:28:36
まぁどれも期日まで時間があるからゆっくりやるべきだ
最近の学生は甘え過ぎ
粘って苦しめてやれというのはウソにせよ
期日ぎりぎりに催促されたら貼ってやる
って感じで
557デフォルトの名無しさん:2010/02/09(火) 23:30:40
>>549
scanf("%1f",&r); の %1f を %lf に修正。※lは小文字のL
main関数が値を返して無いので、最後に return 0; 等を追加。
558デフォルトの名無しさん:2010/02/09(火) 23:32:55
>>556
余計なこと書くなよw
日付変えてくるだろうが
559デフォルトの名無しさん:2010/02/09(火) 23:45:48
>>551
問題の題意がイマイチよく分からんので、適当に解釈
#include<stdio.h>
main()
{
int suretu1[]={2,4,6,8,10,12,14,16,18,20};
int suretu2[]={1,2,4,8,16,32,64,128,258,512};
int kotae=0;
int count;

printf("二つの整列の和によってできる数列は\n");
for (count = 0; count <10; count++ )
{
printf("%d ", suretu1[count]+suretu2[count]);
kotae += suretu1[count] + suretu2[count];
}
printf("\n数列の和は %d\n",kotae);
return 0;
}
560デフォルトの名無しさん:2010/02/09(火) 23:47:16
>>535
#include <stdio.h>
#include <string.h>
int main(void){
#define CONTENTS "01abc¥n02123¥n03def¥n04456¥n05ghi¥n06789¥n07jkl¥n08000¥n"
FILE *f;
int i=0;
char Fgets[256],Strcat[256],Sprintf[256];
f=fopen("test02.txt","r");
if(f==NULL) return 0;
Strcat[0]=0;
for(;;){
if(NULL==fgets(Fgets,256,f))break;
sprintf(Sprintf,"%02d%s",++i,Fgets);
strcat(Strcat,Sprintf);
}
fclose(f);
if(0==strcmp(Strcat,CONTENTS))printf("%s",CONTENTS);
return 0;
}
561デフォルトの名無しさん:2010/02/10(水) 00:01:18
>>552
1.Swapの引数が値渡しなので、Swap関数内で値を変更しても
関数呼び出し元の変数には影響を与えないから。

2.Swap関数内のbuf変数がポインタで定義されていて、その初期化されていないポインタの
示す先を一時保存場所として使用している為、正しく値が交換されない。

3.

void Swap(int *p1, int *p2)
{
int buf;
buf = *p1;
*p1 = *p2;
*p2 = buf;
}
562デフォルトの名無しさん:2010/02/10(水) 00:39:59
>>561
素早い回答ありがとうございます。助かりました。
563デフォルトの名無しさん:2010/02/10(水) 00:57:05
[1] 授業単元: DirectX研究2
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10504.txt
[3] 環境
 [3.1] OS: (Windows vista)
 [3.2] コンパイラ名とバージョン:visual stdio 2008
 [3.3] 言語: C++
[4] 期限: ([2010年2月10日17:00まで]
[5] その他の制限:
564デフォルトの名無しさん:2010/02/10(水) 01:26:05
565564:2010/02/10(水) 02:17:10
566デフォルトの名無しさん:2010/02/10(水) 02:19:37
>>548
思ったより難しかった
567566:2010/02/10(水) 02:38:49
入力==>200
1361015212836455566789110512013615317119000000000191
2591420273544546577901041191351521701890000000192172
4813192634435364768910311813415116918800000193173154
7121825334252637588102117133150168187000194174155137
1117243241516274871011161321491671860195175156138121
1623314050617386100115131148166185196176157139122106
2230394960728599114130147165184019717715814012310792
2938485971849811312914616418301981781591411241089379
3747587083971121281451631820199179160142125109948067
4657698296111127144162181020018016114312611095816856
5668819511012614316118020001811621441271119682695746
6780941091251421601791990182163145128112978370584737
7993108124141159178198018316414612911398847159483829
9210712314015817719701841651471301149985726049393022
1061221391571761961851661481311151008673615040312316
1211381561751950186167149132116101877462514132241711
1371551741940001871681501331171028875635242332518127
1541731930000018816915113411810389766453433426191384
1721920000000189170152135119104907765544435272014952
1910000000019017115313612010591786655453628211510631
568デフォルトの名無しさん:2010/02/10(水) 02:42:04
[1]数値計算演習
[2] 極座標で表される曲線 r(t)=sin^2(πt) θ(t)=α sin(πt^2) (0<=t<=1)でαを指定した時
の曲線の長さと囲む面積の近似値を求め、π/4<=α<=πまで変化させる時、
面積/曲線の長さが最大になるαを推定する
曲線上の代表点をとり隣接する点の間の距離の和で曲線の長さを近似。
面積は隣接する代表点と原点が作る三角形の面積の和で近似する。
[3]
[3-1] Mac-OS-X panther
[3-2] XCode
[3-3] C/C++どちらでも可能
[4] 2/18迄
[5] 特に無し
569デフォルトの名無しさん:2010/02/10(水) 02:50:49
570デフォルトの名無しさん:2010/02/10(水) 03:48:14
>>555
タイプミスに苦闘したが5分で打ち込めた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10509.zip
571デフォルトの名無しさん:2010/02/10(水) 04:05:07
>>568
答えがπになってしまった。間違ってたらごめんね
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10510.txt
572デフォルトの名無しさん:2010/02/10(水) 05:31:38
>>555
好奇心で書いてみた
めちゃ読みづらいけど勘弁
http://testhp.ddo.jp/prog.c
573デフォルトの名無しさん:2010/02/10(水) 07:39:07
>>555
入力数を何でも対応できるように
むりやりキャストしてポインター使ってみた
http://codepad.org/xjtWz8N3
574デフォルトの名無しさん:2010/02/10(水) 07:47:33
大きい順と小さい順を勘違いしてた
http://codepad.org/Z5aQHsCW
575デフォルトの名無しさん:2010/02/10(水) 08:53:50
おまえら必死だな
576553:2010/02/10(水) 09:05:02
>>575
入力==>200
13610152128364555667891105120136153171190
259142027354454657790104119135152170189
48131926344353647689103118134151169188
7121825334252637588102117133150168187
111724324151627487101116132149167186
1623314050617386100115131148166185
2230394960728599114130147165184
29384859718498113129146164183
374758708397112128145163182
4657698296111127144162181
56688195110126143161180200
678094109125142160179199
7993108124141159178198
92107123140158177197
106122139157176196
121138156175195
137155174194
154173193
172192
191

1)文字列を繋いで、1〜nまでの三角形を作る(上の図参照)
2)それを1文字ずつに分解して、上下反転、左右反転する
3)1と2で出来た物を左右に並べて、隙間がなくなるまで近づける
4)空いた隙間には0を詰める
577デフォルトの名無しさん:2010/02/10(水) 09:10:09
>>575
問題が魅力的だったからみんなやったんだろうな
578デフォルトの名無しさん:2010/02/10(水) 10:38:11
>>576
数値自身は左右反転じゃないぞ
579553:2010/02/10(水) 12:56:23
#define MAXL 100
main(){
  int num, i, j, k, len, maxlen;
  char wrk[4], mat1[MAXL][MAXL*2], mat2[MAXL][MAXL*2], tmp[MAXL];
  printf("入力==>"); scanf("%d", &num);
  for(i=0;i<MAXL;i++) mat1[i][0] = mat2[i][0] = (char)0;
  i=1, j=0, k=0;
  while(i<=num){
    if(k<0) {
      k = ++j;
      if(j >= MAXL) {puts("ERR"); return 1;} // てきとう
    }
    sprintf(wrk, "%d", i++);
    strcat(mat1[k--], wrk); /* LEFT */
    strcpy(tmp, mat2[k+1]); /* RIGHT */
    sprintf(mat2[k+1], "%d", i-1);
    strcat(mat2[k+1], tmp);
  }
  maxlen = k = 0;
  for(i=0;i<=j;i++){
    len = strlen(mat1[i]) + strlen(mat2[j-i]);
    if(len > maxlen) maxlen = len, k=i;
  }
  for(i=0;i<=j;i++){
    len = strlen(mat1[i]) + strlen(mat2[j-i]);
    for(k=maxlen-len-1;k>=0;k--)
      strcat(mat1[i], "0"); // めんどう
    strcat(mat1[i], mat2[j-i]);
  }
  for(i=0;i<=j;i++) puts(mat1[i]);
}
580デフォルトの名無しさん:2010/02/10(水) 13:00:22
581デフォルトの名無しさん:2010/02/10(水) 13:12:52
>>548
デバッグ用のprintfがあるので見づらいが、>>580では
 1) 上半分の三角形(>>576のような)の各行の長さを求める
 2) 出力される配列の長さを決める( (i行目の長さ + (h-1-i)行目の長さ)の最大値 )
 3) 出力
という流れ。三角形の(i,j)の位置のにある数字は簡単に計算できるので
メモリには各行の長さだけ記憶すれば十分。
582デフォルトの名無しさん:2010/02/10(水) 13:13:57
[1] 授業単元:なし
[2] 問題文(含コード&リンク):MSPAINTの色の選択(カラーダイヤログ)を表示して、選択した色(RGB)を文字列として取得する秀丸用のDLLを作成してください
[3] 環境
 [3.1] OS:Windows XP or Vista
 [3.2] コンパイラ名とバージョン: なんでも
 [3.3] 言語: CかC++どちらでも可
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: とくになし
DLLの使用などはこちらを参照してください
ttp://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/200_Dll.html
583デフォルトの名無しさん:2010/02/10(水) 13:19:45
>>582
それ、宿題じゃねーだろ。
584570:2010/02/10(水) 13:32:22
>>555
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10512.zip
多くの部分に間違いがあった。
さすがに700行/分の入力ではミスが起こるわなw
585570:2010/02/10(水) 13:46:27
スマン
まだ一カ所ミスが...
入力チェックをミスってる
#define INPUT()で
でwhileロジックを
while ( (m<1)||(m>10) )
に修正して
586デフォルトの名無しさん:2010/02/10(水) 13:51:16
>>336
課題4と課題5どなたかよろしくお願いします。期日すぎても提出できるので、なんとかならないか必死です。
587デフォルトの名無しさん:2010/02/10(水) 17:24:00
>>586
5番のグラフって何グラフ?
588デフォルトの名無しさん:2010/02/10(水) 17:40:46
入力データの例
1.2 3.7
2.1 4.2
2.9 1.3
4.0 2.5
x,y軸を-や+で表現して、それぞれ座標の点(4つ)を*でプロットする感じです。
589555:2010/02/10(水) 19:03:12
>>572
>>573
>>570
どうもありがとうございました。
>>570さんのコードは非常にわかりやすいです。
3600行を5分で入力とは凄いですね。
タッチタイピング速度はどの位でそれくらいに
なるんでしょうか?自分は1分間に賞味150文字が
精一杯です。(IME変換時間を含む)
他の皆様もいろいろと工夫をされておられ特にビット
操作とかポインタ操作とか裏技的な技法は非常に参考
になると思います。
590デフォルトの名無しさん:2010/02/10(水) 20:45:14
>>570
ひらいてみた。ちょwwww
591デフォルトの名無しさん:2010/02/10(水) 20:52:14
世間では一昔前はコード1行1万が
相場だった時代もあったね。
>>570のコードだといくらになるんだかw

**確認事項**
ここで答えてやっても事後を含め
一切依頼者に報酬を請求出来ない
592デフォルトの名無しさん:2010/02/10(水) 20:54:41
>>591
ここで答えるようなのって単体じゃどうせ金にならなくないか?
593デフォルトの名無しさん:2010/02/10(水) 20:55:23
>>570
>>584
クソワロタ
594デフォルトの名無しさん:2010/02/10(水) 21:15:31
ここで解かれている問題とその回答を
応用してもいいけど事後問題になる可
能性もあるんで(2ちゃんねるから
引用ってw格式ある組織ではそれだけ
で処分対象w)
595570:2010/02/10(水) 22:38:17
>>555
いえいえ。
タッチタイピングの上達のコツは
このスレの他の回答者に聞いてくれ
企業秘密なんで。
この業界では毎分400文字〜500文字
(IME入力変換時間を含む)の入力が
生き残りの最低条件なんでw
今回は実にのんびりしたテンポで入力
したよ。

>>590
>>593
何かおもしろいところあるのかい?
596デフォルトの名無しさん:2010/02/10(水) 22:50:17
いやここまで冗長なプログラムは初めて見たもんで
一行いくらならこういう方法でガツガツ稼げるなw
597デフォルトの名無しさん:2010/02/10(水) 23:16:03
冗長?
見た目だろ。
ロジックそのものはこれほど直接的なものはない
コードは常に短く書けばいいというもんでもないと
目から鱗が落ちたような気分
コードを(最初から)短く書くのが偉いとかそういう
奇妙な信仰はかなり弊害もあるんじゃないかと
もっとも一つのint変数しか使えない状況での
プログラミングもかなりナンセンスだと思うが
598デフォルトの名無しさん:2010/02/10(水) 23:16:59
回路に例えるとワイヤードロジックな
普通のプログラムがマイクロプログラムに例える事が出来るかも
599デフォルトの名無しさん:2010/02/10(水) 23:21:30
>>555って__asmでスタックとレジスタ使えばint変数一つでも楽勝なんじゃないのw
600デフォルトの名無しさん:2010/02/11(木) 02:07:11
>>555
逃避したくなったので書いてみた。
http://codepad.org/HcRNGiZZ
601デフォルトの名無しさん:2010/02/11(木) 11:03:25
勉強になるなぁ。hhdかー。
602デフォルトの名無しさん:2010/02/11(木) 13:05:19
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void){
int a=0,k;
for (k=0;k<100;k++){a++;
if(a%5==0&&a%9==0)printf("A\n");
else if(a%5==0)printf("B\n");
else if(a%9==0)printf("C\n");
else printf("%d\n",a);
}return 0;}
この処理のプログラムをスペース、改行を含み140字以内で書き直したい。
[3] 環境
 [3.1] OS:Windows XP Pro
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語:C
[4] 期限:
[5] その他の制限:特になし

よろしくお願いします。
603デフォルトの名無しさん:2010/02/11(木) 13:29:10
>>602
#include <stdio.h>
int main(){
int k;
for (k=1;k<=100;k++){
printf(k%5==0&&k%9==0?"A\n":k%5==0?"B\n":k%9==0?"C\n":"%d\n",k);
}}
604 ◆/91kCCQXBo :2010/02/11(木) 13:54:38
#include <stdio.h>
int main(void){
  int a;
  for(a=1;a<=100;a++)
    printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a);
  return 0;
}
605デフォルトの名無しさん:2010/02/11(木) 14:04:38
>>602
変な問題ですが無理なのでは166byte
606デフォルトの名無しさん:2010/02/11(木) 14:05:22
602です。
<<603
<<604
の方ありがとうございます。 助かりました。
607605:2010/02/11(木) 14:05:28
失礼3項演算子があったのね
608デフォルトの名無しさん:2010/02/11(木) 14:11:20
609デフォルトの名無しさん:2010/02/11(木) 21:34:45
>>602 code golfするの?
a;main(){for(;++a<101;)printf(a%45?a%5?a%9?"%d\n":"C\n":"B\n":"A\n",a);}
610デフォルトの名無しさん:2010/02/11(木) 22:11:13
>>555
int a;
scanf("%ld %ld %ld%*c", (long *)&a, (long *)&argc, (long *)&argv);
じゃだめか
Windows XP HomeEditionって64bitないよね
611デフォルトの名無しさん:2010/02/11(木) 22:54:33
>>610
たった3行の制約条件を見逃すようじゃ、お前マの適性ない。
転職を勧める。
612デフォルトの名無しさん:2010/02/12(金) 01:00:07
>>555
もう需要ないかと思うが、面白そうなのでやってみた。
バブルソートのありがたみを出すため、かつ、4bit余ったため、入力する値を4つに勝手に変更。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10519.txt
613デフォルトの名無しさん:2010/02/12(金) 01:03:56
>>612
1〜10だよ。
614612:2010/02/12(金) 01:26:00
>>613
1〜10にしてますよー。
615デフォルトの名無しさん:2010/02/12(金) 01:32:57
[1] 授業単元:計算機実習
[2] 問題文(含コード&リンク):
http://hermes.esys.tsukuba.ac.jp/~sano/NumCompEx/project2.pdf
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:VisualStudio2008
 [3.3] 言語:C
[4] 期限: 3/5
[5] その他の制限:特になし

よろしくお願いします。
616デフォルトの名無しさん:2010/02/12(金) 02:49:14
>>611
その前に就職をしないと
617デフォルトの名無しさん:2010/02/12(金) 11:43:57
>>615
問題文が理解できません! orz
618デフォルトの名無しさん:2010/02/12(金) 12:44:18
このスレの人ってちょっと考えると皆精神病院予備軍だな
>>585とか
>>548を解いて喜ぶ人とかw
619デフォルトの名無しさん:2010/02/12(金) 12:49:19
>>618
パズルを解く感覚だよ
620デフォルトの名無しさん:2010/02/12(金) 12:50:35
さすが現役精神病の方は言うことが違うね
621デフォルトの名無しさん:2010/02/12(金) 17:21:53
トルヒーヨのハルディンはここですか?
622デフォルトの名無しさん:2010/02/12(金) 19:30:20
623デフォルトの名無しさん:2010/02/12(金) 19:31:59
>>622
それは突っ込み待ちか?
624デフォルトの名無しさん:2010/02/12(金) 19:33:42
>>622
キレイに書くねー。
625デフォルトの名無しさん:2010/02/12(金) 20:21:21
>>555
n+1番煎じしてみた。
どこにも「同じ数字が複数回入力された場合、まとめてはならない」なんて書いてないよね。
ttp://codepad.org/C0n9Shhq
626625:2010/02/12(金) 20:26:28
ミスった…
× #define PSHORT_A(x) (((uint16_t*)&x)+2)
○ #define PSHORT_A(x) (((uint16_t*)&x)+1)
SHORT_Aも同様。
627デフォルトの名無しさん:2010/02/13(土) 01:48:01
>>555の問題って、入力がintの範囲内であることは暗黙の了解としても、[0, 10]の範囲にあることの確認は不可能だよね?
charの範囲内としたら、(たとえintが規格的に最小な16bitでも)できそうだが。
628デフォルトの名無しさん:2010/02/13(土) 02:07:59
>>627
お前は何を言っているんだ。
629デフォルトの名無しさん:2010/02/13(土) 03:01:56
答えが多すぎて、このパターンだけでいいか。出席を取ります。
@intをポインタとして実際使うメモリはintの配列
Aintを分解して4バイトとして4個の数字を使う
B1個の数字しか使わない

http://pc12.2ch.net/test/read.cgi/tech/1255277760/l2
630デフォルトの名無しさん:2010/02/13(土) 03:58:19
>>628
「半角文字以外に「あ」とか「阿」のような全角文字が入力される場合まで考えると、正しい結果が得られなくなる場合があるのでは?」
って言ってるんだと俺は推測する。
JISとかユニとかの知識が乏しいので、俺には実際どうなのかはわからんが。
631デフォルトの名無しさん:2010/02/13(土) 04:33:14
誰も>>585のコード見て苛つかないの?
同レベルだとみなされかねないし...
常連回答者だったら清書したくならないか?
632622:2010/02/13(土) 05:17:54
んじゃ、マクロを大文字に修正
#n
s/v(\(.\))/V(\1)/g
s/swap/SWAP/g
s/w\([^h]\)/W\1/g
p
633デフォルトの名無しさん:2010/02/13(土) 09:50:31
しかしこういうビット演算は今までまったくやったことが無いので、
回答者のみんながホントスゲーんだなと分かる。
>>625さんのようなバケットソートぽいのを自分でも書こうと思ったが、
まったく書けなかったのが辛いところ。
634デフォルトの名無しさん:2010/02/13(土) 12:54:49
>>633
まずは愚直なコードからでもいいから一歩を踏み出す事が大事。
635デフォルトの名無しさん:2010/02/13(土) 18:42:25
>>555 たぶんできてるはず。570のインスパイヤ

#include <stdio.h>
#include <stdlib.h>
int compareInt(int * left, int * right) { return *left - *right; }
FILE * OUT; int length = 3, * ans, * vals;
void createSwitch(int current, int * vals) {
int i;
if (current == length) {
for (i = 0; i < length; i++) ans[i] = vals[i];
qsort(ans, length, sizeof(int), (int(*)(const void*, const void*)) compareInt);
fprintf(OUT, "printf(\"");
for (i = 0; i < length; i++) { if (i != 0) fprintf(OUT, " "); fprintf(OUT, "%%d"); } fprintf(OUT, "\\n\", ");
for (i = 0; i < length; i++) { if (i != 0) fprintf(OUT, ", "); fprintf(OUT, "%d", ans[i]); } fprintf(OUT, ");\n");
return;
}
fprintf(OUT, "val = getchar() - '0';\ngetchar();\nswitch (val) {\n");
for (i = 0; i < 10; i++) {
vals[current] = i;
fprintf(OUT, "case "); fprintf(OUT, "%d", i); fprintf(OUT, ":\n");
createSwitch(current + 1, vals);
fprintf(OUT, "break;\n");
}
fprintf(OUT, "default:\nputs(\"input error\");\nreturn 1;\n}\n");
}
int main(void) {
OUT = fopen("shukudai555.c", "w"); vals = (int *) malloc(sizeof(int) * length); ans = (int *) malloc(sizeof(int) * length);
fprintf(OUT, "#include <stdio.h>\nint main(void) {\nint val;\n");
createSwitch(0, vals);
fprintf(OUT, "return 0;\n}");
return 0;
}
636デフォルトの名無しさん:2010/02/13(土) 18:44:07
C言語の宿題と聞いて飛んできました。
637デフォルトの名無しさん:2010/02/13(土) 20:28:20
>>629
@Aは、環境が書いてあるから、intを4bytesとして扱ったりポインタとして扱ったりの環境依存コードがかけるという解釈なんだろうか。
638568:2010/02/13(土) 20:45:46
>>571
ありがとうございました。自分今のところFORTRANしか
組めないんでFORTRANに移植するのやってみます。
639デフォルトの名無しさん:2010/02/13(土) 21:33:20
>>635
すげ〜
といいたいところだが>>584と同レベルかそれ以下である
ということを示していない気がしないでもない
640デフォルトの名無しさん:2010/02/13(土) 22:40:48
641デフォルトの名無しさん:2010/02/13(土) 23:14:51
うむ。
マクロを使うとここまで短く出来るんだな。
行数で稼いでいるプログラマは犯罪的だ
という教条の根拠か...
しかしこれは逆に言えば、マクロを使うことが
禁止された時、それを読む人が地獄の責め苦
を受けることをまた意味しているとも言えるなw
642デフォルトの名無しさん:2010/02/13(土) 23:42:56
>>612を改良した。

・入力する値を5つに勝手に変更。この方法だと6つ以上は俺には無理だな・・・
・マクロの使用で見やすくした。
・範囲外(全角文字も含む)が入力されても、問題なく再入力を促すのを確認。(01や09は範囲外としている)

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10526.txt
643デフォルトの名無しさん:2010/02/14(日) 00:50:52
>>641
コードのアセンブリ(実行最小単位)に対する圧密
度はC言語の出身地であるシステム記述の分野
では非常に重要な評価ポイントらしいね
その世界ではコードは圧密に書けば良いというもので
もなく逆に極端に希薄に書けば良いというものでも
なく結構奥深いらしい。
それにしても>>584>>640の例は同じ記述が書き
方によって極端に変わる良い例なんだろな
644デフォルトの名無しさん:2010/02/14(日) 01:32:40
>>640
おみごと
645 ◆/91kCCQXBo :2010/02/14(日) 12:09:11
555 たぶんできてるはず。570のインスパイヤ >>639 >>635のを借りて見た目I/Oを改良
#include <stdio.h>
#include <stdlib.h>
FILE *OUT; int length = 3, *ans, *vals;
int compareInt(int *left, int *right) { return *left - *right; }
void createSwitch(int current, int *vals) {
  int i;
  if (current == length) {
    for (i = 0; i < length; i++) ans[i] = vals[i];
    qsort(ans, length, sizeof(int), (int(*)(const void*, const void*)) compareInt);
    fprintf(OUT, "puts(\"");
    for (i = 0; i < length; i++) { if (i != 0) fprintf(OUT, " "); fprintf(OUT, "%d", ans[i]); }
    fprintf(OUT, "\");");
    return;
  }
  fprintf(OUT, "while((val=1, printf(\">\"), scanf(\"%%d%%*c\", &val)) != 1 || val<1 || val>10) {\n"
  "\t\t\t\t\tprintf(\"ERROR\\n\"); if(val==1) scanf(\"%%*s\");}\n\tswitch (val) {\n");
  for (i = 0; i < 10; i++) {
    vals[current] = i + 1;
    fprintf(OUT, "\t\tcase "); fprintf(OUT, "%d", i + 1); fprintf(OUT, ": ");
    createSwitch(current + 1, vals);
    fprintf(OUT, " break;\n");
  }
  fprintf(OUT, "\t}\n\t\t\t");
}
int main(void) {
  OUT = fopen("shukudai555.c", "w");
  vals = (int *) malloc(sizeof(int) * length); ans = (int *) malloc(sizeof(int) * length);
  fprintf(OUT, "#include <stdio.h>\nint main(void) {\n\tint val;\n\t\t\t\t");
  createSwitch(0, vals);
  fprintf(OUT, "return 0;\n}\n");
/*  return 0; */}
646デフォルトの名無しさん:2010/02/14(日) 12:45:49
あのー。誰も突っ込まないので俺が言う。

>>555
> 但しmain関数内ではint変数一つだけが使えるものとします。
> またmain関数の再帰呼び出しも出来ません。
> (main関数の引数、argc,argvをint変数として使用することも勿論禁止します)
> main関数のみで構成されるプログラムとして下さい。

お前一人だけどうあがいても落第だよw
647デフォルトの名無しさん:2010/02/14(日) 13:36:52
ソースを生成するんだろうけど、出てくるのはつまらなそうだね。
これなら、秀丸のマクロでいいんじゃね。
648デフォルトの名無しさん:2010/02/14(日) 15:47:49
649デフォルトの名無しさん:2010/02/14(日) 15:57:40
なんか、問題自体が不毛だよなぁ。
650デフォルトの名無しさん:2010/02/14(日) 16:00:58
とんち合戦の様相を呈してきたな。
651デフォルトの名無しさん:2010/02/14(日) 16:06:28
いやむしろIOCCC2ch版というべきか
652633:2010/02/14(日) 16:09:58
あ、思いついちゃった。
>>648さんの方法で、データを0-9で保存して1-10と表示させると、
INT_MAX.to_s.sizeの個数の数を扱えそう。
けどソートはどうするんだろうw
653デフォルトの名無しさん:2010/02/14(日) 16:53:38
てか依頼者が消えた問題にいつまでも拘泥するのは
宿題スレのマナー違反
654デフォルトの名無しさん:2010/02/15(月) 11:25:56
【質問テンプレ】
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
生徒数1000人分の学力テスト(五教科)の得点データが有る。ここで、任意の生徒Aと
得点の傾向が一番近い生徒の番号を高速で抽出できるようデータ構造を組みなさい。
(合計点が近い、ではなく、各教科の得点の傾向が大事のようです。)

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC++
 [3.3] 言語: どちらでも可
[4] 期限: 無期限
[5] その他の制限: 無し


生徒のデータはstruct seito{int tensuu[5];};こんな感じです。
単に全部検索して得点差を計算したのを提出したらダメと言われました。
こういう問題を解く定石のようなものがあるのでしょうか・・・
先輩方、よろしくお願いします。
655デフォルトの名無しさん:2010/02/15(月) 11:34:10
>>654
簡単に考えれば、
0-20をE
21-40をD
41-60をC
61-80をB
81-100をA
みたいに評価をつけて、同じものを抽出すればいい気がする。
もうちょっと細かくランク分けしたほうがいいかな
656デフォルトの名無しさん:2010/02/15(月) 12:33:42
>>654
プログラムを組む以前の問題として、どうゆう回答をすれば先生が満足するのか
そこがイマイチ不明だ・・・。

傾向が似ているかどうか、というだけなら、各教科の得点を偏差値に変換して、
5次元空間上にプロットした時に、任意の生徒Aとのユークリッド距離が
最も近い生徒を選べばいい気がする・・・。

仮にそれでいいとして、高速抽出するためのデータ構造を組め、ってなると
要は任意の生徒Aに最も近い得点の傾向の生徒Bを予め計算しておいて
AとBを対で持たせておけばいいとか、そうゆうことかな?
657デフォルトの名無しさん:2010/02/15(月) 12:44:28
モデル化してそれに最適なデータ構造考えろと言ってるんだろ。
モデル化の部分はこれまで授業で触れられていると思う。
658デフォルトの名無しさん:2010/02/15(月) 13:54:43
>>654
皆全員0点だった場合は誰を選べばいい?
659デフォルトの名無しさん:2010/02/15(月) 14:14:59
誰でもいいんじゃね? みんな一緒だし。
660デフォルトの名無しさん:2010/02/15(月) 14:16:28
656 のやり方で、データを読み込むとき予めソートしておくというのはどう?
661デフォルトの名無しさん:2010/02/15(月) 14:17:26
日本語おかしいな。
データを読み込むときソートした状態にスレばいいんじゃないか?
662デフォルトの名無しさん:2010/02/15(月) 14:19:12
>>654
極端な例の場合
ある生徒の得点分布が(50,51,52,53,54)
の場合(52,52,52,52,52)よりも(95,96,97,98,99)
の人のほうを選出したほうがいいの?
663デフォルトの名無しさん:2010/02/15(月) 15:04:57
(0,20,40,60,100)のほうが近いとオモ
664デフォルトの名無しさん:2010/02/15(月) 15:42:32
単に差を出したらダメって言ってるんだから、{52,52,52,52,52}だろうよ
665デフォルトの名無しさん:2010/02/15(月) 17:17:46
>>654
「傾向が近い」というのは、例えば
A (70,63,77)
B (70,70,70)
C (90,81,99)
だと、A≒B じゃなくて A≒C、という解釈
・・・でいいのか?
666デフォルトの名無しさん:2010/02/15(月) 17:32:36
1) 合計の偏差値を取り、Aに近い10%を抽出候補を絞る
2) 五科目点数の総当たりの大小比較を行い、Aと共通なら1異なったら0として
その合計が最大のBを選出。
3) Bが複数出たらさてどうするか。
667デフォルトの名無しさん:2010/02/15(月) 18:21:10
取り敢えずまだまだC言語で純正に一気に解決終了!
って出来る問題じゃなさそうだな
数学の複素多様体の知識とかデータベースの知識も要りそう
な問題で他のシステム(殆どが固有の言語を持つ)との
連携も要るような..
668デフォルトの名無しさん:2010/02/15(月) 18:23:34
[4] 期限: 無期限
てのも何かコエーよw
669デフォルトの名無しさん:2010/02/15(月) 18:29:58
foreach(生徒 in 生徒たち) {
 if(指定生徒 == 生徒) continue;

  match_average = 0;
 for(科目番号 = 0; 科目番号 < 5; 科目番号++) {
   diff = 生徒の得点[科目番号] - 指定生徒の得点[科目番号];
   match_average += diff * diff;
 }
 
 if(best_match_average > match_average) {
   best_match_average = match_average
傾向が似ている生徒 = 生徒
 }
}

考え方は、これでいいのかな?
match_average は、ユークリッド距離とか平均二乗偏差を意味する数値だけど、
あえて平方根をとらないことが高速化になってるしw
 
670デフォルトの名無しさん:2010/02/15(月) 18:34:10
>>667
問題によっては複数の支援ツールからなるソリューションパッケージは
あっても単独ソルバーアプリにまではとても出来てない問題って沢山あ
るからな
671669:2010/02/15(月) 18:56:34
672デフォルトの名無しさん:2010/02/15(月) 19:22:00
俺だったら「極座標」を使い、生徒の得点を中心からの距離と
緯度、経度とかの角度で表す。
「成績球」を半径方向と角度方向の非合同領域に分割し
生徒がどこに所属しているかで似ているかどうかを決める。
データ入力の段階で所属を決めるから、検索はデータの1回の
通読だけで至って単純。
だが領域の取り方が相当恣意的になりデータの分布が事前に
分かっていたら結果のコントロールもかなり出来るんで
敢えて書くべきコードじゃないと思うんでパス
(実際の問題では球の中に決して一様に分布しないんで
この方法は不適)
673デフォルトの名無しさん:2010/02/15(月) 20:02:38
>672
出だしと、まとめが矛盾してるぞ?
まあ、つべこべ言わずにコードを書いてみろ。
言ってることが難しすぎて俺にはトンと理解できねえ、
どんなコードになるのか興味あるわ。
書いてください、お願いします。
674デフォルトの名無しさん:2010/02/15(月) 20:12:17
>>670
CとかC++とかJavaがソリューション系では好かれない理由は
書くべきプログラムは音楽みたいにmainで始まりトップダウ
ンに一気に終了ってパターンであるという固定観念を印象づ
けるからじゃね?ソリューション系ではどっちかというと
「絵」とか「図」を書くに近いんで。
多くのC/C++ Javaプログラムの実際はそうではないことは
ベテランにはわかってるんだが、教育プロセスにおいて
OJTで新人に教える時にコード字面から植え付けられる先入観が
結構邪魔してると認識されることが多いんじゃないかと
675671:2010/02/15(月) 20:25:39
>651
問題をよく読んでいなかった、データ構造を組まなきゃいけないのね。
0点だわwww
676デフォルトの名無しさん:2010/02/15(月) 22:13:02
>>654
類似度は得点を正規化して内積を取ったものとしている
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10529.c
677676:2010/02/15(月) 23:03:19
>>676
一番近いものだけ分かればいいから qsort じゃなくてもよかった
678デフォルトの名無しさん:2010/02/15(月) 23:25:17
依頼者(今回は質問者かな?)のレベルに追いついたことはわかったw
679デフォルトの名無しさん:2010/02/16(火) 01:41:40
>>615
問題を解説してくれたまへ
ここまでで挫けた

ステップ1
double v(double x){
return 4*(pow(x, -12)-pow(x, -6));
}
v(x)==εn (但しεn=-0.75) となる二つの x を二分法で求めよ


ステップ2
ステップ1 で求めた xin xout を用いて次の積分を計算せよ
s(εn)=2*γ*∫sqrt(εn-v(x))dx


ステップ3
ステップ2 の結果を用いて n を求めよ


ステップ4
???

ステップ1〜4 を使って γ の値を変化させ…頑張れ
680デフォルトの名無しさん:2010/02/16(火) 01:59:58
ちょっと関係ないかもしれないんだが、今の時期って大学とか休みだから、今ある質問って何の宿題?
長期休暇とかの?それとも高校のか?
681デフォルトの名無しさん:2010/02/16(火) 03:16:24
大学院の専門分野での研究課題や入試問題を貼ってて、その後何も反応が
無い依頼は釣りだと思って、スルーしてたんだけど(´・ω・`) チガウノカナ?
682デフォルトの名無しさん:2010/02/16(火) 04:12:58
>>681
683デフォルトの名無しさん:2010/02/16(火) 05:08:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10530.zip
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] Visual C++ 2008
 [3.3] 言語: C++
[4] 期限: 2月17日まで
[5] その他の制限: 特になし

よろしくお願いします。
684デフォルトの名無しさん:2010/02/16(火) 07:39:27
>>681
研究室レベルのものはあったが(>>615) 入試はみかけない。
685デフォルトの名無しさん:2010/02/16(火) 08:02:15
実際に解く内容は簡単だけど
問題を理解するのが難しいw
686デフォルトの名無しさん:2010/02/16(火) 08:57:46
>>684
例えば >>554 とか、プログラム作成を除けば、東京大学大学院の
入試問題↓とほとんど同じだったりするからさ。
http://www.i.u-tokyo.ac.jp/edu/course/ci/pdf/2005_8_ci_istmajor_all.pdf

普通の回答依頼かとも思ったんだが、真面目に答えて後釣り宣言されるのも
アレだから、微妙に情報系を逸脱する宿題はスルーして様子を見てることにしてる
687デフォルトの名無しさん:2010/02/16(火) 09:58:04
>>684
>>615 は、基礎的な数値計算だろ。学部1年生レベル。
688デフォルトの名無しさん:2010/02/16(火) 10:04:02
数式こそ長くて複雑だが、やってることは方程式の解を求めることや数値積分だ。
2分法、セカント法、シンプソン公式を使えばいい。
689デフォルトの名無しさん:2010/02/16(火) 14:48:36
>>676
これは>654の求めてるものと違うんじゃないかな?
『使いまわしの効かない検索用情報』の収集を
フルスキャンで行っているので、力まかせの探索にしかなってないよね。
690デフォルトの名無しさん:2010/02/16(火) 16:36:07
>>689
一応正規化した段階の情報だけは使いまわせる
691デフォルトの名無しさん:2010/02/16(火) 17:40:44
>>654
>>676 の改造版
先に全ての生徒間の類似度を計算してみた

予め O(N^2) のコストがかかっているので、検索回数が N に比べて十分に多いときだけ有効
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10531.c
692デフォルトの名無しさん:2010/02/16(火) 17:45:15
データ数が増えた時のパフォーマンスの低下率
条件付きUPDATE処理に置ける実更新率
こういった観点からデータ構造に見直しが入る
やりかたは一つじゃなく、データの分布に
前提条件を置くことによって、相当のパフォーマンス
改善になるが、汎用性と信頼性は犠牲になる
693デフォルトの名無しさん:2010/02/16(火) 19:02:05
k-dimension tree の出番ですか。
694デフォルトの名無しさん:2010/02/16(火) 20:36:27
>>693
ある範囲内をすべて列挙するのは簡単そうだけど
ある場所の近所だけを調べるってのは簡単なの?
695デフォルトの名無しさん:2010/02/17(水) 02:44:01
C言語固有の問題では無さそう。
データベース板か数学板で聞いてからの
ほうが良さげ。てか依頼者はもう見てないのか?
696デフォルトの名無しさん:2010/02/17(水) 03:38:52
>>654
傾向の近さの指標として相関係数を使用。gccを使用しているので、VC++では改変が必要かも。
また高速化の余地は十分あると思います。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10532.zip
697デフォルトの名無しさん:2010/02/17(水) 05:59:24
こういう問題は、「相関度」は外部関数としてブラックボックス
として扱うんじゃね?
698デフォルトの名無しさん:2010/02/17(水) 06:09:13
相関度に最適なデータ構造の設計も課題なのだが。
そうだ、これもブラックボックスにしよう。
699デフォルトの名無しさん:2010/02/17(水) 06:34:49
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10533.txt

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (VC8)
 [3.3] 言語: (C++)
[4] 期限: ([2010年2月17日12:00まで]

非常に短い期間を設定していますがあくまで希望納期です
700デフォルトの名無しさん:2010/02/17(水) 10:01:02
>>699
無料デバッガ募集でつか?(・∀・)ニヤニヤ
701デフォルトの名無しさん:2010/02/17(水) 10:04:06
無料デバッグしてやるでつよ(・∀・)ニヤニヤ

m_SumList.AddTail((void*)&List1);

m_SumList.AddTailに渡すのは(void *)(CStringList **)&List1で本当にいいんでつか?
702デフォルトの名無しさん:2010/02/17(水) 11:34:42
>699
いくらでも生じる可能性はある

それにしてもC++で(void *)とか何考えているんだ
703デフォルトの名無しさん:2010/02/17(水) 14:03:40
funkてw
704デフォルトの名無しさん:2010/02/17(水) 14:52:59
>>697
そうだね。だが難しい。相関度に適当な仮定を入れないと
無理だろ
>>698は回答として完全にナンセンスだが、それ以前に
問題も曖昧過ぎかもね。
705デフォルトの名無しさん:2010/02/17(水) 21:09:00
[1] 授業単元:C
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10535.c
[3] 環境
 [3.1] OS: 問わず
 [3.2] Cがコンパイルできれば・・・
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限:左側の要素をしきい値としたクイックソートです.閾値と等しい場合は右側へ
お願いします
706デフォルトの名無しさん:2010/02/17(水) 22:00:48
>>697
この問題の場合は高速で処理できることも重視されてるようだから、
ブラックボックス化しても処理速度が同等以上ならそのほうが良いけれど、
そうでなければ、どちらがいいかは一概には言えないよ。
707デフォルトの名無しさん:2010/02/17(水) 22:32:12
>>705
今日迄というのはいくら何でも んG
708デフォルトの名無しさん:2010/02/18(木) 16:28:57
[1] 授業単元:
期末レポート
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10536.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
FreeBSD バージョンは知りません
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc バージョンは知りません
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
2月末日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
C言語どころか、UNIXマシンの操作もおぼつきません。急ぎませんので
片付けて頂ければうれしいです
709デフォルトの名無しさん:2010/02/18(木) 17:06:42
>>708
int binarycopy(FILE *, FILE *);
int main(int argc, char **argv){
FILE *src, *dest;
if (argc != 3) return -1;
src = fopen(argv[1], "rb");
if(src == NULL) {
fprintf(stderr, "%s が開けない\n", argv[1]);
return -1;
}
dest = fopen(argv[2], "wb");
if (dest == NULL) {
fprintf(stderr, "%s が作成できない\n", argv[2]);
return -1;
}
if(!binarycopy(src, dest)) {
remove(argv[2]);
fprintf(stderr, "複製に失敗\n");
return -1;
}
fclose(src);fclose(dest);
return 0;
}
710デフォルトの名無しさん:2010/02/18(木) 17:07:25
>>708 続き。
int binarycopy(FILE *s, FILE *d) {
#define BUFFSIZE 256
char buff[BUFFSIZE], size = sizeof (char);
size_t n = 0, total = 0, buffsize = BUFFSIZE;
#undef BUFFSIZE
for (;;) {
n = fread(buff, size, buffsize, s);
n = fwrite(buff, size, n, d);
total += n;
// エラーが生じた場合や、end-of-file(ファイルの最後)に達した場合、
// 返り値は指定した個数よりも小さい値(またはゼロ)となる。
if (n == 0 || n < buffsize) break;
}
return total;
}
711デフォルトの名無しさん:2010/02/18(木) 21:35:42
>>699
いf(pぃst2){
POSITION pos2 = plist1->GetHeadPositon();
CString str = plist1->GetNext(pos2);
712デフォルトの名無しさん:2010/02/18(木) 21:37:02
>>711
pぃst2じゃねーや1だ
713デフォルトの名無しさん:2010/02/19(金) 15:26:05
HPはどのページも3クリック以内でたどり着けるのが良いとされています。
さて問題です。どのページからも、すべてのページへこの条件を満たすようにするには
各ページにリンクはいくつ必要でしょうか。
link(n)をページnのリンク数としたとき min { link(n) } を決定するという問題です。
714713:2010/02/19(金) 15:27:42
ページ数は、1000から1万の任意の値が与えられる物とします。
715デフォルトの名無しさん:2010/02/19(金) 15:38:17
min(Σlink(n))じゃなくて?
インデックスページを作り、
他のページはインデックスページへ1つのリンクを持てば
どのページへも2クリックで行けるから
min(link(n))はインデック以外のページすべて=1
716デフォルトの名無しさん:2010/02/19(金) 15:43:44
∩★テンプレに即していないんで★雑談扱いとさせて頂きます★∩
717デフォルトの名無しさん:2010/02/19(金) 15:53:55
min(max(link(n)))
718デフォルトの名無しさん:2010/02/19(金) 15:59:21
ページのリンクの最大数を、最も小さくするようにするってことでした。
719デフォルトの名無しさん:2010/02/19(金) 16:03:43
面白いけど奥深すぎ
720デフォルトの名無しさん:2010/02/19(金) 17:16:00
>>654
クラスタリング k-meansでググれ
721デフォルトの名無しさん:2010/02/20(土) 01:10:58
>>713
ページ数Nに対して 2√N くらいじゃないかね

戦略:
・全部のページを同じ大きさのm個のグループに分ける(各グループには N/m ページある)
・各グループにインデックスページを作り、
 グループ内の他の全てのページと相互リンクする
・各グループのインデックスページを全て相互リンクする
・任意の2ページ間は多くても
  自グループのインデックス→目標グループのインデックス→目標ページ
 の3クリックで移動できる

一番リンクの数が多いのは各グループのインデックスページで、
 max(link(n)) = (インデックス間の全結合) + (グループ内のリンク) ≒ m + N/m
これが最小になるのは m=√N のときで min(max(link(n))) ≒ 2√N
722デフォルトの名無しさん:2010/02/20(土) 01:29:14
>>721を書いてから半分にできることに気づいた

戦略:
・全部のページを同じ大きさのm個のグループに分ける
・グループ内のページは全て相互リンクする
・グループ内の(m-1)個のページにそれぞれ担当のグループを割り当て、
 グループ間の担当のページ同士を相互リンクする
・任意の2ページ間は多くても
  自グループの担当ページ→目標グループの担当ページ→目標ページ
 の3クリックで移動できる

このとき、リンクの数が一番多いのはグループ間を繋ぐ担当のページで、
 max(link(n)) = (グループ内の全結合) + (担当グループへのリンク) = N/m-1 + 1
最も効率が良くなるのは、グループ内の全てのページが他のグループの担当ページになるとき、
つまり N/m = m のときで、そのときm = √Nであって、 min(max(link(n))) = √N。
723デフォルトの名無しさん:2010/02/20(土) 01:41:52
独り言を書くのは俺も含めて勝手だが...
>一番リンクの数が多いのは...
と勝手に決めて、それが最小になるのは...
とする論法は頂けませんなw
希望的見積もりというのなら分かるが...

このスレで常連回答者やってる人どんな質問にも
答えがあって、答えなければいけないんだと
思い込む空気が醸成されておりそれに毒されてしまっ
てるかもしれないことに常に気をつけなければならないね。
プログラミングの場合は、数学の問題と違って
必ずしも正解があるとは限らない対象も扱わざるを得ない
場合が多くて大変だからこそ...
724722:2010/02/20(土) 01:51:03
>>723
>>一番リンクの数が多いのは...
>と勝手に決めて、それが最小になるのは...
>とする論法は頂けませんなw
ごめんなさいごめんなさい。>>721の勢いで適当なこと書きました。
ちゃんと計算したら max(link(n)) ≒ N/m + m/(N/m) で、
min(max(link(n)) ≒ 1.89*(N)^(1/3) くらいでしたorz

というかC/C++の宿題じゃないな、その点についても謝る
725デフォルトの名無しさん:2010/02/20(土) 01:56:24
論点がずれてた件…
「この戦略のもと」ってちゃんと書かないといけないな
採った戦略が厳密に最適かは分からんが、
それでも準最適な戦略を考え出すのがプログラムに必要な能力
726デフォルトの名無しさん:2010/02/20(土) 02:03:49
>>713
最適解かどうかは不明だけど、実現可能な解
#include<stdio.h>
#include<stdlib.h>

int max_min(long n)
{
long i, j;

if(n==1) return 0;
if(n<=4) return 1;
for(i=0;;i++)
{
for(j=1;j<=i;j++)
{
if(j*(i-j+1)*(i+1)+j>=n) return i;
}
}
return -1;
}

int main(int argc, char *argv[])
{
int n=1000;

if(argc==2) n=atoi(argv[1]);
printf("%d\n", max_min(n));

return 0;
}
727726:2010/02/20(土) 02:32:46
>>726
間違ってたorz
728デフォルトの名無しさん:2010/02/20(土) 02:53:03
頭の中のハイパーリンクも含めたらそうなるなw
729726:2010/02/20(土) 03:03:20
>>713
これで実現可能になった…はず
#include<stdio.h>
#include<stdlib.h>

int max_min(long n){
long i, j;

if(n==1) return 0;
if(n<=4) return 1;
if(n<=7) return 2;
for(i=2;;i++){
for(j=2;j<=i;j++){
if(j*(i-j+1)*(i-j+1)+j>=n){
return i;
}
}
}
return -1;
}

int main(int argc, char *argv[]){
int n=1000;

if(argc==2) n=atoi(argv[1]);
printf("%d\n", max_min(n));

return 0;
}
730デフォルトの名無しさん:2010/02/20(土) 03:23:33
正解と汚解ってかW
>>555に対する>>570とかの解答とかな
731デフォルトの名無しさん:2010/02/20(土) 04:06:13
>>615
http://codepad.org/R1c1NLXp
γ=100を計算するところまで。解析解との比較は面倒だからやってない。
x_in、x_outが単調に増減してるからそんなに間違ってないはず。
γ変えて議論するのは自分でやってくれ。γは128行目
732デフォルトの名無しさん:2010/02/20(土) 04:54:56
スレ違いだけど解きたくなっちゃうのは仕方ないよな
733デフォルトの名無しさん:2010/02/20(土) 05:01:57
解くべきはまずはその問題の出所。というよりも問題意識に共感できること。
そして実は対象に問題はなく真の問題は解きたいと思う汝自身に発している
かも知れないということも考えると間違いは少ない。

以上チラ裏
734デフォルトの名無しさん:2010/02/20(土) 06:13:09
735 ◆/91kCCQXBo :2010/02/20(土) 10:52:17
http://pc12.2ch.net/test/read.cgi/tech/1261443439/739

#include<stdio.h>
int main(void){
  int n,m,i,j;
  float ans;
  /* 解答 */
  printf("ページ数:");
  scanf("%d%*c", &n); m=n;
  ans = (n+1)/3.0;
  if((n=ans) != n) n++;
  printf("\n%d[page] %d[link/page]", m, n);
  /* 結果 */
  for(i=1;i<=m;i++){
    printf("\n%d:",i);
    for(j=0;j<n;j++){
      printf("%d ", (i + j*(n-1))%m+1 );
    }
  }
  puts(""); return 0;
}
736 ◆/91kCCQXBo :2010/02/20(土) 11:05:35
なんか、今見たら違ってる。
737 ◆/91kCCQXBo :2010/02/20(土) 13:18:05
もっと減らせそう
#include<stdio.h>
int main(void){
  int n,m,i,j;
  float ans;
  /* 解答 */
  printf("ページ数:");
  scanf("%d%*c", &n); m=n;
  ans = (n+1)/3.0;
  if((n=ans) != n) n++;
  printf("\n%d[page] %d[link/page]", m, n);
  /* 結果 */
  for(i=1;i<=m;i++){
    printf("\n%d:",i);
    for(j=0;j<n;j++){
      printf("%d ", (i + j*3)%m+1 );
    }
  }
  puts(""); return 0;
}
738デフォルトの名無しさん:2010/02/20(土) 14:17:55
>>737
>>722 のアルゴリズムの場合
ページ数 20 のときリンクの最大数は 4
これより減ることはあっても増えるのは無しだろう
1 : 2 3 4 5
2 : 1 6 7 8
3 : 1 2 9 10
4 : 1 2 11 12
5 : 1 2 13 14
6 : 1 2 15 16
7 : 1 2 17 18
8 : 1 2 19 20
9 : 1 2
10 : 1 2
11 : 1 2
12 : 1 2
13 : 1 2
14 : 1 2
15 : 1 2
16 : 1 2
17 : 1 2
18 : 1 2
19 : 1 2
20 : 1 2
739738:2010/02/20(土) 14:50:48
>>722 のアルゴリズムじゃねーw
740デフォルトの名無しさん:2010/02/20(土) 21:27:37
実際にリンク組んで確かめるプログラムはないんですか。
741デフォルトの名無しさん:2010/02/20(土) 23:30:28
ていうか、あってるかどうか確認するプログラムって、オーダはどうなる?
ページ数をN、最大クリック数をCとしたら、NCでできるのか?
742デフォルトの名無しさん:2010/02/21(日) 00:10:35
U個のユニットに分け、ユニットをそれぞれG個のグループに分ける。
各々のグループにはn枚目のページがあるとする。
また、n >= Uという条件をつける。

このとき、総ページ数N = U*G*n

まず、グループ内のn枚のページで、相互リンクを貼る。
相互リンクの数は (n-1)個

次に、グループ内のm枚目のページにm番目のユニットの各々のグループ内のページ(どれでもいい)各1枚へのリンクを貼る。
グループ外リンクの数は、G個

こうすると、(ユニット, グループ, ページ) = (u1, g1, p1)から(u2, g2, p2)へ行くのに、最大でも
(u1, g1, p1) -> (u1, g1, u2) -> (u2, g2, ??) -> (u2, g2, p2)の3クリックで行ける。

また、このとき合計リンク数はG + (n-1)個

G + (n-1)が最小となり、N = U*G*n, n >= Uを満たす数字を考えると
・まず、Uを増やして数を稼ぎたいので、U=n
・よって、N=G*n^2を満たし、G+(n-1)が最小となるn, Gを求める
・計算の結果、それはn^3=2N, G=n/2のとき
743デフォルトの名無しさん:2010/02/21(日) 00:19:18
例えば、64ページあるとき、
Unit 0{
 Group 0{ Page 0 = [(0,0,1), (0,0,2),(0,0,3),(0,1,0)], Page 1 = [(0,0,1), (0,0,2),(0,0,3),(1,0,0),(1,1,0)], ...}
 Group 1{ Page 0 = [(0,1,1), (0,1,2),(0,1,3),(0,0,0)], Page 1 = [(0,1,1), (0,1,2),(0,1,3),(1,0,0),(1,1,0)], ...}
}
Unit 1{
 Group 0{ Page 0 = [(1,0,1), (1,0,2),(1,0,3),(0,0,0),(0,1,0)], Page 1 = [(1,0,1), (1,0,2),(1,0,3),(1,1,0)], ...}
 Group 1{ Page 0 = [(1,1,1), (1,1,2),(1,1,3),(0,0,0),(0,1,0)], Page 1 = [(1,1,1), (1,1,2),(1,1,3),(1,0,0)], ...}
}
...
になって、グループ数=2, ユニット数=ページ数=4で、最大リンク数は5
744デフォルトの名無しさん:2010/02/21(日) 00:57:26
ヒューリスティックアプローチを探したいものだが
C/C++言語ではやめたほうがいいかも
VM上で実行できる処理系でないと
カーネルコードが書ける処理系ではお勧め出来ない
745738:2010/02/21(日) 02:02:28
>>738 のアルゴリズムで解いた結果は
総ページ数 1000 のとき、最大リンク数 18
総ページ数 10000 のとき、最大リンク数 40
合ってるかどうか未確認

詳細内容 50kB
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10538.lzh
746デフォルトの名無しさん:2010/02/21(日) 08:46:43
[1] 授業単元:
UNIX C Programming
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10541.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
Mac OSX 10.5.8
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc 4.0.1
 [3.3] 言語: どちらでも可
[4] 期限: 2010年2月24日夜7時まで
[5] その他の制限:
可能であれば強引な方法でも構いません。
上記リンクはCで書いてありますが、C++でも構いません。
何卒よろしくお願いします。
747デフォルトの名無しさん:2010/02/21(日) 15:06:11
>>713です。みなさんサンクスです。動かして確認してみます。
748デフォルトの名無しさん:2010/02/21(日) 23:08:02
>>745
1000個のほうはあってたよ。
10000個のほうは、おれの作った糞ツールでは、検証不能w
よかったらソースうpしてくれないか?

ちなみに>747とは別人です。
749738:2010/02/22(月) 00:03:29
>>713
>>748
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10543.c

6割近く何も指してないのが気に入らない
750デフォルトの名無しさん:2010/02/22(月) 09:03:49
>749
ありがと。

ここにあがってる回答はどれも不正解だった。
自分も正解はわからないけど、手計算で次の最適解を発見した。

ページ数 8 の答えは 2
ページ数 12 の答えは 3

ページ数 8 の最適解の例
1: 2 3
2: 4 5
3: 6 7
4: 8 1
5: 2 3
6: 4 5
7: 6 7
8: 8 1
751デフォルトの名無しさん:2010/02/22(月) 10:46:32
floor(n^(1/3))でいけそうなものだけどだめなのかね
752デフォルトの名無しさん:2010/02/22(月) 10:48:17
ceilだねごめん。
753デフォルトの名無しさん:2010/02/22(月) 12:59:14
リンク3、リンク4で賄える最大ページ数を求める方が良いと思う。
それが決まればその表引きで求まる。
754デフォルトの名無しさん:2010/02/22(月) 15:17:41
どの2点とっても、3つ以内の矢印でつながってるってことだろ。
総当たりやると矢印生成でかなり時間かかるな。
それを全ての2点でつながるかチェック。このチェックは時間かからないが、塵も積もれば山となる。
755デフォルトの名無しさん:2010/02/22(月) 15:24:23
同じ場所へ複数リンクが付くと無駄なので、最大リンク3なら
初めの方はリンクがかぶらないように配置していいはずだな。
リンク3なら、総数が3*3*3=27より上には出来ないから、この範囲で増減しながらしらみつぶしでやるか。

1: 2 3 4
2: 5 6 7
3: 8 9 10
4: 11 12 13
756デフォルトの名無しさん:2010/02/22(月) 15:39:56
このスレでちょくちょく出る宿題のテーマの道具
使えば最適解とは違うかも知れないがそれに肉薄
するのは簡単に出せるだろ?
但しヒューリスティックス系はC/C++では
書かないほうがいい。個人でやるのは止められないが
ネット公開するのはやめたほうがいい。今時。
757デフォルトの名無しさん:2010/02/22(月) 15:42:47
1000は18で出来るらしいが17以下の解見つけた人
758デフォルトの名無しさん:2010/02/22(月) 16:25:32
>>746
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10545.txt
汚くなってしまいましたが、どうぞ。
759548:2010/02/22(月) 16:53:39
>>579
>>580
無事提出できました。
ありがとうございました。最初は
どちらのほうを参考にさせてもらえ
ばよいのか悩みましたが、結局
友達と相談しながらやったらみなさんと
同じ結果が出るようになったので
そちらをだしました。
760デフォルトの名無しさん:2010/02/22(月) 19:13:50
>>757
1: 1 2 3 4 5 6 7 8 9 10
2: 11 12 13 14 15 16 17 18 19 20
以下略

金太郎飴方式恐るべし
761デフォルトの名無しさん:2010/02/22(月) 19:36:20
金太郎飴方式 yowa
762デフォルトの名無しさん:2010/02/22(月) 19:38:26
>>760
どこが金太郎飴かわからんけど、その調子でもう少し書いてみようか
763デフォルトの名無しさん:2010/02/22(月) 19:46:01
金太郎飴方式 towa?
764デフォルトの名無しさん:2010/02/22(月) 19:49:27
ろだで10539で質問した者ですが、また質問です。入門書などによくある*印でピラミッドを造るプログラムを作ったのですが、10行目と11行目の部分は削除しても同じように動作しました。
なぜでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10546.c
765デフォルトの名無しさん:2010/02/22(月) 19:54:01
>>764
バイナリが更新されていないからじゃないかな
766デフォルトの名無しさん:2010/02/22(月) 19:57:07
>>765
どういう意味なのでしょうか?
767デフォルトの名無しさん:2010/02/22(月) 19:57:42
>>762
問題によっては最適解近辺は金太郎飴の断面みたい
な状況であることを原理とした探索法のことではな
いかと想像
768デフォルトの名無しさん:2010/02/22(月) 20:03:46
>>766
修正前の実行ファイルを動かしたまま ソース修正
→ コンパイル
→ リンク (で、実行ファイルが上書きできなくて エラー)
→ 再実行 →あれ? 古いままの挙動じゃん
→ 実行ファイルのタイムスタンプ確認 アチャー
769デフォルトの名無しさん:2010/02/22(月) 20:06:04
>>768
試してみましたが、それはないと思います。実際自分が作ったものは10.11行があっても動きますが、実際本に書いてあるのは
それの10,11行目がないものが書いてありました。
770デフォルトの名無しさん:2010/02/22(月) 20:08:33
>>768
申し訳ありません。もう一度試してみたらうまくいきました。どうやらその行をctrl+xで切り取ったあと再び貼り付けてしまったようでした。
本当に申し訳ありませんでした。
771デフォルトの名無しさん:2010/02/22(月) 20:09:20
俺試してみたけど削除したらピラミッドなんて出てこんよ
772デフォルトの名無しさん:2010/02/22(月) 20:12:09
>>764
こちらで試したところでは、10行目、11行目を省くとピラミッドにはなりませんでした。

段数を入力してください。(0から40まで)
5
*
*
*
*
*
773デフォルトの名無しさん:2010/02/22(月) 20:17:30
>>770
>うまくいきましたというのは768さんのいう通りということです。
すいません。
774デフォルトの名無しさん:2010/02/22(月) 20:22:32
つまり?
775デフォルトの名無しさん:2010/02/22(月) 20:24:16
>>774
?
776デフォルトの名無しさん:2010/02/22(月) 20:24:51
>763
どこを切り取ってみても、数字がおなじ規則で並んでいる。

>760 の 1 の例だと

1 クリック目   9 種類のページにアクセス可能
2 クリック目   9 * 10 種類のページにアクセス可能
3 クリック目   9 * 10 * 10 種類のページにアクセス可能

もともといたページを含めて、ちょうど千種類のページにアクセスできる。

これは、どこを切り取ってみても、同じように数字が並んでいるので、
1 以外の数字についてもあてはまる。
規則的にならんでいるので、検証するにしても、
1 だけ検証できれば全部OKみたいな感じ。
1クリック目の選択肢が 9 種類しかなくて、n^3 の爆発力をかなり損しているけど
ぎりぎり届いてた。n^3 の爆発力が重要な問題だった。

777デフォルトの名無しさん:2010/02/22(月) 20:25:41
数学的なことはわからんけど、こんな法則をみつけた。

a = pow(N, 1/3)    /* ページ数の3乗根をとる */
min = floor(a)      /* 天井とそこをとる */
max = ceil(a)
min = pow(min, 3)    /* 3乗して元に戻す */
max = pow(max, 3)
if(min < N && N <= max) {  /* レンジに収まってれば */
printf("答えは %f だよ", ceil(a))
}
else {
printf("答えは %f だよ", floor(a))
}

778デフォルトの名無しさん:2010/02/22(月) 20:37:05
>>750のように一つずつずらしていけば、3クリック以内で到達できるようにできるってことか。
779デフォルトの名無しさん:2010/02/22(月) 20:44:05
1000なら10個でいいってこと?
1000から999へいけるか。
1000 -> 1(2-11) -> 11(102-110) -> 110で最大到達地点は110では。
780デフォルトの名無しさん:2010/02/22(月) 20:46:45
間違えた。一手目が1だけではない。再考する。
781デフォルトの名無しさん:2010/02/22(月) 20:56:59
1から初めて全部いけそうだな。他の数字も純粋しているだけだから同様ってことか。

1 2- 
2 12-
3 22-
・・・・
10 92-
11 102-
12 112-
・・・・
100 992- 
・・・・
998 972-
999 982-
1000 992-
782デフォルトの名無しさん:2010/02/22(月) 20:59:44
>>776
9通りがよくわからなかったが今わかった。1は自分自身に向かわせてるからね。
2から初めて他所で自分自身に向かわなければこっちの方が効率良いはず。
783デフォルトの名無しさん:2010/02/22(月) 21:02:36
一番重要なことは、金太郎飴方式だと、
リンク先のユニーク性を簡単に確保できることだね。

N^3 + N^2 + N + 1 >= N

この付近が最適解だってのはわかってたけど、
ユニーク性の確保が悩みの種だったし。
1クリック目のとび先と、2クリック目の飛び先がかぶってたら
大きなロスになるし。
784デフォルトの名無しさん:2010/02/22(月) 21:52:22
max(links(n)) * Σlinks(n)
これで評価してみれば?
785デフォルトの名無しさん:2010/02/22(月) 22:16:13
N=8の時の金太郎飴状態なリンク例
1:4 7
2:1 7
3:1 6
4:7
5:1 6
6:1 8
7:5 8
8:2 3
786デフォルトの名無しさん:2010/02/23(火) 02:52:45
【質問テンプレ】
[1]プログラム演習
[2]標準入力から入力した自然数を変数iに格納し i<(2のj乗)となる最小の自然数j
を求める。ただし再帰関数を用いる。
[3] Windows 7/Borland C++ 5.0/C言語
[4] 3/1迄

再帰関数がよくわからないので分かり易いサイトなどあれば教えてください。
787デフォルトの名無しさん:2010/02/23(火) 09:37:17
int mypower2(int n)
{
788787:2010/02/23(火) 09:38:29
ごめミスwスルーしてくれwww
789787:2010/02/23(火) 10:28:58
>>786
再帰関数は、自分で自分を呼ぶ関数と考えておけばおk

わざわざ関数作らなくてもシフトで良かったんだったw

int minpower(int j,int i)
{
return (1 << j) > i ? j : minpower( j+1, i);
}

main()
{
int i,j;
scanf("%d", &i);
j = minpower( 0, i);
}
790 ◆RYJnp/9orQ :2010/02/23(火) 13:36:10
>>789
ありがとうございます。すみませんが
return (1 << j) > i ? j : minpower( j+1, i);
この行の?と:の意味がよくわかりません。
これはどういう動作をしてるのでしょうか?
791デフォルトの名無しさん:2010/02/23(火) 13:38:42
?:は三項演算子。教科書読みなさい。
792 ◆RYJnp/9orQ :2010/02/23(火) 13:48:36
>>791
ありがとうございます。すいませんでした。
793デフォルトの名無しさん:2010/02/24(水) 03:16:55
[1] 授業単元:プログラミング
[2] 問題文:ncursesを使い、Linux上で動作するテトリスを作成せよ。
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 3月17日(水)
[5] その他の制限: 特になし

ttp://www.nhk.or.tv/kow/program/program_128.php

上記のページを見ながら作ったのですが、うまく動作しませんでした。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10549.c

よろしくお願いします。



794デフォルトの名無しさん:2010/02/24(水) 11:54:38
クローンゲーム?
795デフォルトの名無しさん:2010/02/24(水) 17:33:50
>>793
ヒント:keypad 自作ライブラリ
796デフォルトの名無しさん:2010/02/24(水) 20:40:24
>>795
curses 使ったことある?
797708:2010/02/26(金) 12:37:08
>>709,710
ありがとうございます。
ただ課題の条件を満たしてる
とは私でもちょっと思えないのです。
どこに問題があるのかがわからない
ので多分NGじゃないかと
798デフォルトの名無しさん:2010/02/26(金) 13:38:22
>>797
「問題」が何なのか書いてない、微妙に不親切な課題だけど
「問題」は「同じファイル名を指定したときにオリジナルのファイル消される」だと思う

今のところ使われている関数はstdio.hで定義されている分だけなのに
使われていないunistd.hがインクルードされていて、ヘッダファイルの追加を禁止しているところをみると
unistd.hで定義されている関数でどうにかしろってことだと思うぜ
799708:2010/02/26(金) 13:49:49
>>798
ありがとうございます
なんかそんなかんじですね。
しかし私にはここからどうすればいいのやら..
800709:2010/02/26(金) 15:22:57
>>708
> プログラムのmainの部分であるが、
> 既に問題を含んでいる。
> 問題を修正し、mainが呼び出している
> 関数で追加する必要がある部分を記述

ここでの問題、とは、

>>708
> int main(int argc,char **argv){
> FILE *src,*dest;
> int binarycopy(FILE*,FILE*);
> if(argc!=3)

上記三行目部分で、問題を修正とは、

>>709
> int binarycopy(FILE *, FILE *);
> int main(int argc, char **argv){
> FILE *src, *dest;
> if (argc != 3) return -1;

のように単に入れ替えること、と個人的には解釈した。
801デフォルトの名無しさん:2010/02/26(金) 15:30:17
まさかとは思うけど、エラーが発生したときにfcloseしていないとか、そういうことを問題と言ってるんじゃないよね?

「同じファイル名を指定したときにオリジナルのファイル消される」のを修正するのは以外と難しい。
$ ./a.out foo ./foo
のようなものは実際にファイルを開いてみないとわからないし、
$ ln -s bar foo
してあったら
$ ./a.out foo bar
でも、オリジナルのファイルが消されてしまいます。
802709:2010/02/26(金) 15:33:02
と、思ったら、嫌な予感。
まさかと思い確認すると、

>>708
> int main(int argc,char **argv){
> FILE *src,*dest;
> int binarycopy(FILE*,FILE*);
> if(argc!=3)

これは間違いでも何でもなかった。
ごめんw
803デフォルトの名無しさん:2010/02/26(金) 20:29:07
同じファイルをコピーしても消えないように力技で対策してみたw&removeする前にファイル閉じないといけないかもなんで閉じといたw
int main(int argc, char** argv)
{
FILE *src, *dest;
int binarycopy(FILE*,FILE*);
if (argc != 3) return -1;
src = fopen(argv[1], "rb");
if(src == NULL) {
fprintf(stderr, "%s が開けない\n", argv[1]);
return -1;
}
//読み書き両用で開く
dest = fopen(argv[2], "rb+");
if(dest==NULL){
//開けなかったら書き込み用で再試行
dest = fopen(argv[2], "wb");
}
if (dest == NULL) {
fclose(src);
fprintf(stderr, "%s が作成できない\n", argv[2]);
return -1;
}
if(!binarycopy(src, dest)) {
fclose(src);
fclose(dest);
remove(argv[2]);
fprintf(stderr, "複製に失敗\n");
return -1;
}
fclose(src);fclose(dest);
return 0;
}
804デフォルトの名無しさん:2010/02/26(金) 20:32:01
これは>>710を改造させてもらった
unix系の環境が手元にないんで、動くかどうかシランw
int binarycopy(FILE *s, FILE *d) {

#define BUFFSIZE 256
char buff[BUFFSIZE], size = sizeof (char);
size_t n = 0, total = 0, buffsize = BUFFSIZE;
#undef BUFFSIZE

// 出力ファイルポインタを先頭にもっていく
rewind(d);

for (;;) {
n = fread(buff, size, buffsize, s);
n = fwrite(buff, size, n, d);
total += n;
// エラーが生じた場合や、end-of-file(ファイルの最後)に達した場合、
// 返り値は指定した個数よりも小さい値(またはゼロ)となる。
if (n == 0 || n < buffsize) break;
}
// 出力ファイルをtotalサイズで切り詰める
ftruncate(_fileno(d),total);
return total;
}
805708:2010/02/27(土) 06:41:00
>>803
ありがとうございます。何か良さげですね。
>>804 >>800
ありがとうございます。参考にさせて頂きます。
806デフォルトの名無しさん:2010/03/02(火) 21:39:22
[1] 授業単元:C++ 
[2] 問題文(含コード&リンク):
成績を表示するプログラムを作成せよ。処理する人数は40人であるとする。以下の様な仕様である
1番の成績を入力せよ
85
1番は85点です
2番の成績を入力せよ
100
2番は100点です

for(i=___;i<=____;____) {
cout << i << "______\n";
cin >> n;
cout << i << "____" << n << "_____\n";
}

この上のプログラムの一部を使って(アンダーラインを穴埋めして)、上の使用を満たすプログラムを作成せよ。[3] 環境
 [3.1] OS: xbuntu
 [3.3] 言語: C++
[4] 期限: 2010年3月3日まで
[5] その他の制限: for文でお願いします。できるだけ簡単にお願いします。
あと、
#include<iostream>
using namespace std;
int main() {
で始めて
return 0;
}で終えるようにしてもらえますか
807デフォルトの名無しさん:2010/03/02(火) 21:42:14
[1] 授業単元:C++ 
[2] 問題文(含コード&リンク):
角度0から90°,10°刻みのsin,cos,tanの表を作成せよ

[3] 環境
 [3.1] OS: xbuntu
 [3.3] 言語: C++
[4] 期限: 2010年3月3日まで
[5] その他の制限: for文でお願いします。できるだけ簡単にお願いします。
あと、
#include<iostream>
using namespace std;
int main() {
で始めて
return 0;
}で終えるようにしてもらえますか
808デフォルトの名無しさん:2010/03/02(火) 22:24:20
>>807
#include<iostream>
using namespace std;
int main() {

cout << " | sin | cos | tan " << "\n"
<< "----+-------------------------------" << "\n"
<< " 0 | 0.000000 | 1.000000 | 0.000000" << "\n"
<< " 10 | 0.173648 | 0.984808 | 0.176327" << "\n"
<< " 20 | 0.342020 | 0.939693 | 0.363970" << "\n"
<< " 30 | 0.500000 | 0.866025 | 0.577350" << "\n"
<< " 40 | 0.642787 | 0.766045 | 0.839099" << "\n"
<< " 50 | 0.766044 | 0.642788 | 1.191753" << "\n"
<< " 60 | 0.866025 | 0.500000 | 1.732050" << "\n"
<< " 70 | 0.939693 | 0.342020 | 2.747475" << "\n"
<< " 80 | 0.984808 | 0.173648 | 5.671272" << "\n"
<< " 90 | 1.000000 | 0.000000 | --------" << endl;

return 0;
}
809デフォルトの名無しさん:2010/03/02(火) 22:41:19
>>808
いつも出力ってcoutで始めていたんですが、今回はcoutって使わないんですか?
;は分の最後のいらないんですか?
810デフォルトの名無しさん:2010/03/02(火) 22:43:50
>>808
これって、多分、予め、表を作ると、プログラムの意味ないし、まずくないですか
sin,cos,tanの値は全部、計算するんですよね
811デフォルトの名無しさん:2010/03/02(火) 23:02:46
>>810
表を作れとは書いてあるがどこに計算しろと書いてあるんだ
812デフォルトの名無しさん:2010/03/02(火) 23:11:00
>>809
そこまで気づいてるなら自己解決できそうなもんだが。
5行目の「cout <<」から16行目の 「<< endl;」までがながーい1つの文だ。
813デフォルトの名無しさん:2010/03/02(火) 23:11:22
for文を使えとは書いてあるがな
814デフォルトの名無しさん:2010/03/02(火) 23:11:51
>>811
そうですね。しかし、これは、cout(6行目から)や;(それぞれの文末)はいらないんですか?
815デフォルトの名無しさん:2010/03/02(火) 23:14:23
>>812
>>814の事はもう出ていました。ごめんなさい。endl;は\n;にしているのでそこはそっちにしようと思います。
816デフォルトの名無しさん:2010/03/03(水) 00:40:05
>>1
#include <iostream>
#include <cmath>
#define M_PI 3.14159265358979323846
using namespace std;
int main(){
  cout << fixed;
  for(int deg=0; deg<=90; deg+=10)
    cout << deg << " "
       << sin(deg/180. * M_PI) << " "
       << cos(deg/180. * M_PI) << " "
       << tan(deg/180. * M_PI) << endl;
}
817デフォルトの名無しさん:2010/03/03(水) 01:10:13
>>816
ありがとうございました。
818デフォルトの名無しさん:2010/03/03(水) 01:13:35
>>817
これ、コンパイル行うとtan90°だけ、とんでもない値が出てしまうんですが…
819デフォルトの名無しさん:2010/03/03(水) 01:14:36
>>817でなくて>>816でした。すみません。
820デフォルトの名無しさん:2010/03/03(水) 01:39:01
>>818
tan90° がいくらになるか分かってる?
821デフォルトの名無しさん:2010/03/03(水) 03:01:26
tan90°=1/0=+NAN
822デフォルトの名無しさん:2010/03/03(水) 13:15:01
NaNに+も-もなかろう
823デフォルトの名無しさん:2010/03/03(水) 17:05:05
>>820
それはもちろん値はないですよね。
824デフォルトの名無しさん:2010/03/03(水) 19:12:36
>>822
定義されてるCPUもある
無視してもしなくても使用者次第
825デフォルトの名無しさん:2010/03/03(水) 19:31:36
>>816
tan90°は値が無いのでそうでてもいいと思うし、そうします。ありがとうございました。
826デフォルトの名無しさん:2010/03/03(水) 19:36:14
[1] 授業単元:C++ 
[2] 問題文(含コード&リンク):
任意の整数から整数までの合計を計算するプログラムを作成せよ。ただし、必ず、(始めに入れた数字)<(最後に入れた数字)となるように数値を入力するものとする。
始めの数を入力せよ
156
終わりの数を入力せよ
328
156から328までの合計は41866です。

上の問題では(始めに入れた数字)<(最後に入れた数字)としたが、これを、(始めに入れた数字)≧(最後に入れた数字)と入力しても合計を計算できるようなプログラムも作成せよ

[3] 環境
 [3.1] OS: xbuntu
 [3.3] 言語: C++
[4] 期限: 2010年3月4日まで
[5] その他の制限: for文でお願いします。できるだけ簡単にお願いします。
あと、
#include<iostream>
using namespace std;
int main() {
で始めて
return 0;
}で終えるようにしてもらえますか
827デフォルトの名無しさん:2010/03/03(水) 19:52:36
>>824
NaNの+と-ってどうやって見分ければいいの?
828デフォルトの名無しさん:2010/03/03(水) 19:55:42
+と-のInfinityと勘違いしてるに2ガバス
829デフォルトの名無しさん:2010/03/03(水) 19:57:06
>>826
#include<iostream>
using namespace std;
int main() {
int m, n, t, sum = 0;
cout << "始めの数を入力せよ" << endl;
cin >> m;
cout << "終わりの数を入力せよ" << endl;
cin >> n;
if (n < m) {
t = m;m = n;n = t;
}
for (int i = m; i <= n; i++) sum += i;
cout << m << "から" << n << "までの合計は" << sum << "です" <<endl;
return 0;
}
830デフォルトの名無しさん:2010/03/03(水) 20:11:21
#include <cstdlib>
#include <fstream>
// ここから始まる...
#include <iostream>
using namespace std;
int main()
{
ofstream of("prog.cpp");
int i, start, end;
cout << "初めの数字を入力せよ" << endl;
cin >> start;
cout << "終わりの数字を入力せよ" << endl;
cin >> end;
of << "#include <iostream>" << endl;
of << "using namespace std;" << endl;
of << endl;
of << "int main()" << endl;
of << "{" << endl;
of << "\tlong int sum = " << start;
for (i = start + 1; i <= end; ++i)
of << " + " << i;
of << ";" << endl;
of << "\tcout << " << start << " << \"から\" << " << end;
of << " << \"までの合計は\" << sum << \"です。\" << endl;" << endl;
of << "\treturn 0;" << endl;
of << "}" << endl;
of.close();
system("g++ prog.cpp -o prog");
system("./prog");
return 0;
}
831デフォルトの名無しさん:2010/03/03(水) 20:18:54
>>829
>>830
ありがとうございます。>>830での方はもう少しだけ簡単にならないですか?
>>829の様なシンプルな形にならないですか?そういう形って習ってないんですよね
832デフォルトの名無しさん:2010/03/03(水) 20:39:56
#include<iostream>
using namespace std;
int main(){
cout << "始めの数を入力せよ" << endl;
int m;
cin >> m;
cout << "終わりの数を入力せよ" << endl;
int n;
cin >> n;
if (n < m){
int t = m;m = n;n = t;
}
cout << m << "から" << n << "までの合計は" << (((m + n) * (n - m + 1)) >> 1) << "です" <<endl;
return 0;
}
833デフォルトの名無しさん:2010/03/03(水) 20:41:49
>>826
#include<iostream>
using namespace std;
int main() {
int s,e;

cout << "始めの数を入力せよ" << endl;
cin >> s;
cout << "終わりの数を入力せよ" << endl;
cin >> e;

cout << s << "から" << e << "までの合計は" << s*(e-s+1)+(e-s)*(e-s+1)/2 << "です。" << endl;
return 0;
}
834831:2010/03/03(水) 20:59:50
これって
始めの数
3
終わりの数
8
って入れても
始めの数
9
終わりの数
2
って入れてもどっち(始めの数が大きい場合と小さい場合)でも計算できるのを作るのが2番目だと思うんですが、(始めに入れた数字)≧(最後に入れた数字)の場合しか計算できないんですよね…
835デフォルトの名無しさん:2010/03/03(水) 21:06:08
>>834
あなた自身の書き込みに

>ただし、必ず、(始めに入れた数字)<(最後に入れた数字)となるように数値を入力するものとする。

という前提条件がありますけど?
836831:2010/03/03(水) 21:12:52
>>835
上の問題ではその様にしましたが、下の問題では(始めに入れた数字)≧(最後に入れた数字)でも計算できるようにせよって事ではないんですかね?
837デフォルトの名無しさん:2010/03/03(水) 21:18:08
あぁ見逃してた
if (e < s){
int t = s;s =e;e = t;
}
swapすればいいだけかと。
838831:2010/03/03(水) 21:28:01
#include<iostream>
using namespace std;

int main(){
int t,s,e;

cout << "始めの数を入力せよ" << endl;
cin >> t;
cout << "終わりの数を入力せよ" << endl;
cin >> s;

if (e < s){
int t = s;
s = e;
e = t;
}

cout << t << "から" << s << "までの合計は" << (((t + s) * (s - t + 1)) >> 1) << "です" <<endl;

return 0;
}

どこが違いますかね…どちらにしても、for文を使うんですよね…
839デフォルトの名無しさん:2010/03/03(水) 21:38:53
>>826
#include<iostream>
using namespace std;
int main()
{
    int s, e, is, ie;

    cout << "始めの数を入力せよ" << endl;
    cin >> s;
    cout << "終わりの数を入力せよ" << endl;
    cin >> e;

    is = s;
    ie = e;

    if (s > e) {
is = e;
ie = s;
    }
    cout << s << "から" << e << "までの合計は"
 << ie * (ie + 1) / 2 - is * (is - 1) / 2
 << "です。" << endl;
    return 0;
}
840831:2010/03/03(水) 21:45:35
>>839
すみません。やっぱり結果がおかしくなってしまうんですよね。
841デフォルトの名無しさん:2010/03/03(水) 21:51:34
どうおかしくなるのかわからないと直しようがないと思うんだけど
端末に吐き出されるデータ貼ってみたら?
842831:2010/03/03(水) 22:08:13
>>841
ごめんなさい。勘違いしておりました。申し訳ありませんでした。
ありがとうございます
843デフォルトの名無しさん:2010/03/03(水) 22:17:30
(start+end)(end-start+1)/2 じゃね?
844831:2010/03/03(水) 23:01:08
>>843
でも、 ie * (ie + 1) / 2 - is * (is - 1) / 2 でも出ますよ
845デフォルトの名無しさん:2010/03/03(水) 23:42:21
ie * (ie + 1) / 2 - is * (is - 1) / 2 = ((ie^2 - is^2) + ie - is) / 2
=((ie + is)(ie - is) + (ie - is)) / 2 = (ie + is)(ie - is + 1) / 2

よってどちらでも同じ
846831:2010/03/03(水) 23:44:03
確認で、自分で数字代入したらどっちでも等しくなりました。
ありがとうございました
847831:2010/03/03(水) 23:57:44
[1] 授業単元:C++ 
[2] 問題文(含コード&リンク):
入力した整数の桁を数えるプログラムを作成せよ
整数値を入力せよ
5659693
7桁である。

プログラムの一部を以下に示す
____{
a=a/10;
keta++;
}_____
___
を穴埋めしてください。
[3] 環境
 [3.1] OS: xbuntu
 [3.3] 言語: C++
[4] 期限: 2010年3月4日まで
[5] その他の制限: while,do-while文辺りでお願いします。できるだけ簡単にお願いします。
あと、
#include<iostream>
using namespace std;
int main() {
で始めて
return 0;
}で終えるようにしてもらえますか
848デフォルトの名無しさん:2010/03/04(木) 00:07:40
#include <iostream>
using namespace std;
int main() {
int a, keta = 0;

cout << "整数値を入力せよ" << endl;
cin >> a;

do {
a = a / 10;
keta++;
}while(a);

cout << keta << "桁である。" << endl;

return 0;
}
849デフォルトの名無しさん:2010/03/04(木) 00:16:03
ありがとうございました
850839:2010/03/04(木) 00:28:16
>>843
> (start+end)(end-start+1)/2 じゃね?
なるほど、843の方がオーバーフローしにくいから、良いですね。
851デフォルトの名無しさん:2010/03/04(木) 00:35:13
[1] 授業単元:知識情報基礎実験
[2] 問題文(含コード&リンク):
乱数を希望数取得し、それをバブルソート、挿入ソート、クイックソート、ヒーブソートの各種を用いてソートせよ(4個のプログラムを作成する)。
また、それぞれ比較回数、実行時間を計測せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Cygwin Bash Shell
 [3.3] 言語:C言語
[4] 期限:明日
[5] その他の制限:できるだけ標準ライブラリ関数は使わないでください。特にクイックソートはqsort関数を使わないでください。
852デフォルトの名無しさん:2010/03/04(木) 00:51:28
>[3.2] コンパイラ名とバージョン:Cygwin Bash Shell
こんな学校あるの?
853デフォルトの名無しさん:2010/03/04(木) 00:53:59
do〜while文と同じ機能を持つ文章をwhile文で書くにはどうすればいいですか?
for文と同じ機能を持つ文章をwhile文で書くにはどうすればいいですか?
854デフォルトの名無しさん:2010/03/04(木) 00:56:40
do{
}while(〜)

while(1){
...
if(〜)break;
}
855デフォルトの名無しさん:2010/03/04(木) 01:09:58
>>852
すいません、素人なんでその辺よく分かってなくて。なんか変でしたか?
856デフォルトの名無しさん:2010/03/04(木) 01:40:41
Cygwinなら何でもいいんだろ
MinGWでもいいし
要するにgccならLinuxだっていいんでわ
857デフォルトの名無しさん:2010/03/04(木) 01:46:22
OSも指定されてるじゃないか。
意地悪して曲解しないで、WindowsのCygwin環境でgcc使う、と解釈してやれよ。
858デフォルトの名無しさん:2010/03/04(木) 01:48:58
説明下手ですいません。>>857さんの言うとおりです。
WindowsでCygwin、gccでお願いします。
ホント、説明下手ですいません。
859デフォルトの名無しさん:2010/03/04(木) 02:01:11
>>857
いや。
授業料を払ってまで
> WindowsのCygwin環境でgcc使う
なんてのは嫌だなぁとね
860デフォルトの名無しさん:2010/03/04(木) 08:22:58
>>859
でも、フリーのコンパイラの方がいまや権威がありませんか?
それともVC の cl のほうがいいですかね?
861デフォルトの名無しさん:2010/03/04(木) 08:33:06
俺はgccじゃなくてWindowsが嫌なのかと思ったが
これはマ補正か
862デフォルトの名無しさん:2010/03/04(木) 09:32:13
>>859
>>861
場違いな話なのにしつこいな
863デフォルトの名無しさん:2010/03/04(木) 15:16:32
Cygwin with bashコンソールと
言えばgccが定番だがこの環境である限り
gcc以外にもVcやらbccも動いてしまう
(コマンドライン版だが)
幸い、課題はコンパイラの種類に
鋭敏に依存って系統じゃないが。
コンパイラが記載されてない場合は
コンパイラの種類を極力選ばない
コードってことになるが、これは不可能か
当然時間がかかるかのいずれかで
明日までとの期限設定は相当無謀ぢゃないかと。
864デフォルトの名無しさん:2010/03/04(木) 15:18:52
>>854
それって1番の問題ですか?あと、〜や…には実際例えばどんな事が入るんでしょうか
865デフォルトの名無しさん:2010/03/04(木) 16:32:57
>>863
なんでこんな課題でそんなにコンパイラ依存のコードを思いつけるんだ?
866デフォルトの名無しさん:2010/03/04(木) 16:52:47
Windows上のC処理系はそれぞれがかなり拡張されていて
処理系非依存なコードを書くのは至難の技だったりする
これは一般論的常識(但し勿論そんなに知られていない)

プロンプト上で動かす配列ソートプログラム程度では
あまし当て嵌まらない。
これ特殊な例外になるがトレーニングレベルではむしろ
こっちのほうが目立つ。

テンプレに沿う限り一般論を基礎にせざるを得ないだろ?
867デフォルトの名無しさん:2010/03/04(木) 17:27:26
#include <iostream>
using namespace std;

int main() {
int ninzu=1,ten;

while(1){

cout << ninzu << "人目の点数を入力してください\n";
cin >> ten;

if(ten == 999)
break;

if(ten >= 101 || ten < 0){
cout << "点数が不正です。再度入力してください\n";
continue;
}

cout << ninzu << "人目の点数は" << ten << "点です\n";

ninzu++;

}

cout << "点を入力した人数は" << ninzu-1 << "人です\n";

return 0;
}
このプログラムで最後のcoutの行の『ninzu-1』ではなくて『ninzu』と直接人数を表せる風にするにはどうすればいいですか
868デフォルトの名無しさん:2010/03/04(木) 17:35:12
int ninzu=1を
int ninzu=0に書き換える
869デフォルトの名無しさん:2010/03/04(木) 17:42:13
--ninzu;を表示する前に入れる。
870デフォルトの名無しさん:2010/03/04(木) 19:17:08
>>868
>>869
どちらかでよろしいんでしょうか
871デフォルトの名無しさん:2010/03/04(木) 20:08:03
int ninzu=1を
int ninzu=0に書き換えて、最後から4行目の上に--ninzuu;って入れるんですかね?


872デフォルトの名無しさん:2010/03/04(木) 20:13:12
やってみてから聞け
873デフォルトの名無しさん:2010/03/04(木) 20:28:44
>>872
4人目に999入れると
入力した人数は2人って出るんです
874デフォルトの名無しさん:2010/03/04(木) 20:41:35
普通に考えるとどっちか1つでいいと思うんだが・・・
875デフォルトの名無しさん:2010/03/04(木) 20:45:16
インクリメントでカウントしていくときは
初期値を0にしておくのが一般的
876デフォルトの名無しさん:2010/03/04(木) 20:45:23
入力した人数を少なめに申告するのは女の嗜み
877デフォルトの名無しさん:2010/03/04(木) 20:46:38
>>874
0人目の点数を入力してください
90

5人目の点数を入力してください
999

点数を入力した人数は4人です
って出ました
878デフォルトの名無しさん:2010/03/04(木) 21:00:42
#include <iostream>
using namespace std;

int main() {
int ninzu=0,ten;

while(1){

ninzu++;

cout << ninzu << "人目の点数を入力してください\n";
cin >> ten;

if(ten == 999){ninzu--;break;}

if(ten >= 101 || ten < 0){
cout << "点数が不正です。再度入力してください\n";
continue;
}

cout << ninzu << "人目の点数は" << ten << "点です\n";

}

cout << "点を入力した人数は" << ninzu << "人です\n";

return 0;
}

これでどう?終了判定の部分をもうちょっときれいにしたいけど・・・
879デフォルトの名無しさん:2010/03/04(木) 21:19:57
>>878
これって、3人目に999を入れると、。入力した人数2人って出るんですが、それはいいんですか
880デフォルトの名無しさん:2010/03/04(木) 21:50:06
999ってのは「データの入力が終わりますよ」って意味で入力してるんじゃないの?
if(ten == 999)ってところを見るとそういう風に見えるんだけど。
あと、if(ten >= 101 || ten < 0)としている時点で999を点数として処理しないようになってるし。
881デフォルトの名無しさん:2010/03/04(木) 22:01:36
>>880
そうですね。999はそういう意味ですよね。ありがとうございました。
882デフォルトの名無しさん:2010/03/04(木) 22:08:27
#include <iostream>
using namespace std;

int main() {
int ninzu=1,ten;

while(1){

cout << ninzu << "人目の点数を入力してください\n";
cin >> ten;

if(ten == 999){break;}

if(ten >= 101 || ten < 0){
cout << "点数が不正です。再度入力してください\n";
continue;
}

cout << ninzu << "人目の点数は" << ten << "点です\n";
ninzu++;

}

ninzu--;
cout << "点を入力した人数は" << ninzu << "人です\n";

return 0;
}

致命的な間違いをしてたorz
883デフォルトの名無しさん:2010/03/05(金) 00:02:53
>>882
>>878と結果は一緒なんですが、何が違うんですか
884デフォルトの名無しさん:2010/03/05(金) 00:13:39
ぽっくり?
885デフォルトの名無しさん:2010/03/05(金) 00:32:28
>>883
100より大きい点数を入れてみれば分かる
886デフォルトの名無しさん:2010/03/05(金) 00:44:39
>>885
その101以上の点数の人も数えちゃってるって事ですね。
ありがとうございます
887デフォルトの名無しさん:2010/03/05(金) 01:13:47
>>885
すみません。これ元のにninzu--入れたみたいなんですが、888とか入れてみても結果は同じなんですよね
888デフォルトの名無しさん:2010/03/05(金) 01:17:14
>>887
つまりこれが、ninzu-1をninzuと直接表せるやり方って事ですか。納得しました。ありがとうございます
889デフォルトの名無しさん:2010/03/05(金) 01:22:57
int ninzu=0,ten;

while(1){
cout << ninzu+1 << "人目の点数を入力してください\n";
cin >> ten;

if(ten == 999)
break;

if(ten >= 101 || ten < 0){
cout << "点数が不正です。再度入力してください\n";
continue;
}

ninzu++;
cout << ninzu << "人目の点数は" << ten << "点です\n";

}
cout << "点を入力した人数は" << ninzu << "人です\n";
890 ◆/91kCCQXBo :2010/03/09(火) 08:27:37
期限無いからいいか、最近宿題無いし。>>713
750,785チョウシいいのはリンクページ数が少ない時だけ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10547.c
891デフォルトの名無しさん:2010/03/10(水) 11:06:26
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
行列のrankを求める関数 rank( ) を実装せよ
(提示ソースコードは後記)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 3/15
[5] その他の制限: 提示されたプログラムは下記のもの。

892891:2010/03/10(水) 11:08:16
>>891の続き

include <iostream>
#include <cstdlib>
using namespace std;

#define ROWS 5
#define COLS 4

int rank( double array[ROWS][COLS] )
{

}

int main( )
{
srand( time(NULL) );

double array[ROWS][COLS];

for( int r=0; r<ROWS; ++r ){
for( int c=0; c<COLS; ++c ){
array[r][c] = rand( );
}
}

rank( array );

return 0;
}
893891:2010/03/10(水) 11:12:49
すみません>>891の言語はC++です。
894デフォルトの名無しさん:2010/03/10(水) 11:22:00
>>891
基本変形とかLUでいいの?
それともSVDやQRでってこと?
895891:2010/03/10(水) 14:12:55
速度より私が理解できた方が良いので
基本変形が嬉しいです。
896デフォルトの名無しさん:2010/03/10(水) 15:39:38
>>895
じゃあ、自分でやれよ
897デフォルトの名無しさん:2010/03/10(水) 18:44:56
>>891
http://codepad.org/ZLzTx8a8

前に書いたガウスの消去法のコードを流用
898デフォルトの名無しさん:2010/03/13(土) 22:07:47
最近宿題が少ないなあ。もしかしてマークされているのか?
899デフォルトの名無しさん:2010/03/13(土) 22:29:43
春休みに宿題が出る人は留年生じゃねw?
900デフォルトの名無しさん:2010/03/14(日) 00:09:18
そっかー、世間は春休みなんだ。うらやましいなあ。
901デフォルトの名無しさん:2010/03/14(日) 07:15:03
>>900
円周率の日だtってよ。社会人。
902デフォルトの名無しさん:2010/03/14(日) 07:24:55
全国風俗店、乳揉み料金通常の50%引きサービス中って噂だけは
信じるなよ
903デフォルトの名無しさん:2010/03/14(日) 08:07:22
[1] 授業単元:
[2] 問題文(含コード&リンク): C++/CLI で、Hello People! な問題。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC.NET
 [3.3] 言語: C++/CLI
[4] 期限: [201x年3月13日23:59まで]
[5] その他の制限: s-巣ファイルは1ファイルでお願いします。
904デフォルトの名無しさん:2010/03/14(日) 09:02:06
fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?
追加はしていませんけど?削除はしました?何か?
このエラー、ちょっと世間的にはどう解釈する?

using namespace System::Diagnostics;

int main()
{
  Debug::WriteLine(L"こんにちは");
  return 0;
}
905デフォルトの名無しさん:2010/03/14(日) 09:34:37
VC++だったら'#include "stdafx.h"'は必要

>'#include "stdafx.h"' をソースに追加しましたか?
っていうのは、'#include "stdafx.h"' を追加する作業をきちんとやっているかどうかの確認メッセージ
906デフォルトの名無しさん:2010/03/14(日) 12:12:59
>追加はしていませんけど?削除はしました?何か?
追加しろっていわれてるんだよw
9072010/03/14(日) 11:08:49 :2010/03/14(日) 15:45:17
>>905-906 ありがと。ちなみに、英語だとそんな付け足しの言葉は無かったよ。
http://msdn.microsoft.com/ja-jp/library/cc416524.aspx

[1] 授業単元:http://pc12.2ch.net/test/read.cgi/tech/1267799238/
[2] 問題文(含コード&リンク):
保存済みのメモ帳に書いてある10個の数字からランダムに5個読み取るプログラム。
 [3.1] OS:わかりません
 [3.2] コンパイラ名とバージョン: わかりません
 [3.3] 言語:C++
[4] 期限:201x年
[5] その他の制限:fopen、fscanf、for、ifまで習いました。
908デフォルトの名無しさん:2010/03/14(日) 18:43:15
>>904
#include "stdafx.h"
あと死ね。
909デフォルトの名無しさん:2010/03/14(日) 18:55:16
>>904
プロジェクトでプリコンパイル済みヘッダを使う設定になっている
空のプロジェクト以外だとたぶんデフォルトでオンだから
プロジェクトのプロパティで設定を解除してくれ
ややこしいのは、プロジェクトのプロパティとは別にソースファイル別にも設定が可能なので
ソースコードごとに設定されている場合は右クリックのプロパティからそれも解除してくれ
910デフォルトの名無しさん:2010/03/14(日) 20:43:28
ソースファイル別の設定をいじると、次からプロジェクト全体の設定を変えても
ソースファイル別の設定を連動して変えられなくなるーなあ。
なぜなら、.vcproj で覚えてるから。

右クリックでなくてもファイルをクリックしてプロジェクトのプロパティで設定出来るよ。
911デフォルトの名無しさん:2010/03/15(月) 02:03:05
912デフォルトの名無しさん:2010/03/15(月) 02:58:49
[1] 授業単元:なし
[2] 問題文(含コード&リンク):
[source]
int func(int b, int n){
if (n == 0)
return 1;
else
return b * func(b, n-1);
}
[問題]
1.funcは何を計算する関数か述べよ
2.この関数の計算コストをオーダで答えよ。理由も述べよ

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン: 不明
 [3.3] 言語:C
[4] 期限: できるだけ早くお願いします
[5] その他の制限:Cを初めて3ヶ月程度です。

どうぞよろしくお願いいたします。
913デフォルトの名無しさん:2010/03/15(月) 03:15:44
>>912
1. func(b,n) = b^n (bのn乗)
2. O(n)
 再帰的に func(b,n), func(b,n-1), func(b,n-2), ... ,func(b,0) を呼び出す。
 また、再帰呼出以外の処理は定数時間で終了する。
その他:nに負の数を渡すと酷い目にあう(きっとスタックオーバーフローで落ちる)
914デフォルトの名無しさん:2010/03/15(月) 03:33:03
>>913
こんな遅い時間にありがとうございます。感謝します。
915デフォルトの名無しさん:2010/03/15(月) 07:16:45
[1] 授業単元:Unix プログラミング
[2] 問題文(含コード&リンク): C++/CでUnixのls -R -lと同じ動作をするmyls.c (.cpp)を作成して下さい。
ls:ディレクトリ内のファイルをリストアップ。-R:サブディレクトリも探査。-l:sys/stat.hを使いファイルの詳細を表示する。
[3] 環境
 [3.1] OS: FreeBSD, MacOSX 10.5.6
 [3.2] コンパイラ名とバージョン: GCC
 [3.3] 言語: C++/C
[4] 期限: [2010年3月16日19:00まで]
[5] その他の制限: 一応自分で書いてみたのですが(リンクはソースコード)、サブディレクトリを再帰してくれません。
(ソースコード)-> http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10554.txt
宜しくお願いします。
916デフォルトの名無しさん:2010/03/15(月) 08:59:01
>>915
気付いたところだけ修正しました。
一応動作しているようです。

http://codepad.org/v2tZlBA3
917デフォルトの名無しさん:2010/03/15(月) 09:18:14
>>916
お力添え感謝します!
動作はしているんですが、ディレクトリ内のサブディレクトリに対する再帰処理のやり方で困惑しています。
多分可変箇所は70行目〜80行目のディレクトリかファリルかを区別し再帰する部分にあるとおもうんですが、
いまいちやり方が分からずにいます。
918916:2010/03/15(月) 18:18:32
>>917
ちょこっと修正しました。
というか根本的に書き直したいけど,我慢しました。
パス名が長いとこける余地はあります。

さらに言うと,`ls -R -l' とは挙動が違う気が・・・。
私の環境(cygwin + zsh)だけ?

http://codepad.org/pL8uOw4S
919915:2010/03/15(月) 19:28:28
>>918
救われました。有り難うございます。memset()とstrcat()の使い方に惚れそうです。
確かに私のFreeBSDの挙動とも少し違いますね。
最初にrootディレクトリを走査・表示してから、各サブディレクトリの方に移って行っているようです。
そのoutputの部分は私自身でなんとか出来ると思うので、頂いたコードに加筆させて頂いてもいいでしょうか?
改めて有り難うございます。
920デフォルトの名無しさん:2010/03/16(火) 10:28:07
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
1.fgets関数を用いてpgmファイルの始めの2行(添付ファイルの場合, P2, 304,
322)をそれぞれ、変数header, width, heightに格納するプログラム
2.上記で記憶したheader, width, heightを別ファイルに書き出すプログラム
1.と2.をそれぞれ作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc *すみませんバージョン不明です。
 [3.3] 言語: C
[4] 期限: 3/23
[5] その他の制限:pgmファイルは最初の3行下記のようになってます。
P2
304 322
255
921デフォルトの名無しさん:2010/03/16(火) 13:48:49
[1] 授業単元:Unix プログラミング
[2] 問題文(含コード&リンク):時間昇降順で表示するwhoをC/C++で書きなさい。
[3] 環境
 [3.1] OS: FreeBSD, MacOSX 10.5.6
 [3.2] コンパイラ名とバージョン: GCC
 [3.3] 言語: C++/C
[4] 期限: [2010年3月16日19:00まで]
[5] その他の制限:
915の者です。連続投稿申し訳ありません。
またもや問題発生しまして、お力を借りにきました。
あと一歩だと思うのですが、Undifined Symbolsと出て、アウトプットが出ません。
(ソースコード)-> http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10556.txt
何卒宜しくお願いします。
922921:2010/03/16(火) 14:39:59
なお、プログラムの著作権は私に帰属しますので、ご理解ください。
923デフォルトの名無しさん:2010/03/16(火) 14:41:55
著作権www
924デフォルトの名無しさん:2010/03/16(火) 14:42:55
>>921
undefined symbolsの意味を理解して下さい。どのシンボルが解決できていないかを書かないと、
問題を解決できません。手元のMac OS X 10.5ではコンパイルできたので、環境に起因するの問題か
もしくはg++ではなくてgccでコンパイルしようとしていた可能性があります。
925デフォルトの名無しさん:2010/03/16(火) 14:57:53
926デフォルトの名無しさん:2010/03/16(火) 15:28:03
すごいのがきたな著作権てww
927デフォルトの名無しさん:2010/03/16(火) 18:23:30
宿題に著作権・・・?
928921:2010/03/16(火) 19:18:34

>>924
有り難うございます。
MacOSX10.5でコンパイルできたんですか?仰る通り環境から来る問題かも知れませんので設定調べてきます。

>>925
有り難うございます。
頂いたものだと無事コンパイルできたのですが、アウトプットが出てきません・・・。
UTMPX_FILEからは43行目のutmpx[READING]に正確に読み取っていると思うんですが、その後のqsortでこけてるのかもしれないです。

>>922
著作権を貰える様な、デカイもの書けるようになりたいですwww
929デフォルトの名無しさん:2010/03/16(火) 19:38:27
なんでもいいけど著作権はもらわずとも勝手にできてるもんだろ
それをいうなら「大手を振って著作権を主張できるよう」なものじゃね?
930デフォルトの名無しさん:2010/03/16(火) 19:49:27
>>929
著作権は元々備わっているものなんですよね。
「著作権を主張しても恥ずかしくないもの」がしっくり。

931デフォルトの名無しさん:2010/03/16(火) 20:28:00
>928
正しくパッチを当てたら43行目はブレースのはずだけど
僕の環境では、出力がwhoとは多少異なるけど、期待通りの出力が得られた
メモリエラーなどは全く無かった(ツール使って確認済)
怪しいのは36行目と思っているんだけど
メモリエラーなどは全く無く(ツール使って確認済)

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
Linux 2.6.18-164.11.1.el5.centos.plus i686
932921:2010/03/16(火) 21:22:36
なぜかパッチ後に43行目がutmpx[READING]になっている・・・。
手動で打ち直してみたけどやっぱしだめだった。
修正後のファイルをtxtあげてくれたら、すごく嬉しいです・・・。
いつの間にか朝になってる・・・
933デフォルトの名無しさん:2010/03/16(火) 21:35:15
934921:2010/03/16(火) 21:46:46
>>933
アウトプット正常にでました!
私が処理したやつはパッチの当て方がなにか悪かったのか、RedHat to Macはデフォでラインオーバーしてしまうのか。
本当に感謝です。
935デフォルトの名無しさん:2010/03/16(火) 23:48:43
std::multiset 使って insert していくほうが楽じゃないか?
936デフォルトの名無しさん:2010/03/17(水) 00:50:25
>>921

#include <stdio.h>
#include <stdlib.h>
#include <utmp.h>
#include <time.h>
typedef struct utmp u; typedef const void v;
static int o(v* x,v* y){long a=((u*)x)->ut_time, b=((u*)y)->ut_time;return(-((a>b)?+1:((a<b)?-1:0)));}

void main(){ long i=0,t;u b[99];u* p=b;fread(b,sizeof(u),99,fopen(UTMP_FILE,"r")); qsort((void*)b,99,sizeof(u),o);
while(i++<99){t=p->ut_time; if(p->ut_type==USER_PROCESS){printf("%-9s%-13s%.16s%s\n",p->ut_name,p->ut_line,ctime(&t)+4,p->ut_host);}p++;}
}

新しいほど上の方にでるwhoコマンドみたいなのです。whoコマンドっての今日はじめて知りました。エロゲーしかしないんで。

昇降順?って言葉、よくわかんないでした… どっちだ〜〜(・_; ↑うえかな? ↓したかな? ってなっちゃう… ばかなので…
わかんないんで、上なほど新しい時間にました。まぁ、べつにどっちでもいっか…、死にやしないし

あと、ボクmacOSとか高くて買えないし、英語よめないからBSDインストールわかんないし、なのでlinux画面で書いちゃったけど、
これマックじゃうごかないかもなぁ〜… まぁい〜や、べつに
937デフォルトの名無しさん:2010/03/17(水) 01:21:45
921の課題を動作するようにすることに成功したが、著作者の権利を守るために
不特定多数の人が見られる場所にアップロードせずに闇に葬ることにした。
938デフォルトの名無しさん:2010/03/17(水) 02:28:26
原型をとどめていないがw
int main(void){
std::multiset<utmpx, mycompare> log;
std::ifstream fp(UTMPX_FILE, std::ios::in | std::ios::binary);
utmpx temp;

while(fp.read((char*)&temp, sizeof(temp))){
log.insert(temp);
}
fp.close();

for(std::set<utmpx>::iterator it=log.begin();it!=log.end();++it){
INFO_DISPLAY(&(*it));
}
return 0;
}
939920:2010/03/17(水) 07:44:26
920です。誠にすみません。書き忘れがあったので…
添付ファイル名はtest_barbarar.pgm です。
2.の別ファイルの名前は任意でよろしいです。
よろしくお願いします。
940907:2010/03/17(水) 12:51:48
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){ int i, j, a[10]; FILE *ifp;
if(argc != 2) return -1; ifp = fopen(argv[1], "r"); if(!ifp) return -2;
for(i=0; i<10; i++) fscanf(ifp, "%d", &a[i]); srand(time(0));
for(i=0; i<5; i++) { j = rand()/(RAND_MAX/(10-i)+1); printf("%d\n", a[j]); a[j] = a[10-i-1]; }
fclose(ifp); return 0; }
941デフォルトの名無しさん:2010/03/17(水) 13:02:11
socketでint型の値を2つ連続して送信してます。
int i, j;
send(sd, &i, sizeof(i), 0);
send(sd, &j, sizeof(j), 0);
これを受信側で
recv(sd, &x, sizeof(x), 0);
recv(sd, &y, sizeof(y), 0);
のように受信すればいいのでしょうか?
必ずしもsizeof(x)の4バイトのデータが1度に返されるとは限らない事
があるのでしょうか?
942デフォルトの名無しさん:2010/03/17(水) 13:15:47
>>941
http://pc12.2ch.net/test/read.cgi/tech/1255459388/

その socket が TCPなら
送ったバイト数 * 送った回数 = 受信バイト数 * 受信回数 は保証できるが
一回の受信で得られるデータ量は 未知

"ABC"(送信1) "DEF"(送信2) に対して
"A" "B" "C" "D" "E" "F" のようにばらけたり
"ABCDEF" と連結されたり
"ABCD" "EF" とハイブリッドになったりする
943デフォルトの名無しさん:2010/03/17(水) 13:18:52
あ ココ宿題スレだったか…
944デフォルトの名無しさん:2010/03/17(水) 13:44:15
>>942
的確な回答ありがとうございます。
理解しました。やっぱ、受信側ではばらけたりするのですね。
それを考慮してプログラム書き換えます。
プロトコル書いてませんでしたね。TCPでした。
非常に助かりました。
945940:2010/03/18(木) 00:44:00
Bairstow Samples  名無しさん - 2010/03/17(Wed) 19:00 No.10560 10560.zip
[1] 授業単元: 数値解析
[2] 問題文(含コード&リンク): n=10の多項式をベアストウ法(Bairstow’s Method)により解析するプログラムを書くこと。
N=coefficients r,s= initial value
繰り返しの際にはじめのr,s,b,cと△r、△s、エラーの値をプリントする。一定の値に集中するまで続ける。
(Convergence)一点に集まった値がでたら、次は二次公式をするために同様の作動を繰り返す。この時rとsは自動的に割り出されなければならない。ルーツが見つかるまで全てのプロセスを繰り返す。

レポートはプログラム、インストラクション、プログラムの作動法の説明、プログラムコード、サンプル実行をまとめてCDに焼いて提出。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: わかりません。
 [3.3] 言語: C/C++/ド素人なので何でもいいです!
[4] 期限: 2010年3月22日まで
[5] その他の制限: とくにないと思います。初めて2CHに投稿するのでもし何か間違ったことなどをしていたら教えてください!

読んでくださってありがとうございました。
どうぞよろしくお願いいたします。

※海外からなので普通の掲示板に投稿できなかったので、ここで質問させていただきます。

[2] 問題文(含コード&リンク): n=10の多項式をベアストウ法(Bairstow’s Method)により解析するプログラムを書くこと。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10559.zip
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10560.zip
アメリカ?からの書き込みはこちらに
livedoor したらば10ch
http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/l1
946デフォルトの名無しさん:2010/03/19(金) 02:55:36
誰もできないようだな
947デフォルトの名無しさん:2010/03/19(金) 02:59:53
お前がやれよw
948デフォルトの名無しさん:2010/03/19(金) 09:17:54
>>945
CDに焼きました。提出先を書いてください。
949デフォルトの名無しさん:2010/03/20(土) 10:28:05
他言語のコピペしたwebpageを、ただwordに貼っただけ。
問題は出された通りに書き込んでください。
参考にするwebpageのURLがあってもいいけど、サンプル
などと言って自分の成果のように誤解させないこと。
950デフォルトの名無しさん:2010/03/20(土) 11:33:32
Cがわかってもベアストウ法が
わからないとお手上げだな。

とりあえず2次の多項式の解を求める
ルーチンでも作ってどうするか考えたら?
951デフォルトの名無しさん:2010/03/20(土) 15:10:37
ソースコードのうpはここのほうがcodepadとかいうのより良いかもしれない
文法・言語の対応が多いみたいだ。

http://ideone.com/
952デフォルトの名無しさん:2010/03/21(日) 02:59:07
>>951
無期限にソースが保存されるのはいいかもね。

codepadは期限付きだった気がしたんだけど
貼ったソースの有効期限について書いてあるところが見つからなかった
953デフォルトの名無しさん:2010/03/21(日) 04:33:12
codepadとideoneの違いって何? >>952
954デフォルトの名無しさん:2010/03/21(日) 05:01:43
文法・言語の対応が多い
955デフォルトの名無しさん:2010/03/21(日) 10:48:29
ideoneは実行時の標準入力を指定できるらしい
使ったことないから詳しくは知らん
956デフォルトの名無しさん:2010/03/21(日) 23:51:04
codepadでも ungets("Test\nString\n"); みたいに標準入力設定もどきできてたけどな

void ungets(const char *str)
{
int i;
for(i=0; *(str+i)!='\0' ; i++);
for(i--;i>=0;i--)
ungetc( (int)(*(str+i)) ,stdin );
}
957デフォルトの名無しさん:2010/03/21(日) 23:55:41
だが自分のコードを変更しなければならないではないか
958デフォルトの名無しさん:2010/03/22(月) 00:00:11
>>956
だが、ungetc は一文字しか保障されていない
codepad で動くなら別にいいんだけどさ
959デフォルトの名無しさん:2010/03/22(月) 01:20:08
C++で解答してもかまわないと言われたので、こちらで質問させてください

[1] 授業単元: コンピュータグラフィックスアルゴリズム
[2] 問題文(含コード&リンク):
任意の画像A(形式.ppm)と画像B(形式.ppm)を用意する。
画像A上の任意の4点の座標をマウスのクリックにより取得し、その4点を結んだ四角形の形、大きさにBを変形し、
AとBを合成した画像Cを描画し、それを、ppmファイルで出力せよ。
なお、画像の変形には逆マッピング変換(inverse mapping)とバイリニア補完(bilinear interpolation)を使うこと。

[3] 環境
 [3.1] OS: Windows 7
 [3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 2010年3月23日まで
[5] その他の制限: 画像の変形には逆マッピング変換(inverse mapping)とバイリニア補完(bilinear interpolation)を使い、APIを使ってはならない
期限が近くてすみません。よろしくお願いします。
960デフォルトの名無しさん:2010/03/22(月) 01:33:13
C++以外の選択肢はなんだったんだろうか
MFCは使っていいのだろうか
961959:2010/03/22(月) 02:15:17
>>960
言語に制限はないのですが、自分が理解できるのがC++とJavaだったので
このふたつに絞らせて貰いました。
逆マッピング変換とバイリニア補完を学ぶというのが主目的なので、
それ以外ならば、APIを使って頂いてかまいません。MFCも大丈夫です。
あと、逆マッピング変換する際の、行列(8×8)の方程式を解くとき、どんなライブラリを使っても問題ないとのことでした。
962デフォルトの名無しさん:2010/03/23(火) 02:44:04
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク):
数値中のすべてのビットを左端までシフトするプログラムを作成しなさい。
例えば、01010110(二進法)は11110000(二進法)となります。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年3月23日12:00まで
[5] その他の制限:とくにありません
963デフォルトの名無しさん:2010/03/23(火) 02:56:31
#include <stdio.h>

int main(void)
{
unsigned int n, u, ans = 0;

scanf("%u", &n);

for(u=1 << sizeof(int)*8-1; n; n >>= 1) {
if(n & 1) {
ans |= u;
u >>= 1;
}}

printf("%u\n", ans);

return 0;
}
964デフォルトの名無しさん:2010/03/23(火) 03:15:11
#include <stdio.h>

int main(void)
{
unsigned int i, j, u;

scanf("%u", &u);

for(i=j=1<<sizeof(unsigned int)*8-1; i; i >>= 1) {
if(i & u) {
u &= ~i;
u |= j;
j >>= 1;
}}

printf("%u", u);

return 0;
}
965デフォルトの名無しさん:2010/03/23(火) 03:54:29
<<63-64
ありがとうございます。コンパイル時には何を入力すればよいのでしょうか?
966デフォルトの名無しさん:2010/03/23(火) 10:14:26
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10563.txt
のフローチャートわかりませんでしょうか?

967デフォルトの名無しさん:2010/03/23(火) 10:26:12
ビットクリアとビットオンの順番おかしいだろ。
968デフォルトの名無しさん:2010/03/23(火) 10:33:25
>>967
間違ってるんでしょうか?
969デフォルトの名無しさん:2010/03/23(火) 12:46:20
期限が極端に短い宿題は宿題スレでなく質問スレで...
例えば
C言語なら俺に聞け(入門編)Part 61
http://pc12.2ch.net/test/read.cgi/tech/1267799238/
とか
勿論答えてもらえるかどうかは回答者と問題次第だけど
970デフォルトの名無しさん:2010/03/23(火) 14:35:48
>>962
unsigned bit_shift(unsigned value)
{
unsigned i, bit_count=0;

for(i=0;i<32;i++)
{
bit_count+=(value>>i)&1;
}
return ((1<<bit_count)-1)<<(32-bit_count);
}
971デフォルトの名無しさん:2010/03/24(水) 06:13:49
無題  Bairstow - 2010/03/21(Sun) 15:50 No.10561

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10561.zip
とりあえず他の方の作ったやつで.exeファイルをつくってみました。
Excelのやつは一番理想的ですがさどうしません。

ありがとうございます。

----------------------------------------------------------------------------------------------

なんかよくわかりません。  Bairstow - 2010/03/21(Sun) 15:57 No.10562

またエラーなりました。ここで前書き込みをいしたらいつの間にかちゃんと投稿されていました。今回はどうすればいいのかわかりませんので、またここ「ろだ」に書かせてもらいます。
名前: 945
E-mail:
内容:
945 です。
皆様、お返事ありがとうございました!この前書き込みしたときにエラーになってしまったので、書き込みできていないと思っていたらで今日またベアストウで検索したら自分のがでてきました!!本当に申し訳ありませんでした。
ワードファイルの件、申し訳ありませんでした。何がなんだかわからないのでベアストウ法でコードを見つけてはコピペしておりました。
>>948
ありがとうございます!
とりあえず他の方の作ったやつで.exeファイルをつくってみました。
Excelのやつは一番理想的ですがさどうしません。EmailもZipに入っています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10561.zip
972デフォルトの名無しさん:2010/03/24(水) 09:44:19
【質問テンプレ】
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
typedef struct Position
{
  double x,y,z;
}Position;

typedef struct Triangle
{
  Position p1,p2,p3;
}Triangle;

第1引数のTriangle型で示される3角板の中の、第2引数に最も近い座標を返す関数
Position GetNearestPosition( Triangle *tri, Position *tgt );
を作成しなさい。

[3] 環境
 [3.1] OS:WindowsXP SP3
 [3.2] VC2008
 [3.3] C言語
[4] 2010年3月26日 13:00まで

よろしくお願いします。
973デフォルトの名無しさん:2010/03/24(水) 10:14:13
974デフォルトの名無しさん:2010/03/24(水) 10:18:14
Position GetNearestPosition(Triangle *tri, Position *tgt)
{
double d1=(tri->p1.x-tgt->x)*(tri->p1.x-tgt->x)+(tri->p1.y-tgt->y)*(tri->p1.y-tgt->y)+(tri->p1.z-tgt->z)*(tri->p1.z-tgt->z);
double d2=(tri->p2.x-tgt->x)*(tri->p2.x-tgt->x)+(tri->p2.y-tgt->y)*(tri->p2.y-tgt->y)+(tri->p2.z-tgt->z)*(tri->p2.z-tgt->z);
double d3=(tri->p3.x-tgt->x)*(tri->p3.x-tgt->x)+(tri->p2.y-tgt->y)*(tri->p3.y-tgt->y)+(tri->p3.z-tgt->z)*(tri->p3.z-tgt->z);

if(d1 < d2) {
if(d1 < d3) return tri->p1;
return tri->p3;
}
if(d2 < d3) return tri->p2;
return tri->p3;
}
975デフォルトの名無しさん:2010/03/24(水) 10:23:48
>>973
>>974
問題をよく読め、3頂点から一番近い物を求めるのではない。
三角形の範囲内の点ならどれでもOKなんだよ。
976デフォルトの名無しさん:2010/03/24(水) 10:51:16
任意の点から三角形を含む平面上におろした垂線の足が
三角形の内部にあればその位置座標
外部にあればその点にもっとも近い三角形上の点として
先の点が三角形のいずれかの辺における、この三角形を含む平面における垂線上にあれば
その辺に対して点からの垂線の足が求めるべき点で
それ以外ならばその点にもっとも近い三角形の頂点が求めるべき点だな
977デフォルトの名無しさん:2010/03/24(水) 10:52:37
めんどくさいな
978デフォルトの名無しさん:2010/03/24(水) 10:57:39
>>976
間違えた
各辺の垂線について調べたらダメだ
三辺のうち、もっとも遠い辺を調べる必要はない
っていうか調べると誤った結果がでちまう
979デフォルトの名無しさん:2010/03/24(水) 11:15:15
>>978
三辺全部調べる方が簡単だと思うけど。

1.三角形の内部かを調べて内部ならその点。
2.外部のときは3つの線分(辺)と点の距離を求めて一番近いものとし、そこで求めた点を採用する。

でいいでしょ。

線分と点の距離というのは(無限)直線と点の距離を求めて、
その垂線の足が線分上になければ線分の端点からの距離という意味ね。

コーディングはパスするw
980デフォルトの名無しさん:2010/03/24(水) 11:27:19
実は三次元座標なんだぜ
981デフォルトの名無しさん:2010/03/24(水) 11:37:16
三角形のある平面に垂線下ろしてからの話なんだぜ、実はw
982デフォルトの名無しさん:2010/03/24(水) 11:53:46
垂線おろすのは不可欠だろうからな、多分
983デフォルトの名無しさん:2010/03/24(水) 12:28:19
三角形の3頂点から平面が定義できるから、
その平面にすべての点を投影した上で >>979 を行えばいい。

コーディングはパスするw
984デフォルトの名無しさん:2010/03/24(水) 12:36:17
三角形内の点Pに対してベクトルPTが最小になるように二元二次方程式を解く。

コーディングはパスするw
985デフォルトの名無しさん:2010/03/24(水) 22:40:33
次スレ立てます
986デフォルトの名無しさん:2010/03/24(水) 22:42:06 BE:397618867-S★(518000)
次スレ立てました
C/C++の宿題片付けます 135代目
http://pc12.2ch.net/test/read.cgi/tech/1269438098/
987デフォルトの名無しさん:2010/03/25(木) 12:22:05
http://codepad.org/c8Eip5FK
三角形のローカル座標に座標変換してから判定。
ローカル座標は p1=(0,0)', p2=(1,0)', p3=(0,1)' になるような座標系。
この空間ではz=0にすると垂線の位置が求められる。
z=0の平面を7つの領域に分けて、一番近い点を求める(コメント参照)

三角形が潰れている場合は三角形は直線(または点)になって、
点に一番近い直線上の点を求める計算が必要になるが、コーディングはパスした。
あと面倒になったので動作確認もパスした。
当然のようにmain関数のコーディングもパスした。
988デフォルトの名無しさん:2010/03/25(木) 12:33:34
@の判定式間違ってた\(^o^)/
誤:if(q.x >= 0 && q.y >= 0 && q.z >= 0 && q.x+q.y+q.z <= 1){
正:if(q.x >= 0 && q.y >= 0 && q.x+q.y <= 1){

zも入れたら四面体の交差判定になっちまうのぜ
989デフォルトの名無しさん
20点