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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0032デフォルトの名無しさん2007/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] その他の制限:特にないです
0033デフォルトの名無しさん2007/09/22(土) 17:00:29
>>32に追加。
10以下の場合「差は10以下」と表示し、11以上なら「差は11以上」と表示する。
0034デフォルトの名無しさん2007/09/22(土) 17:04:51
純水に差?それとも差の絶対値?
0035322007/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演算子||をどこで使うのかが分かりません。
お願いします。
0036デフォルトの名無しさん2007/09/22(土) 17:05:52
>>34
教科書には、単に「差」と出ています。
0037デフォルトの名無しさん2007/09/22(土) 17:10:14
こういうこと?
if(no1-no2<=10 || no2-no1<=10)
0038デフォルトの名無しさん2007/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);
}
0039デフォルトの名無しさん2007/09/22(土) 17:12:07
>if (no1>no2)
これ要らんだろ。

普通に前者から後者を引けば良い。
0040デフォルトの名無しさん2007/09/22(土) 17:12:40
>>37
面白すぎ
0041デフォルトの名無しさん2007/09/22(土) 17:14:14
>>37 はダメだな
オレだけど
0042デフォルトの名無しさん2007/09/22(土) 17:14:18
>>37
なにこれ?
0043デフォルトの名無しさん2007/09/22(土) 17:14:40
>>37
?
0044デフォルトの名無しさん2007/09/22(土) 17:15:20
// こういうことだと思われ
sa = no1 - no2;
if( sa < -10 || 10 < sa ) puts("11以上");
else puts("10以下");
0045デフォルトの名無しさん2007/09/22(土) 17:16:55
暇人多くてワロタ
0046デフォルトの名無しさん2007/09/22(土) 17:17:58
>>38
>sa < -10
これどういう意味?
0047デフォルトの名無しさん2007/09/22(土) 17:19:03
-10よりsaが小さい場合1
0048デフォルトの名無しさん2007/09/22(土) 17:19:54
sa <= -10
じゃないの?
0049デフォルトの名無しさん2007/09/22(土) 17:21:02
>>48
中学生からやり直せ
0050デフォルトの名無しさん2007/09/22(土) 17:21:53
あれ、マイナス習うのって中学生だっけ?
算数では引き算は必ずプラスの値なんだっけ?
0051デフォルトの名無しさん2007/09/22(土) 17:23:48
if (sa<=10 || sa<=-10)
printf("それらの差は%dで10以下です。",sa);
else
printf("それらの差は%dで11以上です。",sa);
0052デフォルトの名無しさん2007/09/22(土) 17:24:47
>>51
sa>=-10
0053デフォルトの名無しさん2007/09/22(土) 17:25:42
>>48
-10 より saが小さい
よりと以上の違いが分からないなら数学止めた方が良いよ
0054デフォルトの名無しさん2007/09/22(土) 17:25:48
質問者と回答者のレベルがほとんど同じだな
0055デフォルトの名無しさん2007/09/22(土) 17:25:52
>>51-52
バカすぎ
0056デフォルトの名無しさん2007/09/22(土) 17:27:32
>>52
&&
0057デフォルトの名無しさん2007/09/22(土) 17:28:08
>>54
一応まともに答えてる38と44は除外してやれよw
0058デフォルトの名無しさん2007/09/22(土) 17:28:33
アホ回答してるの>>37だろ。
0059デフォルトの名無しさん2007/09/22(土) 17:32:43
>>35
if (sa<=10 || 0)
でおk
0060デフォルトの名無しさん2007/09/22(土) 17:33:25
printf("それらの差は%dで10以下です。",sa);
else
printf("それらの差は%dで11以上です。",sa);
の順でやって。
0061デフォルトの名無しさん2007/09/22(土) 17:35:24
-1,-2,-,3-,4
-1と-4は、-1のほうが大きい。
0062デフォルトの名無しさん2007/09/22(土) 17:37:02
>>60
||を使えってのにその順番はないだろ
0063デフォルトの名無しさん2007/09/22(土) 17:41:29
A&B = not(not A | not B)
0064デフォルトの名無しさん2007/09/22(土) 17:43:56
>>60
差の値を表示しろなんて、元の問題文にも>>35にもないわけだが。
0065デフォルトの名無しさん2007/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)
0066デフォルトの名無しさん2007/09/22(土) 17:54:49
if((unsigned int)(sa+10) <= 20)
0067デフォルトの名無しさん2007/09/22(土) 17:56:05
どうでもいいけど、「それらの値の差」って言ったら一方の差の絶対値と解釈するよな
0068デフォルトの名無しさん2007/09/22(土) 18:03:08
絶対値って何?
0069デフォルトの名無しさん2007/09/22(土) 18:03:33
0からどれだけ離れているか。
0070デフォルトの名無しさん2007/09/22(土) 18:06:21
>>68
せめて中学卒業してからおいで
0071292007/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;
}
}
0072デフォルトの名無しさん2007/09/22(土) 18:09:05
>>71
良かったね。さようなら。
0073デフォルトの名無しさん2007/09/22(土) 18:10:11
>>71
それで十分な気もするが
0074デフォルトの名無しさん2007/09/22(土) 18:16:05
>>35
if (sa>=11 || sa<=-11)


