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

このエントリーをはてなブックマークに追加
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://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi
http://codepad.org/ ←遅い時間は重い事があります
http://ideone.com/
【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++の宿題片付けます 144代目
http://hibari.2ch.net/test/read.cgi/tech/1291471791/
2デフォルトの名無しさん:2011/01/04(火) 10:27:38
>>965(前スレ)
そもそも正規化された値との交点ってどういうこと
正規化された値をx軸の値としてって書いてあるけど
・交点のx座標を解とすると「正規化された値」がそのまま解になるし
・交点のy座標を解とすると「正規化された値+ランダム値」が解になる
これふたつとも違うと言ってるんだよね?
じゃあ何を解とすればいいのか
今の問題の書き方だとこの辺理解して貰えないと思うよ

http://ideone.com/TL8nN
3画像処理:2011/01/04(火) 10:47:33
【質問テンプレ】
[1] 授業単元:画像処理学
[2] 問題文(含コード&リンク):
  指定されたエクセルファイル(csv1)の中にあるデータを読み込み
  各列ごとにそれぞれのデータに対し[0,1]区間に正規化し
  別のエクセルファイル(csv2)として出力せよ.
  正規化されたエクセルファイルの中にあるデータを読み込み
  そのデータをそれぞれx軸の値として
  y = x + a  の式との交点であるy軸の値をそれぞれ
  別のエクセルファイルとして出力(csv3)せよ.
  a の値は -1〜1 までの値を0.5刻みでランダムにとり
  同じ行では同じ関数を使うものとする.
  その後そのプログラムに加え
  各行に対し3つずつそれぞれランダムにaを決定した関数との接点を求め出力する.
  また6列目に使用したaの値をa1,a2,a3という形で出力(csv4)せよ.
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C言語
[4] 期限:2011年1月4日
[5] その他の制限:以下のレスに補足があります
4画像処理:2011/01/04(火) 10:49:20
正規化された値(範囲は[0,1])と 
a の値は-1〜1 までの値を0.5刻みでランダムにとった値を
「関数y=x+a」に代入値を別の(csv3)として出力します
同じ横列では同じ関数を使って交点をとるものとする
それを縦列数分繰り返して出力するということです
データは横5データ縦250データのデータです
横列ごとに同一の関数と比較した交点の出力なので
結果としては正規化されただけのデータと比べて横列では同じ程度の数値の変化になります

(csv2) (csv3) (a)
0.5 0.6 0.3 0.4 0.1 → 1.0 1.1 0.8 0.9 0.6 0.5
0.7 0.2 0.7 0.3 0.5 → 0.2 -0.3 0.2 -0.2 0 -0.5

問3は問2の拡大版で
正規化された値とaの値を関数y=x+aに代入するのを各横列ごとに3回行うということです
セル1-1に対して「y=x+a1の場合」「y=x+a2の場合」「y=x+a3の場合」 の値を
出力するCSVのセル1-1の位置に a1との解 , a2との解 , a3との解
とコンマで刻んで出力します
また正規化されたCSVが横5縦250なので横6縦250のところに
使用したaの値を a1,a2,a3 と出力せよということです
結果的には
a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1解,a2解,a3解 a1,a2,a3
となります
この横列が250行縦に続きます

5画像処理:2011/01/04(火) 10:51:34
>>2さん
すみませんそこはわたしの勘違いです
交点を求めるには代入することなので
解yを得るには正規化xにランダムaを加算で正しいです
すみませんでした
6画像処理:2011/01/04(火) 10:57:48
>>4でミスをしました
(csv2)ーーーーーーーー(csv3)ーーーーーーー(a)
0.5 0.6 0.3 0.4 0.1 → 1.0 1.1 0.8 0.9 0.6 と 0.5
0.7 0.2 0.7 0.3 0.5 → 0.2 -0.3 0.2 -0.2 0 と-0.5

です
7デフォルトの名無しさん:2011/01/04(火) 12:28:45
>>3
正規化が列単位だからやっぱメモリ上に展開してぐりぐりする必要あるね

>>956
http://ideone.com/f2jh2
>>965
http://ideone.com/whRW2
>>969
http://ideone.com/s26UG
8画像処理:2011/01/04(火) 12:57:08
>>7さんありがとうございます
拝見させていただきました
>>956はうまく動作させることができました
>>965のプログラムは
173行目
float* rnd[ANUM] = {NULL, NULL, NULL};
で初期化子の数が多すぎます というエラーが出ます
>>969のプログラムは
240行目
csv_write(ofname1, csv);
で定義されていない識別子です というエラーが出ます
9デフォルトの名無しさん:2011/01/04(火) 13:04:36
>>8
× float* rnd[ANUM] = {NULL, NULL, NULL};
○ float* rnd[ANUM] = {NULL};


↓これ削除して。消し忘れたー
// >>937 1列目に+1、2列目に+2
csv = csv_read(ifname);
if(csv != NULL){
coladd(csv);
csv_write(ofname1, csv);
csv_free(csv);
}
10画像処理済:2011/01/04(火) 13:11:30
ofname1 は>>937の方の出力だったんですね
>>937の部分をまとめてコメントアウトしたら走ってくれました
出力されたcsvを確認したいと思います
確認しました
>>969のプログラムから>>937のための記述を抜けば
求めていた出力をさせることができました
先生が厳しいというか正しい人なので途中までで提出していたら
やり直させられていたと思います
本当に助かりましたありがとうございました
11デフォルトの名無しさん:2011/01/04(火) 16:15:46
今までここの住人が解けない問題って出てきたっけ?
12デフォルトの名無しさん:2011/01/04(火) 16:48:27
さぁ 夏休みのレポートをお世話になった時は
うちの大学の教員がいるんじゃないかという速度で回答がきて驚いた
13 ◆QZaw55cn4c :2011/01/04(火) 17:13:05
14デフォルトの名無しさん:2011/01/04(火) 17:31:26
【質問テンプレ】
[1] 授業単元: Cプログラミング入門2
[2] 問題文(含コード&リンク):
  ファイル入出力関数を使って偶数個の値が入ったsample.csvから
  偶数行の数値だけを取り出したeven.csvと
  奇数行の数値だけとりだしたodd.csvを作成し
  even.csvからodd.csvの値を引いたdiff.csvを作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語: C
[4] 期限:2011年1月7日06:00まで
[5] その他の制限:
15デフォルトの名無しさん:2011/01/04(火) 18:13:13
>>14
わざわざCSVファイルとしているから、一行に複数の
数値がありそうだけれど、その場合、最後にでてくる
値の差の意味がわからない。ふつう、こういうファイル
の差分という場合、行の完全一致は一方を排除する
という意味だが、ここは、全体を通じて、同一数値を
取り除くの意味かな。それにしてもdiff.csvの出力形式
がわからない。
1614:2011/01/04(火) 18:34:14
例えば8行7列のsample.csvがあったとして
偶数行奇数行でわけると4行7列が2つできますよね
最後のdiff.csvはデータベース的な差分ではなく
偶数奇数2つのcsvの同じ位置に入力されている数値を
偶数引く奇数と計算したときの値が4行7列で入力されたものです
17デフォルトの名無しさん:2011/01/04(火) 18:49:17
>>16
了解
18デフォルトの名無しさん:2011/01/05(水) 01:47:20
[2]
#include <stdio.h>

void aisatsu(void);

int main(void){

aisatsu();

return 0;
}
void aisatsu(void){

printf("Good morning \n");
printf("Goog afternoon \n");
printf("Good night");
}

「main側で指定した飾り文字を 挨拶の末尾につけて表示する」ようにしなさい
例 Good morning ★ 
[3]
 [3.1] OS: vista
 [3.2] C言語を始めよう!
 [3.3] 言語:C
[4] 期限: できるだけ早い方がいいです
[5] その他の制限:voidではなくcharを使うみたいです。

よろしくお願いします
19デフォルトの名無しさん:2011/01/05(水) 02:05:49
charじゃ★は無理じゃないかな
char*使ったけど問題があるようなら無視してくれ

#include <stdio.h>

void aisatsu(char*);

int main(void){
char decoration[]="★";
aisatsu(decoration);

return 0;
}

void aisatsu(char *decolation){
printf("Good morning %s\n", decolation);
printf("Goog afternoon %s\n", decolation);
printf("Good night %s", decolation);
}
20デフォルトの名無しさん:2011/01/05(水) 02:35:32
>>19

ありがとうございます
参考にします!
21デフォルトの名無しさん:2011/01/05(水) 04:25:11
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org1340661.txt
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] vidual studio2008
 [3.3] 言語: C
[4] 期限: 1/6
よろしくお願いします。
22デフォルトの名無しさん:2011/01/05(水) 05:02:00
>>21
1個め
#include <stdio.h>
double power(double a, int n);

int main(void) {
int n;
double a, ans;
printf("実数を入力してください :");
scanf("%lf", &a);
printf("整数を入力してください :");
scanf("%d", &n);
ans = power(a, n);
printf("%f", ans);
return 0;
}

double power(double a, int n) {
int i;
double ans=1;
for(i=0; i<n; i++){
ans *= a;
}
return ans;
}
23デフォルトの名無しさん:2011/01/05(水) 05:08:17
>>21
2個め
#include <stdio.h>
double power(double a, int n);

int main(void) {
int n, i;
double a, ans;
printf("実数を入力してください :");
scanf("%lf", &a);
printf("整数を入力してください :");
scanf("%d", &n);
for(i=1;i<=n;i++){
ans += power(a, i);
}
printf("%f", ans);
return 0;
}

double power(double a, int n) {
int i;
double ans=1;
for(i=0; i<n; i++){
ans *= a;
}
return ans;
}
24デフォルトの名無しさん:2011/01/05(水) 05:15:36
>>21
3個め
#include <stdio.h>
double max2(double m, double n);
int main(void) {
double m, n, ans;
printf("1個めの実数を入力してください :");
scanf("%lf", &m);
printf("2個めの実数を入力してください :");
scanf("%lf", &n);
ans = max2(m, n);
printf("%f", ans);
return 0;
}
double max2(double m, double n) {
if(m<n){
return n;
} else {
return m;
}
}
25デフォルトの名無しさん:2011/01/05(水) 05:36:31
>>21
4個め
#include <stdio.h>
int avg(int num[], int n);
int main(void) {
int num[100];
int n=0;
int ans;
do{
printf("%d個めの整数を入力してください。(0入力で合計値出力)\n",n+1);
scanf("%d", &num[n]);
n++;
}while(num[n-1]!=0);
ans = sum(num, n);
printf("合計値は%dです。\n", ans);
return 0;
}
int sum(int num[], int n) {
int ans = 0, i;
for(i=0;i<n;i++){
ans += num[i];
}
return ans;
}
26デフォルトの名無しさん:2011/01/05(水) 05:38:18
もう出勤だ。
誰か>>21の5番目〜7番目頼むね。すまそ。
27デフォルトの名無しさん:2011/01/05(水) 06:01:01
28デフォルトの名無しさん:2011/01/05(水) 10:10:12
>>26-27
ありがとうございます。
さっそく参考にさせてもらいますね!
29デフォルトの名無しさん:2011/01/05(水) 10:29:21
【質問テンプレ】
[1] 授業単元: 情報数学2
[2] 問題文(含コード&リンク):
  3行5列の15人の学生の身長が記録されたheight.csvがあります。
  それぞれの学生に対しランダムで0.1刻みで0.1から0.5までの値を付加します。
  このポイントを基礎ポイントといいます。
  \1行目の学生5人を取り出しそれぞれの学生に対し、
  *ランダムで0.1刻みで0.1から0.5までの値を基礎ポイントに対し付加します。
  5人の学生の中で与えられたポイントの合計が最も少ない学生を回の代表値とします。*
  基礎ポイントに対しランダム値を付加し回の代表値を選出する作業(*〜*)を、
  同じ1行目の5人の学生に対し5回行います。
  5回分の代表値の中で最も多い値を行の代表値とします。\
  1行分の行の代表者の選出(\〜\)を3行分繰り返します。
  全てのステップを行い結果をresult.csvとして出力します。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語: C言語
[4] 期限:2011年1月7日まで
[5] その他の制限:
  以下に出力result.csvの形式についての補足があります。
3029:2011/01/05(水) 10:30:40
  result.csvの形式は、
  3行71列の表になります。
  1〜5列目まではheight.csvと同じ出力です。
  6〜10列目まではそれぞれの学生にどんな基礎ポイントが付加されたかを示し、
  11〜15列目は1回目のランダム付加でどのような値が付加されたかを示し、
  16〜20列目は基礎ポイントと付加ポイントの合計を示し、
  21列目は1回目の回の代表値を示し、
  22列目は回の代表者の身長を示します。
  23〜34列目は2回目、
  35〜46列目は3回目、
  47〜58列目は4回目、
  59〜70列目は5回目を示します。
  71列目は行の代表者の身長を示します。
元のheight.csvの3行5列の並び順と、
  それ以降の処理での3行5列の部分の値の位置は対応するようにお願いします。
  長くなって申し訳ありません。
  よろしくお願いいたします。
31デフォルトの名無しさん:2011/01/05(水) 13:13:34
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org1341084.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1月7日
宜しく御願いします。
32デフォルトの名無しさん:2011/01/05(水) 16:25:35
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
  巡回セールスマン問題
  いくつかの都市と都市間を結ぶ経路があります。全ての都市を一巡するのに最も短い経路を求めるプログラムを作成せよ。
  TSPのデータファイルはgr17.txtで、数字の部分が都市数です。
  ファイルの記述の仕方が以下のようになっています。

  gr17.txtの例

  17   最初の数値は都市数
  0    第0都市と第0都市との距離が0
  633 0  第1都市と第0都市との距離が633、第1都市と第1都市との距離が0
  257 390 0 第2都市と第0、第1、第2都市との距離がそれぞれ257,390,0
  91 661 228 0 以下同様
  412 227 169 383 0
150 488 112 120 267 0
     以下略

  補足説明として
  ・同じ道を通ってもよい
  ・全ての都市を1回通ればよい(巡回しなくていい)
  ・全探索はなるべく使用しないで深さ優先探索、分子限定法を用いること
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 1月12日
不明な点があったら指摘してください。よろしくお願いします。
33デフォルトの名無しさん:2011/01/05(水) 16:29:27
>>32
gr17.txt をアップロードしてくれ
34デフォルトの名無しさん:2011/01/05(水) 16:42:10
忘れてました
http://www.dotup.org/uploda/www.dotup.org1341369.txt.html
パスはc2です
35デフォルトの名無しさん:2011/01/05(水) 17:06:32
ソートってこんなの
10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?1
0/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10
/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/
1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1
000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/10
00秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/100
0秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000
秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒
というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒と
いうのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒とい
うのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒という
のは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というの
は、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは
、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、
0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0
.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.01秒という解釈でよろしいでしょうか?10/1000秒というのは、0.
36デフォルトの名無しさん:2011/01/05(水) 17:14:42
ママあれなぁに? しっ、見ちゃいけません!!
37デフォルトの名無しさん:2011/01/05(水) 17:30:08
うはぁw

めっちゃ歪んでる
38デフォルトの名無しさん:2011/01/05(水) 17:49:14
福本漫画かよw
39デフォルトの名無しさん:2011/01/05(水) 17:55:35
1] 授業単元:プログラミングC
[2] 問題文:「90min = 1h30m」を関数を使って表せ 分から時間へは関数mtohをつかう。
[3] 環境
 [3.1] OS: VISTA
 [3.2] コンパイラ:C言語を始めよう!
 [3.3] 言語: C
[5] その他の制限: 分から時間への計算をmtohでやるみたいです。

40デフォルトの名無しさん:2011/01/05(水) 18:32:38
>>32
軽い気持ちでやってみようとしたが面倒くさい問題だな
41デフォルトの名無しさん:2011/01/05(水) 19:03:14
>>39
#include<stdio.h>
void mtoh(int m){
int count_h=0;
while(m>=60){
m-=60;
count_h++;
}
printf("after-->%dh%dm\n",count_h,m);
}

int main(){
int min=0;
printf("input min-->");
scanf("%d",&min);
mtoh(min);

return 0;
}

適当に作ったからミスがあったらごめん
42デフォルトの名無しさん:2011/01/05(水) 19:21:04
ありがとう!
43デフォルトの名無しさん:2011/01/05(水) 19:36:48
>>41

入力受付はしなくて良いということだったので自分で作ってみたんですが、
エラーが起こってしまいました;;どうすればいいですか。

#include <stdio.h>

int mtoh(int b, int c);

int main(void){

int a=90;
int mtoh(b,c);

printf("%d min = %d h %d m\n",a,b,c);

}
int mtoh(int b,int c){

int b = a / 60;
int c = a % 60;

return 0;
}


44デフォルトの名無しさん:2011/01/05(水) 19:45:10
#include <stdio.h>

int mtoh(int a,int *b, int *c);

int main(void){

int a=90,b=0,c=0;
mtoh(a,&b,&c);

printf("%d min = %d h %d m\n",a,b,c);
}

int mtoh(int a,int *b,int *c){
*b = a / 60;
*c = a % 60;
return 0;
}
45デフォルトの名無しさん:2011/01/05(水) 19:45:50
>>43
#include <stdio.h>

/*int mtoh(int b, int c);*/
int mtoh(int a, int *b, int *c);

int main(void){

int a=90;
int b,c; /* 追加 */
/*int mtoh(b,c);*/
mtoh(a,&b,&c);

printf("%d min = %d h %d m\n",a,b,c);

}
int mtoh(int a,int *b,int *c){
/*
int b = a / 60;
int c = a % 60;
*/
*b = a / 60;
*c = a % 60;
return 0;
}
46デフォルトの名無しさん:2011/01/05(水) 19:51:13
すいません ポインタまだやってないんですorz
47デフォルトの名無しさん:2011/01/05(水) 20:07:39
>>46
関数内で表示までしてもいいのかな?
48デフォルトの名無しさん:2011/01/05(水) 20:08:08
>>46
ポインタだめなら

#include <stdio.h>

/*int mtoh(int b, int c);*/
int mtoh(int a, int *b, int *c);

int main(void){

int a=90;
mtoh(a);

}
int mtoh(int a){

int b = a / 60;
int c = a % 60;

printf("%d min = %d h %d m\n",a,b,c);

return 0;
}
49デフォルトの名無しさん:2011/01/05(水) 20:14:45
解決しました!ありがとうございます
50デフォルトの名無しさん:2011/01/05(水) 20:47:58
どういたしま
51デフォルトの名無しさん:2011/01/05(水) 20:53:32
関数とかスコープとか、全く理解してないのに解決とかw
52デフォルトの名無しさん:2011/01/05(水) 21:17:19
>>48
ポインタも外部変数も使わない方法も有るでぇ、と混乱させてみる

#include <stdio.h>
typedef struct {
    int h;
    int m;
}HM_TIME;
static HM_TIME mtoh( int m )
{
    HM_TIME hm;

    hm.h = m / 60;
    hm.m = m % 60;
    return hm;
}
int main( void )
{
    int m = 90;
    HM_TIME hm;

    hm = mtoh( m );
    printf( "%d:%d\n", hm.h, hm.m );
    return 0;
}
53デフォルトの名無しさん:2011/01/05(水) 21:49:42
まだ関数勉強し始めたばかりなのでこれで十分ですよ

#include <stdio.h>

int mtoh(int a){

int b = a/60;
int c = a%60;

printf("%d min = %d h %d m\n",a,b,c);

return 0;
}

int main(){

int a = 90;

mtoh(a);

return 0;
}
54デフォルトの名無しさん:2011/01/06(木) 00:06:58
>>32
同じ道を通ってもよいってのがめんどうw
55デフォルトの名無しさん:2011/01/06(木) 00:15:57
[1] 授業単元:
[2] 問題文(含コード&リンク):値(x,y)をxarrとIarrに格納して3次スプライン補間

S_j(x) = a(x-xj)^3+b(x-xj)^2+b(x-xj)^c+dj

で近似値を求めるプログラムを作成せよ。条件は
u_j=S"(x)
hj=x_(j+1)-x_j, j = 0,1,2,・・・,N-1
v_j=6[(y_(j+1)-y_j)/h_j - y_j)-y_(j-1))/h_(j-1)]
a_j = (u_(j+1)-u_j)/{6(x_(j+1)-x_j)}
b_j = u_j/2
c_j = (y_(j+1)-y_j)/(x_(j+1)-x_j)-(x_(j+1)-x_j)(2u_j+u_(j+1))/6
d_j=y_j
です。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 1月6日12:00
[5] その他の制限: 特に無し
該当部分のソースはこちらになります。
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/13.txt

どうも計算した時の誤差が大きいようなのでもう少し精度を良くしたいのですが、
どうすればいいのかわかりません。
どうかよろしくお願いします。

56 ◆QZaw55cn4c :2011/01/06(木) 00:22:01
>>54
仮に題意を満たす次の経路(同じ道を重ねてたどる経路)をとおる経路C1があったとする。
S->...(経路X)...->A-(経路P)->B->...(経路Y)...->A-(経路P)->B->...(経路Z)...->G
この経路C1の長さL(C1)は、
L(C1)=L(X) + L(P) + L(Y) + L(P) + L(Z)

このとき次の経路C2を考える。
S->...(経路X)...->A->...(経路Yの逆コース)...->B->...(経路Z)...->G
この経路C2の長さは、
L(C2)->L(X)+L(Y)+L(Z)

すなわち L(C2)>L(C1)
ただしL(Y)=L(経路Yの逆経路)を仮定している。

しかし、これを仮定していい、というのは、>>32 のデータの与え方をみればわかる。

以上より、「同じ道をとおる」という場合を省いてもよい......ハズ。
5756:2011/01/06(木) 00:23:05
失礼、
L(C2)<L(C1)
に訂正します。
58デフォルトの名無しさん:2011/01/06(木) 00:32:36
>>32
1564 が出た
しかしバグっているので、最短距離かどうかはまだ不明
59デフォルトの名無しさん:2011/01/06(木) 00:45:08
仮に
C→Aがコスト30
A→Bがコスト80
C→Bがコスト20
だとすると
C→A→B:コスト110
C→A→C→B:コスト80
ってことじゃないの??
6056:2011/01/06(木) 00:50:04
>>59
なるほど、そういう場合は確かに考えられますね。>>54 のいうとおりやっかいですね。
6159:2011/01/06(木) 00:54:13

ご丁寧にどうもです。
これのせいで面倒になってるのは確かですね

6258:2011/01/06(木) 01:04:17
1->9->4->10->2->14->13->16->5->7->6->0->12->3->8->11->15
これで距離 1564

枝狩り部分にバグがありそうだけど、
枝狩りを外すと丸一日くらいかかりそうなので断念
3秒で答えが出るってのが超あやしいw
6359:2011/01/06(木) 01:12:17
>>62
おお!3秒とはすごい!w

これって同じ道通ってないですよね?
6432:2011/01/06(木) 01:16:42
>>62
参考にしたいのでソースを見せていただけないでしょうか?
提供されるだけで申し訳ないです・・・
6558:2011/01/06(木) 01:20:29
>>63
同じ道を通る場合も考慮してるつもりだけど
最終結果は同じ道を通ってないね
6659:2011/01/06(木) 01:22:22
>>65
おー。すごい。
同じ道を通る場合を考えると相当面倒じゃない?
6758:2011/01/06(木) 01:32:41
>>66
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/14.txt
1.gr17.txt の内容から一旦↑の二点間の最小距離データAと経路データBを作成する
2.A を使って検索 (条件:すべての点を一回ずつ通る)
3.出力するときにBを使って元の経路を出力
以上
6859:2011/01/06(木) 01:48:35
>>58
あげてくれたテキストは、gr17.txtのデータを対角にしたもの?
すまない、[]の中の数字の意味がよくわからないのだが。
6959:2011/01/06(木) 01:49:26
安価ミスったわ
>>58じゃなくて、>>67
7058:2011/01/06(木) 01:52:47
>>68
括弧の中は経路の数
1 なら直接移動
2 なら途中で1点経由
3 なら途中で2点経由 って具合

デバッグするときにチェックしやすいように出しただけ
7159:2011/01/06(木) 02:00:32
>>70
あ、よく見たらgr17.txtの対角じゃなかったw

なるほどねー、サンクス。
A を使って検索ってのは、14.txtの中から検索してるんだよね?
72デフォルトの名無しさん:2011/01/06(木) 02:07:59
>>67
二点間の最小距離を求めるのって全探索でやった?
73デフォルトの名無しさん:2011/01/06(木) 05:13:33
>>31 ls -Rだと勝手に解釈
#include <stdio.h>
static int trim_lsR_path(char *path, size_t size)
{
 int i;
 for (i = 0; i < size; i++)
   if (path[i] == ':')
     break;
 return path[i] == ':' && i >= 1 ? path[i] = '\0', 0 : -1;
}
int main(void)
{
 static char path[BUFSIZ], buf[BUFSIZ];
 FILE *fp;
 if ((fp = fopen("ls-R", "r")) == NULL)
   return 1;
 if (fgets(path, sizeof(path), fp) == NULL)
   goto err;
 if (trim_lsR_path(path, sizeof(path)) < 0)
   goto err;
 while (fgets(buf, sizeof(buf), fp) != NULL)
   if (!strcmp(buf, "\n")) {
     if (fgets(path, sizeof(path), fp) == NULL)
       goto err;
     if (trim_lsR_path(path, sizeof(path)) < 0)
       goto err;
   } else
     printf("%s/%s", path, buf);
 return fclose(fp), 0;
err:
 return fclose(fp), 1;
}
74デフォルトの名無しさん:2011/01/06(木) 09:26:46
C言語の*入門者*向け解説スレッドです。
★前スレ
C言語なら俺に聞け(入門編)Part 75
http://hibari.2ch.net/test/read.cgi/tech/1292682816/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 145代目
http://hibari.2ch.net/test/read.cgi/tech/1294061094/
★C++言語については避けてください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
7529:2011/01/06(木) 09:51:15
すみません29です。
期限が近いのでどなたかお力を貸していただけないでしょうか。
頼むばかりで申し訳ありませんが、
何卒宜しくお願いいたします。
>>29
>>30
76デフォルトの名無しさん:2011/01/06(木) 10:20:16
>>75
わかりにくい
問題文そのまま載せて欲しい
77デフォルトの名無しさん:2011/01/06(木) 10:25:09
>>75
適当で良いから、height.csvを例示してくれない?

初期値がある方が作る側は負担が少ないんだが
7829:2011/01/06(木) 10:55:46
145.6 152.3 178.5 121.1 138.6
133.2 136.8 143.3 125.6 156.0
121.1 139.6 118.9 127.7 130.0
というheight.csvがあって
それぞれの学生に[1][1]から[3][5]までの仮番号を付けます
それぞれの番号に対しランダムで0.1刻みで0.1から0.5までの値を付加します。
このポイントを基礎ポイントといいます。
0.1 0.4 0.5 0.3 0.3
0.1 0.3 0.2 0.2 0.1  基礎ポイント
0.5 0.1 0.4 0.2 0.4
このポイントをもとに今後の計算をしていきます
1行目の学生を取り出し
0.1 0.4 0.5 0.3 0.3
*これにランダムで0.1刻みで0.1から0.5までの値の付加ポイントを付けます
以下ランダムで出てきた付加ポイント
0.2 0.2 0.1 0.3 0.5
この付加ポイントを基礎ポイントにあわせた合計が
0.3 0.6 0.6 0.6 0.8
5人の学生の中で与えられたポイントの合計が最も少ない学生を回の代表値とします
この場合は0.3です*
(*〜*)を5回繰り返し
それぞれの回の代表値
0.3 0.2 0.3 0.2 0.3
の中で一番大きかった者が行の代表です
行の代表になった者(0.3)の回の代表だった時の元の基礎ポイント
0.3 - 付加ポイント
の0.1 つまり 行の一番左の人の身長145.6を出力します
途中で同一の値が出た場合はもとのheight.csvでより左の人を出してください
(↑すみません書き忘れました。回の代表を選ぶ時もより左が優先です。)
7929:2011/01/06(木) 11:01:24
問題文はほぼ>>29ままで語尾を命令系から変えただけです
中カッコでかかれていたもの(以下のようになってたもの)を
あああああ}
あああああ}繰り返し
あああああ}
(*〜*)や(\〜\)に書き直しただけです
出力されるcsvの形式は>>30のままです
代表の選出の際に左側優先ってのを書いてないと出力が長方形にならないですよね
そら意味わからないですよね申し訳ありませんでした
80デフォルトの名無しさん:2011/01/06(木) 11:47:39
>>29
こうか?

1-5: 元csvと同じ
6-10: 基礎値
11-15: 付加値
16-20: 基礎値+付加値
21: 16-20 内の最小値(a)
22: 21に対応する者の身長
23-34: 11-22 までと同じ処理 
35-46: 同上
47-58: 同上
59-70: 同上
71: (a) の最大値に対応する者の身長

何故、基礎値が必要なのか全く理解できない

> の中で一番大きかった者が行の代表です 
> 行の代表になった者(0.3)の回の代表だった時の元の基礎ポイント 
> 0.3 - 付加ポイント 

これも意味不明だな



81デフォルトの名無しさん:2011/01/06(木) 12:16:01
>>29
やっぱ問題文がよく分からないからエスパーした
合ってるかは自分で確かめてくれ
http://ideone.com/0l3ZN
8229:2011/01/06(木) 13:17:38
ありがとうございます
実行して.csvを確認して20列目までは出ているんですが
21,22列が正しい値がでません

基礎値が必要なのは基礎値も最初にランダムで設定した以上出力すべきってことだとおもいます
私もそういう問題なのだとしか言えません

> の中で一番大きかった者が行の代表です
> 行の代表になった者(0.3)の回の代表だった時の元の基礎ポイント
> 0.3 - 付加ポイント

これは「対応する身長を出力」を言い方変えて言いたかっただけなので忘れてください
すみません
8329:2011/01/06(木) 13:19:46
22列はでてました
1から20列及び22列と
21列目が対応していません
宜しくお願いします
84デフォルトの名無しさん:2011/01/06(木) 15:48:54
>>29
81ではないが解いてみた
http://codepad.org/Fs1wnLWh
8529:2011/01/06(木) 16:01:47
>>84さんありがとうございます
実行しようとしたら
>>110行目でerror: Invalid data(!= %5)
と出ます
ここのエラーは何が合わなかったのでしょうか
8629:2011/01/06(木) 16:07:04
ちなみにheight.csvの中身は確認しやすいように
111.1 111.2 111.3 111.4 111.5
222.1 222.2 222.3 222.4 222.5
333.1 333.2 333.3 333.4 333.5
で放り込んだのですがこれが良くなかったのでしょうか
87デフォルトの名無しさん:2011/01/06(木) 16:07:35
>>85
>>81 のコードは "," 区切りデータに対応していて >>84 のコードは " " 区切りデータに対応している
>>81 用のファイルを >>84 に喰わせたらダメだな
>>84 の
const char *delimiter = " "; を
const char *delimiter = ","; に直せば良いと思うよ
88デフォルトの名無しさん:2011/01/06(木) 16:08:50
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):http://www1.axfc.net/uploader/File/so/56644
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio
 [3.3] 言語:C
[4] 期限:2011年1月11日(火) 09:00まで
[5] その他の制限:制限なし、OpenCV使用可

期限が短いですが、よろしくお願いします。
89デフォルトの名無しさん:2011/01/06(木) 16:09:20
[1] 授業単元:Cプログラミング入門2
[2] 問題文(含コード&リンク):
複数の自然数に対する最小公倍数を求めるプログラムを作成せよ。
最小公倍数を求める関数を作成する必要あり
int型のオーバーフローは考慮しないで良い。
関数名はlcm
int lcm(int num0,int num1)
num1 num2は入力値
lcmの戻り値は最小公倍数
入力に関して:キーボードから入力する整数の個数を入力し(最大10)改行する次に指定した数の整数を入力するように作る
[3] 環境
 [3.1] OS: Windows7
 [3.3] 言語: C
[4] 期限: ([2011年1月6日23:00まで] または [無期限] のいずれか)
[5] その他の制限: ポインタまで習いました
90デフォルトの名無しさん:2011/01/06(木) 16:12:06
>>86
スペース区切りのファイルを喰わせてダメだったんなら

sp = strtok(line, delimiter);
for (i = 0; sp != NULL; i++)
{
  student[i] = atof(sp);
  sp = strtok(NULL, delimiter);
}
ここが怪しいな、i = 4 でループを抜けそうな気がする
9129:2011/01/06(木) 16:15:46
>>87 >>90 さん
スペースというか
エクセルでみた時のセルの区切り目を
スペースで表したものが
111.1 111.2 111.3 111.4 111.5
222.1 222.2 222.3 222.4 222.5
333.1 333.2 333.3 333.4 333.5
です
92デフォルトの名無しさん:2011/01/06(木) 16:17:59
>>91
気になったので動かしたらちゃんと動いたよ >>90 は俺の勘違いなので忘れてくれ
結局はカンマ区切りのデータを喰わしてたって事かい?
9329:2011/01/06(木) 16:19:01
あぁ80行目ですね見つけました
実行することができましたので中身を確認したいと思います
9429:2011/01/06(木) 16:27:27
>>84さん
確認させていただきました
1-5: 元csvと同じ
6-10: 基礎値
11-15: 付加値
16-20: 基礎値+付加値
21: 16-20 内の最小値(a)
22: 21に対応する者の身長
23-34: 11-22 までと同じ処理
35-46: 同上
47-58: 同上
59-70: 同上
71: (a) の最大値に対応する者の身長
を実行させたいのですが
2回目3回目4回目5回目が毎回基準値のふりなおしからはじまってます
以下の流れになってしまっています
1-5: 元csvと同じ
6-10: 基礎値
11-15: 付加値
16-20: 基礎値+付加値
21: 16-20 内の最小値(a)
22: 21に対応する者の身長
23-34: 6-22 までと同じ処理 ←ここは11-22を繰り返しです
35-46: 同上
47-58: 同上
59-70: 同上
71: (a) の最大値に対応する者の身長
95デフォルトの名無しさん:2011/01/06(木) 16:27:43
>>88
業務?
96デフォルトの名無しさん:2011/01/06(木) 16:41:42
>>88
何これ怖い
97デフォルトの名無しさん:2011/01/06(木) 17:05:48
14です。
期限が近いのでお願いします
16に書いた分をまとめました
【質問テンプレ】
[1] 授業単元: Cプログラミング入門2
[2] 問題文(含コード&リンク):
  ファイル入出力関数を使って偶数個の値が入ったsample.csvから
  偶数行の数値だけを取り出したeven.csvと
  奇数行の数値だけとりだしたodd.csvを作成し
  even.csvからodd.csvの値を引いたdiff.csvを作成しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語: C
