1 :
デフォルトの名無しさん :
2011/01/03(月) 22:24:54 BE:265079074-S★(532000)
>>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
です
8 :
画像処理 :2011/01/04(火) 12:57:08
>>7 さんありがとうございます
拝見させていただきました
>>956 はうまく動作させることができました
>>965 のプログラムは
173行目
float* rnd[ANUM] = {NULL, NULL, NULL};
で初期化子の数が多すぎます というエラーが出ます
>>969 のプログラムは
240行目
csv_write(ofname1, csv);
で定義されていない識別子です というエラーが出ます
>>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 のための記述を抜けば
求めていた出力をさせることができました
先生が厳しいというか正しい人なので途中までで提出していたら
やり直させられていたと思います
本当に助かりましたありがとうございました
今までここの住人が解けない問題って出てきたっけ?
さぁ 夏休みのレポートをお世話になった時は うちの大学の教員がいるんじゃないかという速度で回答がきて驚いた
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] その他の制限:
>>14 わざわざCSVファイルとしているから、一行に複数の
数値がありそうだけれど、その場合、最後にでてくる
値の差の意味がわからない。ふつう、こういうファイル
の差分という場合、行の完全一致は一方を排除する
という意味だが、ここは、全体を通じて、同一数値を
取り除くの意味かな。それにしてもdiff.csvの出力形式
がわからない。
16 :
14 :2011/01/04(火) 18:34:14
例えば8行7列のsample.csvがあったとして 偶数行奇数行でわけると4行7列が2つできますよね 最後のdiff.csvはデータベース的な差分ではなく 偶数奇数2つのcsvの同じ位置に入力されている数値を 偶数引く奇数と計算したときの値が4行7列で入力されたものです
[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を使うみたいです。 よろしくお願いします
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); }
>>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;
}
>>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;
}
>>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;
}
}
>>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;
}
もう出勤だ。
誰か
>>21 の5番目〜7番目頼むね。すまそ。
27 :
デフォルトの名無しさん :2011/01/05(水) 06:01:01
>>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の形式についての補足があります。
30 :
29 :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
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日 不明な点があったら指摘してください。よろしくお願いします。
>>32 gr17.txt をアップロードしてくれ
ソートってこんなの 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 めっちゃ歪んでる
福本漫画かよw
1] 授業単元:プログラミングC [2] 問題文:「90min = 1h30m」を関数を使って表せ 分から時間へは関数mtohをつかう。 [3] 環境 [3.1] OS: VISTA [3.2] コンパイラ:C言語を始めよう! [3.3] 言語: C [5] その他の制限: 分から時間への計算をmtohでやるみたいです。
>>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;
}
適当に作ったからミスがあったらごめん
ありがとう!
>>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;
}
#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; }
>>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;
}
すいません ポインタまだやってないんですorz
>>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;
}
解決しました!ありがとうございます
どういたしま
関数とかスコープとか、全く理解してないのに解決とかw
>>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;
}
まだ関数勉強し始めたばかりなのでこれで十分ですよ #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
[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 どうも計算した時の誤差が大きいようなのでもう少し精度を良くしたいのですが、
どうすればいいのかわかりません。
どうかよろしくお願いします。
>>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 のデータの与え方をみればわかる。
以上より、「同じ道をとおる」という場合を省いてもよい......ハズ。
57 :
56 :2011/01/06(木) 00:23:05
失礼、 L(C2)<L(C1) に訂正します。
>>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 ってことじゃないの??
60 :
56 :2011/01/06(木) 00:50:04
>>59 なるほど、そういう場合は確かに考えられますね。
>>54 のいうとおりやっかいですね。
61 :
59 :2011/01/06(木) 00:54:13
ご丁寧にどうもです。 これのせいで面倒になってるのは確かですね
62 :
58 :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
63 :
59 :2011/01/06(木) 01:12:17
>>62 おお!3秒とはすごい!w
これって同じ道通ってないですよね?
64 :
32 :2011/01/06(木) 01:16:42
>>62 参考にしたいのでソースを見せていただけないでしょうか?
提供されるだけで申し訳ないです・・・
65 :
58 :2011/01/06(木) 01:20:29
>>63 同じ道を通る場合も考慮してるつもりだけど
最終結果は同じ道を通ってないね
66 :
59 :2011/01/06(木) 01:22:22
>>65 おー。すごい。
同じ道を通る場合を考えると相当面倒じゃない?
67 :
58 :2011/01/06(木) 01:32:41
68 :
59 :2011/01/06(木) 01:48:35
>>58 あげてくれたテキストは、gr17.txtのデータを対角にしたもの?
すまない、[]の中の数字の意味がよくわからないのだが。
69 :
59 :2011/01/06(木) 01:49:26
70 :
58 :2011/01/06(木) 01:52:47
>>68 括弧の中は経路の数
1 なら直接移動
2 なら途中で1点経由
3 なら途中で2点経由 って具合
デバッグするときにチェックしやすいように出しただけ
71 :
59 :2011/01/06(木) 02:00:32
>>70 あ、よく見たらgr17.txtの対角じゃなかったw
なるほどねー、サンクス。
A を使って検索ってのは、14.txtの中から検索してるんだよね?
>>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;
}
75 :
29 :2011/01/06(木) 09:51:15
すみません29です。
期限が近いのでどなたかお力を貸していただけないでしょうか。
頼むばかりで申し訳ありませんが、
何卒宜しくお願いいたします。
>>29 >>30
>>75 わかりにくい
問題文そのまま載せて欲しい
>>75 適当で良いから、height.csvを例示してくれない?
初期値がある方が作る側は負担が少ないんだが
78 :
29 :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でより左の人を出してください (↑すみません書き忘れました。回の代表を選ぶ時もより左が優先です。)
79 :
29 :2011/01/06(木) 11:01:24
問題文はほぼ
>>29 ままで語尾を命令系から変えただけです
中カッコでかかれていたもの(以下のようになってたもの)を
あああああ}
あああああ}繰り返し
あああああ}
(*〜*)や(\〜\)に書き直しただけです
出力されるcsvの形式は
>>30 のままです
代表の選出の際に左側優先ってのを書いてないと出力が長方形にならないですよね
そら意味わからないですよね申し訳ありませんでした
>>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 - 付加ポイント
これも意味不明だな
82 :
29 :2011/01/06(木) 13:17:38
ありがとうございます 実行して.csvを確認して20列目までは出ているんですが 21,22列が正しい値がでません 基礎値が必要なのは基礎値も最初にランダムで設定した以上出力すべきってことだとおもいます 私もそういう問題なのだとしか言えません > の中で一番大きかった者が行の代表です > 行の代表になった者(0.3)の回の代表だった時の元の基礎ポイント > 0.3 - 付加ポイント これは「対応する身長を出力」を言い方変えて言いたかっただけなので忘れてください すみません
83 :
29 :2011/01/06(木) 13:19:46
22列はでてました 1から20列及び22列と 21列目が対応していません 宜しくお願いします
85 :
29 :2011/01/06(木) 16:01:47
>>84 さんありがとうございます
実行しようとしたら
>>110 行目でerror: Invalid data(!= %5)
と出ます
ここのエラーは何が合わなかったのでしょうか
86 :
29 :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 で放り込んだのですがこれが良くなかったのでしょうか
>>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] その他の制限: ポインタまで習いました
>>86 スペース区切りのファイルを喰わせてダメだったんなら
sp = strtok(line, delimiter);
for (i = 0; sp != NULL; i++)
{
student[i] = atof(sp);
sp = strtok(NULL, delimiter);
}
ここが怪しいな、i = 4 でループを抜けそうな気がする
91 :
29 :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
です
>>91 気になったので動かしたらちゃんと動いたよ
>>90 は俺の勘違いなので忘れてくれ
結局はカンマ区切りのデータを喰わしてたって事かい?
93 :
29 :2011/01/06(木) 16:19:01
あぁ80行目ですね見つけました 実行することができましたので中身を確認したいと思います
94 :
29 :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) の最大値に対応する者の身長
96 :
デフォルトの名無しさん :2011/01/06(木) 16:41:42
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列と臨機応変に対応できるようお願いします。
98 :
84 :2011/01/06(木) 17:37:24
99 :
29 :2011/01/06(木) 17:52:30
>>98 さんありがとうございます
確認しました
1回目から5回目の各回で
16-20: 基礎値+付加値
の部分で基準値と付加値の和が合わない部分があります
これによって後の出力に影響がでています
>>29 基礎ポイントというものは、5人の学生それぞれの専用の値ってことかな?
基礎ポイント1→1番目の学生に使用
基礎ポイント2→2番目の学生に使用
...
基礎ポイント5→5番目の学生に使用
101 :
29 :2011/01/06(木) 18:22:25
最初に割り振った基礎ポイントは5人の学生の固有の数値です その値にランダムで付加値の加算を5回してます。
102 :
29 :2011/01/06(木) 18:27:23
簡単にいえば
>>84 から
基礎ポイントの表示を4回分出力しなければ完成です
数値の計算や代表の選出は正しかったので
2回目以降の「基礎ポイントの表示」を出力しないだけです
繰り返し工程からこの部分を外して
出力を最初の一回だけにしてほしいんです
お手数をかけて申し訳ありません。
104 :
デフォルトの名無しさん :2011/01/06(木) 18:45:27
>>73 遅くなりました。有難う御座います。
ファイルのパスだけを出力するのでディレクトリのパスは出力しないのでいいのですがその辺りを教えていただきたいです。
105 :
29(完) :2011/01/06(木) 18:45:39
108 :
デフォルトの名無しさん :2011/01/06(木) 21:11:18
入力クロックをFPGAボード上の6MHzクロックとして、これを6*10^6カウンタで1秒クロック変換する。 この1秒クロックでアキュムレータを駆動する。 このプログラムを教えてください。
[1] 授業単元:OS [2] 問題文 fork とexec 族のシステムコールを使い,簡単なコマンドインタープリタ(mysh)を作成せよ. 作成するコマンドインタープリタは下記の機能をサポートすること. ? 設定ファイル(.path)にコマンドサーチパスを指定することが出来る.なお,ファイル内 のパスの指定方法は,各自が考えて定義すること.(パスにないコマンドを入力した場 合には,見つからない旨のエラーメッセージを出力すること.) ? パイプを利用して複数(可変個)のコマンドの入出力を結合することができる. ? コマンド実行中に Ctrl-C を入力すると,現在のコマンドの実行を中断して, 次のコマン ドを入力するためにプロンプトを出力する. ? リダイレクション(“<” と “>”)を使用してコマンドへの入力をファイルから得たり,ファ イルへ出力したりすることが出来る. ? exit を入力すると,mysh を終了する. [3] 環境 [3.1] OS:Windows 7 [3.2] コンパイラ名とバージョン:cygwin [3.3] 言語: C よろしくお願いします!!!
【実行イメージ】 $ ./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 を終了
>>109 ,110
申し訳あえりませんこれで一つです
よろしくお願い致します
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;
}
>>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日まで ちょっと意味不明な課題かもしれませんが、できればどなたかお願いします 日本語がおかしいかもしれないので何言ってるのかわからない場合はつっこんでください
>>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;
}
>>115 csvのフォーマットは?,かタブかその他か。
a.csvとb.csvの例があればたぶんみんなやりやすい。
>>115 最後の行がよく分からない
例えば#define START 2が定義されてると
a.csvの2行目から処理を始める、という解釈でいいのかい
119 :
14 :2011/01/07(金) 07:32:42
>>112 odd.csvとeven.csvは出力されるのですが
diff.csvが出力されません
55行目でエラーが出てしまいます
ビルドは正常に完了するのですが
実行中にエラーがでて止まります
>>114 fork() + pipe(), dup2() あたりで。close() を間違えないように。
[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] その他の制限:なし
>>123 40: n+=det_arrow(yumiya[i]);
を
n+=det_arrow(&yumiya[i]);
にしてみては?
det_arrow(arrow2D* z)って引数がポインタだよね
>123 とりあえず、三平方の定理と40行目をn+=det_arrow(&yumiya[i]);こうしようか
よくみたらprobabiもprintfもだめだな
>>124-125 コメントありがとうございます。
言われたとおりに修正しました。
ただ、出力が下記のようになりました。
0.000000続行するには何かキーを押してください . . .
キャストの位置がおかしい
return double(a/(a+b)); ↓ return (double)a/(a+b); かもね〜
もうしらん 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
setしてないw
>>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言語入門シニア編です。 期限が迫っていてすいませんがよろしくお願いします。
画像を表示するプログラムで↓のエラーが出ました fatal error C1083: include ファイルを開けません。'glut.h': No such file or directory 初心者なのでよくわかりません 助けてください
>>135 glut.hっていうファイルが見つからないからインクルードできません
>>135 glut.h というファイルが見つからないというメッセージ
139 :
デフォルトの名無しさん :2011/01/07(金) 23:07:41
>>138 インクルードパスを設定していないんだろ
コンパイル時に -I オプションで glut.h が有るディレクトリを指定すれば良い
OpenGL を使うんだと思うけど、リンク時に似たような問題(リンクライブラリパスの指定)が生じると思う
サンプルかなんかの makefile を参考にして makefile を作成した方が良いだろうな
>>138 OSやコンパイラ名を書いた方が良いね
何か、開発環境の準備もしないで、
サンプルソースをコンパイルしようとしてる予感
>>140 OSはwindows,コンパイラ名は Microsoft Visual C++ です
[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] その他の制限: 期限が近く、申し訳ないのですが何卒お願いします
俺ならyacc等で生成したものを提出して先生がどうリアクションするか試す
yaccむずいよ… 泣きそうになった
>>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;
}
そもそも問題が前スレとほぼ同じだろ
みゃとい
プログラムをMacで教えてる学校ってどうなの?
>>134 >二次元配列をつかってすでに引いたカードを記録し、
(´・ω・`)
153 :
デフォルトの名無しさん :2011/01/08(土) 13:56:07
>>150 専門でも使ってるPCがMacのとことかあるしね
まぁあまり多くはないと思うけど
ページワンはこないだ書いたけどジンラミーやフォックストロットはルールが面倒だからパスです
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と比較すればよい(¥はバックスラッシュ)』と書いてあります どなたかよろしくお願いします。
#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
>>155 macって改行コードは\rじゃなかったっけ
バイナリならな テキストでは\n
>>122 通常のプログラムだと、pipeで取得したファイルディスクリプタを親と子でdup2をそれぞれ使うみたいなんだけど、
シェルの場合はどうなるんだろ?
ls | hexdumpを実行する場合、下のような感じか?
親(シェル)--子--孫(lsを実行)
| `--孫(lsをwait)
`--子--孫(hexdumpを実行)
`--孫(hexdumpをwait)
CRのみだったのは昔の話
バイナリファイルの中にテキストデータがあるようなデータでMS/UNIX系だけなら 改行はCR読み飛ばしてLF目印に出来るのにmacのせいでめんどい事になって 糞Appleシネと思いながら夜な夜な釘を打つ。 プログラマの70%が経験する登竜門みたいなもんだぜ
>>162 ありがとん。
argvの解放漏れが気になるが、pipeの使い方が何となく分かった気がした。
>>165 execv(path, argv)
を呼び出すために argv を malloc() していろいろ準備しているわけなんですが、execv() してしまうと、argv を free() しようがないわけですね。
このスレでこの点についてアドバイスを求めたところ、
「無視していい」
とのことでした。
[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はインストール済です
出力しても写真が表示されません。初心者なのでよろしくおねがいします。
>>166 exec実行でカーネルがヒープを解放・獲得するから問題ないってことかな。
逆にexecが失敗した場合にfreeするとダブルフリーでglibcがエラー出すみたい。
execから戻るときはヒープは真っ白なのだろうか。
>>168 確かにこちらの環境でも、exec()失敗後のfree() でチャイルドプロセスがコアをはきました。(親プロセスは続行しますが。)
man をみても、そのあたりのことは書いてないようですね。作法はなんでしょうね。
あと、一番トップのプロセスは自分がfork() したプロセスの終了しか wait() していないので、場合によってはプロンプトを出すタイミングが
速すぎる場合がありますね。fflush() をいろいろ入れてみたのですが改善しませんね。
なかなかむずかしい。
そもそも子プロセスでfork()失敗したらexit()するから、 別にfree()する必要ないんじゃない?
>>167 一部原型がないけど。
http://codepad.org/LbA7xomp 読み込んだ画像を逆に表示していたから修正済み。
マウスクリック時の動作だけは問題ないはず。
honjoフィルターとやらはどう動くのか予想がつかないから知らん。
ただ領域外参照しそうな部分だけ修正済み。
変数名は使いやすいようにほとんどリネームした。
RGBの各種変数はまったく持って不必要だったから消した。
他にも不要な変数は削除済み。
>>170 そうですね。最終的に exit() してチャイルドプロセスのメモリ領域はOSに返してしまいますものね。
>>171 遅くなりました
ありがとうございます
コンパイルしたところ
fatal error C1083: include ファイルを開けません。'glut.h': No such file or directory
と出ました
だからGLUTインストールしろと 先生言わなかったのか
元は #include "glut.h"
>>171 は #include <glut.h>
家の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列)が出力されます
なんか最近csvばっかりだな
180 :
88 :2011/01/09(日) 21:28:38
これだけの情報で作れといわれてもな
183 :
88 :2011/01/09(日) 21:57:48
>>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言語入門まで習ってます。 皆さんのお力を借ります。よろしくお願いします。
>>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;
}
#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; }
ありがとうスッキリしました!
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);
//上の続きです 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]); }
//連投すいません //上の続きです //あまりブロックの処理 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; } //次がラストです
//ラストです 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も使えません。 どなたか解決策を教えて頂ければと思います。 よろしくお願い致します。
>data=(int *)malloc(line_int_sz); 死ね
>>196 ありがとうございます
まじで助かりました
礼はいいから二度と来るな
まぁいいではないか。 問題も解決してよかったの〜
次からはこんな長いコードは
>>1 の通りにするように!
201 :
デフォルトの名無しさん :2011/01/10(月) 11:04:54
>>186 解答ありがとうございます。
助かりました。
この場合テキストファイルから読み出すにはどうすればいいのですか?
リダイレクト 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
詰み将棋なのに人間vs人間って意味わかんねーよwwww コマの配置を自分でして両方のコマを自分で動かして詰んだかの判定も自己申告な感じでいいのか? それとCLIでいいのかGUIがいいか? ExpressについてるものでGUIでと言われたらおれはやらんが
マウスっていうからにはGUIだよなすまねぇ
ついに漢字が読めない奴まで現れたか
これはひどい
tes
[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] その他の制限: なし よろしくお願いします。
>>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関連で助けていただいて、そのときも日本語が不自由だったのですが今回は更に酷いかもしれません 意味不明なところがあったらつっこんでくれると幸いです。どなたかよろしくお願いします
すいません途中で書き込んでしまいました 問題3 キーボードから入力した99文字以内の文字列を、下記の様に画面に表示するプロ グラムを作成せよ。 【実行例】 文字列を入力してください:ABCDEFG 文字列 = ABCDEFG 問題4 キーボードから入力した文字列を、1文字毎に2回づつ表示するプログラムを作成 せよ。 【実行例】 文字列を入力してください:ABC 文字列 = AABBCC お願いします
[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関数を使えば、とまでは考えたのですが…
入力ファイルの中身も下の方にコメント文で入れてあるので、ご指摘お願いします。
>>203 GUIって何使えば良いのか明記
・Win32API
・ATL
・MFC
>>215 線形リストを自分で作るのは面倒だからC++のSTLを使った方が早いと思うけど、途中経過がC言語だ
本当にC++も可なのか?
>>218 STLとやらはまだ習っていないので、
おそらくC言語で書くべきのように思います…
お手数おかけしてすみません。
>>212 ですがありがとうございます。助かりました。
詰将棋とかみると卒論かなぁと思ってしまうw
225 :
デフォルトの名無しさん :2011/01/10(月) 22:16:09
>>217 203の者です。・Win32API でお願いいたします。
よろしくお願いいたします。
>>222 詰め将棋ではなく、挟み(はさみ)将棋です。
ああ 挟み将棋かw 間違えた
227 :
デフォルトの名無しさん :2011/01/10(月) 22:45:13
>>58 32とは別人ではありますが、
自分の出されている課題とまったく同じなので
是非ソースを拝見させていただきたいです・・・
228 :
デフォルトの名無しさん :2011/01/10(月) 22:45:46
将棋とかオセロとか講義でやらされた記憶あるわ 〜プログラミング1みたいな講義の絞めの課題でよく出されるよね
>>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;} 圧縮プログラムはこんな感じでできました。復号をよろしくお願いします。皆さんの力をお借りします。
232 :
デフォルトの名無しさん :2011/01/11(火) 10:00:41
>>229 同様のエラーとはコンパイルエラーなんでしょ
だとすれば、君のコミュニケーション能力に問題が有るのか、講師が無能なのか...
コンパイル時に glut.h not found が出るならインクルードパスが通っていないって事だから少し調べれば答えは簡単に見つかるよ
>GLUTをインストールしても そもそも OpenGL が入ってなくて $(MSDevDir)\..\..\VC98\include\GL にパスも通ってない可能性
[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] その他の制限: なし よろしくお願いします。
ありがとうございます。助かりました
[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日 よろしくお願いします。
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) 縦は無数、横が10列で数字が書き込まれているecxelファイルを読み込む(ファイル名は何でもいいです) 読み込む時は今後の処理を考えてなるべく配列で その後各列を縦に参照していき、正の値が出たときは別の同じ型の配列の同じ位置に代入していく 負の値が出たときに、そのセルの列の前5個、後ろ5個を参照し以下の処理を行う 前にも後ろにも正の値が検出された場合 → 参照しているセルに一番近い前と後ろの値の2つの平均値を取得し別の配列に格納する 前あるいは後ろの片方にしか正の値が検出されなかった場合 → 一番近い値をそのまま別の配列に格納する 前にも後ろにも正の値が無い場合 → そのままの負の値で別の配列に格納する 最後に値の変更を終えた別の配列をそのままresult.csvとして出力する [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: [3.3] 言語: C++ [4] 期限:1月12日 [5] その他の制限: なし 問題は口頭で出されたため具体的にこのようにやらなければいけないという指定はないのですができれば配列でお願いしたいです もっと良いやり方があるのに、と思った場合は結果が変わらないのであればどのような方法でもかまいません よろしくお願いします
無数って数が無いみたいですねごめんなさい 大体1000くらい入るんですがもっと入る可能性もあったりしますので、確定できてないです
無数な配列はきついからとりあえず1000でいイカ?
xlsファイル読むのってActiveX使えばいいの?
11行分保持することにしておいて逐次書き出しでよくね?
>>242 配列の何が厳しいかとか良く分からずに質問して申し訳ありません。似た感じのものでも結構なので1000という指定でも良いです
>>243 〜.csvってファイルを読み込んでやりたいのですが、ActiveXという単語は初耳でした
もしかしてエクセルファイルって表現はまずかったでしょうか?数字しか入ってないcsvファイルです
248 :
246 :2011/01/11(火) 22:24:11
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] その他の制限:文字列から生成するパラメーターは法則を作る。 わかりにくい文章ですみません。知恵を貸してくれると助かります。
意味が分からない
ミラクルマジカル分からない
1人目名前7文字→攻撃力50 HP1000 2人目名前8文字→攻撃力80 HP700 攻撃力やHPは+αでランダム補正値を付加して 戦わせるってことかね 名前のアルファベットで補正値作る方法もいいね。 作り手の思想が大きく影響する問題だなぁ
なにそのバーコードバトラー
255 :
デフォルトの名無しさん :2011/01/12(水) 02:02:43
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; こんな感じで?
>>256 AAAが弱くてZZZが強いってすぐにバレちゃうからもっと捻らないとダメじゃない?
258 :
246 :2011/01/12(水) 02:55:31
259 :
109 :2011/01/12(水) 02:59:27
>>109 皆さん尽力していただきありがとうございます
最終的にはどうすればよいでしょうか
自分では全く手が出なくて・・・
本当に申し訳ないのですがよろしくお願い致します
>>241 無数というと、普通は「数え切れないほど沢山」の意味になります。
ここでは、沢山を強調したいのではなく、要素数が不定であるの
ということですね。
要素数が不定の意味ですね。一文字消し損ないました。
>>261 その通りです。日本語不自由で申し訳ないです。
おそらく500〜700くらいになるんですが最大1000くらいまで縦の要素数が増える可能性があります
264 :
デフォルトの名無しさん :2011/01/12(水) 04:01:02
>>250 ありがとうございます。
参考にして頑張ります。
[1] 授業単元:プログラミング演習 問題1 キーボードから4つの整数を入力し、その中の最大値を表示するプログラムを作成しなさい。 ただし、このプログラムは下記の2つの種類の処理を、1つのプログラム内で行うように作成してください。 <実行結果> 配列を使わない処理です num1 = 25 num2 = 84 num3 = 12 num4 = 68 最大値は84です。 配列を使用した処理です num1 = 25 num2 = 84 num3 = 12 num4 = 68 最大値は84です。
問題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] その他の制限: なし
double func(int N){ return n * 0.5 + 0.5; }
271 :
デフォルトの名無しさん :2011/01/12(水) 14:02:43
>>270 >オンのます目の周りに2つ、3つのます目があれば、次の回でもオンになる
これってオンのマス目の周りにオフのマス目が2 or 3個有れば次もオンって事?
マスの周りに2つON: ON/OFFそのまま マスの周りに3つON: OFF→ON 上記以外: ON→OFF
>>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
>>274 C++でWin32API直叩きGUIは面倒
あんま期待しないほうがいい
277 :
デフォルトの名無しさん :2011/01/12(水) 16:08:34
>>274 対人戦って事は通信対戦?初心者に出す宿題じゃねぇな
いろいろ面倒なので解いてくれる人は居ないと思うよ
.....500円でコード書いてくれる人はもう居ないのかな?
>>278 さすがに PC1台で手番交代毎に操作プレイヤーを変える方式じゃない?
ネットワーク周辺の授業の課題で だったら 通信対戦も視野にいれなきゃいけないが…
280 :
デフォルトの名無しさん :2011/01/12(水) 17:12:38
>>279 PC1台で手番交代毎に操作プレイヤーを変える方式です。
>>275 ご教授ありがとうございます。アルゴリズムだけでもいただけたらと思っております。
>>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] その他の制限: なし
283 :
281 :2011/01/12(水) 17:42:50
>>282 なんで2次元配列を縦に参照していかなければならないのだ^^
後続の処理内容を鑑みるに横方向に捜査しても一緒だろがどってんばってん
(処理内容を同じ配列に上書きするわけじゃないからな)
>>285 縦に参照、ってのにこだわりすぎですかね?そのセルの同じ列の上5つ、下5つのセルに対して処理をお子なればいいのですが
よく考えたら横方向に捜査してもいけそうですね・・
横に捜査していくほうが処理が楽になるようでしたら全く問題ないです
誰か
>>238 ,265266至急お願い出来ますでしょうか
>>284 早いですね
あなたのおかげで1年早く卒業できそうです
ありがとうございました
>>238 やってみる
超初心者ですがw
ちょっと自分の練習のためにも。
291 :
290 :2011/01/12(水) 22:46:10
292 :
290 :2011/01/12(水) 22:47:44
あ〜 ごめんなさい calc関数作るのね。 もう一度やる
293 :
290 :2011/01/12(水) 22:57:29
>>290 すいません。ありがとうございます助かりました。
無理いって悪いですが、
>>265 と>266の問題もお願いできるでしょうか。
296 :
290 :2011/01/12(水) 23:24:44
297 :
290 :2011/01/12(水) 23:49:39
ありがとうございます。とても助かりました!
>>296 ,297
横やりだけど入力は1回で
配列使用時と未使用時の2つを出すんじゃない?
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です。
307 :
デフォルトの名無しさん :2011/01/13(木) 00:47:25
>>306 大変な作業量の問題を解決していただき本当にありがとうございました。
とても助かりました!!ソースを見て1から勉強しようと思います!
309 :
デフォルトの名無しさん :2011/01/13(木) 01:14:04
>>310 問題文が意味不明すぎてみんなスルーしてる予感
やっぱそうですかね・・指摘に対しても的外れな答えしてるなと自分でも思ってるんですが 全体的に文章が滅茶苦茶なんですかね?それとも負の値の前後5つが〜ってところが意味不明なのでしょうか?
313 :
282 :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] その他の制限: なし
>>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
/*前あるいは後ろの片方にしか正の値が無い*/
316 :
282 :2011/01/13(木) 02:29:06
>>314 >>315 わざわざ考えてくれてありがとうございます、助かります
宿題というか・・課題?というか。自分の考えでどうにかしろみたいな感じのものなんで問題文滅茶苦茶で申し訳ないです
317 :
315 :2011/01/13(木) 02:39:29
318 :
282 :2011/01/13(木) 02:53:45
何度もありがとうございます! 空白を区切り文字というのは数値の間にそれぞれ空白が必要ということでしょうか? ぎっしり詰まっているファイルは間を空けないと処理されないですか? なんパターンか試してみたのですが一番最初の数値を処理して止まってしまいます もし起きたときにこの質問を見ていたらでいいので教えてほしいです
for( i=0; i<=10; i++) というfor文でiを1msごとに1プラスされるようにしたいのですが、どうすればよいですか?
無理
321 :
282 :2011/01/13(木) 03:57:16
>>318 の質問なんですが空白区切りという言葉を勘違いしてました
というかcsvファイルについての知識が無さすぎました。すいません
カンマ区切りにできないかなと思っていろいろプログラムいじってみたのですが相当難しいですか?
>>317 じゃないけど対象のcsvファイルをどこかにアップしてよ
そのほうが手っ取り早い
>>319 いろんな方法がある
環境(OSとか)や期待される精度で違ってくるので
一言で説明出来ない
質問自体が情報不足
っつーかマルチすんな
324 :
287 :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 お願いできないでしょうか
アップロードしたファイルが消えると思ったのでまた書き込みました
よろしくお願いします
しつこくてすみません
問題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; }
>>325-326 お礼書くの遅くなってすいません
ありがとうございます
本当に助かりました
328 :
282 :2011/01/13(木) 11:18:04
【質問テンプレ】
[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」という本は一通り学びました。
計算はできるのですが評価、手直し、アドバイスをお願いします。
>>329 方法1)コンマをスペースに置き換えればいい。
方法2)各行の最後にコンマをもう一つ追加する。
in>>e>>comma と、os<<result<<",";
の所を修正する。read()にchar comma;を追加する。
331 :
282 :2011/01/13(木) 13:38:29
>>330 アドバイスありがとうございます
ご指摘の通りプログラムを修正したところ1行目までは処理できて
2行目以降の処理に入ることなく処理がとまってしまうのですが
列を切り替える際のカンマの処理ってのも必要なんでしょうか?
CSVの各行の最後にコンマを1つ追加する。
>>332 CSV形式は普通行末にカンマはないだろ
>>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");
}
337 :
282 :2011/01/13(木) 17:42:31
>>336 助かります。こちらの書いた変な条件分岐を見事に再現してくださってありがとうございます
fscanf使ったらいかんの?
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;}
>>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] その他の制限:
「-1と右端の1」の意味がよくわからないよん。。。 -2とか-3は取り除かなくていい。 全ての行において4列目には1が入っているということ?
(全ての-1) or (右端 and 1) を削除?
テキストファイルの形式や実行結果がないとさっぱりわからん
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を取り除くものをお願いします。
/|:::::::::::::::::::::ヽ.:.:.:.:、:.:.:.:、:.:.:.、.:.、.:.:.:.:.:.::`゛> /{::|:\:::::::\.:.:.:\.:.:.ヽ::.::.ヽ:.:.ヽ::::::::::.:.`゛ー- ..,__ : 何 : /:|::',: ト、::::::ヽ、:.\:.:.:.\:.:.ヽ:.:.:\.:.:.:.:.:::.:.:.:.:::.::::_;:-'´ : : : : が : //: /:::|::',|::'、:::::::::\:.:\.:.:.ヽ:.:.:\:.:..\::::::::::::\、::::\ : : : : 何 : /!::|::l:::: /|:::l:ヽ:\::ヽ:.:\:.:\.:::ヽ:.:.:ヽ:.:.:.:\::::::::::::\ ̄ : : : : だ : |/l::|::|::|: ト、:::::::::、、:ヽ、:.:.:.:::::::::::::::ヽ::::.:ヽ:.:.:.:.\:.:.:.ヽ:::\. : : : : か : |::|::/l::|::|r‐ヽ:::::ヽ(ヽー,―\::::::、::::::::::ヽ::.:.::::::.:::::::ヾ. ̄ : : : : : }//l::|:::|{(:::)ヾ、:::ヽ \!(:::) ヽ,:::ヽ:::::::::::::::::::::::::::::::::::ヾ、 : : : : わ :. |/l::|::|:::|ヽ==''" \:ヽ、ヽ=='" |:::::::::::::::::::::::::::::::::::ヽ、::::\ か / ',|::|:::| / `゛ |!::::::::::::::::::::::::::::ト、::ト、_` ゛` ら l::!::::ト、 '、 _ ||::::::::::::::::::::::::ト:ヽヾ| | ̄ ̄ ̄`ヽ、 な r'"´||',::::', |:::::/l:::::|\:::ト、ヾ | | / / \ い / ll ',::', 、 ーこニ=- /!::/ ヽ:::| ヾ、 ノ ノ / ,イ ヽ、 ,' | '、:, \ -- ,. '´ |;' l ヾ、. // / | l: l | |! ヽ; ヽ /.: i! / ゛// |l / | | |
>>345 「1」は右端だと分かるための情報って感じか?
じゃあ「-1」は下端かというと、「数カ所」ってことはそうでもない?
よく分からない
何かの測定結果でエラーの時は-1になるとかかな?
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 そうです!そのようにお願いします。
わかりづらくて申し訳ないです。
>>341 http://ideone.com/PCsf9 途中
眠くて以下の部分できてない
1.データの読み込み
2.読み込んだデータのチェックと書き込み
A) 4列が”1”なら書き込まない
B) -1が4個並んでいる行は書き込まない
申し訳ないが寝る。誰かあと任せた。
もし完成してないようなら明晩俺がやる。
>>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;
}
データファイルの読み書きは標準入出力でいいし、4つ目のデータが1でないいじわるデータの時も読んでしまうだろこれ
-1 -1 -1 -1 は空白行にしないのか?
[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日まで 期限ギリギリで申し訳ないです><
#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] = {"ミッキー", "ミニー"}; }
362 :
デフォルトの名無しさん :2011/01/14(金) 14:04:45
341です。 助かりました。みなさん本当にありがとうございました。 また何かありましたらよろしくお願いします。
◆/91kCCQXBo また新しいタイプのキチガイが現れたな
はい?
トリつけたりすると無駄に煽られるだけだからやめたほうがいい
>>365 依頼者以外のトリは僕、キチガイって自己紹介してるんだから絶対推奨ですよ
>>365 無駄じゃない
基地外は駆逐しなければならないから当然の防衛行動である
前からトリついてたろw
トリ憑けてみた。
>>369 キチガイのだからそんなもん
そういや有料宿題スレ消えてるな
>>372 日本語をクラス名等に使えるコンパイラをお持ちなんですね
できれば何と言うコンパイラか教えて欲しいです
376 :
デフォルトの名無しさん :2011/01/14(金) 18:48:31
>>358 踊ったら体力が回復するのに踊れなくなるまで踊らせるとはこれ如何に?
VCは使えるんじゃなかったっけ
>>373 右端に1がある行が出力するデータという仕様。
そうじゃないデータは仕様に書いてないから出力してはいけない。
左から三列出力でいいなら、右端の1を取り除くとは書かないだろ。
361のコード、vc8で動くぞ?
ユニコードなら問題ない
「問題ない」はキモイからやめろ
宿題はないか?
384 :
期待のほし :2011/01/14(金) 22:44:32
rand関数について質問させてください。 アルファベット大文字 26字、アルファベット小文字 26字、数字 9字 の合計62文字からランダムに一文字取り出す式を教えて下さい。 今日 rand関数を習ったばかりで よくわかりません。{(>_<)} 基本的な使い方は大丈夫です。
>>382 回答でてないの全部解いていくと良い
セールスマン問題とか早稲田とか
>>384 char moji[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
printf("%c", moji[(int)(rand() / (RAND_MAX + 1.0) * 62)]);
387 :
期待のほし :2011/01/14(金) 22:51:10
ありがとーございます。 さすがですね;
'A'=65 〜 'Z'=60 'a'=97 〜 'z'=122 '0'=48 〜 '9'=57 計61文字だから rand % 61 でやるってどうよ?
390 :
389 :2011/01/14(金) 22:58:32
って みんなはえーな。
>>388 >printf("%c\n", tbl[rand() % sizeof(tbl)]);
>>389 >計61文字だから rand % 61 でやるってどうよ?
早稲田の課題は要約すると「簡単なシェルを自作しろ」だからね
はっきり言って1日やそこらでどうにかなるようなもんじゃない
俺はもう終わったから、
>>359 が詰んでるのを見るとメシがウマイわ
こうしてカルドセプトサーガの悪夢は繰り返されるのであった
>>392 ではちょっと範囲外参照してみて下さい。
範囲外ではないけど、末尾に'\0'がつくことを見逃しているよね
まあ62文字の範囲外といえなくもないか
「範囲外アクセス」と言ったら一般的には配列の範囲外だろ 無理に言い訳しなくていいよ
期待している文字を返してないから、範囲外で問題ない
突っ込み方がおかしいとしても
>>388 がバカなのは変わらないだろw
煽りしかできない男の人って…
口は悪いけど、間違いを指摘してくれるんだから 感謝した方がいいよ
ゆとりって間違い指摘するとその指摘の仕方に文句つけて自分の間違いをごまかそうとするよなw
>>407 そういうのはありがちだから、あまり言わない方がいいよw
>>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日まで
なんで踊るの?
>それから、踊ったら体力がするようにせよ減るように。 ちょっとなに言ってるのかわからない
>>411 タイプミスです^^; 「踊ったら体力が減るようにせよ。」です><
>>409 体力以外の型は?
どうやれば踊ったという事になるの?
どこで出された課題か知らないけどひどい問題だよ
詐欺られてるんじゃないの?
>>409 お食事のタイミングについては何も無いの?
ミッキーっていいのか?
IF文 WHILE文 FOR文 WindowsVista こういうの自分で書いてて気持ち悪くないのかな
>>418 おいおい目の前のディスプレイに移ってるのはお前の顔だぞ?
418の顔を擦り付け合うのはやめてやれ
>>414 餌は1日三回、6-7時、12-13時、19-20時に与えます
それらの時間になったら与えてください
416の顔を擦り付け合うのはやめてやれ
>>423 前項の「言葉の理解の遅れ」でも少し触れましたが、
自閉症児の多くは「オウム返し」をします。
言葉のとおり、オウムのように言ったことをそのまま反復するのです。
424「どや?」
427 :
359 :2011/01/15(土) 00:43:38
丁寧に頼んでもできねーのか。
お前らホントに使えねーなwwwwwwwwwww
悔しかったら
>>109-110 を解いてみろよ!!!!!!!11
とうとう手段を選ばなくなったか。
ミッ○ー
433 :
359 :2011/01/15(土) 01:27:23
435 :
359 :2011/01/15(土) 01:34:27
>>434 簡単なので入れてください。締切りが月曜なので、ちょっと急いで欲しいです。
436 :
359 :2011/01/15(土) 01:38:15
っていうか、その程度とか言えるならコード出せよw
これが早稲田脳か。
ぼっちはつらいな
小島よしおも早稲田だぞ。
シェルならbashとかのソース見ればいいんじゃないの
>>436 授業理解できてないお前が悪い。同じ授業受けてる俺はもう完成してるしね(笑)
せいぜい月曜の締め切りまでそうやってあがいてればいいよ。
あ、教授にはこのスレの存在は通達済みだから、ここでもしコードが上がってもそれを参考にはできないからよろしく。
鬼畜すぎワロタw
そういやうちの大学でもネットのソースを5、6人が同じの提出して0点になったという話を聞いたな 当の本人たちは「採点を見なおせ」と教授に文句言ったらしいが
自分でちょっとくらい書き換えればいいのに。猿なのか?
446 :
32 :2011/01/15(土) 02:50:21
>>58 の言っていた2点間の最短距離と経路データ(1から13の最短経路は1→10→13という感じ)は求められたんですけど
それをもとに検索していく方法がわからないので、もしまだいたら検索方法を教えていただけないでしょうか
書き換え度の判定プログラムを作成せよ。宿題になるかな?
ほとんどが diff の肝な部分に集約されてるな
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
>>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
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
連続ですが、どうかお願いします;;
ちょっと疑問なんだけどその文章をそのままCに書き起こすだけで 何も考える必要なく回答になるんだけどどうして出来ないの? 授業中寝てるの?
>>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
大きな課題になってくると面倒で宿題スレじゃ誰も解かなくなるから、そのうち苦労するぞ
>>459 本当に解いてもらいたくて出題してる人のほうが少ないでしょう。
自作自演が8割
462 :
デフォルトの名無しさん :2011/01/15(土) 14:56:38
ありがとうございます;;
自作自演って自分で出題して自分で回答するって事? ......そんな奴居るのか?
>>464 私はその自作自演の本人だけど、あのスレはよその
宿題スレから問題をもらってきて、いろんな言語で回答
してみて、言語による表現の違いを楽しもうという趣旨
で始まった。第一番にPrologの回答を載せて続きを待
っているだけ。
>>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 関数を使用して下さい。
Mac使う人って…
マカは情弱だな。
Wiki使えっていうのがおもしろいなw
wikiを自分で編集して的外れな式にしてみてはどうか
なんで余計なことするかな しかもstrtokとかないわ
小手先プログラマほど、本質的ではない部分を自分好みに直したがるよね しかも大抵、それは悪化にしかなっていない
>>473 fscanf() だとファイルが不正な場合、例えば一行に3項目や5項目有った場合に問題が生じるから
fgets() -> sscanf() なら良いけどね、strtok() を使うのは習慣か趣味か自分でも良く判らん
strtokって仕様が特殊だからなぁ
>>476 元から出来てる部分をいじるのは良くない
特に大学の課題なんかでは、指定されている部分を下手に書き換えてもいいことないよ
478 :
デフォルトの名無しさん :2011/01/15(土) 23:45:55
strtokってスレッドセーフになったんだっけ?
479 :
デフォルトの名無しさん :2011/01/15(土) 23:52:08
strtok_rがリエントラント版
>>477 でも output() も書き直したからねぇ...
出題者が気に食わなければ元に戻せば良いだけの話だろ
>>478 スレッドセーフじゃないよ、スレッドセーフな strtok_r() ってのが有るけど
481 :
デフォルトの名無しさん :2011/01/15(土) 23:58:47
482 :
デフォルトの名無しさん :2011/01/16(日) 01:31:43
C言語で作曲したいのですが、どうすればいいのでしょう
0x0042(8bit)で音色を決めて0x0061(8bit)で出力 Windowsじゃ無理だと思うけど
>>484 midiポートにアクセスするなら似た方法も使えるよ
486 :
デフォルトの名無しさん :2011/01/16(日) 01:54:10
それは作曲ではなくただ音を鳴らすだけだよね。
誰か楽しい宿題ないのか
488 :
デフォルトの名無しさん :2011/01/16(日) 02:11:56
>>487 早く宿題のない平和な世界になるといいね。
490 :
デフォルトの名無しさん :2011/01/16(日) 02:40:08
不定期あげ
>>487 仕事レベルならともかく学校レベルだとそんな楽しい宿題ないっしょ。
492 :
デフォルトの名無しさん :2011/01/16(日) 07:11:04
何か宿題依頼減ったな。 それだけ皆が成長したってことか。
[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
>>494 ありがとうございます。
404 Not Found
The resource could not be found.
404 Not Found
codepad自体に繋がり難くなってるのかな。
[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日 よろしくお願いします。
500 :
499 :2011/01/16(日) 13:45:20
>>499 ありがとうございます。
迷惑でなければ、配列で作っていただけると助かります。
先に言っておかず申し訳ございません。
504 :
デフォルトの名無しさん :2011/01/16(日) 14:10:54
>>495 あれ開かないのか?
ちょっとPCみてくる。
PCからだと、規制かかっているせいで携帯からレスだけしてるんだな。
>>499 そのプログラム見て
球の頂点を手打ちで設定してたプログラムを思い出した
506 :
デフォルトの名無しさん :2011/01/16(日) 14:33:46
507 :
デフォルトの名無しさん :2011/01/16(日) 14:44:43
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; //順位更新 } }
>>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になってしまうんですが
改善するには、どうしたらいいですか?
お手数ですが、書き加えて教えて下さい。
お願いします。
j=i+1;だわ
513 :
デフォルトの名無しさん :2011/01/16(日) 15:23:47
i = i++;
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言語の宿題は糞
C言語の宿題は糞 というやつは白痴
519 :
デフォルトの名無しさん :2011/01/16(日) 18:37:24
C言語の宿題は糞 というやつは白痴 というやつはローガン
>>167 ですが、このプログラムを構造体化したプログラムをお願いします。
既存のやつを構造体にするのはめんどいだけだからなぁ
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まで集まったことをどうやって確認するのかわからず、お手上げ状態です。どなたかお力添えいただければ幸いです。
非所持は8種類だが乱数は全部の種類で考えないといけないでしょダブルってこともありえるんだから 集まったかどうかは 持ってるを1、持ってないを0として配列で管理するかな
mallocは習って無さそうだけど十分な長さの固定長配列でやるでいいんかな
526 :
デフォルトの名無しさん :2011/01/16(日) 21:22:38
>>523 考え方としては、1万回繰り返すよりも、
例えば100セット揃えるまでに、
何個購入したかを数える方が楽だと思う。
>>527 >全部集まったら、集まるまでに何度乱数発生させたかを記憶
>>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;
}
>>527 そのやり方だと、実際の確率より少ない回数になるからダメ
設問が、「全種集めるためには平均して何個お菓子を購入すればよいか」とあるじゃない? 10000個購入しても、揃わなかった最後の端数部分は無駄になってない?
532 :
AQ :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
534 :
AQ :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まで]
538 :
デフォルトの名無しさん :2011/01/17(月) 00:37:27
>>537 ls って /usr/bin/ls じゃないの?
そもそも Unix のシェルに内部コマンドなんて有ったっけ?
>>538 ls は違うと思うけど
内部コマンドはあるよ
でなきゃシェルスクリプトなんて書けない
>>521 どんな雑なものでも動けばいいのでお願いしますm(_ _)m
>540 欲をいえば、*とかを展開してほしい 履歴機能とか リダイレクト(>)したときのパーミッションが0104になっている、これはあかん
>540 まぁ、そんなに長くこのシェルに入っておくことはないけど 268, 270行目のmain()内でファイルを開いて閉じてない メモリリークチェックしたけど今のところこれだけ
>>542 ご指摘感謝です。
>欲をいえば、*とかを展開してほしい
確かにこれは次にとりかかるべき課題です。でも、これをするには、んー、今の組み方を根本的に変えなくていけないでしょうね。
>>542 >リダイレクト(>)したときのパーミッションが0104になっている、これはあかん
>>109 この点を修正しました。open() の第 3 引数を安直に 0666 としただけですが。
http://codepad.org/hBrx6VoE
>>539 制御構造も内部コマンド扱いなんだね、意識した事はなかったけど
cd や pwd も内部コマンドなのは知らんかった
>545 UN*Xはそうなんだろうか せんとくんではpwdは/bin/ある cdは、内部らしい で、内部コマンド使うと盛大にリークした さすがに解析面倒だわ、たぶんforkした奴がコマンド見付かんねぇで戻ってきて(戻ってくるのか?)なにもしてないのが原因と思うけど >546 直っている
>>547 >コマンド見付かんねぇで戻ってきて(戻ってくるのか?)
もどってくるというか‥‥‥。
>>546 ではコマンドを見つからないときは、そのプロセスは即座に何も考えずに exit() してプロセスの全領域を OS に返してしまいます。
今気づいたんだけど、openの定義って、 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); とあるけど、なんでCで関数のオーバーロード出来るの?
open()だろ
やっぱ講義受けてない奴が書くとこんなに糞になるのか・・・
丸写しで提出する奴が何人いるか楽しみだなw
月にいってます
556 :
デフォルトの名無しさん :2011/01/17(月) 09:04:36
書き込めないんじゃないの?
sage忘れすまん。
559 :
デフォルトの名無しさん :2011/01/17(月) 09:55:59
このスレで釣りとかあんのか?(笑)
また忘れた
まだ誰もやってない宿題どれ?
[1] 授業単元:プログラミング [2] 問題文(含コード&リンク): (1)~(5)の穴埋め test2の出力例 $ ./test2 ************* ...........* *********** .........* ********* .......* ******* .....* ***** ...* *** ..* * $
#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] その他の制限:
すみません 最後の行「;」でなく「}」ですね 急いで書いたので間違いがあるかもしれませんが 脳内補完でお願いします・・・
566 :
デフォルトの名無しさん :2011/01/17(月) 17:52:25
>>565 これはさすがに授業中寝てたとしか思えん
出力例 最終から2番目の ..* は .* の間違いではないのかな? 法則性がちと面倒っぽいんだけど ************* 13 ...........* 12 *********** 11 .........* 10 ********* 9 .......* 8 ******* 7 .....* 6 ***** 5 ...* 4 *** 3 ..* 3 * 1
本当に
>>563 が出力例なら
(3) i !=11 ? (12-i) : 2
[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 を再度まとめました。よろしくお願いします。
>>568-569 ありがとうございます
指摘通りご入力です・・・
もう1つお願いします
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
(1)~(5)の穴埋め
$ ./test02
.*
**..
...***
****....
.....*****
******......
......******
$
#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 即レスありがとうございます
助かりました
元のソースがひどいなw
そんなに酷いか? 無駄に printf() 使ってる(問題だから)くらいしか気にならないけど
[1] 授業単元:プログラミング演習 [2] 問題文(含コード&リンク) [3] 環境 問題1 テキストファイルのコピーを作るプログラムを作れ 問題2 問題1について下記のようにコピー元とコピー先のファイル名を引数で指定できるようにプログラムを変更せよ ./a. out <コピー元ファイル名> <コピー先ファイル名> [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:1月19日 [5] その他の制限: なし よろしくお願いします。
#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; }
582 :
581 :2011/01/18(火) 10:58:24
>>581 は問題2の方だな。
問題1の方もいるなら作るよ。
585 :
493 :2011/01/18(火) 11:16:48
うほ、レスあったのか見落としてた。
>>494 ,504 開けません。404 notfoundが表示されています。
>>562 やっぱトップダウン解析は遠慮され易いのかな。
>>585 一応ゆあったけどロダにupできんね… codepad に3つ張る?
>>572 全く意味不明なのですが、別にヒントはないのですか?
589 :
588 :2011/01/18(火) 14:40:09
すみません。「私にとって」意味不明です。 リバースエンジニアリング的な意味で、詳細仕様を 復元してみることくらいしか、やることを思いつき ません。
591 :
デフォルトの名無しさん :2011/01/18(火) 17:18:26
糞スレあげ
UNIXでテキストファイルって限定している意味が良く分からない そうでないときはエラーにすれば良いのか?
質問者とっととまとめやがれ。 しねーのなら無視だ
>>592-593 >>583 を書いた者だけど問2のつもりで書いたよ
でも問1を問2と差別化する方法が判らないよ
>>594 の説も有るかも知れないけど、問として難しすぎないか?
もし、講師が現場を知らない爺なら、fopen() → fgets() →fputs() の流れを期待してるのかもしれない
誰も頼んじゃいないのに 標準関数の車輪作ったり、依存関数を使ったりと 移植性・可読性・生産性を下げて頑張っちゃう人っているよね
環境依存って言った方が分かりやすいと思う
>>599 宿題における、移植性・可読性・生産性って何ですか?
>>588-589 説明不足でしたすいません
>>572 のプログラムと同じ動作をする構造体を用いるプログラムを作りなさいという問題です
全く同じじゃなくても構いません
>>603 strdup とか MS の 〜〜_s 系の関数とかじゃね
>>603 ただの世間話ですけど、何か気に障りました?
なるべく環境依存しない、処理系依存しないということで了解します
>>604 void _read_image(const char *);
を
struct Name {
const char* filename;
};
void _read_image(struct Name);
こんなのでも通すの? 構造体使ってる
◆QZaw55cn4cは荒らしだからレスしないように
>>599 車輪が作れないと、どっかのアホみたいに知ってるコードのコピペしかできなくなるぞw
車輪がどのような理屈で成り立っているのかを知るためには再発明が一番だわな オレオレCコンパイラなんて、 結構な数が再生産されてるんじゃね? # つか、 おれも作った記憶あるけど
先頭に#をつけて逃げを作るくらいなら、変な自己主張しなければいいのに
>>613 昔のおっさんの習慣だわ、
「先頭に#」 == 独り言 || 突っ込んでも返事しない || わかるやつだけわかりゃいい
先輩SEがコメントは信じるなって言ってた
IDがないと殺伐としやすいな。
もちろんhogeは知ってるけど、このネタはなんか寒い
結局エビステーメーは糞ってことでおk?
>>620 いろんなものをパロってるから知らないと面白くないよ
知る必要もないけどね
つまり、C++の規格票においては識別子として
Unicode文字のうち英数字以外のその他の国の字も許容しているので
(ただし、例外となる文字や先頭に来てはいけない文字は列挙されている)
>>361 にある
const int 体力上限 = 50;
のような宣言はむしろ動かないほうが規格に合致しないコンパイラということなわけだ。
当たり前じゃん
[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] その他の制限: なし よろしくお願いします。
JAVA辺りはデフォで動くよな。
>>626 ただ聞くだけじゃなく、ここまでやってみたけど思うように動かないからどうすればいい?とかできないかね?
いくらなんでも初歩の初歩聞くやつ多すぎ。
ちょっとでも考えないと脳みそ腐るぞ。
将来使う使わないにしても小学校の計算ドリルが解けないのと同じくらい恥ずかしいことだと理解すべき。
バカ相手に説教するって楽しいよねw
633 :
632 :2011/01/19(水) 01:33:16
634 :
631 :2011/01/19(水) 02:19:12
最近のって大体L2まではありますか?
636 :
デフォルトの名無しさん :2011/01/19(水) 09:38:23
638 :
636 :2011/01/19(水) 10:41:58
ユーザ関数 課題9: コンピュータ(com)とあなた(you)がジャンケンをするプ ログラムにおいて,以下の2つユーザ関数に作成して, 実行できるようにせよ 1.コンピュータ(com)の「手」を出力する int Rival(void) 2.勝敗を判定し,出力する void Judge(int you, int com) 問題文はこれです。
#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()); }
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
おねがいします
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 ); /* リストの表示 */ }
[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] その他の制限: なし よろしくお願いします。
>>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;
}
宿題ではないですが、よろしくお願いします。 [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関数を用いて、再定義→格納と考えたのですが、 全然美しくない&むしろ動作を重くなると予想されるため、他に方法がないか探しています。 何か慧聡がありましたら、御教授お願い致します。
環境を書き漏らしておりました。以下が正式な環境です。 [3] 環境 [3.1] OS:windows xp (Windows/Linux/等々) [3.2] コンパイラ名とバージョン:指定なし、環境はborlandとcPad [3.3] 言語:C (C/C++/どちらでも可 のいずれか)
#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; }
fcloseするならfreeもしてよね!
>>652 ありがとうございます。
早速、試してみます。
構造体に格納したかったんじゃないの?
>>655 ありがとうございます。
やはりそうでしたか。上手いこといかず、どこで読み込んだ文字数分を
再定義しているか、四苦八苦しながら探しているところでした。
>>656 格納したい構造体の定義を示さないと、回答不能じゃないかな?
658 :
デフォルトの名無しさん :2011/01/19(水) 22:00:22
<<643 ありがとうございました
>>635 エスパーするとL2なんか普通に乗ってる
てかいつの話してんだ15年前か
>>650 項目の最大文字数が決まってるなら行数が判れば良いって事?
だったら1回 fgets() で読んで行数をカウントすれば?
普通は構造体配列を規定サイズで確保して、溢れる時に規定サイズ分増やして realloc() する様なコードを書くけどね
>>650 ファイル全体を読み込むだけのメモリ確保できるなら、
一度全部メモリの読込み、そこで必要なサイズ、個数を数え、
あらためて、配列用にmallocしてみるのは?
釣れたw
>>659 10年前の話なんですが・・・もしかして現在の話だと思いましたか
何これ怖い 番号も666で呪われてるから誰も触れるなよ
668 :
666 :2011/01/20(木) 00:34:42
途中に表示が00/00/00〜となっている箇所がありますがそこは消して頂いて構いません。 よろしくお願い致します。
俺サクラエディタで開いてみたが666行目特に問題ないようだけど・・・
670 :
669 :2011/01/20(木) 00:40:34
あ~ そういうことか。 俺のレススルーして。 はずかしい・・ orz
呪われてるw
あれってどこの国だっけ?
>>609 ありがとうございます
そうすればいいのですね!
675 :
666 :2011/01/20(木) 02:05:17
ありがとうございます! 早速、試してみます!
ダミアンの呪いだぁ〜
コピー 〜 課題.csv
まではオケ?
>>666 +12
682 :
680 :2011/01/20(木) 09:10:33
コピー+〜+課題.csv が正しいファイル名では?
>>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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
685 :
684 :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); /* メイン処理 *
686 :
684 :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;/*おもてフラグリセット*/ } }
687 :
684 :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++; } } }
688 :
684 :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)
>>684 えと
>>1 にある
>【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
>
http://codepad.org/ ←遅い時間は重い事があります
>
http://ideone.com/ コードの記載はこのURLのどちらか使ってください。
URL開いてからの手順は1.コードを入れて 2.Cにチェック入れて 3.submitボタン押して
4.URLコピーして 5.そのURLをここに張り付けて。
>>689 ここのスレにレスできなくなってるなら
2ch内で”代行”と検索してレス代行をしてくれる人にお願いして。
レス代行スレには書き込めるはずなので。
あのー・・
[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に入力してある データを日程の昇順でソートし、出力したいのですがよくわかりません・・・。 ファイルをオープンした後に日程の配列を読み込み、それをソート後、日程と内容の配列を関連づければいいのでしょうか?
>>694 日程と内容を二つの配列にするのではなく、日程と内容を持った構造体の配列にすれば qsort() でソートして出力すれば良い
#include <stdio.h> int main(void) { system("sort txt > tmp"); system("mv tmp txt"); return 0; }
>>697 内容に空白が含まれてるとマズい事にならんか?
702 :
696 :2011/01/21(金) 09:17:00
俺様の勝ち
[1] 授業単元:プログラミング演習 2 [2] 問題文(含コード&リンク) [3] 環境 @キーボードから学生番号と氏名の組をn個読み込み、ファイルに書き込む関数を作れ。ただし、nの値とファイル名は引数として取得するものとする。 A引数で取得したファイル名のファイルから同じく引数で取得した個数の学生番号と氏名のデータを構造体変数に格納し、学生番号順に表示する関数を作れ。 B以上で作成した関数を使用し、プログラムを完成せよ。ただし、nの値と使用するファイルの名前はプログラムの引数として与えられるものとする。 [3.1] OS: unix [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:1月22日 [5] その他の制限: なし よろしくお願いします。
#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); }
>>587 レスから三日も経過した後ですが、ありがとうございました。
2年後くらいには質問者から回答者になれるくらいに頑張ります。
ファイルの入出力ど忘れした
キーボードから読み取り、かつ引数として取得ってどういう状態なんだろ
>>707 n と ファイル名はコマンドラインで 番号氏名はキーボードからって書いてあるようにしか読めんが
 ̄ ̄| ┌‐┐ __|_ _l__|_ ┌‐┐ ^ω^) /⌒ヽ \ / (^ω^) _l__|_ 7 ⌒い _( ^ω^) X. /⌒ヽ / ヽ (^ω^) | l /フ ̄⌒ヽ n/ \ (^ω^ )_ l / ヽ \ \ (/l、__\__ソ (^Vヽ  ̄ 、 \ l | \ /っ / ,(_\ ー' 人 ̄ )(つ │/_/ /__ノ 〈__r‐\ \ ___)─' └--' └-┘ (フ │ | │ ┤ ト-ヘ
710 :
◆IluCWboVho :2011/01/21(金) 13:29:20
711 :
◆IluCWboVho :2011/01/21(金) 13:30:04
すみません!問題文のpassは「kadai」です 忘れて申し訳ございませんでした
>>711 r = sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2))
>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
716 :
◆IluCWboVho :2011/01/21(金) 15:21:38
717 :
デフォルトの名無しさん :2011/01/21(金) 15:50:34
マツコ・デラックスと細木数子の違いが分からん。
Matz子は♂
ひさしぶりにC言語も使おうかな 最近Pythonばかり使っているからなぁ >716 (1)データの読み込む (2)辞書を作成 (3)ユーザからの入力を辞書から引く (4)新たなNを計算 (5)Nが入力されるまで(3)と(4)を繰り返す (6)辞書(リストでもツリーでもいい)からもっともNに近いものを見つけて出力 面倒なので、結局Pythonでやりました
>>719 C++可だからmapが使えるし
2008だからtr1でshared_ptrが使えるので
さほど変わらんような。
Pythonとはまた外国かぶれな売国人が
>>701 malloc(), realloc(), free() のラッパを二重に重ねてチェックしましたが、メモリリークの兆候は見つけることはできませんでした。
もしメモリリークを検出するソフトをお使いでメモリリークを発見されたのなら、お手数ですが、以下のコードでもう一度チェックしていただけないでしょうか。
http://codepad.org/Gf8KBG6y リークしているメモリの先頭4バイトの内容をお知らせいただければ幸いです。
>>694 しばしお待ちを。
どなたかお願いします。 #include <glut.h>だと画像が表示されず、エラーが出ますが、 #include <GL/glut.h>だと画像が表示されます。 どうしてでしょうか?教えてください。
>723 パスが通っていない 環境による Windows使っているのなら僕は解答できない
>>723 ビルドが通り実行時に不具合が出るという事なら
glut.hとGL/glut.hをタグジャンプなどで開き比較してみてはいかがでしょうか?
おそらくリンクされるライブラリが異なるぐらいの事だろうけど。
>>722 heap管理の関数を下請けに使ってるから、メモリリークっぽい動きになってるだけでしょ
一度に自前で処理するメモリを確保して、その中だけで動くようにしてみたら
>>722 ゴメン、見直したら anaryze() で mygetline() で確保してる領域を開放してるんだな
>>701 は撤回するけど、良くない作りだな
[1] 授業単元:応用アルゴリズム論
[2] 問題文(含コード&リンク):
http://codepad.org/KKYds7DX [3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: Cでお願いします
[4] 期限: 1月いっぱい
[5] その他の制限: 問題文中にある課題4というのは成分のわかってる行列の内積をもとめるものでした
ので面倒でしたらその部分は省いていただいても結構です
北朝鮮では成分が悪いと二等市民扱いなんだってさ…
>>728 matrix01.dataはどこにあるの?
それと課題4のソースはないの?
っていうかその部分を省いたらファイルの読み込みしかやることがないんだけど。
>>730 同サイズの行列2つを読み込む様に書いてるから加算結果でも出力するんじゃね?
>>727 「malloc() したところで free() する」という作法があることは理解しています。win32api の一部の関数は、厳格にこれを守っています。
しかし、この作法に従うと「内側で malloc() した領域を返す関数」も避けたほうがいい、これは個人的にはなかなかしんどいと感じています。
メモリリークを検出する手段を手持ちにしているので、コーディングのなかでチェックを並行しつつ、階層を横断していても適宜 malloc(), free() を使うスタイルを私はとっています。
>>732 内部で領域を確保する関数を作るなら、確保した領域を開放する関数もセットで作れば良いだけの話じゃないの?
当然、それらは同じ関数内からコールする、業務コードでは常識だよ
逆に困ってしまうのは anaryze と addlist の場合だね
anaryze で確保した領域を addlist 内でそのまま使っているからメモリ管理の責任所在が不明確になる
俺なら addlist 内で anaryze も行うかなぁ
そうすれば addlist 内で text の領域を確保して dellist 内で text の領域を開放する様な構造にできるだろう
厳格な作法に拘らないならば
>>699 は冗長だ
myGetOneData( File*, int* char** ) みたいな関数を作れば malloc(), free() を一セット減らせるからね
>>733 >内部で領域を確保する関数を作るなら、確保した領域を開放する関数もセットで作れば良いだけの話じゃないの?
次の機会にそれで書いてみます。
>analyzeで確保した領域をaddlist内でそのまま使っているからメモリ管理の責任所在が不明確になる
malloc() が返すポインタが複数の関数やデータ構造を渡り歩く、というイメージで作りましたが、これも規模が大きくなると壁が待ち構えているのかもしれません。私はまだその域まで到達していませんが。
>myGetOneData(FILE*,int*,char**)みたいな関数を作れば
なるほど。
735 :
Rie :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)); }}}}}
736 :
Rie :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のプログラムになります。
>>735 > [3.2] VC2005
> [3.3] C#
>>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::::||:| !:! !:! |:/:::/:| ヽ. ヽ. 〈_/ヽ_/
誰、このかわいい子?
珍珍
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
もうかなり問題たまってるな
さっさとやれよプログラム製造機
たまってる問題をリストアップしてくれ
問題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日まで よろしくお願いします。
>>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;
}
753 :
728 :2011/01/22(土) 21:40:35
>>710 は怪しいからリンク開きたくないな
codepadあたりに貼ってくれないか
はぁ?
ただのアップローダだぞ?
課題内容の確認だが 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となる。 ということか?
761 :
760 :2011/01/23(日) 05:09:27
やろうと思ったが寝る。 ちなみにこの課題はDOS窓でいいのか?
おやすみなさい
>>760 はい、そのとおりです。
DOS窓で構いません、API等は自力で何とかしようと思います。
しゃあねぇなー…
>>759 拡張子がなんだろうがHTML+javascriptのテキストだったら
実行されてウイルス感染するの知らないのか
アップデート一切適用してないIE6以前ならそうなるかもね
768 :
749 :2011/01/23(日) 13:21:08
769 :
694 :2011/01/23(日) 14:21:24
dotうpろだは1日で問題消えるからなあ
あじすあべば
>>710 まだ誰もやってないようだから晩飯食べたらやる。でも2時間かかる。
なんせ私も初心者の域を出てないからな。
ちなみにテキストデータの形式はCSVでいいのか?
A, 100, 200, 300
B, 50, 60, 80
C, 90, 30, 70
:
:
N, 20, 30, 40
こんな感じ? これを前提にやる。問題あればいってくり。
>>774 CSVで構いません
問題がアップローダーから消えてしまいましたが、
>>760 さんの解釈で間違いないです。
宜しくお願いします。
[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] その他の制限: 特に無し 締切りまであまり時間が無いですが宜しくお願いします。
777 :
774 :2011/01/23(日) 23:19:09
[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日まで よろしくお願いします。
問題たまってるから依頼止めろ。
>>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)
あと、プログラムの正当性分からないからチェックして出すようにしてね
[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] その他の制限: なし よろしくお願いします。
784 :
777 :2011/01/24(月) 00:48:10
>>710 >>775 今構造体に直してる最中明日午前中に終わらせます。
一応形にはなった。 ぜぇぜぇ。
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(){ } メンドクサイな
[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] その他の制限: 特に無し お願いいたします。
789 :
777 :2011/01/24(月) 03:47:26
790 :
777 :2011/01/24(月) 04:14:32
>>710 >>775 あれ? いま気が付いたが
>>714 みると
要素名の入力を何回かしてN入力で終了という事かな。
てっきり要素名は1回入力してその要素名を何回引き算するか
かと思って進めてた。
手直ししなくちゃ。 でも寝る。 ZZZzzz。。。。
>>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を作る
# よりわかりやすいインターフェースにする
# 等、その他、鋭意工夫を期待しています
# (と書いてありましたが、そこまでは必要ないと思います。)
# パワーポイントに長々と書いてあったのを要約したのですが、それでも長くなってすみません*/
>>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;
}
796 :
777 :2011/01/24(月) 10:24:54
何様だよゴミ
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 お願いします
[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] その他の制限:問題文に「細かい指定は無く、データ構造や関数は各自適切と考えるものを作成すればよい」
とありますが、高度なものではなく、なるべく簡単な(基本的な)ものを作成して頂けたらと思います
また、コメント文を付けて頂ければ有難いですが、こちらは面倒であれば構いません
よろしくお願いします
>>803 このスレ見て勉強してるのですが
これtextのファイル名とか中身どう書けばいいんですか?
806 :
791 :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行は必要
>>805 exeと同じディレクトリに任意のファイル名のテキストファイルを置いて
中に
A,1,2,3
B,2,3,4
....
N,10,10,10
と同じ記述形式で書くだけで自動的に認識して動くってことだ
見てないからわからんけど多分
>>808 自動的には認識しないよw
c:>プログラム名 ファイル名
って使う、Usage を付けとけば良かったな
>>809 ありがとうございます。
ちなみにリダイレクトするはどの何行目の箇所でしょうか?
>>812 リダイレクトの意味を履き違えてました。リダイレクトしてファイルに出力する場合
コマンドはどんなふうに記述すればいいか教えていただけませんか?
>>812 コマンドライン上で
実行ファイル > 出力ファイル[enter]
>>815 ありがとうございます。まだソースを見て勉強している最中なんですが
問題2のボックスミュラーのヒストグラム[-5,5] を100分割と[2.5,5]を25分割のそれぞれはこのソースで求められるのでしょうか?
>>817 そうでした…本当にありがとうございました。
[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日 よろしくお願いします。
821 :
デフォルトの名無しさん :2011/01/25(火) 01:28:27
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 どうかよろしくお願いします。
826 :
デフォルトの名無しさん :2011/01/25(火) 19:29:12
>>825 簡単なヒントだけでもいただけないでしょうか。
最後の課題なので何としても形にして提出しないといけないんです。
あ
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つ以上の文字列を入れると「セグメンテーション違反です」と言われてしまうのです。
argc は 実行時に渡したパラメータ数+1 (実行ファイル名そのものを含む) staraignt_selection() 第2引数で要求しているのは 第1引数でわたした文字列の長さ 意図としては staraignt_selection(argv[i], strlen(argv[i])); じゃないか?
>>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
とコンパイラに言われてしまいました。
これってどういう意味なのでしょうか?
831 :
828 :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
#include <string.h> または size_t strlen(char cosnt*);
834 :
828 :2011/01/25(火) 22:24:23
>>833 ありがとうございます。
けど、なぜか「セグメンテーション違反です」と出てしまいます。
もしかして、OSなどの環境によっては違う結果になったりしますか?
手元にあるチェックできる環境がcodepad しかないが… ちょっと待って straight_selection そのものが怪しい気配
836 :
828 :2011/01/25(火) 22:31:18
Vistaはマズイ
838 :
828 :2011/01/25(火) 22:43:06
>>837 そうですか。WindowsでもLinuxでもダメなら根本的な間違いですね。
間違っているところが分からない、いやなパタンになってしまいました。
ありがとうございました。充電してきます。m(_ _)m
なんかぱっと見 a.out bacdって打ったら abcdってソートされてる感じがするんだけど a.out bac abc cdeって打ったら abc bac cdeって結果が欲しいんじゃないの?
単に argv[] の指してる先を書き変えるのはまずい ってだけっぽい char* testdata[] = { "321", "6543" }; を渡すと codepad でもセグった char testdata[][32] = { "321", "6543" }; を渡すと落ちなかった(が、正しくソートできてない)
>828 straight_selection(char const**foo, size_t elems); でstrcmp()だろ
for (k=x=a[i],j=i+1;j<n;j++) こう直せバカ
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; } 試してないのでうまくいくかわからん、後悔している
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; } こうだった、修行がたりない
> char const* const char* の方がいいと思うよ。
ポインタも変更させたくないとき const char *const*にすんの まぁ、好みの問題だね
ないな。
(void *)(void *)(void *)(void *)(void *)(void *)func(int *******a)
>>847 > const char *const*にすんの
const char* constでしょ?
最近見ないけど
char const*と書くなら書くで
char const* constと書いて一貫性をもって欲しいところ
>>823 ソース内の全角文字が化けて見えるのは chrome の俺だけ?
854 :
デフォルトの名無しさん :2011/01/26(水) 00:57:22
>>853 すみません!もう一度ソースあげなおします!!
856 :
デフォルトの名無しさん :2011/01/26(水) 01:08:20
>>855 ありがとうございます。
申し訳ないのですが、4-B(下)の課題は「各桁の数字を合計した数字が7もしくは2で割り切れるか」どうかなので、
貼ってくださったプログラムは少々違っているのですが……(厳密に言えば7と2の両方で割り切れる数字(=14etc)はないですし)
>>858 ありゃ、間違えたか?
ごめ、今見てみる。
>>858 問題の意味が分かった。なるほど。
例えば 7x6=42 4+2=6 2で割り切れるから* って事か。
急いでやるけどちょっとカップめん食べる。
862 :
860 :2011/01/26(水) 01:51:16
> 例えば 7x6=42 4+2=6 2で割り切れるから* って事か。 ひどいですね 気持ちはありがたいですが結構です
865 :
864 :2011/01/26(水) 02:16:35
>>863 あれそういうことじゃないのか。
分かった。やめておく。 orz
「各桁の数字を合計した数字」ってなんだ?
867 :
デフォルトの名無しさん :2011/01/26(水) 02:28:12
>>860 本当にありがとうございます!!
えっと、2つお聞きしたいことがあります。
server02.cからclient02.cにコピペしなくてはならない部分は、
mainの前にコピペすればいいんでしょうか?
それと、localhostとport番号が//になっているのですが、
この部分を有効にしてプログラムを組むことはできないでしょうか?
課題ではlocalhost内で動作するようにとあったのと、
ポート番号を割り当てるようにとあったので、
なくしてしまったらまずい部分のように思うのですが、大丈夫でしょうか?
>>863 あってるだろ?何が酷いんだ?
それより7でも2でも割り切れるって事は14しか無いんだけど九九の中にそんな数字は無いって所に誰か突っ込まないの?
>>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のどちらにも入れるんですよね?
872 :
デフォルトの名無しさん :2011/01/26(水) 02:59:34
>>871 ありがとうございます。
すみません。もうひとつだけいいでしょうか?
このプログラムは人対人のやり取りのプログラムであってますよね?
できたら、server側はランダムでclient側に手を返すようにしたいのですが、
お願いできますか?
>>868 字面でしょ
他にもたくさん人がいるのに
全角英数を混在するレベルの人から教わりたくはないわな
>>868 >(厳密に言えば7と2の両方で割り切れる数字(=14etc)はないですし)
>>863 は質問者になりすましたただの煽りだろw
ずっと粘着してるキチガイなんだからスルーしとけよ
878 :
デフォルトの名無しさん :2011/01/26(水) 04:15:14
>>876 ありがとうございます!
judgeJyanken()の部分を削除すれば後は大丈夫でしょうか?
混在どころかム(マ)板で全角英数を使う事自体理解できん プログラミング以前のPC初心者か 昔々IBMなんちゃら0F,0Eなんちゃららという 還暦近くのおじいちゃんぐらいだろ
881 :
デフォルトの名無しさん :2011/01/26(水) 04:45:15
>>880 最初のと
>>876 が違うものだというのはわかります。
動かすのは明日朝イチで学校に行って確かめてみようと思ってます。
>>864 遅くなってしまいましたが、ありがとうございました。
884 :
828 :2011/01/26(水) 23:30:29
[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] その他の制限:特にありません。よろしくお願いします。
>>879 なんで全角使っちゃダメなのか教えて
俺も半角使うけど
全角数字は結構便利だぞ
全角半角って言い方、そろそろやめようぜ
>>885 なんでこんなつまんねえ問題しかないの
中学生の数学の問題だろ
>>890 20-23行目の&演算子が不要なので削除
【質問テンプレ】
[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」
という具合に追加されたファイルになればよいです。
「年度」は「年」なのですが細かい表現は気にするなと機嫌損ねちゃいましたが
【表示結果】通りになればいいとのことでした。
王ザッパーに言うと、JIS規格(JIS X 0208)ではもじもじ符号化方式の中で ASCIIと0208を同時に使う場合で両方に含まれる文字があるときはASCIIの方の符号を、 0201カタカナと0208を同時に使う場合で両方に含まれる文字があるときは0208の方の符号を、 使うようにしてね☆って推奨されている。推奨されているだけなので従う義理はない。
894 :
892 :2011/01/27(木) 03:15:55
>>893 ファイルから漢字読み込みに難があるということでしょうか。
そうであれば明日先生に聞いてきますので
>>892 保留ということでお願いいたします。
改めてこちらにレスさせて頂きます。ありがとうございます。
>>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
はいはい出来てる出来てる。 さっさとそれ出してこいや
899 :
892 :2011/01/27(木) 13:33:28
>>899 PS. 課題内の表示結果「year」の数字は2010 2011で構いません。
>>895 早とちりでしたか。すいません、でももう聞いちゃいました。
>>896 月は変化することありません。常に4〜3月までの表示になります。
ただ、ちゃんとファイルから読み込んで表示させることが求められています。
どうぞよろしくお願いいたします。
>>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,
とする。
903 :
899 :2011/01/27(木) 13:58:28
>>902 忘れてました。おっしゃることを別の人が先生に質問したのですが
1.「ans,ans_sum」は「ans,,,,,,,,,,,,,ans_sum」でもいいと言っておりました。
2.各行の最後にカンマ「,」はつけない
との返事でした。
すいません、その場で思いつきで問題を出す先生でして。
905 :
899 :2011/01/27(木) 15:27:45
>>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日まで よろしくお願いします。
>>910 printf("A,b,c,D,e");
でOK
#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; }
#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; }
俺様の価値
916 :
デフォルトの名無しさん :2011/01/28(金) 01:14:03
>>912 はstring.hが足りないんじゃないか
まあ気づくか
>>916 俺のgccでは無くても 動いた。
>>912 すげーシンプルだけどこの質問者のレベルを考えると
printf("%c", isupper(str[i]) ? tolower(str[i]) : islower(str[i]) ? toupper(str[i]) : str[i]);
はまだNGの段階じゃないかとおもた。
むしろ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); } と書いてさえよいくらい質問者は高レベルだよ
まじかw
ポインタこれからじゃないのか? ポインタ、配列習ったばかりでこの課題が出ても不思議じゃないのは確かだけど。
>>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);
}
全角スペース使ってるから気をつけてね
でも速いしcmovの方がいいかもしれんが あと短いのに分かりづらくて面白くないか?
924 :
921 :2011/01/28(金) 02:16:30
間違えた。アットマークがちゃんと変換されないはず *p ^= *p >> 1 & (*p - 1 & 31) + 38 & 32; が正しい でもテーブルを使うのが一番速いか
質問者がただ今混乱していると予想されるw
特定の符号化文字集合を前提にしているからだめじゃよ… Cの規約によれば数字の0から9が順に並んでいることは約束されているが 各文字のビット表現やA-zが順に並んでいることなどは規定されていない。 あと for (char *p = s; *p; p++) { は C90では非標準じゃなかったっけ?
3-gramのマルコフ解析作ってくれ
ヽ( ̄д ̄;)ノ=3=3=3
コマンドプロンプト画面で遊べるゲーム作りたいけど ・テトリス ・マインスイーパ ・リバーシ(オセロね) 他に何かあったら言ってくり。
933 :
930 :2011/01/28(金) 15:30:42
>>931 ずいぶん時間のかかりそうなものを…w
>>932 まさかゲームウォッチの…?
もぐらたたきとかもあったな。ふむふむ。
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); }
@x = sho(i, j); Airekae(&i, &j); Bdouble Cint m, int n D(double) E*p F*q
#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); }
昔DOS窓でエスケープシーケンス使ったアニメーションっていうのあったな(遠い目)
なんかFM7とかPC8001の時代の話してる? てかそのころのゲームやってみたい
iが初期化されてない たぶんnumの間違いかと
>>946 >>947 は
data[i]がdata[num]
だと思うぜっ、て言ってます。
俺もそう思うし int i,num,… の i もいらないとおもう。
コンパイラの警告はちゃんと見とく習慣をつけよう
未使用の変数はIDEなら注意が出ると思うんだけどなー
>>947-948 ありがとうございます。お陰で出力されました。
ただ、testテキストには、
10
20
30と保存してあるのに、実行しても
続行するには何かキーを押してください . . .としか出力されません。
これはどうしてでしょうか?教えてください。
952 :
デフォルトの名無しさん :2011/01/29(土) 00:45:18
#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]); } を付け加えようぜ。
慶応とか恐れ多くて回答出来ません><
>>956 課題2
array[n] = rand()%101;を
array[n] = -rand()%101;に修正
printf("%d\n", array[n]);を
printf("%d\n", -array[n]);に修正
>>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;
}
[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] その他の制限:なし 期限が近くてすみませんが、よろしくお願いします。
プロセスってなに?
要するに、MPIを使って行列計算やるってこと? なら問題文にもそう加えないと分からないような
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で割る整数型の割り算を用いる よろしくお願いします。
>>963 授業単元に並列計算(MPI)と書いたのでそれで大丈夫だと思ってました。分かりにくくてすみません。
>>961 ,
>>963-964 相手は宿題丸投げのゆとり君なんだよ
重要なことは言っていないと思わないと
ゆとり君には脳弱と言う超難病持ち多いんだからね
それを理解して対応してね
[1] 授業単元: RBFネットワーク [2] 問題文(含コード&リンク): カオス時系列において、、 動径基底関数(RBF)と呼ばれる局在化された関数を用い、 それぞれの関数に重みをつけて加え、その値を予測するプログラムを作成せよ。 [3] 環境 [3.1] OS:Mac OSX [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C [4] 期限:2011年2月10日まで [5] その他の制限:カオス時系列のデータは配列で用意するつもりなので、 配列のデータを入力として使うプログラムでお願いします。
971 :
970 :2011/01/29(土) 17:53:07
あらかじめカオス時系列のサンプルが数万点与えられているとし、 その後任意の点からの予測が可能であるプログラムでお願いします。
973 :
デフォルトの名無しさん :2011/01/29(土) 18:55:09
ネタに決まってんだろJK
976 :
970 :2011/01/29(土) 23:58:45
ネタじゃないです
もうそのリンクを貼り付けて出しとけゴミ
979 :
970 :2011/01/30(日) 01:33:49
>>970 埋め込み次元と遅れ時間の推定も込みでの宿題?
だとしたらだいぶ面倒だな。
また、RBFを使う場合に分散の値はどうすればいいの?
実は970の問題を解くプログラムを作ったことがあるけど
流石にただでは教えられない。
これだからMac使ってるやつは・・・
983 :
970 :2011/01/30(日) 09:37:44
[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]なら入れ替え、という作業を繰り返す、という手法をとる よろしくお願いします
>>984 > [3.2] コンパイラ名とバージョン: teraterm pro
ちょっと良く分からない
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 あまり日にちがないですがよろしくお願いします
991 :
フォルトの名無しさん :2011/01/30(日) 15:15:06
>>990 すいません
>>493 が解決せぬまま流れてしまったのでもう一度お願いさせていただきました
992 :
フォルトの名無しさん :2011/01/30(日) 15:16:54
ひどいな
994 :
フォルトの名無しさん :2011/01/30(日) 15:37:41
うんこ以下だな
>>970 カオス時系列をRBFネットワークで合成するのは
自分の1つ前の研究テーマだったわけだけど、
まず任意の時系列が与えられた場合に各RBFのセンターベクトルの決定の問題がある。
それと
>>980 で書いたように分散も埋め込み次元も遅れ時間も普通はわからないので
それを推定するアルゴリズムが必要。
で、実際にどうすれば上手く行くかは知ってるけど教えられないので諦めてくれ。
簡単な部分で一言だけ言うなら重みだけなら逐次学習でないなら線形最小二乗法で一発で解ける。
次スレ立てます
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。