C/C++の宿題を片付け ..
[2ch|▼Menu]
425:デフォルトの名無しさん
07/07/20 14:04:14
>>423
ほれ
#include <stdlib.h>
#include <stdio.h>
int main() {
int a,b;
a = rand() % 6 + 1
printf("a = %d\n", a);
b = rand() % 6 + 1;
printf("b = %d\n", b);
printf("%d", a + b);
return 0;
}

426:デフォルトの名無しさん
07/07/20 14:05:19
おー!すばらしい!!!あと、半か丁か表示できますか??

427:デフォルトの名無しさん
07/07/20 14:10:53
if(a % 2 == 0) printf("aは丁"); else printf("aは半");
if(b % 2 == 0) printf("bは丁"); else printf("bは半");



428:デフォルトの名無しさん
07/07/20 14:11:47
ちがうよ、2個の合計で丁か半か判断するんだってばwww

429:デフォルトの名無しさん
07/07/20 14:12:12
>>426
そろそろ自分でやったらどうだい?

430:デフォルトの名無しさん
07/07/20 14:13:10
if((a + b) % 2 == 0) printf("丁"); else printf("半");

431:デフォルトの名無しさん
07/07/20 14:15:04
あと、掛け金もおながいします
その辺はきでんのセンスで

432:デフォルトの名無しさん
07/07/20 14:20:09
>>431
なんでいっぺにいわないんだい?
自分でやりなさい。

433:デフォルトの名無しさん
07/07/20 14:22:53
>>431
指定の口座に3本ほど振り込んでくれないか

434:デフォルトの名無しさん
07/07/20 14:23:55
お金はないので他のお礼で。。。

435:デフォルトの名無しさん
07/07/20 14:25:16
釣りだろ

436:デフォルトの名無しさん
07/07/20 14:25:25
6カ月分のガス料金を求めましょう
使用料金=基本料金+(1㎥当たりの単価×使用量)

使用量         基本料金     1㎥当たりの単価
25㎥以下       690円     127円
25㎥から500㎥以下 1170円    108円
500㎥より多い    6980円    96円

月の使用量を順番にキーボードから入力する。
使用料金は基本料金+(1㎥当たりの単価×使用量)で計算する。
各月の使用料金を算出して以下のように表示させる。

例)
1gatu 2gatu 3gatu 4gatu 5gatu 6gatu Goukei heikin
Charge 12500 25600 35410 19860 13250 2980s0 1278540 21906


437:デフォルトの名無しさん
07/07/20 14:26:15
>>434
体?でどう?

438:デフォルトの名無しさん
07/07/20 14:27:04
㎥が文字化けしているぞ?

439:デフォルトの名無しさん
07/07/20 14:31:26
int ryokin(int siyou)
{
int kihon, tanka;
if(siyou <= 25) { kihon = 690; tanka = 127; }
else if(siyou <= 500) { kihon = 1170; tanka = 108; }
else { kihon = 6980; tanka = 96; }
return kihon + siyou * tanka;
}

440:デフォルトの名無しさん
07/07/20 14:36:55
>>438 してないお(^ω^)

441:デフォルトの名無しさん
07/07/20 14:38:41
>>437
女でよければ。。

442:デフォルトの名無しさん
07/07/20 14:39:41
int i, siyou[6], charge[6];
int gokei,heikin;
gokei = 0;
for(i = 0; i < 6; i++) {
printf("%d月の使用量:", i);
scanf("%d", &siyou[i]);
charge[i] = ryokin(siyou[i]);
gokei += charge[i];
}
heikin = gokei / 6;
printf("1gatu 2gatu 3gatu 4gatu 5gatu 6gatu Goukei heikin \n");
printf("Charge");
for(i = 0; i < 6; i++) printf("%6d", charge[i]);
printf("%6d", gokei);
printf("%6d\n", heikin);

443:デフォルトの名無しさん
07/07/20 14:41:16
>>441はやっぱなし!高校生だし

444:デフォルトの名無しさん
07/07/20 14:47:10
>>443
えええええええええええええええええええええええええええええええ
ええええええええええええええええええええええええええええええ
えええええええええええええええええええええええええええええ
ええええええええええええええええええええええええええええ
えええええええええええええええええええええええええええ
ええええええええええええええええええええええええええ
えええええええええええええええええええええええええ
ええええええええええええええええええええええええ
えええええええええええええええええええええええ
ええええええええええええええええええええええ
えええええええええええええええええええええ
ええええええええええええええええええええ
えええええええええええええええええええ
ええええええええええええええええええ
えええええええええええええええええ
ええええええええええええええええ
えええええええええええええええ
ええええええええええええええ
えええええええええええええ
ええええええええええええ
えええええええええええ
ええええええええええ
えええええええええ
ええええええええ
えええええええ
ええええええ
えええええ
ええええ
えええ
ええ


445:デフォルトの名無しさん
07/07/20 14:50:05
>>444
for(int i = 0; i < 31; i++) {
for(int j = 0; j < 31 - i; j++) printf("え");
puts("");
}

446:デフォルトの名無しさん
07/07/20 14:50:29
>>445
実はもう書いてあったw

447:デフォルトの名無しさん
07/07/20 14:57:14
なにこの流れ