[4] 期限:2011年1月7日06:00まで
[5] その他の制限:
  例えば8行7列のsample.csvがあったとして
  偶数行奇数行でわけると4行7列が2つできますよね
  最後のdiff.csvはデータベース的な差分ではなく
  偶数奇数2つのcsvの同じ位置に入力されている数値を
  偶数引く奇数と計算したときの値が4行7列で入力されたものです
  行数が偶数であることしか決まってないので
  X行Y列と臨機応変に対応できるようお願いします。

9884:2011/01/06(木) 17:37:24
>>29
基礎データの算出を1回、CSVの区切りを" "から","、回数の最大値をdefineで定義しました

http://codepad.org/WqMiFPsf
9929:2011/01/06(木) 17:52:30
>>98さんありがとうございます
確認しました

1回目から5回目の各回で
16-20: 基礎値+付加値
の部分で基準値と付加値の和が合わない部分があります

これによって後の出力に影響がでています
100デフォルトの名無しさん:2011/01/06(木) 18:00:10
>>29
基礎ポイントというものは、5人の学生それぞれの専用の値ってことかな?

基礎ポイント1→1番目の学生に使用
基礎ポイント2→2番目の学生に使用
...
基礎ポイント5→5番目の学生に使用
10129:2011/01/06(木) 18:22:25
最初に割り振った基礎ポイントは5人の学生の固有の数値です
その値にランダムで付加値の加算を5回してます。
10229:2011/01/06(木) 18:27:23
簡単にいえば>>84から
基礎ポイントの表示を4回分出力しなければ完成です
数値の計算や代表の選出は正しかったので
2回目以降の「基礎ポイントの表示」を出力しないだけです
繰り返し工程からこの部分を外して
出力を最初の一回だけにしてほしいんです
お手数をかけて申し訳ありません。
103デフォルトの名無しさん:2011/01/06(木) 18:35:58
104デフォルトの名無しさん:2011/01/06(木) 18:45:27
>>73
遅くなりました。有難う御座います。
ファイルのパスだけを出力するのでディレクトリのパスは出力しないのでいいのですがその辺りを教えていただきたいです。
10529(完):2011/01/06(木) 18:45:39
>>103確認しました
完成しました
>>103さんを始めみなさまどうもありがとうございました
106デフォルトの名無しさん:2011/01/06(木) 18:58:39
>>97
stlの勉強を兼ねて書いてみた
あと、これは老婆心だが、人に頼ってばかりいないで自分で少しは考えて書け
人に頼ってばかりだとプログラマーになった時に困るぞ

http://codepad.org/SnOfwtdV
107デフォルトの名無しさん:2011/01/06(木) 19:31:35
>>106
>[3.3] 言語: C
108デフォルトの名無しさん:2011/01/06(木) 21:11:18
入力クロックをFPGAボード上の6MHzクロックとして、これを6*10^6カウンタで1秒クロック変換する。
この1秒クロックでアキュムレータを駆動する。

このプログラムを教えてください。
109デフォルトの名無しさん:2011/01/06(木) 22:16:31
[1] 授業単元:OS
[2] 問題文
fork とexec 族のシステムコールを使い,簡単なコマンドインタープリタ(mysh)を作成せよ.
作成するコマンドインタープリタは下記の機能をサポートすること.
? 設定ファイル(.path)にコマンドサーチパスを指定することが出来る.なお,ファイル内
のパスの指定方法は,各自が考えて定義すること.(パスにないコマンドを入力した場
合には,見つからない旨のエラーメッセージを出力すること.)
? パイプを利用して複数(可変個)のコマンドの入出力を結合することができる.
? コマンド実行中に Ctrl-C を入力すると,現在のコマンドの実行を中断して, 次のコマン
ドを入力するためにプロンプトを出力する.
? リダイレクション(“<” と “>”)を使用してコマンドへの入力をファイルから得たり,ファ
イルへ出力したりすることが出来る.
? exit を入力すると,mysh を終了する.
[3] 環境
 [3.1] OS:Windows 7
 [3.2] コンパイラ名とバージョン:cygwin
 [3.3] 言語: C

よろしくお願いします!!!
110デフォルトの名無しさん:2011/01/06(木) 22:17:13
【実行イメージ】
$ ./mysh
myprompt>
myprompt> ←エンターキーのみの入力なら単なる改行
myprompt> ls -l ←単一コマンドの実行
・・・・・・・・・
myprompt> hoge
myprompt> hoge: Command Not Found ←コマンドパスにないコマンドを実行しようとした.
myprompt> ls -l | grep waseda ←パイプによる入出力の結合
・・・・・・・・・
myprompt> grep waseda < aaa > bbb ←リダイレクションによる入出力の変更
・・・・・・・・・
myprompt> ←実行中にCtrl-C
・・・・・・・・・
myprompt> exit ←exit を入力するとmysh を終了
111デフォルトの名無しさん:2011/01/06(木) 22:18:02
>>109,110
申し訳あえりませんこれで一つです
よろしくお願い致します
112デフォルトの名無しさん:2011/01/06(木) 23:11:11
113デフォルトの名無しさん:2011/01/07(金) 00:12:08
>>104 stat使うなら、opendirとかも使いたいのだが...
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
static int trim_lsR_path(char *path, size_t size, int ch){
  int i;
  for (i = 0; i < size && path[i] != ch; i++);
  return path[i] == ch && i >= 1 ? path[i] = '\0', 0 : -1;
}
int main(void){
  static char path1[BUFSIZ], path2[BUFSIZ], buf[BUFSIZ];
  struct stat st;
  FILE *fp;
  if ((fp = fopen("ls-R", "r")) == NULL) return 1;
  if (fgets(path1, sizeof(path1), fp) == NULL) goto err;
  if (trim_lsR_path(path1, sizeof(path1), ':') < 0) goto err;
  while (fgets(buf, sizeof(buf), fp) != NULL)
  if (!strcmp(buf, "\n")) {
    if (fgets(path1, sizeof(path1), fp) == NULL) goto err;
    if (trim_lsR_path(path1, sizeof(path1), ':') < 0) goto err;
  } else {
    sprintf(path2, "%s/%s", path1, buf);
    if (trim_lsR_path(path2, sizeof(path2), '\n') < 0 || stat(path2, &st) < 0) goto err;
    if (S_ISDIR(st.st_mode)) continue;
    printf("%s\n", path2);
  }
  return fclose(fp), 0;
err:
  return fclose(fp), 1;
}
114デフォルトの名無しさん:2011/01/07(金) 01:52:31
>>109
リダイレクトとパイプの実装方法がよくわからんなぁ。教えてエロい人。
115デフォルトの名無しさん:2011/01/07(金) 03:44:07
[1] 授業単元:
[2] 問題文(含コード&リンク):
大量に数値が書き込まれているa.csvとb.csv(数値の数は同じ)をまず読み込み、中を参照していく
a.csvで100以上の数値が確認された場合,b.csvの同位置の数値を調べ、その値も100以上だった場合にはa.csvのその位置の値を0に書き換える
最終的に補正が完了したa.csvをc.csvとしてはきだす、というプログラムの作成
できれば実行前にプログラムの一部を書き換えることでa.csvのどの列を参照するのかを指定できるようにしてもらいたいです

