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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2006/05/18(木) 02:14:39
>>951
えっと優先度のことでよかったでしょうか?
一応自分は6×6のマスに

  234432
  346632
  468832
  468832
  346643
  234432

というように優先度を決めてやってます。

ただこれをどう活かせばいいのかで困っていて…
953デフォルトの名無しさん:2006/05/18(木) 02:30:11
>>943
できれば問題文をそのまま載せて欲しい。
優先度の使い方がいまいち分からん。
954デフォルトの名無しさん:2006/05/18(木) 02:42:07
>>953
問題文を載せたいところなんですが、
この宿題は初めから口頭で伝えられただけのもので明確な決まりはないんです。
つまり条件さえ満たせばどのようにやってもいいみたいです…
優先度の解釈も基本的にはやる人任せみたいな感じでした…すいません。
955デフォルトの名無しさん:2006/05/18(木) 03:01:25
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
最初に与えた数に従って、以下の例のように表示するプログラムを作成せよ。ただし、変数は1個しか使えない。
 
<実行例1>
数(整数)を入力してください:43
43:39
42:40
41:41
40:42
39:43

<実行例2>
数(整数)を入力してください:10
10:6
9:7
8:8
7:9
6:10


[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Visual stdio.net 2003
 [3.3] 言語: C
[4] 期限: 06/05/22
[5] その他の制限: printf・scanf・算術演算子・代入演算子・比較演算子まで習いました。
  ポインタはまだ習ってません。scanfにおいて%s以外のときは必ず付けろと習っただけです。
956デフォルトの名無しさん:2006/05/18(木) 03:21:51
#include <stdio.h>

int main(){
int a;
printf("数(整数)を入力してください:");
scanf("%d", &a);

printf("%d:%d\n", a, a - 4);
printf("%d:%d\n", a - 1, a - 3);
printf("%d:%d\n", a - 2, a - 2);
printf("%d:%d\n", a - 3, a - 1);
printf("%d:%d\n", a - 4, a);
return 0;
}
957デフォルトの名無しさん:2006/05/18(木) 03:24:45
>>956さん
ありがとうございます
958デフォルトの名無しさん:2006/05/18(木) 03:33:27
>>943
バックトラック中に優先度の低い方に行っていいの?
959デフォルトの名無しさん:2006/05/18(木) 03:45:38
>>958
常に優先度の高い方に行かないとダメかと思います。
960デフォルトの名無しさん:2006/05/18(木) 04:00:26
>>959
だとすると>>952の優先度設定だと解けない
961デフォルトの名無しさん:2006/05/18(木) 04:10:44
>>943
問題の意味誤解しとるかもしれんがこういうこと?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1914.txt

あと次スレよろ(950だよな?)
962デフォルトの名無しさん:2006/05/18(木) 08:25:10
C言語/C++言語の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/
963billy:2006/05/18(木) 09:16:31
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
引数のファイルに含まれる文字列を、カンマを区切りとして単語に分けて
出力するプログラムを作成する。
実行例:
% cat source
This,is,source.
end.
% gcc -o filebreak kadai.c
% ./filebreak source
-- Line 1 --
Field 1: This
Field 2: is
Field 3: source
-- Line 2 --
Field 1: end.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 5月19日

964デフォルトの名無しさん:2006/05/18(木) 13:19:25
>>963
#include <stdio.h>
#include <string.h>

int
main()
{
char buf[BUFSIZ], *ptr, *cp;
int line, field;

for (line = 1; fgets(buf, sizeof(buf), stdin); line++) {
buf[strlen(buf) - 1] = '\0';
printf("-- Line %d --\n", line);
for (field = 1, cp = buf; ptr = strtok(cp, ","); field++) {
printf("Field %d: %s\n", field, ptr);
cp = NULL;
}
}
return 0;
}
965デフォルトの名無しさん:2006/05/18(木) 15:58:32
いきなりすいません。
ちょっとお聞きしたいことがあって書き込みました。
今ファイル処理をやっていて、xxx.datファイルを読み込むことはできたのですが、そこから自動的にxxx.pgmを出力するやり方がわかりません。
名前を固定してしまえばできるのですが、自動的にってのがわからないので、教えてください。
お願いします。
966デフォルトの名無しさん:2006/05/18(木) 16:26:23
967デフォルトの名無しさん:2006/05/18(木) 16:35:33
>>965
文字列fnameの後ろから3文字を"pgm"に置き換えるすさまじく単純な方法w
strcpy( fname + strlen(fname) - 3, "pgm");
968デフォルトの名無しさん:2006/05/18(木) 17:07:40
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1915.txt
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2006年05月19日08:00
[5] その他の制限:特に無し

以上です、お願いします。
969デフォルトの名無しさん:2006/05/18(木) 17:30:57
# include <stdio.h>

double average(double sum, int num);

double average(double sum, int num)
{
  return sum / num;
}

int main(void)
{
  double input;
  int num = 0;
  double sum = 0;
  while(scanf("%lf", &input) == 1 && input > 0)
  {
    sum += input;
    num++;
  }
  if(num == 0)
    printf("No data.\n");
  else
    printf("average: %.3f\n", average(sum, num));
  return 0;
}
970969:2006/05/18(木) 17:35:13
ごめん。averageはこっちが正しい。
  return (double)(int)(sum / num * 1000 + 0.5) / 1000;
971デフォルトの名無しさん:2006/05/18(木) 17:38:34
average関数内では、平均を求めること以外のことを行ってはいけない.
972969:2006/05/18(木) 17:41:38
>戻り値は平均(合計を回数で割った数の小数点以下4桁目を四捨五入したもの)とする.
とあるから、四捨五入も平均を求める作業に含まれると思うが。
973デフォルトの名無しさん:2006/05/18(木) 18:44:20
>>970さん
ありがとうございました
サンプルプログラムでも、四捨五入をしていたのでOKです。
974デフォルトの名無しさん:2006/05/18(木) 19:15:25
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
キーボードから0以上の整数を1つ読込み、
入力した数と同じ個数の文字'+'を一行に表示するプログラムを作成しなさい。
*条件
負の数が入力された場合は、"error"とエラーメッセージを表示して終了する。
整数以外の入力は考えなくてよい。
0が入力された場合は、空行(何も文字が表示されていない行)を表示する。
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc4.00
 [3.3] 言語: C
[4] 期限:06年05月18日
[5] その他の制限:特に無し
以上ですよろしくお願いします。
975デフォルトの名無しさん:2006/05/18(木) 19:22:38
>>974
# include <stdio.h>

int main(void)
{
int n,i;
scanf("%d",&n);
if (n>=0){
for (i=0;i<n;i++){
printf("+");
}
}else{
printf("error!\n");
}
return 0;
}
976デフォルトの名無しさん:2006/05/18(木) 19:25:14
>>975
i要らなかった
977デフォルトの名無しさん:2006/05/18(木) 20:00:51
【質問テンプレ】
[1] 授業単元: 復習
[2] 問題文(含コード&リンク):
  キーボードから 行と列それぞれ数値1〜80までの値を入力し
  それ以外の物が入力されたら正しい入力がされるまで繰り返す。
  なお、入力した値分 #を描画し長方形を表示するものとする。
[3] 環境
 [3.1] OS:Windows 
 [3.2] Visual C++ 2005
 [3.3] 言語:C言語
[4] 期限:06年05月20日
[5] その他の制限:正しい値以外は絶対に通らないように製作。ファンクションや複数キーを含む
978デフォルトの名無しさん:2006/05/18(木) 20:16:10
【質問テンプレ】
[1] 授業単元: プログラミング演習I
[2] 問題文(含コード&リンク):
 住所録の作成と検索
 個人の情報を格納し、整理するプログラム
 扱う項目:姓、名、住所、電話番号(もちろん架空のもの)
[3] 環境
 [3.1] OS:Windows 
 [3.2] bcc
 [3.3] 言語:C言語
[4] 期限:06年05月21日0時
[5] その他の制限:姓、名で検索を行い、検索結果を標準出力に表示

よろしくお願いしますm(._.)m
979デフォルトの名無しさん:2006/05/18(木) 20:39:58
>>977
#include<stdio.h>

int main(void){
int i,j;
int n,m;

do{
scanf("%d",&n);
}while( !(n>0) && !(n>80) );

do{
scanf("%d",&m);
}
while( !(m>0) && !(m>80) );

for(i=0;i<n;i++){
for(j=0;j<m;j++){
printf("#");
}
printf("\n");
}

return 0;
}
980979:2006/05/18(木) 20:41:03
ごめん今コンパイルしたらバグってたorz
>>979
981デフォルトの名無しさん:2006/05/18(木) 20:45:37
>>979は多分↓にすれば動く

do{
scanf("%d",&n);
}while( (n<0) || (n>80) );

do{
scanf("%d",&m);
}
while( (m<0) || (m>80) );
982billy:2006/05/18(木) 20:53:27
>>964
どうやって実行するのですか?
983977 :2006/05/18(木) 21:07:23
本当にありがとうございます。間に合いそうです。
984デフォルトの名無しさん:2006/05/18(木) 21:42:44
[1] 授業単元:
[2] 問題文(含コード&リンク):
-------------------------------------------------------------------------------
次のような, 日付を表すクラスDateを実装してみてください.

Dateは, 年, 月, 日をそれぞれintの値で持っている.
Dateは, 1日日付を進めるメンバ関数を持っている.
Dateは, 1日日付を戻すメンバ関数を持っている.

始めは単にそれぞれの値をget(取得), set(設定)するメンバ関数と, 単なる値を書き変えるだけのメンバ関数を作れば良いでしょう.
それができたら, 各月の日数や閏年を考慮するものも作ってみましょう. また, あると便利そうなメンバ関数も追加してみましょう. (例えば日付の表示をするなど)

ヒント:閏年は, 「400で割り切れる」または「100で割り切れなくて4で割り切れる」年です
-------------------------------------------------------------------------------
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003
 [3.3] 言語:C++
[4] 期限:2006/5/26
985デフォルトの名無しさん:2006/05/18(木) 21:47:09
[1] 授業単元:プログラミングI
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1916.txt
キーボードから1つの実数を入力し(その数をaとする),
半径aの円の面積
辺の長さがaの正方形の面積
辺の長さがaの正方形からそれに対して内接する円の部分を除いた面積
(正方形の面積から内接する円の面積を引いたもの)
の3種類の面積を求めるプログラムを作成しなさい.
このとき, 円の半径を引数として与えたとき,面積を戻す関数double circle(double r)と,
正方形の辺の長さを引数として与えたとき,面積を戻す関数double square(double s)を 作成しなさい.
main関数部は,以下のプログラムの雛形に対して,
正方形に内接する円の部分を除いた面積を求めるための追加以外の変更を加えないこと. また,面積は小数点以下2桁で表示すること.

[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:gcc 4.0
 [3.3] 言語: C
[4] 期限:明日の朝9時まで
[5] その他の制限:無し

よろしくお願いします。
986デフォルトの名無しさん:2006/05/18(木) 21:47:50
>>985

記入漏れが有りました。
OSはLinuxです。
よろしくお願いします。
987デフォルトの名無しさん:2006/05/18(木) 22:11:14
■課題科目:C言語
■実行環境:Visual stdio.NET2003
■提出期限:5月19日
■内容  :次のプログラムを自己参照構造体を使うように変更せよ。
      プログラム長いので、UPしました。よろしくお願いいたします。
■プログラム:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1917.txt
988デフォルトの名無しさん:2006/05/18(木) 22:17:01
>>984
あなたの日本語が理解できません
989デフォルトの名無しさん:2006/05/18(木) 22:34:01
>>987
この問題は大学何年生くらいのレベルなんですか?
990デフォルトの名無しさん:2006/05/18(木) 22:48:16
>>989
2年生くらいです
991デフォルトの名無しさん:2006/05/18(木) 23:02:40
>985


double circle(double r)
{
/* ここを作成する */
return r * r * PI;
}

double square(double s)
{
/* ここを作成する */
return s * s;
}
include文の下に
#define PI 3.141592
っていれてね。

これが出来ないとこれからきついと思われ。
992デフォルトの名無しさん:2006/05/18(木) 23:07:42
>>987
自己参照構造体ってことは
リスト構造で動くようにしろと考えておkなのかな?
993デフォルトの名無しさん:2006/05/18(木) 23:11:09
>>992
OKです。
994デフォルトの名無しさん:2006/05/18(木) 23:24:01
うん、問題見たら線形リストはまったく関係ないね
問題見ないで言うもんじゃないね
サーチするときにでも使うのではないかと予想
995デフォルトの名無しさん:2006/05/18(木) 23:28:33
>>984
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1918.zip

#main関数は作ってないので、適当に自作してね
#日付の表示をするメソッドも、作るんなら勝手に作ってね
#privateメソッドのnext,beforeをpublicにしたい場合は、修正が必要ですよ
996デフォルトの名無しさん:2006/05/18(木) 23:47:19
>>985

>>991サンの出してくれた奴に、3番目の
>>辺の長さがaの正方形からそれに対して内接する円の部分を除いた面積

を導く式を追加してね。
997デフォルトの名無しさん:2006/05/18(木) 23:56:59
rgrg
998991:2006/05/19(金) 00:26:48
>996

おっと、読みすごした。スマソ
999デフォルトの名無しさん:2006/05/19(金) 00:57:01
↓綺麗に終わっておくれ
10001000:2006/05/19(金) 00:59:52
日々之精進
1000なら皆が宿題を理解できる
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。