トップページ⇒tech
1001コメント346KB

宿題、手伝おっか?

■ このスレッドは過去ログ倉庫に格納されています
0001えれなNGNG
前々スレのお兄ちゃんの幼なじみ、えれなです。
宿題、判らないところとかがあったら、聞いてね。

怜さんの前スレはこちら、
http://pc.2ch.net/test/read.cgi/tech/1007902384/l50
キーワードがわかってるなら、googleで探してね。
http://www.google.co.jp/
0153麻衣派 ◆COx/Mai. NGNG
>>152
なにをしたいのかよくわからないけど…
unsigned char n=0xff;
じゃ、ダメなの?

>>151
目をつむっているときは、、、
どうしよう…。
0154デフォルトの名無しさんNGNG
>>152
無駄とかなんかそんなことより
> strcat(head,num);
これはいいのか?
0155生徒BNGNG
>>153,154
すいません。ここではchar num[]="ff"; と固定して書いたんですけど、
ホンとはこのnumにいろんな値が入ってくるのですよ。
・・・で、strtoulで16進と認識してもらうために"0x"つけたのですが・・・
やばいっすかねぇ・・・。
0156デフォルトの名無しさんNGNG
sscanf
0157えれなNGNG
undumpって事かな?
isxdigitと組み合わせて、ループまわした方が簡単そう。

0158麻衣派 ◆COx/Mai. NGNG
>>152
あー、文字列で表された数字ね。
でもそれってstrcat()していいんですか。

それと、strtoulの第3引数はintです。
0159デフォルトの名無しさんNGNG
>>154 たしかに strcat が head[]の配列境界を越えて
書き込んでしまうね。

たぶん >>152 の期待する添削結果は
char num[] = "ff";
unsigned char numuc = strtoul(num, NULL, 16);
だと思うな。
0160生徒B NGNG
>>154-159 ありがとうございます。おかげさまで出来ました!
最終的には159さんの方法でやらせていただきました。

>>154
ご指摘の通りです。うっかりしてました。

>>156
sscanf(num,"%x",numuc);でうまくできそうですね。ありがとうございます。

>>157
undumpっていうんですか。・・・・知りませんでした。鬱
0161デフォルトの名無しさんNGNG
宿題で検索サイトを作れと言われたんですけど
何から始めればいいのかわかりません。
まず最初に何をすればいいのかを誰か教えてください。
0162デフォルトの名無しさんNGNG
>>161
「何の」検索サイトを作れと言われたのか。
それがわからないと誰もアドバイスしようもない。
また、それは「何の」授業の中でいわれたのか。
C の授業中に言われたのと perl の授業中に言われたのじゃ全然違う。
0163SINGNG
低能プログラマー共、こんな所で油売ってないで仕事しろ
屑
0164デフォルトの名無しさんNGNG
>>163
自称SIの実態は屑セールスマンな人ですか?
情死す板にでもお帰りやがりください。
0165デフォルトの名無しさんNGNG
>>163
あんたもナー
0166743NGNG
#include<stdio.h>
#include<math.h>
int n=10;
int func(int n){
if(n==1) return 1;
else return(n*func(n-1));
}
double func1(double x){
int i,a;
double z=1.0;
for(i=1;i<=n;i++){
a=func(i);
z+=1.0/a*pow(x,i);}
return z;
}
main(){
double x,z;
printf("please input x:");
scanf("%lf",&x);
z=func1(x);
printf("f(x)=%lf",z);
}
はeのx乗をもとめるものだがnがでかくなるとなぜオーバーフローするのか?
おしえてちょ。
0167デフォルトの名無しさんNGNG
型の上限を越えるから
0168743NGNG
ダブルは何桁までだっけ?
0169 NGNG
>>168
13桁だYO
0170デフォルトの名無しさんNGNG
ソフトを作りました。公開するときにジャンルを書きたいと思います。
「メモリクリーナとシステムリソースの表示・アラーム機能etc」などの
機能をもったソフトはどのようなジャンルに分けられるのでしょうか?
具体的なジャンル名などありましたら教えてください。
0171デフォルトの名無しさんNGNG
ユーティリティ
0172105NGNG
皆さんのおかげで、どうやら完成したようです。
本当にありがとうございました。