448:デフォルトの名無しさん
07/07/20 15:13:49
あと、>>418も私です
お礼はできませんが、ほんとお願いします

449:デフォルトの名無しさん
07/07/20 15:16:18
名前は指定なしで勝手にきめていいの?

450:デフォルトの名無しさん
07/07/20 15:16:57
指定しないほうがありがたいです☆

451: ◆DpMW3bRjps
07/07/20 15:26:22
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):任意の文字列を入力し、その文字列の中に任意の文字が何個入っているかを出力する
               プログラムのソースコードを提出しなさい。
                
              実行例)
              文字列を入力してください
              yamamotoyama
              さがす文字を入力してください
              y
              入力された文字列の中に指定された文字は2個あります


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年07月23日17時まで
[5] その他の制限:今回初めて文字配列というものを習いました!春から初めた初心者です
         よろしくお願いします!!

452:デフォルトの名無しさん
07/07/20 15:41:33
>>451

#include <stdio.h>

#define N 128

int main(void)
{
char target, str[N];
int i, count=0;

printf("文字列を入力してください\n> ");
gets(str);
printf("さがす文字を入力してください\n> ");
gets(&target);

for(i=0 ; i<N ; i++){
if( str[i] == target ) count++;
}

printf("\n入力された文字列の中に指定された文字は%d個あります\n", count);

return(0);
}

453:デフォルトの名無しさん
07/07/20 16:02:07
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux/等々) 自宅はWindows、学内はLinux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) 自宅:Microsoft Framework SDK 学内:gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月21日まで(おそらく日付変わるまでなら大丈夫)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
基本的に情報系の高校生でも組めるようなプログラムにしていただけると助かります。
多少複雑になってもいいので、できるだけ基本的な命令(ifとかfor)でお願いします

454: ◆DpMW3bRjps
07/07/20 16:25:21
>>451さんへ
ありがとうございます!!

455: ◆UoNQqijD4I
07/07/20 17:08:04
>452ですが。今コンパイルしたら下のようにエラーがでました(><)

/tmp/cc2eSWqP.o(.text+0x38): In function `main':
: warning: the `gets' function is dangerous and should not be used.

456:デフォルトの名無しさん
07/07/20 17:13:46
内容:
[1] 授業単元:C++
[2] 問題文 文字列の長さを計算する関数を作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C++
[4] 期限: (20日18:00まで]
[5] その他の制限: 以下の内容に手を加えて欲しいのですが・・・
#include <stdio.h>
#define MAX 100
string_length(char str[MAX]);
int main(void){
int i,string_len;
char string[MAX];
printf("入力:");
scanf("%s",string);
printf("文字列の大きさは%dです。",string_length(string));
return(0);
}
int string_legth(char str[MAX]){
int i;
int str_len;
for(i=0;str[i]!='\0';i++);{
}
str_len=i;
return(str_len);
}
Error: 外部シンボル '_string_length' が未解決
と、出て四苦八苦してるのでよろしくお願いします

457:デフォルトの名無しさん
07/07/20 17:15:06
>>455
ワーニングだ
fgetsに帰ればおk

458:デフォルトの名無しさん
07/07/20 17:16:07
> char target, str[N];
> gets(&target);
コレは幾らなんでもマズい

459:デフォルトの名無しさん
07/07/20 17:19:11
>>456
- string_length(char str[MAX]);
+ int string_length(char str[MAX]);

