C/C++の宿題を片付けます 96代目 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
07/09/21 08:46:37 BE:340816166-2BP(12)
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
【C 関数検索 man on WWW】 URLリンク(www.linux.or.jp)
【過去ログ検索】        URLリンク(chomework.sakura.ne.jp)
【wiki】               URLリンク(www23.atwiki.jp)

【前スレ】
C/C++の宿題を片付けます 95代目
スレリンク(tech板)

2:デフォルトの名無しさん
07/09/21 09:06:17
>>1 乙

3: ◆YpQ/fINFLk
07/09/21 17:43:40
[1] 授業単元: 応用演習3
[2] 問題文(含コード&リンク):
エラトステネスの篩の公式を用い、自然数nまでの素数を全て表示するさいに、1〜nまでに求めた素数を格納しておき、それを用いて素数か否かを判別せよ。
(20を素数か判別するときは、それまでに格納した2,3,5,7,11,13,17,19の√20以下の2,3で割る)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 9月25日まで
[5] その他の制限:素数に対する、習っていない特殊なincludeや関数は仕様しない

口頭で出された課題なので、問題文等分かりにくかったらすいません。

4:デフォルトの名無しさん
07/09/21 18:10:51
なんか読点無くてわかりにくいんだけど、要するに
@エラトステネスのふるいを使って、nまでのすべての素数を表示する
Anが素数かどうか判定する(ただしその際、@で求めた素数リストを利用する)
ということか??

5: ◆YpQ/fINFLk
07/09/21 19:15:36
すいません、やっぱり分かり辛いですよね……。
@の表示するときの段階にもAを行うみたいな感じです。

素数リストを作る。
そのさい、次の数を判定するのに今まで求めた素数を使用する。

仮にnが100のときは

10の時点の判別には、今まで求めた(格納した) 2〜√10までの素数を用い、
100の時は、2〜√100までの素数を用いるということです。

まだ少し分かり辛いですが、よろしくお願いします。




6:デフォルトの名無しさん
07/09/21 19:41:39
>[5] その他の制限:素数に対する、習っていない特殊なincludeや関数は仕様しない
何を習っていて何を習っていないのかがわからん

7: ◆YpQ/fINFLk
07/09/21 20:10:43
たびたび、すいません。
includeに関しては、
#include <stdio.h>
#include <math.h>
使用するものは、この二つのみだと思います。
授業範囲は、配列程度までなのでデータを配列に格納しつつfor文やIf文で使って作れという課題だと思います。


8:デフォルトの名無しさん
07/09/21 20:19:04
エラトステネスのふるいって分かってる?

>>5 の例だと、n = 100 は 2 が素数だと分かった瞬間に
ふるい落とされるから、>>5 みたいな動作はしないよ?

そういう素数を逐次格納して試し割るアルゴリズムは
ふるい型のアルゴリズムとは呼ばない。

9: ◆YpQ/fINFLk
07/09/21 20:41:03
>>8
勉強不足、申し訳ありませんorz

素数関係もプログラムも初心者なもので、1〜√nがどうとか聞いてるうちに、勘違いしていたようです。

・「素数を逐次格納して試し割るアルゴリズム」

これが課題で、間違いないと思います。
分かりやすい説明ありがとうございます。

10:デフォルトの名無しさん
07/09/21 20:48:52
>>9
#define n 100
int main() {
  int primes[n+1], pnum = 0;
  int i, x;
  for (x = 2; x <= n; ++x) {
    for (i = 0; i < pnum; ++i) {
      if (x % primes[i] == 0) break;
    }
    if (i == pnum) primes[pnum++] = x;
  }
  for (i = 0; i < pnum; ++i) {
    printf("%d\n", primes[i]);
  }
}

11: ◆YpQ/fINFLk
07/09/21 21:15:59
>>10
ありがとうございました。
自宅にはC++がないので、明日にでも学校で試してみます。

12:デフォルトの名無しさん
07/09/21 21:47:02
自宅でwebにアクセスできる環境があるならついでにC++ソースをコンパイルできるように環境を整えておけ
携帯しか持っていないってことなら仕方ないが

13:デフォルトの名無しさん
07/09/21 21:49:55
てかC++というよりCだよな

14:デフォルトの名無しさん
07/09/22 00:01:00
「C++がない」ってのはVC++のことを言っているんだと思うよ、たぶん。


15:デフォルトの名無しさん
07/09/22 00:55:08
>>9
#include <stdio.h>

#define N 100

int main(void)
{
int prime[N], i, j, cnt = 0;

prime[cnt++] = 2;

for(i=3; i<=N; i++) {
int flag = 0;
for(j=0; prime[j]*prime[j]<=i; j++) {
if(i%prime[j]==0) {
flag = 1;
break;
}
}
if(flag==0) prime[cnt++] = i;
}

for(i=0; i<cnt; i++) printf("%d ", prime[i]);

return 0;
}


16:デフォルトの名無しさん
07/09/22 03:44:00
【質問テンプレ】
[1] 授業単元: プログラミング(2)
[2] 問題文(含コード&リンク):
「電卓」をC言語で作成せよ。
ただし、1語のレジスタ、1語のメモリを持つように作成し、
以下の条件を満たすようにする。
(1) n+m=,n-m=,n*m=,n/m=と入力することで四則演算ができる。
(2) M+,M-と入力することで演算結果をメモリに加減算する。
(3) MRと入力することでメモリの内容をレジスタに読み出す。
(4) RCの入力でレジスタのクリア、MCの入力でメモリのクリアをする。
(5) メモリ上の値との計算は MR+n=,MR*m=といったように入力することで可能にする。
(6) end: が入力されるまでプログラムは終了せず、
再度演算ができるように入力待ち状態にする。
(7) 連続した計算は左順に計算する仕様でよい。n-m/a=は(n-m)/aという計算順でよい。
(8) 数字、計算符号および(1)〜(7)までに設定した命令文字(end:など)以外が入力された場合、
「エラー」と出力し、再度演算が出来るようにエラー処理を入れる。
以上
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C)
[4] 期限: ([07年9月23日まで] )
[5] その他の制限:とくに制限はありません。

