トップページ⇒tech
982コメント315KB

宿題手伝いますYO!!

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること。
・質問内容がちゃんと日本語になっていること。
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。

前スレ http://pc3.2ch.net/test/read.cgi/tech/1029422194/

新
↑
│ http://pc3.2ch.net/test/read.cgi/tech/1027756023/
│ http://pc3.2ch.net/test/read.cgi/tech/1026138039/
│ http://pc.2ch.net/test/read.cgi/tech/1024592344/
│ http://pc.2ch.net/test/read.cgi/tech/1007902384/
│ http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
│ http://pc.2ch.net/tech/kako/982/982853418.html
│ http://piza.2ch.net/tech/kako/972/972032579.html
↓
古

長いソースを張れるBBS
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
0261デフォルトの名無しさんNGNG
まだいますか?
0262デフォルトの名無しさんNGNG
VBにエクセルを取り込むめません。
1列目の1~5行までリストボックスに
取り込む場合はどうすればよいのでしょう?

f$ = "データ.xls"
Set LINK = GetObject(f$)
For i = 4 To 59
Name (i) As LINK.Worksheets.Application.Cells(i, 1)
List1.AddItem Name(i)
Next i

これだとデバックしちゃいます。
助けてください。
0263デフォルトの名無しさんNGNG
Dim excelBook As Workbook
Private Sub Form_Load()
Set excelBook = GetObject("C:\Book1.xls")
Dim i As Integer
Dim buf As String
For i = 1 To 5
buf = excelBook.Worksheets(1).Range("A" & i).Value
List1.AddItem (buf)
Next i
End Sub
0264デフォルトの名無しさんNGNG
>>262
> これだとデバックしちゃいます。
> 助けてください。

デバッグできるならええやん。
0265デフォルトの名無しさんNGNG
デバックする=デバッグモードになる、とかか?
なんかイイな。俺もこれから使おっかな。
0266じゃず ◆jazz118WuU NGNG
VBで次のようなプログラムを誰か作って下さい。

・室内温度To1が0〜40℃(10℃刻み)
・その室内にある貯蔵庫の温度がTi℃
・貯蔵庫の中にある氷の面積Sが0.5〜2.0�u(0.5刻み)
・氷の温度が貯蔵庫内の空気に伝わる熱伝達Alphaが10〜510W/�u・K(100刻み)
・貯蔵庫内への熱伝導量Q1=KA(To1-Ti)
・K(貯蔵庫壁の熱貫流量)=0.377、A(伝熱面積)=16.36。

上記の条件の時にTiが何℃になるかをもとめるプログラムを教えて下さい!
結果はなるべくエクセルで出力するようにお願いします。

例:To1が10℃、Alphaが110W/�uK、Sが1.0�uの時、Tiは5℃

上のような感じで80個(条件が80通りの組み合わせになるため)の答えが出るようにお願いします。
0267じゃず ◆jazz118WuU NGNG
ちなみに、自力でここまで作りましたがおそらく全然駄目だと思います。こんなのでも朝からずっと考えて作ったほど初心者です。

Option Explicit

Private Sub Form_Load()

Dim K As Single, A As Single, Qe As Single, Q1 As Single
Dim To1 As Single, Ti As Single, Alpha As Single, S As Single

K = 0.377
A = 16.36
For To1 = 0 To 40 Step 10
For Alpha = 10 To 510 Step 100
For S = 0.5 To 2# Step 0.5
For Ti = 0 To 40 Step 0.1

