C/C++の宿題を片付け ..
[2ch|▼Menu]
486:デフォルトの名無しさん
08/06/03 02:22:25
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: MS VS2005
 [3.3] 言語: c++
[4] 期限: 2008/6/4
[5] その他の制限: 特に無し

駄目だ上手く組めない。。。。
宜しくお願いしますorz

487:デフォルトの名無しさん
08/06/03 02:29:42
>>486
つstatic変数

488:デフォルトの名無しさん
08/06/03 02:30:56
#include <stdio.h>
double kekkahozon( double i ){
static double j;
j+=i;
return j;
}
void main(){
double x;
int i;
for(i=1; i<=10; i++){
x = kekkahozon( (double) i );
printf("合計: %f\n", x);
}
}

489:デフォルトの名無しさん
08/06/03 02:31:38
double kekkahozon( double d )
{
  static ret = 0;
  return ret += d:
}

490:デフォルトの名無しさん
08/06/03 02:33:58
被った上にミスった
static double ret = 0;

491:デフォルトの名無しさん
08/06/03 04:43:45
[1] 授業単元:プログラミング(C)
[2] 問題文(含コード&リンク):コマンドラインで指定したファイルの内容を
                  16進数で標準出力にダンプする
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Visual Stdio
 [3.3] 言語: C
[4] 期限: 2008/06/04
[5] その他の制限: 特になし

492:デフォルトの名無しさん
08/06/03 05:05:55
>>491
>>491 バグ入りだからな
#include <stdio.h>
int main(int argc,char **argv){
FILE *f;unsigned char paragraph[16];int read_c,i;
argc--;argv++;
while(argc--){
f=fopen(*argv++,"rb");
if(f){
do{
read_c=fread((void*)¶graph,1,16,f);
for(i=0;i<read_c;i++)printf("%02X ",paragraph[i]);
printf("¥n");
}while(read_c==16);
fclose(f);
}}
return 0;
}



493:デフォルトの名無しさん
08/06/03 05:49:57
>>476
こんな初歩的なとこまでありがとうございました。



494:デフォルトの名無しさん
08/06/03 08:33:42
C言語でsinのマクローリン展開を10項まで実行するぷろぐらむができない・・・

495:デフォルトの名無しさん
08/06/03 09:12:54
頭悪いんだねw

496:デフォルトの名無しさん
08/06/03 10:42:14
再度おねがいします。

[1] 授業単元:プログラミング
[2] 問題文:
 (1)int 型の配列 vx の要素に順に 0 以外の 5 つの整数をキーボードから読み込んで,
 (2)vx[0] から vx[4] の逆数(1/vx[0], ... ,1/vx[4])を順に double 型の配列 vy[0]からvy[4]に代入して
 (3)vy の要素を順に表示するプログラムを作成せよ.
 なお,(1)と(2)はひとつの for 文の中に含めても良いが,(3)は別のfor文を使って書け.
 配列 vy の型は double であり,計算も double で行うことに注意。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008/06/03
[5] その他の制限:特になし

497:デフォルトの名無しさん
08/06/03 10:42:23
誰かまとめ宜しゅう

498:デフォルトの名無しさん
08/06/03 11:07:05
>>496
#include <stdio.h>

int main(void)
{
int i, vx[5];
double vy[5];

for(i=0; i<5; i++) {
do {
printf("input vx[%d]:", i);
scanf("%d", vx + i);
} while(!vx[i]);
vy[i] = 1.0 / vx[i];
}

for(i=0; i<5; i++) printf("vy[%d] = %f\n", i, vy[i]);

return 0;
}

499:デフォルトの名無しさん
08/06/03 11:10:12
>>474
どうでもいいけど、>460は仕様を満たしていないぞ。

500:デフォルトの名無しさん
08/06/03 11:12:21
>>498
scnaf()に失敗した場合、vx[i]の値は不定だから好ましくないね。
つーか、失敗した後のフォローもしてないんだからそのdo-while自体が無意味だと思う。

501:500
08/06/03 11:14:38
あー、0を除外しないといけないのか。じゃぁ>498でもいいや。失敬。

502:デフォルトの名無しさん
08/06/03 11:22:24
入力ミスって無限ループが落ち

503:デフォルトの名無しさん
08/06/03 11:23:33
正直、どうでもいいよ。

504:デフォルトの名無しさん
08/06/03 11:28:32
「3がつく」をどう判定していいのか判らないのでお願いします。

[1] 授業単元:
C/C++演習

[2] 問題文(含コード&リンク):()
・「世界のナベアツ」問題を実装せよ。

コマンドライン引き数で指定した数値が「3の倍数」か「3がつく」かを判定し、
該当した場合は「アホ」と出力すること。
尚、数値以外を指定された場合は問答無用で「どアホ」と出力すること。
・ポイント
*コマンドライン引き数の取り扱い
*文字列数値変換関数の利用
*標準出力関数の利用

[3] 環境
 [3.1] OS: (Windows/Linux/等々)
OSに依存しないこと

 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
取り敢えず、gccを使えとのことです

 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
どちらでも可