[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C++
[4] 期限: 1月9日まで

ちょっと意味不明な課題かもしれませんが、できればどなたかお願いします
日本語がおかしいかもしれないので何言ってるのかわからない場合はつっこんでください
116デフォルトの名無しさん:2011/01/07(金) 04:03:05
>>104
ls -Rを実行したディレクトリじゃないと正常に動かないし、環境依存しそうだけど。
バグあるかも。
#include <stdio.h>
#include <dirent.h>
#include <string.h>
int main()
{
FILE* fp = NULL;
char buf[1024] = {0}, path[1024] = {0}, check[1024] = {0};
fp = fopen("ls-R", "r");
if (fp){
while (fgets(buf, sizeof(buf), fp) > 0){
if (path[0] == 0x00){
memcpy(path, buf, strlen(buf) - strlen(":\n"));
}else if (strcmp(buf, "\n") != 0){
buf[strlen(buf) - 1] = 0x00;
snprintf(check, sizeof(check), "%s/%s", path, buf);
DIR* dir = opendir(check);
if (dir){
closedir(dir);
}else{
printf("%s/%s\n", path, buf);
}
}else{
path[0] = 0x00;
}
}
fclose(fp);
}
return 0;
}
117デフォルトの名無しさん:2011/01/07(金) 04:10:36
>>115
csvのフォーマットは?,かタブかその他か。
a.csvとb.csvの例があればたぶんみんなやりやすい。
118デフォルトの名無しさん:2011/01/07(金) 04:19:21
>>115
最後の行がよく分からない
例えば#define START 2が定義されてると
a.csvの2行目から処理を始める、という解釈でいいのかい
11914:2011/01/07(金) 07:32:42
>>112
odd.csvとeven.csvは出力されるのですが
diff.csvが出力されません
55行目でエラーが出てしまいます
ビルドは正常に完了するのですが
実行中にエラーがでて止まります
120デフォルトの名無しさん:2011/01/07(金) 07:54:37
>>14
自分の学習用に解いてみたやつ、コード汚いけど
ttp://ideone.com/kXSK0
121デフォルトの名無しさん:2011/01/07(金) 10:38:43
>>115
全部処理するのか特定の行だけするのか分からなかったから
マクロいじって調整しておくれ
http://ideone.com/YWxXE
122 ◆QZaw55cn4c :2011/01/07(金) 12:19:09
>>114
fork() + pipe(), dup2() あたりで。close() を間違えないように。
123デフォルトの名無しさん:2011/01/07(金) 17:35:38
[1] 授業単元:プログラム1
[2] 問題文(含コード&リンク):モンテカルロ法で円周率を求めるプログラムです。
http://codepad.org/P70BTW5pが正常に動作しません
おねがいします。どこが悪いのでしょうか
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++
 [3.3] 言語: C++
[4] 期限:2010年12月11日
[5] その他の制限:なし
124デフォルトの名無しさん:2011/01/07(金) 18:00:04
>>123
40: n+=det_arrow(yumiya[i]);

n+=det_arrow(&yumiya[i]);
にしてみては?
det_arrow(arrow2D* z)って引数がポインタだよね

125デフォルトの名無しさん:2011/01/07(金) 18:01:44
>123
とりあえず、三平方の定理と40行目をn+=det_arrow(&yumiya[i]);こうしようか
126デフォルトの名無しさん:2011/01/07(金) 18:05:11
よくみたらprobabiもprintfもだめだな
127デフォルトの名無しさん:2011/01/07(金) 18:08:09
>>124-125
コメントありがとうございます。
言われたとおりに修正しました。
ただ、出力が下記のようになりました。

0.000000続行するには何かキーを押してください . . .
128デフォルトの名無しさん:2011/01/07(金) 19:09:21
キャストの位置がおかしい
129デフォルトの名無しさん:2011/01/07(金) 19:17:34
>>128
どうすれば良いですか?
130デフォルトの名無しさん:2011/01/07(金) 19:33:34
return double(a/(a+b));

return (double)a/(a+b);
かもね〜
131デフォルトの名無しさん:2011/01/07(金) 19:36:14
もうしらん
7c7
< }yumiya[1000];
---
> }yumiya[N];
15,18c15,16
< {
< if((z->x)*(z->x)+(z->y)*(z->y)<=1){
< return 0;
< }else{
---
> {
> if((z->x)*(z->x)+(z->y)*(z->y)<=1.){ // sqrt(x*x + y*y) <= 1 <=> x*x + y*y <= 1
19a18,19
> }else{
> return 0;
30c30
< return double(a/(a+b));
---
> return a/double(a+b);
40c40,41
< n+=det_arrow(yumiya[i]);
---
> set_arrow(&yumiya[i]);
> n+=det_arrow(&yumiya[i]);
45c46
< printf("%lf",probabi(n,h));
---
> printf("%f\n",4*probabi(n,h)); // quadrant sphere
132デフォルトの名無しさん:2011/01/07(金) 19:56:17
setしてないw
133デフォルトの名無しさん:2011/01/07(金) 20:02:36
>>131
ありがとうございます
なるほど!set_arrow(&yumiya[i]); が必要だったのですね
本当にありがとうございます
ところで、// sqrt(x*x + y*y) <= 1 <=> x*x + y*y <= 1 はどういう意味ですか?
if((z->x)*(z->x)+(z->y)*(z->y)<=1でできましたが、、、
134響 ◆YFwH4RE2h2 :2011/01/07(金) 22:08:02
[1] 授業単元:c言語プログラミング
[2] 問題文(含コード&リンク):
トランプゲームの作成。
カードの出力は問題1に従うこと。したがって1はa、11はjであらわす。
複数で行うゲームは、各ターンで手札が表示されても
(ほかのプレイヤーに見えても)構わないものとする。
ゲームはページワン,ジンラミー、フォックストロットの中から2つ選ぶこと。
問題1は次のような問題です。問題1の作成もお願いします。
トランプの山から指定した枚数のカードを引くプログラムを作成せよ。
例えば次のようなやり取りを行う。
    枚数を入力してください(0で終了):5
    あなたの手札は:2c 6s 5d as jh
ここで5dはダイヤの5、asはスペードのエースである。0が入力されるまでやり取りを繰り返す。
残り枚数が入力より少ない場合はすべてのカードをひいて終了する。
 二次元配列をつかってすでに引いたカードを記録し、同じカードを2回以上引かないようにすること。
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 2010年01月11日15:00まで
[5] その他の制限:基本的な部分は習いました。参考書として使用し
ているものはソフトバンクの新c言語入門シニア編です。
期限が迫っていてすいませんがよろしくお願いします。
135デフォルトの名無しさん:2011/01/07(金) 22:26:34
画像を表示するプログラムで↓のエラーが出ました
fatal error C1083: include ファイルを開けません。'glut.h': No such file or directory

初心者なのでよくわかりません
助けてください
136デフォルトの名無しさん:2011/01/07(金) 22:40:36
>>135
glut.hっていうファイルが見つからないからインクルードできません
137デフォルトの名無しさん:2011/01/07(金) 22:45:01
>>135
glut.h というファイルが見つからないというメッセージ
138デフォルトの名無しさん:2011/01/07(金) 22:48:38
>>136-137
お返事ありがとうございます
解決策を教えてください
139デフォルトの名無しさん:2011/01/07(金) 23:07:41
>>138
インクルードパスを設定していないんだろ
コンパイル時に -I オプションで glut.h が有るディレクトリを指定すれば良い

OpenGL を使うんだと思うけど、リンク時に似たような問題(リンクライブラリパスの指定)が生じると思う
サンプルかなんかの makefile を参考にして makefile を作成した方が良いだろうな
140デフォルトの名無しさん:2011/01/07(金) 23:14:34
>>138
OSやコンパイラ名を書いた方が良いね

何か、開発環境の準備もしないで、
サンプルソースをコンパイルしようとしてる予感
141デフォルトの名無しさん:2011/01/07(金) 23:20:55
>>140
OSはwindows,コンパイラ名は Microsoft Visual C++ です
142デフォルトの名無しさん:2011/01/07(金) 23:50:08
>>141

もしかして、Microsoft Visual C++のインストールだけしてる環境で、
OpenGLのサンプルか何かをコンパイルしようとしてない?

この辺が参考になるかな
ttp://www.02.246.ne.jp/~torutk/cxx/opengl/openglOnWindowsVC.html

143 ◆HdJnIZ6CEU :2011/01/08(土) 01:30:20
[1] 授業単元:
[2] 問題文(含コード&リンク):
8 桁までの整数を表わす文字列(例: "-3246") を整数値(例: ?3246) に変換する関数を作りたい。各問いに答えよ。

1. 整数を表わす文字列はつぎの条件を全て同時に満たすと考えられる。

(1) 文字列の先頭の文字は、符号を表わす’+’ または’-’ または、数字’0’〜’9’ である
(2) 文字列の2 文字目以降は’0’〜’9’ である
(3) 符号を除いた文字列の長さは1 以上8 以下である

文字列を引数とし、これらの条件を同時に満たす時に整数値1 を、一つでも満たさない時(整数と
して文字列にエラーがある場合) には0 を戻り値として返す関数check() を作れ。

2. 変換したい文字列を引数とし、正負を判断して値が正または0 の時には1 を、負の時には?1
を、整数として文字列にエラーがある場合には0 を返す関数sign() を作れ。

3. 問1, 2 を利用して、8 桁までの整数を表わす文字列を引数とし、整数値に変換して返す関数
myatoi() を作成せよ。

[3] 環境
 [3.1] OS:Mac OS X
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 1月11日13:30まで
[5] その他の制限:

期限が近く、申し訳ないのですが何卒お願いします
144デフォルトの名無しさん:2011/01/08(土) 02:17:24
俺ならyacc等で生成したものを提出して先生がどうリアクションするか試す
145デフォルトの名無しさん:2011/01/08(土) 03:09:15
yaccむずいよ…
泣きそうになった
146デフォルトの名無しさん:2011/01/08(土) 04:56:41
>>143
int myatoi(char *s)
{
int r;
sscanf(s,"%d",&r);
return r;
}

char* sign(char *s)
{
int r,e;
e = sscanf(s,"%d",&r);
if(e == 0)
return "0";
else if(r < 0)
return "?1";
else
return "1";
}

int check(char *s)
{
int r,e;
e = sscanf(s,"%d",&r);
return e == 0 ? 0 : 1;
}
147デフォルトの名無しさん:2011/01/08(土) 10:14:31
>>146
酷い、まぁ問題も酷いけど
148デフォルトの名無しさん:2011/01/08(土) 10:16:28
そもそも問題が前スレとほぼ同じだろ
149デフォルトの名無しさん:2011/01/08(土) 11:11:29
みゃとい
150デフォルトの名無しさん:2011/01/08(土) 11:43:49
プログラムをMacで教えてる学校ってどうなの?
151デフォルトの名無しさん:2011/01/08(土) 11:47:29
>>150
あるんじゃない?
152デフォルトの名無しさん:2011/01/08(土) 12:22:14
>>134
>二次元配列をつかってすでに引いたカードを記録し、
(´・ω・`)
153デフォルトの名無しさん:2011/01/08(土) 13:56:07
>>150
専門でも使ってるPCがMacのとことかあるしね
まぁあまり多くはないと思うけど
154デフォルトの名無しさん:2011/01/08(土) 14:18:58
ページワンはこないだ書いたけどジンラミーやフォックストロットはルールが面倒だからパスです
155デフォルトの名無しさん:2011/01/08(土) 15:11:27
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
char型の配列を適当に大きなサイズで宣言し、その中に1文字ずつ、改行が来るまで
格納しなさい(改行コードは格納しない。) 。その後で、入力された文字列を逆順で出力しなさい。
例えば、入力された文字がdogならばgodになる。
[3] 環境
 [3.1] OS:Mac OS X
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2011年1月12日
[5] その他の制限:プリントに『改行コードの検出には¥nと比較すればよい(¥はバックスラッシュ)』と書いてあります
どなたかよろしくお願いします。
156デフォルトの名無しさん:2011/01/08(土) 15:16:19
#include <stdio.h>

int main(void)
{
char a[256];
int i, ch;

for(i = 0; (ch = getchar()) != '\n'; i++) a[i] = ch;

while(i--) putchar(a[i]);

return 0;
}
157デフォルトの名無しさん:2011/01/08(土) 15:58:52
>>118
そのような感じです

>>121
ありがとうございます!助かります
158デフォルトの名無しさん:2011/01/08(土) 16:18:09
>>155
macって改行コードは\rじゃなかったっけ
159デフォルトの名無しさん:2011/01/08(土) 16:55:37
バイナリならな
テキストでは\n
160デフォルトの名無しさん:2011/01/08(土) 20:14:37
>>122
通常のプログラムだと、pipeで取得したファイルディスクリプタを親と子でdup2をそれぞれ使うみたいなんだけど、
シェルの場合はどうなるんだろ?
ls | hexdumpを実行する場合、下のような感じか?
親(シェル)--子--孫(lsを実行)
       |  `--孫(lsをwait)
       `--子--孫(hexdumpを実行)
          `--孫(hexdumpをwait)
161デフォルトの名無しさん:2011/01/08(土) 20:25:07
CRのみだったのは昔の話
162デフォルトの名無しさん:2011/01/08(土) 20:46:23
>>160
http://codepad.org/W2pbLKZp
こんな感じで、ループをまわして次々と fork() していく(69行目〜99行目)のが簡明でしょうか。
163デフォルトの名無しさん:2011/01/08(土) 21:16:42
>>162
thx
ちょい見てみる
164デフォルトの名無しさん:2011/01/08(土) 21:38:36
バイナリファイルの中にテキストデータがあるようなデータでMS/UNIX系だけなら
改行はCR読み飛ばしてLF目印に出来るのにmacのせいでめんどい事になって
糞Appleシネと思いながら夜な夜な釘を打つ。
プログラマの70%が経験する登竜門みたいなもんだぜ
165デフォルトの名無しさん:2011/01/08(土) 22:58:17
>>162
ありがとん。
argvの解放漏れが気になるが、pipeの使い方が何となく分かった気がした。
166 ◆QZaw55cn4c :2011/01/08(土) 23:04:25
>>165
execv(path, argv)
を呼び出すために argv を malloc() していろいろ準備しているわけなんですが、execv() してしまうと、argv を free() しようがないわけですね。
このスレでこの点についてアドバイスを求めたところ、
「無視していい」
とのことでした。
167デフォルトの名無しさん:2011/01/08(土) 23:37:04
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):http://codepad.org/7N0GSgtiを完成させよ
また上記のプログラムを構造体で表現しなさい
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
 [3.3] 言語: C++
[4] 期限:2010年 1月12日
[5] その他の制限:glutはインストール済です

出力しても写真が表示されません。初心者なのでよろしくおねがいします。

168デフォルトの名無しさん:2011/01/09(日) 00:07:15
>>166
exec実行でカーネルがヒープを解放・獲得するから問題ないってことかな。

逆にexecが失敗した場合にfreeするとダブルフリーでglibcがエラー出すみたい。
execから戻るときはヒープは真っ白なのだろうか。
169 ◆QZaw55cn4c :2011/01/09(日) 01:03:10
>>168
確かにこちらの環境でも、exec()失敗後のfree() でチャイルドプロセスがコアをはきました。(親プロセスは続行しますが。)
man をみても、そのあたりのことは書いてないようですね。作法はなんでしょうね。
あと、一番トップのプロセスは自分がfork() したプロセスの終了しか wait() していないので、場合によってはプロンプトを出すタイミングが
速すぎる場合がありますね。fflush() をいろいろ入れてみたのですが改善しませんね。

なかなかむずかしい。
170デフォルトの名無しさん:2011/01/09(日) 03:25:07
そもそも子プロセスでfork()失敗したらexit()するから、
別にfree()する必要ないんじゃない?
171デフォルトの名無しさん:2011/01/09(日) 03:45:20
>>167
一部原型がないけど。
http://codepad.org/LbA7xomp
読み込んだ画像を逆に表示していたから修正済み。
マウスクリック時の動作だけは問題ないはず。
honjoフィルターとやらはどう動くのか予想がつかないから知らん。
ただ領域外参照しそうな部分だけ修正済み。
変数名は使いやすいようにほとんどリネームした。
RGBの各種変数はまったく持って不必要だったから消した。
他にも不要な変数は削除済み。
172デフォルトの名無しさん:2011/01/09(日) 09:20:04
>>170
そうですね。最終的に exit() してチャイルドプロセスのメモリ領域はOSに返してしまいますものね。
173デフォルトの名無しさん:2011/01/09(日) 16:45:33
>>155>>156が回答と気付いていない予感
174デフォルトの名無しさん:2011/01/09(日) 19:06:13
>>171
遅くなりました
ありがとうございます
コンパイルしたところ
fatal error C1083: include ファイルを開けません。'glut.h': No such file or directory
と出ました
175デフォルトの名無しさん:2011/01/09(日) 19:37:56
だからGLUTインストールしろと
先生言わなかったのか
176デフォルトの名無しさん:2011/01/09(日) 19:39:01
元は #include "glut.h"
>>171 は #include <glut.h>
177デフォルトの名無しさん:2011/01/09(日) 19:45:01
家のPCだとパスが通ってないとかそんな落ちなんじゃ
178デフォルトの名無しさん:2011/01/09(日) 20:33:24
【質問テンプレ】
[1] 授業単元:C
[2] 問題文(含コード&リンク):
  行の数が同数である(csv1)と(csv2)を横に連結し(csv3)を作成作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C
[4] 期限: 2011年1月10日23:59まで
[5] その他の制限:
  csv1及びcsv2のサイズは決まってないです
  csv1及びcsv2は行数が同じです
  csv1(20行8列)csv2(20行3列)のとき
  csv3(20行11列)が出力されます

179デフォルトの名無しさん:2011/01/09(日) 20:56:02
なんか最近csvばっかりだな
18088:2011/01/09(日) 21:28:38
どなたか>>88もよろしくお願いします…
181デフォルトの名無しさん:2011/01/09(日) 21:38:48
>180
画像処理 その12
http://hibari.2ch.net/test/read.cgi/tech/1247100724/

【Intel】OpenCV総合スレ 3画素目【画像処理】
http://hibari.2ch.net/test/read.cgi/tech/1271686856/

おすすめ
とりあえず、サンプル画像とかあったらうれしいかな
182デフォルトの名無しさん:2011/01/09(日) 21:51:57
これだけの情報で作れといわれてもな
18388:2011/01/09(日) 21:57:48
>>181
ご丁寧にありがとうございます
サンプル画像は 
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Chest.jpg
 
184デフォルトの名無しさん:2011/01/09(日) 23:18:29
>>180
問題1は、適当な閾値で二値化してfindContoursすればいいんじゃないかな
で、適当に処理して胸っぽいのをとってくればおk
185デフォルトの名無しさん:2011/01/10(月) 00:17:35
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): ランレングス圧縮をするプログラムを作成せよ。
               5MBあるテキストファイルを圧縮してください。アルファベット小・大文字しかない。改行はない。
               このプログラムをできるだけ簡単に作成せよ。
               例:もしAAABBBCCCでしたらA3B3C3というふうに作成。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Microsoft VisualC++2010
 [3.3] 言語:C言語
[4] 期限:2011年1月11日19:00まで
[5] その他の制限: 明解C言語入門まで習ってます。
皆さんのお力を借ります。よろしくお願いします。
186デフォルトの名無しさん:2011/01/10(月) 00:30:45
>>185
#include<stdio.h>

void output(int moji, int length)
{
if(length==1) printf("%c", moji);
if(length>1) printf("%c%d", moji, length);
}

int main(void)
{
int moji, moji_prev=0, length=0;

while((moji=getchar())!=EOF)
{
if(moji!=moji_prev)
{
output(moji_prev, length);
length=1;
}
else
{
length++;
}
moji_prev=moji;
}
output(moji_prev, length);

return 0;
}
187デフォルトの名無しさん:2011/01/10(月) 00:59:36
>>178
一行の長さ制限はあるけど
ttp://ideone.com/5ICTx
188デフォルトの名無しさん:2011/01/10(月) 02:20:36
>>178
>>187と比べて
・一行の長さはメモリの許す限り
・CSV1 の末尾カンマが足りなくても正常に結合
・CSV1 と CSV2 の行数が合わなくても正常に結合
http://codepad.org/w6nl4OV9
まともにやったら100行超えるとは
189デフォルトの名無しさん:2011/01/10(月) 04:32:12
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org1351836.jpg
[3] 環境
 [3.1] Linux
 [3.2] gcc
 [3.3] C言語
[4] 期限: 1/10
よろしくお願いします
190デフォルトの名無しさん:2011/01/10(月) 05:18:54
#include <stdio.h>
#include <math.h>

double distance(double x1, double y1, double x2, double y2)
{
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}

double circle(double x1, double y1, double x2, double y2)
{
double r = distance(x1, y1, x2, y2) / 2;
return r * r * M_PI;
}

int main(void)
{
double x1, y1, x2, y2;

scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);

printf("%f\n", circle(x1, y1, x2, y2));

return 0;
}
191デフォルトの名無しさん:2011/01/10(月) 05:46:43
ありがとうスッキリしました!
192デフォルトの名無しさん:2011/01/10(月) 05:54:49
vc++2008でC言語のプログラムを作っています。

アルゴリズムは…、
@あるファイルのサイズをバイト数で入力
Aline_int_sz=ファイルサイズ/4
ファイルサイズ%4!=0でline_int_sz++
Bline_int_szだけint型の動的配列の確保
Cファイルからfgetcでunsigned char型bufに入力
D4つのunsigned char型bufができたら、(*(int)buf)こん感じで
順番に動的配列に値を入れていく感じです。

ソースコードを下に載せます。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int GetFileSize(char filename[FILENAME_MAX]);
int main(){

FILE *fp;
char filename[FILENAME_MAX];
int i;
int sz;
int line_int_sz;
int *data;
unsigned char buf[4];
int roop,q;
int buf_int;
printf("input the filename>>>\n");
scanf("%s",filename);
sz=GetFileSize(filename);
193デフォルトの名無しさん:2011/01/10(月) 05:56:49
//上の続きです
roop=line_int_sz=(int)sz/4;
if(sz%4!=0){
line_int_sz++;
}
data=(int *)malloc(line_int_sz);

if((fp=fopen(filename,"rb"))==NULL){
printf("%s are fileopen errer...\n",filename);
exit(EXIT_FAILURE);
}

printf("data size is %d bytes.\n",sz);
for(i=0;i<roop;i++){
buf[3]=(unsigned char)fgetc(fp);printf("%x ",buf[3]);
buf[2]=(unsigned char)fgetc(fp);printf("%x ",buf[2]);
buf[1]=(unsigned char)fgetc(fp);printf("%x ",buf[1]);
buf[0]=(unsigned char)fgetc(fp);printf("%x ",buf[0]);
printf("\n");
buf_int=*(int *)buf;
data[i]=buf_int;
printf("data[%d]=%x\n",i,data[i]);
}
194デフォルトの名無しさん:2011/01/10(月) 05:59:30
//連投すいません
//上の続きです
//あまりブロックの処理
q=sz%4;
if(q!=0){
for(i=0;i<q;i++){
buf[3-i]=(unsigned char)fgetc(fp);
}
for(i=q;i<4;i++){
buf[3-i]=NULL;
}
for(i=3;i>=0;i--){
printf("%x ",buf[i]);
}
printf("\n");
buf_int=(*(int *)buf);
data[line_int_sz-1]=buf_int;
printf("data[%d]=%x\n",line_int_sz-1,data[line_int_sz-1]);
}

// printf("End...\n");
fclose(fp);
free(data);

return 0;
}
//次がラストです
195デフォルトの名無しさん:2011/01/10(月) 06:01:46
//ラストです
int GetFileSize(char filename[FILENAME_MAX]){

fpos_t fsize = 0;

FILE *fp = fopen(filename,"rb");

/* ファイルサイズを調査 */
fseek(fp,0,SEEK_END);
fgetpos(fp,&fsize);

fclose(fp);

return (int)fsize;
}
ここまでなんですが、
コンパイルは一応通ります。
実行中にエラーがでて、
なぜかControl+cも使えません。
どなたか解決策を教えて頂ければと思います。

よろしくお願い致します。
196デフォルトの名無しさん:2011/01/10(月) 06:31:19
>data=(int *)malloc(line_int_sz);
死ね
197デフォルトの名無しさん:2011/01/10(月) 06:36:13
>>196
ありがとうございます
まじで助かりました
198デフォルトの名無しさん:2011/01/10(月) 06:40:33
礼はいいから二度と来るな
199デフォルトの名無しさん:2011/01/10(月) 10:35:22
まぁいいではないか。
問題も解決してよかったの〜
200デフォルトの名無しさん:2011/01/10(月) 10:36:50
次からはこんな長いコードは >>1 の通りにするように!
201デフォルトの名無しさん:2011/01/10(月) 11:04:54
>>186
解答ありがとうございます。
助かりました。
この場合テキストファイルから読み出すにはどうすればいいのですか?
202デフォルトの名無しさん:2011/01/10(月) 11:47:03
リダイレクト
foo < bar
203デフォルトの名無しさん:2011/01/10(月) 17:15:56
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):挟み将棋のプログラム
[3] 環境
 [3.1] OS: (Windows/Linux/等々)  WindowsXP
 [3.2] コンパイラ名とバージョン: Microsoft VisualC++2010 Express
 
 [3.3] 言語: c++
[4] 期限: 2011/1/12 23:59まで
[5] その他の制限: 特になし。

VC++初心者でうまくできません。
皆さんのお力を貸してください、よろしくお願いします。
204デフォルトの名無しさん:2011/01/10(月) 17:23:57
>>203 大変失礼いたしました。問題内容に足りない点がありました。
・人間 vs 人間
・マウスにて駒の移動を行う
・碁盤サイズ9×9
205デフォルトの名無しさん:2011/01/10(月) 17:46:02
詰み将棋なのに人間vs人間って意味わかんねーよwwww
コマの配置を自分でして両方のコマを自分で動かして詰んだかの判定も自己申告な感じでいいのか?

それとCLIでいいのかGUIがいいか?
ExpressについてるものでGUIでと言われたらおれはやらんが
206デフォルトの名無しさん:2011/01/10(月) 17:46:44
マウスっていうからにはGUIだよなすまねぇ
207デフォルトの名無しさん:2011/01/10(月) 17:47:15
ついに漢字が読めない奴まで現れたか
208デフォルトの名無しさん:2011/01/10(月) 17:51:42
これはひどい
209デフォルトの名無しさん:2011/01/10(月) 18:24:02
tes
210デフォルトの名無しさん:2011/01/10(月) 18:31:26
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
問題1
5文字分の文字を、文字コードで入力した後、文字列として表示するプログラム
を作成しなさい。 要素数5 の整数型の配列num に,キーボードから入力された数値を順番に格納
します。5 文字の文字列が保存できる文字配列str に,num 内の数値を文字コードとして一つ
ずつ代入(コピー)します。最後にstr に保存されている文字列を画面に表示してください.
<実行例>
文字コード0:80
文字コード1:97
文字コード2:115
文字コード3:99
文字コード4:111
文字列 = Pasco

問題2
キーボードから文字列を入力し,その文字列を縦書きで表示するプログラムを作
成しなさい。このプログラムは「文字列が格納されている配列から,一文字だけ表示して改
行する」という処理を文字数分だけ繰り返すことで実現できます.
<実行例>
文字列:orz
o
r
z
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:1月11日
[5] その他の制限: なし
よろしくお願いします。
211 ◆QZaw55cn4c :2011/01/10(月) 18:34:39
>>203
「無駄合い」(飛車で王手がかかっているところで合駒で受けてはみるがその合駒が取られるだけで結局最後には詰んでしまう)を除去するのにはどうすればいいんでしょうかね?これがネックでいい詰め将棋の解探索プログラムがいまだに完成させられないんです。
212デフォルトの名無しさん:2011/01/10(月) 18:42:45
[1] 授業単元:
[2] 問題文(含コード&リンク):
まず10列に分けて数字が大量に書き込まれている1.csvというファイルを読み込みます
この1.csvは書かれている数値の大半が0で100までの数値がランダムでたまに出てくるというようなファイルです
このcsv内を参照していき、数値を検出したところで新たに出力する2.csvの同一場所に検出したということを書き込んでいきます
検出された数値が50以下のときは小、50〜70のときは中、70〜100のときは大と書き込まれるようにします

[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C++
[4] 期限: 1月12日まで


つい最近もcsv関連で助けていただいて、そのときも日本語が不自由だったのですが今回は更に酷いかもしれません
意味不明なところがあったらつっこんでくれると幸いです。どなたかよろしくお願いします
213デフォルトの名無しさん:2011/01/10(月) 19:12:57
すいません途中で書き込んでしまいました

問題3
キーボードから入力した99文字以内の文字列を、下記の様に画面に表示するプロ
グラムを作成せよ。

【実行例】
文字列を入力してください:ABCDEFG
文字列 = ABCDEFG


問題4

キーボードから入力した文字列を、1文字毎に2回づつ表示するプログラムを作成
せよ。

【実行例】
文字列を入力してください:ABC
文字列 = AABBCC

お願いします
214デフォルトの名無しさん:2011/01/10(月) 19:34:51
215デフォルトの名無しさん:2011/01/10(月) 19:44:04
[1] 授業単元:プログラミング演習U
[2] 問題文(含コード&リンク):
(1)商品情報(商品コード、品名,価格,在庫量、入荷日)を、ファイルから線形リストに商品コードの昇順に読み込む。
(2)線形リストの全データを画面に出力する。
(3)指定した条件(品名)に合う商品情報を画面に出力する。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C/C++
[4] 期限: 1月11日15:00まで
[5] ・ファイルから線形リストに商品コードの昇順に読み込む。
・指定した条件(商品名)に合う商品情報を画面に出力する。
 の2箇所が分かりませんでした。
 途中経過は、http://codepad.org/wzzb8rBu です。
 後者はstrcmp関数を使えば、とまでは考えたのですが…
 入力ファイルの中身も下の方にコメント文で入れてあるので、ご指摘お願いします。
216デフォルトの名無しさん:2011/01/10(月) 19:45:26
217デフォルトの名無しさん:2011/01/10(月) 20:02:02
>>203
GUIって何使えば良いのか明記
・Win32API
・ATL
・MFC
218デフォルトの名無しさん:2011/01/10(月) 20:07:24
>>215
線形リストを自分で作るのは面倒だからC++のSTLを使った方が早いと思うけど、途中経過がC言語だ
本当にC++も可なのか?
219デフォルトの名無しさん:2011/01/10(月) 20:26:15
>>218
STLとやらはまだ習っていないので、
おそらくC言語で書くべきのように思います…
お手数おかけしてすみません。
220デフォルトの名無しさん:2011/01/10(月) 20:33:18
>>212ですがありがとうございます。助かりました。
221デフォルトの名無しさん:2011/01/10(月) 20:34:02
ミスw>>210の間違いでした。
222デフォルトの名無しさん:2011/01/10(月) 22:01:10
詰将棋とかみると卒論かなぁと思ってしまうw
223デフォルトの名無しさん:2011/01/10(月) 22:02:07
>>222
どこにあるんだ?
224デフォルトの名無しさん:2011/01/10(月) 22:05:33
>>211 ◆QZaw55cn4c
>>222
詰め将棋ってのは誰の問題なんだ?
225デフォルトの名無しさん:2011/01/10(月) 22:16:09
>>217 203の者です。・Win32API でお願いいたします。
よろしくお願いいたします。

>>222 詰め将棋ではなく、挟み(はさみ)将棋です。
226デフォルトの名無しさん:2011/01/10(月) 22:36:09
ああ 挟み将棋かw
間違えた
227デフォルトの名無しさん:2011/01/10(月) 22:45:13
>>58

32とは別人ではありますが、
自分の出されている課題とまったく同じなので
是非ソースを拝見させていただきたいです・・・
228デフォルトの名無しさん:2011/01/10(月) 22:45:46
将棋とかオセロとか講義でやらされた記憶あるわ
〜プログラミング1みたいな講義の絞めの課題でよく出されるよね
229デフォルトの名無しさん:2011/01/11(火) 02:13:57
>>167です
遅くなりました
GLUTをインストールしても同様のエラーが出るので、先生にしたところ
次のようなコメントが返ってきました。

実行時に,入力ファイルを指定する必要がある。
ファイルのパスがちがう、ファイル名が違う、等の理由でプログラムが画像ファイルを見つけることができないと、そのようなエラーがでる。
コンパイルしたプログラムと同じディレクトリに画像ファイルをおいて実行しなさい。

これは、ソースファイルに画像ファイルを置けということでしょうか?



230デフォルトの名無しさん:2011/01/11(火) 06:12:57
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
y.txtというアルファベットしか含まれていない単純なテキストファイルを用意します。
それをC言語にて読み込んでランレングス圧縮します。
そしてそれを圧縮したz.txtを新たに作り出します。
作成した後、z.txtをもとのy.txtに戻す(復号化)プログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C言語
[4] 期限:早急に
[5] その他の制限:C言語の基礎
#include <stdio.h>
#include <stdlib.h>
void func(FILE *fp1, FILE *fp2) {
int c1, c2, l = 0;
for(c1 = c2 = fgetc(fp2); c1 != EOF; c2 = fgetc(fp2)){
if(c1 != c2){
fprintf(fp1, "%c%d", c1, l);
l = 1;
c1 = c2; }
else ++ l; }}
int main(void) {
FILE *fp1 = fopen("z.txt", "w"), *fp2 = fopen("y.txt", "r");
if(!fp1 || !fp2) exit(EXIT_FAILURE);
func(fp1, fp2);
fclose(fp1);
fclose(fp2);
return 0;}
圧縮プログラムはこんな感じでできました。復号をよろしくお願いします。皆さんの力をお借りします。
231デフォルトの名無しさん:2011/01/11(火) 06:56:54
232デフォルトの名無しさん:2011/01/11(火) 10:00:41
>>231
ありがとうございます。助かりました。
233デフォルトの名無しさん:2011/01/11(火) 14:30:30
>>229
同様のエラーとはコンパイルエラーなんでしょ
だとすれば、君のコミュニケーション能力に問題が有るのか、講師が無能なのか...

コンパイル時に glut.h not found が出るならインクルードパスが通っていないって事だから少し調べれば答えは簡単に見つかるよ
234デフォルトの名無しさん:2011/01/11(火) 17:41:17
>GLUTをインストールしても
そもそも OpenGL が入ってなくて $(MSDevDir)\..\..\VC98\include\GL にパスも通ってない可能性
235デフォルトの名無しさん:2011/01/11(火) 17:42:01
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
関数の定義と呼出しに慣れるために、下記の3つの関数を定義ならびにmain関数からその関数の呼出を行うプログラ
ムを作成しなさい。関数内で行う処理ならびにmain関数で行う処理はプログラム例を参考に、実行例と同じ結果が出
力されるように考えてください。
<定義する関数>
minof関数 ・・・引数として受け取った2つの整数n1とn2のうち、小さいほうの値を戻り値として返す。
print_hello関数 ・・・関数内で入力された名前xxxを用い、「こんにちは、xxxさん!」と表示する。
put_stars関数 ・・・引数として受け取った整数noを使用して、*をno個連続表示する。

<実行結果>
名前を教えて下さい:Taro
こんにちは、Taroさん
整数を2つ入力してください
(小さい方の値の数だけ * を表示します)
num1 = 20
num2 = 15
小さい方の値は15ですね。
それでは * を15個表示します。
***************

  [3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:1月11日
[5] その他の制限: なし
よろしくお願いします。
236デフォルトの名無しさん:2011/01/11(火) 18:49:16
237デフォルトの名無しさん:2011/01/11(火) 18:55:01
ありがとうございます。助かりました
238デフォルトの名無しさん:2011/01/11(火) 19:13:20
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
問題1 キーボードから演算記号と2つの整数値を入力し、演算結果を終了の指示があるまで演算を繰返し行うプログラムを作成しなさい。
<作成条件>
@演算は、整数2つと演算記号を引数とするcalc関数を定義して行い、演算結果を戻り値として返すこと。
A演算記号として’e’が入力された場合はプログラムの繰返しを終了すること。
B演算記号は、加減乗除(+、−、*、/)を使用し、それ以外の文字が入力された場合は、警告メッセージを表示し、再度演算記号の入力をすること。
<実行結果>
演算記号(+,-,*,/)を入力してください
op = +
整数を2つ入力してください
num1 = 5
num2 = 10
5 + 10 = 15
演算記号(+,-,*,/)を入力してください
op = /
整数を2つ入力してください
num1 = 8
num2 = 3
8 / 3 = 2
演算記号(+,-,*,/)を入力してください
op = e
終了します
問題2 キーボードから入力された3つの整数の合計を求めるプログラムを作成せよ。 

ただし、 以下の条件を満してプログラムを作成すること。
キーボードからの入力はmain関数内で行う。3つの値の合計の計算はadd関数内で行う。main関数からadd関数を呼び出す。合計値を関数の戻り値として受け取り、main関数内で表示する。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:1月11日
よろしくお願いします。
239デフォルトの名無しさん:2011/01/11(火) 20:28:38
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
縦は無数、横が10列で数字が書き込まれているecxelファイルを読み込む(ファイル名は何でもいいです)
読み込む時は今後の処理を考えてなるべく配列で
その後各列を縦に参照していき、正の値が出たときは別の同じ型の配列の同じ位置に代入していく
負の値が出たときに、そのセルの列の前5個、後ろ5個を参照し以下の処理を行う
前にも後ろにも正の値が検出された場合 → 参照しているセルに一番近い前と後ろの値の2つの平均値を取得し別の配列に格納する
前あるいは後ろの片方にしか正の値が検出されなかった場合 → 一番近い値をそのまま別の配列に格納する
前にも後ろにも正の値が無い場合 → そのままの負の値で別の配列に格納する

最後に値の変更を終えた別の配列をそのままresult.csvとして出力する


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

問題は口頭で出されたため具体的にこのようにやらなければいけないという指定はないのですができれば配列でお願いしたいです
もっと良いやり方があるのに、と思った場合は結果が変わらないのであればどのような方法でもかまいません
よろしくお願いします
240デフォルトの名無しさん:2011/01/11(火) 21:00:57
>>239
無数・・・・
241デフォルトの名無しさん:2011/01/11(火) 21:07:54
無数って数が無いみたいですねごめんなさい
大体1000くらい入るんですがもっと入る可能性もあったりしますので、確定できてないです
242デフォルトの名無しさん:2011/01/11(火) 21:14:45
無数な配列はきついからとりあえず1000でいイカ?
243デフォルトの名無しさん:2011/01/11(火) 21:43:26
xlsファイル読むのってActiveX使えばいいの?
244デフォルトの名無しさん:2011/01/11(火) 21:54:53
11行分保持することにしておいて逐次書き出しでよくね?
245デフォルトの名無しさん:2011/01/11(火) 21:59:39
>>242
配列の何が厳しいかとか良く分からずに質問して申し訳ありません。似た感じのものでも結構なので1000という指定でも良いです

>>243
〜.csvってファイルを読み込んでやりたいのですが、ActiveXという単語は初耳でした
もしかしてエクセルファイルって表現はまずかったでしょうか?数字しか入ってないcsvファイルです
246デフォルトの名無しさん:2011/01/11(火) 22:14:36
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org1354869.txt.html
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] Visual studio
 [3.3] 言語: C
[4] 期限: 1/12
[5] その他の制限: 条件文 / 繰り返し文などを用いる
宜しくお願い致します。
247デフォルトの名無しさん:2011/01/11(火) 22:20:57
>>246
ライフゲームまんまやね
248246:2011/01/11(火) 22:24:11
246です
http://www.dotup.org/uploda/www.dotup.org1354902.txt.html
問題文ですが、こちらでお願い致します。
249デフォルトの名無しさん:2011/01/12(水) 00:01:03
>>246>>248
ありませんが
250デフォルトの名無しさん:2011/01/12(水) 01:23:17
【質問テンプレ】
[1] 授業単元: C言語基礎講座

[2] 問題文(含コード&リンク):
   戦闘シュミレーターの制作(ドラクエのようなものです)
   二人分の名前(文字列)を入力、入力された文字列から攻撃力、HPを制作↓
   バトルをする(どちらかのHPが0になるまで)
   試合結果表示 
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual studio2008
 [3.3] 言語: C++
[4] 期限:1月13日
[5] その他の制限:文字列から生成するパラメーターは法則を作る。

わかりにくい文章ですみません。知恵を貸してくれると助かります。
251デフォルトの名無しさん:2011/01/12(水) 01:23:43
意味が分からない
252デフォルトの名無しさん:2011/01/12(水) 01:46:49
ミラクルマジカル分からない
253デフォルトの名無しさん:2011/01/12(水) 01:48:38
1人目名前7文字→攻撃力50 HP1000
2人目名前8文字→攻撃力80 HP700

攻撃力やHPは+αでランダム補正値を付加して
戦わせるってことかね
名前のアルファベットで補正値作る方法もいいね。

作り手の思想が大きく影響する問題だなぁ
254デフォルトの名無しさん:2011/01/12(水) 01:56:43
なにそのバーコードバトラー
255デフォルトの名無しさん:2011/01/12(水) 02:02:43
>>251 >>252 日本語下手ですいません・・・

>>253 アルファベットでパラメーターを作りたいのですが難しくてorz

>>254 まさにあのゲームと同じ考え方だと思います。

256デフォルトの名無しさん:2011/01/12(水) 02:06:18
int i;
int atk[2]={0},hp[2]={0};
char name0[32],name1[32];

scanf("%s",name0);
scanf("%s",name1);

for(i=0;i<32&&name0[i]!='\0';i++) {
atk[0]+=name0[i];
hp[0]+=name0[i]/(int)strlen(name0);
}
atk[0]/=(int)strlen(name0)*2;

for(i=0;i<32&&name1[i]!='\0';i++) {
atk[1]+=name1[i];
hp[1]+=name1[i]/(int)strlen(name1);
}
atk[1]/=(int)strlen(name1)*2;

こんな感じで?
257デフォルトの名無しさん:2011/01/12(水) 02:54:29
>>256
AAAが弱くてZZZが強いってすぐにバレちゃうからもっと捻らないとダメじゃない?
258246:2011/01/12(水) 02:55:31
すいません不備があったのでもう一度書き込みします。

[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org1355480.txt.html
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] Visual studio
 [3.3] 言語: C
[4] 期限: 1/12
[5] その他の制限: 条件文 / 繰り返し文などを用いる
宜しくお願い致します。
259109:2011/01/12(水) 02:59:27
>>109
皆さん尽力していただきありがとうございます
最終的にはどうすればよいでしょうか
自分では全く手が出なくて・・・
本当に申し訳ないのですがよろしくお願い致します
260デフォルトの名無しさん:2011/01/12(水) 03:42:32
261デフォルトの名無しさん:2011/01/12(水) 03:54:07
>>241
無数というと、普通は「数え切れないほど沢山」の意味になります。
ここでは、沢山を強調したいのではなく、要素数が不定であるの
ということですね。
262デフォルトの名無しさん:2011/01/12(水) 03:55:43
要素数が不定の意味ですね。一文字消し損ないました。
263デフォルトの名無しさん:2011/01/12(水) 03:59:29
>>261
その通りです。日本語不自由で申し訳ないです。
おそらく500〜700くらいになるんですが最大1000くらいまで縦の要素数が増える可能性があります
264デフォルトの名無しさん:2011/01/12(水) 04:01:02
>>250 ありがとうございます。
            参考にして頑張ります。
265デフォルトの名無しさん:2011/01/12(水) 08:26:38
[1] 授業単元:プログラミング演習 
問題1 キーボードから4つの整数を入力し、その中の最大値を表示するプログラムを作成しなさい。 ただし、このプログラムは下記の2つの種類の処理を、1つのプログラム内で行うように作成してください。
<実行結果>
配列を使わない処理です
num1 = 25
num2 = 84
num3 = 12
num4 = 68
最大値は84です。
配列を使用した処理です
num1 = 25
num2 = 84
num3 = 12
num4 = 68
最大値は84です。
266デフォルトの名無しさん:2011/01/12(水) 08:29:16
問題2 問題1のプログラムを関数を使用たプログラムに改良しなさい。すなわち、キーボードから4つの整数を入力し、その中の最大値を表示するプログラムを、maxof関数を定義して作成しなさい。
ただし、このプログラムは問題3と同様下記の2つの種類の処理を、1つのプログラム内で行うように作成すること。
配列を使わないで、最大値を求める処理(入力用変数:num1,num2,num3,num4)
配列を使わない処理です
num1 = 34
num2 = 21
num3 = 98
num4 = 5
最大値は98です。
配列を使用した処理です
num1 = 34
num2 = 21
num3 = 98
num4 = 5
最大値は98です。
配列を使わない処理です
num1 = 3
num2 = 4
num3 = 5
num4 = 6
最大値は6です。
配列を使用した処理です
num1 = 7
num2 = 8
num3 = 6
num4 = 5
num5 = 4
num6 = 3
num7 = 2
num8 = 3
最大値は8です。   
[3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C  [4] 期限:1月12日
267デフォルトの名無しさん:2011/01/12(水) 10:22:32
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
・1からNまでの平均値を求める関数を作成せよ。
・ただし以下の3つの方法のうち、2つの方法でプログラムを作成せよ。
ー値を返す
ー値渡し
ー参照渡し(アドレス渡し)



[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: なるべく早急に
[5] その他の制限:
[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] その他の制限: なし
268デフォルトの名無しさん:2011/01/12(水) 10:36:40
double func(int N){ return n * 0.5 + 0.5; }
269デフォルトの名無しさん:2011/01/12(水) 11:05:51
誰か>>238お願いします
270デフォルトの名無しさん:2011/01/12(水) 12:43:53
>>258もお願いします!
271デフォルトの名無しさん:2011/01/12(水) 14:02:43
>>270
>オンのます目の周りに2つ、3つのます目があれば、次の回でもオンになる

これってオンのマス目の周りにオフのマス目が2 or 3個有れば次もオンって事?
272デフォルトの名無しさん:2011/01/12(水) 14:14:23
マスの周りに2つON: ON/OFFそのまま
マスの周りに3つON: OFF→ON
上記以外: ON→OFF
273デフォルトの名無しさん:2011/01/12(水) 14:29:22
>>270
>>272 の解釈が正しいのか?書いたのは周りに 2 or 3 のオンが有るオンはオンなんだが、
違うなら、oneCycle() を弄んでくれ

ttp://codepad.org/KbnM8A7m

なお、30x30 の csv を用意するのが面倒だったので 10x10 でしか動作を確認していない
X_MAX, Y_MAX を 30 に変更し、30x30 の life.csv を用意して動作確認してくれ
274デフォルトの名無しさん:2011/01/12(水) 15:37:02
>>203(追記:>>204>>225)もお願いいたします!
275デフォルトの名無しさん:2011/01/12(水) 15:49:52
>>274
C++でWin32API直叩きGUIは面倒
あんま期待しないほうがいい
276デフォルトの名無しさん:2011/01/12(水) 16:07:47
277デフォルトの名無しさん:2011/01/12(水) 16:08:34
[1] 授業単元:プログラミング言語(C)
[2] 問題文(含コード&リンク):
Cプログラミングの基礎[新訂版]発行:サイエンス社 著:蓑原隆より
P48 3.1 3.2 3.3 3.4 P55 4.1 P88 5.1 P104 6.1 6.2
http://upload.jpn.ph/upload/img/u72273.jpg
http://upload.jpn.ph/upload/img/u72276.jpg
http://upload.jpn.ph/upload/img/u72274.jpg
http://upload.jpn.ph/upload/img/u72275.jpg
[3] 環境
 [3.1] OS:Windows
 [3.2] Visual Studio 2010 Pro
 [3.3] 言語: Cのみ
[4] 期限: [2011年01月21日08:00まで]
[5] その他の制限: 特に無し
278デフォルトの名無しさん:2011/01/12(水) 16:44:24
>>274
対人戦って事は通信対戦?初心者に出す宿題じゃねぇな

いろいろ面倒なので解いてくれる人は居ないと思うよ
.....500円でコード書いてくれる人はもう居ないのかな?
279デフォルトの名無しさん:2011/01/12(水) 16:56:17
>>278
さすがに PC1台で手番交代毎に操作プレイヤーを変える方式じゃない?

ネットワーク周辺の授業の課題で だったら 通信対戦も視野にいれなきゃいけないが…
280デフォルトの名無しさん:2011/01/12(水) 17:12:38
>>279 PC1台で手番交代毎に操作プレイヤーを変える方式です。
>>275 ご教授ありがとうございます。アルゴリズムだけでもいただけたらと思っております。
281デフォルトの名無しさん:2011/01/12(水) 17:31:39
[1] 授業単元:数値計算法
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc ver未確認
 [3.3] 言語: C++
[4] 期限: 2011年1月17日24:00

6元連立非線形方程式をNewton法を用いたC++のプログラムで解く問題です。
空白部分を埋める形式の課題です。
txtは資料と課題のそれぞれのソース部分です。

参考資料
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/20.txt
http://iup.2ch-library.com/i/i0222049-1294819355.jpg (例題)
http://iup.2ch-library.com/i/i0222051-1294819355.jpg (実行結果)

こちらが課題です
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/21.txt
http://iup.2ch-library.com/i/i0222050-1294819355.jpg (問題)

私の頭だとかなり厳しいです。
数値計算法という単元なので専門的な知識が必要かもしれませんが、
どなたか解決できそうな方、よろしくお願いします。
282デフォルトの名無しさん:2011/01/12(水) 17:39:20
>>239なのですがつっこみを頂いた部分を書き直しました
できれば今日中にどなたかお願いします。完全に完成しているものでなくてもおおまかなものでもいいので

[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
縦は不定(500〜1000行)、横が10列で大量に数値が書かれているcsvファイルをまず読み込みます。仮にsuuchi.csvとして
読み込む時は今後の処理を考えてなるべく配列
その後各列を縦に参照していき、正の値が出たときは別の同じ型の配列の同じ位置に代入していく
負の値が出たときに、そのセルの列の前5個、後ろ5個を参照し以下の処理を行う
前にも後ろにも正の値が検出された場合 → 参照しているセルに一番近い前と後ろの値の2つの平均値を取得し別の配列に格納する
前あるいは後ろの片方にしか正の値が検出されなかった場合 → 一番近い値をそのまま別の配列に格納する
前にも後ろにも正の値が無い場合 → そのままの負の値で別の配列に格納する

最初の5つ、最後の5つは参照できる範囲まで参照できればOKです

最後に値の変更を終えた別の配列をそのままresult.csvとして出力する
基本的にもともと正の値だった部分はそのまま出力し、負の値を正の値に書き換えたいという処理です.前後5つずつが負の場合は書き換えを行わないままです

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C++
[4] 期限:1月12日
[5] その他の制限: なし
283281:2011/01/12(水) 17:42:50
画像のアドレスがずれていました、申し訳ないです。
専ブラだと開けないかも...IE等で開いて頂けると助かります。

参考資料
http://iup.2ch-library.com/i/i0222049-1294819355.jpg 例題
http://iup.2ch-library.com/i/i0222050-1294819355.jpg 実行結果

課題
http://iup.2ch-library.com/i/i0222051-1294819355.jpg 問題
284デフォルトの名無しさん:2011/01/12(水) 18:03:30
>>277
まとめてドン
ttp://codepad.org/RYCmX8fF
285デフォルトの名無しさん:2011/01/12(水) 18:30:39
>>282
なんで2次元配列を縦に参照していかなければならないのだ^^
後続の処理内容を鑑みるに横方向に捜査しても一緒だろがどってんばってん
(処理内容を同じ配列に上書きするわけじゃないからな)
286デフォルトの名無しさん:2011/01/12(水) 18:37:49
>>285
縦に参照、ってのにこだわりすぎですかね?そのセルの同じ列の上5つ、下5つのセルに対して処理をお子なればいいのですが
よく考えたら横方向に捜査してもいけそうですね・・
横に捜査していくほうが処理が楽になるようでしたら全く問題ないです
287デフォルトの名無しさん:2011/01/12(水) 19:52:56
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1356601.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2011年1月13日 16:00まで

よろしくお願いします
288デフォルトの名無しさん:2011/01/12(水) 20:25:23
誰か>>238,265266至急お願い出来ますでしょうか
289デフォルトの名無しさん:2011/01/12(水) 20:30:59
>>284
早いですね
あなたのおかげで1年早く卒業できそうです
ありがとうございました
290デフォルトの名無しさん:2011/01/12(水) 22:08:29
>>238
やってみる
超初心者ですがw
ちょっと自分の練習のためにも。
291290:2011/01/12(水) 22:46:10
292290:2011/01/12(水) 22:47:44
あ〜 ごめんなさい
calc関数作るのね。
もう一度やる
293290:2011/01/12(水) 22:57:29
294デフォルトの名無しさん:2011/01/12(水) 23:12:08
2問あったんですね。
>>238 2つ目
http://ideone.com/zvaZM
295デフォルトの名無しさん:2011/01/12(水) 23:16:00
>>290すいません。ありがとうございます助かりました。

無理いって悪いですが、>>265と>266の問題もお願いできるでしょうか。
296290:2011/01/12(水) 23:24:44
297290:2011/01/12(水) 23:49:39
298デフォルトの名無しさん:2011/01/12(水) 23:55:30
ありがとうございます。とても助かりました!
299デフォルトの名無しさん:2011/01/12(水) 23:56:50
>>296,297
横やりだけど入力は1回で
配列使用時と未使用時の2つを出すんじゃない?
300デフォルトの名無しさん:2011/01/12(水) 23:57:51
と思ったら>>298から問題ないっぽいね
301デフォルトの名無しさん:2011/01/12(水) 23:58:23
>>298
問題あったら言ってくださいね。
302デフォルトの名無しさん:2011/01/12(水) 23:59:11
>>299
そういうことなんですかね。 あれま。
303デフォルトの名無しさん:2011/01/13(木) 00:01:08
>>203
途中
もうちょっと待ってくれれば作るよ
http://ideone.com/JKxHN
304デフォルトの名無しさん:2011/01/13(木) 00:23:14
>>303 深夜までありがとうございます!!お待ちしています!!
305デフォルトの名無しさん:2011/01/13(木) 00:30:52
 これだけ解けないのよろしくお願いいたします。
 [1] プログラミング基礎
 [2] あるクラスの試験の点数を整数で繰り返し入力し、点数の合計と平均点を出力するプログラムを作成しなさい。
 点数は、0点以上100点以下とし、この範囲外の点(0点未満または100点より大きい点)が入力されたときは、
 入力を終了し、点数の合計と平均点を出力する(最後に入力された範囲外の点は集計の対象としない)。
 また、平均は小数点以下2桁まで出力する。
 繰り返しの命令は、何を使ってもよい。
 ※点数部分の数字は入力例ですので表示の必要はありません

 実行例
 点数:10
 点数:100
 点数:20
 点数:35
 点数:120

 合計:165点
 平均: 41.25点

 [3] 環境
 [3.1] OS: (WindowsXP)
 [3.2] gcc
 [3.3] 言語: (Cの方で
 [4] 期限: ([2010年1月13日13:00まで]
 [5] その他の制限: 配列やfscanfでは使ってはいけないがscanfはOKです。
306デフォルトの名無しさん:2011/01/13(木) 00:42:50
>>203
でけた

http://ideone.com/kFHTr
1.クリックして動かしたい駒を選択
2.移動できる場所がグレイ表示されるのでどれかをクリック

勝敗が決まったらWindowは閉じる
307デフォルトの名無しさん:2011/01/13(木) 00:47:25
>>306 大変な作業量の問題を解決していただき本当にありがとうございました。
とても助かりました!!ソースを見て1から勉強しようと思います!
308デフォルトの名無しさん:2011/01/13(木) 01:00:57
309デフォルトの名無しさん:2011/01/13(木) 01:14:04
>>308
こんな夜遅くにありがとうございました
310デフォルトの名無しさん:2011/01/13(木) 01:15:53
どなたか>>282を・・・
311デフォルトの名無しさん:2011/01/13(木) 01:18:10
>>310
問題文が意味不明すぎてみんなスルーしてる予感
312デフォルトの名無しさん:2011/01/13(木) 01:30:28
やっぱそうですかね・・指摘に対しても的外れな答えしてるなと自分でも思ってるんですが
全体的に文章が滅茶苦茶なんですかね?それとも負の値の前後5つが〜ってところが意味不明なのでしょうか?
313282:2011/01/13(木) 02:00:46
かなりしつこくて申し訳ないのですが問題文を書き直してみました
ごちゃごちゃしてて読むのが苦痛かもしれないんですが、もしよければどなたかお願いします

[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)

縦は不定(500〜1000行)、横が10列で大量に数値が書かれているcsvファイルをまず読み込みます。仮にsuuchi.csvとして
読み込んだ値を配列suuchi[][10]のようなところに格納する
処理をした後の結果を書き込むresult[][]も同じサイズで用意する

その後suuchi[][]内のセルを順番に参照していき、正の値が出たときはresult[][]の同じ位置にその正の値をそのまま格納する
負の値が出たときに、そのセルの列の前5個、後ろ5個を参照
(例えばsuuchi[120][3]が負のとき、suuchi[115][3]〜suuchi[125][3]までを参照)し以下の処理を行う

前にも後ろにも正の値が検出された場合 → 参照しているセルに一番近い前と後ろの値の2つの平均値を取得しresulut[][]に格納する
(suuchi[118][3]が30でsuuchi[122][3]が40の場合、負の値であったsuuchi[120][3]を35に変更してresulut[120][3]のほうに代入
このときsuuchi[117][3]が正の値であったとしてもsuuchi[120][3]に位置が近いsuuchi[118][3]を対象とする)

前あるいは後ろの片方にしか正の値が検出されなかった場合 → 一番近い値をそのまま別の配列に格納する
(suuchi[118][3]が30でsuuchi[121][3]以降が全部負の値であった場合、suuchi[118][3]の30という値をそのままresulut[120][3]のほうに代入する
後ろにしか正の値がなかった場合も同様にそのままの値を代入する)

前にも後ろにも正の値が無い場合 → そのままの負の値で別の配列に格納する
(suuchi[120][3]が負で、suuchi[115][3]〜suuchi[125][3]を見ても全部負のときはsuuchi[120][3]の負の値をそのままresulut[120][3]に代入する)

最初の5行と最後の5行は参照できる範囲まで参照できればOKです
最後にresult[][]に入っているデータをresult.csvとして出力する

[3] 環境
 [3.1] OS: Windows  [3.2] コンパイラ名とバージョン:  [3.3] 言語: C++
[4] 期限:できれば1月13日までに
[5] その他の制限: なし
314 ◆/91kCCQXBo :2011/01/13(木) 02:17:49
>>313 遅いので、もう寝る。
if((a[i-5] > 0 || a[i-4] > 0 || a[i-3] > 0 || a[i-2] > 0 || a[i-1] > 0) &&
  (a[i+5] > 0 || a[i+4] > 0 || a[i+3] > 0 || a[i+2] > 0 || a[i+1] > 0) )
  /*前にも後ろにも正の値が有る*/
else
if(!(a[i-5] > 0 || a[i-4] > 0 || a[i-3] > 0 || a[i-2] > 0 || a[i-1] > 0) &&
  !(a[i+5] > 0 || a[i+4] > 0 || a[i+3] > 0 || a[i+2] > 0 || a[i+1] > 0) )
  /*前にも後ろにも正の値が無い*/
else
  /*前あるいは後ろの片方にしか正の値が無い*/
315デフォルトの名無しさん:2011/01/13(木) 02:25:51
>>313
http://codepad.org/tOfPMQEq

ねむーいので、以下の制限あり。
CSVファイルは空白を区切り文字とする
0の扱いが書いていないので0の時は無視する
「一番近い」を「一番距離が近い」と解釈

これ、宿題じゃないだろ?^^
316282:2011/01/13(木) 02:29:06
>>314>>315
わざわざ考えてくれてありがとうございます、助かります

宿題というか・・課題?というか。自分の考えでどうにかしろみたいな感じのものなんで問題文滅茶苦茶で申し訳ないです
317315:2011/01/13(木) 02:39:29
あ、ごめん、ちょっと訂正。
せっかく双方向リスト使ってるのに、不要になった要素をpopする処理を忘れていたよ^^
これでsuuchi.csvが10兆億万行あっても、OSが許す限り読めるよ^^

http://codepad.org/OMIRgn45

おやしみ^^
318282:2011/01/13(木) 02:53:45
何度もありがとうございます!
空白を区切り文字というのは数値の間にそれぞれ空白が必要ということでしょうか?
ぎっしり詰まっているファイルは間を空けないと処理されないですか?
なんパターンか試してみたのですが一番最初の数値を処理して止まってしまいます
もし起きたときにこの質問を見ていたらでいいので教えてほしいです
319デフォルトの名無しさん:2011/01/13(木) 03:04:02

for( i=0; i<=10; i++)
というfor文でiを1msごとに1プラスされるようにしたいのですが、どうすればよいですか?
320デフォルトの名無しさん:2011/01/13(木) 03:09:24
無理
321282:2011/01/13(木) 03:57:16
>>318の質問なんですが空白区切りという言葉を勘違いしてました
というかcsvファイルについての知識が無さすぎました。すいません
カンマ区切りにできないかなと思っていろいろプログラムいじってみたのですが相当難しいですか?
322デフォルトの名無しさん:2011/01/13(木) 04:45:26
>>317じゃないけど対象のcsvファイルをどこかにアップしてよ
そのほうが手っ取り早い
323デフォルトの名無しさん:2011/01/13(木) 07:31:08
>>319
いろんな方法がある
環境(OSとか)や期待される精度で違ってくるので
一言で説明出来ない
質問自体が情報不足

っつーかマルチすんな
324287:2011/01/13(木) 09:16:07
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
  問題1
f(0)=f(1)=1. f(n)=f(n-2)+f(n-1) (n≧2)で定まる数列(Fibonacci数列)のf(n)の値と
f(n)までの合計を計算して、表示せよ f(20)まで

問題2
配列の各要素(20個)に、3桁の乱数を代入し、この配列データの大きい順に並べ替えよ
このとき、ソートの円形として、第2配列を用意してこれに移し変える処理を考えよ
(第1配列上で大きいデータを順に取り出し、第2配列に移し替える。第1配列データはそのまま残しておく)

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2011年1月13日 16:00

どなたか>>287お願いできないでしょうか
アップロードしたファイルが消えると思ったのでまた書き込みました
よろしくお願いします
しつこくてすみません
325デフォルトの名無しさん:2011/01/13(木) 09:38:12
問題1
#include <stdio.h>

int f(int n)
{
return n < 2 ? 1 : f(n - 1) + f(n - 2);
}

int main(void)
{
int i, fn, sum;

for(i = sum = 0; i <= 20; i++) {
sum += (fn = f(i));
printf("f(%d) = %d sum = %d\n", i, fn, sum);
}

return 0;
}
326デフォルトの名無しさん:2011/01/13(木) 10:25:47
327デフォルトの名無しさん:2011/01/13(木) 11:08:45
>>325-326
お礼書くの遅くなってすいません
ありがとうございます
本当に助かりました
328282:2011/01/13(木) 11:18:04
>>322
ありがとうございます
ttp://www1.axfc.net/uploader/File/so/56965
パス suuchi
でアップロードさせてもらいました

このcsvは極端にマイナスの値の列とそうでない列が偏ってしまってるんですが
ばらばらに点在することもあります
329デフォルトの名無しさん:2011/01/13(木) 12:08:10
【質問テンプレ】
[1] 授業単元: Cプログラミン
[2] 問題文(含コード&リンク):
    四則演算をコマンドラインから入力して答えを出せ。
    例)keisan.exe 4 x 7 + 2 - 20 / 2
答え:20
[3] 環境
 [3.1] OS: WindowsXP SP2
 [3.2] コンパイラ名とバージョン:mingw
 [3.3] 言語: C
[4] 期限:2011年1月末
[5] その他:

http://codepad.org/Mb4okOyv
こんな感じで作りました。
「やさしいC」という本は一通り学びました。
計算はできるのですが評価、手直し、アドバイスをお願いします。
330 ◆/91kCCQXBo :2011/01/13(木) 12:32:57
>>329
方法1)コンマをスペースに置き換えればいい。

方法2)各行の最後にコンマをもう一つ追加する。
in>>e>>comma と、os<<result<<",";
の所を修正する。read()にchar comma;を追加する。
331282:2011/01/13(木) 13:38:29
>>330
アドバイスありがとうございます
ご指摘の通りプログラムを修正したところ1行目までは処理できて
2行目以降の処理に入ることなく処理がとまってしまうのですが
列を切り替える際のカンマの処理ってのも必要なんでしょうか?
332 ◆/91kCCQXBo :2011/01/13(木) 14:32:35
CSVの各行の最後にコンマを1つ追加する。
333デフォルトの名無しさん:2011/01/13(木) 15:09:27
>>332
CSV形式は普通行末にカンマはないだろ
334 ◆/91kCCQXBo :2011/01/13(木) 15:24:20
>>332
#include <stdio.h>
int main()
{
  FILE *fp, *tp;
  char buf[1024];

  fp = fopen("suuchi.csv","r");
  tp = fopen("temp.csv","w");
  while(fgets(buf, sizeof(buf), fp)){
    buf[strlen(buf)-1] = '\0';
    fprintf(tp, "%s,\n", buf);
  }
  fclose(fp);
  fclose(tp);
  rename("temp.csv", "suuchi.csv");
}
335デフォルトの名無しさん:2011/01/13(木) 16:32:39
>>334
だからそれはやめろっつーんだろカス
336デフォルトの名無しさん:2011/01/13(木) 16:59:11
>>331
http://codepad.org/yOJELepN

眠いときに作るとひどいプログラムになっちゃうね・_・
337282:2011/01/13(木) 17:42:31
>>336
助かります。こちらの書いた変な条件分岐を見事に再現してくださってありがとうございます
338デフォルトの名無しさん:2011/01/13(木) 18:10:58
fscanf使ったらいかんの?
339 ◆/91kCCQXBo :2011/01/13(木) 19:56:02
int count=5, result, i, k, fw, bw;
int a[LINEMAX+5+5][COLSPAN] = {0}, b[LINEMAX+5+5][COLSPAN] = {0};
while(fgets(buf, sizeof(buf), ff) && count <= LINEMAX+5){
sscanf(buf, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
&a[count][0], &a[count][1], &a[count][2], &a[count][3], &a[count][4],
&a[count][5], &a[count][6], &a[count][7], &a[count][8], &a[count][9] );
count++;
}
for(i=5; i<count; i++){
for(k=0; k<COLSPAN; k++){
result = a[i][k];
if(result < 0){
fw = adept(a[i-1][k], a[i-2][k], a[i-3][k], a[i-4][k], a[i-5][k]);
bw = adept(a[i+1][k], a[i+2][k], a[i+3][k], a[i+4][k], a[i+5][k]);
if( fw != 0 && bw != 0) /*前にも後にも正の値が有る*/
result = (fw + bw)/2;
else if( fw != 0) /*前にしか正の値が無い*/
result = fw;
else if( bw != 0) /*後にしか正の値が無い*/
result = bw;
else ; /*前にも後にも正の値が無い*/
}
b[i][k] = result;
}
fprintf(of, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
b[i][0], b[i][1], b[i][2], b[i][3], b[i][4],
b[i][5], b[i][6], b[i][7], b[i][8], b[i][9] );
}}
int adept(int d1, int d2, int d3, int d4, int d5){
if(d1 > 0) return d1; if(d2 > 0) return d2; if(d3 > 0) return d3; if(d4 > 0) return d4; if(d5 > 0) return d5; return 0;}
340デフォルトの名無しさん:2011/01/13(木) 20:21:24
>>109-110
早稲田大学基幹理工学部情報理工学科3年
オペレーティングシステム(後半)の課題だな
やっぱりね、そろそろ来ると思ってたよww
341デフォルトの名無しさん:2011/01/13(木) 22:28:38
【質問テンプレ】
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):指定したテキストファイルの中にあるデータを読み込み、-1と右端の1を取り除き(横に4つの列、縦に約50の行の数字が並んでいる)、指定した場所にファイルを保存するプログラムを作成する。
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限: できるだけ早くお願いします。
[5] その他の制限:
342デフォルトの名無しさん:2011/01/13(木) 22:52:24
「-1と右端の1」の意味がよくわからないよん。。。

-2とか-3は取り除かなくていい。 全ての行において4列目には1が入っているということ?
343デフォルトの名無しさん:2011/01/13(木) 23:06:59
(全ての-1) or (右端 and 1) を削除?
344デフォルトの名無しさん:2011/01/13(木) 23:20:13
テキストファイルの形式や実行結果がないとさっぱりわからん
345デフォルトの名無しさん:2011/01/13(木) 23:23:46
341です。
わかりづらくてすいません。
例で書くと

123 345 567 1
234 456 678 1
987 564 356 1
-1 -1 -1 -1

って感じで数字が羅列してあります。
必ず右端に1があるんですが例外で-1だけの行が数か所あります。
その-1と右端にある1を取り除くものをお願いします。
346デフォルトの名無しさん:2011/01/13(木) 23:26:17
               /|:::::::::::::::::::::ヽ.:.:.:.:、:.:.:.:、:.:.:.、.:.、.:.:.:.:.:.::`゛>
           /{::|:\:::::::\.:.:.:\.:.:.ヽ::.::.ヽ:.:.ヽ::::::::::.:.`゛ー- ..,__
: 何 :    /:|::',: ト、::::::ヽ、:.\:.:.:.\:.:.ヽ:.:.:\.:.:.:.:.:::.:.:.:.:::.::::_;:-'´   : : :
: が :   //: /:::|::',|::'、:::::::::\:.:\.:.:.ヽ:.:.:\:.:..\::::::::::::\、::::\    : : :
: 何 :  /!::|::l:::: /|:::l:ヽ:\::ヽ:.:\:.:\.:::ヽ:.:.:ヽ:.:.:.:\::::::::::::\ ̄   : : :
: だ :   |/l::|::|::|: ト、:::::::::、、:ヽ、:.:.:.:::::::::::::::ヽ::::.:ヽ:.:.:.:.\:.:.:.ヽ:::\.   : : :
: か :   |::|::/l::|::|r‐ヽ:::::ヽ(ヽー,―\::::::、::::::::::ヽ::.:.::::::.:::::::ヾ. ̄   : : :
:    :   }//l::|:::|{(:::)ヾ、:::ヽ \!(:::) ヽ,:::ヽ:::::::::::::::::::::::::::::::::::ヾ、   : : :
: わ :.   |/l::|::|:::|ヽ==''" \:ヽ、ヽ=='" |:::::::::::::::::::::::::::::::::::ヽ、::::\
  か     / ',|::|:::|   /   `゛       |!::::::::::::::::::::::::::::ト、::ト、_` ゛`
  ら      l::!::::ト、  '、 _         ||::::::::::::::::::::::::ト:ヽヾ| | ̄ ̄ ̄`ヽ、
  な     r'"´||',::::',                 |:::::/l:::::|\:::ト、ヾ | |     / / \
  い   /   ll ',::', 、 ーこニ=-       /!::/ ヽ:::|  ヾ、  ノ ノ  /  ,イ   ヽ、
       ,'    |  '、:, \ --       ,. '´ |;'  l ヾ、.   //     / |    l: l
      |   |!  ヽ;  ヽ       /.:    i!  /   ゛// |l      / |      | |
347デフォルトの名無しさん:2011/01/13(木) 23:28:20
>>345
「1」は右端だと分かるための情報って感じか?
じゃあ「-1」は下端かというと、「数カ所」ってことはそうでもない?
よく分からない
348デフォルトの名無しさん:2011/01/13(木) 23:32:54
何かの測定結果でエラーの時は-1になるとかかな?
349デフォルトの名無しさん:2011/01/13(木) 23:33:12
123 345 567 1
234 456 678 1
987 564 356 1
-1 -1 -1 -1
543 985 951 1
234 852 753 1
852 123 356 1
-1 -1 -1 -1

ってかんじになってるんだろうね。
それを

123 345 567
234 456 678
987 564 356
543 985 951
234 852 753
852 123 356

にすればいいんだな?
350デフォルトの名無しさん:2011/01/13(木) 23:37:24
>>349
そうです!そのようにお願いします。
わかりづらくて申し訳ないです。
351デフォルトの名無しさん:2011/01/14(金) 01:44:14
>>341
http://ideone.com/PCsf9
途中

眠くて以下の部分できてない
1.データの読み込み
2.読み込んだデータのチェックと書き込み
    A) 4列が”1”なら書き込まない
    B) -1が4個並んでいる行は書き込まない

申し訳ないが寝る。誰かあと任せた。
もし完成してないようなら明晩俺がやる。
352デフォルトの名無しさん :2011/01/14(金) 05:28:50
353デフォルトの名無しさん:2011/01/14(金) 06:21:58
>>341 これじゃダメ?
#include <stdio.h>
int main( int ac, char** av )
{
    char buf[128];
    FILE* fpin;
    FILE* fpout;
    int a[3];

    if( ac < 3 ) {
        printf( "[Usage] hoge infile outfile\n" );
        return 0;
    }
    fpin = fopen( av[1], "rt" );
    fpout = fopen( av[2], "wt" );
    if( ! fpin || ! fpout ) {
        printf( "File open error!\n" );
        return 0;
    }
    while( fgets( buf, 128, fpin ) ) {
        sscanf( buf, "%d %d %d", a + 0, a + 1, a + 2 );
        if( a[0] != -1 )
            fprintf( fpout, "%d %d %d\n", a[0], a[1], a[2] );
    }
    fclose( fpin );
    fclose( fpout );
    return 0;
}
354デフォルトの名無しさん:2011/01/14(金) 08:09:45
>>353
コピペできない orz
355デフォルトの名無しさん:2011/01/14(金) 09:14:31
>>353
推薦合格
356デフォルトの名無しさん:2011/01/14(金) 09:19:06
データファイルの読み書きは標準入出力でいいし、4つ目のデータが1でないいじわるデータの時も読んでしまうだろこれ
357デフォルトの名無しさん:2011/01/14(金) 09:35:01
-1 -1 -1 -1
は空白行にしないのか?
358デフォルトの名無しさん:2011/01/14(金) 09:54:54
[1] 授業単元:プログラミングC++入門
[2] 問題文:問1・以下のクラスを作り、オブジェクトを生成して、全てのメンバ関数を実行せよ。ただし、体力は整数形の変則とする。
クラス名ねずみ メンバ変数 名前 種族 体力 メンバ関数 コンストラクタ 自己紹介 体力を上げる 体力を下げる 体力の値を返す
問2・問1で作ったクラスから、以下のような派生クラスを作り、そのオブジェクトを生成して、派生クラスが持つ全てのメンバ関数を実行せよ。
ただし、職業はコンストラクタにより、ディズニーキャラクターとせよ。また、自己紹介は名前の他に職業も紹介させよ。
それから、踊ったら体力が回復するようにせよ。体力の増減量は決めていい。
問3・上記の派生クラスおよび期底クラスにおいて、体力の上限を設け、その上限に達した場合、IF文を使ってそれ以上値が増加しないようにせよ。
また同様に、体力が負の値にならないようにせよ。そして体力がゼロならば踊れないようにせよ。
問4・問3で改良したオブジェクトに対して、WHILE文やFOR文を使って、体力がゼロになって踊れなくなるまで繰り返し躍らせよ。
問5・今までの問で作ってきたクラスのオブジェクトを、配列を使って2つ生成せよ。そして、それぞれに異なる名前を与え、全てのメンバ関数を実行せよ。
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] コンパイラ名とバージョン:Visual Studio
 [3.3] 言語: C++