Qe = Alpha * (Ti - 1#) * S
Q1 = K * A * (To1 - Ti)

If Qe = Q1 Then Print Ti, To1, Alpha, S

Next Ti
Next S
Next Alpha
Next To1

End Sub
0268じゃず ◆jazz118WuU NGNG
追伸

ちなみに、Qeは熱交換量なのですが理論的にQ1と同じになります。
0269超初心者NGNG
VC++のダイアログベースで作成しています。ファイルをコピーするアプリケーシ
ョンでコピー元コピー先をファイルダイアログボックスで表示させ指定し、スタ
ティックテキストにファイルまでのパスを表示するというものです。そして、ボ
タンがありクリックすると、ファイルのコピーを開始します。但し、以下の場合
はメッセージボックスを表示します。

1.コピー元ファイル名が指定されていない。
2.指定のコピー元ファイルが存在しない。
3.コピー先ファイル名が指定されていない。
4.コピー先ファイルが既に存在する。

4の場合は、問い合わせメッセージの表示とし
ユーザが上書きOKを選択した場合のみ、
コピー実行されるようにする。

です。一応パスがでる所まで頑張りましたが保存先の所で上書き警告がでます。
よろしくお願いします。

ソースはこちらです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=43
0270デフォルトの名無しさんNGNG
>です。一応パスがでる所まで頑張りましたが保存先の所で上書き警告がでます。
>よろしくお願いします

これは、上書き警告を出ないようにしたい、ということか?
なら。
myDLG.m_ofn.dwFlags = OFN_HIDEREADONLY ;
0271FTPNGNG
>>212です。
popen( )を使う方法でうまくいきました。
>211 >>213 >>220さん ありがとうございました。
0272デフォルトの名無しさんNGNG
C言語です。
ナップサック問題についてわからないので質問です。

まず、最高価格を求めるプログラムを書きます。
#include <stdio.h>
#define MAX 8

int main(void){
int weight[]={4,5,2,1,6};
int price[]={450,570,225,110,670};
int total[MAX+1],item[MAX+1];
int i,j,k;
int newtotal;

for(i=0;i<=MAX;i++)
total[i]=0;

for(i=0;i<=4;i++){
for(j=weight[i];j<=MAX;j++){
k=j-weight[i];
newtotal=total[k]+price[i];
if(newtotal>total[j]){
total[j]=newtotal;
item[j]=i;
}
}
}
0273272NGNG
つまり重さ8を超えないように、最高価格にするわけです。
weight[1]とprice[1]は同じ商品のデータと考えます。
すでに、最高価格が求まっていますが、この後どれを選んだか表示するプログラムの穴埋めが課題です。
?の場所を埋めるのですが、どうやら配列の中に配列を入れるらしいです。
よくわからないので教えてください。

i=MAX;
while(i>=1){
printf("%d\n",price[?]);// ?のとこを埋めるのです。
i=i-weight[?]];//ここもそうです。
}
printf("%d",total[MAX]);

return 0;
}
0274272NGNG
一応
printf("%d\n",price[item[i]]);
i=i-weight[item[i]];
で、できました。
でも感覚的にやって、まだよく理解できていないので、誰か内容を教えてくれると助かります。
0275名無しさん@XEmacsNGNG
両方とも item[i] かな?
よく考えずにレス。
0276デフォルトの名無しさんNGNG
>272のルーチン合ってんのか?
0277デフォルトの名無しさんNGNG
>276
多分あってると思われ。
動的計画法を使ってる。
ただ、
> for(i=0;i<=4;i++){
は、教える側の人が書くべきものじゃない。
> for(i=0;i<5;i++){
だな。

>273
配列totalには、最終的には
その重さまでに可能な最高価格が入るようになってる。
例えばtotal[5]には、重さ5までで可能な最高価格が入ってる。
item[5]には、total[5]になるように、最後に入れたものの番号が入ってる。
(これは、重さの値がintだからできるけど、小数点数だとこのアルゴリズムは無理)

このことを踏まえて自分でコードをたどっていけば、
そのうち理解できると思うぞ。
0278デフォルトの名無しさんNGNG
>277
なるほど、そういうことか。分かったよ、あんがと
しかし,このルーチンだと
int weight[]={1};
int price[]={100};
...
for(i=0;i<1;i++){
...
のときはどうなるんだ?
for(j=weight[i];j<=MAX;j++){
のループが1から8まで回って、全てのtotalが100に、itemが0になると
思うんだけど
newtotal+=total[k]+price[i];
じゃないのかな?よく分からない
0279デフォルトの名無しさんNGNG
>278自己レス
ああ、アイテムが一回使用ならいいのか
でも、それだと全ての組み合わせについて確かめた方が効率よかない?
全ての重さについて同時に求めるってとこに意味があるんだろうか
動的計画法がどんなもんか知らんので、このへんでやめよう

つーか、これってCの宿題ってより数学の宿題だな
272はプログラムより元のアルゴリズムを理解すべきだと思われ
0280デフォルトの名無しさんNGNG
>277
小数点でも使えるように考えてみたYO!
totalをtotal[0]=0.0(static),total[1]=dw~2dw,...とする
ただしweight[]の最小値>dw
float weight[];
float total[MAX+1],newtotal;

k=0;
for(j=(int)(weight[i]/dw);j<=MAX;j++,k++){
newtotal=total[k]+price[i];
if(newtotal>total[j]){
total[j]=newtotal;
item[j]=i;
}
これで上手くいかないかなー.俺も暇人だ…
0281デフォルトの名無しさんNGNG
マンデルブローを書いて、それをbitmapに出力するプログラムを書いているのですが
どうもうまくいきません。

#include<stdio.h>
#include<fcntl.h>
#define SIZE 512
#define MAX 255
int main()
{
double zr,zi,zrp,zip /*zr=現在計算中の複素数zの実数部 zi=虚数部*/
/*zrp=直前に計算したzの実数部 zi=虚数部*/
int x,y,i;
int fd;
unsigned char bitmap[SIZE][SIZE];
0282デフォルトの名無しさんNGNG
for(x=0;x<=SIZE;x++)
for(y=0;y=SIZE;y++)
{
zrp=zip=0;      /*初期値0*/

for(i=1;i=MAX;i++)
{
zr=zrp*zrp-zip*zip+cr; /*漸化式による実数部計算処理*/
zi=2*zrp*zip+ci;     /*虚数部の計算処理*/  

if((zr*zr+zi*zi)>4)    /*発散判定*/
break;

zrp=zr;
zip=zi;
}
bitmap[x][y]=(unsigened char)(i);
}
fd=create("mandel.bmp",0644);
write(fd,bitmap,SIZE*SIZE);
close(fd);

return 0;
}

実数部の変域は-2.4≦cr≦0.8
虚数部の変域は-1.2≦ci≦1.2にしたいです。
とりあえずcrとciをどうするかと、計算後どうやって配列するかがわかりません。
御願いします。
0283デフォルトの名無しさんNGNG
プログラムを書く宿題とは ちと違うんだが・・・

「どんな分野にオブジェクト指向は向いているか?」考えて来い、あるいは調べて来いってのがでました。
ゲーム作成に向いているという意見など出たのですが、何かないですかね・・・
ってか、やってこないと単位がまずい・・・
自分も調べまくってるんで、もし余裕があったら教えてください。
0284 ◆F52DmOxJlc NGNG
いわゆる MDI っぽいアプリケーションとか。
子ウインドウを不特定数 create したり free したりせにゃならん。
ゲームもいいよね。とくにシューティングとか。
0285デフォルトの名無しさんNGNG
笑わせるな
0286デフォルトの名無しさんNGNG
すいません。C言語について質問なんですが、
最大値選択法により、大きな数から配列に格納していく以下のソートプログラムを
1回1回の交換ではなく、内側のループで最大値の場所だけを覚えておいて
ループの終了時点で1回だけ交換するように変更したいのですが、どのように
変更してやればいいのでしょう?

#include <stdio.h>
#define MAX_SIZE 100
void simple_sort(int table [], int table_size);
int main(void)
{
int array[MAX_SIZE] , size, i;
for(size=0; size<MAX_SIZE; size++){
printf("%d番目の数は?", size+1);
scanf("%d", &array[size]);
if (array [size]<0){
break;
}
}
0287デフォルトの名無しさんNGNG
simple_sort(array, size);
for(i=0; i<size; i++){
printf("%d\n", array[i]);
}
}
void simple_sort(int table [], int table_size)
{
int i, j, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j]){
work=table [i] ;
table [i]=table [j] ;
table [j]=work;
}
}
}
}
0288デフォルトの名無しさんNGNG
自分では、
int i, j,k, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j])
work=j ;
else work=i;
}
k=table [i] ;
table [i]=table[work];
table[work]=k;