掛け、割りの計算順序を考えなくていいから簡単だと先生は言っていましたが、
その前にレジスタとメモリの概念が??です。
とにかく「一時的に値を保持する場所を作る」がポイントと聞きました。

みなさんこの問題についてどうぞよろしくお願いします。

17:デフォルトの名無しさん
07/09/22 04:11:07
[1] 授業単元:
[2] 問題文(含コード&リンク):
ICU4Cを用いて、和暦変換する関数を作成せよ。

(例)
2007,9,1 → 平成19年9月1日
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: C++
[4] 期限:[無期限]
[5] その他の制限: ないです。


18:デフォルトの名無しさん
07/09/22 07:10:29
エラー デバッグ ブラウザ ツール
URLリンク(www.mozilla-japan.org)
シンプル プログミング ツール
URLリンク(proforceone.web.fc2.com)
素因数分解サンプルプログラム
Calculation processing にコピーして[RUN]

A=2*3*5*11*13*17*19;
x=A;write(" "+x+" ⇒");
for(i=2;x>=i;i++){if(0==x%i){k=0;
 for(j=2;(i>=j)&&(1>=k);j++){
  if(0==i%j){k++;}
 } if(1==k){write(" "+i);}
}}


19:デフォルトの名無しさん
07/09/22 08:51:27
// エラー デバッグ ブラウザ ツール
// URLリンク(www.mozilla-japan.org)
// シンプル プログミング ツール
// URLリンク(proforceone.web.fc2.com)
// 素因数分解サンプルプログラム
// Calculation processing にコピーして[RUN]

MAX=1000;br();
for(x=2;MAX>=x;x++){write(" "+x+" ⇒");
 for(i=2;x>=i;i++){if(0==x%i){k=0;
  for(j=2;(i>=j)&&(1>=k);j++){
   if(0==i%j){k++;}
  } if(1==k){write(" "+i);}
 }} br(); 
} br();


20:デフォルトの名無しさん
07/09/22 11:08:18
1] 授業単元:プログラミング技術
[2] 問題文(含コード&リンク):四則(加減乗除)演算を関数としてもっているプログラム。
実数と整数の両方に対応し、式と結果を表示する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
 [3.3] 言語:C言語
[4] 期限:2007/09/27(木)
[5] その他の制限:関数,scanfを使います。
よろしくお願いします。

21:デフォルトの名無しさん
07/09/22 13:45:45
[1] 授業単元:C
[2] 問題文(含コード&リンク):
3つ読み込み全て等しいか2つ等しいか全て異なるかを表示せよ。
[3] 環境
 [3.1] OS: Win Bcc32 C
[4] 期限:[無期限]
[5] その他の制限: ないです。

22:デフォルトの名無しさん
07/09/22 13:47:09
何を3つ読み込むんだよ

23:デフォルトの名無しさん
07/09/22 13:49:29


24:デフォルトの名無しさん
07/09/22 13:51:07
>>22
数字です

25:デフォルトの名無しさん
07/09/22 13:59:40
読み込み方は?

26:デフォルトの名無しさん
07/09/22 14:00:04
#include <stdio.h>
int main(void)
{
int a, b, c;
char *p[] = {"全て異なる", "2つ等しい", "", "全て等しい"};

scanf("%d%d%d", &a, &b, &c);

printf("%s", p[(a==b) + (b==c) + (c==a)]);

return 0;
}


27:デフォルトの名無しさん
07/09/22 14:02:16
なんじゃそりゃ

28:デフォルトの名無しさん
07/09/22 14:05:59
#include <stdio.h>
int main(void)
{
int no1,no2,no3;

printf("A:"); scanf("%d",&no1);
printf("B:"); scanf("%d",&no2);
printf("C:"); scanf("%d",&no3);

if (no1==no2 && no2==no3)
printf("三つは同じです。");
else if (no1==no2 || no2==no3 || no1==no3)
printf("二つは同じです。");
else
printf("三つとも違います。");

return (0);
}


29:デフォルトの名無しさん
07/09/22 15:26:13
1] 授業単元: データ構造
[2] 問題文:
階上n!(nは0以上の整数)は、以下のように再帰的に定義されている。
n!=n*(n-1) , 0!=1
この式を参考に、再起呼び出し用いて0以上の整数nを受け取りn!を返す
関数int Factorial(int n)を作り、n!を求めるプログラムを作成せよ。
また、再帰の動作がわかる表示を行い
表示を用いて再帰関数の呼び出される順序を説明せよ。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 2007年9月24日
[5] その他の制限:特にないです

再帰の動作を表示させないものは書けるのですが
どうしても表示を用いて
再帰関数の呼び出される順序がうまくいきません。

どうがよろしくお願いします。

30:デフォルトの名無しさん
07/09/22 15:54:45
>>29
> 再帰の動作を表示させないものは書けるのですが

見せて

