ぼるじょあがC/C++の宿題を片づけますYO! 68代目 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
07/06/03 16:44:55
(・3・)エェー ぼるじょあですYO!
         わからない宿題を片づけますYO!

あなたが解けない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)

【前スレ】
ぼるじょあがC/C++の宿題を片づけますYO! 67代目
スレリンク(tech板)

2:(・3・) ◆3.JjF77I26
07/06/03 22:31:03
2get

3:ぼるじょあ ◆yBEncckFOU
07/06/05 06:39:48
(・3・) エェー 誰も書いてないYO!

4:デフォルトの名無しさん
07/06/05 19:15:15
@3行5列の二次元配列に15個の数字をランダムで選ぶ(ただし、必ず12を入れる)
A配列に入れられた数字を
B大きい順に配列に入れ直して示す。(バブルソートで)
C小さい順(バブルソートで)
Dprintfで12の行、列を出力
if,do,wihle習いました。ぼるじょあさん、お願いします(;_;)

5:ぼるじょあ ◆yBEncckFOU
07/06/05 19:40:21
>>4
URLリンク(kansai2channeler.hp.infoseek.co.jp)

(・3・) エェー ポインタを使ったYO

6:デフォルトの名無しさん
07/06/05 19:45:55
>>4ポインタはまだ習ってないです(;_;)

7:ぼるじょあ ◆yBEncckFOU
07/06/05 21:54:28
(・3・)アルェ〜そうなのかYO!ポインタの替わりに添え字から行と列を
(・3・)作ればいいと思うYO!

8:デフォルトの名無しさん
07/06/05 22:04:49
>>4
俺も作ってみたんでどうぞ。
ポインタ、for文、自作関数、未使用。
後、配列に馬鹿でかい数字を入れる意味がないと思ったから
配列に入れる数値が50を越えないようにしてある。


9:ぼるじょあ ◆yBEncckFOU
07/06/05 22:10:21
>>5
URLリンク(kansai2channeler.hp.infoseek.co.jp)

(・3・)エェーポインタを使わないようにしてみたYO!
(・3・)その代わり12の位置は大抵同じだYO!(乱数で12より小さい数があれば
    変わるYO)

10:デフォルトの名無しさん
07/06/05 23:40:44
>>8さん、>>9さん、どこにソースコードがあるのですか(;_;)?

11:ぼるじょあ ◆yBEncckFOU
07/06/05 23:50:45
>>10
(・3・) アルェ〜 >>9だけどリンクを踏んでYO!
(・3・) >>8は僕じゃないからわからないYO!

12:デフォルトの名無しさん
07/06/06 00:02:28
>>4です。すいません、問題で15個ランダムみたいなこと書いたんですけど、自分で決めます。例えば、15,23,54,69,8,5,4,52,5,12,11,29,58,73,65です。この数字でお願いします(;_;)

13:デフォルトの名無しさん
07/06/06 03:46:10
>>12
URLリンク(kansai2channeler.hp.infoseek.co.jp)

>>9のぼるじょあさんのを手直ししてみた。ついでにバグ取りしといた。

14:8
07/06/06 09:15:53
>>10
リンク貼り忘れてもうた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

15:デフォルトの名無しさん
07/06/06 14:55:57
リンクってパソコンからじゃないと無理ですか?

16:デフォルトの名無しさん
07/06/06 15:18:00
>>15
たぶん無理やね、っておまいPC持ってないのかYO!
親に言って安いノートで良いから買ってもらえYO!

<チラシの裏>
>>14のコード、time.hとすべき所をmath.hと書いてしまったのに
BCCでコンパイル出来たし、実行も出来た。一体どうなってんだ?
</チラシの裏>


17:デフォルトの名無しさん
07/06/06 18:59:21
いやパソコンあります。

18:デフォルトの名無しさん
07/06/06 19:07:41
>>4です。
みなさんありがとうございました。
ちなみに>>13さん
k=i/5
l=i%5
ってどういうことですか?

19:デフォルトの名無しさん
07/06/06 19:10:50
>>18
自分の持ってるテキスト読めば?

20:デフォルトの名無しさん
07/06/06 19:21:50
普通のテキストには載ってないんじゃないか?
まあ、バブルソートと多次元配列を考えればおのずと答えは出るよね。

>>17
持ってるならなら変な事聞くな。

21: ◆lIN/ESgxWw
07/06/06 21:10:48
[1]プログラミング
[2]1本の道に,食べ物が多数落ちている.
ランダムに動く動物が,それらを全て食べ尽くすと終了するようなプログラムを作成せよ.

<仕様>
「道」は要素数20程度の1次元配列で表現する.
「食べ物」は,上記配列の各要素に値1があればその場所に存在し,値0であればその場所には存在しないものとする.
「動物」は,1回の移動で配列中の1つ左または1つ右に移動できる.
「動物」の訪れた場所のエサは食べられたものとする.
「道のうち食べ物のない箇所」,「道のうち食べ物のある箇所」,「動物」は,それぞれ -, *, O で表現する.それらを横一列の文字で表示する.
繰り返し処理中は,毎回数十〜数百ミリ秒程度の時間,実行を一時停止させることで,状態の推移を見やすくする.
[3]OS:Linux
コンパイラ名:スイマセン、分かりません
言語:C言語
[4]できれば今日中にお願いします

他の掲示板で聞いたんですが、イマイチ回答が得られなかったのでこちらに
質問させていただきました。よろしくお願いします。

22:デフォルトの名無しさん
07/06/06 21:14:44
>>18
多次元配列はそのままでは一次元配列のようにリニアにはアクセスできないので
添え字を i から作り出す必要があるわけです。