もちろん参考資料として2ちゃんねるプログラム板を挙げておきます。

********************************************

#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int k,a,n;
int da[100];
double hi[100];
double lo[100];
int i, j, max, min;



if ((fp = fopen("temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}

i = 0;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
while ( a != EOF ) {
++i;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
}

max = 0;
for (k = 1; k < i; k++) {
if (hi[max] < hi[k]) {
max = k;
}
}
printf("最高気温, 日付=%g\n, %d\n", hi[max], max+1);

min = 0;
for (j = 1; j < i; j++) {
if (lo[min] > lo[j]) {
min = j;
}
}
printf("最低気温, 日付=%g\n, %d\n", lo[min], min+1);

fclose(fp);
}

********************************************************
最高気温, 日付=15
, 1
最低気温, 日付=1
, 5
0173デフォルトの名無しさんNGNG
だからなんで、一旦配列にしまうんだろう。
それから、最低気温と最高気温の表示、まちがってるじょ。
da[i]は、どこへいっちゃったんだ?
0174146NGNG
考えてくださってどうもありがとうございます。

目とか眉とか口とかそれ以外(鼻の穴とか)を
黒い部分(暗い部分)としては認識できるんですけど、
それらをどうやったら眉とかに分類してくれるんでしょうか?
0175デフォルトの名無しさんNGNG
>>172
リファクタリングしてみようか
・同じことは2度書くな
・初期化、条件判定、カウントがあるならforの方がすっきり書ける
> i = 0;
> a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
> while ( a != EOF ) {
> ++i;
> a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
> }
for(i = 0; fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]) != EOF; i++)
  ;
また、これでaの変数はいらなくなる。
0176デフォルトの名無しさんNGNG
>>173
> だからなんで、一旦配列にしまうんだろう。
あとで平均気温とかの仕様追加が発生したらとか考えると
微妙な問題だな...
0177親切な人NGNG

ヤフーオークションで、幻の人気商品、発見!!!

今は無き「コピーガードキャンセラー」↓
http://page5.auctions.yahoo.co.jp/jp/auction/e5843828

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0178105NGNG
>>173,175

173さんいう配列にしてしまうというご指摘は、
175さんのご指摘と同じですか?

あとda[]が・・。
提出したのに・・(泣)
また送ろう、しょうがない。
↓なら完成ですよね。
**************
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE *fp;
int k,a,n;
int da[100];
double hi[100];
double lo[100];
int i, j, max, min;



if ((fp = fopen("temp.dat","r"))==NULL) {
printf("file open error!!\n");
exit(1);
}

i = 0;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
while ( a != EOF ) {
++i;
a=fscanf(fp, "%d %lf %lf", &da[i], &hi[i], &lo[i]);
}

max = 0;
for (k = 1; k < i; k++) {
if (hi[max] < hi[k]) {
max = k;
}
}
printf("最高気温, 日付=%g\n, %g\n", hi[max], da[max]);

min = 0;
for (j = 1; j < i; j++) {
if (lo[min] > lo[j]) {
min = j;
}
}
printf("最低気温, 日付=%g\n, %g\n", lo[min], da[min]);

fclose(fp);
}
0179デフォルトの名無しさんNGNG
>>174
黒い部分同士の位置関係(他の部分との角度や距離)を、「典型的と思われる」データと比較するってのは、ど?
0180デフォルトの名無しさんNGNG
>>178
そんなこと言い出したらきりないよ。
そのうち、もうちょっとましなコードが書けるようになるよ。
(経験つめばね。)
0181105NGNG
>>180

そうですね。
がんばります。