31:デフォルトの名無しさん
07/09/22 16:26:00
>>29 こんな感じか?
#include    <stdio.h>
int indent;
int f(  int in )
{
    int i, ret;

    indent++;
    for( i = 0; i < indent; i++ )
        printf( "  " );
    printf( "f( %d )\n", in );

    if( in == 0 )
        ret = 1;
    else
        ret = in * f( in - 1 );

    for( i = 0; i < indent; i++ )
        printf( "  " );
    printf( "return %d\n", ret );
    indent--;
    return ret;
}
int main( void )
{
    int in = 9;

    indent = 0;
    printf( "%d! = %d\n", in, f( in ) );
    return 0;
}


32:デフォルトの名無しさん
07/09/22 16:58:41
[1] 授業単元: C
[2] 問題文:
2つの整数を読み込んで、それらの値の差が10以下か11以上かを表示プログラムを作れ。ただし、論理OR演算子を使うこと。
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 2007年9月24日
[5] その他の制限:特にないです

33:デフォルトの名無しさん
07/09/22 17:00:29
>>32に追加。
10以下の場合「差は10以下」と表示し、11以上なら「差は11以上」と表示する。

34:デフォルトの名無しさん
07/09/22 17:04:51
純水に差?それとも差の絶対値?

35:32
07/09/22 17:05:05
#include <stdio.h>
int main(void)
{
int no1,no2,sa;

printf("A:"); scanf("%d",&no1);
printf("B:"); scanf("%d",&no2);

if (no1>no2)
sa=no1-no2;
else
sa=no2-no1;
if (sa<=10)
printf("それらの差は10以下です。");
else
printf("それらの差は11以上です。");

return (0);
}

ここまでできたんですが、
>ただし、論理OR演算子を使うこと。
の論理OR演算子||をどこで使うのかが分かりません。
お願いします。

36:デフォルトの名無しさん
07/09/22 17:05:52
>>34
教科書には、単に「差」と出ています。

37:デフォルトの名無しさん
07/09/22 17:10:14
こういうこと?
if(no1-no2<=10 || no2-no1<=10)

38:デフォルトの名無しさん
07/09/22 17:11:29
#include <stdio.h>
int main(void)
{
int no1,no2,sa;

printf("A:"); scanf("%d",&no1);
printf("B:"); scanf("%d",&no2);

sa=no1-no2;

if (sa > 10 || sa < -10)
printf("それらの差は11以上です。");
else
printf("それらの差は10以下です。");

return (0);
}


39:デフォルトの名無しさん
07/09/22 17:12:07
>if (no1>no2)
これ要らんだろ。

普通に前者から後者を引けば良い。

40:デフォルトの名無しさん
07/09/22 17:12:40
>>37
面白すぎ

41:デフォルトの名無しさん
07/09/22 17:14:14
>>37 はダメだな
オレだけど

42:デフォルトの名無しさん
07/09/22 17:14:18
>>37
なにこれ?

43:デフォルトの名無しさん
07/09/22 17:14:40
>>37


44:デフォルトの名無しさん
07/09/22 17:15:20
// こういうことだと思われ
sa = no1 - no2;
if( sa < -10 || 10 < sa ) puts("11以上");
else puts("10以下");

45:デフォルトの名無しさん
07/09/22 17:16:55
暇人多くてワロタ

46:デフォルトの名無しさん
07/09/22 17:17:58
>>38
>sa < -10
これどういう意味?

47:デフォルトの名無しさん
07/09/22 17:19:03
-10よりsaが小さい場合1

48:デフォルトの名無しさん
07/09/22 17:19:54
sa <= -10
じゃないの?

49:デフォルトの名無しさん
07/09/22 17:21:02
>>48
中学生からやり直せ

50:デフォルトの名無しさん
07/09/22 17:21:53
あれ、マイナス習うのって中学生だっけ?
算数では引き算は必ずプラスの値なんだっけ?

51:デフォルトの名無しさん
07/09/22 17:23:48
if (sa<=10 || sa<=-10)
printf("それらの差は%dで10以下です。",sa);
else
printf("それらの差は%dで11以上です。",sa);

52:デフォルトの名無しさん
07/09/22 17:24:47
>>51
sa>=-10

53:デフォルトの名無しさん
07/09/22 17:25:42
>>48
-10 より saが小さい
よりと以上の違いが分からないなら数学止めた方が良いよ

54:デフォルトの名無しさん
07/09/22 17:25:48
質問者と回答者のレベルがほとんど同じだな

55:デフォルトの名無しさん
07/09/22 17:25:52
>>51-52
バカすぎ

56:デフォルトの名無しさん
07/09/22 17:27:32
>>52
&&

57:デフォルトの名無しさん
07/09/22 17:28:08
>>54
一応まともに答えてる38と44は除外してやれよw

58:デフォルトの名無しさん
07/09/22 17:28:33
アホ回答してるの>>37だろ。


59:デフォルトの名無しさん
07/09/22 17:32:43
>>35
if (sa<=10 || 0)
でおk

60:デフォルトの名無しさん
07/09/22 17:33:25
printf("それらの差は%dで10以下です。",sa);
else
printf("それらの差は%dで11以上です。",sa);
の順でやって。

61:デフォルトの名無しさん
07/09/22 17:35:24
-1,-2,-,3-,4
-1と-4は、-1のほうが大きい。


62:デフォルトの名無しさん
07/09/22 17:37:02
>>60
||を使えってのにその順番はないだろ

63:デフォルトの名無しさん
07/09/22 17:41:29
A&B = not(not A | not B)

64:デフォルトの名無しさん
07/09/22 17:43:56
>>60
差の値を表示しろなんて、元の問題文にも>>35にもないわけだが。

