C/C++の宿題を片付けます 93代目at TECH
C/C++の宿題を片付けます 93代目 - 暇つぶし2ch401:デフォルトの名無しさん
07/07/20 00:04:20
>>394
あぶねえ。
俺、“そういう試みをチャレンジしている会社がある”と信じるところだった。

402:デフォルトの名無しさん
07/07/20 00:14:35
そういうウィルスを作れたら、
量子コンピュータどころじゃない、
21世紀最大の発明となる鴨。
遺伝情報の媒体って超ひもあたりでやるのか?
エンコードやデコードどうするのかなw

403:デフォルトの名無しさん
07/07/20 00:45:57
>>294
とりあえずは問題の意味が分からないんだけど、それは置いておいて
>>294>>295に出ているソースをベースにして作らないといけないの?

コンパイルさえできないんだけど。



404:デフォルトの名無しさん
07/07/20 01:58:29
>>294>>295です
書いてあるプログラムのmainとnumber大域変数は変更しないで
intのスタックを2つ作る(大域変数)。
1つのスタックは数値をいれる。もう1つには演算子を表す数をいれます。

405:デフォルトの名無しさん
07/07/20 02:01:27
コンパイルは出来なくてもいいんです。確か1つ引っかかりますよね。


406:デフォルトの名無しさん
07/07/20 06:45:10
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 問題010
多分岐型(2)
次の説明は冬季オリンピックの開催年についての説明である。

キーボードから変数year に入力された年号について、
開催された年に第何回大会が開催されたか
画面に表示するプログラムを作成しなさい。

また開催年でない場合は、画面にその旨メッセージを出力すること。

【説明】
1924 年の第1 回大会以来、4 年に1 度開催されている。
1992 年の第16 回大会までは夏季大会と同じ年に開催されたが、
1994 年の第17 回大会からは、夏季大会の2 年後に開催されるようになった。
1940 年、1944 年は第二次世界大戦の影響で中止。
次回は2010 年、第21 回大会、カナダのバンクーバーで開催予定。
[3] 環境
 [3.1] OS: Windows;
 [3.2] コンパイラ名とバージョン: (VS)
 [3.3] 言語: C