[4] 期限: 2011年1月17日まで
期限ギリギリで申し訳ないです><
359デフォルトの名無しさん:2011/01/14(金) 10:11:17
>>109-110
すみません、どなたかお願いいたします!!!
360 ◆/91kCCQXBo :2011/01/14(金) 11:13:40
#include <iostream>
#include <string>
using namespace std;
const int 体力上限 = 50;
class ねずみ {
  string 名前;
  string 種族;
  int 体力;
  ねずみ(string name) : 体力(10) { 名前 = name; };
  void 自己紹介(){ cout << "名前:" << 名前 << endl; };
  void 体力を上げる(){ 体力++; if(体力 > 体力上限) 体力 = 体力上限; };
  void 体力を下げる(){ 体力--; if(体力 < 0) 体力 = 0; };
  int 体力の値を返す(){ return 体力; };
}
class 働きねずみ : public ねずみ {
  string 職業;
  働きねずみ() { 職業 = "ディズニーキャラクター"; };
  void 自己紹介(){
    cout << "名前:" << 名前 << endl;
    cout << "職業:" << 職業 << endl; };
  void 踊る(){ if(体力 >= 5) { cout << "踊りました" << endl; 体力 -= 5; }
    else { cout << "最後まで踊れません。体力がありません" << endl; 体力 = 0; } };
}
int main(){
働きねずみ a("ちゅー^2");
  a.自己紹介();
  a.体力を上げる();
  cout << "現在の体力" << a.体力の値を返す() << endl;
  a.体力を下げる();
  while(体力の値を返す() > 0) a.踊る();
働きねずみ b[2] = {"ミッキー", "ミニー"};
}
361 ◆/91kCCQXBo :2011/01/14(金) 13:01:11
362デフォルトの名無しさん:2011/01/14(金) 14:04:45
341です。
助かりました。みなさん本当にありがとうございました。
また何かありましたらよろしくお願いします。
363デフォルトの名無しさん:2011/01/14(金) 14:12:40
◆/91kCCQXBo

また新しいタイプのキチガイが現れたな
364 ◆/91kCCQXBo :2011/01/14(金) 14:13:57
はい?
365デフォルトの名無しさん:2011/01/14(金) 14:30:43
トリつけたりすると無駄に煽られるだけだからやめたほうがいい
366デフォルトの名無しさん:2011/01/14(金) 15:01:36
>>365
依頼者以外のトリは僕、キチガイって自己紹介してるんだから絶対推奨ですよ
367デフォルトの名無しさん:2011/01/14(金) 16:10:37
>>365
無駄じゃない
基地外は駆逐しなければならないから当然の防衛行動である
368デフォルトの名無しさん:2011/01/14(金) 16:31:33
前からトリついてたろw
369デフォルトの名無しさん:2011/01/14(金) 16:51:18
>>360
コンパイルできませんでした><
370基地外 ◆fU4XpFjo86 :2011/01/14(金) 17:01:24
トリ憑けてみた。
>>369 キチガイのだからそんなもん
371デフォルトの名無しさん:2011/01/14(金) 17:02:45
そういや有料宿題スレ消えてるな
372デフォルトの名無しさん:2011/01/14(金) 17:17:29
>>361の方は一応動くな。
373デフォルトの名無しさん:2011/01/14(金) 18:38:01
>>356
それは読んではいけない行なのか?
>>357
するのか?
374デフォルトの名無しさん:2011/01/14(金) 18:40:44
>>371
http://qb5.2ch.net/test/read.cgi/saku/1098189517/320

GL3:固定ハンドル(2ch内)に関して
http://hibari.2ch.net/test/read.cgi/tech/1289715349/ >>315 (>>316>>317意見等)

どうやらコテハン占有スレと認めてもらえたみたい

>>372
動かないだろカス
375デフォルトの名無しさん:2011/01/14(金) 18:43:06
>>372
日本語をクラス名等に使えるコンパイラをお持ちなんですね
できれば何と言うコンパイラか教えて欲しいです
376デフォルトの名無しさん:2011/01/14(金) 18:48:31
>>358
踊ったら体力が回復するのに踊れなくなるまで踊らせるとはこれ如何に?
377デフォルトの名無しさん:2011/01/14(金) 18:49:16
VCは使えるんじゃなかったっけ
378デフォルトの名無しさん:2011/01/14(金) 18:54:24
>>373
右端に1がある行が出力するデータという仕様。
そうじゃないデータは仕様に書いてないから出力してはいけない。
左から三列出力でいいなら、右端の1を取り除くとは書かないだろ。
379デフォルトの名無しさん:2011/01/14(金) 22:07:45
361のコード、vc8で動くぞ?
380デフォルトの名無しさん:2011/01/14(金) 22:18:29
ユニコードなら問題ない
381デフォルトの名無しさん:2011/01/14(金) 22:19:26
「問題ない」はキモイからやめろ
382デフォルトの名無しさん:2011/01/14(金) 22:41:21
宿題はないか?
383デフォルトの名無しさん:2011/01/14(金) 22:42:35
>>360
virtual付けないの?
384期待のほし:2011/01/14(金) 22:44:32
rand関数について質問させてください。
アルファベット大文字 26字、アルファベット小文字 26字、数字 9字 の合計62文字からランダムに一文字取り出す式を教えて下さい。
今日 rand関数を習ったばかりで よくわかりません。{(>_<)}
基本的な使い方は大丈夫です。

385デフォルトの名無しさん:2011/01/14(金) 22:45:43
>>382回答でてないの全部解いていくと良い
セールスマン問題とか早稲田とか
386デフォルトの名無しさん:2011/01/14(金) 22:48:56
>>384
char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

printf("%c", moji[(int)(rand() / (RAND_MAX + 1.0) * 62)]);
387期待のほし:2011/01/14(金) 22:51:10
ありがとーございます。
さすがですね;
388デフォルトの名無しさん:2011/01/14(金) 22:52:01
389デフォルトの名無しさん:2011/01/14(金) 22:57:34
'A'=65 〜 'Z'=60
'a'=97 〜 'z'=122
'0'=48 〜 '9'=57
計61文字だから rand % 61 でやるってどうよ?
390389:2011/01/14(金) 22:58:32
って みんなはえーな。
391デフォルトの名無しさん:2011/01/14(金) 23:03:33
>>388
>printf("%c\n", tbl[rand() % sizeof(tbl)]);

>>389
>計61文字だから rand % 61 でやるってどうよ?
392デフォルトの名無しさん:2011/01/14(金) 23:04:42
>>388
範囲外アクセスするだろバカ
393デフォルトの名無しさん:2011/01/14(金) 23:05:31
早稲田の課題は要約すると「簡単なシェルを自作しろ」だからね
はっきり言って1日やそこらでどうにかなるようなもんじゃない
俺はもう終わったから、>>359が詰んでるのを見るとメシがウマイわ
394デフォルトの名無しさん:2011/01/14(金) 23:08:04
こうしてカルドセプトサーガの悪夢は繰り返されるのであった
395デフォルトの名無しさん:2011/01/14(金) 23:08:10
>>392
ではちょっと範囲外参照してみて下さい。
396デフォルトの名無しさん:2011/01/14(金) 23:10:36
あれ? >>359終わったんじゃないの?
397デフォルトの名無しさん:2011/01/14(金) 23:11:49
398デフォルトの名無しさん:2011/01/14(金) 23:13:37
範囲外ではないけど、末尾に'\0'がつくことを見逃しているよね
399デフォルトの名無しさん:2011/01/14(金) 23:14:03
まあ62文字の範囲外といえなくもないか
400デフォルトの名無しさん:2011/01/14(金) 23:16:04
「範囲外アクセス」と言ったら一般的には配列の範囲外だろ
無理に言い訳しなくていいよ
401デフォルトの名無しさん:2011/01/14(金) 23:17:25
>>109-110
半端ねーな。俺無理。
402デフォルトの名無しさん:2011/01/14(金) 23:18:20
期待している文字を返してないから、範囲外で問題ない
403デフォルトの名無しさん:2011/01/14(金) 23:19:37
突っ込み方がおかしいとしても>>388がバカなのは変わらないだろw
404デフォルトの名無しさん:2011/01/14(金) 23:29:46
煽りしかできない男の人って…
405デフォルトの名無しさん:2011/01/14(金) 23:30:44
>>388==>>404
恥ずかしいのは分かる
406デフォルトの名無しさん:2011/01/14(金) 23:33:44
口は悪いけど、間違いを指摘してくれるんだから
感謝した方がいいよ
407デフォルトの名無しさん:2011/01/14(金) 23:36:46
ゆとりって間違い指摘するとその指摘の仕方に文句つけて自分の間違いをごまかそうとするよなw
408デフォルトの名無しさん:2011/01/14(金) 23:38:24
>>407
そういうのはありがちだから、あまり言わない方がいいよw
409デフォルトの名無しさん:2011/01/14(金) 23:40:48
>>358
すみません、問題文を間違っていました。貼りなおします><
[1] 授業単元:プログラミングC++入門
[2] 問題文:問1・以下のクラスを作り、オブジェクトを生成して、全てのメンバ関数を実行せよ。ただし、体力は整数形の変数とする。
クラス名ねずみ メンバ変数 名前 種族 体力 メンバ関数 コンストラクタ 自己紹介 体力を上げる 体力を下げる 体力の値を返す
問2・問1で作ったクラスから、以下のような派生クラスを作り、そのオブジェクトを生成して、派生クラスが持つ全てのメンバ関数を実行せよ。
ただし、職業はコンストラクタにより、ディズニーキャラクターとせよ。また、自己紹介は名前の他に職業も紹介させよ。
それから、踊ったら体力がするようにせよ減るように。食事をしたら体力が回復するようにせよ。体力の増減量は任意で決めていい。
クラス名 ミッキー メンバ変数 職業 メンバ関数 コンストラクタ 自己紹介 踊る 食事
問3・上記の派生クラスおよび期底クラスにおいて、体力の上限を設け、その上限に達した場合、IF文を使ってそれ以上値が増加しないようにせよ。
また同様に、体力が負の値にならないようにせよ。そして体力がゼロならば踊れないようにせよ。
問4・問3で改良したオブジェクトに対して、WHILE文やFOR文を使って、体力がゼロになって踊れなくなるまで繰り返し躍らせよ。
問5・今までの問で作ってきたクラスのオブジェクトを、配列を使って2つ生成せよ。そして、それぞれに異なる名前を与え、全てのメンバ関数を実行せよ。
[3] 環境
 [3.1] OS: WindowsVista
 [3.2] コンパイラ名とバージョン:Visual Studio
 [3.3] 言語: C++
[4] 期限: 2011年1月17日まで
410デフォルトの名無しさん:2011/01/14(金) 23:43:07
なんで踊るの?
411デフォルトの名無しさん:2011/01/14(金) 23:52:30
>それから、踊ったら体力がするようにせよ減るように。
ちょっとなに言ってるのかわからない
412デフォルトの名無しさん:2011/01/14(金) 23:57:29
>>411
タイプミスです^^; 「踊ったら体力が減るようにせよ。」です><
413デフォルトの名無しさん:2011/01/15(土) 00:03:22
>>409
体力以外の型は?
どうやれば踊ったという事になるの?

どこで出された課題か知らないけどひどい問題だよ
詐欺られてるんじゃないの?
414デフォルトの名無しさん:2011/01/15(土) 00:03:47
>>409
お食事のタイミングについては何も無いの?
415デフォルトの名無しさん:2011/01/15(土) 00:04:20
ミッキーっていいのか?
416デフォルトの名無しさん:2011/01/15(土) 00:09:02
IF文
WHILE文
FOR文
WindowsVista

こういうの自分で書いてて気持ち悪くないのかな
417デフォルトの名無しさん:2011/01/15(土) 00:10:31
>>409
http://codepad.org/2n8cHnXB

こんなもんでどうでしょう
食事の頻度は適当にいじって
418デフォルトの名無しさん:2011/01/15(土) 00:11:31
>>416
確かにお前の顔は気持ち悪いな
419デフォルトの名無しさん:2011/01/15(土) 00:13:09
>>418
おいおい目の前のディスプレイに移ってるのはお前の顔だぞ?
420デフォルトの名無しさん:2011/01/15(土) 00:14:53
>>419
しっかりしろ、それはお前の顔だ
421デフォルトの名無しさん:2011/01/15(土) 00:16:29
418の顔を擦り付け合うのはやめてやれ
422デフォルトの名無しさん:2011/01/15(土) 00:19:49
>>414
餌は1日三回、6-7時、12-13時、19-20時に与えます
それらの時間になったら与えてください
423デフォルトの名無しさん:2011/01/15(土) 00:29:15
416の顔を擦り付け合うのはやめてやれ
424デフォルトの名無しさん:2011/01/15(土) 00:32:42
>>423
前項の「言葉の理解の遅れ」でも少し触れましたが、
自閉症児の多くは「オウム返し」をします。
言葉のとおり、オウムのように言ったことをそのまま反復するのです。
425デフォルトの名無しさん:2011/01/15(土) 00:35:30
424「どや?」
426デフォルトの名無しさん:2011/01/15(土) 00:37:21
>>424
スレ違い
427359:2011/01/15(土) 00:43:38
丁寧に頼んでもできねーのか。
お前らホントに使えねーなwwwwwwwwwww
悔しかったら>>109-110を解いてみろよ!!!!!!!11
428デフォルトの名無しさん:2011/01/15(土) 00:47:01
とうとう手段を選ばなくなったか。
429デフォルトの名無しさん:2011/01/15(土) 00:47:45
http://ideone.com/qW5Xt
まぁ落ちつけよ
430デフォルトの名無しさん:2011/01/15(土) 00:55:11
>>429
アウト
431デフォルトの名無しさん:2011/01/15(土) 01:15:36
ミッ○ー
432デフォルトの名無しさん:2011/01/15(土) 01:25:23
>>427
その程度の問題自分で解いてみろよ。
433359:2011/01/15(土) 01:27:23
>>432
お願いします。
434デフォルトの名無しさん:2011/01/15(土) 01:31:45
>>433
cygwin入れてないにょ。
435359:2011/01/15(土) 01:34:27
>>434
簡単なので入れてください。締切りが月曜なので、ちょっと急いで欲しいです。
436359:2011/01/15(土) 01:38:15
っていうか、その程度とか言えるならコード出せよw
437デフォルトの名無しさん:2011/01/15(土) 01:52:10
これが早稲田脳か。
438デフォルトの名無しさん:2011/01/15(土) 01:55:38
ぼっちはつらいな
439デフォルトの名無しさん:2011/01/15(土) 02:02:57
小島よしおも早稲田だぞ。
440デフォルトの名無しさん:2011/01/15(土) 02:06:26
シェルならbashとかのソース見ればいいんじゃないの
441デフォルトの名無しさん:2011/01/15(土) 02:07:21
>>109-110
とりあえずやってみたから見てみてくれ
つ http://tinyurl.com/22ru7sr
442デフォルトの名無しさん:2011/01/15(土) 02:12:43
>>436
授業理解できてないお前が悪い。同じ授業受けてる俺はもう完成してるしね(笑)
せいぜい月曜の締め切りまでそうやってあがいてればいいよ。
あ、教授にはこのスレの存在は通達済みだから、ここでもしコードが上がってもそれを参考にはできないからよろしく。
443デフォルトの名無しさん:2011/01/15(土) 02:13:56
鬼畜すぎワロタw
444デフォルトの名無しさん:2011/01/15(土) 02:16:43
そういやうちの大学でもネットのソースを5、6人が同じの提出して0点になったという話を聞いたな
当の本人たちは「採点を見なおせ」と教授に文句言ったらしいが
445デフォルトの名無しさん:2011/01/15(土) 02:29:33
自分でちょっとくらい書き換えればいいのに。猿なのか?
44632:2011/01/15(土) 02:50:21
>>58の言っていた2点間の最短距離と経路データ(1から13の最短経路は1→10→13という感じ)は求められたんですけど
それをもとに検索していく方法がわからないので、もしまだいたら検索方法を教えていただけないでしょうか
447デフォルトの名無しさん:2011/01/15(土) 02:56:07

書き換え度の判定プログラムを作成せよ。宿題になるかな?
448デフォルトの名無しさん:2011/01/15(土) 03:11:19
ほとんどが diff の肝な部分に集約されてるな
449デフォルトの名無しさん:2011/01/15(土) 03:36:16
1.変数名を変える等の単純な書換え
2.改行やスペースの書換えによるスタイルの書換え
3.for(;;)やwhile(1)等、同等文への置換え
4.処理が独立している、交換可能な行の入替え

1と2なら、機械処理で何とか出来ると思うが、
3以降は、ちょっと難しいかも
そこまで出来る奴なら、自分で解答書くかも。
450デフォルトの名無しさん:2011/01/15(土) 08:53:21
[1] 授業単元: Cプログラミング演習2
[2] 問題文(含コード&リンク): 問題10-2(関数ポインタを用いて2つの整数値を入力して、加算・減算・最大値・最小値の
いずれかを選択して求めるプログラムを作成せよ)において、関数ポインタを用いて、4つの関数の値のいずれかを求めるのではなく、
for-loopを用いて、4つの値とも出力するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: StudyC というやつです
 [3.3] 言語: C言語
[4] 期限: 2011年1月18日09:00まで]
[5] その他の制限:
入力に関して:キーボードから2つの整数をスペース1つあけて入力し、改行する。

出力に関して:加算・減算・最大値・最小値の値を、それぞれ値+改行のフォーマットで
 4行にわけて出力する。指定した数値・改行以外の出力は一切行わないこと。

あと、出来たらリンク先で示さずに、直接ソースを書いてください;;
451デフォルトの名無しさん:2011/01/15(土) 08:57:28
>>450です。

問題10-2で作った自分の解答は、↓のソースです。

http://codepad.org/KIB6aUQm

どうかよろしくお願いします;;
452デフォルトの名無しさん:2011/01/15(土) 09:41:03
453デフォルトの名無しさん:2011/01/15(土) 09:43:55
>>452 訂正
printf("1つ目の整数数値入力\n");
scanf("%d", &x);
printf("2つ目の整数数値入力\n");
scanf("%d", &y);