長らくお世話になりました。
みなさんお元気で。
0182デフォルトの名無しさんNGNG
とある二つの四角形が重ならないようになるプログラムってどんな感じなんでしょう?
教えてください!C++でお願いします!
0183デフォルトの名無しさんNGNG
>>182
意味不明。

四角形が二つ与えられて、それが重なっているかいないかを判定したいのか?

それとも四角形を動かして、重ならないようにしたいのか?
そのときに何か条件はないん?

あと、自分でどれくらいまで考えたかも書くように。
0184デフォルトの名無しさんNGNG
>182
どんな感じと問われても…
割とシンプルだよね。
洗練されてるかどうかは、設計によるんじゃないかな。
そんな感じ。
0185デフォルトの名無しさんNGNG
△が重ならないように・・・・?

printf("△▽\n");

とか?
0186デフォルトの名無しさんNGNG

先生!!ちょっと俺の手に負えないので質問させてください

→Z
___________
          |     |
          >     |
          >R    |
          >      |       
          |     =C
          )     |
          )L    |
          )     |
_________|_____|

上の回路でR=10KΩ、L=20mH、f=10KHzとしたときに
C=10pfから500pfまで5pf感覚で変化させたときの入力インピータンスZと
Zが最大になるときのCの値をプログラムで求めなさいと言う問題なのですが…
できますか?