65:デフォルトの名無しさん
07/09/22 17:50:56
>>60
int sa = no1 - no2;
if(sa==-10||sa==-9||sa==-8||sa==-7||sa==-6||sa==-5||sa==-4||sa==-3||sa==-2||sa==-1||sa==0
||sa==1||sa==2||sa==3||sa==4||sa==5||sa==6||sa==7||sa==8||sa==9||sa==10)

66:デフォルトの名無しさん
07/09/22 17:54:49
if((unsigned int)(sa+10) <= 20)

67:デフォルトの名無しさん
07/09/22 17:56:05
どうでもいいけど、「それらの値の差」って言ったら一方の差の絶対値と解釈するよな

68:デフォルトの名無しさん
07/09/22 18:03:08
絶対値って何?

69:デフォルトの名無しさん
07/09/22 18:03:33
0からどれだけ離れているか。

70:デフォルトの名無しさん
07/09/22 18:06:21
>>68
せめて中学卒業してからおいで

71:29
07/09/22 18:08:29
29です。

>>30 >>31
返信が遅くなってすみません。
一応こんな感じで書いて動作はしました。

#include<stdio.h>

int Factorial(int n);
int main(void)
{
int n;
printf("自然数を入力して下さい:");
scanf("%d",&n);
printf("%dの階乗は,%dです。\n",n,Factorial(n));

return 0;
}

int Factorial(int n)
{
printf("関数Factorial(%d)にはいりました。\n",n);
if(n>0)
{
return n*Factorial(n-1);
}
else
{
return 1;
}
}


72:デフォルトの名無しさん
07/09/22 18:09:05
>>71
良かったね。さようなら。

73:デフォルトの名無しさん
07/09/22 18:10:11
>>71
それで十分な気もするが

74:デフォルトの名無しさん
07/09/22 18:16:05
>>35
if (sa>=11 || sa<=-11)


これでOK

75:デフォルトの名無しさん
07/09/22 18:18:24
if (sa>=11 || sa<=-11)
printf("それらの差は%dで11以上です。",sa);
else
printf("それらの差は%dで10以下です。",sa);

76:デフォルトの名無しさん
07/09/22 18:21:56
しつこいな
そんなにバカな答え書いてバカにされたのが悔しかったのか

77:デフォルトの名無しさん
07/09/22 18:23:14
>>75
「それらの差」がマイナスの表示になってもいいの?

78:デフォルトの名無しさん
07/09/22 18:23:16
絶対値?

79:デフォルトの名無しさん
07/09/22 18:23:30
しつこさに思わず噴いた

80:29
07/09/22 18:27:04
71です。

これ以外に関数Factorial(n)から出ます:Factorial(n)=再帰の途中経過
見たいなのを表示しなければならないんですよ・・・

どこに入れたら表示させらるのか分からないので教えてもらえませんか?

よろしくお願いします

81:デフォルトの名無しさん
07/09/22 18:28:13
しつこいぞ。スレ違い。


82:デフォルトの名無しさん
07/09/22 18:29:41
どういう表示をさせたいの?

83:デフォルトの名無しさん
07/09/22 18:29:46
>>80
int Factorial(int n)
{
int ret;
printf("関数Factorial(%d)にはいりました。\n",n);
ret = n > 0 ? Factorial(n-1) * n : 1;
printf("関数Factorial(%d)は%dを返して終了します\n",n, ret);
return ret;
}
こんな感じでどうよ?

84:29
07/09/22 18:50:30
>>83
ありがとうございます。
おかげさまで分かりました。
ホントにありがとうございました。

>>82
>>83さんのおかげで分かりました。

>>81
しつこくてすみませんでした。

何度もしつこく聞いてしまったのに親切に返信してくれた
方々ありがとうございました。

85:デフォルトの名無しさん
07/09/22 19:19:42
>>77
どういうこと?

86:デフォルトの名無しさん
07/09/22 19:31:10
>>85
sa=-11 のとき
「それらの差は-11で11以上です。」
というおかしな表示になるよ。

87:>>16
07/09/22 20:10:26
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void){
    double reg = 0, mem = 0;
    char buf[128] = {0}, *p;
    while(1){
        scanf("%127s", buf);
        if(!strcmp(buf, "end:")) break;
        else if(!strcmp(buf, "M+")) mem += reg;
        else if(!strcmp(buf, "M-")) mem -= reg;
        else if(!strcmp(buf, "MR")) reg = mem;
        else if(!strcmp(buf, "RC")) reg = 0;
        else if(!strcmp(buf, "MC")) mem = 0;
        else if(isalpha(*buf)) fprintf(stderr, "error\n");
        else{
            p = buf;
            reg += strtod(p, &p);
            while(*p != '=' && *p != '\0')
                switch(*p++){
                case '+' : reg += strtod(p, &p); break;
                case '-' : reg -= strtod(p, &p); break;
                case '*' : reg *= strtod(p, &p); break;
                case '/' : reg /= strtod(p, &p); break;
                default : reg = strtod(p, &p); break;
                }
        }
        printf("reg = %g \t mem = %g\n", reg, mem);
    }
    return 0;
}

88:87
07/09/22 20:24:14
>>87は無しで……

89:デフォルトの名無しさん
07/09/22 20:34:32
残念ながら無しにはできない。このスレにはずっと残るし
ログを残している人はいつでもそのレスを見ることが出来る。
つまり、有るってことで。

90:デフォルトの名無しさん
07/09/22 20:50:33
>>16 他の人に期待
URLリンク(kansai2channeler.hp.infoseek.co.jp)