[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
今日の夕方

[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
特に指定がないので標準関数だけでお願いします

505:デフォルトの名無しさん
08/06/03 11:29:31
宿題スレでscanfにケチつけるってw

506:デフォルトの名無しさん
08/06/03 11:30:37
>>505
>503

507:デフォルトの名無しさん
08/06/03 12:42:08
>>371
URLリンク(www.bohyoh.com)

508:デフォルトの名無しさん
08/06/03 13:06:13
[1] 授業単元: C
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Cygnus
 [3.3] 言語: C
[4] 期限: 2008年6月5日17:00まで
[5] その他の制限: 関数使用
なるべくシンプルなものだとありがたいです>< よろしくお願いします!

509:デフォルトの名無しさん
08/06/03 13:20:43
Cygnusなんてコンパイラあったっけ?

510:デフォルトの名無しさん
08/06/03 13:28:30
>>509
学校から渡されました。
Cygnus.batでコンパイルします。

511:デフォルトの名無しさん
08/06/03 13:41:49
[1] 授業単元: C++
[2] 問題文 
2008年は閏年(うるうどし)である。
現在の暦において閏年は,
地球が太陽の周りを公転する周期が,
約365.24日であることに由来する調整法である。
閏年でない年は平年という。
キーボードから西暦を入力し
入力された年が閏年かどうか判定する
プログラムを作成しなさい
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C++/
[4] 期限: 6月3日5時まで
[5] その他の制限: なし。

512:デフォルトの名無しさん
08/06/03 13:42:13
[1] 授業単元: C++
[2] 問題文
今年(2008年)はオリンピックイヤー
(オリンピック開催年)である。
8月8日から24日までにかけて,中国の北京で
夏季オリンピック第29回大会が開かれる。

次の説明はオリンピックの開催年についての説明である。
キーボードから変数year に入力された年号について,
開催された年に第何回大会が開催(中止)されたか
画面に表示するプログラムを作成しなさい。
またオリンピックイヤーでない場合は、
画面にその旨メッセージを出力すること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C++/
[4] 期限: 6月3日5時まで
[5] その他の制限: なし。

2問ありますが、よろしくおねがいします。

513:デフォルトの名無しさん
08/06/03 13:42:22
誰か、エスパー頼む

514:デフォルトの名無しさん
08/06/03 13:42:50
>>508
#include <stdio.h>
#include <math.h>

#define PI 3.14159265358979323846

int check_side(int side) { return side > 0; }
int check_angle(int angle) { return 0 < angle && angle < 180; }

int main(void)
{
int side[2], angle, i;
for(i=0; i<2; i++) {
while(1) {
printf("辺%d(cm):", i+1);
scanf("%d", side + i);
if(check_side(side[i]))break;
printf("0より大きい整数を入力してください。\n");
}
}
while(1) {
printf("はさむ角(degree):");
scanf("%d", &angle);
if(check_angle(angle)) break;
printf("0より大きく180より小さい整数を入力してください。\n");
}
printf("<計算結果>\n面積(cm×cm):%f", side[0]*side[1]*sin(angle*PI/180)/2);
return 0;
}

515:デフォルトの名無しさん
08/06/03 13:46:00
[1] 授業単元: C++
[2] 問題文
キーボードから入力される2つの整数を変数a、bに格納し、
aの0乗からaのb乗までを順に出力するプログラムを作成せよ。
ただし変数bは0以上の整数が入力されるまで、入力を繰り返すものとする。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C++/
[4] 期限: 6月10日5時まで
[5] その他の制限: なし。

[1] 授業単元: C++
[2] 問題文
キーボードから2以上の整数を入力し、その数が素数であるかどうかを判断するコードを記述せよ。
ただし入力される数値が2以上でない場合、繰り返し入力を求めること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C++/
[4] 期限: 6月10日5時まで
[5] その他の制限: なし。
連投すいません。
まだありました^^;

516:デフォルトの名無しさん
08/06/03 13:48:25
>>514
ありがとうございました。助かります。

517:デフォルトの名無しさん
08/06/03 13:52:00
>>516
int check_side(int side) { return side > 0; }
int check_angle(int angle) { return 0 < angle && angle < 180; }
ここに突っ込まれると思うからちゃんと理解しとけよ

518:デフォルトの名無しさん
08/06/03 13:54:14
         ____
       /  ./  /|    こちらエスパー
     _|  ̄ ̄ ̄ ̄.|  |___  今日はどうも勘が鈍ってる
   /  |_____.|/  / 誰か援助を頼む
    ̄ ̄~  |し  |  ̄ ̄
        し⌒ J

519:デフォルトの名無しさん
08/06/03 13:55:27
>>511
#include <iostream>

int main()
{
int year;
std::cout << "西暦を入力:";
std::cin >> year;

if ( year % 4 == 0){
if ( year % 100 == 0){
if ( year % 400 == 0)
std::cout << "西暦" << year << "年は閏年" << std::endl;
else
std::cout << "西暦" << year << "年は平年" << std::endl;
}else
std::cout << "西暦" << year << "年は閏年" << std::endl;

}else
std::cout << "西暦" << year << "年は平年" << std::endl;

return 0;
}

520:デフォルトの名無しさん
08/06/03 13:57:21
>>512
>次の説明はオリンピックの開催年についての説明である。
説明どこだよ?

521:デフォルトの名無しさん
08/06/03 14:04:06
1896年に第1回大会が開催され以後4年毎に開催(中止)された。
かな
開催か中止かも判定するなら6,12,13回大会は中止

522:デフォルトの名無しさん
08/06/03 14:07:09
Wikipedia項目リンク


523:デフォルトの名無しさん
08/06/03 14:12:00
開催年だけならこれでいいかな

#include <iostream>

int main()
{
int year;
std::cout << "西暦を入力:";
std::cin >> year;

int y = 2008 - (29 - 1 ) * 4; // 第一回オリンピック開催年

if ( year % 4 == 0){
if( year - y >= 0 )
std::cout << "西暦" << year << "年は第" << ( ( (year - y) / 4) + 1 ) <<"回オリンピック開催年" << std::endl;
else
std::cout << "西暦" << year << "には開催されていない" << std::endl;
}else
std::cout << "西暦" << year << "には開催されていない" << std::endl;

return 0;
}

524:デフォルトの名無しさん
08/06/03 14:13:45
もう過去のオリンピックが開催された年のデータから参照するのが望ましい。
何か普遍的な、イレギュラーの無い法則で算出するのは無理ぽ。
過去は変えられないのだよ、ワトソン君。

525:デフォルトの名無しさん
08/06/03 14:15:45
>>511
URLリンク(kansai2channeler.hp.infoseek.co.jp)

526:デフォルトの名無しさん
08/06/03 14:35:03
[1] 授業単元:
機械学習論
[2] 問題文(含コード&リンク):()
@
クラス1、クラス2の2種類の属性をもつサンプル
を含むデータセットにおいて、クラス1のサンプル
の個数がc1,クラス2のサンプルの個数がc2である
ものとする。このデータセットから1つのサンプル
を取り出してそのクラスを観測する際、得られる平
均情報量を計算する関数を作成してください。また
関数は次のようにしてください。
Double info(int c1, int c2)
A
情報利得を計算する関数を作成してください。
[3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限: 2008/6/4/PM11:00までです。よろしくお願いします。m(_ _)m


527:デフォルトの名無しさん
08/06/03 14:35:15
>>515
#include <iostream>
int main()
{
int a, b;
std::cout << "aを入力してください:";
std::cin >> a;
do {
std::cout << "bを入力してください(bは0以上):";
std::cin >> b;
}while(b <= 0);

for(int i=0,c=1; i<=b; i++, c*=a) std::cout << a << "の" << i << "乗は" << c << std::endl;
}


528:512
08/06/03 14:47:01
問題文抜けてました。
・1896年の第1回大会以来、4 年に1 度開催されている。
・1916年の第6回大会,1940年の第12回大会,1944年の第13回大会は
 世界大戦の影響で中止された。ただし中止の場合も回数は数える。
・1906年には,近代オリンピック制定10周年記念大会が開催された。
 ただし特別大会のため,回数には数えない。
・次回は2012年、第30回大会がロンドンで開催予定。

529:デフォルトの名無しさん
08/06/03 14:55:42
Wikipedia項目リンク
Wikipedia項目リンク


530:デフォルトの名無しさん
08/06/03 15:13:40
2008年は中止ですね?

531:デフォルトの名無しさん
08/06/03 15:18:14
>>528
switch(year) {
case 1896: printf("第1回大会開催\n"); break;
case 1900: printf("第2回大会開催\n"); break;
case 1904: printf("第3回大会開催\n"); break;
case 1908: printf("第4回大会開催\n"); break;
case 1912: printf("第5回大会開催\n"); break;
case 1916: printf("第6回大会中止\n"); break;
// 略
case 2004: printf("第28回大会開催\n"); break;
case 2008: printf("第29回大会開催予定\n"); break;
case 2012: printf("第30回大会開催予定\n"); break;
default: printf("%d年には開催(開催予定)されていない\n", year); break;
}

532:デフォルトの名無しさん
08/06/03 15:27:18
開催、中止はこういうの作って判断すればいい

bool isKaisai( int year )
{
 int n[] = { 1916,1940,1944 };
 for( int i = 0; i < 3; ++i ){
   if( n[i] == year )
      return true;
 }
 return false;
}

533:デフォルトの名無しさん
08/06/03 15:55:19
#include <stdio.h>

void main()
{
int year, month, day, weekday;
for (year = 2001; year <= 2100; year++){
for (month = 1; month <= 12; month++){

weekday = ((year + year/4 - year/100 + year/400 + (13*month+8)/5 + 13) % 7)+8;
if (weekday == 13)
printf("%4d年 %2d月 %2d日\n",year, month, weekday);
}
}
}
この実行結果の13日の金曜日の個数はどうやって求めればいいですか?

534:デフォルトの名無しさん
08/06/03 15:59:33
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):21世紀(2001年〜2100年)の100年の間に、「13日の金曜日」は何回出現するだろうか。

<考え方>

2001〜2100 の間を for文 で繰り返す。

さらに、それぞれの年に1〜12月の間を for文 で繰り返す。つまり、2重ループにする。

   for (year = 2001; year <= 2100; year++) {
      for (month = 1; month <= 12; month++) {


     }
   }

2重ループの中では、その月の13日が金曜日であるかどうかを、ツェラー公式を使って判定する。金曜であれば、それをカウントしておく。

最後に、カウントした数を表示する。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual Studio 2003
 [3.3] 言語: C++
[4] 期限: 2008年06月10日14:40まで


535:デフォルトの名無しさん
08/06/03 16:10:03
>>534
URLリンク(kansai2channeler.hp.infoseek.co.jp)

536:デフォルトの名無しさん
08/06/03 19:32:54
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):
例題7-2 に以下の事項を加えたプログラムを作成せよ。
@キーボードから与えられた整数データX を順序リストから削除する関数DeleteCell(int x)。
但し、削除したセルが使用していたメモリを解放するようDeleteCell 関数内にfree 関数を用
いること。
A整数データの入力に先立って、リストの操作メニューとして以下の操作メニューを表示する。
・キーボードより i が入力された場合 ⇒ データを挿入
・キーボードより d が入力された場合 ⇒ データを削除、但し該当するデータが存在しない場
合には『そのような数字はありません』と表示
・キーボードより p が入力された場合 ⇒ その時点でのリストを表示
・キーボードより x が入力された場合 ⇒ プログラム終了
・その他のキーが入力された場合 ⇒ 警告を表示

例題7-2
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:明後日の朝まで
[5]
よろしくお願いします。

537:デフォルトの名無しさん
08/06/03 20:10:05
いろんな学校が結託してるかのように同じ問題がバンバン出て来るんだが、
このスレを見つけた少数の学校の生徒が続々と来てるだけかも?とおもった。

538:デフォルトの名無しさん
08/06/03 20:20:47
非常勤講師でーす^^

539:デフォルトの名無しさん
08/06/03 20:28:38
実は講師もまざってて自分の生徒用の問題をここで作らせてたりしてなw

540:デフォルトの名無しさん
08/06/03 20:31:30
頻出問題をまとめたら割とまとまりそうだよね
過去の回答群も載っけて好きなの使え的な

541:デフォルトの名無しさん
08/06/03 20:33:02
それこそwikiでも立ち上げて貼っておけばいいかもな。


542:デフォルトの名無しさん
08/06/03 20:37:00
[1]授業単言:C言語
[2]問題文
要素数noであるint型の配列vcの要素の最小値を返す関数
int min_of(const int vc[],int no)の作成の仕方
[3-1] windows
[3-2] gcc
[3-3] C言語
[4] 明日までです
よろしくお願いします。

543:デフォルトの名無しさん
08/06/03 20:46:42
int min_of(const int vc[],int no){
int i;
int a=vc[0];
for(i=1;i<no;i++)
if(vc[i]<a) a=vc[i];
return a;
}

544:デフォルトの名無しさん
08/06/03 21:00:12
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):成績表のプログラムを可変長配列を用いて作成しなさい
詳細は↓
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: どちらでも可 のいずれか
[4] 期限: 2008年6月3日
[5] その他の制限: 特にないです。