[4] 期限: ([2007年07月21日まで]
[5] その他の制限:

よろしく。

407:デフォルトの名無しさん
07/07/20 07:02:51
>>406
やだ

408:デフォルトの名無しさん
07/07/20 07:26:01
>>406
ほらよ、とっときな

#include <stdio.h>
int main(void){
int year;
while(1){
printf("年号は?");scanf("%d",&year);
switch(year){
case 1924:puts("第①回");break;
case 1928:puts("第②回");break;
case 1932:puts("第③回");break;
case 1936:puts("第④回");break;
case 1948:puts("第⑤回");break;
case 1952:puts("第⑥回");break;
case 1956:puts("第⑦回");break;
case 1960:puts("第⑧回");break;
case 1964:puts("第⑨回");break;
case 1968:puts("第⑩回");break;
case 1972:puts("第⑪回");break;
case 1976:puts("第⑫回");break;
case 1980:puts("第⑬回");break;
case 1984:puts("第⑭回");break;
case 1988:puts("第⑮回");break;
case 1992:puts("第⑯回");break;
case 1994:puts("第⑰回");break;
case 1998:puts("第⑱回");break;
case 2002:puts("第⑲回");break;
case 2006:puts("第⑳回");break;
default:puts("開催されなかった、あるいはどうなるか分かりません。");break;
}}return 0;
}

409:デフォルトの名無しさん
07/07/20 07:27:22
>>405
コンパイル出来ないのは、
「大域変数を変更する」以前の
「書いてあるプログラム」の問題。


410:デフォルトの名無しさん
07/07/20 11:06:04
>>354
URLリンク(kansai2channeler.hp.infoseek.co.jp)

411:タウリン2000mg配合
07/07/20 11:13:28
[1] 授業単元:計算機プログラミング
[2] 問題文:input7.txtから4×4の行列の要素を読み込み、その逆行列を出力するプログラムを作成せよ。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:よくわかりません。
 [3.3] 言語: C言語
[4] 期限: 2007/8/3 まで

URLリンク(www.fluid.cse.nagoya-u.ac.jp)
を改造して作ればいいという課題です。
抜けてる部分だけ作ればいいんですが、それでもいまいちわかりません。
どなたか親切な方がいたら教えてもらえないでしょうか。

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


413:デフォルトの名無しさん
07/07/20 11:48:58
>>412
どんなソースかと思いきやww

414:デフォルトの名無しさん
07/07/20 13:02:20
アマリニモカワイソスギル

415:デフォルトの名無しさん
07/07/20 13:05:47
>>411
nagoya-u.ac.jpって書いてあるけど、ブラクラ?

416:デフォルトの名無しさん
07/07/20 13:15:02
>>363
#include <stdio.h> #include <string.h> #include <ctype.h>
#define SIZE 500
int main()
{ char English[SIZE] = {'\0'}; char Other[SIZE] = {'\0'};
char buff[SIZE]= {'\0'}; char *temp; int i,j=0,k=0; int len;
fgets(buff,sizeof(buff),stdin); if(temp = strchr(buff, '\n'))
*temp = '\0';
for(i = 0; buff[i] != '\0'; i++){
if(isalpha(buff[i]))
English[j++] = buff[i];
else
Other[k++] = buff[i];
}
printf("English %s Other %s \n",English,Other);

printf("英文字入力\n");
fgets(buff,sizeof(buff),stdin);
if(temp = strchr(buff, '\n'))
*temp = '\0';
printf("削除文字入力\n");
fgets(Other,sizeof(Other),stdin);
if(temp = strchr(Other, '\n'))
*temp = '\0';
len = strlen(Other);
while(temp = strstr(buff,Other)){
memcpy(temp,temp+len,sizeof(buff));
}
printf("削除後 %s \n", buff);

return 0;
}

417:デフォルトの名無しさん
07/07/20 13:17:10
>>415
サンプルソースだ。問題ないと思うが。

418:デフォルトの名無しさん
07/07/20 13:36:14
[1] 授業単元:演習
[2] 問題文:自然数nを入力すると、任意のディレクトリに任意の名前でn個のフォルダを作成するプログラムを作りなさい。
       なお、危険防止のためnの上限は5とする事。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (vs)
 [3.3] 言語: (C言語)
[4] 期限:今日中

419:デフォルトの名無しさん
07/07/20 13:38:38
C++の認定試験てあるの?

420:デフォルトの名無しさん
07/07/20 13:52:41
[1] 授業単元: 演習
[2] 問題文(含コード&リンク):
探索パターンと置換パターン、入力ファイル名を引数にとり、
入力ファイルの探索パターンに合致する部分をすべて置換パターンに置き換えるプログラムを作成せよ
パターンにはsedで扱える正規表現のうち、下の部分が使えるように実装せよ

. 改行をのぞく任意の1文字にマッチ
[abc…] aまたはbまたはc…のうちいずれか1文字にマッチ
d*    0個以上のd(dは文字または正規表現)にマッチ
\(str\) 文字列str(strは正規表現を含んでよい)二マッチ
\n    n番目に表れた\(...\)の中の文字列にマッチ (nは1から9の整数)
\c    cに^,$,.,*,[,\をおくことによりそれ自身にマッチ
.*    0個以上の改行を除く任意の文字にマッチ

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 07年7月22日
[5] その他の制限: system()等使わずに正規表現を実装すること

421:お願いします!
07/07/20 13:54:03
「2個のサイコロ振りをシミュレートするCプログラムを書け。1個目のサイコロ振りにも2個目サイコロ振りにも関数randを使い、2つの出目の和を計算する。」
この問題です!よろしくぅお願いします!

422:デフォルトの名無しさん
07/07/20 13:55:20
>>421
#include <stdlib.h>
#include <stdio.h>
int main() {
int a,b;
a = rand() % 6 + 1;
b = rand() % 6 + 1;
printf("%d", a + b);
return 0;
}

423:デフォルトの名無しさん
07/07/20 14:02:04
>>422
ありがとうございますぅ!ただ、何と何が出たか分からないから個別に表示もおながいもうしあげます

424:デフォルトの名無しさん
07/07/20 14:03:22
printf("%d + %d = %d\n", a, b, a + b);

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日
 よろしくお願いします。

599:デフォルトの名無しさん
07/07/21 22:41:33
>>588 MinGWで。Macで動くか知りません
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
int i, j, s = 6, n = 100, m = 10;
double d = 0;
for(i = m; i <= n; i += m) {
for(j = i-m+1; j < i; j++) d += 1/pow(j,s);
printf("n = %i\t:\t%.15f\n", i, d);
}
printf("π^6/945:\t%.15f\n", pow(M_PI,s)/945);
return 0;
}

600:デフォルトの名無しさん
07/07/21 22:55:00
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のプログラムのmainとnumberは変更しないで、
intのスタックを2つ作る。1つは数値をいれる。もう1つには演算子を表す数をいれる
#include <stdio.h> #include <stdlib.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);}}int expression(){
int ans;ans = term();while(1){if(*p == '+'){
p++;ans = ans + term();}else if(*p == '-'){
p++;ans = ans - term();}else break;}
return(ans);}int term(){int ans,x;ans = number();
while(1){if(*p == '*'){p++;ans = ans * number();}
else if(*p == '/'){p++;x = number();
if(x == 0){printf("Division by 0\n");
exit(1);}ans = ans / x;}
else break;}return(ans);}
int number(){int i=0;while (isdigit(*p)){i=i*10+(*p++)-48;}
return(i);}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 年07月23日
[5] その他の制限: 特になし


601:デフォルトの名無しさん
07/07/21 23:04:37
いい加減にしろよカス

602:デフォルトの名無しさん
07/07/21 23:09:04
>>600
インクルードくらいは改行しなよ、ナス!

603:デフォルトの名無しさん
07/07/21 23:26:13
>>602
600です。すいません。改行が多いと言われてしまったので。
確かに読みずらいですよね。でも、お願いします。

604:デフォルトの名無しさん
07/07/21 23:27:08
>>603
上のほう見ろ、答えあるから

605:デフォルトの名無しさん
07/07/21 23:33:42
>>603
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利
URLリンク(kansai2channeler.hp.infoseek.co.jp)


606:519
07/07/21 23:34:53
>>553で、私の環境では特にエラー出ませんでした^^;

>>596さんのやつはどういう挙動になるんですか?


607:デフォルトの名無しさん
07/07/21 23:38:59
>>598
URLリンク(kansai2channeler.hp.infoseek.co.jp)

608:デフォルトの名無しさん
07/07/21 23:42:11
>>606
エラーはカンマとピリオドを打ち間違ってるところ、
警告は戻り地が無い関数なのにintで宣言してるところ。

