トップページ⇒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
0604デフォルトの名無しさんNGNG
>>603
餅付スレに帰れ。
0605デフォルトの名無しさんNGNG
602 は痛いが、603 は別にそうでもないと思う。
0606デフォルトの名無しさんNGNG
正常な感覚であれば全員痛いガナー
0607デフォルトの名無しさんNGNG
違うね。
正常な感覚があれば 2ch になど来ない。
つまり、漏れも貴方も異常という事だアヒャ
0608デフォルトの名無しさんNGNG
正常という概念自体が(ry
0609デフォルトの名無しさんNGNG
DQN ですが何か?
0610デフォルトの名無しさんNGNG
>>609
自覚症状があると言うことはいいことだ。
0611デフォルトの名無しさんNGNG
僕は正常です!!アヒャ
0612デフォルトの名無しさんNGNG
ほほう。
0613デフォルトの名無しさんNGNG
十八金と十八禁の区別がつかないのですが
0614デフォルトの名無しさんNGNG
十八金は生きていくのに必要ない
十八禁は生きていくのに必要

よく覚えとけよ
0615デフォルトの名無しさんNGNG
胆に命じますた
0616デフォルトの名無しさんNGNG
ExcelVBAからC++で書かれたDLLの関数を呼び大したいのですが、いろいろ検索してもぜんぜん手がかりすらつかめません。
サイト、もしくは参考書をご存知の方がいらっしゃいましたら、教えてくださいませんか?
HELPもさっぱりで・・・・・バカですみません。
0617さっぱりNGNG
すいません。C言語の初心者です。
課題で出されたCがわからなくてこまってます。
課題は2つの行列AとBを加算するプログラム(matadd.c 未完成)をディスクに保存する。

入力用データファイル matadd.dat をディスクに保存する。

ソースプログラムをコンパイルし,実行する。
実行時に次のように入力のリダイレクトを行い,データファイルからデータを読み込ませる。

matadd < matadd.dat


表示された結果とソースプログラム内容を観察し,どのような手順で2次元配列を入力・出力しているか,理解する。

次に,C=A+B を計算し,Cの各要素を行列らしく出力する部分を追加して完成させる。
上と同様に実行して動作確認ができたら,ソースプログラムを提出する。お願いします。

0618デフォルトの名無しさんNGNG
Don't multi!
0619デフォルトの名無しさんNGNG
ディスクに保存するのが課題ですか。
0620デフォルトの名無しさんNGNG
>>619
2chにコレを書き込むと
どんな反応が返ってくるかを観察する課題です
0621デフォルトの名無しさんNGNG
>>616
C++ の方で extern "C" してないなら無理っぽいと思う
0622デフォルトの名無しさんNGNG
>>617
とにかくソース貼れよ。
0623デフォルトの名無しさんNGNG
>>622
マルチに対してそういうレスつけるのはやめれ。
0624デフォルトの名無しさんNGNG
同期式2進符号化6進ダウンカウンタを設計しなさいという課題があるのですが、
さっぱりわかりません。教えてください
0625デフォルトの名無しさんNGNG
同期式?
ダウンカウンタ?
0626デフォルトの名無しさんNGNG
>>624
ハードウェア?
0627デフォルトの名無しさんNGNG
論理回路です
0628デフォルトの名無しさんNGNG
>>627
AAで書くのあまりにしんどいな・・・
0629デフォルトの名無しさんNGNG
>>628
お願いします
0630デフォルトの名無しさんNGNG
>>616
VBからWindowsAPIを使う方法は知ってる?
それがわかれば、DLLの使い方もわかるよ。
"VB" & "API"で検索。
書籍なら
http://www.ai-pub.co.jp/contents/book/prog/win32api.html



0631デフォルトの名無しさんNGNG
>>630
API DLL と C++ DLL は違うんだよ・・・
0632デフォルトの名無しさんNGNG
>>630
ご親切にありがとうございました。早速注文しました。とりあえず、どのようにしてDLL
に実装された関数を呼ぶかはべつにして、VBAからC++ので書かれた関数を使いた
いのです。

>>631
できるだけ自分で模索します。わからないときがあったらここにまた戻ってきます。

お二人ともありがとうございました。
0633デフォルトの名無しさんNGNG
>>624
論理設計の教科書に載ってないの?
回路図書くのって大変だから、多分誰もやってくれないと思う・・・
0634デフォルトの名無しさんNGNG
つーか、ハードウェアってもろに板違いじゃないか?
0635デフォルトの名無しさんNGNG
>>634
たまにはいいこと言うね!
0636デフォルトの名無しさんNGNG
そうとも!
0637デフォルトの名無しさんNGNG
#include <stdio.h>
#include <ctype.h>

int
hash(char *s)
{
int i, h;

h = 1;
for(i=0; s[i] && isalpha(s[i]); i++)
h = ((s[i]-'A'+1)*h) % 47;
return h;
}

void
main(void)
{
FILE *in, *out;
char comet[100], group[100]; /* bigger than necessary, room for newline */
0638637NGNG
続きです。質問は次のレスに書きます。
in = fopen("input.txt", "r");
out = fopen("output.txt", "w");

fgets(comet, sizeof comet, in);
fgets(group, sizeof group, in);

if(hash(comet) == hash(group))
fprintf(out, "GO\n");
else
fprintf(out, "STAY\n");
exit (0);
}
0639637NGNG
>hash(char *s)
>for(i=0; s[i] && isalpha(s[i]); i++)
>char comet[100], group[100];
>if(hash(comet) == hash(group))
char comet[100], group[100];と定義されて、
hash(comet)っていう関数に入れているが、この関数は
hash(char *s)とポインタを括弧に入れて定義されている。
cometは配列なのに*sがポインタなのが意味不明。

>for(i=0; s[i] && isalpha(s[i]); i++)
s[i] && isalpha(s[i])ってs[i]==trueかつisalpha(s[i])==true
っていう条件を表すのですか?
*sと定義されているのになぜs[i]と配列のような使い方を
するのですか?
isalpha(s[i])とはなにを表すのですか?

>for(i=0; s[i] && isalpha(s[i]); i++)
h = ((s[i]-'A'+1)*h);
これじゃ毎回47で割った余りをhに代入することになって、
題意は「全部掛け合わせた後47で割った余り」なので、
for(i=0; s[i] && isalpha(s[i]); i++)
h = ((s[i]-'A'+1)*h);
h = h%47;
にしないのは何故ですか?

>void main(void)
ってどういうこと?なんでint main(void)じゃないのですか?

0640デフォルトの名無しさんNGNG
>>637-638
続きはいつ書くんだ?
まぁ、取り敢えずisalpha()がisupper()じゃないから
一文字目が'o'等の時に0になって上手く動かないと予想する
0641637NGNG
プログラムの題意

2行からなる入力ファイルから単語(1行に1語ずつ、1〜6のアルファベットからなる)
を読み込んで、A=1, B=2, C=3, ……Z=26として、上の行の単語にあるアルファベットの、
積を47で割った余りが、下の行の単語にあるアルファベットを47で割った余りと
等しければGO,異なっていればSTAYを出力ファイルに書き込むようにしようという
プログラムの問題です。

例 -> GOOD という単語なら7*15*15*4%47です。
0642デフォルトの名無しさんNGNG
>hash(comet)っていう関数に入れているが、この関数は
>hash(char *s)とポインタを括弧に入れて定義されている。
>cometは配列なのに*sがポインタなのが意味不明。
ポインタの勉強をしましょう

>s[i] && isalpha(s[i])ってs[i]==trueかつisalpha(s[i])==true
>っていう条件を表すのですか?
s[i] != 0 かつ isalpha(s[i]) != 0 と言う条件を表す

>*sと定義されているのになぜs[i]と配列のような使い方を
>するのですか?
1つ目の質問に同じ

>isalpha(s[i])とはなにを表すのですか?
s[i]が英字であるなら真(1)違うなら偽(0)を返す関数

>for(i=0; s[i] && isalpha(s[i]); i++)
>h = ((s[i]-'A'+1)*h);
>h = h%47;
>にしないのは何故ですか?
hが表現出来る数INT_MAXを超えてしまう事があり
その結果、期待した値と実際の値が違う可能性があるから

>>void main(void)
>ってどういうこと?なんでint main(void)じゃないのですか?
作った人がアホだから
0643637NGNG
ちなみに>>637-638は模範解答。
質問がまだあったので付け足しときます。

>fgets(comet, sizeof comet, in);
>fgets(group, sizeof group, in);
sizeof cometを使ってファイルを読み込んで一行に全部で何文字あるかを
自動的に調べてくれるのですか?

>exit (0);
なんでreturn 0;じゃないのですか?
また、それとはどう違うのですか?
0644642NGNG
>>642の↓だが
>s[i]が英字であるなら真(1)違うなら偽(0)を返す関数
s[i]が英字であるなら真(非0)違うなら偽(0)を返す関数
の間違いだったかも (普段使わないから覚えてないので…)
0645デフォルトの名無しさんNGNG
>>fgets(comet, sizeof comet, in);
>>fgets(group, sizeof group, in);
>sizeof cometを使ってファイルを読み込んで一行に全部で何文字あるかを
>自動的に調べてくれるのですか?
sizeof comet はcometのサイズをバイト単位で返します(この場合100)

>>exit (0);
>なんでreturn 0;じゃないのですか?
作った人に聞いて下さい(恐らくvoidでエラーが出たからだと思うが)

>また、それとはどう違うのですか?
return は関数を終了し、値がある場合は、その値を呼ばれた関数に返す文
exit() はプログラムを終了し値を呼ばれたプログラムに返す関数
0646デフォルトの名無しさんNGNG
教えてください
X2乗+y2乗+z2乗→最小

6x+3y+4z=61
をc言語でやるとどうなりますか??
お願いします
0647デフォルトの名無しさんNGNG
>>646
質問の意味がわかりません。
略さずにきちんと質問を書き直すか
国語をやり直してきてから質問を書いてください。
0648デフォルトの名無しさんNGNG
>>646
x,y,zを求めるのかい?
0649デフォルトの名無しさんNGNG
int x,y,z;
int ex,ey,ez;
int e=∞;

for(z=-∞;z<∞;z++){
 for(y=-∞;y<∞;y++){
  for(x=-∞;x<∞;x++){
   if(6*x+3*y+4*z==61 && x*x+y*y+z*z<e){
    e=x*x+y*y+z*z;
    ex=x;
    ey=y;
    ez=z;
   }
  }
 }
}
0650デフォルトの名無しさんNGNG
>649
実装できればいいがな。
intなのが気になるが。
0651デフォルトの名無しさんNGNG
ウエエーーン変数が何か分からないです。助けてください。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio>

int hit(char *r,char *s) {
int i,j,iHit=0,iBrrow=0;
char wr[4],ws[4];

for (i=0;i<4;i++) {
wr[i]=r[i];
ws[i]=s[i];
}
0652デフォルトの名無しさんNGNG
>>651
(゚Д゚) ハァ?
0653デフォルトの名無しさんNGNG
>>651
ウエエーーンお前が何言いたいのか分からないです。助けてください。

小学校からやり直して来い
0654デフォルトの名無しさんNGNG
>>651
変数って何なの?って言ってるのかも・・・
0655デフォルトの名無しさんNGNG
>>651
ほらよ
http://homepage1.nifty.com/toshio-k/prog/c/variable.html
0656デフォルトの名無しさんNGNG
>>561
ウエエーーン。
教授が、上記プログラムで使用した変数の意味を書けって言ったのです。
で、intとかの意味を書いて見たら、突っ返されたのです・・・・・・
0657デフォルトの名無しさんNGNG
>>656
651の間違いだとして…
何に使われてるか書けってコトじゃないの?
「意味」なんてわかりづらい言葉使うなよ…。
0658デフォルトの名無しさんNGNG
つーかどの変数よ。
jなら「メモリを無駄に使うため」
wrなら「時間を浪費するため」
かな? いや、これだけだとそうとしか答えられん。
0659デフォルトの名無しさんNGNG
>>656
このプログラム誰が書いたんだ?
もし教授が書いたもんなら、
意味も想像つかないような名前を変数につけんなって突っ返せ。
0660デフォルトの名無しさんNGNG
>>651
ウエエーーン。申し訳ないです。続きの分です・・・・・・
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio>

int hit(char *r,char *s) {
int i,j,iHit=0,iBrrow=0;
char wr[4],ws[4];

for (i=0;i<4;i++) {
wr[i]=r[i];
ws[i]=s[i];
}

for (i=0;i<4;i++)
if (wr[i]==ws[i]) {
iHit++;
wr[i]='r';
ws[i]='s';
}

for (i=0;i<4;i++)
for (j=0;j<4;j++)
if (i!=j && wr[j]==ws[i]) {
iBrrow++;
wr[j]='r';
ws[i]='s';
0661デフォルトの名無しさんNGNG
for (i=0;i<4;i++)
for (j=0;j<4;j++)
if (i!=j && wr[j]==ws[i]) {
iBrrow++;
wr[j]='r';
ws[i]='s';
}

printf("ヒット-%d ブロー-%d\n",iHit,iBrrow);
return iHit;
}

int main() {
char s[4],str[5];
int i,n=0;

srand((unsigned)time(NULL));
for (i=0;i<4;i++)
s[i]='0'+(rand() % 10);

printf("ヒット&ブロー\n");
printf("4桁の数字を入力してよう\n");
0662デフォルトの名無しさんNGNG
http://www.h3.dion.ne.jp/~yukomaru/sousu/sousu5.htm
ここの解説よめ。
0663デフォルトの名無しさんNGNG
!!!!???
ありがとうございますーー!!
0664デフォルトの名無しさんNGNG
読めといったけどやっぱり読むな。代わりに正解教えてやるから。

r: ユーザ入力値
s: 正解
i,j: ループ用カウンタ
iHit: ヒット数
iBrrow: ブロー数(blowだろ…)

wr・rs:
初期値はr・s。wrとwsの各桁の比較によりヒット・ブロー数をカウントする。
既にヒット・ブローした桁を重複してカウントしないように、ヒット・ブローした箇所は逐次文字'r'・'s'で置換する。
これにより同置換箇所の一致判定は常に偽となり、カウントの重複が避けられる。
0665デフォルトの名無しさんNGNG
C言語で
「西暦と月を入力すれば、その月のカレンダーを表示するプログラミング」
を教えてください。
自分では全くわかりませんでした。
どうか、よろしく!!
0666デフォルトの名無しさんNGNG
>>665
入力された西暦と月から1日の曜日を調べる。

後はそれをオフセットにして数字を書いていくだけ。
0667デフォルトの名無しさんNGNG
>>666
よく意味が分からないんですが、具体的に教えてください。
0668デフォルトの名無しさんNGNG
>>667
がっかりです。
0669デフォルトの名無しさんNGNG
>>666
Zellerの公式だったと思う
0670デフォルトの名無しさんNGNG
>>665
cal 呼べw
0671669NGNG
番号間違えた・・・
回線吊って首切ってくる・・・
0672デフォルトの名無しさんNGNG
VB6.0ですが
Alt+任意のキーでテキストボックス内の文字列を貼り付けるのですが
その処理の後Beep音が鳴ってしまいます
これを鳴らさないようにしたいのですがどうすればよいのでしょうか
KeyCode = 0 にする方法では無理なようでした
どなたか分かる方いらっしゃったらよろしくお願いします
0673デフォルトの名無しさんNGNG
質問する時はageた方がいいんじゃない?
この解答漏れも知りたいのでage
0674デフォルトの名無しさんNGNG
VB初心者スレできいた方がいいんでない?
0675デフォルトの名無しさんNGNG
C言語について質問なんですが、下の回文かどうかをチェックするプログラムを
関数is_kaibunを使って書き換えたいのですが、どのように書き換えれば良いのでしょう?

#include <stdio.h>
void main()
{
char s[256], r[256];
int i, n, hantei;

printf("文字列を入力してください:");
scanf("%s", s);
0676デフォルトの名無しさんNGNG
for(i=0; s[i] != 0; i++);
n = i;

for(i=0; i<n; i++){
r[i] = s[n-1-i];
}

r[n] = 0;

hantei = 0;

for(i=0; i<n-1; i++){
if(s[i] != r[i])
{hantei++;}
}

if(hantei){
printf("FALSE\n");
}else{
printf("TRUE\n");
}
}
0677デフォルトの名無しさんNGNG
is_kaibun()を作れと言う事なのか…
それとも、この続きがあるのだろうか…
0678デフォルトの名無しさんNGNG
>>676
どう?
#include <stdio.h>
int is_kaibun(char* s)
{
char r[256];
int i, n, hantei;
for(i=0; s[i] != 0; i++);
n = i;
for(i=0; i<n; i++){
r[i] = s[n-1-i];
}
r[n] = 0;
hantei = 0;
for(i=0; i<n-1; i++){
if(s[i] != r[i])
{hantei++;}
}
return hantei;
}
int main()
{
char s[256];
printf("文字列を入力してください:");
scanf("%s", s);
if(is_kaibun(s)){
printf("FALSE\n");
}else{
printf("TRUE\n");
}
return 0;
}
0679デフォルトの名無しさんNGNG
>>678

返答有難うございます。だけど、改めて自分で見直して見たら出来たっぽいです。

#include <stdio.h>
int is_kaibun(char s[],char r[])
{
int i,n,hantei;

for(i=0; s[i] != 0; i++);
n = i;

for(i=0; i<n; i++){
r[i] = s[n-1-i];
}
r[n] = 0;

hantei = 0;
0680デフォルトの名無しさんNGNG
for(i=0; i<n-1; i++){
if(s[i] != r[i])
{hantei++;
}
}
return(hantei);
}

int main(void)
{
char s[256], r[256];
int i, n, hantei;

printf("文字列を入力してください:");
scanf("%s", s);

hantei=is_kaibun(s,r);
if(hantei){
printf("FALSE\n");
}else{
printf("TRUE\n");
}

}
こんな感じで良いんですかね?
0681デフォルトの名無しさんNGNG
for(i=0; s[i] != 0; i++);
n = i;
が無駄に見える(意味の無いコードを含んでる)のは俺だけだろうか?
0682デフォルトの名無しさんNGNG
>for(i=0; s[i] != 0; i++);
>n = i;

n = strlen(s);
の方がいいよ。

あと、 "." "?" " " 等を無視するように変えたほうがいいかも

0683デフォルトの名無しさんNGNG
>for(i=0; i<n; i++){
> r[i] = s[n-1-i];
>}

for(i=0; i<n/2; i++){
if(r[i] != s[n-1-i])
return 0;
}

return 1;

これで充分でしょ。または

>for(i=0; i<n-1; i++){
>if(s[i] != r[i])
>{hantei++;
>}
>}
>return(hantei);

return !strcmp(r, s);

0684デフォルトの名無しさんNGNG
文字入力にscanfじゃなくて、getsを使えばいいかも・・・
0685デフォルトの名無しさんNGNG
struct listの中のvoid *dataにstruct dataを指させ、output(list->p)でそのdataを見たいのですが上手くいきません。
(こんな妙なプログラムなのは、これをリンクドリストで使いたいのです)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=48&fi=no

どうすれば上手くいくでしょうか。
よろしくお願いします。
0686デフォルトの名無しさんNGNG
>>675
質問とは違うけど、一応参考に・・・
#include <stdio.h>
#include <string.h>

int main(void)
{
char str[256];
gets(str);

char* f = str;
char* e = str + strlen(str) - 1;

while(f < e)
{
if(*f != *e)
break;
f++;
e--;
}

if(f >= e)
puts("回文です");
else
puts("回文じゃないよ");

return 0;
}
0687デフォルトの名無しさんNGNG
>>686
ポインタとポインタの比較は…
0688デフォルトの名無しさんNGNG
JAVAで質問です
Aというクラスでfor文を使って多次元配列で乱数を発生させた値を、
そのままの値を他のBというクラスで使いたいんだけど、
どうやってもできません
自分はまだJAVAをやり始めて2週間なんですけど、どなたか教えてください
0689 ◆F52DmOxJlc NGNG
>>688
B.useRnd(A.makeRnd());
でいいんじゃないの?
ソース見ないとよくわかんないけど。
0690デフォルトの名無しさんNGNG
>>685
struct data dがローカル変数であるために
input()から戻ってきたときには、破棄されてしまう。
struct dataもmalloc()で動的に確保すればいい。
0691685NGNG
キター!
皆さんありがとうございました!
0692デフォルトの名無しさんNGNG
>>675-683
なんでお前ら、わざわざ一度コピーしてるんですか?

int is_kaibun(const char *s)
{
  const char *r = s + strlen(s);
  while (--r > s) if (*r != *s++) return 0;
  return 1;
}
0693デフォルトの名無しさんNGNG
C言語で一個のキーワードを検索する文字列照合のプログラムなんですけど
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
の49  
というのを作りました。これをできるだけメモリを使わないようにしたいんです。
大きいテキストだと読み込めなくなってしまいます。textという配列で200万個
を超えて配列を確保しようとするとから実行しようとするとうまくいかなくなります。
300万個になるともう動きません。
それで考えたのが
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
の50
なんですけど、これはうまく動いてくれないんですが
何かほかにうまいプログラムはないでしょうか?
まだプログラム始めたての素人ですいません。
よろしくお願いします。
0694デフォルトの名無しさんNGNG
int len = strlen( key );
char *buf;
buf = malloc( len+1 );
memset( buf, 0, len+1 );
fread( buf, 1, len, fp );
while(1){
 if( !strcmp( key, buf ) ){
  puts( "agree" );
 }
 memmove( buf, buf+1, len-1 );
 if( !fread( buf+len-1, 1, 1, fp ) ){
  break;
 }
}
free(buf);
0695693NGNG
>>694
ありがとうございます。
大変申し訳ないんですがstrcmpをつかうのではなく
naiveアルゴリズムのままでできないでしょうか?
0696デフォルトの名無しさんNGNG
すみません、JAVAの質問です。
整数nを与えるとn以下の素数を全て出力するプログラムを作らなければいけないんですが、
条件として、その数が素数かどうかはその数以下の整数全てで割って調べるっていうアルゴリズムを使わなければいけないんです。
マジでわからないので、どなたか教えてください。
よろしくお願いします_(._.)_
0697デフォルトの名無しさんNGNG
アルゴリズムまで与えられてるのに「マジでわからない」かよ
おめでてーな
0698デフォルトの名無しさんNGNG
初心者なもので・・・
ほんとにすみません
0699デフォルトの名無しさんNGNG
いや、Javaの入門書買って読めとしか言いようがないです、はい。
0700デフォルトの名無しさんNGNG
初心者か。
都合のいい免罪符だな。
氏ね。
0701デフォルトの名無しさんNGNG
読んでわからないから聞いているのです・・・
0702デフォルトの名無しさんNGNG
あ、そうかここ宿題スレだったな。しばし待てぃ
0703デフォルトの名無しさんNGNG
今日は、気の立っている奴等が多いような・・・
■ このスレッドは過去ログ倉庫に格納されています