0187デフォルトの名無しさんNGNG
> 185
それだ!
って、そりゃ三角形だよ!! ヽ(`Д´)ノ
0188デフォルトの名無しさんNGNG
>>182
申し訳無いです、4角形を動かしてです。
ゲームとかで使うような押し合い判定って言うのかな?
そんなかんじです。
自分では、二つが重なっているかいないかを判定する所まではできたのですが・・
0189デフォルトの名無しさんNGNG
>>186
工業高校?電子基礎っぽい。
0190デフォルトの名無しさんNGNG
>>182
半年前くらいに似た奴をやったけど
もう、データ削除してしまった…
スマソ
0191デフォルトの名無しさんNGNG
>>189
はい、そうです
0192デフォルトの名無しさんNGNG
>>186
? 公式知ってんなら簡単だろ?
オレ、公式忘れちゃったもんねぇ〜。
0193191NGNG
一応大学なんですけど
落ちこぼれなんで高校生みたいなもんです
0194デフォルトの名無しさんNGNG
>>191
同じだね。学年は?
0195194NGNG
大学生か。
0196デフォルトの名無しさんNGNG
>>188
つまり、四角形を押して動かすってことか・・。
どのくらい物理的に正確にやる必要があるの?
0197デフォルトの名無しさんNGNG
>>186
Rのインピータンスは?
Lのインピータンスは?
このとき、RLのインピータンスは?
C=xとしたときの、Cのインピータンスは?
このときの、入力インピータンスは?

順に考えてみてください。
0198186NGNG
うーん…どうプログラミングしたらいいのかが分からないんですよ
例みたいなものもないし、先生は絶対教えてくれませんから
0199デフォルトの名無しさんNGNG
> 191
int zmax = 0 ;
int ans = 0 ;
for (int c = 10; c <= 500; c += 5) {
 int z = 公式(c);
 if (zmax < z) {
  zmax = z;
  ans = c;
 }
}

intでいいのかfloatやdoubleが必要なのかは氏らね。
画面に出すともファイルに吐くとも書いてないんで出力の事も氏らね。
0200デフォルトの名無しさんNGNG
>>198
お〜っと、重症ですねぇ〜。
あなた一度でもプログラム組んだことあるの?
0201デフォルトの名無しさんNGNG
とりあえずは…
0202デフォルトの名無しさんNGNG
>>198
この回路の入力インピータンスをあらわす式はわかるってこと?
じゃあ、まずいままでの最大のZを与える変数を用意しておく。
Zmaxと名前付けとくとする。で、これに十分小さい値をいれとく。
で、for文で、cを10から500まで5ずつ変化させて、そのときの入力
インピータンスZを計算させる。
このとき、ZがZmaxより大きければ、Zmaxを更新して、このときのCの値を
記憶しておく。
で、最後に記憶していたCを表示させればいい。

。。とここまで書いたら199氏がプログラム例示してくれてますね。
0203デフォルトの名無しさんNGNG
>>190
いえ、その心意気だけでありがたいです。

>>196
そんなに正確でなくともいいかと、指定されなかったものですので。
0204デフォルトの名無しさんNGNG
えれなたんってあんまし来ないね〜。
0205デフォルトの名無しさんNGNG
>>203
だったら、一番簡単なのは、Aを動かしてBと重なったときに、
BをAが動いたのと同じ方向に動かすとして、どれくらい動かせば
重ならないか計算すればいい。
0206デフォルトの名無しさんNGNG
>>203
と言うことは、一次元でもいいのかな?
この手のものは、位置情報を保存するための
仮想マッピングテーブルを用意するといいのでは?

四角はどうやって表現するつもり?
0207えれなNGNG
呼んだ〜?
x軸とy軸で分けて考えるといいよ。
+-------+
   +--------+
っていうのがあったら、重なってる部分だけ、どっちかの
四角形をずらしちゃう(半々でも、かたっぽを固定してもいいかな)。

(四角形が速度とかもってたら、その反対方向に、
速度に比例するように分配するとか。その場合は、
衝突で速度を交換したりするひつようもあるんじゃないかな)
0208デフォルトの名無しさんNGNG
重心を求めて互いに反対方向にずらせばいいんじゃねぇの?
0209186NGNG
とりあえず、>>199さん>>202さんの助言で
直列回路の場合の入力インピータンスは求められるようになりました
後は上記の図の場合どうすればいいか分かれば何とかなりそうです
>>199さん>>202さん
ありがとうございます

並列回路の場合のインピータンスの求め方が分かる方がいらっしゃいましたら
ぜひご教授ください
0210デフォルトの名無しさんNGNG
>>209

>>197を見てどこまでわかるか答えてみなされ。
まあ、AとBが並列だったら1 / (1 / A + 1 / B)
0211デフォルトの名無しさんNGNG
>210
複素演算の話でねーの?
0212デフォルトの名無しさんNGNG
(R+jωL)//(1/jωC)

j^2=(-i)^2=-1
a//b=1/(1/a+1/b)
ω=2πf
0213デフォルトの名無しさんNGNG
四角形の件にレス下さったみなさんありがとうございます!
これからじっくり考えて理解しようと思います。
どうもでした!
0214デフォルトの名無しさんNGNG
>>207
スレ作成者がsageでいいの?
っていっても"sage"でなしに" sage"だから関係ないのか。
0215214NGNG
関係あったみたいだね。
2chのシステムなら当然か。
0216デフォルトの名無しさんNGNG
01234
56789
幅5で上の様に並べる場合、x=n%幅 y=n/幅で済みますが、
0259
148C
37BE
6ADF
の様に斜めに並べる場合のスマートな式が何も思い浮かびません。
どなたか知恵を貸しては頂けませんでしょうか。
0217デフォルトの名無しさんNGNG
x += y
0218えれなNGNG
>216
こんなのかな?えれな、泥臭い方法しか思いつかないよ。

#include <stdio.h>
#define X 4
#define Y 5
int main()
{
 int x, y, yy,i=0;
 int p[Y][X];
 for( y=0; y<Y; y++)
  for( x = 0, yy=y; yy>0; x++,yy-- )
   p[yy][x] = i++;
 i=X*Y-1;
 for( y=Y-1; y>0; y--)
  for( x=X-1, yy=y; yy<Y; x--,yy++)
   p[yy][x] = i--;
 for( y=0; y< Y ; y++ ){
  for( x=0; x< X; x ++ )
   printf("%2x ",p[y][x] );
  printf("\n");
 }
}

0219えれなNGNG
あやや。ループの条件があやしいよ、、、
しかもXとYが離れすぎると破綻しちゃうし
こんどこそ、大丈夫かな?

#include <stdio.h>
#define X 7
#define Y 5
int main()
{
 int x, y, yy;
 int p[Y][X];
 int i = 0;
 for( y=0; y<Y+X; y++)
  for( x = 0, yy=y; x<X && yy>=0; x++,yy-- )
   if( yy < Y && x < X )
    p[yy][x] = i++;
   }

 for( y=0; y< Y ; y++ )
 {
  for( x=0; x< X; x ++ )
   printf("%2d ",p[y][x] );
  printf("\n");
 }
}

0220デフォルトの名無しさんNGNG
>>216
一番左の数は、n行目の時(n-1行目の左端+n)だ。
次の行のあたまの数未満の間は、(x(n-1)+1, y(n-1)-1)を繰り返せばいい。
半分まで配置したら、こんどは>>216の例でいうと6-9の対角線でひっくり返した座標でFから順に配置だ。
0221216NGNG
>>218-219 有り難うございます。
幅X・高さY時、n のx・y位置が欲しいのですが、
正直、最悪、その用な手法でiが一致したらbreakしようかと思っていました^;

なんとなく図にして眺めてみると、スマートな式で簡単に
求められる様な気がしてならなく、すっきりしません(;´Д`)
0222220NGNG
対角線じゃないな、180度回転だな。
0223216NGNG
>>220 どもです。。。現在理解&検証中(;´Д`)
0224220NGNG
はしょって書いたから、伝わりずらかったかな?
ま、わかんなかったら聞いてね、もっと丁寧に説明するから。
0225216NGNG
理解出来ませんでした。。。恥ずかしいヨウ(;´Д`)
眠気が吐き気に変わってきたので起きてからもう一度考えてみます。。