91:16
07/09/23 12:44:46
>>90
リンク先を利用させてもらったのですが、どうも計算が上手くいきません。
たとえば「5+5=」と打ち込んで、「end:」で終了させても答えは出ず、
「reg=-1 mem=0」といった感じにしか表示されません。
おそらくレジスタが−1でメモリが0であることを表していると思うのですが、
肝心の計算結果がわかりません。
このプログラムをどのように修正すればよいのでしょうか?
URLリンク(kansai2channeler.hp.infoseek.co.jp)

92:デフォルトの名無しさん
07/09/23 13:21:49
[1] 授業単元:C
[2] 問題文(含コード&リンク):
読み込んだ非負の整数血を逆順に表示。
[3] 環境
 [3.1] OS: Win Bcc32 C
[4] 期限:[無期限]
[5] その他の制限: ないです。

93:デフォルトの名無しさん
07/09/23 13:36:41
血...

94:デフォルトの名無しさん
07/09/23 14:26:07
>>91
>90のソースをコンパイルしたら一箇所だけエラーが出たので、それを修正してコンパイルしてみた。
--
$ ./a.out
5+5=
reg = 10 mem = 0
end:

$
--
普通に動いているようだが。

95:デフォルトの名無しさん
07/09/23 14:28:16
>>91
なんかわかんなくなってきたから、実行例をいくつかください

96:デフォルトの名無しさん
07/09/23 15:03:31
>>92
#include <stdio.h>
#define n 10
int main(int c,char**v){
int i,a[n];
if(c==1)for(i=0;i<n;i++)scanf("%d",&a[i]);
c!=n+1?printf("%d ",main(c+1,c==1?(char**)a:v)):0;
return c==1?0:*((int*)v+c-2);
}

97:デフォルトの名無しさん
07/09/23 15:06:32
>>92
スタックの勉強でもしてるのかな?

#include <stdio.h>
#define S_MAX 500

int stack[S_MAX];
int top=-1;

void push(int x){
stack[++top] = x;
}
int pop(){
return stack[top--];
}
int main(){
int i=1;
while(i!=0){
printf("非負値の入力(0で終了):");
scanf("%d", &i);
if(i<0){
printf("非負値じゃないとダメです\n");
}else if(i!=0){
push(i);
}
}
printf("--- 結果 ---\n");
while(top!=-1){
printf("%d\n", pop());
}
return 0;
}

98:デフォルトの名無しさん
07/09/23 15:07:52
かぶった・・・orz

99:デフォルトの名無しさん
07/09/23 15:09:26
>>97
do whileを勉強しています。

100:デフォルトの名無しさん
07/09/23 15:11:59
#include <stdio.h>
int main(void)
{
int num;

do {
printf("非負の整数:");
scanf("%d",&num);

if (num<0)
puts("その数は負の数です。");
} while (num<0);

printf("その数を逆から読むと、");

do {
printf("%d",num%10);
num=num/10;
} while (num>0);
puts("です。");
return (0);
}


101:デフォルトの名無しさん
07/09/23 15:12:12
do while か。そのくらいだったら、逆にスタック使うと不自然だなw
>>96のforをdowhileに直した方がいいね

102:デフォルトの名無しさん
07/09/23 15:14:21
>>100
ちょwwwそういう意味の問題だったのかwww

103:デフォルトの名無しさん
07/09/23 15:16:52
ちょwwwちょwww

104:デフォルトの名無しさん
07/09/23 15:17:00
ちょwwwだったのかwww

105:デフォルトの名無しさん
07/09/23 15:18:30
ちょwwwが多すぎワロタwww

106:デフォルトの名無しさん
07/09/23 15:20:04
>>16
電卓っぽく。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

実行例書いてくれれば、あとで直す。

107:デフォルトの名無しさん
07/09/23 16:22:05
>>106
1+1=
と打っても真っ暗だよ。

108:デフォルトの名無しさん
07/09/23 16:31:21
>と打っても真っ暗だよ。
そりゃあんたの「お先」だろ。

109:デフォルトの名無しさん
07/09/23 18:00:54
[1] 授業単元:GUIプログラミング
[2] 問題文(含コード&リンク):
エディットコントロールにアドレスを入れてボタンを押すと、
そのページを表示するプログラムを作れ。
[3] 環境
 [3.1] OS: WinXP
 [3.2] Borland C++ 5.5
 [3.3] C言語
[4] 期限:9月25日まで
[5] その他の制限: 要は超簡易ブラウザです。
オリジナリティをつけろとの事なので、表示しているページに何か変化があった場合、
(例えばリンクの移動だとか、ボタンクリックだとか、フォームに入力だとか)、
エディットコントロールに変化がありましたって表示するような感じの機能をつけてもらえると幸いです。

110:デフォルトの名無しさん
07/09/23 18:03:15
>>109
どこの大学?

111:デフォルトの名無しさん
07/09/23 18:05:45
大学というか専門学校。特定されるとあれなので・・・。

112:デフォルトの名無しさん
07/09/23 18:12:25
>>109
GUI とネットワーク接続に関するライブラリは何を使ってよいの?

113:デフォルトの名無しさん
07/09/23 18:17:21
>>112
特に指定はないです。むしろ大事なのはUIなんです。
使用者に使いやすい設計を心がける事って言われたんですが・・・。
それにしても1から作れって鬼杉。ある程度の機能もったブラウザをいじれって言うならまだしも。
で、あたふたしてると期限が近づいてきて俺涙目みたいな・・・