- int string_legth(char str[MAX]){
+ int string_length(char str[MAX]){


460:456
07/07/20 17:22:01
>>459さん
ありがとうございます。俺が間抜けでした!!
レポート出してきます!!


461:デフォルトの名無しさん
07/07/20 18:32:36
>>418
URLリンク(kansai2channeler.hp.infoseek.co.jp)
チェックは甘いが。

462:電通女 ◆v1Uy5WkQ7k
07/07/20 19:41:06
試験勉強中です…付き合ってくださる師匠様募集中…

[1] 授業単元:関数を自作する
[2] 問題文:n!を計算するプログラムを作る
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:???
 [3.3] 言語:C++ …なんですけど、先生はいつもC言語と混ざっている気がする。

#include <stdio.h>
int kaijo(int n)
{
int ans,i;
ans=i;
for(i=1;i<=n;i++) ans*=i;
return ans;
}
int main(void)
{
int n,k;
printf("n="); scanf("&d",&n);
k=kaijo(n);
printf("%d!=%d\n",n,k);
return 1;
}

とやってみたら、

n=5
10494432!=0

となってしまって…。

463:デフォルトの名無しさん
07/07/20 19:44:44
scanf("&d",&n);をscanf("%d",&n);に変えると幸せになれる

464:デフォルトの名無しさん
07/07/20 19:47:59
kaijo()もおかしいから、それだけじゃ幸せにはなれない

465:デフォルトの名無しさん
07/07/20 19:52:57
順を追って考えろ
int ans, i;

このときのansの値とiの値は特に決められていない
だからans = i;
としたところで何も意味がない
ans = 定数にしてやれ


466:電通女 ◆v1Uy5WkQ7k
07/07/20 19:53:09
>>463
それだけで幸せになれました。ありがとうございます。
またわからないとこが出てきたら来ます。

467:デフォルトの名無しさん
07/07/20 19:55:12
これで電通かよ・・・
大阪電気通信大学の間違いじゃないのか・・・

468:デフォルトの名無しさん
07/07/20 19:58:03
>>462
一緒に幸せになろう

469:電通女 ◆v1Uy5WkQ7k
07/07/20 19:59:05
いや、私は電気通信大学じゃないですよw
電気通信大学意以外でも電通って訳すところ、以外とたくさんあるようで。

470:デフォルトの名無しさん
07/07/20 20:03:29
[1] 授業単元: 情報演習基礎
[2] 問題文(含コード&リンク):

・ 区間[ a, b ]において連続なる関数f ( x) について,定積分の計算を行う。
・適用する式は,シンプソンの公式f ( x)=1/(1+x2)とする。
・a=0, b=100, e=0.0000001の場合の積分値とnの値を表示する
・各変数(nを除く)の型はdoubleとする

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: visualstudio2005
 [3.3] 言語:C++
[4] 期限: 2007 7/22
[5] その他の制限:標準ライブラリは禁止

よろしくおねがいします。

471:デフォルトの名無しさん
07/07/20 20:05:12
>>470
printfも使っちゃだめなのか?w

472:電通女 ◆v1Uy5WkQ7k
07/07/20 20:08:25
#include <stdio.h>

int add(int a,int b)
{
int c=a+b;
a=100;b=200;
return c;
}

int main(void)
{
int a,b,c;
a=1;b=2;c=add(a,b);
printf("%d+%d=%d\n",a,b,c);
return 1;
}

これの実行結果が1+2=3になるんですけど、最初の方の100も200も消えちゃってるってことですか?

473:デフォルトの名無しさん
07/07/20 20:12:04
>>472
関数の中で宣言した変数は関数を抜けると消えてなくなるよ?

474:デフォルトの名無しさん
07/07/20 20:17:42
ここは宿題スレであって質問スレではないから
質問をしたいなら質問スレに行け。

475:電通女 ◆v1Uy5WkQ7k
07/07/20 20:23:41
おっと、すみません。
初心者歓迎スレに移行しまする。

476:デフォルトの名無しさん
07/07/20 20:23:42
>>453
URLリンク(kansai2channeler.hp.infoseek.co.jp)

477: ◆UoNQqijD4I
07/07/20 20:27:13
>>457さん、fgetsに変えたのにまだエラーがでます泣

478: ◆UoNQqijD4I
07/07/20 20:30:25
>477ですが、ちなみに今度はこんなエラーです
tin.c: 関数 `main' 内:
tin.c:12: error: too few arguments to function `fgets'
tin.c:14: error: too few arguments to function `fgets'
tin.c:16: error: `gcc' undeclared (first use in this function)
tin.c:16: error: (Each undeclared identifier is reported only once
tin.c:16: error: for each function it appears in.)
tin.c:16: error: 文法エラー before "for"
tin.c:16: error: 文法エラー before ')' token
tin.c: トップレベル:
tin.c:20: error: 文法エラー before string constant
tin.c:20: 警告: conflicting types for built-in function `printf'
tin.c:20: 警告: data definition has no type or storage class


479:デフォルトの名無しさん
07/07/20 20:33:22
>>471
URLリンク(www.geocities.jp)
こういうやつのつもりで言ったんですが、違うんですか?
課題が出るときに標準ライブラリ禁止といわれただけなので、よくわからないです

480:デフォルトの名無しさん
07/07/20 20:35:13
>>478
いやゴメン、使い方はオンラインマニュアルなりで確認しようね
とりあえず
fgets(buf, sizeof(buf), stdin);
にすればおk

あと>>458

481:480
07/07/20 20:35:50
bufじゃなかった、strだった

482:デフォルトの名無しさん
07/07/20 20:49:02
finを思い出した。

483:電通女 ◆v1Uy5WkQ7k
07/07/20 20:57:35
スイマセンこれは宿題なんでこっちで教えてください。
1+2+3+…+nをつくるんですが、

#include <stdio.h>

int sum(int n)
{
int ans,i;
ans=i;
for(i=0;i<=n;i++) ans+=i;
return ans;
}

int main(void)
{
int n,s;
printf("n="); scanf("%d",&n);
s=sum(n);
printf("1から%dまでの和は%dです。\n",n,s);
return 1;
}

こうしたら実行結果が

n=5
1から5までの和は16です。

となってしまったんですが、どこで1増えてしまってるんでしょうか?

484:デフォルトの名無しさん
07/07/20 20:59:16
>>483
よく見てないけど、sum()の中の
ans=i;



485:デフォルトの名無しさん
07/07/20 20:59:42
ans=i;をans=0;に変えると幸せになれる

486:デフォルトの名無しさん
07/07/20 20:59:44
>>483
>ans=i;
何を代入してるんだ。

487:電通女 ◆v1Uy5WkQ7k
07/07/20 21:00:39
ああ!
ans=0;
ですね!ありがとうございました!

488:デフォルトの名無しさん
07/07/20 21:11:04
上に書いてあったのに読んでないんだな


489:デフォルトの名無しさん
07/07/20 21:19:48
宿題を人に投げる人間なんてそんなもん。


490:デフォルトの名無しさん
07/07/20 21:20:35
ans=iはans=1の写し間違いだとesp

491:電通女 ◆v1Uy5WkQ7k
07/07/20 21:38:53
おお、なるほど。

492:デフォルトの名無しさん
07/07/20 21:44:31
コピペに移し間違いなんt

493:デフォルトの名無しさん
07/07/20 22:48:16
>>479
C言語にprintf関数やputs関数など、多数の関数群(標準ライブラリ関数)があるように

よく読んだか?

494:デフォルトの名無しさん
07/07/20 22:49:58
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次のようにプログラムを作成せよ。以下のプログラムのmainとnumber大域変数は変更しないで、
intのスタックを2つ作る(大域変数)。1つのスタックは数値をいれる。もう1つには演算子を表す数をいれる

#include<stdio.h>
#include<ctype.h>
char *p;char c[100];
int expression(void);
int term(void);
int number(void);
main(){
int ans;
while(1){
printf("Enter expression : ");
fgets(c,90,stdin);
p=&c;

if(*p == '\n')
{break;}
ans=expression();
printf("Answer:%d\n" , ans);
}
}

495:デフォルトの名無しさん
07/07/20 22:50:48
int expression(){
int ans;
ans = term();
while(1){
if(*p == '+'){
*p++;
ans = ans + term();
}
else if(*p == '-'){
*p++;
ans = ans - term();
}
else
break;
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007年07月21日
[5] その他の制限:特になし

496:デフォルトの名無しさん
07/07/20 22:55:05
>>494
翻訳ソフトにかけた日本語みたいだな。さっぱりわからん。

497:デフォルトの名無しさん
07/07/20 22:56:27
>>494
こんな問題出す糞教官は死んだ方がいいな

498:デフォルトの名無しさん
07/07/20 22:58:10
>>493
読み飛ばして勘違いしていました
すみません

>>470は標準ライブラリではなく
C++標準ライブラリです

499:デフォルトの名無しさん
07/07/20 23:01:05
>>494
問題文は?

500:デフォルトの名無しさん
07/07/20 23:02:02
>>498
std::coutとかも標準ライブラリじゃねぇの?

501:デフォルトの名無しさん
07/07/20 23:23:13
必要なものはアセンブラで組めと

502:デフォルトの名無しさん
07/07/20 23:24:09
>>494です
書いたプログラムのmainとnumber大域変数は変更しないで、
intが2つのに変えます。1つにはスタックは数値をいれて、もう1つには演算子を表す数をいれます。
それで、+−*/を出来るようにします。
例えば
+の時は0
-の時は1
*の時は2
/の時は3 を入れるそうです。


503:デフォルトの名無しさん
07/07/20 23:24:54
日本語でおk

504:デフォルトの名無しさん
07/07/20 23:29:52
>>1
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

ってあるから標準ライブラリ使うなって言うトチ狂った事が多発するんじゃね?
ここで
[5] その他の制限: (どこまで習っているか、ある特定の標準ライブラリ関数は使ってはいけない等々)

って書いとけばちょっとはマシになるのでは?

505:デフォルトの名無しさん
07/07/20 23:30:58
別にどうでも良い。
スルーするなり、非標準の関数を用いるなり、好きにすれば良いじゃん。

506:デフォルトの名無しさん
07/07/20 23:31:08
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 7/23
[5] その他の制限: 特になし

よろしくお願いします

507:デフォルトの名無しさん
07/07/20 23:34:06
[5] その他の制限:(#include<stdio.h>は使ってはいけない等々)
[6] どこまで習っているか (for文を習いました等々)

もっと具体的に、そして分けたほうがいいんじゃないか?

508:デフォルトの名無しさん
07/07/20 23:39:25
>>494
括弧は使うの?

509:デフォルトの名無しさん
07/07/20 23:41:46
>>507
んなコマいこと言ってたらキリが無い

510:デフォルトの名無しさん
07/07/20 23:44:49
>>508
括弧はどこの括弧ですか?大域変数なら、その大域変数を用いて
プログラムを作成するみたいです

511:デフォルトの名無しさん
07/07/20 23:45:05
>>506
再帰

int fib(int n) {
if (n == 0) return 0;
else if (n == 1) return 1;
else return fib(n-1) + fib(n-2);
}

非再帰

int fib(int n) {
int a = 0;
int b = 1;
while (n > 0) {
int t = a+b;
a = b;
b = t;
n = n-1;
}
return a;
}

512:508
07/07/20 23:48:54
>>494, 510
入力する式で括弧を使うかってこと

513:デフォルトの名無しさん
07/07/20 23:52:35
>>506
そのフィボナッチ数列あってる?
初項と第2項は共に1じゃなかったっけ?

514:デフォルトの名無しさん
07/07/20 23:55:37
>>513
fib(1)とfib(2)を1にしたいんじゃないかな
そうすっと、fib(0)を0にしてfib(1)を1にするとちょうどよくなる

515:デフォルトの名無しさん
07/07/21 00:03:37
>>512
括弧は使っても使わなくても大丈夫です。
とにかく、問題文の内容を使い動けばいいみたいです

516:デフォルトの名無しさん
07/07/21 00:04:58
>>506

#include <stdio.h>
int fib1(int n) { //再帰
if (n == 0) return 0;
else if (n == 1) return 1;
else return fib1(n-1) + fib1(n-2);
}
int fib2(int n) { //非再帰
int a = 0;
int b = 1;
while (n > 0) {
int t = a+b;
a = b;
b = t;
n = n-1;
}
return a;
}
int main(void) {
int n[] = {10, 20, 30, 40, 45};
int i;
for (i=0;i<5;i++) printf("%d ", fib1(n[i]));
putchar('\n');
for (i=0;i<5;i++) printf("%d ", fib2(n[i]));
putchar('\n');
return 0;
}

517:デフォルトの名無しさん
07/07/21 00:20:07
>>515
>以下のプログラムのmainとnumber大域変数
mainとnumberは大域変数なのか?

>とにかく、問題文の内容を使い動けばいいみたいです
前スレで回答があったんだがな。気がつかなかった?


518:デフォルトの名無しさん
07/07/21 00:51:20
>>511 >>516
ありがとうございました
参考にさせてもらいます

519:デフォルトの名無しさん
07/07/21 02:36:41

3目並べのプログラムです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

何度も対戦できるようにするために列の判定の配列を初期化するようにしたらコンパイルエラーが出るようになってしまいました。
頭の中がぐちゃぐちゃになってきたので、アドバイス等いただければと思います。

正常にプログラムを実行したとき、先攻or後攻を決めることになりますが
また実装はしていませんのでお飾り状態です。

520:デフォルトの名無しさん
07/07/21 02:39:33
>>517
以下のプログラムのmainとnumber大域変数は変更しないで、
1つのスタックは数値ともう1つには演算子を表す数を大域変数にすればいいと
思います



521:デフォルトの名無しさん
07/07/21 02:50:35
>>520
mainは大域変数なのか?

522:デフォルトの名無しさん
07/07/21 02:58:09
>>519
酔っぱらっているので、ロジックはチェックできないがw

まず、変数と関数に同じcheckを割り当てることを止めろ。
配列={0}とできるのは、配列変数の宣言をする時。
それ以外の箇所で初期化したいなら、
ループで各要素に0を代入するか、
>memset(area,sizeof(area),0);
とかするといいぞ。

523:デフォルトの名無しさん
07/07/21 03:18:49
>>520
宿題の回答を依頼したいなら、
使う用語は理解してからにしてくれ。

大域をpublicと言う意味で使うにしても、
mainやnumberは変数ではないよ。
スタックと言う言葉の意味は分かっているのか?
依頼したい内容が、そもそも通じてないから、
回答が無いのじゃないかな?

524:デフォルトの名無しさん
07/07/21 03:27:57
>>521>>523
あやふやな言い方ですいません。mainとnumber大域変数は変更しないで、
intのスタックを2つ作りたいです。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。

よろしくお願いします

525:デフォルトの名無しさん
07/07/21 03:36:44
>>519
battle→put→battleって流れがあるからずっと対戦続けてるとばぐるよ。
int check[8]がグローバルである必要が無い。check関数内のみでOK。
もちろん名前は>522の言うように別でw

あと、do-whileですっきりしそうなところがいっぱいある。
別に直さなくても動くから無視してくれていいけど。

526:デフォルトの名無しさん
07/07/21 03:36:51
だから、そもそもmainは変数じゃないって。
変数じゃない物を、変更できる訳はないよ。
あなたが言う「スタック」とは何なのか
説明してくれないと、意味が分からない。

527:526
07/07/21 03:39:36
振り先は>>524です。orz

528:デフォルトの名無しさん
07/07/21 03:41:46
>>524
あやふやな言い方を直したつもりなのか同じことを繰り返しているぞw
元のプログラムに「number大域変数」というものが存在しない。
よって変更するしないとかいう意味がわからない。
提示したプログラムだが途中までしかコピペしていないんじゃないか?
break;なんかで終わってるしterm関数が見当たらない。

529:デフォルトの名無しさん
07/07/21 03:44:40
>>526
スタックはおそらくそのままスタックでいいかと。
2つってのが引っかかるが演算子と数値で2つ作るんだろう。
「1+2-3」って入力ならスタックA「1 2 3」スタックB「+ -」になって
popA popB popAの演算をスタックがなくなるまで行う。
って感じでエスパーしてみた。

乗除に対応しようとした時点で破綻する設計だなw

530:526
07/07/21 03:54:08
この問題、奇特な人が回答しているんだが。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
依頼者はこれが気に入らないのかな。
もちろん、この時の依頼者は別人かも試練。
だが、「スタックで実装しろ」の言う意味は
理解してからにして欲しい。


531:519
07/07/21 03:55:30
URLリンク(kansai2channeler.hp.infoseek.co.jp)

checkをローカルに戻してareaの再初期化をforに変更しました。
プログラムを実行すると、途中でうまく配置できていない感じになってしまいます。

先攻後攻は先ほどと同じく未実装です。

532:デフォルトの名無しさん
07/07/21 03:57:18
すいませんでした。
プログラムが途中でした。
}
return(ans);
}
int number(void){ //数値データ
int i=0;
while (isdigit(*p)){
i = i*10+(*p++)-48;
}
return(i);
}

533:デフォルトの名無しさん
07/07/21 03:58:33
とりあいずmainとnumberは変更しないで、
intのスタックを2つ作る。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。

534:デフォルトの名無しさん
07/07/21 04:00:58
>>530さん
書き込みが食い違いになってしまいすいません。

535:526
07/07/21 04:02:18
だから、スタックって何?

536:デフォルトの名無しさん
07/07/21 04:05:17
whileをintだけで書けってことをいいたいのか?

537:526
07/07/21 04:07:07
>>533
「演算子を表す数」を定義してくれ

538:デフォルトの名無しさん
07/07/21 04:07:33
あれか?それともint使ってとにかく数値をいれるのと
演算子を表す数のを作ればいいのか?

539:526
07/07/21 04:13:19
要件定義ができないなら、それでも良いが、
どういう物を作って欲しいのか、理解可能な表現にして下さい。
少なくとも宿題をそのまんま書いてくれないと、espの領域になる。

540:デフォルトの名無しさん
07/07/21 04:17:12
演算子を表す数ですか?
一応黒板に書いてあったのを書き込みました

541:デフォルトの名無しさん
07/07/21 04:19:48
確か+が一番弱く/が一番強くなるように作ると言っていました

542:デフォルトの名無しさん
07/07/21 04:20:14
>>531
print関数がおかしい。
ループ部分を以下みたいにしてみ。
for(i=0;i<9;i++){
if(area[i] == 0)
printf(" ");
else if(area[i] == 1)
printf("○");
else if(area[i] == 4)
printf("×");
else
printf("as");
printf("|");
if ( i % 3 == 2 )
printf("\n");
}
とりあえずは動くよ。

543:526
07/07/21 04:21:36
>>531で示した回答にどういう不満があるのか、
せめてそれだけども答えてくれ。

>演算子を表す数ですか?
>一応黒板に書いてあったのを書き込みました
見落としたかも知れないから、
演算子と定数の対応表を再掲してくれ。


544:526
07/07/21 04:23:51
スタックの定義も提示してくれ。

545:519
07/07/21 04:31:10
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>542
挙動は正常になったようなのですが
2度目以降の対戦がうまく動作しません・・・(´・ω・`)
area[]の初期化は出来ていると思うのですが・・・


>>543
レスアン間違ってないですか?

546:519
07/07/21 04:33:00
初期化できてなかったですね・・・^^;
すいません、みすってました

547:526
07/07/21 04:35:27
>>541
宿題の意味が分からないなら、>>531で宿題の回答にしたらいい。
この回答に不満があるなら、
この回答のどこが設問と違うか、提示すればいいだけだと思うが。

548:519
07/07/21 04:41:21
526さんは何を言ってるんでしょうか?

私ともう一人質問をされてる方がいるんだとおもんですが・・・?

私は3目並べの話をしてるんですが?

549:526
07/07/21 04:46:50
>>548 気にしないで下さい。あなたの推察通りです。

済まん、酔っぱらいだ
>>547で書いた>>541>>540の間違いだ。訂正する。

550:519
07/07/21 05:08:59
URLリンク(kansai2channeler.hp.infoseek.co.jp)

先攻or後攻も考慮してみました。

課題の指示としては
1,二人対戦・com対戦可能
2,毎回com/man対戦・終了を選ぶ

というものです。

このプログラムでみたせてるでしょうか?

私の中ではOKだとは思うのですが

できてねーぞごるぁ! とかあればおねがいします

551:デフォルトの名無しさん
07/07/21 05:14:31
【即会い!!】

私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ 〜即出会えるサイト】URLリンク(deaigets.blog97.fc2.com)

552:519
07/07/21 05:18:33

もう一つ指示があったのを忘れていました。

・戦歴の表示

というのがあったので、追加しました
URLリンク(kansai2channeler.hp.infoseek.co.jp)

評価お願いします。

553:519
07/07/21 05:22:51
何度もすみません、凡ミスがあったので修正しました。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

554:デフォルトの名無しさん
07/07/21 07:22:22
とても丁寧な読みやすいコーディングだね。
ソース流し読みしただけだけど敢えて問題があるとするなら
ループでscanfを使ってるくらい?

555:デフォルトの名無しさん
07/07/21 09:35:31
>>519
良くできてると思いますよ。

556:519
07/07/21 10:06:42
ありがとうございました。

557: ◆yb5ufjhaCo
07/07/21 11:21:02
すいません、あんまりわからないので、教えてください。
ほんとに初歩の質問ですいません

1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
<次のプログラムの断片は誤りを含んでいるところがある。
その誤りの理由を述べ、正しい動作をするようにその箇所を修正した
プログラム断片全てを書け。ただし無関係のところまで変えないこと。

[3] 環境
 [3.1] OS: Linuxです
 [3.2] コンパイラ名とバージョン: gcc です
 [3.3] 言語: Cでお願いします。
[4] 期限: 25日いっぱいまでです。


558: ◆yb5ufjhaCo
07/07/21 11:22:35
すいません。問題忘れてました…
(1)
if(c = '\0')
n++;

(2)
while(c = getchar() !=EOF)
putchar(c);

(3)
for(i = 0; i < 10; j++){
total += i;
}

(4)
switch(c){
case 'y':
state = 1;
case 'n':
state = 0;
default:
state = -1;
}

お願いします…

559: ◆yb5ufjhaCo
07/07/21 11:23:13
(5)
if(k = 0)
1++;
else
1--;


(6)
for (i = 0; i < 8; j++){
b[i] -= a[i+j];
}

(7)
switch(c){
case 'y':
count--;
case 'n':
count++;
default:
break;
}


560:デフォルトの名無しさん
07/07/21 11:28:31
1:=
2:(c=getchar())
3:無限るーっぷって怖くね?
4:break;
5:=, 1++, 1--
6:3に同じ
7:break;

違うかも

561:519
07/07/21 13:07:12
comが1Pのリーチを阻止できるようにしたいのですが、
どういうコードを書けばいいでしょうか?

562: ◆M2clACoxQA
07/07/21 13:28:04
[1] 授業単元: プログラミング 基礎
[2] 問題文(含コード&リンク):
#include <stdio.h>

int main(void)
{
int i = 1;
int j = 0;

do{
j = j + i;
i += 2;
}while(i<=99);

printf("1から99までの奇数の総数は%dです。\n", j);

return 0;
}

以上の「奇数の総和」を求めるプログラムを関数化して作成しなさい。
開始値と終了値を引数として使用し、main関数で確認する。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual studio2005
 [3.3] 言語: C言語
[4] 期限: 2007年7月21日15:00まで
[5] その他の制限:
習ったのは、if-else文 do-while文 for文。
sum関数を使うと言っていました。
まだ習いたてなので、あまり難しいのはわかりません。
よろしくお願いします・・・

563:デフォルトの名無しさん
07/07/21 13:32:20
>>562
お前さんのところで作ったsum関数とやらは知らんがそれ見ながらdo{}whileの処理を
sum関数の要領でmain文の外に追い出せばいいだけ。

564: ◆M2clACoxQA
07/07/21 13:40:18
>>563
なるほど・・・そういうことだったんですね。
変に難しいことを考えてしまいました^^;
親切に教えてくださり、ありがとう御座いました!!

565:デフォルトの名無しさん
07/07/21 14:13:55
>>547
エラーで書けなくなった為遅くなりました。
checkはまだ習っていません。何通りかやり方があると
言っていたので他にも実行するプログラムはありますか?
何度もあやふやな言い方だと迷惑だと思うので、友達に確認してから
もう一度書き込みします。
よろしくお願いします


566:デフォルトの名無しさん
07/07/21 14:31:37
習ってないも糞もおまいさんの作った関数だろうから習ってないとか意味不明。
授業中に提示された関数をただ使ってるだけだならちゃんと話聞いとけ馬鹿で終了だし。

他に実行できるプログラムはあると言えるけど、
>>519の要件満たせばいいだけならプログラマの数だけやり方はあると言えるから、
質問自体の意味がない。

何がしたいのかはっきりすればどうすればいいのか言えるけど、
何がしたいのかを言わないようじゃエスパーに頼るしかないし。

567:519
07/07/21 14:37:48
>>566

私は565じゃないですよ!!!!!

568:デフォルトの名無しさん
07/07/21 14:42:14
>>565
お前さんが>>494なら、>>547>>594にあるとおり、ただの勘違いのようだから
スルー汁
>>530のレスは読んだのか?

569:568
07/07/21 14:43:13
×>>547>>594にあるとおり
>>547>>549にあるとおり

570:デフォルトの名無しさん
07/07/21 14:48:50
なんかここんとこgdgd説教したりそんなんじゃ相手に伝わらないよ俺はわからんよって
だったらgdgdレスしてないで答えなきゃ良いじょのいこっ(えなり君風に)

571:デフォルトの名無しさん
07/07/21 15:04:37
>>568
>>530は読みました。>>530自体が問題のプログラムで。

問題は、/*-+の順に計算できるようにする。そのためにint2つ作る。
1つは数字、1つは記号(/*-+)

572:デフォルトの名無しさん
07/07/21 15:11:11
>>420をお願いします

573:519
07/07/21 15:17:54
私が質問している3目並べは
>>561をおねがいします!

574:デフォルトの名無しさん
07/07/21 15:48:08
>>573
check関数内で、check変数の値が2になっているラインに置けばいい。
ってか、checkの名前がかぶってるのをやめたほうがいいって言われてなかった?

575:デフォルトの名無しさん
07/07/21 16:01:30
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
整数n、rを入力し全組み合わせを配列に配置するプログラムを作成しなさい。
例えばn=4,r=2の場合
{{1,2},{1,3},{1,4},{2,3},{2,4},{3,4}}
となる。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 7/25
[5] その他の制限: 特に無し

画面に出力するだけなら何とかなりそうなんですが配列に入れるとなると
もう何がなんだか…

576:デフォルトの名無しさん
07/07/21 16:06:56
>>575
配列なんて出てくるか?
2重ループで一発だと思うんだが?違う?

577:デフォルトの名無しさん
07/07/21 16:08:30
お前は何を言ってるんだ

578:デフォルトの名無しさん
07/07/21 16:16:34
適当に大きめの2次配列に入れるなり、
動的確保するなりして入れればいいだけじゃないか。
表示できるなら配置もできるだろ。

579:デフォルトの名無しさん
07/07/21 16:20:31
【即会い!!】

私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。

フリメ登録OKなサイトを拡充しました!
↓↓↓
【ブログ 〜即出会えるサイト】URLリンク(deaigets.blog97.fc2.com)

580:デフォルトの名無しさん
07/07/21 16:34:05
>>494
最小限の実装.変な式を入れたときにどうなるかは知らない.
<変更点>
・以下のグローバル変数を追加
int ops[100], vals[100], optop, valtop;

・term()は使わないので消していい

・expression() の内容を以下に変更
int expression() {
valtop = optop = -1;
vals[++valtop] = number();
while (1) {
int opcode;
if (*p == '+') opcode = 1;
else if (*p == '-') opcode = 2;
else if (*p == '*') opcode = 3;
else if (*p == '/') opcode = 4;
else opcode = 0;
while (optop >= 0 && ops[optop] >= opcode) {
if (ops[optop] == 1) vals[valtop-1] += vals[valtop];
if (ops[optop] == 2) vals[valtop-1] -= vals[valtop];
if (ops[optop] == 3) vals[valtop-1] *= vals[valtop];
if (ops[optop] == 4) vals[valtop-1] /= vals[valtop];
valtop--; optop--;}
if (opcode == 0) break;
ops[++optop] = opcode;
*p++;
vals[++valtop] = number();}
if (valtop != 0) printf("some error\n");
return vals[0];}

581:デフォルトの名無しさん
07/07/21 16:40:46
>>578
なんで2次配列なのか小一時間問い詰めたい

582:デフォルトの名無しさん
07/07/21 16:44:54
>>576
なんで2重ループなのか小一時間問い詰めたい

583:デフォルトの名無しさん
07/07/21 16:55:27
>>578
表示できるといっても再帰で表示させてるんで
うまいこと添字があわなくて…
配列に配置させるのに利用できないんです

584:デフォルトの名無しさん
07/07/21 17:16:20
>>453 俺もやってみた。クソースだがw
URLリンク(kansai2channeler.hp.infoseek.co.jp)

585:519
07/07/21 17:31:19
>>574
名前が被ってるというと?

586:デフォルトの名無しさん
07/07/21 17:43:21
>>575
URLリンク(kansai2channeler.hp.infoseek.co.jp)
2次元配列ではなくポインタ配列だが。

587:デフォルトの名無しさん
07/07/21 17:44:29
>>585
関数と変数が同じ名前ってこと。
問題ないけどソース読みづらい。

588:デフォルトの名無しさん
07/07/21 18:28:35
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):
ゼータ関数は次式で定義される。

   ζ(s) = (1/n^s)

s=6のとき、π^6/945に収束する。これを確認するプログラムを作製せよ。
ただし、級数の和を無限個とるのではなく、有限の範囲内で(n=100)で計算せよ。

条件1:倍精度型で計算し、6パターン以上は比較できるようにすること。
条件2:二重ループを使うこと。そのため、外側ループでは初期値をmとして,
nまでm刻みで値を変更し、内側ループでは該当する値に応じたゼータ関数値を算定できるようにコーティングせよ。(例えば、n=1000と、m=100に設定した場合、nの値を10パターン変化させることができる。)

[3] 環境
 [3.1] OS:MAC OS X
 [3.2] コンパイラ名 gcc
 [3.3] 言語:C
[4] 期限:来週の月曜日まで
[5] その他の制限: とくに無し

条件が多いですが、よろしくお願いします。



589:デフォルトの名無しさん
07/07/21 18:43:31
それ7/18までじゃなかったっけ?

590:デフォルトの名無しさん
07/07/21 19:03:58
>>587
同じ名前で変数と関数があったら、
普通、再定義エラーにならないか?

591:デフォルトの名無しさん
07/07/21 19:14:43
グローバルとローカルの違いってCの基礎じゃないの?

592:デフォルトの名無しさん
07/07/21 19:20:33
グローバル変数と関数が同じ名前だったんだが。

593:デフォルトの名無しさん
07/07/21 19:22:03
ローカルでも普通にエラーでるんじゃね?

594:デフォルトの名無しさん
07/07/21 19:23:01
っていうか>>519の最新が553?

595:593
07/07/21 19:25:33
さっき>>553で名前被りエラー出なかったからあのレス忘れてくれ。

596:デフォルトの名無しさん
07/07/21 19:29:31
最新にしてはエラーや警告出まくるんだけどw
で、comに考える力を与えてみた。

int com_put(){

int input;

do{
input = rand()%9;
}while(area[input] != 0);

if (area[0] + area[1] + area[2] == 8) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 8) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 8) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 8) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 8) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 8) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 8) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 8) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;
else if(area[0] + area[1] + area[2] == 2) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 2) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 2) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 2) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 2) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 2) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 2) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 2) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;

area[input] = 4;

}

597:デフォルトの名無しさん
07/07/21 21:56:05
>>586
どうもありがとうございます。
なんか今更情報科にきたことを後悔…
複雑になると頭がこんがらがる

598:デフォルトの名無しさん
07/07/21 22:32:47
[1]単元:プログラミング
[2]問題:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]環境
  OS:リナックス
  コンパイラ:gcc
言語:C
[4]7月23日
 よろしくお願いします。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5386日前に更新/328 KB
担当:undef