printf("2つの整数数値をスペース区切りで入力\n");
scanf("%d %d", &x , &y);
454デフォルトの名無しさん:2011/01/15(土) 10:20:54
>>452>>453
誠にありがとうございます;;
455デフォルトの名無しさん:2011/01/15(土) 11:38:35
[1] 授業単元: Cプログラミング演習2
[2] 問題文(含コード&リンク): 2つ unsighned char型のポインタ変数を用意する。
キーボードから数値を入力し、 malloc を用いて、1つめのポインタに入力数値バイト分のメモリを確保する。
次に2つめのポインタに固定バイト数(いくつでも良いが、例えば16)分のメモリを確保する。
この時、2つのポインタが指すアドレスが連続しているかどうか確認するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: StudyC というやつです
 [3.3] 言語: C言語
[4] 期限: 2011年01月18日09:00まで
[5] その他の制限:
 入力に関して:キーボードから、0ではない正の整数を1つ入力し、改行する。
この時、入力を促す文字は一切表示しないこと。
 出力に関して:メモリ確保後の1つめのポインタと2つめのポインタの(アドレスの)差分値を出力する(+改行)

入力値と出力値が一致すれば、確保されたメモリは連続しており、一致しなければ間が空いていることになる。
456デフォルトの名無しさん:2011/01/15(土) 11:40:27
連続ですが、どうかお願いします;;
457デフォルトの名無しさん:2011/01/15(土) 11:50:50
ちょっと疑問なんだけどその文章をそのままCに書き起こすだけで
何も考える必要なく回答になるんだけどどうして出来ないの?
授業中寝てるの?
458デフォルトの名無しさん:2011/01/15(土) 11:57:47
>>455
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned char* p1;
unsigned char* p2;
int n;
scanf("%d", &n); //どんまい
p1 = malloc(n);
p2 = malloc(16);
printf("%d\n", p2 - p1);
}
459デフォルトの名無しさん:2011/01/15(土) 12:08:32
大きな課題になってくると面倒で宿題スレじゃ誰も解かなくなるから、そのうち苦労するぞ
460デフォルトの名無しさん:2011/01/15(土) 12:10:40
>>459
本当に解いてもらいたくて出題してる人のほうが少ないでしょう。
461デフォルトの名無しさん:2011/01/15(土) 12:20:36
自作自演が8割
462デフォルトの名無しさん:2011/01/15(土) 14:56:38
ありがとうございます;;
463デフォルトの名無しさん:2011/01/15(土) 16:04:50
自作自演って自分で出題して自分で回答するって事?
......そんな奴居るのか?
464デフォルトの名無しさん:2011/01/15(土) 16:10:52
このスレはそんなことは無いと思うけど

いろんな言語で宿題 第五編
http://hibari.2ch.net/test/read.cgi/tech/1276873238/

このスレはそんな感じ
狂ってるよ
465デフォルトの名無しさん:2011/01/15(土) 16:17:44
>>464
私はその自作自演の本人だけど、あのスレはよその
宿題スレから問題をもらってきて、いろんな言語で回答
してみて、言語による表現の違いを楽しもうという趣旨
で始まった。第一番にPrologの回答を載せて続きを待
っているだけ。
466デフォルトの名無しさん:2011/01/15(土) 16:57:47
>>465
そういう趣旨だったのね
現行スレだけを見た新参者の感想として聞き流してくださいな
467デフォルトの名無しさん:2011/01/15(土) 20:35:33
[1] 授業単元:プログラミング及び演習II
[2] 問題文(含コード&リンク):-偏差値と標準偏差の計算-
入力ファイル motofile.dat を事前に用意し、出力ファイル result.dat を
               生成するC言語ソースプログラム hensa.c を書け。
               入力ファイルと出力ファイルは、コマンドライン引数から文字列として取得し、
               プログラムでは必ず構造体を使用すること。プログラムの実行は qtotal.c(下に
               貼り付けたプログラム)同様、以下の形式で実行する。数字ライブラリを利用
               するには libm.a をリンクする。gcc 起動時に、スイッチ -lm を追加する。

               $ gcc -o hensa -lm hensa.c
$ ./hensa motofile.dat result.dat

生成される result.dat の内容は以下の通りである。
               http://codepad.org/8qupROUX
             順位4位と順位9位に注意されたい。
[3] 環境
 [3.1] OS:MacOS X
 [3.2] コンパイラ名とバージョン:ターミナル 
[3.3] 言語:C
[4] 期限:2011年01月16日 19:00まで
[5] その他の制限:このプログラムに書き加えて下さい。
         http://codepad.org/xQ7jLJ15

         平均・標準偏差・偏差値の計算式
         Wikipedia -偏差値- 数式による解説にある計算式を使って下さい。

         平方根の計算には、include <math.h>の sqrt 関数を使用して下さい。
       
         
468デフォルトの名無しさん:2011/01/15(土) 20:55:49
Mac使う人って…
469デフォルトの名無しさん:2011/01/15(土) 21:29:50
マカは情弱だな。
470デフォルトの名無しさん:2011/01/15(土) 21:33:20
Wiki使えっていうのがおもしろいなw
471デフォルトの名無しさん:2011/01/15(土) 22:06:15
wikiを自分で編集して的外れな式にしてみてはどうか
472デフォルトの名無しさん:2011/01/15(土) 22:09:27
>>467
こんな感じかな
input() で scanf() を使うのが気に喰わないので直した
入力ファイルはスペース区切りとした
出力の桁調整はサンプルと同じにするのが面倒なので少しズレてるかも知れん

ttp://codepad.org/DtKh4cED
473デフォルトの名無しさん:2011/01/15(土) 23:02:30
なんで余計なことするかな
しかもstrtokとかないわ
474デフォルトの名無しさん:2011/01/15(土) 23:17:14
>>446
そこから先は普通に組み合わせの列挙なので自力で調べてくれ
一応ソースコード
http://s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/img/25.txt
475デフォルトの名無しさん:2011/01/15(土) 23:17:35
小手先プログラマほど、本質的ではない部分を自分好みに直したがるよね
しかも大抵、それは悪化にしかなっていない
476デフォルトの名無しさん:2011/01/15(土) 23:31:44
>>473
fscanf() だとファイルが不正な場合、例えば一行に3項目や5項目有った場合に問題が生じるから
fgets() -> sscanf() なら良いけどね、strtok() を使うのは習慣か趣味か自分でも良く判らん
477デフォルトの名無しさん:2011/01/15(土) 23:33:31
strtokって仕様が特殊だからなぁ

>>476
元から出来てる部分をいじるのは良くない
特に大学の課題なんかでは、指定されている部分を下手に書き換えてもいいことないよ
478デフォルトの名無しさん:2011/01/15(土) 23:45:55
strtokってスレッドセーフになったんだっけ?
479デフォルトの名無しさん:2011/01/15(土) 23:52:08
strtok_rがリエントラント版
480デフォルトの名無しさん:2011/01/15(土) 23:53:50
>>477
でも output() も書き直したからねぇ...
出題者が気に食わなければ元に戻せば良いだけの話だろ

>>478
スレッドセーフじゃないよ、スレッドセーフな strtok_r() ってのが有るけど
481デフォルトの名無しさん:2011/01/15(土) 23:58:47
>>480
まぁ何にせよ糞
482デフォルトの名無しさん:2011/01/16(日) 01:31:43
C言語で作曲したいのですが、どうすればいいのでしょう
483デフォルトの名無しさん:2011/01/16(日) 01:37:37
>>482
MMLでググる
484デフォルトの名無しさん:2011/01/16(日) 01:43:35
0x0042(8bit)で音色を決めて0x0061(8bit)で出力
Windowsじゃ無理だと思うけど
485デフォルトの名無しさん:2011/01/16(日) 01:46:20
>>484
midiポートにアクセスするなら似た方法も使えるよ
486デフォルトの名無しさん:2011/01/16(日) 01:54:10
それは作曲ではなくただ音を鳴らすだけだよね。
487デフォルトの名無しさん:2011/01/16(日) 02:09:22
誰か楽しい宿題ないのか
488デフォルトの名無しさん:2011/01/16(日) 02:11:56
>>487
早く宿題のない平和な世界になるといいね。
489デフォルトの名無しさん:2011/01/16(日) 02:19:21
490デフォルトの名無しさん:2011/01/16(日) 02:40:08
不定期あげ
491デフォルトの名無しさん:2011/01/16(日) 05:24:13
>>487
仕事レベルならともかく学校レベルだとそんな楽しい宿題ないっしょ。
492デフォルトの名無しさん:2011/01/16(日) 07:11:04
何か宿題依頼減ったな。




それだけ皆が成長したってことか。
493デフォルトの名無しさん:2011/01/16(日) 08:50:54
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://codepad.org/FD1Z6ZPV

・問題1
非終端記号TおよびFの解析ルーチンに付けるコメントを(Eに関するコメントを参考に)完成しなさい。
注意: printf(...)は、どの構文規則の適用されるか明示するためのものであるから、無視すること。
・問題2
このサンプルを拡張して1桁の数字からなる式の値を計算する簡単な電卓プログラムに改造しなさい。
・問題3
このサンプルを拡張して、代入文 <assign> ::= id '='<E> ';'を認識できるようにしなさい。

余計なプリント文を削除したソースプログラムと複雑な式を含む実行結果を提出すること。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++
[4] 期限: 1月27日まで
[5] その他の制限: 特になし
494デフォルトの名無しさん:2011/01/16(日) 10:07:57
>>493
http://codepad.org/cFUhyKRa

こっちのPCでは普通にコンパイルできた。
495デフォルトの名無しさん:2011/01/16(日) 10:25:35
>>494
ありがとうございます。

404 Not Found
The resource could not be found.

404 Not Found

codepad自体に繋がり難くなってるのかな。
496デフォルトの名無しさん:2011/01/16(日) 11:09:02
>>494
private設定してね?
497デフォルトの名無しさん:2011/01/16(日) 12:29:21
[1] 授業単元:C演習T
[2] 問題文(含コード&リンク):

バス停Aからバスに乗り、B駅まで行きたい。
時刻(時・分)を入力し、その時刻までにB駅に着くためには、何時何分発のバスに乗ればいいかを表示するプログラムを作成しなさい。
バス停AからB駅までの乗車時間は22分とする。
バス停Aの時刻表は
6時(25分、37分、59分) 7時(9分、19分、29分、39分) 8時(56分)
9時から15時までそれぞれ36分と56分 16時(36分) 18時(21分) 

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:1月18日
[5] その他の制限: C言語の基本的なことは習っています。ギリギリまで考えてたので期限が近いです、申し訳ないです。
498デフォルトの名無しさん:2011/01/16(日) 13:43:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):9X9の二次元配列に九九を代入する関数を作りなさい。
               配列はmain関数内で定義すること。また、配列の内容を表示する関数も作りなさい。
               (一つのプログラムに九九計算関数と九九表示関数を作るということだと思います。)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1月18日

よろしくお願いします。
499デフォルトの名無しさん:2011/01/16(日) 13:44:31
http://codepad.org/BHAF8eVc
if文だけで作ってみた。
これが嫌ならリストなり配列なり構造体で作るが。
500499:2011/01/16(日) 13:45:20
499は
>>497宛て
501デフォルトの名無しさん:2011/01/16(日) 13:49:27
>>499
ありがとうございます。
迷惑でなければ、配列で作っていただけると助かります。
先に言っておかず申し訳ございません。
502デフォルトの名無しさん:2011/01/16(日) 13:55:52
503デフォルトの名無しさん:2011/01/16(日) 14:04:20
504デフォルトの名無しさん:2011/01/16(日) 14:10:54
>>495
あれ開かないのか?
ちょっとPCみてくる。

PCからだと、規制かかっているせいで携帯からレスだけしてるんだな。
505デフォルトの名無しさん:2011/01/16(日) 14:12:14
>>499
そのプログラム見て
球の頂点を手打ちで設定してたプログラムを思い出した
506デフォルトの名無しさん:2011/01/16(日) 14:33:46
>>499
面白いとでも思ってんの?
507デフォルトの名無しさん:2011/01/16(日) 14:44:43
>>472
合計点(Total)が等しい時には、
http://codepad.org/8qupROUX
この上の出力ファイルの順位4位と順位9位のように
Gradeが等しくないといけないんですけど、
どのようにして比較して、順位を出力すればいいでしょうか?
どなたでも、よろしいので早めに教えて下さい。

プログラム http://codepad.org/DtKh4cED に書き加えて下さい。
508デフォルトの名無しさん:2011/01/16(日) 14:58:40
outputのところの順位をjとして

for( i = 0,j =0; i < number; i++ ) {
   fprintf( outfile, "%6d %-16s%4d %4d %4d %4d %7.2lf %7.2lf\n",
i + 1, st[i].name, st[i].eng, st[i].math, st[i].sci, st[i].total, st[i].mean, st[i].hensa );
  if((i != number) && (st[i]->total != st[i+1]->total)){
j=i; //順位更新
   }
}
509デフォルトの名無しさん:2011/01/16(日) 15:00:44
>>507のoutputのfor文の変更ね
あとfprintfのi+1をj+1に変え忘れた
510デフォルトの名無しさん:2011/01/16(日) 15:02:33
 
511デフォルトの名無しさん:2011/01/16(日) 15:14:16
>>509
Grade 1と2の合計点(Total)が異なるのに、
2つとも、Grade 1になってしまうんですが
改善するには、どうしたらいいですか?
お手数ですが、書き加えて教えて下さい。
お願いします。
512デフォルトの名無しさん:2011/01/16(日) 15:19:58
j=i+1;だわ
513デフォルトの名無しさん:2011/01/16(日) 15:23:47
i = i++;
514デフォルトの名無しさん:2011/01/16(日) 15:33:05
>>513
よかったね〜
515デフォルトの名無しさん:2011/01/16(日) 15:34:04
>>512
さん。
度々、ありがとうございます。
無事に実行できました。
516デフォルトの名無しさん:2011/01/16(日) 15:38:59
i = i++ + i++;
517デフォルトの名無しさん:2011/01/16(日) 18:30:49
C言語の宿題は糞
518デフォルトの名無しさん:2011/01/16(日) 18:35:37
C言語の宿題は糞 というやつは白痴
519デフォルトの名無しさん:2011/01/16(日) 18:37:24
C言語の宿題は糞 というやつは白痴 というやつはローガン
520デフォルトの名無しさん:2011/01/16(日) 18:43:16
>>167ですが、このプログラムを構造体化したプログラムをお願いします。
521デフォルトの名無しさん:2011/01/16(日) 19:49:54
>>520
クラス化じゃなく構造体にすんの?
522デフォルトの名無しさん:2011/01/16(日) 20:11:15
既存のやつを構造体にするのはめんどいだけだからなぁ
523デフォルトの名無しさん:2011/01/16(日) 20:11:54
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):「お菓子などのおまけを全種集めるためには平均して何個お菓子を購入すればよいか」を調べるプログラムを作りなさい。また処理概要の説明をしなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2]Visual C++ Experess Edition
 [3.3] 言語: C
[4] 期限: ([2011年01月18日15:00まで]
[5] その他の制限: 配列まで習いました。
・数学的に解くのではなく実際にコンピュータに試行させなさい。
・おまけの総数とすでにもっているおまけの数はユーザに入力させなさい。

【自分の考え】
たとえば、全部で10種類おまけがあったとして、すでに所持2種類ならば、非所持は8種類。
⇒1から8の乱数を発生させて1から8が全部集まったら、集まるまでに何度乱数発生させたかを記憶。←これを1万回ほど繰り返して、平均して何度購入すればよいかを求める。
という流れで作ろうと思うのですが、この例で1から8まで集まったことをどうやって確認するのかわからず、お手上げ状態です。どなたかお力添えいただければ幸いです。
524デフォルトの名無しさん:2011/01/16(日) 20:19:21
非所持は8種類だが乱数は全部の種類で考えないといけないでしょダブルってこともありえるんだから

集まったかどうかは
持ってるを1、持ってないを0として配列で管理するかな
525デフォルトの名無しさん:2011/01/16(日) 20:22:15
mallocは習って無さそうだけど十分な長さの固定長配列でやるでいいんかな
526デフォルトの名無しさん:2011/01/16(日) 21:22:38
 
527デフォルトの名無しさん:2011/01/16(日) 21:40:24
>>523
考え方としては、1万回繰り返すよりも、
例えば100セット揃えるまでに、
何個購入したかを数える方が楽だと思う。

528デフォルトの名無しさん:2011/01/16(日) 21:46:30
>>527
>全部集まったら、集まるまでに何度乱数発生させたかを記憶
529デフォルトの名無しさん:2011/01/16(日) 22:13:22
>>523
#include <stdio.h>
#include <stdlib.h>
#define N 10000
int check(int *p, int size)
{
int i;
for(i = 0; i < size; i++) if(p[i] == 0) return 0;
return 1;
}
int main(void)
{
int i, j, k, n, max, sum = 0, a[100];
scanf("%d", &max);
scanf("%d", &n);
srand(time(NULL));
for(i = 0; i < N; i++) {
int cnt = 0;
for(j = 0; j < n; j++) a[j] = 1;
for( ; j < max; j++) a[j] = 0;
while(check(a, max) == 0) {
k = rand() / (RAND_MAX + 1.0) * max;
a[k] = 1;
cnt++;
}
sum += cnt;
}
printf("%f\n", (double)sum / N);
return 0;
}
530デフォルトの名無しさん:2011/01/16(日) 22:21:41
>>527
そのやり方だと、実際の確率より少ない回数になるからダメ
531デフォルトの名無しさん:2011/01/16(日) 22:26:44
設問が、「全種集めるためには平均して何個お菓子を購入すればよいか」とあるじゃない?
10000個購入しても、揃わなかった最後の端数部分は無駄になってない?
532AQ:2011/01/16(日) 22:34:08
2] 問題文(含コード&リンク):「お菓子などのおまけを全種集めるためには平均して何個お菓子を購入すればよいか」を調べるプログラムを作りなさい。また処理概要の説明をしなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] Borand
 [3.3] 言語: C++