114:デフォルトの名無しさん
07/09/23 18:21:24
俺涙目みたいな・・・

115:デフォルトの名無しさん
07/09/23 18:22:01
>>113
有料のライブラリとか使ったらあんたが困るでしょ?

講義で過去に作ったプログラムなどがあったらそれを
アップしてもらうのが話が早くて楽なんだけどな。

116:デフォルトの名無しさん
07/09/23 18:22:44
そんなこと言ったって、俺涙目みたいな・・・

117:デフォルトの名無しさん
07/09/23 18:23:31
やっぱり俺涙目みたいな・・・

118:デフォルトの名無しさん
07/09/23 18:26:37
どうしても俺涙目みたいな・・・

119:デフォルトの名無しさん
07/09/23 18:27:47
お前ら、俺涙目なのに、いじんな!

120:デフォルトの名無しさん
07/09/23 18:27:55
っていうか、涙目みたいな

121:デフォルトの名無しさん
07/09/23 18:30:06
>>115
なるほど、有料は確かに困ります。
講義で用意されたものは何もないのですが・・・。

一応自分でも色々と調べてみたのですが、IEコンポーネントを使うのが楽そうな感じでしたね。
ただ、VC++とかばかりでなかなか。Borlandじゃコンパイル出来なかったりしてもうワケワカラン状態です。
コンパイラはBorlandと書きましたが、実はこれは指定されてるわけではないです。学校のパソコンにはVisual Studio .netが
入ってますが、家にはBorlandを入れてます。さすがに有料はキツイって事で・・・。でも家でコーディングできないと不便なのでBorland。

122:デフォルトの名無しさん
07/09/23 18:32:01
涙目みたいな・・・ってこんなにレスがつくとは思わなかった・・・
精神的な話だから、実際には泣いてないんだぜ。

123:デフォルトの名無しさん
07/09/23 18:32:04
もうワケワカラン状態で、さすがに有料はキツイって事で・・・俺涙目みたいな・・・

124:デフォルトの名無しさん
07/09/23 18:32:18
VC++EEでも入れればいいじゃん

125:109
07/09/23 18:34:54
>>124
一つのコンパイラで全部やろうって考え自体おかしいんですかね?
ノートなのであまり重たいのは入れたくないなと思ってBorlandにしてみました。
その後Turbo C++入れて、一気に重くなってげんなりしてます。

というか、コンパイラの違いってなんなんですか・・・どれがいいとかあるんですか?って質問はスレ違いですね

126:デフォルトの名無しさん
07/09/23 18:35:26
ぐだぐだ質問してんじゃねえよ。

127:デフォルトの名無しさん
07/09/23 18:35:57
>>125
スレ違いって分かってるんだったら、書き込むなよ。

128:デフォルトの名無しさん
07/09/23 18:36:06
っていうか、俺涙目みたいな・・・

129:109
07/09/23 18:36:51
では黙って片付くのを待ちます。。。
涙目です。

130:デフォルトの名無しさん
07/09/23 18:36:55
>>122
こいつアホだ。実際に泣いてるかどうかではなく、
そんなことを書き込むことを皆、からかってるのに。


131:デフォルトの名無しさん
07/09/23 18:48:08
>>129
> そのページを表示する
って、一般的なサイト全て?
単純なボタンやフォーム程度なら自分でHTML解析してできるだろうけど、
そうじゃないならIEコンポやGecko使うしかないと思うよ

132:デフォルトの名無しさん
07/09/23 18:49:39
せめて環境を固定してくれないと着手すらできんな。

133:デフォルトの名無しさん
07/09/23 19:02:33
VCEEでいいじゃん
MFC使えないのかな

134:109
07/09/23 19:27:49
すみません、飯を食べてました。

>>131-133
オリジナリティはもう少し練りたいと思います。ので、最低限の機能を持ったブラウザの実装をお願いします。
その後のUIやオリジナル機能は自分で頑張ってみます。とはいえ、時間はあまり残ってないのですが・・・。
IEコンポーネント使用で、コンパイラはBorlandC++5.5で出来る範囲でお願いします。
有料なものを使わなければ特に制限はないです。やりやすい形でお願いします。

もしBorlandじゃどうしてもダメというなら、私がVCを入れます。

135:デフォルトの名無しさん
07/09/23 19:29:00
ちまちま、後だしするなよ。
最初にまとめて書け。

136:109
07/09/23 19:32:48
申し訳ないです。
>>134でお願いします。

137:デフォルトの名無しさん
07/09/23 19:35:02
最初から、依頼しなおしたほうがいいんじゃないか?

138:デフォルトの名無しさん
07/09/23 19:38:13
>>109
最初からやり直せ。

139:デフォルトの名無しさん
07/09/23 19:38:24
っていうか俺涙目・・・

140:デフォルトの名無しさん
07/09/23 19:38:45
>>134
VC入れて、IEコンポでぐぐってサンプル拾ってコンパイル。

ここまではできるだろう。

141:デフォルトの名無しさん
07/09/23 19:40:07
とりあえず依頼しなおします。

[1] 授業単元:GUIプログラミング
[2] 問題文(含コード&リンク):
エディットコントロールにアドレスを入れてボタンを押すと、
そのページを表示するプログラムを作れ。
[3] 環境
 [3.1] OS: WinXP
 [3.2] Borland C++ 5.5
 [3.3] C言語
[4] 期限:9月25日まで
[5] その他の制限: IEコンポーネントを使用。有料のものは使用しない事。