609:デフォルトの名無しさん
07/07/21 23:47:36
>>604>>605
同じ書き込みがあったんですね。
ありがとうございます

610:デフォルトの名無しさん
07/07/21 23:54:29
>>606
あれで動くってどんな環境だよwww

611:デフォルトの名無しさん
07/07/22 00:02:17
>>607
助かりました☆

612:デフォルトの名無しさん
07/07/22 00:02:55
>>607
ここ> animal=(animal+direction+road_size)%road_size;
と、ここ> fp=fileopen("data");
仕様と違うと思う

613:デフォルトの名無しさん
07/07/22 00:06:51
>>598
道の右端と左端はつながってないの?

>>612
ファイル名の data1.txt data2.txt data3.txt ... になるんだけどどの辺が違う?

614:デフォルトの名無しさん
07/07/22 00:19:46
>>612 プログラムの冒頭に「系列ファイル文字列」をキーボードから入力するってあるので

同じだけど一応オレも。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

615:デフォルトの名無しさん
07/07/22 00:28:05
>>614
thx
見落としてた

>>598
>>607 はキーボードからの入力になってないので >>614 をどうぞ

616:デフォルトの名無しさん
07/07/22 00:33:28
>>607 は他にも間違いがある…orz

関数 fileopen 中の
fclose(fp);

else fclose(fp);

617:デフォルトの名無しさん
07/07/22 00:49:50
UPする前に質問します
C言語の筆記問題はスレ違いになるのでしょうか?


618:デフォルトの名無しさん
07/07/22 00:50:34
スレ違いではないとおもうけど、食指が動かない

619:デフォルトの名無しさん
07/07/22 00:51:12
別にいいんでね?質問する前にUPして欲しい。
すれ違いなら優しいおじさんが誘導してくれるかもしれない。

620:617
07/07/22 00:58:38
レスありがとうございます
食指は動かないかもしれませんが、後でUPしてみます

621:デフォルトの名無しさん
07/07/22 01:10:02
後でって、さっさとうpしろよw
みんな寝ちゃうぞ

622:デフォルトの名無しさん
07/07/22 01:23:50
2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66

この数列の、20項以降を表示させる関数を作れといわれたのですが
分かりませんでした

623:デフォルトの名無しさん
07/07/22 01:28:07
>>622
0は入らないのか?10台、20台は入らないのか?
数列の並びがよくわからん。

624:617
07/07/22 01:30:15
筆記問題なので、注意してくださいませ

[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク):
URLリンク(www-2ch.net:8080)
※jpegファイルが6つ入ってます(No1~No6)
 No3~No6までが、今回やってもらいたいファイルです
 No1とNo2は自分でも問題無かったので入れる必要は無かったのですが
 テスト形式なので(100点満点)、中途半端に抜かすのもどうかと思い入れました
 
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語:C言語
[4] 期限:23日のAM1時くらいまでが好ましいですが、25日くらいまで大丈夫です
[5] その他の制限:


625:デフォルトの名無しさん
07/07/22 01:56:58
>>622
それ英語のなぞなぞ (答えTwo thousands)

626:デフォルトの名無しさん
07/07/22 02:06:35
1時なんかもう過ぎてるだろボケ
・・・ボケは私です。
4-1 for(i=0;i<N;i++)b[i]=a[i]; 4-2 1
5-1 t1.a+t1.b; 5-2 5
6-1 4 6-2 7
7-1 return y; 7-2 (a)5 (b)20
8-1 (a) i=0; (b) (i<10) (c) += 8-2 84 8-3 6.800000 + 11.200000 i
8-4 (a) NULL (b)cellp->next 8-5 (a) b==0 (b) gcd( b, a%b )
9-1 変数 9-2 型 9-3 typedef 9-4 定義 9-5 桁オチ 9-6 情報欠落

かなりテキトー。特に用語のあたりとか。

627:デフォルトの名無しさん
07/07/22 02:10:56
>>622
答えは >>625 の言葉でググったら出てきたけど
プログラムで書こうとすると難しいよ

628:デフォルトの名無しさん
07/07/22 02:16:26
>>624
No.3
[4]
(1) : (a) 0 (b) N (c) b[i] = a[i]
(2) : (a) 1
[5]
(a) t1.a + t1.b (b) 5
[6]
(a) 4 (b) 7
[7]
・・・・・・・もうめんどくせ

629:デフォルトの名無しさん
07/07/22 03:17:14
>>622
#include <stdio.h>
int main(){int *a,*b,*c,*d,i=0,val;
int n[]={0,2,4,6,-1};int m[]={0,3,4,5,6,-1};
for(a=m;*a>=0;a++)for(b=n;*b>=0;b++)
for(c=m;*c>=0;c++)for(d=n;*d>=0;d++){
val=((*a*10+*b)*100+*c)*10+*d;i++;
if((i>20)&&(i<=320)) printf("%d\n", val);}return 0;}


630:デフォルトの名無しさん
07/07/22 04:37:34
設問者がなぞなぞ好きならそれはそれで良いのかもしれないが。
それで単位を取れるかどうかとなると、学生がちょと河合祖。

631:519
07/07/22 11:12:25
戻り値が無い関数はvoidがいいんですか?

632:デフォルトの名無しさん
07/07/22 11:16:21
そうだよ☆
でもmainだけは戻り値がいらなくてもintにするのが習慣みたいね

633:デフォルトの名無しさん
07/07/22 11:19:41
>なぞなぞ
また1つ賢くなった、ありがとう