に変えてみたんですが上手くいきません。
0289デフォルトの名無しさんNGNG
>>286-288
int i, j,k, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j])
work=j ;
else
work=i;
}
k=table [work] ;
table [work]=table[i];
table[i]=k;
}

0290デフォルトの名無しさんNGNG
>>289
間違い!!
0291デフォルトの名無しさんNGNG
>>286
これは選択ソートじゃなくてバブルソート。

    work = i;
    for(j = i + 1; j < table_size; j++) {
        if (table[i] <table[j])
            work = j;
    }
    if (work != i) {
        k=table [i] ;
        table [i]=table[work];
        table[work]=k;
    }
0292デフォルトの名無しさんNGNG
すいません、教えてください。
Borland C++ Compiler 5.5.1でパラレルポート制御する
プログラムを組めるものなのでしょうか。
とりあえず、アセンブラは使いたくないなと思ってます。
よろしくお願いします。
0293デフォルトの名無しさんNGNG
>>283
そもそも、あなたはオブジェクト指向そのものの
メリットをきちんと理解しているだろうか?
そこがわかれば、適用可能な分野がある程度はわかるはず。
0294デフォルトの名無しさんNGNG
>>291

ご返答有難うございます。早速実行してみましたが、
この場合、1,2,3,4,5・・・などのようにインクリメントやデクリメントする数値を入力した場合には
上手くいくのですが、真ん中に最大値が来た場合などは上手くいきませんでした。