142:デフォルトの名無しさん
07/09/23 19:44:00
>>140
VC++でIEコンポーネントのサンプルを置いてる良さそうなサイトはGoogleのトップに出てきたのですが、
Borlandだとインクルードファイルがなくて、コンパイル通らないですね。VC入れろと言われたら終わりですけど。
むしろそっちの方が幸せになれるのかな・・・

143:デフォルトの名無しさん
07/09/23 19:47:09
>>142
依頼しなおしたのなら、黙ってろ。

144:デフォルトの名無しさん
07/09/23 19:50:25
もうワケワカラン状態で、さすがに有料はキツイって事で・・・俺涙目みたいな・・・むしろそっちの方が幸せになれるのかな・・・

145:16
07/09/23 19:58:52
>>106
1+1=
2 ←(計算毎に答えは出る)
3+3=
6
M+ ←(直前の計算結果がメモリに。この場合6)
MR+1=
7
end:(計算終了)
といった具合がベストだと思うのですが。
(問題には書いていなかったので、質問発言時に書けませんでした。
これも先生が望んでいる解答結果とはわかりませんが…)
度々申し訳ないのですが、よろしくお願いします。

146:デフォルトの名無しさん
07/09/23 20:16:02
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク):
キーボードからn+m,n-m,n*m,n/mを入力し、演算結果を出力せよ。
結果出力後は「再入力:」と出力し、再度計算できるように
ループさせる。
「off:」と入力することで計算を終了させる。

演算結果例:
 5+6
 11
 再入力:
 6*7
 42
 再入力:
 off:
 (計算終了)
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C言語)
[4] 期限: [2007年9月23日まで]
[5] その他の制限:特になし


147:デフォルトの名無しさん
07/09/23 20:19:36
>>146
その形式以外の入力はないと仮定していいのか?

148:デフォルトの名無しさん
07/09/23 21:04:40
>>146
>>16と共同で頑張れ

149:デフォルトの名無しさん
07/09/23 21:18:50
みたところ、一桁の演算だけど、それだけいいのか?

150:デフォルトの名無しさん
07/09/23 22:02:41
>>145
URLリンク(kansai2channeler.hp.infoseek.co.jp)

151:150
07/09/23 22:06:13
多分、先生が求めるのは>>106だけどな

152:デフォルトの名無しさん
07/09/23 22:11:32
>>130
みんなかどうかは怪しいけどなw

153:146
07/09/23 23:19:02
>>147
そうです。命令はn+m,n-m,n*m,n/m4つのみです。
>>149
桁数は指定はありませんでした。
先ほど書き忘れてしまったのですが、「n,mは実数」
という条件がありました。

154:デフォルトの名無しさん
07/09/23 23:25:01
strtod使えば大した問題じゃない

155: ◆hwUQ/UOPMQ
07/09/23 23:58:37
[1] 授業単元: C
[2] 問題文(含コード&リンク): クイックソートのプログラムを作成しなさい
・ソート対象は文字列配列
・引数でソート対象、ソート後の配列をしていする
[3] 環境
 [3.1] OS: XP
 [3.2] VC++ 2008
 [3.3] 言語: C
[4] 期限: なるべく早めに
[5] その他の制限: ソート以外の標準関数は使ってもよい

もう大方は作ってみたんですが、途中でエラーで終了してしまいます
協力お願いします
URLリンク(kansai2channeler.hp.infoseek.co.jp)
↑にうpしました。クイックソートと書いてるやつです

156:16
07/09/24 02:50:08
>>106
>>150

ありがとうございます。助かりました。

157:デフォルトの名無しさん
07/09/24 06:32:53
>>155
それなりに努力の跡は見えるんだが、なんとも……。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

それにしてもVC2008か…ちょっと欲しい。orcasはいつ出るのかなぁ。


158: ◆hwUQ/UOPMQ
07/09/24 08:17:35
>>157
ありがとうございます!
できたら悪い点が沢山あったと思うので教えて欲しいです

あと、VC++2008はベータ版ならダウンロードできますよ

159:デフォルトの名無しさん
07/09/24 10:02:55
>>157
比較関数が間違ってる。文字列の第一文字目だけで比較するそうな。

>>158
157じゃないけど

1. sort_array[0] が NULL かどうかを見てるのは再帰の一発目だけを
区別する目的だろうけれど、そんなのは再帰中にやらず、157 のように
別の関数に分けるべき。これが落ちる原因になっている。

2. それを直しても正しく動作しない。last の前後に分けるところがダメ。
pivot を特別扱いしたいのだろうけど、並べ替え中に pivot も動いてしまう。
ここは 157 のように、両側から同時にやるのが常套テクニック。
今の方法でも、pivot を必ず最後に選ぶようにすると、一応できる。

1 を小細工で対応し、2 を適当に修正したものを以下に示す。
実際の修正量は数行程度のはずだけれど、相当不自然なコードなので
もう一度自分で考えて書いたほうが勉強になると思う。

160:デフォルトの名無しさん
07/09/24 10:09:03
>>158
続き。関係ないところは行をつめている。
!! つきのコメントのあるところが主な修正箇所。