634:デフォルトの名無しさん
07/07/22 11:23:57
>>632
お前は要らないかもしれないけど、システムにとって必要だよ。

635:519
07/07/22 11:35:30
あと . と , は直してアップしたつもりでした

636:デフォルトの名無しさん
07/07/22 11:37:10
>>622
#include <stdio.h>

int main(void)
{
    int i;
    for(i = 1; i < 100; i++)
        printf("%ld\t", i%4*2 + i/4*10 + (i < 4 ? 0 : 20));
    return 0;
}

英語のなぞなぞって何?

637:617
07/07/22 13:34:20
解答ありがとうございました
参考にさせていただきます!

638:デフォルトの名無しさん
07/07/22 15:14:48
>>632
習慣じゃなく規格で決まっている。

639:デフォルトの名無しさん
07/07/22 15:50:54
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
行列のサイズ n, m, l と,それに応じた n×m, m×l の行列が記録されたファイルを食べて,結果を別のファイルに書き出そう.

%cat testfile

3
2
3

3.2 4.8
8.2 6.5
4.3 -2.2

-5.0 6.2 8.9
3.5 -0.2 -5.8

であるとする.3×2, 2×3の行列の積をとり,3×3の行列を得る事になる.そこでプログラムを開発して、

% ./prog0 testfile ANSWER

とすれば,積が ANSWER というファイルに書き込まれるようにせよ.argv[], argc, fscanf(), fprintf() を総動員する.
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/25まで

よろしくおねがいしますm(_ _)m

640:デフォルトの名無しさん
07/07/22 15:51:45
argv[], argc, fscanf(), fprintf() を総動員する.
ワロタ

641:デフォルトの名無しさん
07/07/22 16:07:42
>>639
もうマジで日本語でおk

642:デフォルトの名無しさん
07/07/22 16:11:50
入力テキストは
n
m
l

行列1

行列2
って形式なんだろう

643:デフォルトの名無しさん
07/07/22 16:31:25
>結果を別のファイルに書き出そう.

>そこでプログラムを開発して、

出題者はどういうノリなんだ。

644:デフォルトの名無しさん
07/07/22 16:35:10
>>639
#include <stdio.h>
#define N 128
int main(int argc, char *argv[])
{
    FILE *fpin, *fpout;
    int n, m, l, i, j, k;
    double mat1[N][N], mat2[N][N], mat3[N][N];
   
    if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) return 1;
   
    fscanf(fpin, "%d%d%d", &n, &m, &l);
    for(i = 0; i < n; i++)
        for(j = 0; j < m; j++)
            fscanf(fpin, "%lf", &mat1[i][j]);
    for(i = 0; i < m; i++)
        for(j = 0; j < l; j++)
            fscanf(fpin, "%lf", &mat2[i][j]);
   
    for(i = 0; i < n; i++){
        for(j = 0; j < l; j++){
            mat3[i][j] = 0;
            for(k = 0, mat3[i][j] = 0; k < m; k++)
                mat3[i][j] += mat1[i][k]*mat2[k][j];
            fprintf(fpout, "%f ", mat3[i][j]);
        }
        fprintf(fpout, "\n");
    }
   
    fclose(fpin), fclose(fpout);
    return 0;
}

645:デフォルトの名無しさん
07/07/22 16:36:27
学校行けよ

646:デフォルトの名無しさん
07/07/22 16:45:22
今時期は夏休み返上で赤点補習かな

647:デフォルトの名無しさん
07/07/22 16:53:38
>>644
出来ました。ありがとうございますm(_ _)m


648:デフォルトの名無しさん
07/07/22 17:39:10
はしかのせいで補習のやつが多そうだな

649:デフォルトの名無しさん
07/07/22 17:46:05
なるほど、失速しないのはその影響か。

650:デフォルトの名無しさん
07/07/22 18:52:14
行列matの転置行列を求めて次のように出力するプログラムを完成させよ。

| 1 6 11 16 21 |
| 2 7 12 17 22 |
| 3 8 13 18 23 |
| 4 9 14 19 24 |
| 5 10 15 20 25 |


651:デフォルトの名無しさん
07/07/22 18:52:45
#include <stdio.h>
#define MSIZE 5
void swap(int *a, int *b) {
int c;
(a) = *a;
*a = *b;
*b = (a) ;
}
void main(void) {
int i, j, mat[MSIZE][MSIZE] = { { 1, 2, 3, 4, 5},
{ 6, 7, 8, 9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25} };
for(i = 0; i < MSIZE - 1; i++) {
for(j = (b) ; j < (c) ; j ++) {
swap( (d) , (e) );
}
}
for(i = 0; i < MSIZE; i ++) {
printf("|");/25小計
for(j = 0; j < MSIZE; j ++) {
printf("%3d ", mat[i][j]);
}
printf(" |\n");
}
}

さっぱりわかりません
よろしくお願いします

652:デフォルトの名無しさん
07/07/22 18:53:43
あるカップラーメンの値段を店ごとに調べた.それを配列に
入れて,下の出力のように10円刻みに分布をとることを考える.
そのためのプログラムを下に示す.空白を補え.

80- 89円: 2
90- 99円: 2
100-109円: 1
110-119円: 2
120-129円: 1
130-139円: 2


653:デフォルトの名無しさん
07/07/22 18:55:33
#include <stdio.h>
#define C_NUM 6

void makedist(int a[10], int b[C_NUM]) {
int i;

for(i = 0; i < 10; i ++) {
b[ (a) ] += 1;
}
}