これでOK
0075デフォルトの名無しさん2007/09/22(土) 18:18:24
if (sa>=11 || sa<=-11)
printf("それらの差は%dで11以上です。",sa);
else
printf("それらの差は%dで10以下です。",sa);
0076デフォルトの名無しさん2007/09/22(土) 18:21:56
しつこいな
そんなにバカな答え書いてバカにされたのが悔しかったのか
0077デフォルトの名無しさん2007/09/22(土) 18:23:14
>>75
「それらの差」がマイナスの表示になってもいいの?
0078デフォルトの名無しさん2007/09/22(土) 18:23:16
絶対値?
0079デフォルトの名無しさん2007/09/22(土) 18:23:30
しつこさに思わず噴いた
0080292007/09/22(土) 18:27:04
71です。

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

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

よろしくお願いします
0081デフォルトの名無しさん2007/09/22(土) 18:28:13
しつこいぞ。スレ違い。
0082デフォルトの名無しさん2007/09/22(土) 18:29:41
どういう表示をさせたいの?
0083デフォルトの名無しさん2007/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;
}
こんな感じでどうよ?
0084292007/09/22(土) 18:50:30
>>83
ありがとうございます。
おかげさまで分かりました。
ホントにありがとうございました。

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

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

何度もしつこく聞いてしまったのに親切に返信してくれた
方々ありがとうございました。
0085デフォルトの名無しさん2007/09/22(土) 19:19:42
>>77
どういうこと?
0086デフォルトの名無しさん2007/09/22(土) 19:31:10
>>85
sa=-11 のとき
「それらの差は-11で11以上です。」
というおかしな表示になるよ。
0087>>162007/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;
}
0088872007/09/22(土) 20:24:14
>>87は無しで……
0089デフォルトの名無しさん2007/09/22(土) 20:34:32
残念ながら無しにはできない。このスレにはずっと残るし
ログを残している人はいつでもそのレスを見ることが出来る。
つまり、有るってことで。
0090デフォルトの名無しさん2007/09/22(土) 20:50:33
>>16 他の人に期待
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4950.txt
0091162007/09/23(日) 12:44:46
>>90
リンク先を利用させてもらったのですが、どうも計算が上手くいきません。
たとえば「5+5=」と打ち込んで、「end:」で終了させても答えは出ず、
「reg=-1 mem=0」といった感じにしか表示されません。
おそらくレジスタが−1でメモリが0であることを表していると思うのですが、
肝心の計算結果がわかりません。
このプログラムをどのように修正すればよいのでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4950.txt
0092デフォルトの名無しさん2007/09/23(日) 13:21:49
[1] 授業単元:C
[2] 問題文(含コード&リンク):
読み込んだ非負の整数血を逆順に表示。
[3] 環境
 [3.1] OS: Win Bcc32 C
[4] 期限:[無期限]
[5] その他の制限: ないです。
0093デフォルトの名無しさん2007/09/23(日) 13:36:41
血...
0094デフォルトの名無しさん2007/09/23(日) 14:26:07
>>91
>90のソースをコンパイルしたら一箇所だけエラーが出たので、それを修正してコンパイルしてみた。
--
$ ./a.out
5+5=
reg = 10 mem = 0
end:

$
--
普通に動いているようだが。
0095デフォルトの名無しさん2007/09/23(日) 14:28:16
>>91
なんかわかんなくなってきたから、実行例をいくつかください
0096デフォルトの名無しさん2007/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);
}
0097デフォルトの名無しさん2007/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;
}
0098デフォルトの名無しさん2007/09/23(日) 15:07:52
かぶった・・・orz
0099デフォルトの名無しさん2007/09/23(日) 15:09:26
>>97
do whileを勉強しています。
0100デフォルトの名無しさん2007/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);
}
0101デフォルトの名無しさん2007/09/23(日) 15:12:12
do while か。そのくらいだったら、逆にスタック使うと不自然だなw
>>96のforをdowhileに直した方がいいね
0102デフォルトの名無しさん2007/09/23(日) 15:14:21
>>100
ちょwwwそういう意味の問題だったのかwww
0103デフォルトの名無しさん2007/09/23(日) 15:16:52
ちょwwwちょwww
0104デフォルトの名無しさん2007/09/23(日) 15:17:00
ちょwwwだったのかwww
0105デフォルトの名無しさん2007/09/23(日) 15:18:30
ちょwwwが多すぎワロタwww
0106デフォルトの名無しさん2007/09/23(日) 15:20:04
>>16
電卓っぽく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4952.txt