[4] 期限: ([2011年01月17日12:00まで]
数学のkrawczyk法のプログラムはどのようにして作ればよいですか?
区間は自分で入力して計算したいのですが
533デフォルトの名無しさん:2011/01/16(日) 22:36:08
>>532こいつ無視るか
534AQ:2011/01/16(日) 22:36:17
2] 問題文(含コード&リンク数学のkrawczyk法のプログラムはどのようにして作ればよいですか?
区間は自分で入力して計算したいのですが
[3] 環境
 [3.1] OS:Windows
 [3.2] Borand
 [3.3] 言語: C++
[4] 期限: ([2011年01月17日12:00まで]
535デフォルトの名無しさん:2011/01/16(日) 22:48:05
>>531
一万回全種揃えるんだよ
536デフォルトの名無しさん:2011/01/16(日) 22:56:31
>>535
誤解してた、ごめんな
537 ◆QZaw55cn4c :2011/01/16(日) 23:40:02
>>109
http://codepad.org/JompMCy6
シグナル周りはちょっと自信がありません。cygwin/Windows XP/gcc-4 では問題ないようです。
なお、>>110 では ls の実行を例としてあげていますが、ここでは ls などの内部コマンドは一切実装してませんので、>>110 のとおりには動きません。
538デフォルトの名無しさん:2011/01/17(月) 00:37:27
>>537
ls って /usr/bin/ls じゃないの?
そもそも Unix のシェルに内部コマンドなんて有ったっけ?
539デフォルトの名無しさん:2011/01/17(月) 00:40:52
>>538
ls は違うと思うけど
内部コマンドはあるよ
でなきゃシェルスクリプトなんて書けない
540 ◆QZaw55cn4c :2011/01/17(月) 01:20:14
>>538-539
たしかに ls は外部コマンドでしたね。ご指摘感謝

>>109
関連して
ls -al | grep xxx
がうまくいかなかった点を修正しました。
http://codepad.org/uMZMBjRG
541デフォルトの名無しさん:2011/01/17(月) 01:27:04
>>521
どんな雑なものでも動けばいいのでお願いしますm(_ _)m
542デフォルトの名無しさん:2011/01/17(月) 01:42:33
>540
欲をいえば、*とかを展開してほしい
履歴機能とか

リダイレクト(>)したときのパーミッションが0104になっている、これはあかん
543デフォルトの名無しさん:2011/01/17(月) 01:50:17
>540
まぁ、そんなに長くこのシェルに入っておくことはないけど
268, 270行目のmain()内でファイルを開いて閉じてない
メモリリークチェックしたけど今のところこれだけ
544 ◆QZaw55cn4c :2011/01/17(月) 01:52:52
>>542
ご指摘感謝です。

>欲をいえば、*とかを展開してほしい
確かにこれは次にとりかかるべき課題です。でも、これをするには、んー、今の組み方を根本的に変えなくていけないでしょうね。

>>542
>リダイレクト(>)したときのパーミッションが0104になっている、これはあかん
>>109
この点を修正しました。open() の第 3 引数を安直に 0666 としただけですが。

http://codepad.org/hBrx6VoE
545デフォルトの名無しさん:2011/01/17(月) 01:53:21
>>539
制御構造も内部コマンド扱いなんだね、意識した事はなかったけど
cd や pwd も内部コマンドなのは知らんかった
546 ◆QZaw55cn4c :2011/01/17(月) 01:55:44
>>543
ご指摘感謝したします。
>>109
さらに修正しました。
http://codepad.org/tMayhQ7M
547デフォルトの名無しさん:2011/01/17(月) 02:13:03
>545
UN*Xはそうなんだろうか

せんとくんではpwdは/bin/ある
cdは、内部らしい

で、内部コマンド使うと盛大にリークした
さすがに解析面倒だわ、たぶんforkした奴がコマンド見付かんねぇで戻ってきて(戻ってくるのか?)なにもしてないのが原因と思うけど
>546
直っている
548 ◆QZaw55cn4c :2011/01/17(月) 02:19:22
>>547
>コマンド見付かんねぇで戻ってきて(戻ってくるのか?)
もどってくるというか‥‥‥。
>>546 ではコマンドを見つからないときは、そのプロセスは即座に何も考えずに exit() してプロセスの全領域を OS に返してしまいます。
549デフォルトの名無しさん:2011/01/17(月) 02:33:09
今気づいたんだけど、openの定義って、
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
とあるけど、なんでCで関数のオーバーロード出来るの?
550デフォルトの名無しさん:2011/01/17(月) 02:59:02
open()だろ
551デフォルトの名無しさん:2011/01/17(月) 03:06:01
>548
やっぱり子プロセスで成功しなかったときの処理のところでリークしていた
まぁ、exit()系でいいと思うけど気になったんで
117d116
< void release(struct list *root);
175,177d173
< release(env);
< free(argv);
< free(comline);
子プロセスでも開放しろと
http://okwave.jp/qa/q3511498.html
http://fixunix.com/unix/330910-fork-malloc.html

類似の部分は自分で直しといて
552デフォルトの名無しさん:2011/01/17(月) 05:47:57
やっぱ講義受けてない奴が書くとこんなに糞になるのか・・・
553デフォルトの名無しさん:2011/01/17(月) 06:21:03
丸写しで提出する奴が何人いるか楽しみだなw
554デフォルトの名無しさん:2011/01/17(月) 06:54:46
>>493の問題に答えてくれた>>494さんいらっしゃいませんか。
555デフォルトの名無しさん:2011/01/17(月) 07:27:34
月にいってます
556デフォルトの名無しさん:2011/01/17(月) 09:04:36
書き込めないんじゃないの?
557デフォルトの名無しさん:2011/01/17(月) 09:05:45
sage忘れすまん。
558デフォルトの名無しさん:2011/01/17(月) 09:16:34
>>493>>494に対する解答も釣り(初めからない)っていうオチ
559デフォルトの名無しさん:2011/01/17(月) 09:55:59
このスレで釣りとかあんのか?(笑)
560デフォルトの名無しさん:2011/01/17(月) 09:56:59
また忘れた
561デフォルトの名無しさん:2011/01/17(月) 16:17:26
まだ誰もやってない宿題どれ?
562デフォルトの名無しさん:2011/01/17(月) 17:40:35
>>561
>>493だけじゃないかな
563デフォルトの名無しさん:2011/01/17(月) 17:40:47
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
(1)~(5)の穴埋め
test2の出力例
$ ./test2
*************
...........*
***********
.........*
*********
.......*
*******
.....*
*****
...*
***
..*
*
$
564デフォルトの名無しさん:2011/01/17(月) 17:43:50
#include<stdio.h>
int main (void) {
int (1) ;
for (i=0 ; (2) ; i++) {
for (j= (3) ; (4) ; j--) {
if ( (5) ) {
printf(".") ;
} else {
printf("*) ;
}
}
printf("\n") ;
}
return 0 ;
;
[3] 環境
 [3.1] OS:windowsXP
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 出来れば本日中に
[5] その他の制限:
565563-564:2011/01/17(月) 17:44:56
すみません
最後の行「;」でなく「}」ですね

急いで書いたので間違いがあるかもしれませんが
脳内補完でお願いします・・・
566デフォルトの名無しさん:2011/01/17(月) 17:52:25
>>565
これはさすがに授業中寝てたとしか思えん
567デフォルトの名無しさん:2011/01/17(月) 17:53:58
出力例 最終から2番目の ..* は .* の間違いではないのかな?

法則性がちと面倒っぽいんだけど
************* 13
...........* 12
*********** 11
.........* 10
********* 9
.......* 8
******* 7
.....* 6
***** 5
...* 4
*** 3
..* 3
* 1
568デフォルトの名無しさん:2011/01/17(月) 18:17:50
569デフォルトの名無しさん:2011/01/17(月) 18:24:40
本当に >>563 が出力例なら
(3) i !=11 ? (12-i) : 2
570デフォルトの名無しさん:2011/01/17(月) 19:55:05
571 ◆QZaw55cn4c :2011/01/17(月) 20:09:18
>>551
ご指摘感謝です。示していただいた URL の英語の記事では、ちょっと微妙なところがありましたが、
(fork() した後も、同じ物理メモリをポイントしている場合があるとかないとか)
free() しておくほうがいいでしょうね。

>>168
バッファオーバーランを起こしていたことが判明しました。失礼いたしました。

>>109-110
たびたびすみませんが、以下に修正した内容を示します。
http://codepad.org/S3ojhe0c
572デフォルトの名無しさん:2011/01/17(月) 21:49:28
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):http://codepad.org/LbA7xomp のプログラムを構造体で表現しなさい
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2008
 [3.3] 言語: C++
[4] 期限:2010年 1月12日
[5] その他の制限:

>>520を再度まとめました。よろしくお願いします。
573デフォルトの名無しさん:2011/01/17(月) 22:13:46
>>570
これはどうやって作るのですか?
574デフォルトの名無しさん:2011/01/18(火) 00:26:43
>>568-569
ありがとうございます
指摘通りご入力です・・・
もう1つお願いします

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
(1)~(5)の穴埋め
$ ./test02
.*
**..
...***
****....
.....*****
******......
......******
$
575デフォルトの名無しさん:2011/01/18(火) 00:28:24
#include<stdio.h>
int main (void) {
int i,j ;
char C[2] = {'*' , '.'}
for (i=1; i<8; i++) {
if (i%2 == 0){
for (j=0; (1); j++) {
printf("(3)" , (4)) ;
}
for (; (2); j++) {
printf("(3)",(5) ;
}
} else {
for (j=0; (1); j++) {
printf("(3)" , (5)) ;
}
for (; (2); j++) {
printf("(3)" , (4)) ;
}
}
printf("\n");
}
return 0 ;
}
[3] 環境
 [3.1] OS:windowsXP
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: 出来れば本日中に
[5] その他の制限:
また誤入力と思われるところがありましたら脳内補完でお願いします
576デフォルトの名無しさん:2011/01/18(火) 00:50:59
577デフォルトの名無しさん:2011/01/18(火) 00:51:48
>>576
即レスありがとうございます
助かりました
578デフォルトの名無しさん:2011/01/18(火) 00:57:58
元のソースがひどいなw
579デフォルトの名無しさん:2011/01/18(火) 02:52:38
そんなに酷いか?
無駄に printf() 使ってる(問題だから)くらいしか気にならないけど
580デフォルトの名無しさん:2011/01/18(火) 10:09:29
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
[3] 環境
問題1 テキストファイルのコピーを作るプログラムを作れ 
問題2 問題1について下記のようにコピー元とコピー先のファイル名を引数で指定できるようにプログラムを変更せよ

./a. out <コピー元ファイル名> <コピー先ファイル名>
[3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:1月19日
[5] その他の制限: なし
よろしくお願いします。
581デフォルトの名無しさん:2011/01/18(火) 10:55:29
#include <stdio.h>
int main(int argc, char *argv[]) {
FILE *fpRead;
FILE *fpWrite;
char ch;
if(argc != 3) {
printf("パラメータ正しく指定してください。\n");
return 1;
}
fpRead = fopen(argv[1], "r");
fpWrite = fopen(argv[2], "w");
if(fpRead == NULL || fpWrite == NULL) {
printf("ファイルをオープンできません。\n");
fclose(fpRead);
fclose(fpWrite);
return 1;
}
while((ch = fgetc(fpRead)) != EOF) {
fputc(ch,fpWrite);
}
fclose(fpRead);
fclose(fpWrite);
return 0;
}
582581:2011/01/18(火) 10:58:24
>>581 は問題2の方だな。
問題1の方もいるなら作るよ。
583デフォルトの名無しさん:2011/01/18(火) 10:59:37
584デフォルトの名無しさん:2011/01/18(火) 11:05:10
>>583
勉強になる。いいね。
585493:2011/01/18(火) 11:16:48
うほ、レスあったのか見落としてた。
>>494,504 開けません。404 notfoundが表示されています。

>>562 やっぱトップダウン解析は遠慮され易いのかな。
586デフォルトの名無しさん:2011/01/18(火) 13:06:21
>>585
一応ゆあったけどロダにupできんね… codepad に3つ張る?
587デフォルトの名無しさん:2011/01/18(火) 13:09:05
588デフォルトの名無しさん:2011/01/18(火) 14:36:27
>>572
全く意味不明なのですが、別にヒントはないのですか?
589588:2011/01/18(火) 14:40:09
すみません。「私にとって」意味不明です。
リバースエンジニアリング的な意味で、詳細仕様を
復元してみることくらいしか、やることを思いつき
ません。
590デフォルトの名無しさん:2011/01/18(火) 15:01:45
>>581 が問題2で>>583が問題1でしょうか?
591デフォルトの名無しさん:2011/01/18(火) 17:18:26
糞スレあげ
592デフォルトの名無しさん:2011/01/18(火) 19:12:15
>>590
みたところ
>>581>>583は問2

593デフォルトの名無しさん:2011/01/18(火) 19:16:20
>>592
嘘つかないでください。
594デフォルトの名無しさん:2011/01/18(火) 19:22:59

UNIXでテキストファイルって限定している意味が良く分からない
そうでないときはエラーにすれば良いのか?
595デフォルトの名無しさん:2011/01/18(火) 19:27:46
 
596デフォルトの名無しさん:2011/01/18(火) 19:40:41
質問者とっととまとめやがれ。

しねーのなら無視だ
597デフォルトの名無しさん:2011/01/18(火) 19:58:08
>>596
ふざけんな
598デフォルトの名無しさん:2011/01/18(火) 20:21:16
>>592-593
>>583 を書いた者だけど問2のつもりで書いたよ
でも問1を問2と差別化する方法が判らないよ
>>594 の説も有るかも知れないけど、問として難しすぎないか?

もし、講師が現場を知らない爺なら、fopen() → fgets() →fputs() の流れを期待してるのかもしれない 
599デフォルトの名無しさん:2011/01/18(火) 20:40:49
誰も頼んじゃいないのに
標準関数の車輪作ったり、依存関数を使ったりと
移植性・可読性・生産性を下げて頑張っちゃう人っているよね
600 ◆QZaw55cn4c :2011/01/18(火) 20:42:03
>>599
依存関数ってなんですか?
601デフォルトの名無しさん:2011/01/18(火) 20:53:02
>>600
システムに依存する関数
602デフォルトの名無しさん:2011/01/18(火) 20:53:55
環境依存って言った方が分かりやすいと思う
603デフォルトの名無しさん:2011/01/18(火) 20:54:40
>>599
宿題における、移植性・可読性・生産性って何ですか?
604デフォルトの名無しさん:2011/01/18(火) 20:56:08
>>588-589
説明不足でしたすいません
>>572のプログラムと同じ動作をする構造体を用いるプログラムを作りなさいという問題です
全く同じじゃなくても構いません
605デフォルトの名無しさん:2011/01/18(火) 20:56:21
>>603
strdup とか MS の 〜〜_s 系の関数とかじゃね
606デフォルトの名無しさん:2011/01/18(火) 20:57:03
>>603
ただの世間話ですけど、何か気に障りました?
607デフォルトの名無しさん:2011/01/18(火) 20:57:55
>>606
素朴な疑問なので気にしないでw
608デフォルトの名無しさん:2011/01/18(火) 20:59:25
なるべく環境依存しない、処理系依存しないということで了解します
609デフォルトの名無しさん:2011/01/18(火) 21:09:16
>>604
void _read_image(const char *);



struct Name {
 const char* filename;
};
void _read_image(struct Name);

こんなのでも通すの? 構造体使ってる
610デフォルトの名無しさん:2011/01/18(火) 22:00:26
◆QZaw55cn4cは荒らしだからレスしないように
611デフォルトの名無しさん:2011/01/18(火) 22:03:27
>>599
車輪が作れないと、どっかのアホみたいに知ってるコードのコピペしかできなくなるぞw
612デフォルトの名無しさん:2011/01/18(火) 22:28:16
車輪がどのような理屈で成り立っているのかを知るためには再発明が一番だわな
オレオレCコンパイラなんて、 結構な数が再生産されてるんじゃね?
# つか、 おれも作った記憶あるけど

613デフォルトの名無しさん:2011/01/18(火) 22:36:27
先頭に#をつけて逃げを作るくらいなら、変な自己主張しなければいいのに
614デフォルトの名無しさん:2011/01/18(火) 22:39:28
>>613
昔のおっさんの習慣だわ、
「先頭に#」 == 独り言 || 突っ込んでも返事しない || わかるやつだけわかりゃいい
615デフォルトの名無しさん:2011/01/18(火) 22:44:19
先輩SEがコメントは信じるなって言ってた
616デフォルトの名無しさん:2011/01/18(火) 23:00:40
IDがないと殺伐としやすいな。
617デフォルトの名無しさん:2011/01/18(火) 23:01:52
>>616
何が悔しかったの?w
618デフォルトの名無しさん:2011/01/18(火) 23:05:37
これって面白いの?
http://kmaebashi.com/programmer/hoge.html
619デフォルトの名無しさん:2011/01/18(火) 23:06:42
>>618
分かる人にとってはね
620デフォルトの名無しさん:2011/01/18(火) 23:12:37
もちろんhogeは知ってるけど、このネタはなんか寒い
621デフォルトの名無しさん:2011/01/18(火) 23:14:07
結局エビステーメーは糞ってことでおk?
622デフォルトの名無しさん:2011/01/18(火) 23:16:39
>>620
いろんなものをパロってるから知らないと面白くないよ
知る必要もないけどね
623デフォルトの名無しさん:2011/01/18(火) 23:20:37
>>622
いや、だからパロとか含めて寒い
624デフォルトの名無しさん:2011/01/18(火) 23:40:24
つまり、C++の規格票においては識別子として
Unicode文字のうち英数字以外のその他の国の字も許容しているので
(ただし、例外となる文字や先頭に来てはいけない文字は列挙されている)
>>361にある
const int 体力上限 = 50;

のような宣言はむしろ動かないほうが規格に合致しないコンパイラということなわけだ。
625デフォルトの名無しさん:2011/01/18(火) 23:47:57
当たり前じゃん
626デフォルトの名無しさん:2011/01/19(水) 00:57:37
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
[3] 環境
問題1メイン関数でキーボードから二つの整数n1とn2を読み込み,それらをexponent関数を呼び出して,
n1のn2乗を計算し,結果をメイン関数で表示するプログラムを書きなさい.
<実行例>
二つの整数を入力してください.
n1 = 5
n2 = 2
5の2乗は25です.
問題2 5人の点数を読み込んでいき、その最高点を表示するプログラムを作成しなさい。
問題3 円の面積の一覧表を計算するプログラムを作成しなさい。
<実行結果>
半径 --- 面積
1.0 --- 3.14
1.1 --- 3.80
1.2 --- 4.52
1.3 --- 5.31
問題4 球の体積を計算するプログラムを作成しなさい。
実行例
体積 = 1766.25
[3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:1月19日
[5] その他の制限: なし
よろしくお願いします。
627デフォルトの名無しさん:2011/01/19(水) 00:58:03
JAVA辺りはデフォで動くよな。
628デフォルトの名無しさん:2011/01/19(水) 01:01:38
>>626
ただ聞くだけじゃなく、ここまでやってみたけど思うように動かないからどうすればいい?とかできないかね?
いくらなんでも初歩の初歩聞くやつ多すぎ。
ちょっとでも考えないと脳みそ腐るぞ。
将来使う使わないにしても小学校の計算ドリルが解けないのと同じくらい恥ずかしいことだと理解すべき。
629デフォルトの名無しさん:2011/01/19(水) 01:17:54
バカ相手に説教するって楽しいよねw
630デフォルトの名無しさん:2011/01/19(水) 01:19:29
>>628
そういうのいいです。
631デフォルトの名無しさん:2011/01/19(水) 01:23:59
632デフォルトの名無しさん:2011/01/19(水) 01:32:35
633632:2011/01/19(水) 01:33:16
>>631
かぶった。すまそ。
634631:2011/01/19(水) 02:19:12
>>633
いや、自分のはつまらないネタなのでw
635デフォルトの名無しさん:2011/01/19(水) 02:32:47
最近のって大体L2まではありますか?
636デフォルトの名無しさん:2011/01/19(水) 09:38:23
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://ywata-lab.yz.yamagata-u.ac.jp/PDF/pro2-1-19.pdf
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: ユーザ関数





637デフォルトの名無しさん:2011/01/19(水) 10:40:10
>>636
あれ、何でだ。

見れん
638636:2011/01/19(水) 10:41:58
ユーザ関数
課題9:
コンピュータ(com)とあなた(you)がジャンケンをするプ
ログラムにおいて,以下の2つユーザ関数に作成して,
実行できるようにせよ
1.コンピュータ(com)の「手」を出力する
int Rival(void)
2.勝敗を判定し,出力する
void Judge(int you, int com)

問題文はこれです。
639デフォルトの名無しさん:2011/01/19(水) 11:08:03
#include <stdio.h>

enum { GU, CYOKI, PAA, NUM, };
int Rival(void) { return (rand() % NUM); }
void Judge(int your_te, int cpu_te){
  printf("your_te: %s\n", (your_te==GU) ? "GU" : (your_te==CYOKI) ? "CYOKI" : "PAA");
  printf("cpu_te : %s\n", (cpu_te==GU) ? "GU" : (cpu_te==CYOKI) ? "CYOKI" : "PAA");
  if(your_te == GU){
    if(cpu_te == GU){ puts("aiko"); }
    if(cpu_te == CYOKI){ puts("kati"); }
    if(cpu_te == PAA){ puts("make"); }
  }
  else if(your_te == CYOKI){
    if(cpu_te == GU){ puts("make"); }
    if(cpu_te == CYOKI){ puts("aiko"); }
    if(cpu_te == PAA){ puts("kati"); }
  }
  else if(your_te == PAA){
    if(cpu_te == GU){ puts("kati"); }
    if(cpu_te == CYOKI){ puts("make"); }
    if(cpu_te == PAA){ puts("aiko"); }
  }
}
int main(void){
  int your_te = -1;
  do{
    puts("input your_te :");
    puts("(0 -> guu, 1 -> cyoki, 2 -> paa)");
    scanf("%d", &your_te);
  }while(your_te < GU || PAA < your_te);
  Judge(your_te, Rival());
}
640デフォルトの名無しさん:2011/01/19(水) 11:38:31
>>637
問題文はこれです。
641デフォルトの名無しさん:2011/01/19(水) 12:22:57
[1] 問題:
関数名 sum_k2
書式 int sum_k2(int n)
機能 k^2の総和を漸化式により求める.
引数 範囲n
戻り値 総和Sn
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] 言語:C
[4] 期限: [2011年1月22日(金)24:00まで]
[5] その他の制限:main関数で範囲nを入力し,総和を表示しなさい.
642デフォルトの名無しさん:2011/01/19(水) 12:24:08
おねがいします
643デフォルトの名無しさん:2011/01/19(水) 12:43:19
int sum_k2(int n){
if(n<0)n=-n;
if(n==0)return 0;
return n*n+sum_k2(n-1);
}
644デフォルトの名無しさん:2011/01/19(水) 13:16:14
[1] 授業単元:プログラミング演習第一
[2] 問題文(含コード&リンク):
リスト構造をもつ成績処理のプログラム list.c に,引数として指定された得点のデー
タをリストから削除するdelete 関数を追加して,その動作が確認できるプログラムを
作成せよ.ただしこのdelete 関数では,削除したデータの領域はfree 関数を使って
解放せよ.またmain 関数では確認のため,データ削除前のリストと削除後のリストを
表示せよ.
(ヒント: void delete(struct record **listPointer, int scr); )


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [2011年1月24日(月)17:00まで]

645デフォルトの名無しさん:2011/01/19(水) 13:17:59
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct record { /* 1人分のデータ */
char name[32]; /* 氏名 */
int score; /* 得点 */
struct record *next; /* 次のデータへのポインタ */
};

void printlist( struct record *list ) {
if ( list != NULL ) { /* リストが空でなければ */
printf( "%16s:%4d\n", list->name, list->score );
printlist( list->next ); /* 先頭の次からリストの表示 */
}
}
646デフォルトの名無しさん:2011/01/19(水) 13:19:27
void insert( struct record **listPointer,
struct record *newData ) {

if ( *listPointer == NULL ) { /* 旧リストが空 */
newData->next = NULL; /* 新データでリストは終わり */
*listPointer = newData; /* 新データがリストの先頭 */
}
else { /* 旧リストの先頭より低い得点 */
if ( (*listPointer)->score > newData->score ) {
newData->next = *listPointer; /* 新データの次に旧リスト */
*listPointer = newData; /* 新データがリストの先頭 */
}
else { /* 旧リストの先頭より高い得点 */
insert( &((*listPointer)->next), newData ); /* 再帰 */
}
}
}


647デフォルトの名無しさん:2011/01/19(水) 13:20:17
main() {
struct record *new, *list = NULL;

new = (struct record *)malloc( sizeof(struct record) );
printf( "name=" ); /* 氏名入力 */
scanf( "%s", new->name );
while ( strcmp( new->name, "END" ) != 0 ) { /* END でない間 */
printf( "%s's score = ", new->name ); /* 得点の入力 */
scanf( "%d", &(new->score) );
insert( &list, new ); /* リストへの追加 */
new = (struct record *)malloc( sizeof(struct record) );
printf( "name=" ); /* 氏名入力 */
scanf( "%s", new->name );
}
printlist( list ); /* リストの表示 */
}
648デフォルトの名無しさん:2011/01/19(水) 13:27:40
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク) 球の体積を計算するプログラムを作成せよ。
関数の定義は以下の順序で行うこと。(プロトタイプ宣言が必要となります)
main()関数
下記の関数を組み合わせて呼び出し、直径15のときの球の体積を求め、その値を表示してください。
ただし、main()関数内では、変数を一切使うことなく関数の呼び出しを行ってください。

体積の計算用として、下記の2つの関数を定義してください。
1. radius関数:直径を引数として受け取り、半径を返却値として返す
2. volume関数:半径を引数として受け取り、球の体積を返却値として返す
ただし、引数及び返却値の型は、すべて double 型とします。
[3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:1月19日
[5] その他の制限: なし
よろしくお願いします。
649デフォルトの名無しさん:2011/01/19(水) 13:38:16
>>648
#include <stdio.h>
#define PI 3.141592
double radius(double phi){
return phi/2;
}
double volume(double r){
return 4.0/3.0*PI*r*r*r;
}
int main(){
printf("%f\n",volume(radius(15.0)));
return 0;
}
650デフォルトの名無しさん:2011/01/19(水) 19:46:37
宿題ではないですが、よろしくお願いします。
[1] 授業単元:自学自習
[2] 問題文(含コード&リンク):CSVファイルのサイズで、malloc関数で領域を確保。
              その領域に、CSVデータを収める方法。詳細は最下段。
[3] 環境
 [3.1] OS:windows xp (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:指定なし、borlandとbcc (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: なし
[5] その他の制限: なし

 現在は定義を用いて、構造体配列の宣言→読込/格納というプログラムは完成しました。
この部分を↑の問題文のように改造することを思いつきました。
 しかしSQLではなくCSV(項目の最大文字数は決まっているが、文字数自体は不定)のため、
ファイルサイズで領域確保して、構造体でキャストして格納しても、オーバーフローが
起きてしまうと予想しました。
 そこで1トークンごとの文字数でrealloc関数を用いて、再定義→格納と考えたのですが、
全然美しくない&むしろ動作を重くなると予想されるため、他に方法がないか探しています。

 何か慧聡がありましたら、御教授お願い致します。
651デフォルトの名無しさん:2011/01/19(水) 19:49:05
環境を書き漏らしておりました。以下が正式な環境です。
[3] 環境
 [3.1] OS:windows xp (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:指定なし、環境はborlandとcPad
 [3.3] 言語:C (C/C++/どちらでも可 のいずれか)
652デフォルトの名無しさん:2011/01/19(水) 20:21:04
#include <stdio.h>

int main(void)
{
  FILE* fp;
  int size;
  unsigned char* data=NULL;

  if((fp = fopen("csv", "rb")) == NULL){ puts("fuck"); exit(1); }
  fseek(fp, 0L, SEEK_END);
  size = ftell(fp);
  fseek(fp, 0L, SEEK_SET);

  data = (unsigned char*)malloc(size);
  fread(data, size, 1, fp);

  fclose(fp);
  return 0;
}
653デフォルトの名無しさん:2011/01/19(水) 20:32:16
fcloseするならfreeもしてよね!
654デフォルトの名無しさん:2011/01/19(水) 20:43:16
>>652
ありがとうございます。
早速、試してみます。
655デフォルトの名無しさん:2011/01/19(水) 20:56:39
構造体に格納したかったんじゃないの?
656デフォルトの名無しさん:2011/01/19(水) 21:32:30
>>655
ありがとうございます。
やはりそうでしたか。上手いこといかず、どこで読み込んだ文字数分を
再定義しているか、四苦八苦しながら探しているところでした。
657デフォルトの名無しさん:2011/01/19(水) 21:52:06
>>656
格納したい構造体の定義を示さないと、回答不能じゃないかな?
658デフォルトの名無しさん:2011/01/19(水) 22:00:22
<<643
ありがとうございました
659デフォルトの名無しさん:2011/01/19(水) 23:06:16
>>635
エスパーするとL2なんか普通に乗ってる
てかいつの話してんだ15年前か
660デフォルトの名無しさん:2011/01/19(水) 23:08:57
>>650
項目の最大文字数が決まってるなら行数が判れば良いって事?
だったら1回 fgets() で読んで行数をカウントすれば?
普通は構造体配列を規定サイズで確保して、溢れる時に規定サイズ分増やして realloc() する様なコードを書くけどね
661デフォルトの名無しさん:2011/01/19(水) 23:57:51
>>660
662デフォルトの名無しさん:2011/01/20(木) 00:05:53
>>661
罵倒するなら代替案を出したら
663デフォルトの名無しさん:2011/01/20(木) 00:11:08
>>650
ファイル全体を読み込むだけのメモリ確保できるなら、
一度全部メモリの読込み、そこで必要なサイズ、個数を数え、
あらためて、配列用にmallocしてみるのは?
664デフォルトの名無しさん:2011/01/20(木) 00:15:37
釣れたw
665デフォルトの名無しさん:2011/01/20(木) 00:17:26
>>659
10年前の話なんですが・・・もしかして現在の話だと思いましたか
666デフォルトの名無しさん:2011/01/20(木) 00:19:33
[1] 授業単元:
[2] 問題文: http://ux.getuploader.com/sanada1678/download/17/%E3%82%B3%E3%83%94%E3%83%BC+%EF%BD%9E+%E8%AA%B2%E9%A1%8C.csv
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 平成23年1月20日まで
[5] その他の制限:無し
667デフォルトの名無しさん:2011/01/20(木) 00:33:23
何これ怖い 番号も666で呪われてるから誰も触れるなよ
668666:2011/01/20(木) 00:34:42
途中に表示が00/00/00〜となっている箇所がありますがそこは消して頂いて構いません。
よろしくお願い致します。
669デフォルトの名無しさん:2011/01/20(木) 00:39:45
俺サクラエディタで開いてみたが666行目特に問題ないようだけど・・・
670669:2011/01/20(木) 00:40:34
あ~ そういうことか。 俺のレススルーして。
はずかしい・・ orz
671デフォルトの名無しさん:2011/01/20(木) 00:52:04
呪われてるw
672デフォルトの名無しさん:2011/01/20(木) 00:55:30
あれってどこの国だっけ?
673デフォルトの名無しさん:2011/01/20(木) 01:08:18
>>609
ありがとうございます
そうすればいいのですね!
674デフォルトの名無しさん:2011/01/20(木) 01:58:11
>>666
http://tinyurl.com/22ru7sr
途中までやったけど眠いから微妙
起きてまだ誰もやってなかったら続きやります
675666:2011/01/20(木) 02:05:17
ありがとうございます!
早速、試してみます!
676デフォルトの名無しさん:2011/01/20(木) 03:01:32
>>666
読むとこまで書いたけど、タバコが切れたの休憩
後は、開始日時と終了日時を算出して、入庫・出庫テーブル作って....結構面倒くさいな

ttp://codepad.org/Q3pUCJOB
677デフォルトの名無しさん:2011/01/20(木) 04:06:01
>>666
集計部分も付けた
在庫数の計算は 開始台数 + 入庫台数 + 出庫台数 で良いのかなぁ
結果は printf() してるだけだから好きなフォーマットにして出力する様に直しな、それくらいは出来るでしょ

ttp://codepad.org/ueIdT6vv
678デフォルトの名無しさん:2011/01/20(木) 08:55:23
>>666
なぜか問題文が読み取れない・・・
679デフォルトの名無しさん:2011/01/20(木) 08:57:33
ダミアンの呪いだぁ〜
680デフォルトの名無しさん:2011/01/20(木) 08:59:21
コピー 〜 課題.csv
まではオケ?>>666+12
681デフォルトの名無しさん:2011/01/20(木) 09:03:52
>>680
他にあるのですか?
682680:2011/01/20(木) 09:10:33
コピー+〜+課題.csv
が正しいファイル名では?
683デフォルトの名無しさん:2011/01/20(木) 09:34:22
>>680
すみません。解決しました。
Sjisからの変換がうまくいかなくて、
全角文字が消えていました。
684デフォルトの名無しさん:2011/01/20(木) 09:39:44
[1] 授業単元:神経衰弱のCPU対戦
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Windows7
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: ([2011年1月20日12:00まで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

685684:2011/01/20(木) 09:42:54
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h> /*API利用*/
typedef struct
{
char type; /* 種類 */
int no; /* 数字 */
int omote; /* 表フラグ */
int atari; /* 当たりフラグ */
}CARD;
void init(CARD *); /* イニシャライズ関数 */
void disp(CARD *); /* ディスプレイ関数 */
void shuffle(CARD *);/*シャッフル関数*/
int cd_open(CARD *pt);
/* メイン処理 *
686684:2011/01/20(木) 09:44:06
void main (void)
{
CARD dt[52]; /*トランプ用配列*/
int op1,op2;/*オープンしたカード番号*/
srand((unsigned int)time(NULL));
init(&dt[0]);
shuffle(&dt[0]);
disp(&dt[0]);
printf("1枚目\n");
op1=cd_open(&dt[0]);
disp(&dt[0]);
printf("2m枚目\n");
op2=cd_open(&dt[0]);
disp(&dt[0]);
disp(&dt[0]);
if(dt[op1].no==dt[op2].no)/*当たり判定*/
{
printf("当たり!!\n");
dt[op1].atari=dt[op2].atari=1;/*当たりフラグセット*/
}
else
{
printf("はずれ!!\n");
dt[op1].omote=dt[op2].omote=0;/*おもてフラグリセット*/
}
}
687684:2011/01/20(木) 09:45:42
void init(CARD *pt) /*順にカードの種類と番号をセット*/
/*ハートの1からクローバーの13まで入れる*/
{
char c[4]={'H','S','D','C'};
/*2つのループで動かす*/
int i,j;
for(i=0;i<4;i++) /* 種類を変更 */
{
for(j=1;j<=13;j++)
{
pt->type = c[i];
pt->no = j;
pt->omote = 0;
pt->atari = 0;
pt++;
}
}
}
688684:2011/01/20(木) 09:48:08
void disp(CARD *pt)
{
int i;
system("CLS");
printf(" ");
for(i=1;i<=13;i++)
{
printf(" %2d ",i);
}
printf("\n");
/*1つのループで動かす*/
for(i=0;i<52;i++)
{
if(i%13==0) printf(" %2d ",i/13+1); /*行番号*/
if(pt->atari==1)
689デフォルトの名無しさん:2011/01/20(木) 10:15:32
>>684
えと >>1 にある
>【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
>http://codepad.org/ ←遅い時間は重い事があります
>http://ideone.com/

コードの記載はこのURLのどちらか使ってください。
URL開いてからの手順は1.コードを入れて 2.Cにチェック入れて 3.submitボタン押して
4.URLコピーして 5.そのURLをここに張り付けて。
690デフォルトの名無しさん:2011/01/20(木) 10:17:12
>>684
見守っていればいいということかな。
691デフォルトの名無しさん:2011/01/20(木) 10:20:57
>>689
ここのスレにレスできなくなってるなら
2ch内で”代行”と検索してレス代行をしてくれる人にお願いして。
レス代行スレには書き込めるはずなので。
692デフォルトの名無しさん:2011/01/20(木) 12:04:37
あのー・・
693デフォルトの名無しさん:2011/01/20(木) 15:30:10
>>692
なんだよ。消えろよクズ。
694デフォルトの名無しさん:2011/01/20(木) 21:04:08
[1] 授業単元: プログラミング自由課題
[2] 問題文(含コード&リンク): ファイルの出力のソート化
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: VC2008
 [3.3] 言語: C
[4] 期限: 22日
[5] その他の制限: やさしいCがやっと読み終える程度の到達度です。

ファイルの入出力で、ファイルオープンした後に昇順のソートがしたいのですがよくわかりません。
スケジュール管理表のような感じのプログラムを作りたいので、配列を日程と内容の2つに分けました。
「日程」はint型の配列を使用し、1月20日ならば0120のように入力します。「内容」の配列はchar型を使用しました。
txtは「0120(日程) 2ch書き込み(内容)」のようにし、ここからファイルをオープン後txtに入力してある
データを日程の昇順でソートし、出力したいのですがよくわかりません・・・。
ファイルをオープンした後に日程の配列を読み込み、それをソート後、日程と内容の配列を関連づければいいのでしょうか?
695デフォルトの名無しさん:2011/01/20(木) 21:15:13
>>694
日程と内容を二つの配列にするのではなく、日程と内容を持った構造体の配列にすれば qsort() でソートして出力すれば良い
696デフォルトの名無しさん:2011/01/20(木) 21:26:57
#include <stdio.h>

int main(void)
{
  system("sort txt > tmp");
  system("mv tmp txt");
  return 0;
}
697デフォルトの名無しさん:2011/01/20(木) 21:37:06
698デフォルトの名無しさん:2011/01/20(木) 23:14:00
>>697
内容に空白が含まれてるとマズい事にならんか?
699 ◆QZaw55cn4c :2011/01/21(金) 02:54:50
700デフォルトの名無しさん:2011/01/21(金) 02:56:26
>>699
死ね
701デフォルトの名無しさん:2011/01/21(金) 06:09:26
>>699
量産型メモリーリーク
702696:2011/01/21(金) 09:17:00
俺様の勝ち
703デフォルトの名無しさん:2011/01/21(金) 09:38:02
[1] 授業単元:プログラミング演習 2
[2] 問題文(含コード&リンク)
[3] 環境
@キーボードから学生番号と氏名の組をn個読み込み、ファイルに書き込む関数を作れ。ただし、nの値とファイル名は引数として取得するものとする。
A引数で取得したファイル名のファイルから同じく引数で取得した個数の学生番号と氏名のデータを構造体変数に格納し、学生番号順に表示する関数を作れ。
B以上で作成した関数を使用し、プログラムを完成せよ。ただし、nの値と使用するファイルの名前はプログラムの引数として与えられるものとする。
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:1月22日
[5] その他の制限: なし
よろしくお願いします。
704 ◆IGEMrmvKLI :2011/01/21(金) 09:53:19
#include <stdio.h>
int read_from_kb_to_file(char *, int );
int sort_from_file_to_ds(char *, int );
int main(int argc, char *argv[]){
  num = atoi(argv[1]), filenm = argv[2];
  read_from_kb_to_file(filenm, num);
  sort_from_file_to_ds(filenm, num);
}
705デフォルトの名無しさん:2011/01/21(金) 10:32:29
>>587
レスから三日も経過した後ですが、ありがとうございました。

2年後くらいには質問者から回答者になれるくらいに頑張ります。
706デフォルトの名無しさん:2011/01/21(金) 12:29:20
ファイルの入出力ど忘れした
707デフォルトの名無しさん:2011/01/21(金) 12:34:01
キーボードから読み取り、かつ引数として取得ってどういう状態なんだろ
708デフォルトの名無しさん:2011/01/21(金) 13:01:48
>>707
n と ファイル名はコマンドラインで 番号氏名はキーボードからって書いてあるようにしか読めんが
709デフォルトの名無しさん:2011/01/21(金) 13:01:50
 ̄ ̄|                        ┌‐┐
__|_                    _l__|_ ┌‐┐
 ^ω^)     /⌒ヽ \  /       (^ω^) _l__|_
7 ⌒い    _( ^ω^)   X.   /⌒ヽ /   ヽ (^ω^)
    | l   /フ ̄⌒ヽ n/  \ (^ω^ )_    l  /   ヽ
 \ \ (/l、__\__ソ     (^Vヽ  ̄ 、 \    l    |
   \ /っ / ,(_\       ー' 人 ̄ )(つ
    │/_/  /__ノ        〈__r‐\ \
___)─'   └--'       └-┘  (フ
│ | │
┤ ト-ヘ
710 ◆IluCWboVho :2011/01/21(金) 13:29:20
[1] プログラミング実習(ゲーム科課題)
[2] http://www.dotup.org/uploda/www.dotup.org1373468.txt.html
[3] 環境
 [3.1] Windows
 [3.2] VC2008
 [3.3] C、C++どちらでも可
[4] 期限:2011年1月25日
[5] その他の制限:一切なし

近似値を見つけ出し出力をする、という方法が全く分かりませんでした。
こんなこと可能なのでしょうか・・・?
お手数おかけしますがどなたか宜しくお願いします。
711 ◆IluCWboVho :2011/01/21(金) 13:30:04
すみません!問題文のpassは「kadai」です
忘れて申し訳ございませんでした
712デフォルトの名無しさん:2011/01/21(金) 13:44:49
>>711
r = sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2))
713デフォルトの名無しさん:2011/01/21(金) 14:16:33
>710
PPをくれよ

n個の3次元ベクトルからなる集合Xが存在し、ベクトルNを規定ベクトルと定義する
集合X内の任意のベクトルVを選んでベクトルNから引きそのベクトルを新たにベクトルNとすることをl回繰り返す
その後、ベクトルNにもっとも近い(ユークリッドノルムでいいだろう)ベクトルを集合Xから見つける

X = {x_i in R^3 | i = 1, 2, 3, ..., n}
N = [n1, n2, n3]^T
for i in {1, 2, 3, ..., l}
  j = rand(|X|)
  V = x_j in X
  N = N - V
search_nearest_neighbor(N, X)
こんな理解で大丈夫だろうか
最近傍探索はいろいろやりかたあるからここでは触れない
714 ◆IluCWboVho :2011/01/21(金) 14:29:41
学校のロゴが入ってるので今から編集してきます。

>>713さんのおっしゃる内容が今の私には理解できないのですがとりあえず感覚としては
N[x=1000 y=1500 z=2000]というおおもとのものがあり
選択肢としてA[x=100 y=200 z=300]やB[x=50 y=60 z=70] C[x=10,y=20,z=30]などがあり
1回目にAを選択するとNがN[x=900 y=1300 z=1700]となり2回目にCを選択するとN[x=890 y=1280 z=1670]となり、
この時点で終了させるとNの中身のx,y,zの値がもっとも近いAなのでAと出力されれば成功、という事です。
別にNやABCの中身は3つでなくても1個でなければ何個でも構わないそうです。
Nが仮りにN[x=100 y=20 z=70]となった場合出力するのはAとCあるいは、それぞれより近い値を探しBと表示するかという感じでしょうか
715 ◆IluCWboVho :2011/01/21(金) 15:02:35
遅くなりました、PPTです
ttp://www.dotup.org/uploda/www.dotup.org1373555.ppt.html
pass:kadai

OpenOfficeしかもっていないので見れるかどうか確実ではありません、申し訳ないです
716 ◆IluCWboVho :2011/01/21(金) 15:21:38
本当にすみません、最後に先生の苗字と激励の言葉が入ってたので
あわてて差し替えさせてもらいました
ttp://www.dotup.org/uploda/www.dotup.org1373586.ppt.html
pass:kadai
です
717デフォルトの名無しさん:2011/01/21(金) 15:50:34
マツコ・デラックスと細木数子の違いが分からん。
718デフォルトの名無しさん:2011/01/21(金) 19:54:41
Matz子は♂
719デフォルトの名無しさん:2011/01/21(金) 20:03:55
ひさしぶりにC言語も使おうかな
最近Pythonばかり使っているからなぁ

>716
(1)データの読み込む
(2)辞書を作成
(3)ユーザからの入力を辞書から引く
(4)新たなNを計算
(5)Nが入力されるまで(3)と(4)を繰り返す
(6)辞書(リストでもツリーでもいい)からもっともNに近いものを見つけて出力

面倒なので、結局Pythonでやりました
720デフォルトの名無しさん:2011/01/21(金) 20:22:03
>>719
C++可だからmapが使えるし
2008だからtr1でshared_ptrが使えるので
さほど変わらんような。
721デフォルトの名無しさん:2011/01/21(金) 21:44:44
Pythonとはまた外国かぶれな売国人が
722 ◆QZaw55cn4c :2011/01/21(金) 21:59:52
>>701
malloc(), realloc(), free() のラッパを二重に重ねてチェックしましたが、メモリリークの兆候は見つけることはできませんでした。
もしメモリリークを検出するソフトをお使いでメモリリークを発見されたのなら、お手数ですが、以下のコードでもう一度チェックしていただけないでしょうか。
http://codepad.org/Gf8KBG6y
リークしているメモリの先頭4バイトの内容をお知らせいただければ幸いです。

>>694
しばしお待ちを。
723デフォルトの名無しさん:2011/01/21(金) 22:25:15
どなたかお願いします。
#include <glut.h>だと画像が表示されず、エラーが出ますが、
#include <GL/glut.h>だと画像が表示されます。
どうしてでしょうか?教えてください。
724デフォルトの名無しさん:2011/01/21(金) 22:28:26
>723
パスが通っていない
環境による
Windows使っているのなら僕は解答できない
725デフォルトの名無しさん:2011/01/21(金) 22:32:00
>>723
ビルドが通り実行時に不具合が出るという事なら
glut.hとGL/glut.hをタグジャンプなどで開き比較してみてはいかがでしょうか?
おそらくリンクされるライブラリが異なるぐらいの事だろうけど。
726デフォルトの名無しさん:2011/01/21(金) 23:03:42
>>722
heap管理の関数を下請けに使ってるから、メモリリークっぽい動きになってるだけでしょ
一度に自前で処理するメモリを確保して、その中だけで動くようにしてみたら
727デフォルトの名無しさん:2011/01/21(金) 23:05:22
>>722
ゴメン、見直したら anaryze() で mygetline() で確保してる領域を開放してるんだな
>>701 は撤回するけど、良くない作りだな
728デフォルトの名無しさん:2011/01/21(金) 23:14:06
[1] 授業単元:応用アルゴリズム論
[2] 問題文(含コード&リンク):http://codepad.org/KKYds7DX
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: Cでお願いします
[4] 期限: 1月いっぱい
[5] その他の制限: 問題文中にある課題4というのは成分のわかってる行列の内積をもとめるものでした
  ので面倒でしたらその部分は省いていただいても結構です
729デフォルトの名無しさん:2011/01/21(金) 23:15:05
北朝鮮では成分が悪いと二等市民扱いなんだってさ…
730デフォルトの名無しさん:2011/01/21(金) 23:16:41
>>728
matrix01.dataはどこにあるの?
それと課題4のソースはないの?

っていうかその部分を省いたらファイルの読み込みしかやることがないんだけど。
731デフォルトの名無しさん:2011/01/21(金) 23:29:06
>>730
同サイズの行列2つを読み込む様に書いてるから加算結果でも出力するんじゃね?
732 ◆QZaw55cn4c :2011/01/21(金) 23:36:10
>>727
「malloc() したところで free() する」という作法があることは理解しています。win32api の一部の関数は、厳格にこれを守っています。
しかし、この作法に従うと「内側で malloc() した領域を返す関数」も避けたほうがいい、これは個人的にはなかなかしんどいと感じています。

メモリリークを検出する手段を手持ちにしているので、コーディングのなかでチェックを並行しつつ、階層を横断していても適宜 malloc(), free() を使うスタイルを私はとっています。
733デフォルトの名無しさん:2011/01/21(金) 23:57:30
>>732
内部で領域を確保する関数を作るなら、確保した領域を開放する関数もセットで作れば良いだけの話じゃないの?
当然、それらは同じ関数内からコールする、業務コードでは常識だよ

逆に困ってしまうのは anaryze と addlist の場合だね
anaryze で確保した領域を addlist 内でそのまま使っているからメモリ管理の責任所在が不明確になる
俺なら addlist 内で anaryze も行うかなぁ
そうすれば addlist 内で text の領域を確保して dellist 内で text の領域を開放する様な構造にできるだろう

厳格な作法に拘らないならば >>699 は冗長だ
myGetOneData( File*, int* char** ) みたいな関数を作れば malloc(), free() を一セット減らせるからね
734 ◆QZaw55cn4c :2011/01/22(土) 00:21:15
>>733
>内部で領域を確保する関数を作るなら、確保した領域を開放する関数もセットで作れば良いだけの話じゃないの?
次の機会にそれで書いてみます。

>analyzeで確保した領域をaddlist内でそのまま使っているからメモリ管理の責任所在が不明確になる
malloc() が返すポインタが複数の関数やデータ構造を渡り歩く、というイメージで作りましたが、これも規模が大きくなると壁が待ち構えているのかもしれません。私はまだその域まで到達していませんが。

>myGetOneData(FILE*,int*,char**)みたいな関数を作れば
なるほど。
735Rie:2011/01/22(土) 01:18:13
[1] ウィンドウプログラミング
[2]最後にまとめて記載します
[3] 環境
 [3.1] Windows
 [3.2] VC2005
 [3.3] C#
[4] 期限:2011年1月24日
[5] その他の制限:一切なし

private void Form1_Paint_1(object sender, PaintEventArgs e)
{ DrawCircle(e.Graphics, 100, 100, 100, 7); }

private void DrawCircle(Graphics g, double x,double y, int radius, int num)
{ Random rnd = new Random();
int value = 126 * num / 6;
SolidBrush opaqueBrush = new SolidBrush(Color.FromArgb(value, 0, 0, 153));
g.FillEllipse(opaqueBrush, (int)x, (int)y, radius * 2, radius * 2);
if (num > 1)
{  int branches = rnd.Next(2, 6);
for (int j = 0; j < branches; j++)
{ double a = rnd.NextDouble() * 2.0 * Math.PI;
double newx = x + Math.Cos(a) * 6.0 * (num - 1);
double newy = y + Math.Sin(a) * 6.0 * (num - 1);
DrawCircle(g, newx, newy, radius / 2, (num - 1));
}}}}}

736Rie:2011/01/22(土) 01:19:05
>>735 続きです
上記のプログラムを実行すると円が大量に描かれるものの、ウィンドウサイズ変更していると、円が不自然な形になってしまう。
それを以下の段階を踏んで修正。

@-1 プログラムから描写に必要な情報を考えて、円に対応するクラスMyCircleを作成せよ。
このクラスには適切なメンバ変数とコンストラクタを設定すること。

@-2 プログラムの中のDrawCircleをよく読み、MyCircle型のコレクションクラスに
円に格納する関数を作成せよ。このメソッドはフォームのコンストラクタから呼び出しておくこと。
(System.Collection.Generic名前空間にあるListクラスを使用)
*使用例
List<MyCircle> a = new List a<MyCircle>
a.Add(new MyCircle)(/*コンストラクタ引数*/));
a.Add(new MyCircle)(/*コンストラクタ引数*/));
MyCircle x = a[10];

@-3 プログラムの中のDrawCircleをよく読み、MyCircleクラスにグラフィックオブジェクトを引数にとって描写を行うメソッドDrawを追加。
また、Drawメソッドを呼び出してすべての円が描写できるようDrawCircleを書き直しなさい。

A 完成した@を改造し、三角形を描写できるようにする。

必要なのは@-3の終了段階で完成するプログラムと、Aのプログラムになります。
737デフォルトの名無しさん:2011/01/22(土) 01:22:57
>>735
> [3.2] VC2005
> [3.3] C#
738デフォルトの名無しさん:2011/01/22(土) 01:31:59
>>735
ふらっとC#,C♯,C#(初心者用) Part68
http://hibari.2ch.net/test/read.cgi/tech/1294921393/

C#, C♯, C#相談室 Part64
http://hibari.2ch.net/test/read.cgi/tech/1294734221/

C#,C#の宿題片付けます。
http://hibari.2ch.net/test/read.cgi/tech/1197620454/
739デフォルトの名無しさん:2011/01/22(土) 01:38:01
>>737
つcsc
740デフォルトの名無しさん:2011/01/22(土) 02:22:40
>>735
     /  /   /   / / /   | | !    |    |   !、      r┐ r┐ヾ>
    /  /   //  ./ / /   | | ヽ   |   |     i.      || lニ コ
   |   .|  / !  /   ! i.     |.|   `、  |!    |     |      | レ! _| |.
    |   |  / | /  //     i|   ヽ.  |ヽ   |    .|      ヽ/(___メ>
   .|   |  へ,L/   .|.!      !   丶/"i  |.     |        ,、
   |    | /   V`ヽ__ !        _/"ヽi ヽ.|    |        ((
   |    レ   ,-",,=o,~`        '",o~,`ヽヽ `|   .|         ))
   .|    |  / /::::::::::::i        i::::::::::`i ヽ |     |        ((
   .|    |、.'  ヽrー-ノ        ヽrー-ノ   ! |   |         ))
    |    | }      ̄           ̄    |   .|           ((
   |   ト|:::::::::::::::        '    __  ::::::::::::::/|   |             ))
    .|  : |:::i ::::::::::: ,. -ー ,,_,,- '" V`ヽ.::::::::::!1  .|   _      ((
    |  ::: |_;>、  /             }   ,<;_i .:. |    ヽヽ    `
  ,.-"i.:.::::. |  >,.,ヽ            ノ,..=i|  |.::::::∧    ).)   / 7
,.="/ .:::i::::::::..| //  i:i`- 、__   __ ,,. - T:|  || .i.:::::::!、 ヽ,,,,,,.ノノ ┌‐' 'ー┐ト、
/ ..::/"|:::::i::::i .|:|  |:{          }:|   .|:|.i::::i::| `, ヽ`''''"   7 /_7 / 」__〉
  .::/   |:::::i::::||:|   !:!          !:!   |:/:::/:|  ヽ. ヽ.    〈_/ヽ_/
741デフォルトの名無しさん:2011/01/22(土) 05:29:36
誰、このかわいい子?
742デフォルトの名無しさん:2011/01/22(土) 06:46:16
珍珍
743デフォルトの名無しさん:2011/01/22(土) 11:05:44
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):ランダムなキー(整数)列を生成して赤黒木
              を構成した後、キーを昇順に書き出すプログラムを作れ。
              必要なら以下のノードを使用せよ
struct node{
int key;
int info;
int red;
struct node *left;
struct node *right;
};
 
[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C/C++/どちらでも可
[4] 期限: 1月26日
[5] その他の制限: mainの部分もお願いします。

744デフォルトの名無しさん:2011/01/22(土) 11:59:14
もうかなり問題たまってるな
745デフォルトの名無しさん:2011/01/22(土) 12:05:42
さっさとやれよプログラム製造機
746デフォルトの名無しさん:2011/01/22(土) 12:08:10
たまってる問題をリストアップしてくれ
747デフォルトの名無しさん:2011/01/22(土) 13:12:06
問題1:就職
問題2:脱童貞
問題3:今夜の食費
748デフォルトの名無しさん:2011/01/22(土) 13:23:45
解決1:北朝鮮にいけ
解決2:ソープいけ
解決3:掘られろ
749デフォルトの名無しさん:2011/01/22(土) 16:08:29
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):@自由に文字列を定義して、その文字列のn番目の文字を表示するプログラムを作れ。
               A自由に文字列を定義して、n番目以降の文字をすべて表示するプログラムを作れ。
               B自由に文字列を定義して、n番目からo番目(n<=o)の文字を表示するプログラムを作れ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:1月24日まで
よろしくお願いします。

750 ◆QZaw55cn4c :2011/01/22(土) 16:44:42
751デフォルトの名無しさん:2011/01/22(土) 16:56:24
>>724-725
ありがとうございました
752デフォルトの名無しさん:2011/01/22(土) 17:53:43
>>749
#include <stdio.h>
int main(void){
char str[100];
int num1,num2;
int i, j;

printf("文字列 :");
scanf("%s", str);
printf("何番目 :");
scanf("%d", &num1);
printf("何番目まで :");
scanf("%d", &num2);

printf("%d番目の文字は%c\n",num1, str[num1-1]);

i=num1-1;
printf("%d番目以降の文字列は",num1);
while(str[i]!='\0') {
printf("%c", str[i]);
i++;
}
printf("\n%d番目から%d番目までの文字列は",num1,num2);
for(i=num1;i<=num2;i++) printf("%c", str[i-1]);
printf("\n");

return 0;
}
753728:2011/01/22(土) 21:40:35
>>728です。
matrix01.dataと、課題4の問題を入れたものをあげました。
http://hahu.sakura.ne.jp/up/uppiro/source/up1689.zip

課題4を自分で作ったのが
http://codepad.org/2R5eFJxH
になるので、まだやってやろうという方がいらっしゃったらお願いします
754デフォルトの名無しさん:2011/01/22(土) 22:11:47
未解決なのは
>>710
>>728
>>743
かな?
755 ◆QZaw55cn4c :2011/01/22(土) 22:25:01
756デフォルトの名無しさん:2011/01/22(土) 22:52:55
じゃあ残りは
>>710
>>743
757デフォルトの名無しさん:2011/01/23(日) 03:14:42
>>710 は怪しいからリンク開きたくないな
codepadあたりに貼ってくれないか
758デフォルトの名無しさん:2011/01/23(日) 03:42:41
はぁ?
759デフォルトの名無しさん:2011/01/23(日) 04:47:19
ただのアップローダだぞ?
760デフォルトの名無しさん:2011/01/23(日) 05:01:33
課題内容の確認だが

A「x=100,y=200,z=300」B「x=50,y=60,z=70」C「x=10,y=20,z=30」・・・・N「x=1000,y=1500,z=2000」
というデータがtext文に書かれていて、

要素名入力:A (ただしNが入力されたらプログラム終了)
内部動作:N=N−A
結果:1回繰り返したら(x=900 y=1300 z=1700となるから)近似値は Aとなる。
    10回繰り返したら(x=0 y=-500 z=-1000となるから)近似値は Cとなる。


ということか?
761760:2011/01/23(日) 05:09:27
やろうと思ったが寝る。
ちなみにこの課題はDOS窓でいいのか?
762デフォルトの名無しさん:2011/01/23(日) 05:32:09
おやすみなさい
763 ◆IluCWboVho :2011/01/23(日) 08:06:15
>>760
はい、そのとおりです。
DOS窓で構いません、API等は自力で何とかしようと思います。
764デフォルトの名無しさん:2011/01/23(日) 11:57:31
しゃあねぇなー…
765デフォルトの名無しさん:2011/01/23(日) 12:02:18
>>759
拡張子がなんだろうがHTML+javascriptのテキストだったら
実行されてウイルス感染するの知らないのか
766デフォルトの名無しさん:2011/01/23(日) 12:40:47
アップデート一切適用してないIE6以前ならそうなるかもね
767デフォルトの名無しさん:2011/01/23(日) 13:02:49
1] 授業単元:確率
[2] 問題文(含コード&リンク): http://www.dotup.org/uploda/www.dotup.org1377581.txt.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月25日
[5] その他の制限: 確率統計のプログラム問題です。よろしくお願いします。

768749:2011/01/23(日) 13:21:08
>>752
ありがとうございます。
769694:2011/01/23(日) 14:21:24
>>695-698
ありがとうございました!
770デフォルトの名無しさん:2011/01/23(日) 16:34:52
dotうpろだは1日で問題消えるからなあ
771デフォルトの名無しさん:2011/01/23(日) 16:54:55
1] 授業単元:確率
[2] 問題文(含コード&リンク):http://www1.axfc.net/uploader/File/so/57456.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月25日
[5] その他の制限: >>767と同じ問題です。dotうぷろだが一日で消えるので別途upしました
772デフォルトの名無しさん:2011/01/23(日) 18:44:03
あじすあべば
773デフォルトの名無しさん:2011/01/23(日) 19:02:44
>>755
ありがとうございました!
774デフォルトの名無しさん:2011/01/23(日) 20:15:26
>>710
まだ誰もやってないようだから晩飯食べたらやる。でも2時間かかる。
なんせ私も初心者の域を出てないからな。
ちなみにテキストデータの形式はCSVでいいのか?

A, 100, 200, 300
B, 50, 60, 80
C, 90, 30, 70
 :
 :
N, 20, 30, 40

こんな感じ? これを前提にやる。問題あればいってくり。
775 ◆IluCWboVho :2011/01/23(日) 20:50:39
>>774
CSVで構いません
問題がアップローダーから消えてしまいましたが、
>>760さんの解釈で間違いないです。

宜しくお願いします。
776デフォルトの名無しさん:2011/01/23(日) 22:41:58
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): データx(n)とy(n)の相互相関関数R
R(k)=1/N*Σ(n=0),(N-1-k) x(n)y(n+k)
を求めるプログラムを作成せよ。

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: どちらでも可
[4] 期限: 2011年1月24日9:00まで
[5] その他の制限: 特に無し

締切りまであまり時間が無いですが宜しくお願いします。



777774:2011/01/23(日) 23:19:09
>>710 >>775
まだ途中。
・構造体にしてない。これは本当に自分でも凹んでま。
・変数名がみずらい。すまそ。
N=N-要素名
まではできています。

残りは N=N-要素名 から近似値のデータを探す部分だけ。
ちょっと萎えてきた。
http://ideone.com/gsvL5
778デフォルトの名無しさん:2011/01/23(日) 23:26:43
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
n本の棒がある。棒i(3<n<100)の長さはa_i(1<a_i<10^4)である。
あなたは、それらの棒から3本を選び、「できるだけ周長の長い三角形」と「できるだけ周長の短い三角形」
を作ろうと考えている。それぞれ最大・最短の周長と選択した棒の組を求めるプログラムを作成せよ。
ただし、どのような棒の組を選んでも三角形が作れない場合、0を答えとして返せ。
プログラムの要件として、以下の事項を定める。
・引数として棒の長さデータが収められたファイル名のみが与えられるものとする。
・結果として、標準出力に、最大周長と棒の組み合わせ、最短周長と棒の組み合わせが出力されること。

% cat length.dat
2 3 4 5 10
% ./a.out length.dat
最大周長=12 (3 4 5)
最短周長=9 (2 3 4)

%cat length.dat
4 5 10 20
% ./a.out length.dat
0
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年1月26日まで

よろしくお願いします。
779デフォルトの名無しさん:2011/01/23(日) 23:29:16
問題たまってるから依頼止めろ。
780デフォルトの名無しさん:2011/01/24(月) 00:13:30
781デフォルトの名無しさん:2011/01/24(月) 00:14:57
>>776
問題文間違ってないか
x R(k)=1/N*Σ(n=0),(N-1-k) x(n)y(n+k)
○ R(k)=1/N*Σ(n=0),(N-1-k) x(n)y(n-k)

あと、プログラムの正当性分からないからチェックして出すようにしてね
782デフォルトの名無しさん:2011/01/24(月) 00:18:06
[1] 授業単元:プログラミング演習 2
[2] 問題文(含コード&リンク)
[3] 環境
キーボードから入力した整数を、2倍して表示するプ ログラムを作成しなさい。ただし以下の要件を満たすこと。
calcx2 関数の定義・・・ void calcx2(void) 
  引数ならびに戻り値はなし。
  入力値を 2 倍する
main 関数の定義
  キーボードから整数の入力
  calx2 関数の呼出し
   結果の表示
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:1月24日
[5] その他の制限: なし
よろしくお願いします。
783デフォルトの名無しさん:2011/01/24(月) 00:21:31
784777:2011/01/24(月) 00:48:10
>>710 >>775
今構造体に直してる最中明日午前中に終わらせます。
一応形にはなった。 ぜぇぜぇ。
785デフォルトの名無しさん:2011/01/24(月) 01:12:05
struct{
int x,y,z;
}player;
struct Mob{
char *name;
int x,y,z;
struct Mob *next;
};
struct Mob *Mobs;
struct Mob *top;
void Mob_insert(char *n,int x,int y,int z){
}
void Mob_clear(){
}
メンドクサイな
786デフォルトの名無しさん:2011/01/24(月) 01:28:43
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):