void main(void) {
int price[10] = {80, 120, 111, 130, 139, 95, 98, 89, 105, 119};
int dist[C_NUM], i;

for(i = 0; i < C_NUM; i++) {
dist[i] = (b) ;
}
makedist( (c) , dist);
for(i = 0; i < C_NUM; i++) {
printf("%3d-%3d円: %3d\n", (d) ,
(e) , dist[i]);
}
}

これもさっぱりです・・・
教えてください


654:デフォルトの名無しさん
07/07/22 18:58:12
>653
(a)a[i]/10-8
(b)0
(c)price
(d)80 + i * 10
(e)89 + i * 10

655:デフォルトの名無しさん
07/07/22 19:08:49
>>650-651
a:c
b:0
c:i
d:mat[i][j]
e:mat[j][i]


656:655
07/07/22 19:10:03
訂正
d:mat[i][j]→&mat[i][j]
e:mat[j][i]→&mat[j][i]

657:655
07/07/22 19:20:36
何度も済まん…

>>650-651
a:c
b:0
c:i+1
d:&mat[i+1][j]
d:&mat[j][i+1]


658:デフォルトの名無しさん
07/07/22 19:23:54
ありがとうございます!!


659:デフォルトの名無しさん
07/07/22 19:29:39
与えられた正数aの逆数1/aを,除算を用いずに求めるアルゴリズムを
ニュートン法によって作りたい.
ただし,初期値x0は十分に解に近いところから出発するものとする.
次の[1]から[4]の空欄(a)から(f)を埋めよ.

[1]
ニュートン法でaの逆数1/aを求めるためには
f(x)=(a)のゼロ点を求めればよい.

[2]
[1]の式に対して,ニュートン法による第n+1回目の反復による値Xn+1は,
第n回目の反復による値Xnを用いて
Xn+1=(b)と表される.



660:デフォルトの名無しさん
07/07/22 19:30:11
[3]
[2]で示した反復によるアルゴリズムを実現すると次のようになる.
#include <stdio.h>

void main(void) {
double u, v;
int i;
printf("正数を入力して下さい.\n");
scanf( (c) );
printf("逆数に十分近い初期値を入力して下さい.\n");
scanf( (d) );
for(i = 0; i < 3; i ++) {
u = (e) ;
printf("%5.3f\n", u);
}
}

[4]
[3]で作ったプログラムを実行し,「3」,「0.5」の順に入力した際に
for文の中のprintf関数による出力結果をすべて示すと次のようになる.

(f)