実行例書いてくれれば、あとで直す。
0107デフォルトの名無しさん2007/09/23(日) 16:22:05
>>106
1+1=
と打っても真っ暗だよ。
0108デフォルトの名無しさん2007/09/23(日) 16:31:21
>と打っても真っ暗だよ。
そりゃあんたの「お先」だろ。
0109デフォルトの名無しさん2007/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] その他の制限: 要は超簡易ブラウザです。
オリジナリティをつけろとの事なので、表示しているページに何か変化があった場合、
(例えばリンクの移動だとか、ボタンクリックだとか、フォームに入力だとか)、
エディットコントロールに変化がありましたって表示するような感じの機能をつけてもらえると幸いです。
0110デフォルトの名無しさん2007/09/23(日) 18:03:15
>>109
どこの大学?
0111デフォルトの名無しさん2007/09/23(日) 18:05:45
大学というか専門学校。特定されるとあれなので・・・。
0112デフォルトの名無しさん2007/09/23(日) 18:12:25
>>109
GUI とネットワーク接続に関するライブラリは何を使ってよいの?
0113デフォルトの名無しさん2007/09/23(日) 18:17:21
>>112
特に指定はないです。むしろ大事なのはUIなんです。
使用者に使いやすい設計を心がける事って言われたんですが・・・。
それにしても1から作れって鬼杉。ある程度の機能もったブラウザをいじれって言うならまだしも。
で、あたふたしてると期限が近づいてきて俺涙目みたいな・・・
0114デフォルトの名無しさん2007/09/23(日) 18:21:24
俺涙目みたいな・・・
0115デフォルトの名無しさん2007/09/23(日) 18:22:01
>>113
有料のライブラリとか使ったらあんたが困るでしょ?

講義で過去に作ったプログラムなどがあったらそれを
アップしてもらうのが話が早くて楽なんだけどな。
0116デフォルトの名無しさん2007/09/23(日) 18:22:44
そんなこと言ったって、俺涙目みたいな・・・
0117デフォルトの名無しさん2007/09/23(日) 18:23:31
やっぱり俺涙目みたいな・・・
0118デフォルトの名無しさん2007/09/23(日) 18:26:37
どうしても俺涙目みたいな・・・
0119デフォルトの名無しさん2007/09/23(日) 18:27:47
お前ら、俺涙目なのに、いじんな!
0120デフォルトの名無しさん2007/09/23(日) 18:27:55
っていうか、涙目みたいな
0121デフォルトの名無しさん2007/09/23(日) 18:30:06
>>115
なるほど、有料は確かに困ります。
講義で用意されたものは何もないのですが・・・。

一応自分でも色々と調べてみたのですが、IEコンポーネントを使うのが楽そうな感じでしたね。
ただ、VC++とかばかりでなかなか。Borlandじゃコンパイル出来なかったりしてもうワケワカラン状態です。
コンパイラはBorlandと書きましたが、実はこれは指定されてるわけではないです。学校のパソコンにはVisual Studio .netが
入ってますが、家にはBorlandを入れてます。さすがに有料はキツイって事で・・・。でも家でコーディングできないと不便なのでBorland。
0122デフォルトの名無しさん2007/09/23(日) 18:32:01
涙目みたいな・・・ってこんなにレスがつくとは思わなかった・・・
精神的な話だから、実際には泣いてないんだぜ。
0123デフォルトの名無しさん2007/09/23(日) 18:32:04
もうワケワカラン状態で、さすがに有料はキツイって事で・・・俺涙目みたいな・・・
0124デフォルトの名無しさん2007/09/23(日) 18:32:18
VC++EEでも入れればいいじゃん
01251092007/09/23(日) 18:34:54
>>124
一つのコンパイラで全部やろうって考え自体おかしいんですかね?
ノートなのであまり重たいのは入れたくないなと思ってBorlandにしてみました。
その後Turbo C++入れて、一気に重くなってげんなりしてます。

というか、コンパイラの違いってなんなんですか・・・どれがいいとかあるんですか?って質問はスレ違いですね
0126デフォルトの名無しさん2007/09/23(日) 18:35:26
ぐだぐだ質問してんじゃねえよ。
0127デフォルトの名無しさん2007/09/23(日) 18:35:57
>>125
スレ違いって分かってるんだったら、書き込むなよ。
0128デフォルトの名無しさん2007/09/23(日) 18:36:06
っていうか、俺涙目みたいな・・・
01291092007/09/23(日) 18:36:51
では黙って片付くのを待ちます。。。
涙目です。
0130デフォルトの名無しさん2007/09/23(日) 18:36:55
>>122
こいつアホだ。実際に泣いてるかどうかではなく、
そんなことを書き込むことを皆、からかってるのに。
0131デフォルトの名無しさん2007/09/23(日) 18:48:08
>>129
> そのページを表示する
って、一般的なサイト全て?
単純なボタンやフォーム程度なら自分でHTML解析してできるだろうけど、
そうじゃないならIEコンポやGecko使うしかないと思うよ
■ このスレッドは過去ログ倉庫に格納されています