それで、改めて自分で以下の通りに直してみたのですが、やはりダメでした。
再びで申し訳ないんですが、間違いなどございましたら教えていただければと思います。お願いします。

work = i;
for(j = i + 1; j < table_size; j++) {
if (table[i] <table[j])
i = j;
}
k=table[work];
table[work]=table[i];
table [i]=k;
0295 NGNG
0296デフォルトの名無しさんNGNG
>>294
void simple_sort(int table[], int table_size)
{
for(int i = 0; i < table_size-1; i++)
{
int work = i;
for(int j = i+1; j < table_size; j++)
{
if(table[work] < table[j])
work = j;
}
int temp = table[i];
table[i] = table[work];
table[work] = temp;
}
}
これでどう?
0297デフォルトの名無しさんNGNG
>>294
最大値の位置を覚えておく工夫をせにゃならんよ。
0298 NGNG
>>296

無事上手くいきました。誠に有難う御座います。
0299デフォルトの名無しさんNGNG
C言語について質問です。
以下の2つの文字列が同じかどうかを判定するプログラムを使って
2つの文字列が何文字目まで等しいかを判定するプログラムを作りたいのですが
どうすればいいのでしょう?

#include<stdio.h>

#define SIZE 100

int string_equal_length(char str1[],char str2[]);

int main(void)
{
int i,j,k;
char str1[SIZE],str2[SIZE];
printf("文字列を入力してください。:");
scanf("%s",str1);
printf("文字列を入力してください。:");
scanf("%s",str2);

0300デフォルトの名無しさんNGNG
if(string_equal_length(str1,str2)==0){

printf("2つの文字列は同じです。\n");
}

else{
printf("2つの文字列は同じではありません。\n");
}
}

int string_equal_length(char str1[],char str2[])
{
int i=0;
while(1){
if(str1[i]=='\0'&&str2[i]=='\0'){
return(0);
}
if(str1[i]!=str2[i]){
return(-1);
}
i++;
}
}
0301デフォルトの名無しさんNGNG
自分では以下のようにしたのですがだめでした。

#include<stdio.h>

#define SIZE 100

int string_equal_length(char str1[],char str2[]);

int main(void)
{
int i,j,k;
char str1[SIZE],str2[SIZE];
printf("文字列を入力してください。:");
scanf("%s",str1);
printf("文字列を入力してください。:");
scanf("%s",str2);
0302デフォルトの名無しさんNGNG
k=1;
if(string_equal_length(str1,str2)==0){
for(i=0;i<SIZE;i++){
if(str1[i]=str2[i]){
k=k++;}
else { break;
}
}
printf("2つの文字列は%d文字目まで同じです。\n",k);
}

else{
printf("2つの文字列は同じではありません。\n");
}
}

int string_equal_length(char str1[],char str2[])
{


if(str1[0]==str2[0]){
return(0);
}
if(str1[0]!=str2[0]){
return(-1);
}

}
0303怜NGNG
int string_equal_length(char str1[],char str2[])
の中で何やってるかはわかる?
一文字ずつ比べていって、もしも途中で違ったら-1を返して、
最後まで一緒だったら0を返してるよね。
で、一文字同じだったらそのたびにiを1増やしてる。

ということは、iは何文字一緒だったかカウントしてることになるんだから、
途中で違ったら-1を返すのではなく、iを返すようにすれば・・