545:デフォルトの名無しさん
08/06/03 21:00:31
>>542ですが、メイン文の方も書き方がわからないので教えていただけませんか?

546:デフォルトの名無しさん
08/06/03 21:02:09
↑間違えました。>>543の者です。

547:デフォルトの名無しさん
08/06/03 21:03:34
#include <stdio.h>
#define array_no(a) sizeof(a)/sizeof(a[0])

int min_of(const int vc[], int no);

int main()
{
int vc[] = {78, 82, 32, 48, 63, 99, 105, 45, 67, 20, 862, 714, 60, 19, 52}; //適当な配列

printf("最小値:%d\n", min_of(vc, array_no(vc)));

return 0;
}

int min_of(const int vc[], int no)
{
int min = vc[0];
int i;
for (i = 0; i < no; ++i)
if (min > vc[i]) min = vc[i];
return min;
}

548:デフォルトの名無しさん
08/06/03 21:11:31
>>541
>>1
もうWikiあるwww
そこへのアンカーでガンガン済ませるのも手か

549:デフォルトの名無しさん
08/06/03 21:31:30
そろそろ、というかもう前々から言っているでおじゃるが
定石、ありきたりのパターンをまとめたサイトを作らないかでおじゃる?

550:デフォルトの名無しさん
08/06/03 21:32:49
[1]授業単言:C言語
[2]問題文
要素数noであるint型の配列vc2の並びを逆順にしたものを配列vc1に格納する関数
void intary_rcpy(int vc1[],const int v2[],int no)の作成
[3-1]os windows
[3-2]gcc
[3-3]C言語