記憶の断片
if (n<W*H/2)
x=n-左端
y-=x
左端の数字とyが抜けてるなぁ(;´Д`)
0226えれなNGNG
>220
それって、幅が高さに比べ2以上多いときとか、
真ん中の方が余ったりしないかな?

>幅X・高さY時、n のx・y位置が欲しいのですが、
それを最初にかいてほしかったなー。
安直に、逆変換テーブルをつくるとかもあるよね。
0227デフォルトの名無しさんNGNG
>>226
>>216が理解すれば、そういうのは対応できると思われ。
nの最大数によって好きな方使えばええよ。
0228220NGNG
/*ためしてみたけど、ぜんぜんスマートじゃないや、ゴメソ。では、細密充填リストで…*/
void left(int n, int* pi, int* pt){
int i=1, t=0;
while(1){if(t+i>n){*pt=n-t;*pi=i-*pt-1;break;}
t+=i++;}return;}
void position(int n, int xl, int yl, int* px, int* py){
int r, cn, m ;
if(xl<=yl) cn=xl*(xl+1);else cn=yl*(yl+1);cn/=2;
if(cn>n){left(n, &r, &m);*px=m;*py=r ;}
else if(xl*yl-cn<=n){left(xl*yl-n-1, &r, &m);*px=xl-m-1;*py=yl-r-1;}
else{m=n-cn;
if(xl<yl){*px=m%xl;*py=xl+m/xl-(m%xl);}
else{*px=m/yl+1+m%yl;*py=yl-m%yl-1;}}
return;}
#include <stdio.h>
#define X 8
#define Y 9
main(){int i, x, y ;int a[X][Y];
for(i=0;i<X*Y;i++){position(i, X, Y, &x, &y) ;a[x][y]=i;}
for(y=0;y<Y;y++){for(x=0;x<X;x++)printf("%3d", a[x][y]);printf("\n") ;}}
0229(゚∀゚)NGNG
えれなたんは沙夜たん・・・(;´Д`)ハァハァ
0230 NGNG
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
float func1(int *a){
int sum=0,i;
float ave;
a=a+1;
for(i=1;i<=100;i++){
sum=sum+*a;
a++;
}
ave=(float)sum/100;
return ave;
}main(){
int a[110],i;
float ave,std;
for(i=1;i<=100;i++){
a[i]=rand()%100+1;
}

for(i=1;i<=100;i++){
printf("%3d",a[i]);
if(i%10==0) printf("\n");
}
ave=func1(a);
printf("ave=%f",ave);
}
4行目をvoid func1(int *a){
としてはいけないのはなぜですか?
そもそもvoidってなんですか?
0231デフォルトの名無しさんNGNG
>>230
関数にはぁー、型とぉー、返り値があってぇー、
返り値がいらないときはぁー、void 型にするのぉー。
0232 NGNG
つまりreturnで返すときはvoidは使わないということですか?
0233デフォルトの名無しさんNGNG
>>232
使わない、と言うかぁー、使えない。
void は型がないと言う意味だからぁー、
返り値の大きさ(使用されるメモリサイズ)がぁー、
わからないんですぅー。
0234デフォルトの名無しさんNGNG
void とは 「無」です。
0235デフォルトの名無しさんNGNG
void@(以下略)
0236デフォルトの名無しさんNGNG
>>230
そもそも関数ってわかってる?
0237えれなたん(;´Д`)ハァハァ・・・NGNG
>>229
勘弁してくれよ。
0238(;´Д`) NGNG
>>230
ネタ?
0239734NGNG
#include<stdio.h>

void func(float a[10][10],int n){
int i,j,k;
float c[10][10];

for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
c[i][j]=0;
for(k=1;k<=n;k++){
c[i][j]+=a[i][k]*a[k][j];
}
}
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
a[i][j]=c[i][j];
}
}
}
main(){
float a[10][10];
int i,j,n;
printf("please input n:");
scanf("%d",&n);
printf("please input a\n");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
}
printf("\nA=\n");
for(i=1;i<=n;i++){
printf("|");
for(j=1;j<=n;j++){
printf("%4.1f",a[i][j]);
}
printf("|");
printf("\n");
}
func(a,n);
printf("\nA^n=\n");
for(i=1;i<=n;i++){
printf("|");
for(j=1;j<=n;j++){
printf("%4.1f",a[i][j]);
}
printf("|");
printf("\n");
}
}
これだとAの2乗が求まりますが、n乗にするにはどうすればいいですか?
0240デフォルトの名無しさんNGNG
void *
0241デフォルトの名無しさんNGNG
>>239 そういう時は2乗関数ではなくて
c=a*b となる関数を作って あとはバイナリ分解で計算するのが定石
0242デフォルトの名無しさんNGNG
>>239
Aのn乗求めるのにこんな長いコードが必要とは思えないが。
解読する気にもならん。
0243えれなNGNG
for(i=1;i<N;i++)
 func(a,n);