>>302のだと、全文字一緒のときしか
for(i=0;i<SIZE;i++){
if(str1[i]=str2[i]){
k=k++;}
else { break;
}
が実行されないから上手くいかないのね。

だから、if文とっちえばできると思う。
あと、k=0から始めないと変かも。
0304デフォルトの名無しさんNGNG
int string_equal_length(char *str1, char *str2)
{
  int count = 0;

  do {
    if (*str1 != *str2) { break; }
    count++;
  } while (*++str1 && *++str2);

  return count;
}
0305304NGNG
すまん。バグ入ってた。
上のコード両方に長さ0の文字列渡したときに1が帰る。
0306304NGNG
よく考えたら、1が帰るとは限らないね。ひょっとしたらそのまま突っ走る可能性も…
すまんかった、逝ってくる
0307デフォルトの名無しさんNGNG
size_t strmatchlen( const char *s1, const char *s2 ) {
size_t c = 0;
while ( *s1 && *s1++ == *s2++ ) c++;
return c;
}
0308デフォルトの名無しさんNGNG
Cです。
下のプログラムはクイックソートの一部なのですが、while文やif文が{}でくくってないので、どういう風に理解すればいいのかわかりません。
ifはbreak;のためにあると思うのですが、この場合のwhileはどういう意味になるのでしょうか?
他の変数などは無視して構わないので、whileについて教えてください。

for(;;){
while(a[++i] < v);
while(i<j-- && a[j] > v);
if(i>=j)
break;
t=a[i];a[i]=a[j];a[j]=t;
}
0309デフォルトの名無しさんNGNG
while(a[++i] < v);
は
while (a[i] < v) i++;

while(i<j-- && a[j] > v);
は

while (i < j)
if(a[--j] <= v) break;

とでも読み替えればよいか。
0310デフォルトの名無しさんNGNG
スマソ

while (i < j--)
if(a[j] <= v) break;

だね。
0311デフォルトの名無しさんNGNG
while(a[++i] < v);
は
while(a[++i] < v){}
0312デフォルトの名無しさんNGNG
>>309-310
breakの条件が違うだろ?
0313デフォルトの名無しさんNGNG
>>308
while(a[++i] < v);
バラして書くと、
i = i + 1;
while(a[i] < v)
{
i = i + 1;
}
で、ようするにaの内容とvを比較していき、
aの内容がvよりも大きくなった時にwhileから
抜けるっていう意味で
0314デフォルトの名無しさんNGNG
>>308
for(;;){
while(a[++i] < v);
while(i<j-- && a[j] > v);
if(i>=j)
break;
t=a[i];a[i]=a[j];a[j]=t;
}
vを基準に、
a[i]は値の小さい方から(イメージとしては左から?)、
a[j]は値の大きい方から近づく(右から?)。
この作業が終わった時に、i,jの大小関係が食違っていたら(if)、何もせず抜け、
で、なければ、取り替えなければならない状況なので、取り替える。vという値を基準に、
左右に不適切に混ざっている。ランダムに並んでいる。
0315デフォルトの名無しさんNGNG
従業員の給料を計算するプログラムをつくりたいんですが、
structureのデータの削除の仕方がわかりません。
データは以下の構成です。
:名姓(first name, last name)
:社会保障番号(12桁)
:性別(男性または女性)
:労働時間
:時給
:給料
労働時間が40時間以上は超過勤務時間であると考えられます。
超過勤務時間の場合、普通の1.5倍得ます。
例えば
通常時給20ドル
超過勤務時の時給20*1.5=30ドル
50時間働いた時の給与は
20*40+30*10=1100ドル

メニューは次の選択を含んでいるべきです
1. 給料と従業員をすべてリストします。
2. 給料支払簿に従業員を加えます。
3. 給料支払簿から従業員を削除します。
4. 女性の従業員をすべてリストしてください。
5. 超過勤務時間の従業員をすべてリストしてください。
6. 従業員のリストをアルファベット順に並べてください。
7. 誰が一番もらってるか。
8. 終了&保存。
0316デフォルトの名無しさんNGNG
#include <stdio.h>
struct xrec{
char fname[10], lname[10];
char ssn[12];
char gender;
double hours,salary;
}
struct xrec* add_list(struct xrec* list, struct xrec temp);
int main(){
struct xrec employee[100];
struct xrec temp;
struct xrec* first;
FILE* infile;
int size=0;
infile=fopen("DATA.c","r");
first=NULL;
while(fscanf(infile,"%10s %10s %12s %c %lf", temp.fname, temp.lname, temp.ssn,
&temp.gender, &temp.hours)==5){
temp.fname[9]=NULL;
temp.lname[9]=NULL;
temp.ssn[11]=NULL;
employee[size++]=temp;
first=add_list(first,temp);
}
0317デフォルトの名無しさんNGNG
void computesalary(struct xrec x[], int n){
int i,rate;
for(i=0; i<n; i++){
if(x[i].hours>=40)
x[i].salary=x[i].hours*rate*1.5;
else
x[i].salary=x[i].hours*rate
}
}
do{
com=displaymenu();
switch(com){
case 1: printlist(employee,size); break;
case 2: add_list; break;
case 3: delete_data; break;
case 4: printroses; break;
case 5: printovertime; break;
case 6: alphabetize; break;
case 7: printhighest; break;
case 8: quitsave; break;
default;displaymenu();
}
}while(com<>8)
0318デフォルトの名無しさんNGNG
int displaymenu(){
int choice;
printf("1. List all employees to the screen with their salary.\n");
printf("2. Add an employee to the payroll.\n");
printf("3. Delete an employee from the payroll.\n");
printf("4. List all the female employees(Roses of the G-ds).\n");
printf("5. List all employees with overtime.\n");
printf("6. Alphabetize the list of the employees.\n");
printf("7. Who gets the highest salary.\n");
printf("8. Quit and Save.\n");
scanf("%d",&choice);
return choice;
}
void printlist(struct xrec* list){
while(list!=NULL){
printf("%s %s %lf", list->fname,list->lname, list->salary);
list=list->next;
}
}
0319デフォルトの名無しさんNGNG
struct xrec* add_list(struct xrec* list, struct xrec temp){
struct xrec* new_node;
new_node=(struct xrec*)malloc(size of (struct xrec));
*(new_node)=temp;
new_node->next=list;
return new=node;
}
void printroses(struct xrec x[], int n){
int i;
for(i=0; i<n; i++){
if(x[i].gender=='F')
printf("%s %s\n", x[i].fname, x[i].lname);
}
}
void printovertime(struct xrec x[], int n){
int i;
for(i=0; i<n; i++){
if(x[i].hours>40)
printf("%s %s %lf\n", x[i].fname, x[i].lname, x[i].hours);
}
}
void quitsave(){
fclose(infile);
}
0320デフォルトの名無しさんNGNG
一応自分でやったコードです
よろしくおねがいします
0321デフォルトの名無しさんNGNG
>>320
上記のプログラムってコンパイルできますか?
0322デフォルトの名無しさんNGNG
>320
線形リストって知ってる?
0323デフォルトの名無しさんNGNG
>320

http://www.google.co.jp/search?q=cache:0iCTpmtd3kAC:www9.plala.or.jp/sgwr-t/c/sec15-5.html+%E8%87%AA%E5%B7%B1%E5%8F%82%E7%85%A7%E3%80%80%E6%A7%8B%E9%80%A0%E4%BD%93&hl=ja&lr=lang_ja&ie=UTF-8
0324デフォルトの名無しさんNGNG
レスありがとうございます。
>321
コンパイルはできません。エラーが6個ほどでてしまって。。。
>323
ありがとうございます。参考にします

自分で修正し、残すはリストからデータの削除の仕方だけになりました。
リストからデータの削除の仕方を教えてもらえないでしょうか?
よろしくおねがいします。
0325デフォルトの名無しさんNGNG
>>324
やり方だけ。コードは読んでないけど感覚で。
ポインタは理解してる?

リストの先頭から順に辿っていく。
先頭が対象のデータの場合は別処理するとして・・
現在のデータ(list)の次のデータ(list->next)が、削除したいデータ
の場合は、
list->next->nextがさしているポインタを一次保存しておいて。
list->nextのデータをfreeした後に、
list->nextに、先ほど保存したデータを入れる。

a -> b -> c となっていたのを
a -> c として、bをfreeすればいいわけだから。
0326デフォルトの名無しさんNGNG
>324 簡単な例でやったほうがええよ まずはこれを理解する
typedef struct List{
 int id;
 struct List *next;
} List;
void main()
{
 List list1,list2,list3;
 List *top=NULL,*list=NULL,*prev=NULL;
 top=&list1;
 list1.id=1; list1.next=NULL;
 list2.id=2; list2.next=NULL;
 list3.id=3; list3.next=NULL;
// 連結
 list1.next = &list2; list2.next = &list3;
// 取りはずし (list2の取り外し)
 list1.next=&list3; list2.next=NULL;
// スキャン
 for(list=top;list != NULL;list=list->next){ printf("%d,",list->id);}
// スキャンによる取りはずし id==2をはずす
 for(list=top,prev=NULL;list != NULL;){
  if (list->id==2){
   if (prev!=NULL){list=prev->next=list->next;}
   else {top=list->next;}
  }else{prev=list,list=list->next;}
 }
}
取り外しのところでメモリ開放が必要なら入れる。>325さんとはちと違うが、同じこと
03271024NGNG
FORTRANで
正規分布の確率密度を
ある点Xから無限まで積分で
求めるプログラムを教えてください。
できれば、シンプソンと台形公式(2重積分)の2通り
お願いします。
0328アフォNGNG
ヒープを辞書として用いるとき、MEMBER(x)の実行方法を考察せよ。
現在探索中の接点の要素をyとするとき
1、x=yならば、x∈Aを結論し、yesを出力する。
2、x>yならば左の子へ進む。
  x<yならば親に戻る。子がいない場合も親に戻る。
3、親に戻ったとき、左の子から戻ったときは右の子へ進む。
  右の子から戻ったときは、また親に戻る。
4、右の子から親に戻ったとき、noを出力する。
5、根の要素>xのとき、noを出力する。

手直しお願いします。あと、ハッシュ表による辞書と比べて
どのような点で劣っているか教えていただきたいです。
0329デフォルトの名無しさんNGNG
どなたか教えて下さい。問題は↓です

/* 実数を入力し、それぞれ以下のように変換する

小数第3位以下を切り捨てる
小数部のみに変換
小数第2位を四捨五入して小数第1位までに変換
10の位を四捨五入して100の位までに変換

※出力はすべて、printf("%f\n", x)とすること*/

0330デフォルトの名無しさんNGNG
(int)(x*1000.0)/1000.0
x-(int)x
round(x*100.0)/100.0
round(x/100.0)*100.0
0331329NGNG
>>330さん
ありがとうございます
やってみたら、「警告: 関数 round は宣言されていないので、int 型とみなす」
とエラーが出てしまったんですが^ ^;
0332デフォルトの名無しさんNGNG
int printf(char *dummy, char*str)
{
puts( str ); return 0;
}

//小数部のみに変換
int main(){
char str[80];char *x;
scanf("%s", str );
x = strchr( str, '.' );
printf("%f\n", x);
}
0333デフォルトの名無しさんNGNG
C言語で、インターネットにあるデータ(画像などなんでも)をダウンロードしてファイル
に保存するというソースを書いてほしいんです。お願いします。
0334デフォルトの名無しさんNGNG
だから環境を書けといいたい。
それと相手はhttpか、ftpか。gopherか。
0335333NGNG
自分の環境はwindows98で、相手はhttpです。お願いします。
0336デフォルトの名無しさんNGNG
面倒臭いので、
http://www.nakka.com/lib/inet/httpc.html
あたりで。
0337デフォルトの名無しさんNGNG
>>331
マニュアルくらい読め
0338333NGNG
>>336
ありがとうございます!
0339デフォルトの名無しさんNGNG
VB詳しい人にお願いです
テキストファイルからデータを読み込んで
二次元配列にいれて
その値それぞれ作った四角の中のグレースケールの塗りつぶしの値として
それを二次元配列分フォーム上に画像表示するようなPG作りたいんですけど
手を貸していただけませんか?
よろしくお願いします。
0340DNGNG
>339
>その値それぞれ作った四角の中のグレースケールの塗りつぶしの値として
>それを二次元配列分フォーム上に画像表示するようなPG作りたいんですけど
もう少し詳しくしてもらわないとちょっと...
四角形の座標はどう指定するのか、並べるのか重ねるのか、二次元配列は何を格納するのか
等つっこみどころ満載です。
0341デフォルトの名無しさんNGNG
C言語 ose gane ose ganeと表示をしたいです。
#include <stdio.h>
void strcpy1(char *p, char *q){
while(*p != '\0') *q++ = *p++; *q = '\0';}
void strext1f(char *p, int n, int m, char *q){ int i; n--;
for(i=1; i<=n; i++) p++;for(i=1; i<=m; i++) *q++ = *p++;
*q = '\0';}void strext1w(char *p, int n, int m, char *q){
n--;do{p++;n--;}while(n); do{*q++ = *p++;m--;}while(m);*q = '\0';
}void strext2f(char **p, int n, int m){char *pw; int i; n--;
for(i=1; i<=n; i++) (*p)++;pw = *p;for(i=1; i<=m; i++) (*p)++;
**p = '\0';*p = pw;}void strext2w(char **p, int n, int m)
{char *pw; n--;do{(*p)++;n--;}while(n);
pw = *p; do{(*p)++;m--;}while(m); **p = '\0';*p = pw;
}int main(void)
{ char a[]="Hosei";char b[]="Koganei";char c[256], d[256];
char e[256], f[256];char **pe, **pf; strext1f(a, 2, 3, c);strext1w(b, 3, 4, d);
printf("%s\n", c);printf("%s\n", d); strcpy1(a, e); strcpy1(b, f);
*pe = e;*pf = f;strext2f(pe, 2, 3);strext2w(pf, 3, 4);
printf("%s\n", *pe); printf("%s\n", *pf); return 0;
}
0342デフォルトの名無しさんNGNG
>341
puts("ose gane ose gane");
0343デフォルトの名無しさんNGNG
>>342
正解!!
0344デフォルトの名無しさんNGNG
このスレならおしえてくれる??
いや、どーにかおしえて!!

VBSで書いたバッチをWin2000で動かします。
クリスタルレポート使ってファイル出力してるんですが、(Adobe destiller)
クリレポのバージョンを8から9にあげたら動かなくなりました。
どーやら原因はOCX。仕方ないので、RDCっていうのを
使うことになったのですが、VBでの移行はある程度リファレンスが
あったものの、VBSでの方法はちっとも見つかりません。
VBS側から渡すパラメータ、オブジェクトの宣言方法など、
なるべく詳細にお願いします。
だいたい、RDC使うにはレポート以外に何かファイルが必要だったり、
DLL登録しなくてはならなかったりしますか?
また、ランタイムだけの場合と、クリスタルデザイナ?が
ある場合と両方聞けると嬉しいです。
0345こんなの見つけたよNGNG
http://momolin.fc2web.com/
ちょっと気分転換してみませんか
あなたの探してるもの見つかるかも
おすすめメニューの中に何か隠されているみたい
あとはカテゴリから探してね 秘密のチャット
ネットアイドルと楽しくおしゃべり テレビ電話感覚のビデオチャット
全国にメルトモ作ろう メルトモ天国
やすらぎアイランド 〜出会いの島〜
30歳からの☆億千万の出会い
交換日記 運命の出会いがあなたを待っています
多機能メールアドレスを無料プレゼント
そのほか、WEB電子商取引関連、コンピュータ・家電、インターネットサービスプロバイダ、ソフトウェア
金持ちお父さんのビジネススクールなど
ネットビジネス、サイドビジネス紹介 PC情報
各種ネットショッピング 各種クレジット、ローン、キャッシング
ドメイン480円から取得、懸賞・プレゼント・ポイントサービスなど
見逃せない情報満載 一度覗いてみて下さい
http://momolin.fc2web.com/
0346デフォルトの名無しさんNGNG
Perlで書かれたハフマン符号化を行うスクリプト無いでしょうか?
Cとかはよく見かけるのですが、Perlで書かれたものが欲しいのです。
自分がCを理解できないのと、オンラインで使いたい理由がありまして。
0347デフォルトの名無しさんNGNG
ネタが増えてきたなぁ
0348デフォルトの名無しさんNGNG
今日は新鮮なのが入ってるよ!!
0349デフォルトの名無しさんNGNG
Aho-Corasikのプログラム書ける人いますか?パターンマッチのやつです。
0350349NGNG
やっぱいいや自殺しますさようなら
0351デフォルトの名無しさんNGNG
自殺する前に一度スカイダイビングを・・・
0352デフォルトの名無しさんNGNG
パラシュート無しで・・・
0353339NGNG
>>340
わかりづらくてすいません
16×16の文字を表示したいんですが、
256階調のデータはテキストファイルにあるのでそれを読み込んで
適当な大きさの四角形にその値の白黒階調の色を塗りつぶして並べていって
16×16の字にするっていうことをしたいんですけども
お手をお貸し下さい。
0354デフォルトの名無しさんNGNG
C言語の課題で「1000000 (百万) までの素数を表示するプログラムを書きなさい. 」
というのがでました。

#include <stdio.h>
main ( ) {
   int n,m,l,o;
   2<=n<=1000,2<=m<=500000;
   i=n*m;
      /*iに該当しないものをoとする*/
   while (2<=o<=1000000){
    printf( "%\n" , o );
    0++;
   }
}
なんとか自分的にはそれらしくなったつもりです。。。
/*iに該当しないものをoとする*/
これはどう表現したらいいのでしょうか?
それと、これでできるでしょうか?
0355デフォルトの名無しさんNGNG
>>354
Cじゃなくて関数型言語でも習ったら?
0356デフォルトの名無しさんNGNG
>>354
不思議言語ですね。
どこがCよ?
0357デフォルトの名無しさんNGNG
>>354
なぜoを++したり500000が出てきたりするのか理解に苦しむ。
その命題だと簡単なアルゴリズムだとこんなとこ?

#include <stdio.h>
main ( ) {
   int i,j,c = 0;
   for(i = 2; i > 1000000; i++){
      for(j = 1; j <= i; j++){
         if(!(i % j)) c++;
      }
      if(c==2) printf("%d\n", i);
      c = 0;
   }
}

ただこれだと実行時間は相当かかる。
なぜかは自分で調べましょう。
0358354NGNG
根本的に違うってことですか?
C言語の講義だったのですが・・・
0359デフォルトの名無しさんNGNG
>>358
あんたがおかしい。
0360デフォルトの名無しさんNGNG
>>354
文法からして全く違う言語だ。
入門書をちゃんと読め。だいたい、
>   2<=n<=1000,2<=m<=500000;
こんな記述はできん。
講義した先生がかわいそうだな。
0361357NGNG
甘やかしちゃったかな
■ このスレッドは過去ログ倉庫に格納されています