どなたか教えてもらえませんか?

551:443
08/06/03 21:47:27
昨日の443です。
とりあえず、ソースを作成してみました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

こちらが問題文
URLリンク(kansai2channeler.hp.infoseek.co.jp)

まだまだ初心者で型やらもうしっちゃかめっちゃかだし、色々と突っ込みどころ満載です。
必要な分だけメモリを取れと言われているのにこのまま作ったら内部変数でドカッと持ってくやり方になっちゃうし・・・。

宜しくお願いします。

552:側近中の側近 ◆0351148456
08/06/03 21:49:34
>>550
(っ´▽`)っ
void intary_rcpy(int vc1[],const int v2[],int no)
{
  int i;
  for(i = 0; i < no; i++){
    vc1[i] = v2[no - i - 1];
  }
  return;
}

553:デフォルトの名無しさん
08/06/03 21:51:28
void intary_rcpy(int vc1[],const int vc2[],int no){
int i;
for(i=0;i<no;i++)
vc1[i]=vc2[no-i-1];
}

554:デフォルトの名無しさん
08/06/03 21:55:53
>>551
問題からは共通部分がtypeとidだけのように思ってたんだけど、
unitというよくわからないものに4バイト取ってるのはなぜ?

555:デフォルトの名無しさん
08/06/03 22:09:55
>>551
ユニット長ってのがあってタイプ毎のサイズが書かれたものがあったので構造体の中に入れたんですけど
多分それいらないみたいなんでないこととして考えても大丈夫だと思います。
消し忘れてました、すいません。

556:デフォルトの名無しさん
08/06/03 22:16:46
>>446で、人によって違うのができそうだなあといったのは
まさにこの構造体をどう作るかだったんだけど。
もしかしてload時に読み込むファイルのサンプルが提示されてたりします?

557:536
08/06/03 22:27:55
Deleteの部分だけでも自分で作って見ましたが、エラーがでてしまいます…
URLリンク(kansai2channeler.hp.infoseek.co.jp)

558:デフォルトの名無しさん
08/06/03 22:28:09
>>556
いえ、サンプルはないです。
loadした場合、以前にこのプログラムで打ち込んだファイルを呼び出してまた足していくことが出来る、
ゲームのコンテニューみたいなものだと思ってくれると分かりやすいとは思います。

559:デフォルトの名無しさん
08/06/03 22:45:22
>>549
>>1にあるwikiは誰でも編集できるぞ

つかここ1年くらいまとめサイトなんて
話題にした記憶が無いんだが
前々って何年前だよ

560:デフォルトの名無しさん
08/06/03 22:50:25
>>559
おじゃるが言うくらいだから平安頃からじゃない?

561:デフォルトの名無しさん
08/06/03 22:51:20
URLリンク(www23.atwiki.jp)
> strcpy(s, " (^ω^ ) ピザキメェおwww ");
誰だよw

562:デフォルトの名無しさん
08/06/03 23:05:30
リスト、単方向、双方向、ノードも誰か追加してくれYO!

563:デフォルトの名無しさん
08/06/03 23:06:55
>>562
このスレか1個前くらいに線形リストあったと思うから追加すれば?

564:デフォルトの名無しさん
08/06/03 23:12:34
[1] 授業単元:物質科学実験(パソコンによる計測制御入門)
[2] 問題文(含コード&リンク):
@bとcを1バイトの変数としたとき、
b = (b & 0x07) << 4;
c = (c & 0x8F) | b;
というプログラムがどの様なことをやっているか説明せよ。
この式に現れる<<という演算子は、2進数で表示された数値(ビット)を
左にシフトさせる働きをする。(例えば、b=(00000001)bとすると、b<<1は
左に1だけシフトした(00000010)bを表す。)
また、&と|という演算子はそれぞれ「ビット AND」「ビット OR」と呼ばれ、
2つの数値のビット毎のAND(各ビットのどちらかが0なら結果も0になる)
及びOR(各ビットのどちらかが1なら結果も1になる)を得るために用いる。
Abを16ビットの変数とする。その最下位ビットから3番目と6番目をクリアする
(0にする)プログラム(ルーチン)を、@に従って書け。
[3] 環境
C言語
[4] 期限:今週中
[5] その他の制限:ないと思います。

565:347
08/06/03 23:30:47
エラーメッセージが多すぎてだるい(';')
開発環境なんて、自宅にあっても使わない(';')
プログラマーもう嫌wwwwwwwwwwwwwwwwww

566:デフォルトの名無しさん
08/06/04 00:31:23
ここの問題をまじめにやったら、かなり勉強になるだろう。。。。

回答もあるし(ないのもあるみたいだが・・・)

567:デフォルトの名無しさん
08/06/04 01:23:18
質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

半径rの円に内接および外接する正n角形の面積を求めよ

568:デフォルトの名無しさん
08/06/04 01:28:57
>>567
テンプレの使い方が違うよwww

569:デフォルトの名無しさん
08/06/04 01:30:16
>:()
この顔文字可愛いな

570:デフォルトの名無しさん
08/06/04 01:32:21
567です間違えて途中で送信してしまいました
rは実数nは整数sは実数で表してください
明日いっぱいですcでお願いします

571:デフォルトの名無しさん
08/06/04 01:38:24
明日いっぱいってことは6/5いっぱいってことでいいのか?

572:デフォルトの名無しさん
08/06/04 01:46:27
567ですこの課題は初心者用だと思うのでどちらでも問題ではないと思いますお願いします

573:デフォルトの名無しさん
08/06/04 01:47:12
#include <stdio.h>
#include <math.h>

double circumscribe(double r, int n)
{
return r * r * tan(M_PI / n) * n;
}
double inscribe(double r, int n)
{
return r * r * sin(M_PI*2/n) * n / 2;
}

int main(void)
{
int n;
double r;

printf("nを入力してください:");
scanf("%d", &n);
printf("rを入力してください:");
scanf("%lf", &r);

printf("半径%fの円に外接する正%d角形の面積は%f\n", r, n, circumscribe(r, n));
printf("半径%fの円に内接する正%d角形の面積は%f\n", r, n, inscribe(r, n));

return 0;
}

574:デフォルトの名無しさん
08/06/04 02:05:51
567です職人さんありがとうございました

575:デフォルトの名無しさん
08/06/04 02:06:40
質問です

巡回セールスマン問題において、Nearest Neighbor法を用いた2-opt法は他の方法と比べて
メリットってありますか?
他の方法というのは、焼きなまし法やタブーサーチなどのことです。

λ-opt法を更に改良したのがタブーサーチなどの方法なのでただの2-opt法にメリットなど無いと
考えているのですが、教授に2-opt法が他の方法より優れている点を考えてこいと言われて困っています。


576:デフォルトの名無しさん
08/06/04 02:11:14
>>575
スレ違い
宿題だと言い張るなら>>1読んで書き直し

577:デフォルトの名無しさん
08/06/04 02:15:41
>>575
数学板の方がふさわしいかと

578:デフォルトの名無しさん
08/06/04 02:48:31
>>557 適当に加筆修正
void DeleteCell(int x)
{
CELL *p,*q;
p=q=&head;
if(p==NULL){
printf("データがありません.\n");
return;
}
if(p->data==x){
p=p->next;
free(q);
return;
}
for(;p->next!=NULL;q=p,p=p->next){
if(p->data==x){
q->next=p->next;
free(p);
return;
}
}
printf("%d:ありません\n",x);
}

579:デフォルトの名無しさん
08/06/04 03:14:46
:< :( :) :l :@ :* :8

580:デフォルトの名無しさん
08/06/04 04:42:33
つまんねwww

581:デフォルトの名無しさん
08/06/04 06:51:54
"""

582:デフォルトの名無しさん
08/06/04 06:54:18
";:

583:デフォルトの名無しさん
08/06/04 06:58:09
::.

584:デフォルトの名無しさん
08/06/04 08:39:31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
main関数の引数として小数あるいは整数を入力すると、
それらの平均値を計算して、小数点以下第2位まで表示するようなプログラムを作成せよ.
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:cl Windws visual studio
 [3.3] 言語:C 言語
[4] 期限: 2008年6月4日19:00まで]
[5] その他の制限: 特にありません。

ご解答よろしくお願いします。

585:584
08/06/04 08:41:43
その他の制限に追加があります。
提出するソースファイルのファイル名を、自分の名字(アルファベット)に拡張子cをつけたものにすること。

よろしくお願いします。

586:デフォルトの名無しさん
08/06/04 08:48:51
>>526をどうかお願いしますm(__)m

587:デフォルトの名無しさん
08/06/04 09:20:55
>>584
#include <stdio.h>

int main(int argc, char *argv[]){
int i;
double n, sum=0;
for(i=1; i<argc; i++){
sscanf(argv[i],"%lf",&n);
sum += n;
}
printf("%-10.2f\n",sum/(argc-1));
return 0;
}

実行例:
./a.out 3 5.6 8.912
5.84

588:デフォルトの名無しさん
08/06/04 10:13:41
>>586
課題の意味がよくわかんないす。観測とか。

情報利得というのはこれかなあと思うけど確信がもてない。
URLリンク(www.center.nitech.ac.jp)
なんもついてないΣってどうやって計算するの?

てことでもすこし詳しく書けば回答できるかも。

589:378
08/06/04 10:23:16
>>380>>381
回答ありがとうございました。
リンク先によると、要素数はTopポインタとBottomポインタの差をセルバイト幅で
割ると取得できるとありますが、用途について制限かけるときとは具体的にどのような
ときでしょうか。よろしくお願いします。

590:デフォルトの名無しさん
08/06/04 11:20:01
>>589
リスト構造では先頭と末尾のポインタの差を出してもどうにもならないよね。

用途は制限かけたいときに使えるとかじゃないの?

用途は深さを制限したいときに使えるとかじゃないの?

591:デフォルトの名無しさん
08/06/04 12:22:29
>>587

ありがとうございます!!!!!!!

592: ◆DuoCt8/SKk
08/06/04 15:54:16
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 6.0
 [3.3] 言語:C
[4] 期限:6/5
[5] その他の制限:ポインタ,構造体を使用して簡略化.
よろしくお願いします!!

593:デフォルトの名無しさん
08/06/04 16:06:56
切符の子か。
ちょっと変えりゃすむだろ、と思わんでもないけどね。
今回は<おもな道筋>がないようなので柔軟な仕組みにしたほうが
いいんだろうけど、>>132のスタイルはだめなんしょ?

594:デフォルトの名無しさん
08/06/04 16:08:55
と思ったら道筋あったー!
だめぽ。

595: ◆DuoCt8/SKk
08/06/04 16:41:06
>>593
できるだけ柔軟な仕組みの方がいいです.
>>132は少々複雑すぎてしまい・・・読んでも理解できないんです(泣)
再びよろしくお願いします!

596:536
08/06/04 16:42:09
Deleteの部分は教えてもらって分かりましたが
続きがどうしても分かりません
どなたかお願いできないでしょうか?

597:デフォルトの名無しさん
08/06/04 16:42:20
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク)
凸包の構成
URLリンク(www.ccad.sist.chukyo-u.ac.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:emacs
 [3.3] 言語:C
[4] 期限:6/14
[5] その他の制限:なし
やり方自体の指定はありません。参考URLの感じのものをCで作るそうです。よろしくお願いします。

598:デフォルトの名無しさん
08/06/04 16:44:52
>>595
道筋ベースでやるよりもコマンドベースでやるほうが柔軟なわけで
ミルク増やして氷無しにして、やっぱりミルク減らす、とかの時に
コマンドに応じた関数を呼び出して状態を保持しておくのが楽なんだ。

道筋ベースだとユーザがやりたいことをやりたいときに行えない
仕組みになるしょ。

599:デフォルトの名無しさん
08/06/04 16:48:44
複雑で分からない、と言う前にどこが分からないか言ってみるとかは?
前回のに手を加えた結果があるだろうからそれ載せてみると
どう成長したかも見えるだろうし。

ってそれはそれで相談スレの役割のような気もしだしたorz

600: ◆DuoCt8/SKk
08/06/04 16:50:10
>>598
とりあえず道筋はもらったプリントのまま書いたのですが,やはり
そこまでは求められていないということなのでしょうか?
僕も>>598さんのいう意見に賛成なので,是非コマンドベースでお願いします.


601:586
08/06/04 16:53:01
>>588

@が平均情報量を求めるプログラムをつくる
平均情報量=
-(c1/c1+c2)*{log2(c1/ c1+c2)} -(c2/c1+c2)*{log2(c2/ c1+c2)}


Aが情報利得を求めるプログラムをつくる
情報利得=
-(c1/c1+c2)*{log2(c1/ c1+c2)} -(c2/c1+c2)*{log2(c2/ c1+c2)}
+(c1/c1+c2)*(c1/c1+c2)*{log2(c1/ c1+c2)}
+(c2/c1+c2)* (c2/c1+c2)*{log2(c2/ c1+c2)}

おそらくこれを求めるプログラムをつくればいいと思います。
どうか@だけでも至急お願いしますm(_ _)m
わかりにくくてすいません。


602: ◆DuoCt8/SKk
08/06/04 16:54:59
>>599
具体的にはどのように表示すればいいのかが分からないということなのでしょうか・・・
先生も何か例を書いて下さればわかりやすいのに・・・とも思っています.
例を書かないということはそれぞれ工夫してプログラムを組むのを期待しているのでしょうか?
正直同級生も>>132のレベルにはまだ一部の人たちしか達していないと思われます.


603:デフォルトの名無しさん
08/06/04 17:13:30
>>601
ん?ってことなら、
#include <math.h>
double info(int c1, int c2)
{
double _c1 = c1;
double _c2 = c2;
return -(_c1/_c1+_c2)*log(_c1/_c1+_c2) - (_c2/_c1+_c2)*log(_c2/_c1+_c2);
}
でいいんでないの?

604:デフォルトの名無しさん
08/06/04 18:58:16
>>602
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえずお釣りの計算だけ


605:604
08/06/04 19:01:55
よく見たらつり銭切れのときにお金がどんどん減ってしまうな
元の値をコピーしておかないとだめだ

606:デフォルトの名無しさん
08/06/04 19:33:11
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
全部で3つなのですが
1. 以下のプログラムを作成
• 以下の数列を0〜20まで表示
• 数列は以下の通りとする
• a[0] = 0.01, a[1] = 0.1, a[2] = 1.0
• a[n+1] = a[n] + a[n-1] + a[n-2]
• プログラムを実行するとa[0]〜a[20]までの値が改
行区切りで表示されること
2. 以下のプログラムを作成
• キーボードから整数値を読み込み、入力された整数
値が素数であるか判定する
• 以下のとおり表示する
• 入力値が素数の場合”prime number”
• 入力値が素数以外の場合”not prime number”
3.以下のプログラムを作成
• 3x3マスのマルバツゲームのボードを作成
• ○側と×側が交互に2次元座標上の位置を入力
• 入力後、毎回ボードを表示する
• たて、よこ、斜めのいずれかに○か×が3つ並んだ
時点でプログラムを終了
• マスが埋まった場合もプログラムを終了
[3] 環境
 [3.1] OS: Windows
 [3.2] MINGW32
 [3.3] 言語:C
[4] 期限: 6月13日
[5] その他の制限: なし
回答のほど、よろしくお願いしますm(_ _)m


607:デフォルトの名無しさん
08/06/04 19:34:53
>>606が読みにくくてすみません
改行ができませんでした・・・

608:デフォルトの名無しさん
08/06/04 19:51:21
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):()
10マスx10マスの迷路のスタートからゴールまでの最短経路を出力するプログラムを作れ。

※1.迷路は10行のテキストファイルで提供され,Sがスタート,Gがゴール,*が壁,@が通路で記録されている。
※2.進み方は上下左右1コマずつとし,斜めには進めない。
※3.迷路はかならずしもゴールできるとは限らない。

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 6月18日
[5] その他の制限:
前の授業で再帰的な関数というのを習ったので、
それを使って解くのが求められている回答だと思います

よろしくお願いします

609:デフォルトの名無しさん
08/06/04 20:07:13
>>606
すみませんコンパイラは
gccでした

610:デフォルトの名無しさん
08/06/04 20:21:28
>>606
(1)
int print_20(){
int i;
double a[21]={0.01, 0.1, 1.0};
for(i=3; i<=20; i++){ a[i] = a[i-1] + a[i-2] + a[i-3]; }
for(i=0; i<=20; i++){ printf("%f\n",a[i]); }
return 0;
}

(2)
int prime_check(){
int i=2, n;
printf("prime check for no>>");
scanf("%d",&n);
while(i*i<n){
if(!(n%i)){break;}
i++;
}
printf("%s\n",(i*i>n)?"prime number":"not prime number");
return 0;
}

611:デフォルトの名無しさん
08/06/04 20:25:06
>>606
1.
#include<stdio.h>

int main(void){
double a[21]={0.01, 0.1, 1.0};
int n;

for(n=2;n<20;n++) a[n+1]=a[n]+a[n-1]+a[n-2];
for(n=0;n<=20;n++) printf("%f\n", a[n]);

return 0;
}

612:デフォルトの名無しさん
08/06/04 20:56:55
>>603
ありがとうございます!
C1、C2の入力値を入れるようにしたいのですが後これにどう付け加えればよいのでしょうか?

613:デフォルトの名無しさん
08/06/04 21:26:02
>>606
> 3x3マスのマルバツゲームのボードを作成

unsigned short intの16ビット中、下9ビットを連ありか否かの
判定に使えばいいと思うんだが、面倒なので誰か頼む。

614:デフォルトの名無しさん
08/06/04 22:11:16
[1]プログラミング
[2]問題文
要素数がnoであるint型の配列vcの並びを逆順にする関数
void rev_intary(int vc[],int no)をメイン文も含め作成せよ。
[3-1]windows
[3-2]gcc
[3-3]C言語
[4]明日の昼まで
お願いいたします。

615:デフォルトの名無しさん
08/06/04 22:11:49
デジモンみたいなドライブクリーナーがほしい。
データ食べて育つみたいな。リアルにデジタルモンスター育てたい(
基地外サーセン。。どうしても漏らしたかった・・・。

616:デフォルトの名無しさん
08/06/04 22:31:21
>>614
#include<stdio.h>
void rev_intary(int vc[], int no) {
int t, i;
for(i = 0; i < no-1-i; i++) {
t = vc[i];
vc[i] = vc[no-1-i];
vc[no-1-i] = t;
}
}
int main() {
int a[5] = {1,2,3,4,5}, i;
rev_intary(a, 5);
for(i = 0; i < 5; i ++)
printf("%d\n", a[i]);
return 0;
}

617:デフォルトの名無しさん
08/06/04 22:32:49
>>614
>>550 >>552
この辺でどうにかならんかね。

618:デフォルトの名無しさん
08/06/04 23:04:08
>>610氏、>>611氏、>>613
返答ありがとうございます
おかげさまで助かります

619:デフォルトの名無しさん
08/06/04 23:14:30
>>618
○×は素直に3*3の配列つかいな

620:デフォルトの名無しさん
08/06/04 23:18:31
>>619
わかりました
ちょっと探しに行ってきます

621:デフォルトの名無しさん
08/06/04 23:19:26
すみませんsageを
入れ忘れていました(汗

622:デフォルトの名無しさん
08/06/04 23:25:58
>>606の3
前々スレで作ったやつ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

623:デフォルトの名無しさん
08/06/04 23:28:49
おお!!
>>622氏、ありがとうございます
ほかを巡回しながらもこまめに
ここをチェックしていたのですが
大変助かります

624:デフォルトの名無しさん
08/06/05 00:25:24
>>564をお願いします…

625:デフォルトの名無しさん
08/06/05 00:31:43
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):
m ×m 行列を入力し和と積を求め、結果を行列の形で表示させる
プログラムの作成。但し、入力した行列も表示。

<表示例>
1 2
3 4
[3] 環境
 [3.1] OS:WinXP/linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等):VC++/gcc
 [3.3] 言語:C言語
[4] 期限:2008/06/06
[5] その他の制限: stdio.h、入力はscanf関数、出力はprintf関数、配列で

プログラムの冒頭ですが、これで配列可変になるんでしょうか…?
int m,i,j;/*要素、カウント用変数宣言*/
printf("行列数を入力");
scanf("%d",&m);
int a[m]=0;
int b[m]=0;

[m]=0を[%d]=0,mにしたほうが良いのでしょうか………

626:デフォルトの名無しさん
08/06/05 00:45:56
>>564
@ 0, b2, b1, (b0|c4), c3, c2, c1, c0 という8ビットをcに格納している。
ここでb2とは、変数bのビット2という意味で表記している。
b0|c4とは、b0とc4の論理和という意味で表記している。

というかこの問題、b=(b&0x07)<<5; が正しいのではないか?
そうすると、 b2, b1, b0, c4, c3, c2, c1, c0 という8ビットをcに格納することになり、キレイ。

A
b &= ~(1<<2); /*ビット2(最下位から3番目)をクリア*/
b &= ~(1<<5); /*ビット5(最下位から6番目)をクリア*/

~を使いたくなければ、
b &= 0xfffb;
b &= 0xffdf;

627:デフォルトの名無しさん
08/06/05 00:46:32
>>624
1. ここにいる人なら大抵@はわかります。
  が、残念スレ違いです。

2. 本当に問題文そのままですか?

628:626
08/06/05 00:51:30
すまん間違えた。
@は c7, b2, b1, b0, c3, c2, c1, c0 だ。

629:デフォルトの名無しさん
08/06/05 01:06:18
>>625
お前は何を言ってるんだ?

630:デフォルトの名無しさん
08/06/05 01:06:27
b = (b & 0xFFDB) & b;

631:デフォルトの名無しさん
08/06/05 01:07:33
>>625
残念ながらそのような手法では配列を動的には確保出来ませんよ

632:デフォルトの名無しさん
08/06/05 01:18:43
.;;;;彡彡ミミ;;;
          .;;;;彡彡ミミ;;;
          ;;;;彡彡ミミミ;;;
          ;;;;彡彡ミミミ;;;
          ;;;;;;彡彡ミミミ;;;;;
         ;;;;彡ミ彡ミミミミ;;;
        ;;;彡ミ彡;;人;;;ミ彡ミ;;;
        ;;;彡ミ彡ノ ヽ;ミ彡ミ;;;
        ;;;彡ミ;;;;ノ.人 ヽ;彡ミ;;;
        ;;;彡ミ;;;ノ | ..| ;ヽ彡ミ;;;
        ;;;彡ミ;;ノ .| | ヽ彡ミ;;;
        ;;;彡ミ;ヽ |.・.| /彡ミ;;;
        ;;;彡ミ;;ヽ|  .| /;;彡ミ;;;
        .;;;;;;;ミ;;;ヽ|( )|./ミ彡;;;;
         ..;;;彡;;;;ヽ| .|/;;;ミ;;;
          ..;;;;.彡;|.|;;ミ;;;;;....
          ;;;;;彡;彡|;;ミミミ;;;;
         ;;彡彡彡*ミミミミ;; マンコ
          ;;;;彡彡ミミミ;;;
           ;;彡彡ミミミ;;;


633:デフォルトの名無しさん
08/06/05 01:47:07
[1] 授業単元: C言語演習V
[2] 問題文(含コード&リンク):
九九の表を1次元配列と配列を引数とする関数を用いて作成せよ。

・作成要項
main関数内で用いる配列は演算結果を格納するab[81]と九九の各段を一時的に格納する
a[9]のみとし(呼び出す関数側ではどのような配列を宣言してもよい)、関数に格納用
配列と段数を渡してひとつの段ごとに計算させる。
ひとつの段の計算結果が関数から戻されるごとに返ってきた値を配列abに格納しなおし
全部の段の計算が終わったあとで一括して表示させること(グローバル変数は使わないこと)
(プログラム例)
URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限:本日 6/5 PM1時までにお願いします。
[5] その他の制限:グローバル変数の使用は不可、配列の使用が前提です。
今日は徹夜で宿題をやっているので、オールナイトで待っています。よろしくお願いします。

634:デフォルトの名無しさん
08/06/05 02:00:39
>>625
宿題レベルなら固定で
int a[8][8];
ってしときー

635:デフォルトの名無しさん
08/06/05 02:03:20
>>634
兄さんそれ99やない

636:デフォルトの名無しさん
08/06/05 02:06:35
>>633
#include<stdio.h>

void kuku(int [], int );

int main(void)
{
int i,j;
int a[9],ab[81];
for(i=0;i<9;i++){
kuku(a,i);
for(j=0;j<9;j++){
ab[i*9+j] = a[j];
}
}

for(i=0;i<9;i++){
for(j=0;j<9;j++){
printf(" %2d", ab[i*9+j]);
}
printf("\n");
}

return 0;
}
void kuku(int a[], int rank)
{
int i;
for(i=0;i<9;i++){
a[i] = (rank+1) * (i+1);
}
}


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

5226日前に更新/305 KB
担当:undef