23:デフォルトの名無しさん
07/06/06 21:56:59
>>22さん、ありがとうございます。

24:デフォルトの名無しさん
07/06/06 22:14:11
まあポインタを一次元配列に変換するとリニアにアクセスできるけどな。
この質問者はポインタを知らないらしいのでこれはなかった事に。

25:デフォルトの名無しさん
07/06/06 23:01:32
>>21の問題だけど、誰か毎回数十〜数百ミリ秒程度の時間,実行を一時停止
させるコード書けないか?それ以外は出来上がってから誰か挿入してくれ
URLリンク(kansai2channeler.hp.infoseek.co.jp)

26:デフォルトの名無しさん
07/06/06 23:10:31
>>25
void mysleep(long msec){
    static long mcount = -1;
    long i, j;

    if(mcount < 0){
        time_t check_time;
        check_time = time(NULL);
        while(check_time == time(NULL));
        check_time = time(NULL);
        for(mcount = 0; check_time == time(NULL); mcount++);
        mcount /= 1000;
    }

    for(i = 0; i < msec; i++){
        for(j = 0; j < mcount; j++){
            time(NULL);
        }
    }
}

27:デフォルトの名無しさん
07/06/06 23:30:12
>>4で多次元配列を一次元配列に入れ直して、また多次元配列に入れるにはどうしたらいいんですか?

28:デフォルトの名無しさん
07/06/06 23:56:04
>>27
”入れ直す"んじゃなくて”ポインタを付け替える”だけ。
ポインタを勉強してない人に説明すると長くなるから、これ位で勘弁。

29:デフォルトの名無しさん
07/06/07 00:13:43
>>25
thx

>>21
日付変わっちまったが、>>25のスリープ関数を組み込んで、へんなコメント消した.
URLリンク(kansai2channeler.hp.infoseek.co.jp)

30:29
07/06/07 00:15:01
アンカーミス>>25じゃなくて無くて>>26ね。

31:デフォルトの名無しさん
07/06/07 00:17:01
>>26
最低なsleepだな。いや寧ろ、sleepなんて名乗るのは烏滸がましい。

32:デフォルトの名無しさん
07/06/07 00:29:01
C言語が全然わらかないんですけど…皆さんは始めのころどうやって勉強しましたか?

33: ◆lIN/ESgxWw
07/06/07 00:51:55
>>29
どうもありがとうございました☆

34:デフォルトの名無しさん
07/06/07 01:03:57
標準関数に拘らなければ usleep(microsecond) @ unistd.h 使えばおk

35:デフォルトの名無しさん
07/06/07 01:41:37
>>31
同意。
むしろbusyだよなw

36:デフォルトの名無しさん
07/06/07 01:44:34
>>26 はシングルタスクOS時代の手法
linux だと >>34 使ったほうがいいと思う

37:デフォルトの名無しさん
07/06/07 08:14:41
#include<stdio.h>
void main(void)
{
int n,m,sum;
printf("整数nの入力==>");
scanf("%d",&n);
m = 0; sum = 0;
while(m < n){
sum+=++m;

}
printf("合計:%d\n",sum);
}

実行画面
整数nの入力==>5
合計:15

このプログラム文をdo〜while文に書き換えたやつにしたいのですがどうやればいいですか?



38:デフォルトの名無しさん
07/06/07 08:22:19
do{
if (m < n) break;
sum += ++m;
}while(1);

39:デフォルトの名無しさん
07/06/07 08:58:19
1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
長さ157以下の英数字,空白の並びからなる文字列を二つ入力し,
それぞれをa1, a2とする. a1が"abc",a2が"ab"の場合のように,
a2の先頭部分がa1の先頭部分に含まれるときは1を,そうでないときは0を値として
返す関数 int match(char *a1, char *a2);を作成しなさい.
配列宣言を除きすべてポインタを用いて処理すること.
文字列は157文字以下が入力されるものとし,文字列の長さに関するエラー処理を
する必要はない.
計算の手順としては,文字列の先頭から一文字ずつ一致するかどうかを比較する.
a2にあたる文字列中の比較対象となった文字が'\0'であれば,a2はa1に包含された
ものとして扱う.これ以外で比較時に,一文字でも一致しない場合があれば
包含されていないとして扱う.
この関数をもちいて,2つの文字列を与えたとき,一つ目の文字列の中に二つ目の
文字列が含まれている場合(この場合先頭が必ずしも一致していなくてもよいものとする)
には "一致"をさもなければ"不一致"を出力するプログラムを作成しなさい.

[3] 環境
 [3.1] OS:Windows
[4] 期限: 6月7日午前10:30
[5] その他の制限:

よろしくお願いいたします。

40:デフォルトの名無しさん
07/06/07 09:07:03
↑実行結果はこのようになります。
[home@C*LPC* ~/test]% ./test
ABC
AB
一致
[home@C*LPC* ~/test]% ./test
AB
ABC
不一致
[home@C*LPC* ~/test]% ./test
ABC
ABD
不一致
[home@C*LPC* ~/test]% ./test
ABC
BC
一致
[home@C*LPC* ~/test]%