661:デフォルトの名無しさん
07/07/22 20:37:35
>>659
(a) 1/x - a {x = 1/a → 0 = 1/x - a だから}
(b) Xn*(2-a*Xn) {Xn-f(Xn)/f'(Xn) →Xn-(1/Xn-a)/(1/(-Xn*Xn))だから}
(c) "%lf",&v (d) "%lf",&u (e) u*(2-v*u)
(f)
0.5
0.250
0.332

662:デフォルトの名無しさん
07/07/22 20:37:52
関数myreplaceを使って実際に文字列を変換させるプログラムを作成したところ,
出力結果(1)は「tuat」となった.
空欄(a)~(f)を埋めて次のプログラムを完成させ,
出力結果(2)を空欄(g)に記入せよ.



663:デフォルトの名無しさん
07/07/22 20:39:44
#include <stdio.h>
(a) ;

void main(void) {
char code[16] = "GHIGFACDFDBA";
char ret[16] = "";
myreplace(" (b) ", ret);
printf("%s\n", ret); ・・・出力結果(1)
myreplace(code, ret);
printf("%s\n", &ret[5]); ・・・出力結果(2)
}
void myreplace(char org[ ], char ret[ ]) {
char string1[16] = (c) ;
char string2[16] = "v)(^e_tua";
int i, j;
for(i = 0; org[i] != (d) ; i ++) {
for(j = 0; string1[j] != (d) ; j ++) {
if(org[i] == string1[j]) {
(e)
}
}
}
(f) /* 終端記号 */
}

出力結果
(g)




664:デフォルトの名無しさん
07/07/22 20:42:23
>>659 訂正
(f)
0.250
0.313
0.332


665:デフォルトの名無しさん
07/07/22 21:04:07
[1] 授業単元:
[2] 問題文(含コード&リンク):
2 つのchar 型配列x[],y[] に格納された文字列を入れ替えるプログラムを作成せよ.
ただし入替え処理には,関数swap array(char *,char *) を作成して用いること.
% ./test
入替前のx: "abcdefgh"
入替前のy: "ABC"
関数swap_array() を呼び出しました
入替前のx: "ABC"
入替前のy: "abcdefgh"
%
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: (07月23日00:00まで)
[5] その他の制限:ポインタまで習ってます
よろしくおねがします


666:デフォルトの名無しさん
07/07/22 21:05:33
>>650マルチ必死だな(´,_ゝ`)プッ

667:デフォルトの名無しさん
07/07/22 21:39:34
>>662 なんかヤな問題だな。回答は複数あるけどたぶん↓
(a) void myreplace(char org[], char ret[]); (b) GHIG (c) "ABCDEFGHI"
(d) '\0' (e) ret[i] = string2[j]; (f) ret[i] = '\0'; (g) v(^_^)v

668:デフォルトの名無しさん
07/07/22 22:05:25
[1] 授業単元:
[2] 問題文(含コード&リンク):
1start で示されるアドレスからlength バイト分だけの領域に関して,
値val で埋める関数cmemset(char*start, int value, int length) を作成せよ.
さらに,malloc() 関数を用いてchar 型配列のメモリ領域を確保し,
cmemset() が正確に動作することを確認
(メモリ領域の内容を整数値として表示)するプログラムを作成せよ.
%./kadai
4 -89 0 1 5 43 ... 112 ← cmemset 使用前
0 0 0 0 0 0... 0 ← 0 で埋めたとき
88 88 88 88 88 88 ... 88 ← 88 で埋めたとき
%
2src で示されるアドレスからlength バイト分だけの領域を,dest で示される領域へコピーする関数
cmemmove(char *dest, char *src, size t length) を作れ.なお,送り元の領域と送り先の領
域がオーバーラップしていても,正しくコピーできる仕様にせよ.さらに,malloc() 関数を用いて
char 型配列のメモリ領域を確保し,cmemmove() が正確に動作することを確認(メモリ領域の内容を
整数値として表示)するプログラムを作成せよ.
% ./kadai
1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 ← cmemmove 実行前
1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を10 番目へ
1 2 3 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を3 番目へ
%
[3] 環境
 [3.1] OS: (Linux3.2)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: (07月23日まで)
[5] その他の制限:おねがいします

669:デフォルトの名無しさん
07/07/22 22:24:59
char配列埋めるのにvalueはintかよ

670:デフォルトの名無しさん
07/07/22 22:27:26
標準のmemset()もそうでしょ

671:デフォルトの名無しさん
07/07/22 22:41:46
わかる方でいいのでおねがいします

672:デフォルトの名無しさん
07/07/22 22:43:25
何を?

673:デフォルトの名無しさん
07/07/22 22:43:59
どれを?

674:671
07/07/22 22:45:03
すみません全部忘れてました
村上ファンド事件についてインサイダー取引という単語を用いて100字以内にまとめよ
です

675:デフォルトの名無しさん
07/07/22 22:47:02
he is very very bad

676:デフォルトの名無しさん
07/07/22 22:51:21
665と668です

677:671
07/07/22 23:03:48
本当に誰か答えてください><

678:デフォルトの名無しさん
07/07/22 23:11:30
>>665
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ココの人、みんな"わかる方"だからさ。そういう言い方なんか違うと思うよ。

679:デフォルトの名無しさん
07/07/22 23:16:22
Linux3.2 うひょ

680:デフォルトの名無しさん
07/07/22 23:31:17
char *cmemset(char *start, int value, int length)
{
const unsigned char ch = value;
while(num--)
*ptr++ = ch;
return start;
}
char *cmemmove(char *dest, char *src, size t length)
{
while(length--)
*(dest+length) = *src;
return dest;
}

681:デフォルトの名無しさん
07/07/22 23:34:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Mac)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: ([2007年7月23日9:00まで] )
[5] その他の制限:問題文、プログラム内で使うデータファイル、自分で作ったソースをzipにしました
            何故動かないのかわからないのでご教授下さいませ

682:デフォルトの名無しさん
07/07/22 23:35:25
メモリコピーはアドレスの大小関係で
昇順、降順を切り替えないとおかしなことになるよ

683:デフォルトの名無しさん
07/07/22 23:45:59
>>681
その汚いソースをなんとか動くようにしてくださいっていうなら絶望的だな
どっかしらでsegmentation faultが起きてるから頑張って探しな

684:デフォルトの名無しさん
07/07/22 23:52:08
>>679
大分未来からお越しのようですね

685:デフォルトの名無しさん
07/07/23 00:14:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):整数集合 { 1, 2, 3, 4, 5 } と { 2, 4, 6 } の 共通集合を求め、表示するプログラム
集合をリストを用いて実現し、emptySet, inSet, addElem, intersection, printSet, freeSet を リストを用いた集合操作に変更しなさい。

コード:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2007/7/25 15:00

プログラムのコード自体はやってる最中なのでめちゃくちゃですが気にしないでください。
コンパイルは特にエラーもなく通ります。
実行したあと

  %./a.out

と出るだけでそこから何も起きません。
無限ループに陥ってる可能性を考えてmain関数内にprintfを設置しました。
コードを見てもらえばわかるのですが、main関数内の2行目に配置したprintfすら実行されません(1行目はint型の変数宣言)。
これはmain関数が実行されていないということでしょうか?
原因解明お願いします。


686:デフォルトの名無しさん
07/07/23 00:16:28
>>681
enter と enter2 で xtopx->child1 や xtopx->child2 が使われているけど
xtopx 自体が初期化されていない気がする


687:デフォルトの名無しさん
07/07/23 00:17:31
>>680もう少しヒントをください

688:685
07/07/23 00:19:53
すいません。捕捉です。
このプログラムは、元は配列を用いて集合を実現してました。これをリスト構造に改編しろ。
という問題です。

689:686
07/07/23 00:27:52
>>681
あとグローバルでstruct member **result; が宣言されているのに
search および search2 で ローカルで struct member **result; が宣言されている
ローカル側のresult;に代入しているから 
result=(struct member **)malloc(sizeof(struct member *)*(MEMBER_MAX+1));
で確保した領域が保存されていない.returnで戻しているけどmain でその戻り値保存していないし

というかこのresultのポインタリストはどこで使われているのだろうか?

690:デフォルトの名無しさん
07/07/23 00:32:12
最近のCって型定義に変数宣言しても通るの?

691:デフォルトの名無しさん
07/07/23 00:34:02
間違えた

×型定義に
○型定義前に

普通は構造体定義してから変数宣言だよね?

692:686
07/07/23 00:35:39
>>681がすでにいない気もするけど

>>681
Top1 と Top2 は 0 か NULL で初期化されていないので
enter と enter2 の if(!Top1){ } が実行されずに
top=Top1; while(top){ } で失敗する可能性がある


(HDDから怪しい音が・・・こわい)

693:デフォルトの名無しさん
07/07/23 00:42:08
>>685
int inSet(ElementP s,int v){/*変更可*/
while(s->next!=NULL){
if(s->data==v){
return 1;
}
}
return 0;
}
ここで無限ループしてる

694:デフォルトの名無しさん
07/07/23 00:46:51
>>680もう少し補足していただくと・・・

695:685
07/07/23 00:46:57
>693
指摘ありがとうございます。
しかし、修正してみたものの症状変わらず・・・。

696:681
07/07/23 00:47:46
>>692
すいません、プログラムと睨めっこしてました

ちょっといじってみます、また何かあったらご教授いただけると幸いです

697:デフォルトの名無しさん
07/07/23 00:48:48
while(p->next!=NULL)
{
if(p->data < val->data)
val=p;
p=p->next;


}

ここでも無限ループしてる

698:デフォルトの名無しさん
07/07/23 01:04:24
>>685
流し読みだけど、ElementP emptySet(){ return NULL; }で。
やり方は他にもあるけど、少なくとも次がない=空じゃないです。そうすると
mallocは、s==NULLのとき、addElemでして、return sってことになるかと。
void addElem(ElementP s,int v) → ElementP addElem(ElementP s,int v)
ですね。あと、freeSetが最初しか開放してないから再帰でnextたどってく感じで。


699:デフォルトの名無しさん
07/07/23 01:17:33
>>680 int main()内が分かりません
助けてください><

700:685
07/07/23 01:31:09
>697
すいません、どこで無限ループなのかわからないです。

>698
その方法もやってみます。
freeSetの件も修正してみます。

701:685
07/07/23 02:00:10
どうやら環境の差のようです。Windowsで実行したところ正常に動きました。
いろいろとありがとうございました。

702:681
07/07/23 02:01:28
>>681ですが、アドバイスをいただいて直してみましたがうまくいきません
アップしたソースの不都合な所はばっさり変更しても良いので、
なんとか動くように訂正お願いします

703:デフォルトの名無しさん
07/07/23 02:04:14
環境の差なわけねえwww

704:デフォルトの名無しさん
07/07/23 02:18:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
 [プログラム説明]
2桁の16進数('41'~'49'、 '50'~'59')を入力すると対応する文字を表示する。
ただし、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒン
ト:入力は一つの数値か、二つの文字か?)

実行結果
2桁の16進数('41'~'49'、 '50'~'59')を入力してください:53
文字コード「53」文字は「S」です。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: ([明日の朝まで] または [無期限] のいずれか)
[5] その他の制限: printf() scanf()を最近習いました

705:デフォルトの名無しさん
07/07/23 02:27:40
>>704

#include <stdio.h>
int scan_ascii(){
int c1,c2;
printf("2桁の16進数('41'~'49'、 '50'~'59')を入力してください:");
scanf("%c%c", &c1, &c2);
return (c1<<4 + c2);
}
int print_ascii(int c){
printf("文字コード「%d」文字は「%c」です。\n", c, c);
}
int main(){
print_ascii(scan_ascii());
return 0;
}

706:デフォルトの名無しさん
07/07/23 02:34:50
すいません、returnとasciiは習ってないです・・・
でもありがとうございます!1原型ができました

707:デフォルトの名無しさん
07/07/23 02:40:08
>>702
URLリンク(kansai2channeler.hp.infoseek.co.jp)

708:707
07/07/23 02:42:00
アンカー間違えた
>>702 じゃなくて >>701 だった

709:デフォルトの名無しさん
07/07/23 03:09:46
>>420
まだ全然わからないんでお願いします

710:デフォルトの名無しさん
07/07/23 03:28:43
\n    n番目に表れた\(...\)の中の文字列にマッチ (nは1から9の整数)

が意味わからね
方針として入力文字列を"トークン"列に変換してから置換処理がクレバーじゃね?
struct toknの設計がつぼおおおぉおおおおぉおぉおぉおおおおおおおおおおおあおあさだおssd

711:デフォルトの名無しさん
07/07/23 03:44:20
\nの前の正規表現を\( \)で囲っておくとあとで呼び出せるってやつです
URLリンク(ja.wikipedia.org)

\([asdf]\)\(fty\)\([frty]\)\(t\)\3

aftytterをチェックした場合
\3はtと同じです

system()からsed呼び出して同じ動作するものは作れたんですけど、それだと題意にあわないんで・・・

712:デフォルトの名無しさん
07/07/23 10:36:35
>>530
返事が遅くなってすいません。>>530に書いてあるものを使ってpop,pushを使い
たいです。+-*/は数字の大きさで表したいです

713:デフォルトの名無しさん
07/07/23 11:05:05
[1]授業単元:プログラミング技術III
[2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限:7/24まで
[5]その他の制限:特になし

よろしくお願いします

714:デフォルトの名無しさん
07/07/23 11:12:26
>>712は、自分が書いた文を自分で理解できるのか?


715:デフォルトの名無しさん
07/07/23 11:51:28
\(\(c\)b\)d\) の場合"2"番目は何を意味する?
\([ab]\)\1の場合
aa と bb にはマッチするが ab にはマッチしないと理解して良いのか?
(否なら単に[ab][ab]と記述すればいいしなクソ)


それとこれ本当に宿題か?
\nさえなけりゃ理論的な意味の正規表現についての良問だと思うが
\nの性で劇的に難しくなってね?
お前何科の何年生?
あるいは問題間違ってねえ?

716:デフォルトの名無しさん
07/07/23 12:02:40
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した
2つのプログラムの作成をお願いします。

[3] 環境
 [3.1] OS: windows XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/07/26 13:00まで
[5] その他の制限: 特に無し

よろしくお願いします

717:デフォルトの名無しさん
07/07/23 12:18:51
\(\)って入れ子にはしないんじゃないか

718:デフォルトの名無しさん
07/07/23 12:25:06
[1] 授業単元:C
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: windows XP
 [3.2] bcc32
 [3.3] 言語: C
[4] 期限: 2007/07/23 13:00まで
[5] その他の制限: 特に無し


719:デフォルトの名無しさん
07/07/23 13:06:20
>>715
問題文には正規表現の各表現の説明があった後に
. * [abc…]、\が使えるようなプログラムを実装せよとかかれてました
ちなみに2回のC初心者向けの演習です
期末レポートなんですが、人によって問題が違って明らかにはずれくじをひいたっぽいですorz

720:デフォルトの名無しさん
07/07/23 13:08:52
あと、正規表現では括弧の入れ子は外から順に数えていくはずです

721:デフォルトの名無しさん
07/07/23 13:54:35
二回で正規表現の実装かよ
Perlとかでならまだしも・・・

722:デフォルトの名無しさん
07/07/23 14:02:30
ほかの人の課題は1時間とかで終わるのもあるんで、\n入れると難易度極端に変わるなら、実はそれ無しかもしれないです

723:デフォルトの名無しさん
07/07/23 14:06:51
出題者は、正規表現の複雑な仕様を完全に実装しろと言っている訳ではないよね。
単純なパターンチェックと置換を実装すればいいんじゃないの?


724:デフォルトの名無しさん
07/07/23 14:09:17
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
 クラスcomplexのメンバ関数で、複素数の絶対値を与える関数を新たに作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: CC
 [3.3] 言語: C++
[4] 期限: [無期限]
[5] その他の制限: 特になし
 
よろしくおねがいします。


725:デフォルトの名無しさん
07/07/23 14:15:43
>>716
URLリンク(kansai2channeler.hp.infoseek.co.jp)

726:デフォルトの名無しさん
07/07/23 14:16:34
(含コード&リンク):
のくせになんにも貼られてないってどうよ

727:デフォルトの名無しさん
07/07/23 14:26:47
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):正の整数を入力し1からその数までの間に素数がいくつあるのか数えるプログラムを作れ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。
よろしくお願いします。


728:デフォルトの名無しさん
07/07/23 14:30:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): nを入力してs=1/1-1/3 + 1/5-1/7 + 1/9....+(-1)^n-1/(2n-1)
の和を求めるプログラムを作れ。nが大きくなるにつれてs*4がどうなるか
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。

問題が難しくて困っています。
お願いいたします。


729:デフォルトの名無しさん
07/07/23 14:35:16
double s;
int i,n,j;
printf("n: ");
scanf("%d", &n);
j = 1;
for(i = 0; i < n; i++) {
s += j/(2n-1);
j = -j;
}
printf("s = %lg\n", s);

730:デフォルトの名無しさん
07/07/23 14:57:03
これはひどい

731:デフォルトの名無しさん
07/07/23 14:58:48
#include<stdio.h>
int main(){
double s=0;
int i,n,j=1;
printf("n: ");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
s += (double)j/(2*i-1);
j = -j;
}
printf("s = %lg\n", s*4);
return 0;
}


732:デフォルトの名無しさん
07/07/23 15:33:33
設問的にはcout/cinじゃまいか

733:デフォルトの名無しさん
07/07/23 15:41:51
>>727
おまいのレベルに合わせてコーディングした

#include<stdio.h>
int main(){
while(1){
int i,j,n,c=0;
printf("正数 = ");
scanf("%d",&n);
for(i=2;i<=n;c++,i++)
for(j=2;j<=i/2;j++)
if(i%j==0){
c--;
break;
}
printf("素数 = %d 個\n",c);
}
return 0;
}


734:デフォルトの名無しさん
07/07/23 15:52:57
正規表現のアルゴリズムとか考えたこともなかったな
一度単純な実装見てみたい

735:デフォルトの名無しさん
07/07/23 16:27:02
>>728
#include <iostream>
#include <iomanip>
#include <cmath>

int main()
{
    double s = 0;
    int i, n;
   
    std::cin >> n;
    for(i = 1; i <= n; i++){
        s += pow(-1, i - 1)*1/(2*i - 1);
        std::cout << std::setw(10) << i << " : " << s*4 << std::endl;
    }
   
    return 0;
}

736:デフォルトの名無しさん
07/07/23 17:23:18
>>714
出来ます。+-*/の順に1234とつけて行き大きい数字から(/から)優先
で計算するようにしたいんです。

737:デフォルトの名無しさん
07/07/23 17:53:38
>>736
スタックを2つ作り、数字と演算子を別々に積み上げておいて、演算子はどの数字を計算対象にしたら良いか、分かるのか?

738:デフォルトの名無しさん
07/07/23 18:05:53
>>736
もうちょいで自分でできるぞ
なんかね、道間違えている気がする


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