トップページ⇒tech
1001コメント433KB

C/C++の宿題を片付けます 75代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/19(木) 20:39:01
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
C/C++の宿題を片付けます 74代目
http://pc8.2ch.net/test/read.cgi/tech/1158844912/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0446デフォルトの名無しさん2006/10/28(土) 19:58:14
>>444
まずは main 関数内の head_a, head_b, head_t の領域を確保しましょう。
0447デフォルトの名無しさん2006/10/28(土) 20:06:54
>>444
at main ():
struct digitへのポインタだけ作って、実体が宣言されてないんだが。
head_a->next = head_a->prev = head_a;
でコケるぞ。

で、ロジックも何がしたいのか良く分からん。
head_aが二つ前の要素、head_bが一つ前の要素、head_tが現在の要素のように
見えるんだが、add()では全然そのような計算をしていない。
0448デフォルトの名無しさん2006/10/28(土) 20:14:52
>>444
どう途中まで問題ないんだよw
main始まってすぐ落ちてるじゃねーか
0449デフォルトの名無しさん2006/10/28(土) 20:21:55
#include <stdio.h>

int main (void) {
  int sum;  // 総和
  int input;  // 入力した数値

  sum = 0;

  printf ("入力された数の総和を表示します。\n");
  printf ("入力を終了するときは、-1を入力してください。\n");
  while (1) {  // ずっと繰り返す
    scanf ("%d", &input);  // inputに値を入力
    if (input == -1) break;  // inputが-1のときループを抜ける
    sum += input;  // 総和にinputを足す
  }

  printf ("総和は %d です。\n", sum);
  return 0;
}
0450デフォルトの名無しさん2006/10/28(土) 20:22:37
すいません、>>449は>>445宛てです。
04514442006/10/28(土) 20:30:58
>>446
ありがとうございます!
最初で落ちなくなりました。
きっちり確保してあげなきゃいけないんですね…。

>>447
head_aが現在の要素、head_bが一つ前の要素、
head_tは退避用の一時リストのつもりです。
わかりにくいソースでごめんなさい。

解答ありがとうございました、助かりました。多謝です。
0452デフォルトの名無しさん2006/10/28(土) 20:35:47
すいません。
449のはC言語じゃないんですか?
C++じゃないと怒られます。
0453デフォルトの名無しさん2006/10/28(土) 20:54:34
>>452
思いっきり勘違いしてました。ごめんなさい。C++だとこうなります。

---

#include <iostream>

using namespace std;

int main (void) {
 int sum;         // 総和
 int input;        // 入力した数値
 
 sum = 0;
 
 cout << "入力された数の総和を表示します。" << endl;
 cout << "入力を終了するときは、-1を入力してください。" << endl;

 cin >> input;       //最初の数値を入力する
 while (input != -1) {  // inputが-1でない間繰り返す
  sum += input;     // 総和にinputを足す
  cin >> input;     // 次の数字を入力する
 }
 
 cout << "総和は " << sum << " です。" << endl;
 return 0;
}
0454デフォルトの名無しさん2006/10/28(土) 21:15:35
>>451
多倍長整数の演算部分とフィボナッチ部分を分けた方が見やすいと思う
0455デフォルトの名無しさん2006/10/28(土) 21:33:17
453 ホントありがとうございます。
どこのどなたかもわかりませんがホントにありがとうございます。
これからは、なるべく自力で出来るようにがんばります。
0456デフォルトの名無しさん ◆HOZlQYR1MY 2006/10/28(土) 21:58:33
[1] 授業単元:情報技術�U
[2] 問題文(含コード&リンク):初期値 N を0とし、N←2*N+3で更新されるNを10回順に出力するプログラムをwhile文を利用して作成せよ。(漸化式N(i+1)=2*N(i)+3、初期値N(0)=0で表される数列のN(0)〜N(9)の値を順に出力するプログラムです。)作成したプログラムを提出せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2006/11/8

まだ1年なのでよく分からないのでよろしくお願いします。
0457デフォルトの名無しさん2006/10/28(土) 22:05:26
文系か・・・
こんな授業とるなよw
0458デフォルトの名無しさん2006/10/28(土) 22:06:35
int n = 0;
int i = 0;
while(i < 10) {
/* printf で好きなように出力 */
n = 2*n+3;
}