#define isnum(c) ('0' <= c && c <= '9')
#define isupc(c) ('A' <= c && c <= 'Z')
#define islwc(c) ('a' <= c && c <= 'z')

をインクルードし、数字か否かを判別するプログラムと
英大文字か英小文字を判別するプログラムの2つを1つのソースファイルとして作成せよ。
コンパイル時に数字用か英字用かを判別する条件付きコンパイルを組み込むこと。
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 1月24日7:00
[5] その他の制限: 特に無し

お願いいたします。
787デフォルトの名無しさん:2011/01/24(月) 01:49:04
788デフォルトの名無しさん:2011/01/24(月) 02:15:03
>>783>>787
ありがとうございます。
789777:2011/01/24(月) 03:47:26
>>710 >>775
やばい行き詰った。
近似値計算がうまくいかねぇです。
おっかしいなぁ。全然近い値をとってこない。
なんか焦ってきた。
だがいったん寝る。 orz

近似値計算が残ってる状態。
http://codepad.org/ErXmDY36
790777:2011/01/24(月) 04:14:32
>>710 >>775
あれ? いま気が付いたが>>714みると
要素名の入力を何回かしてN入力で終了という事かな。

てっきり要素名は1回入力してその要素名を何回引き算するか
かと思って進めてた。

手直ししなくちゃ。 でも寝る。 ZZZzzz。。。。
791デフォルトの名無しさん:2011/01/24(月) 05:07:32
>>710
問題が消えててよく判らんのだけど >>777 とのやり取りから推測してみた

ttp://codepad.org/0ODPvcev

こんなんで良いの?
792デフォルトの名無しさん:2011/01/24(月) 07:30:46
>>710
# [2] 入力した要素名からその要素がもっている数値を規定値Nより引き、最終的に予めテキストに
# 保存した要素の中よりNにもっとも近い(近似値)要素名を探しだし出力せよ
# 例:規定値Nには「x=1000,y=1500,z=2000」
# 要素名A「x=100,y=200,z=300」B「x=50,y=60,z=70」C「x=10,y=20,z=30」という内容を持ったデータを
# 予め作成し保存
# 入力するのはx,y,zの数値ではなくA、B、Cといった要素名
#
# 動作例:
# 要素名入力:A
# 内部動作
# N=N‐A
# (x=1000-100 y=1500-200 z=2000-300)
# (= x=900 y=1300 z=1700)
# これを任意の回数繰り返し、Nを入力すると終了する等にてループを抜け
# 最終的にNの中の値とA,B,Cより値よち最も近い要素名を出力する(複数可)
# 例えばNの中身がx=200 y=300 z=300となった時に終了すると「近似要素名出力:A」
# と出力されるようにせよ
#
# /*追加評価
# APIを利用し、UIを作る
# よりわかりやすいインターフェースにする
# 等、その他、鋭意工夫を期待しています
# (と書いてありましたが、そこまでは必要ないと思います。)
# パワーポイントに長々と書いてあったのを要約したのですが、それでも長くなってすみません*/
793デフォルトの名無しさん:2011/01/24(月) 07:46:18
794デフォルトの名無しさん:2011/01/24(月) 10:03:00
未解決
>>743
>>767 = >>771
>>782
>>786
進行中
>>710 = >>775
795デフォルトの名無しさん:2011/01/24(月) 10:14:53
>>782
#include <stdio.h>
int num;
void calcx2(void);
int main(void){
printf("整数:");
scanf("%d",&num);
calcx2();
printf("答え:%d",num);
return 0;
}
void calcx2(void){
num=num*2;
}
796777:2011/01/24(月) 10:24:54
>>791
おおいい感じ。 勉強になった b
797デフォルトの名無しさん:2011/01/24(月) 10:28:50
何様だよゴミ
798デフォルトの名無しさん:2011/01/24(月) 10:55:33
799デフォルトの名無しさん:2011/01/24(月) 12:33:00
>>767
平均と標準偏差は出したけど、問題のヒストグラムに関する記述が曖昧なのでそっちは書けない
ttp://codepad.org/svt2BVB1

[-5,5] を100分割と[2.5,5]を25分割で良いのか?
その場合、閾値は上下のどちらに含むのか?
800デフォルトの名無しさん:2011/01/24(月) 14:14:22
>>799すみません。問題文が若干文字化けしてました。
http://www.dotup.org/uploda/www.dotup.org1379712.png.htmlにもう一度上げなおします
閾値については指定がありません。
801デフォルトの名無しさん:2011/01/24(月) 16:35:16
進行中の>>710のは>>791で終わってる?
それともまだ>>777がんばってる?午後になったけど
802デフォルトの名無しさん:2011/01/24(月) 16:47:43
[1] 授業単元:C言語プログラミング入門p131章末問題(配列)

[2] 問題文:2×2の行列Aと要素2の列ベクトルBの
積を求めるプログラミングを作成せよ。
ただし、各ベクトルの要素はすべて整数とする。
この時積はmain関数以外の関数で計算するものとし,
計算結果をmain関数の中のprintf関数で表示すること。
main関数から積を計算するための
関数へは配列を引数として受け渡すようにする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
お願いします
803デフォルトの名無しさん:2011/01/24(月) 17:25:42
>>801
実行してみたところ>>710
>>791で終わってる。模様。
804デフォルトの名無しさん:2011/01/24(月) 19:35:29
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1380209.txt.html
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年01月25日10:00まで
[5] その他の制限:問題文に「細かい指定は無く、データ構造や関数は各自適切と考えるものを作成すればよい」
         とありますが、高度なものではなく、なるべく簡単な(基本的な)ものを作成して頂けたらと思います
         また、コメント文を付けて頂ければ有難いですが、こちらは面倒であれば構いません
         よろしくお願いします
805デフォルトの名無しさん:2011/01/24(月) 20:15:25
>>803
このスレ見て勉強してるのですが
これtextのファイル名とか中身どう書けばいいんですか?
806791:2011/01/24(月) 20:44:12
>>805
>>777 が確定した csv フォーマットだよ、ファイル名はプログラムに引数として渡すので任意
A,1,2,3
B,2,3,4
....
N,10,10,10
みたいな感じで制約条件として
・第1項目はA〜N、第2〜4項目は整数
・Nの行は必須
・最低でも2行は必要
807デフォルトの名無しさん:2011/01/24(月) 20:55:42
>>800
問題だと元となる一様乱数は [0,1) となってるけど、wiki を見ると
ttp://ja.wikipedia.org/wiki/%E4%B9%B1%E6%95%B0%E5%88%97
ボックスミューラー法の場合 (0,1] を元とする
12個の乱数を加算して6引くやり方の場合は [0,1] を元とする
と書かれてる、どっちが正しいんだろ?

問題は指定通り [0,1) で書き、ヒストグラムの閾値についても [min, max) で考えるね
808デフォルトの名無しさん:2011/01/24(月) 21:13:23
>>805
exeと同じディレクトリに任意のファイル名のテキストファイルを置いて
中に
A,1,2,3
B,2,3,4
....
N,10,10,10
と同じ記述形式で書くだけで自動的に認識して動くってことだ
見てないからわからんけど多分
809デフォルトの名無しさん:2011/01/24(月) 21:40:53
>>800
出力が200行以上なのでリダイレクトしてね

ttp://codepad.org/uVdSGCWr
810デフォルトの名無しさん:2011/01/24(月) 21:42:29
>>808
自動的には認識しないよw
c:>プログラム名 ファイル名
って使う、Usage を付けとけば良かったな
811 ◆IluCWboVho :2011/01/24(月) 21:49:18
>>710です
>>777さん、>>791さん大変ありがとうございました!
とても助かりました。
自分も精進したいと思います。
812デフォルトの名無しさん:2011/01/24(月) 21:51:44
>>809ありがとうございます。
ちなみにリダイレクトするはどの何行目の箇所でしょうか?
813デフォルトの名無しさん:2011/01/24(月) 22:02:35
>>812リダイレクトの意味を履き違えてました。リダイレクトしてファイルに出力する場合
コマンドはどんなふうに記述すればいいか教えていただけませんか?
814デフォルトの名無しさん:2011/01/24(月) 22:15:59
815デフォルトの名無しさん:2011/01/24(月) 22:29:31
>>812
コマンドライン上で
実行ファイル > 出力ファイル[enter]
816デフォルトの名無しさん:2011/01/24(月) 22:46:12
>>815 ありがとうございます。まだソースを見て勉強している最中なんですが
問題2のボックスミュラーのヒストグラム[-5,5] を100分割と[2.5,5]を25分割のそれぞれはこのソースで求められるのでしょうか?
817デフォルトの名無しさん:2011/01/24(月) 23:19:23
>>816
>>800 で提示された問題には25分割は含まれて無いよ
100分割の方は出力している
818デフォルトの名無しさん:2011/01/24(月) 23:58:26
>>817そうでした…本当にありがとうございました。
819デフォルトの名無しさん:2011/01/25(火) 00:12:43
[1] 授業単元:プログラミング演習 2
[2] 問題文(含コード&リンク)
[3] 環境
球の体積を計算するプログラムを作成しなさい。
<作成条件>
関数の定義は以下の順序で行うこと。(プロトタイプ宣言が必要となります)
main()関数
下記の関数を組み合わせて呼び出し、直径15のときの球の体積を求め、その値を表示してください。
ただし、main()関数内では、変数を一切使うことなく関数の呼び出しを行ってください。

体積の計算用として、下記の2つの関数を定義してください。
1. radius関数:直径を引数として受け取り、半径を返却値として返す
2. volume関数:半径を引数として受け取り、球の体積を返却値として返す
ただし、引数及び返却値の型は、すべて double 型とします。
<実行例>
体積 = 1766.25
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:1月25日
よろしくお願いします。
820デフォルトの名無しさん:2011/01/25(火) 00:23:44
>>819
>>648 で同じ問題が出てるし回答も直後に出てるよ
821デフォルトの名無しさん:2011/01/25(火) 01:28:27
>>814
ありがとうございます。
822デフォルトの名無しさん:2011/01/25(火) 06:30:36
未解決
>>743
>>804
かな。 
823デフォルトの名無しさん:2011/01/25(火) 15:31:16
[1] 授業単元:ネットワークプログラミング
[2] 問題文(含コード&リンク):
ネットワーク対戦型ゲームを実装せよ
宛先ホスト,ポート番号をコマンドライン引数として扱う.
serverとclientの1対1通信でOK
getaddrinfo()を使用すること
localhost内で動作すればOK
ゲームに関して
じゃんけん
○×ゲーム
などなど・・・
提出物
サーバ側,クライアント側のプログラム
[3] 環境
 [3.1] OS:Linux
 [3.2] よくわからないです(emacsっていうのとGNOME端末っていうのを使ってます)
 [3.3] 言語:C++
[4] 期限:2011年1月25日21:00まで
[5] その他の制限:特にありません。
client02.c,server02.c,getaddrinfo02.cという3つのプログラムが与えられていて、
client02.cとserver02.cの2つを書き加えて提出するように言われました。

ソースです
http://www.dotup.org/uploda/www.dotup.org1381588.txt.html

どうかよろしくお願いします。
824デフォルトの名無しさん:2011/01/25(火) 15:33:03
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
 http://www.dotup.org/uploda/www.dotup.org1381683.txt
[3] 環境
 [3.1] OS:windows 7
 [3.2] コンパイラ名とバージョン: vidual studio2008
 [3.3] 言語:C
[4] 期限:1/25
[5] その他の制限: 多重ループまで(Bは関数でもOK)
よろしくおねがいします
825デフォルトの名無しさん:2011/01/25(火) 18:48:14
>>823
これはさすがにめんどくさ過ぎる。
826デフォルトの名無しさん:2011/01/25(火) 19:29:12
>>825
簡単なヒントだけでもいただけないでしょうか。
最後の課題なので何としても形にして提出しないといけないんです。
827デフォルトの名無しさん:2011/01/25(火) 21:48:46

828デフォルトの名無しさん:2011/01/25(火) 21:49:49
[2] ./a.out 文字列1 文字列2 ・・・文字列N をソートせよ
[3]Ubuntu gcc
[4][2011年01月25日08:00まで]

#include<stdio.h>
#include<stdlib.h>

void straight_selection(char a[],int n)
{ int i,j,k,x;
for(i=0;i<n-1;i++){
for(x=i,x=a[i],j=i+1;j<n;j++){
if(a[j]<x){
k=j;x=a[j];}
}
a[k]=a[i];a[i]=x;}}

int main(int argc,char*argv[])
{ int i;
for(i=1;i<argc;i++){
printf("%s\n",argv[i]);}
printf("単純選択法によるソーティング結果\n");
straight_selection(*argv,(argc-1));
for( i=1;i<argc;i++) {
printf("%s\n",argv[i]);}
return(0);
}
どなたか、上のプログラムをどう修正すればいいか教えてください。
コンパイルは通るのですが、2つ以上の文字列を入れると「セグメンテーション違反です」と言われてしまうのです。
829デフォルトの名無しさん:2011/01/25(火) 21:56:05
argc は 実行時に渡したパラメータ数+1 (実行ファイル名そのものを含む)

staraignt_selection()
第2引数で要求しているのは 第1引数でわたした文字列の長さ

意図としては
staraignt_selection(argv[i], strlen(argv[i]));
じゃないか?
830デフォルトの名無しさん:2011/01/25(火) 22:07:38
>>829
ありがとうございます。

sort_8.c: In function ‘main’:
sort_8.c:17: warning: incompatible implicit declaration of built-in function ‘strlen’
/tmp/ccl3G9gQ.o: In function `main':
sortsample8.c:(.text+0xf9): undefined reference to `staraignt_selection'
collect2: ld returned 1 exit status

とコンパイラに言われてしまいました。
これってどういう意味なのでしょうか?
831828:2011/01/25(火) 22:09:10
>>829
すみません。こっちでした。

administrator@ubuntu:~$ gcc sortsample8.c
sortsample8.c: In function ‘main’:
sortsample8.c:17: warning: incompatible implicit declaration of built-in function ‘strlen’
/tmp/ccl3G9gQ.o: In function `main':
sortsample8.c:(.text+0xf9): undefined reference to `staraignt_selection'
collect2: ld returned 1 exit status
832デフォルトの名無しさん:2011/01/25(火) 22:13:53
#include <string.h>
または
size_t strlen(char cosnt*);
833デフォルトの名無しさん:2011/01/25(火) 22:18:40
>>828
よくよく見たら for の中に居ないのか <straight_selection
http://codepad.org/taLkNqDx
834828:2011/01/25(火) 22:24:23
>>833
ありがとうございます。
けど、なぜか「セグメンテーション違反です」と出てしまいます。
もしかして、OSなどの環境によっては違う結果になったりしますか?
835デフォルトの名無しさん:2011/01/25(火) 22:27:34
手元にあるチェックできる環境がcodepad しかないが… ちょっと待って
straight_selection そのものが怪しい気配
836828:2011/01/25(火) 22:31:18
>>835
夜分にすみません
837デフォルトの名無しさん:2011/01/25(火) 22:32:03
Vistaはマズイ
838828:2011/01/25(火) 22:43:06
>>837

そうですか。WindowsでもLinuxでもダメなら根本的な間違いですね。
間違っているところが分からない、いやなパタンになってしまいました。
ありがとうございました。充電してきます。m(_ _)m
839デフォルトの名無しさん:2011/01/25(火) 22:44:15
なんかぱっと見
a.out bacdって打ったら

abcdってソートされてる感じがするんだけど
a.out bac abc cdeって打ったら
abc bac cdeって結果が欲しいんじゃないの?
840デフォルトの名無しさん:2011/01/25(火) 22:44:51
単に argv[] の指してる先を書き変えるのはまずい ってだけっぽい

char* testdata[] = { "321", "6543" };
を渡すと codepad でもセグった

char testdata[][32] = { "321", "6543" };
を渡すと落ちなかった(が、正しくソートできてない)
841デフォルトの名無しさん:2011/01/25(火) 22:45:04
>828
straight_selection(char const**foo, size_t elems);
でstrcmp()だろ
842デフォルトの名無しさん:2011/01/25(火) 22:46:45
for (k=x=a[i],j=i+1;j<n;j++)

こう直せバカ
843デフォルトの名無しさん:2011/01/25(火) 23:00:17
void qsort(void *, size_t n, size_t, int (*)(void const*, void const*));
int puts(char const*);
int f(void const*p, void const*q) { return strcmp(*(char const**)p, *(char const**)q); }
int main(int c, char **v) { if ( c > 1 ) { int i; qsort(v+1, c-1, sizeof(char *), f); for ( i = 1; i < c; ++i ) { puts(v+i); } } else { puts("Usage : %s a [b c ...]"); } return 0; }

試してないのでうまくいくかわからん、後悔している
844デフォルトの名無しさん:2011/01/25(火) 23:10:38
>>843

qsort使っていいの?
845デフォルトの名無しさん:2011/01/25(火) 23:15:51
typedef unsigned size_t;
int strcmp(char const*, char const*);
void qsort(void *, size_t n, size_t, int (*)(void const*, void const*));
int puts(char const*);
int f(void const*p, void const*q) { return strcmp(*(char const**)p, *(char const**)q); }
int main(int c, char **v) { if ( c > 1 ) { int i; qsort(v+1, c-1, sizeof(char *), f); for ( i = 1; i < c; ++i ) { puts(*(v+i)); } } else { puts("Usage : %s a [b c ...]"); } return 0; }

こうだった、修行がたりない
846デフォルトの名無しさん:2011/01/25(火) 23:24:19
> char const*
const char*
の方がいいと思うよ。
847デフォルトの名無しさん:2011/01/25(火) 23:29:22
ポインタも変更させたくないとき
const char *const*にすんの
まぁ、好みの問題だね
848デフォルトの名無しさん:2011/01/25(火) 23:31:22
ないな。
849デフォルトの名無しさん:2011/01/25(火) 23:32:39
>>845

動作確認した。
ただ、>>828が「宿題」に役立てられるとは思えん。
850デフォルトの名無しさん:2011/01/25(火) 23:42:31
>>847
ワロタw
好み以前問題だな
851デフォルトの名無しさん:2011/01/25(火) 23:44:04
(void *)(void *)(void *)(void *)(void *)(void *)func(int *******a)
852デフォルトの名無しさん:2011/01/25(火) 23:46:12
>>847
> const char *const*にすんの
const char* constでしょ?

最近見ないけど
char const*と書くなら書くで
char const* constと書いて一貫性をもって欲しいところ
853デフォルトの名無しさん:2011/01/26(水) 00:34:25
>>823
ソース内の全角文字が化けて見えるのは chrome の俺だけ?
854デフォルトの名無しさん:2011/01/26(水) 00:57:22
>>853
すみません!もう一度ソースあげなおします!!
855デフォルトの名無しさん:2011/01/26(水) 01:08:02
856デフォルトの名無しさん:2011/01/26(水) 01:08:20
すみません。
>>823のものです。
文字化けしているところを直したソースです。
ただ、getaddrinfo02.cのところだけは直せてません。
何度も厚かましいですが、どうか助けてください!
よろしくお願いします!

http://www.dotup.org/uploda/www.dotup.org1382944.txt.html
857デフォルトの名無しさん:2011/01/26(水) 01:14:37
>>828
指摘としては >>841 の通り
ttp://codepad.org/mGuXm6B6
858デフォルトの名無しさん:2011/01/26(水) 01:23:59
>>855
ありがとうございます。
申し訳ないのですが、4-B(下)の課題は「各桁の数字を合計した数字が7もしくは2で割り切れるか」どうかなので、
貼ってくださったプログラムは少々違っているのですが……(厳密に言えば7と2の両方で割り切れる数字(=14etc)はないですし)
859デフォルトの名無しさん:2011/01/26(水) 01:42:40
>>858
ありゃ、間違えたか?
ごめ、今見てみる。
860デフォルトの名無しさん:2011/01/26(水) 01:48:26
>>856
手元に linux 環境が無いからビルド・動作確認はしてない
問題があったらレスしてくれ