41:デフォルトの名無しさん
07/06/07 10:55:45
>>32
最初、Cの入門サイト(KID's World)でやってたけど、もっと知りたくなって
Cの入門書(基礎C)を買った。それでも足りなくて独習Cで色々学んで
練習問題をこなした。最近はここで宿題の代行して腕を磨いてる。
簡単な練習問題をやって、徐々にステップアップしていけば、ここに投下される
宿題位はこなせるようになるよ。

42:デフォルトの名無しさん
07/06/07 12:39:38
授業単元:C言語
問題文(含コード&リンク):
今までやった内容:if・for文
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:while文
問題:複数件の整数を入力し、合計、件数、平均を求め表示しなさい
0が入力されたらデータの終了とし、合計、件数には反映しない実行画面
整数入力(0で終了)==>5
整数入力(0で終了)==>4
整数入力(0で終了)==>10
整数入力(0で終了)==>8
整数入力(0で終了)==>0
合計:27 件数:4 平均:6.8

今授業でやってる内容なんですがどうしてもわからないので何方か教えてください

43:デフォルトの名無しさん
07/06/07 15:46:06
>>42
何をお教えすればよろしいのでしょうか?。
#include<stdio.h>
int main(void)
{
int n;/*キーボードから入力された整数*/
int num;/*件数*/
int sum;/*合計*/
double ave;/*平均*/
num=0;sum=0;/*合計、件数を初期化*/
do{
printf("整数入力(0で終了)==>");
scanf("%d",&n);/*キーボードから整数nを受け取る*/
if(n != 0){/*0は合計、件数に含めないので、n≠0の時実行される*/
sum=sum+n;
num=num+1;
}
}while(n != 0);/*入力された数nが0で無い時は繰り返す。nが0ならループ終了*/
ave=(double)sum/num;/*平均の計算、整数同士の割り算だと小数点以下が切り捨てられるので
sumを(double)でdoubleにキャスト(一時的な型の変換)している。*/
printf("合計:%d 件数:%d 平均:%.1f",sum,num,ave); /*結果表示、%.1fで平均の値が
小数点以下1桁で表示されるようにしてある*/
return 0;
}

44:デフォルトの名無しさん
07/06/07 16:36:47
[1] 授業単元:プログラミングA

[2] 問題文(含コード&リンク): 2つの4行4列の行列が与えられたとき、その積を計算するプログラムをwhileループを用いて作成せよ。インクリメント演算子を使用すること。

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

[4] 期限: 2007年6月7日23:59まで

[5] その他の制限:

よろしくお願いします。

45:デフォルトの名無しさん
07/06/07 18:02:38
>>44
URLリンク(kansai2channeler.hp.infoseek.co.jp)

46:デフォルトの名無しさん
07/06/07 23:39:36
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上記プログラムを使い、アルファベットを大文字、
小文字両方を含むバージョンに変更しなさい。
(例) YZa → bcd
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC2005
[3.3] 言語: C++
[4] 期限:6月8日10:30まで
[5] その他の制限: なし

どうかよろしくお願いします

47:デフォルトの名無しさん
07/06/08 10:02:03
>>41さん、ありがとうございます。

48:デフォルトの名無しさん
07/06/08 10:03:45
>>45
ありがとうございました。

49:デフォルトの名無しさん
07/06/08 22:56:31
[1] 授業単元:基本プログラミング
[2] 問題文(含コード&リンク):
関数f(x)は次式で与えられる。
f(x)=x+x*x/4+x*x*x/9+……+xのn乗/n*n+……
上式右辺の無限級数は、第n項(xのn乗/n*n)の絶対値が最初に0.000001より小さく
なる項までの和で打ち切っても近似的には問題ないものとする。
x=0.1, 0.2, 0.3, 0.4, …, 0,9, 1におけるf(x)の値を計算して表示するプログ
ラムをつくれ。
[実行例]
f(0.1)=0.202618
f(0.2)=0.411004
f(0.3)=0.626129
f(0.4)=0.849283


f(0.9)=2.19971
f(1)=2.64393

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C++
[4] 期限:6月10日まで
[5] その他の制限:
do while文でお願いします。

50:デフォルトの名無しさん
07/06/08 23:00:32
>>49
マルチ(・A ・)イクナイ!

51:デフォルトの名無しさん
07/06/08 23:14:24
[3]宿題ってか
3つの引数使いたいんですが
visualC++で
error C2660: 'initFld' : 関数に 3 個の引数を指定できません。
てエラーが… パソコン全くダメなんでやヴぁいです(’д`)
死ぬ




52:デフォルトの名無しさん
07/06/08 23:19:11
(・3・)エェー 死ねYO

53:デフォルトの名無しさん
07/06/08 23:33:58
冷たい(◎д◎)!
教えて!

54:デフォルトの名無しさん
07/06/09 00:10:45
>>49

#include <cstdio>

double f(double x) {
double y=x,z=1,i=3,r=0,n;
do {
n=y/z;
r+=n;
z+=i;
i+=2;
y*=x;
} while(n>=0.000001);
return r;
}

int main(void) {
int i=1;
do {
printf("f(%.1f)=%f\n", i/10.0, f(i/10.0));
} while(++i<=10);
return 0;
}


55:デフォルトの名無しさん
07/06/09 00:34:00
[1] 授業単元:C言語によるプログラミング入門
[2] 問題文(含コード&リンク):
演習課題1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。考察も書くこと。
int myreturn(){
return 0;
return 1;
}

演習課題2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ。

int myfactorial1(int i){
int j,a;
if (i<0) return (0);
if (i<2) return (1);
a=1;
for(j=1;j<i+1;j++)
a=a*j;
return a;
}

int myfactorial2(int i){
if (i<0) return 0;
if (i<2) return 1;
return (i*myfactorial2(i-1));
}

[3] 環境
 [3.1] OS: Windows
 [3.2] Cygwin 1.5.24-2
 [3.3] 言語:C言語
[4] 期限:6月13日の水曜日まで
[5] その他の制限:今日はじめてreturn文を習いました。そのレベルでよろしくお願いします

56:54
07/06/09 10:48:28
しもた
using namaspace std;
を書き忘れた。

57:デフォルトの名無しさん
07/06/09 13:31:42
>>56
別にいらんやん

58:デフォルトの名無しさん
07/06/09 15:18:27
>>57
規格上は必要

59:デフォルトの名無しさん
07/06/09 15:36:26
>>58
は??
<cstdio>内を読んでみることをお勧め

60:デフォルトの名無しさん
07/06/09 16:44:11
>>56-59
規格が読み難い文章だけど>>56は誤りっぽいな

「JISX3014 附属書D(規定) 互換性」より抜粋

D.5 標準Cライブラリヘッダ
標準Cライブラリとの互換性のため、C++標準ライブラリは、表100に示す18個
の言語Cのヘッダを提供している。

表100 言語Cのヘッダ
<assert.h> <iso646.h> <setjmp.h> <stdio.h> <wchar.h>
<ctype.h> <limits.h> <signal.h> <stdlib.h> <wctype.h>
<errno.h> <locale.h> <stdarg.h> <string.h>
<float.h> <math.h> <stddef.h> <time.h>

それぞれのCヘッダは、その名前をnameとしたとき"name.h"の形式をしている。
それぞれに対応して、標準C++ライブラリの名前空間内に置かれた"cname"とい
うヘッダが、名前空間stdの名前空間有効範囲の中にも置かれ、その後に明示的
に《using指令》(7.3.3)が指定されているかのように振る舞う。


ヘッダ<cstdlib>は、名前空間stdの中に、その宣言及び定義を提供する。
ヘッダ<stdlib.h>は、C標準と同じく、これらを大域的名前空間でも利用
可能にする。

61: ◆wSaCDPDEl2
07/06/09 17:18:57
別のところが険悪ムードで少しまずいと思ったのでお答えいただけませんか/

[1] 授業単元: コンピュータ・C言語
[2] 問題文:
ファイルからデータを読み込み、pointが85以上、gpa<2,0のデータだけを表示しなさい。

続いて、(1)ファイルの内容を全て表示し、次に上記の条件に合致するデータだけを別ファイルに書き出し
さらにこのファイルを読み込んで表示せよ。

最後に、point、gpaの平均を計算して同じファイルのデータ後に書き出し、そのファイル内容を読み込み表示せよ。
(つまり2.3,4を表示)
x-file.tex↓

1 alice 48 3.6
2 bob 88 3.2
3 charlie 69 1.8
4 dick 100 3.9
5 bomb 3 0.4
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ: Visual Studio 2005またはgcc
 [3.3] 言語: C++
[4] 期限: 6/11 まで
[5] その他の制限: 配列でdefineで文字を定義して使うか、for loopで製作する

62:ぼるじょあ ◆hZ8e4Wjqvw
07/06/09 19:47:16
>>61
(・3・) エェー 「このファイル」っていうのは「ファイル」?「別ファイル」?
          「同じファイル」ってどのファイル?
          問題の意味がよく分からないYO!
          それぞれのファイルに名前をつけてくれYO!
          ファイルのフォーマットが分からないYO!
          point および gpa の取り得る値の範囲も分からないYO!

例)
ファイルA を読み込み、上記の条件に合致するデータだけを ファイルB に書き出す
ファイルB の内容を標準出力に出力する
ファイルA 中の point, gpa それぞれの平均値を計算して、ファイルA の最後に追記する
ファイルA の内容を標準出力に出力する

63:ぼるじょあ ◆hZ8e4Wjqvw
07/06/09 20:02:30
>>46
(・3・) エェー 期限過ぎてるから解いても無駄かNA?

64: ◆wSaCDPDEl2
07/06/09 20:17:20
すいません分けて書いたほうがよかったかもしれません
(問題1)X-fileを読み込んでpointが85以上、gpa<2,0のデータだけを表示しなさい。
(つまり2.3,4を表示するようにしなさい)というもので

(問題2)続いて、1・x-fileの内容を全て表示する。2・問題1の条件に当てはまるものを別のファイル(Bファイル)に書き込む。3・Bファイルを読みこんで表示する。

(問題3)X-FILEを読みこんでpointとgpaの平均を計算して同じファイルの元のデータの後に書き出し、さらにそのファイル内容を表示。
(x-fileに平均を書き、平均が追加されたx-fileを表示せよ)

x-file
1 alice 48 3.6
2 bob 88 3.2
3 charlie 69 1.8
4 dick 100 3.9
5 bomb 3 0.4

わかりにくくてすみませんでした。

65: ◆wSaCDPDEl2
07/06/09 20:19:27
書き忘れました。x-fileはメモ帳で適当に(先生が)作ったテキストファイル(.tex)です。

66:ぼるじょあ ◆hZ8e4Wjqvw
07/06/09 20:47:45
>>61
(・3・) エェー どれが point で どれが gpa なのか分からんYO!
          合致するデータっていうのは 1 行丸ごとかYO!
          なんで 5 が表示されないんだYO!

67: ◆wSaCDPDEl2
07/06/09 20:59:53
何度も言葉が足りずにすみません。
pointは(多分)名前の後のものでgpaは(多分)小数点ついてるやつです。
合致するデータは一行丸ごとだと思います。
5が表示されないのは・・・ミスでしょうか。2.3.4と書いてあるので適当に5を条件外の数値にしてみたのでそれでお願いします。

1 alice 48 3.6
2 bob 88 3.2
3 charlie 69 1.8
4 dick 100 3.9
5 bomb 3 2.4

つーか問題がわかりにくいですね。今度抗議してみます。すいませんでした。

68:ぼるじょあ ◆hZ8e4Wjqvw
07/06/09 21:57:33
>>61 (・3・) エェー CしかできないからC++っぽくするなら自分で書き換えてくれYO!
#include <cstdio>
void file_display(char *filename){
    FILE *fp;
    int moji;
    if((fp=fopen(filename, "r"))==NULL) return;
    while((moji=fgetc(fp))!=EOF) fputc(moji, stdout);
    fclose(fp);
}
int main(void){
    char one_line[1024], *fname_in="x-file", *fname_out="Bファイル";
    FILE *fp_in, *fp_out;
    double point, gpa, point_sum=0.0, gpa_sum=0.0;
    int num=0;
    file_display(fname_in); // q2 only
    if((fp_in=fopen(fname_in, "r+"))==NULL) return 1;
    if((fp_out=fopen(fname_out, "w"))==NULL) return 2; // q2 only
    while(fgets(one_line, sizeof(one_line), fp_in)){
        if(sscanf(one_line, "%*d %*s %lf %lf", &point, &gpa)!=2) continue;
        num++; point_sum+=point; gpa_sum+=gpa; // q3 only
        if(point>=85 || gpa<2.0){
            fputs(one_line, stdout); // q1 only
            fputs(one_line, fp_out); // q2 only
        }
    }
    if(num>0) fprintf(fp_in, "-1 average %f %f\n", point_sum/num, gpa_sum/num); // q3 only
    fclose(fp_in);
    fclose(fp_out); // q2 only
    file_display(fname_out); // q2 only
    file_display(fname_in);
    return 0;
}

69: ◆wSaCDPDEl2
07/06/10 00:10:22
問題1,2,33つともやっていただけたんですか。ありがとうございます!
ファイルが見つからないというエラーが出たんですが、同じフォルダ内に入れないとダメとかいう制限でもあるのでしょうか?

70:homoじょあ ◆5OLf4yFnuM
07/06/10 00:27:40
(・3・) エェー 新スレおつんつんん
          C++っぽくだとこんなんかNA?
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
using namespace std;

#define filename "x-file.txt"

int main(){
fstream file;
string str;
int point = 0;
double gpa = 0.0;
file.open( filename, ios::in );
while( !file.eof() ){
char buf[256];
getline(file, str);
istringstream is( str );
int p; double g;
is >> buf >> buf >> p >> g;
point += p;
gpa += g;
}
file.close();
file.open( filename, ios::app );
file << point /5 << " " << gpa /5 << endl;
file.close();
return 0;
}

71:デフォルトの名無しさん
07/06/10 01:30:40
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
(問題1)点1が79以上、または点2が20以下のものを行ごと表示しなさい
(問題2)点1、点2の平均を計算して表示しなさい

    点1  点2
1、A君 30  49
2、B君 90  69
3、C君 60  12 
4、D君100  88
5、E君 30  67
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C
[4] 期限: 6/12
[5] その他の制限:配列を使って行ってください。


72:デフォルトの名無しさん
07/06/10 01:32:30
ちょっと問題2の分が悪かったです。
点1の平均と点2の平均を出し、表示しなさいでした。すみません。

73:デフォルトの名無しさん
07/06/10 01:35:13
何度もすみません。私バカなんでなるべく簡単に書いてもらえないでしょうか?
スレ汚し失礼しました。配列は勉強済みです。

74:homoじょあ ◆5OLf4yFnuM
07/06/10 04:33:31
>>71
(・3・) エェー こんなんでいい?

#include <stdio.h>

int main( void ){
char name[5][4] = {"A君", "B君", "C君", "D君", "E君"};
int score[5][2] = {{30, 49}, {90, 69}, {60, 12}, {100, 88}, {30, 67}};
double ave1 = 0.0, ave2 = 0.0;
int i;
for(i=0; i<5; i++){
if( score[i][0] >= 79 || score[i][1] <= 20 ){
printf( "%d、%s %d点 %d点\n", i+1, name[i], score[i][0], score[i][1] );
}
ave1 = score[i][0];
ave2 = score[i][1];
}
printf( "点1の平均:%f 点2の平均:%f\n", ave1 /5, ave2 /5 );
return 0;
}

75:デフォルトの名無しさん
07/06/10 04:46:35
>>74
char name[5][4]←これはよろしくないんでないかい?

76:homoじょあ ◆5OLf4yFnuM
07/06/10 04:48:15
(・3・) アルェー ダメ・・・だっけ?

77:デフォルトの名無しさん
07/06/10 04:51:12
>>76
規格で+1まで保証されてたか忘れたけどいちお、char[5][5]がいいんじゃない?って思っただけ。

78:デフォルトの名無しさん
07/06/10 04:52:07
>>77
すまん、ABCDEが全角に見えたんだ・・・
スルーしてくれ・・・

79:homoじょあ ◆5OLf4yFnuM
07/06/10 04:53:53
(;・3・) エェー 文字列って2バイト余計に必要な場合あるのかYO

80:homoじょあ ◆5OLf4yFnuM
07/06/10 04:59:40
>>78
(・3・) エェー よかったびっくりしたYO

81:ぼるじょあ ◆hZ8e4Wjqvw
07/06/10 12:10:49
>>74
(・3・) エェー 実行してみたら平均点が低すぎるYO!

82:デフォルトの名無しさん
07/06/10 14:26:02
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
ファイルからデータを読み込み、1が80以上、または2が20以下のデータだけを行ごと表示しなさい

Aファイル↓
      1  2
1、A 33  49
2、B 88  69
3、C 70  12 
4、D 99  88
5、E 55  67
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C
[4] 期限: 6/14
[5] その他の制限:上のほうに殆どそっくりな問題が出ているのですがわからないので・・



83:homoじょあ ◆5OLf4yFnuM
07/06/10 14:34:22
>>81
(・3・) エェー ave1 += のところが ave1 = になてたYO

84:デフォルトの名無しさん
07/06/10 14:37:20
すいません。参考文献を乗せるのを忘れました。

次のプログラムは、hairetu-filesと呼ばれるファイルに格納した
3つのデータを読み込んで合計した値を求めて出力しています。
#include<stdio.h>
#define N 3
int main(void){
FILE *fp;
int i,date,sum=0;

if((fp=fopen("hairetu-files","r"))==NULL){
puts("File Open Error"); return 0;}
for(i=0;i<N;i++){
fscanf(fp,"%d",&date);
sum+=data;
}
fprintf(stdout,"合計は%dです\n",sum);
fclose(fp);
return 0;
}

hairetu-files
121
232
341

この途中の部分を>>82の条件になるように書き換えれば出来るらしいですが・・・
どうかこれを参考にお願いします



85:homoじょあ ◆5OLf4yFnuM
07/06/10 20:07:50
(・3・) エェー まぁこんなんで
#include <stdio.h>
#define filename "A.txt"
#define N 5

int main( void ){
FILE *fp;
int i, sum1 = 0, sum2 = 0, data1, data2;
char buf[256];
if( (fp = fopen( filename, "r")) == NULL){
printf( "File Open Error");
return 0;
}
while( fgets( buf, 256, fp) != NULL){
sscanf( buf, "%*s %d %d", &data1, &data2);
sum1 = sum1 + data1;
sum2 = sum2 + data2;
if(data1 >= 80 || data2 <= 20){
printf( "%s", buf);
}
}
printf( "点1の平均:%d\n点2の平均:%d\n", sum1 /N, sum2 /N);
fclose( fp );
return 0;
}

86:デフォルトの名無しさん
07/06/10 20:30:00
>>82です。他の人のもこなしているのにわざわざありがとうございました。
データを読み込むことは出来たのですが実行した際全部出てきてしまい
条件の結果とは一致しませんでした・・・

87:homoじょあ ◆5OLf4yFnuM
07/06/10 20:46:45
(・3・) アルェー 読み込みファイルの中身はどんなん?

88:デフォルトの名無しさん
07/06/10 20:49:24
      1  2
1、A 33  49
2、B 88  69
3、C 70  12 
4、D 99  88
5、E 55  67

が読み込みファイルの中身です。これが全て表示されてしまうのです。

89:homoじょあ ◆5OLf4yFnuM
07/06/10 20:54:57
(・3・) アルェー 全角スペースですかYO

ファイルを・・
     1 2
1、A 33 49
2、B 88 69
3、C 70 12
4、D 99 88
5、E 55 67

にして見てくださいYO
ソースもちょい直すYO

90:homoじょあ ◆5OLf4yFnuM
07/06/10 20:55:51
#include <stdio.h>
#define filename "A.txt"
#define N 5

int main( void ){
FILE *fp;
int i, sum1 = 0, sum2 = 0, data1, data2;
char buf[256];
if( (fp = fopen( filename, "r")) == NULL){
printf( "File Open Error");
return 0;
}
if( (fgets( buf, 256, fp)) == NULL)return 0;
while( fgets( buf, 256, fp) != NULL){
sscanf( buf, "%*s %d %d", &data1, &data2);
sum1 = sum1 + data1;
sum2 = sum2 + data2;
if(data1 >= 80 || data2 <= 20){
printf( "%s", buf);
}
}
printf( "点1の平均:%d\n点2の平均:%d\n", sum1 /N, sum2 /N);
fclose( fp );
return 0;
}

91:デフォルトの名無しさん
07/06/10 21:04:36
ありがとうございます。半角にしてやってみたところやはりなぜか5番が表示されてしまうのです。
1番は消えました

92:デフォルトの名無しさん
07/06/10 21:31:31
できましたよおおおおおおおおおおhomoじょあさんありがとうございます!!

93:homoじょあ ◆5OLf4yFnuM
07/06/10 21:40:30
(・3・) エェー そりは良かったお
          結局なんで5番はでてたのかお

94:デフォルトの名無しさん
07/06/10 21:44:34
1、
2、
3、
4、
5、   を小文字のまま書いていたのが悪カッタっぽいです。データは自分で作ったものなんで大文字でかいたら
        おーけーでした。

95:デフォルトの名無しさん
07/06/10 21:45:22
適当すぎw

96:homoじょあ ◆5OLf4yFnuM
07/06/10 22:01:22
>>94
(・3・) エェー よくわからんけどそうゆうことかYO

>>95
(・3・) アルェー がっこの宿題こんなもん〜

97:デフォルトの名無しさん
07/06/11 19:39:09
【質問テンプレ】
[1] 授業単元:Cプログラミング実習
[2] 問題文(含コード&リンク):
オリジナルプログラムの作成
下記要綱を満たしていればどんなプログラムでも問題ありません
@文は最低50以上(;で終わる文のみカウント)
A2次元配列、マクロを使用
Bif,while,for文の使用
C自作関数又は引数を使用。戻り値は問いません
Dヘッダファイルを使用
E誰が見ても分かりやすいプログラムにすること(/*説明*/)


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VB.NET2003
 [3.3] 言語: C
[4] 期限: 2007年6月15日
[5] その他の制限:ポインタ、リスト使用不可


98:デフォルトの名無しさん
07/06/11 19:48:55
>>97
マルチ乙

99:デフォルトの名無しさん
07/06/12 21:00:06
2次元配列[3][5]に0〜99の数のうちから15個の数字をランダムに選び(30は必ずどこかに入れる)次のプログラムを作れ
配列に格納された数値を
a,大きい順に並べる(バブルソートで)
b,小さい順に(バブルソートで)
c,30の場所を配列の行番号と列番号をprintfで出力せよ

お願いします。

100:82
07/06/12 21:58:35
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
ファイルからデータを読み込み、まずファイルの内容を全て表示し、
1が80以上、または2が20以下のデータだけを別のファイルに書き出しなさい。(別ファイルは適当でよい)
そしてこのファイルを読みこんで表示しろ

Aファイル↓
      1  2
1、A 33  49
2、B 88  69
3、C 70  12 
4、D 99  88
5、E 55  67
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C
[4] 期限: 6/14
[5] その他の制限:上のほうに殆どそっくりな問題が出ているのですがわからないので・・

この前お世話になったものです。自分で解こうとしたけれどいくらやっても無理なので
知識豊富な皆様の力を分けてください。お願いします。

101:デフォルトの名無しさん
07/06/12 23:44:42
>>99
前に似たような問題が出てたから、それを改造すればいいんでない?
>>4>>12>>13を参照

102:デフォルトの名無しさん
07/06/13 20:57:16
[1] 授業単元:C++研究
[2] 問題文:
多次元配列を用いて自分の時間割を作成しコマンドプロンプトへ出力しなさい。
なお,履修データはプログラムに直接記述してよい。
また,時限名,曜日名のタイトルも出力すること。

配列などはいれてませんが出力すると、下記urlのcout文のような表示にするようです。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

枠は手書きでも構わないみたいです。
枠や時間割りはすべては埋めてませんが、時間割の枠と全ての時間割り枠内に
科目名、担当の先生の名前、講義室の番号室の3つと
それプラス曜日名と時限名を多次元配列で出力表示します
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語: C++
[4] 期限: ([2007年6月15日11:00まで]
[5] その他の制限:特になし
よろしくお願いします

103:デフォルトの名無しさん
07/06/14 01:03:47
[1] 授業単元:C++研究
[2] 問題文:

ボーリングのスコア計算をするプログラムを作成しなさい
(入力:スコア, 配列データ:スコア表, 出力:入力毎にスコア表を表示させる)

URLリンク(hmets.hp.infoseek.co.jp)
↑のように表を作成して表示するみたいです。10回戦目は3投、投げます
氏名の部分はいりません。

[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語: C++
[4] 期限: ([2007年6月16日11:00まで]
[5] その他の制限:特になし
よろしくお願いします

104:デフォルトの名無しさん
07/06/14 12:48:10
アップローダーのNo.4248に問題をアップしましたので、
よろしくお願いします。

105:デフォルトの名無しさん
07/06/14 13:29:46
[1] 授業単元:C言語
[2] 問題文: 次の条件を満たす関数を作りなさい。
1. 配列の要素p[n]とp[n+1]を比較し小さいほうを前にずらす。
2. 番兵-1が出たら処理を終了させる。
3. 1、2を要素の数だけ繰り返す。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:microsoft Visual C++ .NET 2005 , borland C++ compiler5.5 ほか
 [3.3] 言語: CまたはC++
[4] 期限: 2007年06月28日13:00まで
[5] その他の制限:メールでの提出も可。ただし、他人のコピーは不可。

106:デフォルトの名無しさん
07/06/14 15:57:37
授業単元:C言語
環境:if文・for文・while文・do〜while文・switch〜case文
OS:Windows
コンパイラ名とバージョン:borland
言語:C
テーマ:数値配列の操作
配列[8]に整数を入力し、以下のような表示をしなさい
実行画面
整数入力[0]==>4
整数入力[1]==>3
整数入力[2]==>8
整数入力[3]==>6
整数入力[4]==>1
整数入力[5]==>5
整数入力[6]==>2
整数入力[7]==>7



107:wauwau
07/06/14 18:41:47
演習課題1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。考察も書くこと。

int myreturn(){
return 0;
return 1;
}

演習課題2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ。

int myfactorial1(int i){
int j,a;
if (i<0) return (0);
if (i<2) return (1);
a=1;
for(j=1;j<i+1;j++)
a=a*j;
return a;

}


int myfactorial2(int i){
if (i<0) return 0;
if (i<2) return 1;
return (i*myfactorial2(i-1));
}



108:デフォルトの名無しさん
07/06/14 19:08:33
>>107

>>1くらい読めカス
URLリンク(kansai2channeler.hp.infoseek.co.jp)


109:wauwau
07/06/14 19:18:31
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。
[3] 環境            2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 )
 [3.3] 言語: (C)
[4] 期限: ([2007年6月14日)
[5] その他の制限: 特になし

よろしくお願いします



110:wauwau
07/06/14 19:23:21
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 演習課題1:次の関数がどのような値を返すか確かめるプログラム(main関数)を作成し実行せよ。考察も書くこと
int myreturn(){
return 0;
return 1;
}
演習課題2:次の二つの関数が同じ働きであることを理解させるプログラム(main関数)を作成し実行せよ
int myfactorial1(int i){
int j,a;
if (i<0) return (0);
if (i<2) return (1);
a=1;
for(j=1;j<i+1;j++)
a=a*j;
return a;

}

int myfactorial2(int i){
if (i<0) return 0;
if (i<2) return 1;
return (i*myfactorial2(i-1));
}
[3] 環境            
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 )
 [3.3] 言語: (C)
[4] 期限: ([2007年6月14日)
[5] その他の制限: 特になし
ごめんなさい ここに書き込むのが初めてで様式を知りませんでした。。
よろしくお願いします

111:デフォルトの名無しさん
07/06/14 19:27:29
>>110
>>108

112: ◆ba6YufWRwU
07/06/14 20:02:28
【質問テンプレ】
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): int型配列データaに100,200,300,400の値を初期設定し、それらの
値の和WAを求めて、aのそれぞれの値と和WAを求めて出力するための
プログラムを作成せよ。

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン: microsoft Visual C++ .NET 2005
 [3.3] 言語:C
[4] 期限: ([07年6月14日24時まで]
[5] その他の制限:特になし
よろしくお願いします



113:デフォルトの名無しさん
07/06/14 20:11:01
#include <stdio.h>
int main(void) {
int i,WA;
int a[4] = {100,200,300,400};
WA = 0;
for(i=0;i<4;i++) WA += a[i];
for(i=0;i<4;i++) printf("a[%d] = %d\n",i,a[i]);
printf("WA = %d\n",WA);
return 0;
}

114:デフォルトの名無しさん
07/06/14 20:45:17
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):

URLリンク(kansai2channeler.hp.infoseek.co.jp)
上記プログラムの構造体Personに
性別(int,0(女),1(男))を追加しなさい。
例の性別は適当で良い。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限: 07年6月15日10時まで
[5] その他の制限:特になし

お願いします。


115:homoじょあ ◆5OLf4yFnuM
07/06/14 21:59:55
>>106
#include <stdio.h>

int main(void){
int num[8] = {4, 3, 8, 6, 1, 5, 2, 7};
int i;
for(i=0; i<8; i++){
printf("整数入力[%d]==>%d\n", i, num[i]);
}
return 0;
}

116:homoじょあ ◆5OLf4yFnuM
07/06/14 22:25:02
>>102
(・3・) 適当な上に汚い

URLリンク(kansai2channeler.hp.infoseek.co.jp)

117:デフォルトの名無しさん
07/06/14 22:47:00
>>105
#include<string.h>

void sub(char *p)
{
int i,n;
int LEN=strlen(p);
char temp;

for( i=0; p[i] != '0'; i++) {
for ( n=0; n<LEN-2; n++) {
if ( p[n] > p[n+1] )
{
temp = p[n];
p[n] = p[n+1];
p[n+1] = temp;
}
}
}

}



118:homoじょあ ◆5OLf4yFnuM
07/06/14 22:54:02
>>114
#include <stdio.h>
#define N 256+1
struct Person{
char name[N];
int age;
int sex;
};
void main(void){
struct Person P[]={{"花咲爺",64, 1},{"桃太郎", 5, 1},{"金太郎",12, 1},{"浦島太郎",41, 1}};
struct Person tmp;
int n=sizeof(P)/sizeof(P[0]);
for(int i=0; i<n; i++){
for(int j=n-1; j>i; j--){
if(P[j].age>P[j-1].age){
tmp=P[j];P[j]=P[j-1];P[j-1]=tmp;
}
}
}
printf("登場人物\n");
for(int i=0; i<n; i++) printf("名前=%s\t年齢=%3d\t性別=%s\n",P[i].name,P[i].age,P[i].sex == 0 ? "女" : "男");
}


119:デフォルトの名無しさん
07/06/15 02:01:25
>>99お願いします。>>4>>12>>13みてもわかんないんで…

120:デフォルトの名無しさん
07/06/15 02:10:21
誰が何をかいてもお前にはわかんないよ。

121:デフォルトの名無しさん
07/06/15 12:25:30
>>116 ありがとうございます、凄く助かりました。

122:デフォルトの名無しさん
07/06/15 12:54:32
URLリンク(park1.wakwak.com)
ボーリングのスコア計算の解説を見つけたので、一応貼り付けておきますね
よろしくお願いします。
>>103

123:デフォルトの名無しさん
07/06/15 13:01:47
URLリンク(next1.cc.it-hiroshima.ac.jp)
C++言語の解説を見つけたので、一応貼り付けておきますね
よろしくお願いします。
>>122

124:依頼者
07/06/16 19:10:03
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):
(1)登録番号"int no"と名前"char *name"と"int age"を含む構造体person型の配列を定義し
初期化せよ。なお、最後のデーダの名前にはNULLを入れておく。登録番号は入力順に1,2,3,4,5
とする。配列の先頭アドレスを目指す構造体person型のポインタは引数として与え、データを年齢順に
並び替える関数を作成せよ

(2)登録番号"int no"と名前"char *name"と"int age"を含む構造体person型の配列を定義し
初期化せよ。なお、最後のデーダの名前にはNULLを入れておく。登録番号は入力順に1,2,3,4,5
とする。そして配列の先頭アドレスを目指す構造体person型のポインタと参照したい人の登録番号を引数として
その名前年齢を表示する関数を作成せよ


[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:visual studio.net
 [3.3] 言語:C++
[4] 期限: 07年6月19日まで
[5] その他の制限:特になし

よろしくお願いします。

125:デフォルトの名無しさん
07/06/17 00:20:50
[1] 授業単元:C++
[2] 問題文:

新しい型(設計図)として,「人間」型と「動物」型を設計(新しい型(設計図)は,structでmain関数の外で記述すること,
要素は適時考えること)し,main関数で上記の型(設計図)の変数を配列で2つづつ宣言(生成)した後,
その変数の要素に適当な初期値を格納しなさい(関数を用いること)。最後に,
main関数で上記で生成した変数の要素をすべてコマンドプロンプトに出力しなさい(関数を用いること)。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VISUALSTUDIO2003
 [3.3] 言語: C++
[4] 期限: ([2007年6月18日00:00まで]
[5] その他の制限:ないです

どうぞよろしくおねがいします




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

4341日前に更新/401 KB
担当:undef