2年になったらもっとわからなくなるんでない?
0459デフォルトの名無しさん2006/10/28(土) 22:28:25
C++言語で
繰り返し計算をしててその結果を随時for文の中に
coutを入れて発散してないか(計算がおかしくないか)
見ているのですが、今一回一回改行する設定にしてて
DOS画面にバーッと下のほうに出てくるような感じになっているのですが、
これをDOS画面の一番最初の数字のところだけどんどん更新させる事はできないのでしょうか?
ご存知の方がおられましたら教えてください。よろしくお願いします。
0460デフォルトの名無しさん2006/10/28(土) 22:30:46
>>459
\r
0461デフォルトの名無しさん2006/10/28(土) 22:38:23
>>460
すみません・・・やっても使い方がわからず
ググっても"/r C++言語"などと調べても
中の人からいい検索結果が返ってきません。
申し訳ないんですがやりかたを書いていただけないでしょうか?
0462デフォルトの名無しさん2006/10/28(土) 22:40:54
>>460
と思ったらできました!!"¥"という字が文字化け?してたのか
/の左右逆さまの文字になっていて分かりませんでした。
改行と同じように使えばいいのですね!わかりました。ありがとうございました!
0463デフォルトの名無しさん2006/10/28(土) 23:04:16
>>444の方と恐らく同じ授業です。
ここに書いてあるアドバイスを参考に作ってみたのですがよくわかりません。
>>444の方のプログラムを具体的にどう直せばいいでしょうか・・・
プログラム初心者なのにこんな授業取ってしまって非常に困ってます
出来れば回答宜しくお願いします・・・
0464デフォルトの名無しさん2006/10/28(土) 23:05:58
日本では、半角バックスラッシュ(半角\)と半角円記号(半角¥)は事実上同一だと思え。
そして半角スラッシュ( / )は別物。
0465デフォルトの名無しさん2006/10/28(土) 23:15:01
>>463
さすがに同じ授業とってる奴のとほとんど同じなのはまずいだろ
0466デフォルトの名無しさん2006/10/28(土) 23:16:55
>>465
一応変えられる所は出来る限り変えますので・・・
0467デフォルトの名無しさん2006/10/28(土) 23:28:00
そんなんはできるんかいなww
0468初心者2006/10/28(土) 23:38:32
どちら様教えて、VC++プログラミングするときにひとつのボタン押して
他の.exeファイル実行できるようにどうすればいいですか??
0469デフォルトの名無しさん2006/10/28(土) 23:41:16
>>468
スレ違い
あと日本語でおk
0470デフォルトの名無しさん2006/10/28(土) 23:52:09
>>468
マルチは氏ね
0471カッパ2006/10/29(日) 09:45:51
charはカタカナでなんと読みますか?
0472デフォルトの名無しさん2006/10/29(日) 09:46:36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
2と17と5の倍数を入力した時のみ
終了するプログラムを作りなさい。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] borland
 [3.3] C言語
[4] 期限: 10月30日の12時まで
[5] その他の制限: 特に無し。

よろしくお願いします。
0473デフォルトの名無しさん2006/10/29(日) 09:55:16
>>472

#include <stdio.h>