int quick_sort(const char *array[], int left ,int right,char *sort_array[]) {
  int last = 0; int cnt = 0; int pivot = 0;
  if(array == NULL || left < 0 || right < 0 || sort_array == NULL) return 0; //引数チェック
  if(left >= right) return 1; //配列の要素が一つの場合

  if(sort_array[0] == NULL){ //sort_array[0]がNULLならarrayをコピー
    for(cnt = 0;cnt <= right;cnt++){
      sort_array[cnt] = (char *)malloc(256); // !!malloc で適当に確保してからコピーする
      strcpy(sort_array[cnt],array[cnt]);
    }
  }
  pivot = (right+left)/2; //基準値を決める
  change(sort_array, pivot, right); // !!pivot を最後に送りつける
  pivot = right;
  last = left;
  for(cnt = left; cnt <= right;cnt++){ // !![left,last) は pivot 以下
    if(sort_array[cnt][0] <= sort_array[pivot][0]){ // !!pivotが左側に入るために等号付き
      change(sort_array,cnt,last++); !! last++ と後置インクリメント
    }
  }
  quick_sort(array,left,last-2,sort_array); // !!array[last-1] が pivot なので抜く
  quick_sort(array,last,right,sort_array);
  return 1;
}

161:デフォルトの名無しさん
07/09/24 10:15:23
大してレス読んでないけど文字列比較ならstrcmp使えばいいじゃん。

162:デフォルトの名無しさん
07/09/24 10:21:15
>>161 的外れだよ ちゃんと読もうな

163:デフォルトの名無しさん
07/09/24 10:31:52
[1] 授業単元: programming concepts
[2] 問題文(含コード&リンク): -Promt the user for the base value(int date type).
-Read the base value.
-Promt the user for the exponent value(int date type).
-Read the exponent value.
-using a <cmath> function.
-The following output should be displayed:
/* Enter the base: 3
Enter the exponent: 2
3 to the 2 power equals 9.
The square root of 3 equals 1.41
Press any key to continue*/
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC++
 [3.3] 言語: C++
[4] 期限: なるべく早くお願いします
[5] 習って4週間目です
めちゃめちゃですが自分のプログラムです
URLリンク(kansai2channeler.hp.infoseek.co.jp)

164: ◆hwUQ/UOPMQ
07/09/24 10:39:50
>>159
ご指摘ありがとうございます!
クイックソートがまだつかめてない様なのでもう少し考えます

165:デフォルトの名無しさん
07/09/24 10:46:10
>>163
'^' はビットXOR演算子であり、べき乗を処理する演算子はC言語にはない
pow() を使え

sqr() ではなく sqrt()

他にも突っ込み所はあるけどコンパイルすれば気付くと思うので触れない

166:デフォルトの名無しさん
07/09/24 11:19:02
>>163
これくらいの英語はできなきゃ恥ずかしいくらいだけど、
日本語訳しておくくらいの心遣いをしなさい

167:デフォルトの名無しさん
07/09/24 11:20:07
>>166
アホ? 矛盾してるけど。

168:デフォルトの名無しさん
07/09/24 11:22:25
下手な訳で混乱させられるよりは、生の英文の方がマシ

169:デフォルトの名無しさん
07/09/24 11:57:43
矛盾はしてないよ
併記しておけば問題ないし
ということで>>163は首を洗って出直してきなさい

170:デフォルトの名無しさん
07/09/24 11:59:39
>>169
>>168


171:デフォルトの名無しさん
07/09/24 12:14:29
>>170
自分の言葉でたのむわ

むしろ、依頼者が英語がわかんなくて適当にやって
さりげなく間違い訂正させてるのかもしれんし
油断は禁物だぞ

172:デフォルトの名無しさん
07/09/24 12:15:40
>>171
>>168


173:デフォルトの名無しさん
07/09/24 12:19:38
>>172
答えになってねーよ在日

かくいう俺は在日日本人だが

174:デフォルトの名無しさん
07/09/24 12:20:03
>>163程度の英文が読めない奴は答えなくていいから

175:デフォルトの名無しさん
07/09/24 12:22:32
>>174
英語は分かるがcが分からないんだ…

176:デフォルトの名無しさん
07/09/24 12:22:50
翻訳しました

-ベース値(int日付のタイプ)のためのユーザのPromt。
-ベース値を読んでください。
-解説者値(int日付のタイプ)のためのユーザのPromt。
-解説者値を読んでください。
-<cmath>機能を使用します。
-以下の出力を表示するべきです:
/*はベースに入ります: 3
解説者に入ってください: 2
3 2と、パワーは9と等しいです。
3の平方根はいずれも*/を続けるために合わせる1.41Pressと等しいです。

177:デフォルトの名無しさん
07/09/24 12:25:26
そして、cはわからないが√3は1.41ではないことは分かる!

178:汗
07/09/24 14:39:17
お助けください。

現在の地域時間から15時間後の日時を表示するプログラムを作成しなさい。
表示形式は日付と時間が表示されれば、自由とします。

179:デフォルトの名無しさん
07/09/24 14:41:15
>>178
>>7

180:デフォルトの名無しさん
07/09/24 14:41:48
間違えた
>>178
>>1

181:デフォルトの名無しさん
07/09/24 14:45:40
#include <stdio.h>
#include <time.h>
int main() {struct tm tm; time_t now = time(NULL); tm = * localtime(& now); tm.tm_hour += 15; mktime(& tm); puts(asctime(& tm)); return 0;}

182:汗2
07/09/24 14:55:45
[1] 授業単元: 通信物
[2] 問題文(含コード&リンク):
次のプログラムで本来入れるべき処理は何か。それを指摘しなさい。
 1:char*pstr;
2:
3:pstr=malloc(100)
4:sprintf(pstr,"123")
5:patr=malloc(10)
6:sprintf(pstr,"456")
7:free(pstr);

[3] 環境
 [3.1] OS: (Windows)
 [3.3] 言語: (C)
[4] 期限:早いと助かるス。



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

5282日前に更新/230 KB
担当:undef