ttp://codepad.org/HhDluliV
861デフォルトの名無しさん:2011/01/26(水) 01:48:44
>>858
問題の意味が分かった。なるほど。

例えば 7x6=42 4+2=6 2で割り切れるから* って事か。

急いでやるけどちょっとカップめん食べる。
862860:2011/01/26(水) 01:51:16
インデントがぐちゃぐちゃだったので張りなおし
ttp://codepad.org/Lsp0Yyza
863デフォルトの名無しさん:2011/01/26(水) 01:53:01
> 例えば 7x6=42 4+2=6 2で割り切れるから* って事か。
ひどいですね

気持ちはありがたいですが結構です
864デフォルトの名無しさん:2011/01/26(水) 02:14:32
>>858
http://codepad.org/juxVfsFP
手直しした。
865864:2011/01/26(水) 02:16:35
>>863
あれそういうことじゃないのか。
分かった。やめておく。 orz
866デフォルトの名無しさん:2011/01/26(水) 02:28:11
「各桁の数字を合計した数字」ってなんだ?
867デフォルトの名無しさん:2011/01/26(水) 02:28:12
>>860
本当にありがとうございます!!

えっと、2つお聞きしたいことがあります。
server02.cからclient02.cにコピペしなくてはならない部分は、
mainの前にコピペすればいいんでしょうか?
それと、localhostとport番号が//になっているのですが、
この部分を有効にしてプログラムを組むことはできないでしょうか?
課題ではlocalhost内で動作するようにとあったのと、
ポート番号を割り当てるようにとあったので、
なくしてしまったらまずい部分のように思うのですが、大丈夫でしょうか?
868デフォルトの名無しさん:2011/01/26(水) 02:28:32
>>863
あってるだろ?何が酷いんだ?
それより7でも2でも割り切れるって事は14しか無いんだけど九九の中にそんな数字は無いって所に誰か突っ込まないの?
869デフォルトの名無しさん:2011/01/26(水) 02:35:47
>>867
コピペ位置は main() の前でなければならない

localhost, port 番号はプログラムの引数として与えるって問題に書いてなかったかい?
c;\>client localhost 1000 みたいに起動すれば良いって話だ
まぁ server.c に関してはホスト名は "localhost" に決まってるから埋め込みでも良いけどインターフェイスを合わせる意味で...

usgae() 関連で誤りが有るので訂正する
static void usage( char* name )
{
    printf( "[Usage] %s hostname, port_no\n", name ); // name が抜けてた
    exit( 0 );
}

if( ac < 3 ) 
usage( av[0] );  // 引数が抜けてた

を直してね
870デフォルトの名無しさん:2011/01/26(水) 02:42:51
>>869
引数として与えるっていうのはそういうことだったんですね!
わかってないのに変な質問してすみませんでした。
ありがとうございます!

引数は、serverとclientのどちらにも入れるんですよね?
871デフォルトの名無しさん:2011/01/26(水) 02:49:13
>>870
YES
872デフォルトの名無しさん:2011/01/26(水) 02:59:34
>>871
ありがとうございます。

すみません。もうひとつだけいいでしょうか?
このプログラムは人対人のやり取りのプログラムであってますよね?
できたら、server側はランダムでclient側に手を返すようにしたいのですが、
お願いできますか?
873デフォルトの名無しさん:2011/01/26(水) 03:14:52
>>868
字面でしょ
他にもたくさん人がいるのに
全角英数を混在するレベルの人から教わりたくはないわな
874デフォルトの名無しさん:2011/01/26(水) 03:23:32
>>868
>(厳密に言えば7と2の両方で割り切れる数字(=14etc)はないですし)
875デフォルトの名無しさん:2011/01/26(水) 03:38:51
未解決
>>743
>>804
>>824 2問目
876デフォルトの名無しさん:2011/01/26(水) 03:46:04
>>872
それならこれで良いと思う
ttp://codepad.org/SGa8UZe0
サーバー側での判定は無用なので judgeJyanken() は不要だね

>>873
字面ってw

>>874
突っ込んでる人居たのか、失礼した
877デフォルトの名無しさん:2011/01/26(水) 03:59:06
>>863は質問者になりすましたただの煽りだろw
ずっと粘着してるキチガイなんだからスルーしとけよ
878デフォルトの名無しさん:2011/01/26(水) 04:15:14
>>876
ありがとうございます!
judgeJyanken()の部分を削除すれば後は大丈夫でしょうか?
879デフォルトの名無しさん:2011/01/26(水) 04:28:23
混在どころかム(マ)板で全角英数を使う事自体理解できん
プログラミング以前のPC初心者か
昔々IBMなんちゃら0F,0Eなんちゃららという
還暦近くのおじいちゃんぐらいだろ
880デフォルトの名無しさん:2011/01/26(水) 04:35:32
>>804
面倒なだけで簡単なコード
ttp://codepad.org/NWpXwKn1

>>878
念の為に確認するけど、最初に張ったのと >>876 が違うって事は理解してるよね
そもそも動かして確認してる?言っておくけど俺はコンパイルもしてないからね
881デフォルトの名無しさん:2011/01/26(水) 04:45:15
>>880
最初のと>>876が違うものだというのはわかります。
動かすのは明日朝イチで学校に行って確かめてみようと思ってます。
882デフォルトの名無しさん:2011/01/26(水) 05:05:19
>>875
>>824 の2問目は >>864 で良いんじゃないの?
883デフォルトの名無しさん:2011/01/26(水) 07:36:41
>>864
遅くなってしまいましたが、ありがとうございました。
884828:2011/01/26(水) 23:30:29
>>839-852
>>857

ありがとうございました
885デフォルトの名無しさん:2011/01/27(木) 00:43:50
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
構造体により一つの三角形を表現する。
Triangle構造体の構成要素は、三つの頂点のx座標、y座標をメンバとして持つ構造体Pointである。
このTriangle構造体を用いて、以下の使用に従う関数を作成し、任意の三角形の面積、その三角形を適切な2×2行列で線形変換した結果の三角形の座標とその面積、および任意の二つの三角形が合同であるかどうかを表示するプログラムを実装しなさい。
・一つのTriangle構造体の変数を引数とし、その構造体が表す三角形の面積を返す関数。
・一つのTriangle構造体の変数と、double型の二次元配列(2×2行列Aとする)を引数とし、引数で与えた三角形を行列Aによって線形変換した後の三角形を返す関数。
・二つのTriangle構造体の変数を引数とし、その構造体が合同であれば1を、合同でなければ0を返す関数。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年2月10日まで
[5] その他の制限:特にありません。よろしくお願いします。
886デフォルトの名無しさん:2011/01/27(木) 00:51:21
>>879
なんで全角使っちゃダメなのか教えて
俺も半角使うけど
887デフォルトの名無しさん:2011/01/27(木) 01:04:49
全角数字は結構便利だぞ
888デフォルトの名無しさん:2011/01/27(木) 01:11:35
全角半角って言い方、そろそろやめようぜ
889デフォルトの名無しさん:2011/01/27(木) 01:14:08
>>885
なんでこんなつまんねえ問題しかないの
中学生の数学の問題だろ
890デフォルトの名無しさん:2011/01/27(木) 01:52:03
[1] 授業単元:プログラミングB
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1384922.txt.html
[3] 環境
 [3.1] OS: Mac
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月27日
[5] その他の制限: 問題とエラーを提示いたしました。どうしたらエラーが消えるかわかりません。修正、どうぞよろしくお願いしますorz
891デフォルトの名無しさん:2011/01/27(木) 02:05:01
>>890
20-23行目の&演算子が不要なので削除
892デフォルトの名無しさん:2011/01/27(木) 02:47:55
【質問テンプレ】
[1] 授業単元:C言語初級講座
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org1384986.txt
[3] 環境
 [3.1] OS:WindowsXPsp3
 [3.2] コンパイラ名とバージョン: minGW
 [3.3] 言語:C言語
[4] 期限:2011/01/28 17:00
[5] その他の制限: 教科書本は「やさしいC」一通り終了
どうかよろしくお願いいたします。
ファイル保存の部分は「…,仕入総数,120」「…,在庫数,2,1,1,2…,在庫総数,xxx」
という具合に追加されたファイルになればよいです。
「年度」は「年」なのですが細かい表現は気にするなと機嫌損ねちゃいましたが
【表示結果】通りになればいいとのことでした。
893デフォルトの名無しさん:2011/01/27(木) 03:09:25
王ザッパーに言うと、JIS規格(JIS X 0208)ではもじもじ符号化方式の中で
ASCIIと0208を同時に使う場合で両方に含まれる文字があるときはASCIIの方の符号を、
0201カタカナと0208を同時に使う場合で両方に含まれる文字があるときは0208の方の符号を、
使うようにしてね☆って推奨されている。推奨されているだけなので従う義理はない。
894892:2011/01/27(木) 03:15:55
>>893
ファイルから漢字読み込みに難があるということでしょうか。
そうであれば明日先生に聞いてきますので>>892保留ということでお願いいたします。
改めてこちらにレスさせて頂きます。ありがとうございます。
895デフォルトの名無しさん:2011/01/27(木) 03:19:32
>>894
まぁまて。君の宿題に対するレスではないぞ。^^;
>>893>>886に対してだ。
896デフォルトの名無しさん:2011/01/27(木) 08:23:14
>>892
入力ファイルの3行目(月)は変化する可能性は有るの?
例えば
9,10,11,12,1,2,3,4,5,6,7,8 とか 4,5,6,7,8,9 とか、後者の場合は2,4,5行目も変化するけど
897デフォルトの名無しさん:2011/01/27(木) 12:00:48
>>587
これってできてますか?
898デフォルトの名無しさん:2011/01/27(木) 12:59:01
はいはい出来てる出来てる。

さっさとそれ出してこいや
899892:2011/01/27(木) 13:33:28
【質問テンプレ】
[1] 授業単元:C言語初級講座
[2] 問題文(含コード&リンク):
http://www.dotup.org/uploda/www.dotup.org1385472.txt
[3] 環境
 [3.1] OS:WindowsXPsp3
 [3.2] コンパイラ名とバージョン: minGW
 [3.3] 言語:C言語
[4] 期限:2011/01/28 17:00
[5] その他の制限: 教科書本は「やさしいC」一通り終了
>>892の訂正後の課題です。
改めまして、どうかよろしくお願い致します。
900デフォルトの名無しさん:2011/01/27(木) 13:38:26
>>899
PS. 課題内の表示結果「year」の数字は2010 2011で構いません。
901デフォルトの名無しさん:2011/01/27(木) 13:45:14
>>895 早とちりでしたか。すいません、でももう聞いちゃいました。
>>896 月は変化することありません。常に4〜3月までの表示になります。
ただ、ちゃんとファイルから読み込んで表示させることが求められています。
どうぞよろしくお願いいたします。
902デフォルトの名無しさん:2011/01/27(木) 13:50:35
>>900
>>892の時にかなり変な問題という印象だった。
普通この問題をだすとしたら、
【テキストファイル"a.txt"内容】は

order,ICE
year,2010,2011
month,4,5,6,7,8,9,10,11,12,1,2,3
in,3,3,13,22,30,15,11,5,5,3,5,5,in_sum,
out,1,2,12,20,30,15,8,4,2,3,3,2,out_sum,
ans,,,,,,,,,,,,,ans_sum,

とする。
903899:2011/01/27(木) 13:58:28
>>902
忘れてました。おっしゃることを別の人が先生に質問したのですが
1.「ans,ans_sum」は「ans,,,,,,,,,,,,,ans_sum」でもいいと言っておりました。
2.各行の最後にカンマ「,」はつけない
との返事でした。

すいません、その場で思いつきで問題を出す先生でして。
904デフォルトの名無しさん:2011/01/27(木) 14:41:25
>>892
いやもうなんつうかa.txtがレコードの体をなしていないし、
コマンド列とも読めないしで、単にa.txtを読んで整形すりゃイーノック?
って感じで作っちゃったのがあるんだけどどうしようかしらねw
(訂正前のバージョンだじぇ?^^)

http://codepad.org/OTjfDEBr
905899:2011/01/27(木) 15:27:45
>>904
ありがとうございました!
すごく助かりました。

このプログラムをもとに今後追加課題が出るようです。
その際また相談に乗っていただくことになるかもしれませんが
宜しくお願い致します。
本当にありがとうございました。
906デフォルトの名無しさん:2011/01/27(木) 21:56:24
>>904
喋り方が非常に残念だ
907デフォルトの名無しさん:2011/01/27(木) 22:16:50
リアルでいたらぶん殴られるな
908デフォルトの名無しさん:2011/01/27(木) 22:35:24
>>904
ソースコードも残念だぉ
909デフォルトの名無しさん:2011/01/28(金) 00:29:48
>>904
おお。卑猥ヒワイ
910デフォルトの名無しさん:2011/01/28(金) 00:37:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):"a,B,C,d,E"という文字列がある。文字列中の大文字を小文字に、
                小文字を大文字に変換させた文字列を表示するプログラムを作りなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限: 1月30日まで
よろしくお願いします。

911デフォルトの名無しさん:2011/01/28(金) 00:44:59
>>910
printf("A,b,c,D,e");
でOK
912デフォルトの名無しさん:2011/01/28(金) 00:51:34
#include <stdio.h>

int main(void)
{
  char str[] = "a,B,C,d,E";
  int i;
  for(i=0; str[i]!='\0'; i++){
    printf("%c", isupper(str[i]) ? tolower(str[i]) : islower(str[i]) ? toupper(str[i]) : str[i]);
  }
  return 0;
}
913デフォルトの名無しさん:2011/01/28(金) 01:08:22
#include <stdio.h>
int main(void){
char str[]="a,B,C,d,E";
int i;
printf("変換元の文字列:%s\n",str);

printf("変換後の文字列:");
for(i=0;str[i]!='\0';i++){
if(str[i]>='a' && str[i]<='z') {
printf("%c",'A'+str[i]-'a');
} else if(str[i]>='A' && str[i]<='Z') {
printf("%c",'a'+str[i]-'A');
} else {
printf("%c",str[i]);
}
}
printf("\n");

return 0;
}
914デフォルトの名無しさん:2011/01/28(金) 01:09:32
俺様の価値
915デフォルトの名無しさん:2011/01/28(金) 01:09:36
>>912
解答出ていたのか。すまん。 >>913スルーしてくさい。
916デフォルトの名無しさん:2011/01/28(金) 01:14:03
>>912はstring.hが足りないんじゃないか
まあ気づくか
917デフォルトの名無しさん:2011/01/28(金) 01:20:06
>>916
俺のgccでは無くても 動いた。
>>912
すげーシンプルだけどこの質問者のレベルを考えると
printf("%c", isupper(str[i]) ? tolower(str[i]) : islower(str[i]) ? toupper(str[i]) : str[i]);
はまだNGの段階じゃないかとおもた。
918デフォルトの名無しさん:2011/01/28(金) 01:25:20
むしろK&R風に

char str[] = "a,B,C,d,E", *c;
for( c = str; *c; ++c){
printf("%c", isupper(*c) ? tolower(*c) : islower(*c) ? toupper(*c) : *c);
}

と書いてさえよいくらい質問者は高レベルだよ
919デフォルトの名無しさん:2011/01/28(金) 01:26:08
まじかw
920デフォルトの名無しさん:2011/01/28(金) 01:28:07
ポインタこれからじゃないのか?
ポインタ、配列習ったばかりでこの課題が出ても不思議じゃないのは確かだけど。
921デフォルトの名無しさん:2011/01/28(金) 01:52:40
>>910
ちょっと考えてみた

int main() {
  char s[256] = "a,B,C,d,E";
  printf("%s", s);
  for (char *p = s; *p; p++) {
    *p = *p ^ (*p >> 1 & (*p & 31) + 37) & 32;
  }
  printf("%s", s);
}

全角スペース使ってるから気をつけてね
922デフォルトの名無しさん:2011/01/28(金) 01:58:36
>>921
美しさが感じられない
923デフォルトの名無しさん:2011/01/28(金) 02:06:15
でも速いしcmovの方がいいかもしれんが
あと短いのに分かりづらくて面白くないか?
924921:2011/01/28(金) 02:16:30
間違えた。アットマークがちゃんと変換されないはず
*p ^= *p >> 1 & (*p - 1 & 31) + 38 & 32;
が正しい
でもテーブルを使うのが一番速いか
925デフォルトの名無しさん:2011/01/28(金) 02:22:23
質問者がただ今混乱していると予想されるw
926デフォルトの名無しさん:2011/01/28(金) 03:16:10
特定の符号化文字集合を前提にしているからだめじゃよ…
Cの規約によれば数字の0から9が順に並んでいることは約束されているが
各文字のビット表現やA-zが順に並んでいることなどは規定されていない。
あと for (char *p = s; *p; p++) { は C90では非標準じゃなかったっけ?
927デフォルトの名無しさん:2011/01/28(金) 03:22:22
3-gramのマルコフ解析作ってくれ
928デフォルトの名無しさん:2011/01/28(金) 08:27:12
>>927
しね
929デフォルトの名無しさん:2011/01/28(金) 13:00:15
ヽ( ̄д ̄;)ノ=3=3=3
930デフォルトの名無しさん:2011/01/28(金) 14:23:10
コマンドプロンプト画面で遊べるゲーム作りたいけど
・テトリス
・マインスイーパ
・リバーシ(オセロね)
他に何かあったら言ってくり。
931デフォルトの名無しさん:2011/01/28(金) 14:35:25
>>930
ローグライクゲーム
932デフォルトの名無しさん:2011/01/28(金) 14:45:38
>>930
ファイア
933930:2011/01/28(金) 15:30:42
>>931
ずいぶん時間のかかりそうなものを…w

>>932
まさかゲームウォッチの…?
もぐらたたきとかもあったな。ふむふむ。
934デフォルトの名無しさん:2011/01/28(金) 15:39:19
>>930
けいおん!放課後ライブ!!
935デフォルトの名無しさん:2011/01/28(金) 17:00:19
下記のプログラム中の@〜Fには何が入るか?
#include <stdafx.h>
B sho(C) //関数sho の定義
{
return(Dm/n);
}
void irekae(int E,int F) //関数irekae の定義(2つの引数をp,q とする、型に注意!)
{
int k;
k=E;
E=F;
F=k;
}
int _tmain(int argc, _TCHAR* argv[]) //関数_tmain の定義
{
int i,j;
double x;
printf("整数i,j?:");
scanf("%d%d",&i,&j);
@; //整数i,j を引数として実数除算した商を返す関数sho を呼び出す。
printf("i/j=%f\n",x); //結果の確認
A; //整数i,j の値を入れ換える関数irekae を呼び出す。
@;
printf("i/j=%f\n",x);
}


おねがいします。。。
936デフォルトの名無しさん:2011/01/28(金) 17:07:32
誰か助けてください。。。。

下記のプログラム中の@〜Fには何が入るか?
#include <stdafx.h>
B sho(C) //関数sho の定義
{
return(Dm/n);
}
void irekae(int E,int F) //関数irekae の定義(2つの引数をp,q とする、型に注意!)
{
int k;
k=E;
E=F;
F=k;
}
int _tmain(int argc, _TCHAR* argv[]) //関数_tmain の定義
{
int i,j;
double x;
printf("整数i,j?:");
scanf("%d%d",&i,&j);
@; //整数i,j を引数として実数除算した商を返す関数sho を呼び出す。
printf("i/j=%f\n",x); //結果の確認
A; //整数i,j の値を入れ換える関数irekae を呼び出す。
@;
printf("i/j=%f\n",x);
}
937デフォルトの名無しさん:2011/01/28(金) 17:13:14
@x = sho(i, j);
Airekae(&i, &j);
Bdouble
Cint m, int n
D(double)
E*p
F*q
938デフォルトの名無しさん:2011/01/28(金) 17:16:23
#include <stdafx.h>
double sho(int m,int n) //関数sho の定義
{
return((double)m/n);
}
void irekae(int *p,int *q) //関数irekae の定義(2つの引数をp,q とする、型に注意!)
{
int k;
k=*p;
*p=*q;
*q=k;
}
int _tmain(int argc, _TCHAR* argv[]) //関数_tmain の定義
{
int i,j;
double x;
printf("整数i,j?:");
scanf("%d%d",&i,&j);
x=sho(i,j); //整数i,j を引数として実数除算した商を返す関数sho を呼び出す。
printf("i/j=%f\n",x); //結果の確認
irekae(&i,&j); //整数i,j の値を入れ換える関数irekae を呼び出す。
x=sho(i,j);;
printf("i/j=%f\n",x);
}
939デフォルトの名無しさん:2011/01/28(金) 18:08:51
>>936
特定した
940デフォルトの名無しさん:2011/01/28(金) 18:40:25
>>934
DOS窓だろ? 無理だろw
941デフォルトの名無しさん:2011/01/28(金) 19:15:54
>>940
AA
942デフォルトの名無しさん:2011/01/28(金) 19:22:13
昔DOS窓でエスケープシーケンス使ったアニメーションっていうのあったな(遠い目)
943デフォルトの名無しさん:2011/01/28(金) 19:36:04
なんかFM7とかPC8001の時代の話してる?
てかそのころのゲームやってみたい
944デフォルトの名無しさん:2011/01/28(金) 19:37:40
>>943
win95/98 くらいまでじゃね
945デフォルトの名無しさん:2011/01/28(金) 20:02:27
>>939
先生には黙っててな
946デフォルトの名無しさん:2011/01/28(金) 21:18:35
すいません。どなたか助けてください。

http://codepad.org/vKPvHAkyを出力するとデバッグエラーが出ます
ちゃんと、「test」テキストファイルをディレクトリに置きました。
947デフォルトの名無しさん:2011/01/28(金) 21:26:37
iが初期化されてない
たぶんnumの間違いかと
948デフォルトの名無しさん:2011/01/28(金) 22:19:39
>>946
>>947
data[i]がdata[num]
だと思うぜっ、て言ってます。
俺もそう思うし int i,num,… の i もいらないとおもう。
949デフォルトの名無しさん:2011/01/28(金) 22:44:46
コンパイラの警告はちゃんと見とく習慣をつけよう
950デフォルトの名無しさん:2011/01/29(土) 00:03:09
未使用の変数はIDEなら注意が出ると思うんだけどなー
951デフォルトの名無しさん:2011/01/29(土) 00:29:51
>>947-948
ありがとうございます。お陰で出力されました。
ただ、testテキストには、
10
20
30と保存してあるのに、実行しても
続行するには何かキーを押してください . . .としか出力されません。
これはどうしてでしょうか?教えてください。
952デフォルトの名無しさん:2011/01/29(土) 00:45:18
[1] 授業単元:Cプログラミング初級
[2] 問題文(含コード&リンク):
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1035220915
(バブルソートでやっていただけると助かります)

(資料)
http://www.geocities.jp/hagure874/kapu.html#1
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1337454033

[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限:2月2日

よろしくお願いします!

953デフォルトの名無しさん:2011/01/29(土) 00:48:55
>>951
出力する処理がないから
954デフォルトの名無しさん:2011/01/29(土) 01:12:00
#include<stdio.h>
#define MAX 100
int main(void)
{
FILE *fp;
int data[MAX];
int num,status;
fp = fopen("test.txt","r");
if(fp==NULL){
fprintf(stderr,"File Open Error\n");
return 1;
}
for(num=0;num<MAX;num++){
status=fscanf(fp,"%d",&data[num]);

if(status==EOF){
break;
} else {
printf("%d\n",data[num]);
}
}
fclose(fp);
return 0;
}

表示したいなら表示用に } else { printf("%d\n",data[num]); } を付け加えようぜ。
955デフォルトの名無しさん:2011/01/29(土) 01:57:27
>>953-954
ありがとうございます!
956デフォルトの名無しさん:2011/01/29(土) 02:04:13
[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):http://www.dotup.org/uploda/www.dotup.org1388859.txt.html
[3] 環境
[3.1] OS:Windows Vista
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限: 1月30日
[5] その他の制限: 特にありません。よろしくお願いします。
957デフォルトの名無しさん:2011/01/29(土) 03:54:21
慶応とか恐れ多くて回答出来ません><
958デフォルトの名無しさん:2011/01/29(土) 04:16:02
>>956
課題2
array[n] = rand()%101;を
array[n] = -rand()%101;に修正

printf("%d\n", array[n]);を
printf("%d\n", -array[n]);に修正
959デフォルトの名無しさん:2011/01/29(土) 05:20:56
>>956
課題1
#include<stdio.h>

int main(int argc, char *argv[]){
int x1,x2,x3,y1,y2,y3,z1,z2,z3;
sscanf(argv[1], "%7d%7d%6d", &x1, &x2, &x3);
sscanf(argv[2], "%7d%7d%6d", &y1, &y2, &y3);
z3 = x3 + y3;
if (z3 > 1000000) {
z2 = z3 / 1000000;
}
z2 += x2 + y2;
if (z2 > 10000000) {
z1 = z2 / 10000000;
}
z1 += x1 + y1;
printf("%d%07d%06d\n", z1, z2, z3);
return 0;
}
960デフォルトの名無しさん:2011/01/29(土) 07:35:40
[1] 授業単元:並列計算(MPI)
[2] 問題文(含コード&リンク):
行列行列積(AB=C)を考える。はじめに各プロセスは行列Aのブロック行と行列Bのブロック行を保持しているとする。ブロック行の行数は行列全体の行数/プロセス数である。
この時、行列Bをプロセス間で循環させ、計算結果であるCを更新させていくことにより行列積ABを計算せよ。行列は正方行列とし、1024×1024のサイズとする。プロセス数は行数の約数としてよく、値は0〜99までの乱数とする。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:本日(1/29)の20時30分まで
[5] その他の制限:なし
期限が近くてすみませんが、よろしくお願いします。
961デフォルトの名無しさん:2011/01/29(土) 08:51:16
プロセスってなに?
962デフォルトの名無しさん:2011/01/29(土) 09:21:12
>>961
並列計算やMPIはご存じでしょうか?
963デフォルトの名無しさん:2011/01/29(土) 11:52:01
要するに、MPIを使って行列計算やるってこと?
なら問題文にもそう加えないと分からないような
964デフォルトの名無しさん:2011/01/29(土) 12:40:30
>>960は情弱
965デフォルトの名無しさん:2011/01/29(土) 14:49:39
[1] 授業単元: cプログラム
[2] 問題文(含コード&リンク):100点満点の試験の得点データが学生の人数分ある。これを「不定個数のデータの読み込み」の
 どちらかの方法(最初にデータの個数を読み込むか、データの終わりを特別な値で知らせるか)
 で読み込み、10点刻みでの度数分布表を作成しなさい。
[3] 環境
 [3.1] OS: Mac OS X
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2月1日 13:00
[5] その他の制限: 10で割る整数型の割り算を用いる
 よろしくお願いします。
966デフォルトの名無しさん:2011/01/29(土) 16:03:23
>>963
授業単元に並列計算(MPI)と書いたのでそれで大丈夫だと思ってました。分かりにくくてすみません。
967デフォルトの名無しさん:2011/01/29(土) 16:05:08
968デフォルトの名無しさん:2011/01/29(土) 17:36:46
>>961,>>963-964
相手は宿題丸投げのゆとり君なんだよ
重要なことは言っていないと思わないと
ゆとり君には脳弱と言う超難病持ち多いんだからね
それを理解して対応してね
969デフォルトの名無しさん:2011/01/29(土) 17:43:41
ここで問題文を解読してもらうしかないな
http://hibari.2ch.net/test/read.cgi/tech/1187922645/l50
970デフォルトの名無しさん:2011/01/29(土) 17:50:15
[1] 授業単元: RBFネットワーク
[2] 問題文(含コード&リンク): カオス時系列において、、
動径基底関数(RBF)と呼ばれる局在化された関数を用い、
それぞれの関数に重みをつけて加え、その値を予測するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Mac OSX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2011年2月10日まで
[5] その他の制限:カオス時系列のデータは配列で用意するつもりなので、
配列のデータを入力として使うプログラムでお願いします。
971970:2011/01/29(土) 17:53:07
あらかじめカオス時系列のサンプルが数万点与えられているとし、
その後任意の点からの予測が可能であるプログラムでお願いします。
972デフォルトの名無しさん:2011/01/29(土) 18:37:52
973デフォルトの名無しさん:2011/01/29(土) 18:55:09
>>967
ありがとうございます、助かりました
974デフォルトの名無しさん:2011/01/29(土) 20:56:46
やはり>>970はネタ宿題だったのか・・・
975デフォルトの名無しさん:2011/01/29(土) 22:21:02
ネタに決まってんだろJK
976970:2011/01/29(土) 23:58:45
ネタじゃないです
977デフォルトの名無しさん:2011/01/30(日) 01:08:54
もうそのリンクを貼り付けて出しとけゴミ
978 ◆QZaw55cn4c :2011/01/30(日) 01:21:26
979970:2011/01/30(日) 01:33:49
>>977
リンクが無効ってなってます
980デフォルトの名無しさん:2011/01/30(日) 03:18:48
>>970
埋め込み次元と遅れ時間の推定も込みでの宿題?
だとしたらだいぶ面倒だな。
また、RBFを使う場合に分散の値はどうすればいいの?
実は970の問題を解くプログラムを作ったことがあるけど
流石にただでは教えられない。
981デフォルトの名無しさん:2011/01/30(日) 05:01:16
これだからMac使ってるやつは・・・
982デフォルトの名無しさん:2011/01/30(日) 06:51:55
>>979
リンク名をよく見た方が良いな。
983970:2011/01/30(日) 09:37:44
>>980
埋め込み次元は三次元でお願いします。
984デフォルトの名無しさん:2011/01/30(日) 11:50:50
[1] 授業単元:計算機プログラミング
[2] 問題文(含コード&リンク):以下のデータを配列に格納した後、小さい順に並べよ
                  データ:33,54,73,13,97,42,81,67,26,91
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: teraterm pro
 [3.3] 言語: C
[4] 期限: [2011年2月2日まで]
[5] その他の制限: x[0]とx[1]を比較してx[1]<x[0]なら入れ替え、という作業を繰り返す、という手法をとる

よろしくお願いします
            
985デフォルトの名無しさん:2011/01/30(日) 12:47:14
>>984

> [3.2] コンパイラ名とバージョン: teraterm pro

ちょっと良く分からない
986デフォルトの名無しさん:2011/01/30(日) 12:54:08
>>984
へー、最近のteratermにはコンパイル機能あるのな
コンパイル通るかわかんないけど
http://ideone.com/YfwEw
987デフォルトの名無しさん:2011/01/30(日) 13:17:32
>>986
感謝します
988フォルトの名無しさん:2011/01/30(日) 15:00:37
[1] 授業単元:プログラミング言語とコンパイラ
[2] 問題文(含コード&リンク):http://codepad.org/FD1Z6ZPV

・問題1
非終端記号TおよびFの解析ルーチンに付けるコメントを(Eに関するコメントを参考に)完成しなさい。
注意: printf(...)は、どの構文規則の適用されるか明示するためのものであるから、無視すること。
・問題2
このサンプルを拡張して1桁の数字からなる式の値を計算する簡単な電卓プログラムに改造しなさい。
・問題3
このサンプルを拡張して、代入文 <assign> ::= id '='<E> ';'を認識できるようにしなさい。

余計なプリント文を削除したソースプログラムと複雑な式を含む実行結果を提出すること。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++
[4] 期限: 2月3日まで
[5] その他の制限: 特になし
989フォルトの名無しさん:2011/01/30(日) 15:02:31
>>988 
あまり日にちがないですがよろしくお願いします
990デフォルトの名無しさん:2011/01/30(日) 15:12:22
>>988
>>493 のコピペ >>587 で不備なの?
991フォルトの名無しさん:2011/01/30(日) 15:15:06
>>990
すいません
>>493が解決せぬまま流れてしまったのでもう一度お願いさせていただきました
992フォルトの名無しさん:2011/01/30(日) 15:16:54
>>990
すいません、よく見てませんでした
>>587で解決してたんですか
993デフォルトの名無しさん:2011/01/30(日) 15:31:34
ひどいな
994フォルトの名無しさん:2011/01/30(日) 15:37:41
>>993
本当にすいませんでした
>>990 >>587
ありがとうございました
995デフォルトの名無しさん:2011/01/30(日) 17:31:42
うんこ以下だな
996デフォルトの名無しさん:2011/01/30(日) 18:22:21
>>970
カオス時系列をRBFネットワークで合成するのは
自分の1つ前の研究テーマだったわけだけど、
まず任意の時系列が与えられた場合に各RBFのセンターベクトルの決定の問題がある。
それと>>980で書いたように分散も埋め込み次元も遅れ時間も普通はわからないので
それを推定するアルゴリズムが必要。
で、実際にどうすれば上手く行くかは知ってるけど教えられないので諦めてくれ。
簡単な部分で一言だけ言うなら重みだけなら逐次学習でないなら線形最小二乗法で一発で解ける。
997デフォルトの名無しさん:2011/01/30(日) 19:53:18
>>996
とっととソースあげろやゴミが、と>>970は考えています。
998デフォルトの名無しさん:2011/01/30(日) 20:32:44
>>996
授業の課題で出るやつなんだから単純な最小二乗法に決まってんだろ
自慢はいいからやることやれ、と>>970 = >>997は考えています。
999デフォルトの名無しさん:2011/01/30(日) 20:40:57
次スレ立てます
1000デフォルトの名無しさん:2011/01/30(日) 20:41:20 BE:302947384-S★(532000)
C/C++の宿題片付けます 146代目
http://hibari.2ch.net/test/read.cgi/tech/1296387672/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。