カナ?
0244デフォルトの名無しさんNGNG
memcpy(b,a,sizeof(a));
for(i=1;i<N;i++) func(a,b,n);
くらいにしなきゃだめでしょう。
2乗じゃなくて掛け算する関数を作ればいい。
0245デフォルトの名無しさんNGNG
>>244
計算量の問題があるから、
Aのn/2乗を計算してから、Aのn乗を計算するような感じで再帰的にやりたいね。
0246デフォルトの名無しさんNGNG
>>245
tail recursion にしないとね。
0247デフォルトの名無しさんNGNG
厨な質問で申し訳ないんですが、C言語で#ifとif文はどう違うんですか?

#えれなちゃんに答えてもらうと嬉しいな(ワラ
0248デフォルトの名無しさんNGNG
>>247
#if
プリプロセッサ用のif
0249デフォルトの名無しさんNGNG
早坂日和>>>>>>>>>>璃月沙夜>神岸あかり>>>>>>>
>>>えれなたん>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>氷川菜織
0250デフォルトの名無しさんNGNG
怜さん、麻衣タンにも復活希望。
0251デフォルトの名無しさんNGNG
>>250 じゃあおまえがやれ(W
0252デフォルトの名無しさんNGNG
>>249
えろげネタはえろげ板でやって欲しい風味。
■ このスレッドは過去ログ倉庫に格納されています