int main (void) {
  int input;

  /* ずっと繰り返す */
  while (1) {
    printf ("数値を入力してください。\n");
    scanf ("%d", &input);
    /* nの倍数 <=> nで割った余りが0 */
    if (input % 2 == 0) break;
    if (input % 5 == 0) break;
    if (input % 17 == 0) break;
  }

  return 0;
}
0474デフォルトの名無しさん2006/10/29(日) 10:46:42
>>473
そんないいげんなソースよく公開できるな
匿名ならではw
0475デフォルトの名無しさん2006/10/29(日) 11:04:53
>>474
そんないいかげんな日本語(ry
0476デフォルトの名無しさん2006/10/29(日) 11:09:57
>>474
具体的箇所を示さずオナニーできるのが匿名ならでわなのだw
0477デフォルトの名無しさん2006/10/29(日) 11:22:10
>>476
全くエラー処理してねーじゃん
0478デフォルトの名無しさん2006/10/29(日) 11:23:44
エラー処理ww
0479デフォルトの名無しさん2006/10/29(日) 11:25:21
>>477
具体的箇所(ry
0480デフォルトの名無しさん2006/10/29(日) 11:30:29
>>471
チャーなりキャラクターなり好きに呼べ
0481デフォルトの名無しさん2006/10/29(日) 11:31:32
[1]授業単元:情報処理
[2]問題文:以下のプログラムを参考に、UNIXのgrepコマンド同様に1つ目の引数に示された文字列を持つ行を、2つ目の引数で示されたファイル内から抜き出して表示するプログラムを作ってください。
strlenght関数とstrinclude関数に関しては宣言だけで結構です。
int strinclude(char str1[], char str2[]){
int i, j;
int len1, len2;
len1 = strlength(str1);
len2 = strlength(str2);
if(len1 < len2)
return 0;
for(i = 0; i <= (len1 - len2); i++){

for(j = 0; j < len2; j++){
if(str1[i+j] != str2[j]){
break;
}
}
if(j == len2){
return 1;
}
}
return 0;
}
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] gcc
 [3.3] C言語
[4] 期限:本日中
よろしくお願いします。
0482デフォルトの名無しさん2006/10/29(日) 11:38:42
なんだろう・・・標準関数使ったら殺される勢いなのかな・・・?
0483デフォルトの名無しさん2006/10/29(日) 11:58:25
>>482
よし、じゃああえて標準関数で
>>481

/* 宣言だけで結構らしいので宣言だけする */
int strlenght(char[]);
int strinclude(char[],char[]);

#include<stdio.h>
#include<string.h>
int main(int argc,char**argv){
    char*pattern;
    char buf[1024];
    int lineno;
    if(argc <= 1)return 0;
    pattern = argv[1];
    if(argc > 2)freopen(argv[2],"r",stdin);
    for(lineno=1;fgets(buf,sizeof buf,stdin);++lineno)
        strstr(buf,pattern) && printf("%3d: %s",lineno,buf);
}
0484デフォルトの名無しさん2006/10/29(日) 12:58:42
>>472を教えて下さい。
0485デフォルトの名無しさん2006/10/29(日) 13:01:25
>>484
>>473で問題ないよ
0486デフォルトの名無しさん2006/10/29(日) 15:02:30
>>472あれじゃ意味違ってくるだろ
0487デフォルトの名無しさん2006/10/29(日) 15:10:20
そもそも問題文が曖昧。
0488デフォルトの名無しさん2006/10/29(日) 15:35:04
公倍数なら&&つけりゃええやん
0489デフォルトの名無しさん2006/10/29(日) 18:12:49
#include <stdio.h>
main()
{
int *x;
*x=1;

printf("x=%o *x=%d\n",x,*x);
}


これを実行しろって問題なんだけど、コンパイルできませんでした。
なぜコンパイルできないのですか?
テンプレ無視ってスマソ
0490デフォルトの名無しさん2006/10/29(日) 18:15:41
>>489
return 0?
0491デフォルトの名無しさん2006/10/29(日) 18:17:39
>>489

こんなカンジかな。

#include <stdio.h>
int main(void)
{
int *x;
x=malloc(sizeof(int));
*x=1;

printf("x=%o *x=%d\n",x,*x);
free(x);
return 0;
}
0492デフォルトの名無しさん2006/10/29(日) 18:21:46
>>489
xがどこにも指定されてない。
#include<stdio.h>
int main()
{
int a=1;
int *x;
*x=a;
x=&a;
printf("x=%o *x=%d\n",x,*x);
return 0;
}
0493デフォルトの名無しさん2006/10/29(日) 18:47:45
>>489
俺の環境(gcc-4.1.1)ではコンパイルできた。
0494saga2006/10/29(日) 19:21:26
*x=a;
x=&a;

順番逆じゃない佐賀?
04954892006/10/29(日) 19:37:31
>>493
どうなったんですか?
0496デフォルトの名無しさん2006/10/29(日) 19:39:58
>>495
セグメンテーション違反です (core dumped)
04974892006/10/29(日) 19:40:49
>>496
それってどういう意味なんですか?
0498デフォルトの名無しさん2006/10/29(日) 19:42:19
>>497
プログラムが不正なメモリ操作をしたので強制終了、くらいの意味。
0499デフォルトの名無しさん2006/10/29(日) 19:48:24
>>494
*x=a;自体いらないんだぜ
0500デフォルトの名無しさん2006/10/29(日) 19:55:34
>>489
コンパイルエラーは?
まともなC89コンパイラなら通すはずだと思うんだが。
05014922006/10/29(日) 19:56:47
>>499 こんな感じ?
#include<stdio.h>
int main()
{
int a=1;
int *x;
x=&a;
printf("x=%o *x=%d",x,*x);
return 0;
}
0502デフォルトの名無しさん2006/10/29(日) 21:06:35
CのプログラムをC++に書き直してもらえませんか??
0503デフォルトの名無しさん2006/10/29(日) 21:08:44
CのプログラムをC++に書き換えてもらえませんか??
0504デフォルトの名無しさん2006/10/29(日) 21:41:41
>>503
普通は書き換える必要はありません。
0505デフォルトの名無しさん2006/10/29(日) 21:41:50
[1] 授業単元:コンピューター実習1
[2]   発生させた乱数の値に関して度数分布を求める関数を作る
関数 frequency( データ配列、データ配列の要素数、値の範囲、結果の配列、結果の配列の要素数)
とする。例えば、値の範囲が0〜100で、結果配列の要素数が20であれば、5刻みの区間で
その区間にある値をカウントする。つまり(0〜5、6〜10、11〜15.。。。。  96〜100)
のそれぞれの区間にあるデータの個数を結果として返す。
関数frequency内は、できるだけポインタを使ってきじゅつすること。以下雛形↓
#include <stdio.h>
int main( void )
{ int n;
int x[1024], f[20];
generate_dist( x , 1024, 100);
for(n=0; n<1024; n++) printf("%5d",x[n]);
frequency( x , 1024 , 100, f , 20);
puts("");
for(n=0; n<20; n++) printf("%5d",f[n]);   }
int frequency( int x[], int numx, int r, int f[], int numy)
{

}
int generate_dist( int x[], int num, int r)
{ int *p;
for (p=x; p != &x[num] ; p++ ) {
*p = rand() % (r+1);
*p += rand() % (r+1);
*p += rand() % (r+1);
*p /= 3;      }   }
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 10月31日
[5] その他の制限:特になし
0506デフォルトの名無しさん2006/10/29(日) 22:26:17
>>505
#include <stdio.h>
#include <stdlib.h>

void frequency( int x[], int numx, int r, int f[], int numy);
void generate_dist( int x[], int num, int r);

int main( void )
{
int n;
int x[1024], f[20];
generate_dist( x , 1024, 100);
for(n=0; n<1024; n++) printf("%5d\n",x[n]);
frequency( x , 1024 , 100, f , 20);
puts("");
for(n=0; n<20; n++) printf("%d: %5d\n",n, f[n]);

return 0;
}
0507デフォルトの名無しさん2006/10/29(日) 22:26:54
つづき
void frequency( int x[], int numx, int r, int f[], int numy)
{
int i;
double tick = (double)r/numy;
for (i = 0; i < numy; i++) f[i] = 0;
for (i = 0; i < numx; i++) {
int n;
n = x[i]/tick;
f[n]++;
}
}

void generate_dist( int x[], int num, int r)
{
int *p;
for (p=x; p != &x[num] ; p++ ) {
*p = rand() % (r+1);
*p += rand() % (r+1);
*p += rand() % (r+1);
*p /= 3;
}
}
0508デフォルトの名無しさん2006/10/30(月) 01:07:34
[1] プログラミング
[2]
# 2つの自然数 a, b に対し, a と b の最大公約数を求める関数 int gcd(int a, int b) を作成せよ.
# 2つの自然数 a, b に対し, その公約数をすべて表示する関数 void print_cd(int , int) を作成せよ.

※ 「a と b の公約数」は「a と b の最大公約数の約数」なので, gcd(a,b) を呼び出して 2 数の最大公約数 g を求めてその全約数を表示すればよい. i = 2, 3, …, g について i が g を割り切るかどうかテストし, 割り切ればそれを表示するようにする.

# main から gcd と print_cd を呼び出し, キーボードから入力した自然数 a, b に対して, 最大公約数とすべての公約数とを表示するようにせよ (表示形式は任意).
[3]
 [3.1] winXP sp2
 [3.2] cygwin
 [3.3] C
[4] 23時59分
[5] 途中までやったんで続きお願いします。最大公約数は出せました

05095082006/10/30(月) 01:08:49
#include<stdio.h>
void gcdprint(int,int);
int gcd(int,int);
int main (void)
{
int a,b;
printf("a bを入力して下さい>>");
scanf("%d %d",&a,&b);
gcdprint(a,b);
return 0;
}
void gcdprint(int a,int b)/*最大公約数を印字する関数*/
{
printf("%d\tgcd\t%d\t=\t%d\n",a,b,gcd(a,b));
}
int gcd(int a,int b)/*最大公約数を計算する関数*/
{
int z;
while((z=a%b)!=0)/*aをbで割った余りをzに代入し*/
{/*zが0以外のあいだにループする*/
a=b;/*aにbを代入し*/
b=z;/*bに余りzを代入する*/
}
return b;/*bに余りzを代入する*/
}
これに埋めて下さい。よろしくお願いします
0510デフォルトの名無しさん2006/10/30(月) 01:58:44
再帰つかえよ
0511デフォルトの名無しさん2006/10/30(月) 02:55:02
void gcdprint(int a,int b)/*最大公約数を印字する関数*/
{
int g, i;
g = gcd(a, b)
printf("%d\tgcd\t%d\t=\t%d\n",a,b,g);
for (i = 1; i < g; i++)
{
if (g & i == 0)
{
printf("%d\n", i);
}
}
}
0512デフォルトの名無しさん2006/10/30(月) 03:01:29
>>508 低速版
void print_cd(int a, int b){
int c, i;

c=gcd(a, b);
for(i=1;i<=c;i++){
if(c%i==0)
printf("%d\n", i);
}
}
0513デフォルトの名無しさん2006/10/30(月) 03:02:47
>>508 高速版
void print_cd_recursive_call(int a, int b){
int c, i, j, k;
if(a==1){
printf("%d\n", b);
return;
}
for(i=2;a/i>=i;i++){
if(a%i==0){
c=a;
for(j=0;c%i==0;j++)
c/=i;
break;
}
}
if(a/i<i){
i=a;
j=1;
c=1;
}
for(k=0;k<=j;k++){
print_cd_recursive_call(c, b);
b*=i;
}
}

void print_cd(int a, int b){
int c;
c=gcd(a, b);
print_cd_recursive_call(c, 1);
}
0514デフォルトの名無しさん2006/10/30(月) 12:33:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
1.入力した文章の半角スペースを改行に変換して表示せよ。
2.1の改行を削除し,文字を詰めて表示せよ

ex.
Hello World
ans1.
Hello
World
ans2.
HelloWorld

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: Borland C
 [3.3] 言語: C
[4] 期限: 10月30日まで

ご教授宜しくお願い致します。
0515デフォルトの名無しさん2006/10/30(月) 12:48:54
>>514
#include<stdio.h>
int main(void){
char c;
while(EOF != (c = fgetc(stdin))){
if(c == ' ') c = '\n';
if(c != '\n'){
printf("%c",c);
}
}
return 0;
}
0516デフォルトの名無しさん2006/10/30(月) 12:49:56
>>515
それだと「変換して」ないのでは?
05175152006/10/30(月) 12:49:58
訂正。
× char c;
○ int c;
0518デフォルトの名無しさん2006/10/30(月) 12:50:07
>>514
/* 問1 */
#include<stdio.h>

#define BUF_SIZE 1024

int main(void)
{
char buf[BUF_SIZE];
int i;

gets(buf);
for(i=0;buf[i]!='\0';i++)
{
if(buf[i]!=' ')
putchar(buf[i]);
else
putchar('\n');
}

return 0;
}
0519デフォルトの名無しさん2006/10/30(月) 12:50:40
>>514
/* 問2 */
#include<stdio.h>

#define BUF_SIZE 1024

int main(void)
{
char buf[BUF_SIZE];
int i;

gets(buf);
for(i=0;buf[i]!='\0';i++)
{
if(buf[i]!=' ')
putchar(buf[i]);
}

return 0;
}
0520デフォルトの名無しさん2006/10/30(月) 15:00:57
[1] 授業単元:プログラミング
[2] 以下の文法を(Lexical analyze)字句解析するプログラムを作成せよ。

program --> declaration_list statement_list
declaration_list --> empty_string | declaration ; declaration_list
declaration --> VAR variable
variable --> a|b|c
statement_list --> statement | statement_list ; statement
statement --> variable := expression | PRINT variable
expression --> term | expression + term | expression - term
term --> integer | variable
integer --> digit | integer digit
digit --> 0 | 1

[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 明後日まで

よろしくお願い致します。
0521デフォルトの名無しさん2006/10/30(月) 18:12:07
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
(1)画面に繰り返し数を入力させるメッセージを表示し、キーボードから入力させる。
(2)画面に2つの整数を入力させるメッセージを表示し、キーボードから入力させる。
(3)画面に計算方法を2つ提示し、その中から1つを選択させる。
   計算方法は四則演算、剰余、ビット演算のいずれか。
(4)選択された計算方法で、計算を行う。計算は関数を用いて行うこと。
   関数には引数と戻り値があること。
(5)計算結果を画面に出力する。
(6)(2)に戻り、繰り返し数ぶん処理を繰り返す。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cigwin
 [3.3] 言語: C
[4] 期限: 11月10日
[5]if文、for文、関数まで習いました。

よろしくお願いします。

0522デフォルトの名無しさん2006/10/30(月) 18:40:00
>>521
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2843.c
0523デフォルトの名無しさん2006/10/30(月) 18:41:58
def_func(add,+)
def_func(sub,-)
def_func(mul,*)
def_func2(div,/)
def_func2(jouyo,%)
def_func(bit_and,&)
def_func(bit_or,|)
def_func(bit_xor,^)
↓
int add(int a, int b){return a + b;}
int sub(int a, int b){return a - b;}
int mul(int a, int b){return a * b;}
int div(int a, int b){if(b==0)return 0;return a / b;}
int jouyo(int a, int b){if(b==0)return 0;return a % b;}
int bit_and(int a, int b){return a & b;}
int bit_or(int a, int b){return a | b;}
int bit_xor(int a, int b){return a ^ b;}
0524デフォルトの名無しさん2006/10/30(月) 18:50:49
>>522 ありがとうございました。
0525デフォルトの名無しさん2006/10/30(月) 19:30:41
>>516
「置換」でなく「変換」しろとおっしゃいますか(;´Д`)
0526デフォルトの名無しさん2006/10/30(月) 20:08:56
[1] 授業単元:情報処理(テーマ:配列)
[2] 問題文:
問題1@キーボードから姓と名を(別々に)入力して、文字列として結合して入力せよ。
     (strcat()を使う?)

問題2@まず4桁の整数を入力する(要素数4の配列にそれぞれの桁を格納)
     次に'\l'か十分な数だけ'\n'を出力(画面をスクロールアウトさせてクリアするため)
     今度は別の人が4桁の整数を入力、入力に応じて、それぞれの桁の数字について
      「位置も数字も当たっていればHを1つ」
      「その数字は入っているけど位置が違うときはBを1つ出力」
     当たるまで整数の入力を繰り返す。ただし何回かで終了してもよい。
     当たったら、それまでの回数を表示。

問題3@4桁の数字を入力⇒1234(1234を入力)
      ここで画面をスクロールアウト
      他の人が4桁の数字を入力する
      1回目:1352 ⇒ 1は場所を含めて正解、2と3は場所が違う。よって「H1B2」と出力
      2回目:1235 ⇒ 1と2と3は場所を含めて正解。よって「H3B0」と出力
      このようにH4B0になるまで繰り返させる(5回目で正解を表示して終了させる)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 無期限
05275082006/10/30(月) 22:08:11
>>512-513
ありがとうございます。
05285082006/10/30(月) 22:11:35
>>511もでした。ありがとうです
0529デフォルトの名無しさん2006/10/30(月) 22:31:58
10分法のアルゴリズムにより、x^3-10=0の非線形方程式の解を求めるプログラムを作成せよ。
なお、許容誤差をε=10^-7とし、区間幅がεを下回ったところで計算を打ち切ること。
(for文とwhile文を使用すること)
0530デフォルトの名無しさん2006/10/30(月) 22:45:24
>>526
画面をスクロールアウトさせるのに必要な改行の数を書け。

>>529
>>1読め。
05315262006/10/30(月) 22:55:37
>>530
改行の数に指定はないんで3個でお願いします
05325292006/10/30(月) 23:13:09
[1] 授業単元:非線形方程式の解法

[2] 問題文(含コード&リンク):10分法のアルゴリズムにより、x^3-10=0の非線形方程式の解を求めるプログラムを作成せよ。
                  なお、許容誤差をε=10^-7とし、区間幅がεを下回ったところで計算を打ち切ること。

[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:borland 5.5
 [3.3] 言語: C

[4] 期限: [無期限]

[5] その他の制限:for文とwhile文を使用すること
0533デフォルトの名無しさん2006/10/30(月) 23:25:16
>>532

#include<stdio.h>

int main(void)
{
    const double eps = 10e-7;
    double cube = 10.0;
    double ans = 0.0;
    double level = 1.0;
    int i;
    
    while(level>=eps){
        for(i=1; i<=10; i++){
            double temp = ans+i*level;
            if(temp*temp*temp>cube){
                ans += (i-1)*level;
                level *= 0.1;
                break;
            }
        }
    }
    printf("x = %f\n",ans);
    
    return 0;    
}
0534デフォルトの名無しさん2006/10/30(月) 23:58:23
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):
�@→http://proxy.f3.ymdb.yahoofs.jp/bc/7ac5f273/bc/Lesson3-1.doc?bc6hhRFB7BACroo3
�A→http://proxy.f3.ymdb.yahoofs.jp/bc/7ac5f273/bc/Lesson3-2.doc?bc6hhRFBRi2HG_cD
[3] 環境
 [3.1] OS:Windows(XP)Home SP2
 [3.2] コンパイラ名とバージョン:Visual Stdio.NET2005(C++)
 [3.3] 言語:C言語
[4] 期限: [2006年11月1日のAM8:30まで]

[5] その他の制限:無し。�A>�@で優先。
0535デフォルトの名無しさん2006/10/31(火) 00:05:16
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
「座席予約システム」を二種類のADTを用いて作成する。「座席予約システム」は(ある車両)の10人分の座席の予約を行うプログラムである。
次の七種類の命令を受け付ける。
a:予約を追加する
l:現在の予約状況を表示する
d:指定した座席番号の予約を取り消す
s:指定した予約社名の座席番号を表示する
e:指定した予約者名の予約を取り消す
h:ヘルプを表示する
q:終了する

一つ目のADTはseat_tで、個々の座席をあらわす。
typedef struct{
int occup;
char name[100];
}seat_t
seat_tに対して次の四つの操作を準備する。
1:void makeSeatEmpty(seat_t *sp)
spがさす座席を空席にする。座席がもともと空席の場合は何もしない
2:void makeSeatOccup(seat_t *sp, const char *nm)
spがさす座席をnmの名前で予約する。座席にすでに予約が入っている場合は、それまでの予約者名は消され、新しい予約者名nmを登録する
3:int isSeatEmpty(seat_t st)
座席stが空席かどうかを問い合わせる。空席なら1、予約済みなら0を返す。
4:const char *getSeatName(const seat_t *sp)
spが刺す座席の予約者名を返す

0536535の続き2006/10/31(火) 00:07:08
もう一つのADTは車両全体を現す。
typedef struct{
int numres;
seat_t seat[10];
}
car_tに対する操作は次の四つ
1:void makeCarEmpty(car_t *cp)
cpでさす車両全体を空席にする
2:void dispCarStatus(car_t cr)
車両crの予約状況を表示する
3:int appendRsv(car_t *cp, const char *nm)
cpでさす車両に名前nmで予約を追加し、予約した座席番号を返す
4:void cancelRsv(car_t *cp, int sn)
cpでさす車両のsn番の座席の予約を取り消す
5:int searchRsv(car_t cr, const char *nm)
車両cr、予約者名nmの座席番号を返す。ただし見つからない場合は-1を返す。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: kterm
 [3.3] 言語:C
[4] 期限: 2006年11月1日正午
0537デフォルトの名無しさん2006/10/31(火) 00:20:39
>>535
ADTって何だよ?
0538デフォルトの名無しさん2006/10/31(火) 00:32:53
>>537
階層的ADTってやつみたいです
0539デフォルトの名無しさん2006/10/31(火) 00:37:49
(aggregate|abstract|algebraic) data type
か?
0540デフォルトの名無しさん2006/10/31(火) 00:39:34
連レスすみません。
たぶん、ADTは構造体のことだと思います。
0541デフォルトの名無しさん2006/10/31(火) 01:18:36
>>331
理科大だな
0542デフォルトの名無しさん2006/10/31(火) 10:58:21
[1] 授業単元:情報制御
[2] 問題文:
問題 マウスの左ボタン右ボタンを押したときの左右それぞれの反応時間を
   保存するプログラム

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] C++ 6.0
[4] 期限: 11月4日
 
  よろしくお願いします
0543デフォルトの名無しさん2006/10/31(火) 12:19:41
>>542
C++ 6.0?
0544デフォルトの名無しさん2006/10/31(火) 12:31:54
>>535
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2855.c
05455442006/10/31(火) 13:11:39
>>535 入力部分追加
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2856.c
■ このスレッドは過去ログ倉庫に格納されています