952 :
デフォルトの名無しさん :2006/05/18(木) 02:14:39
>>951 えっと優先度のことでよかったでしょうか?
一応自分は6×6のマスに
234432
346632
468832
468832
346643
234432
というように優先度を決めてやってます。
ただこれをどう活かせばいいのかで困っていて…
>>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以外のときは必ず付けろと習っただけです。
#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
>>943 バックトラック中に優先度の低い方に行っていいの?
959 :
デフォルトの名無しさん :2006/05/18(木) 03:45:38
>>958 常に優先度の高い方に行かないとダメかと思います。
963 :
billy :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日
>>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を出力するやり方がわかりません。 名前を固定してしまえばできるのですが、自動的にってのがわからないので、教えてください。 お願いします。
>>965 文字列fnameの後ろから3文字を"pgm"に置き換えるすさまじく単純な方法w
strcpy( fname + strlen(fname) - 3, "pgm");
# 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; }
970 :
969 :2006/05/18(木) 17:35:13
ごめん。averageはこっちが正しい。 return (double)(int)(sum / num * 1000 + 0.5) / 1000;
average関数内では、平均を求めること以外のことを行ってはいけない.
972 :
969 :2006/05/18(木) 17:41:38
>戻り値は平均(合計を回数で割った数の小数点以下4桁目を四捨五入したもの)とする. とあるから、四捨五入も平均を求める作業に含まれると思うが。
>>970 さん
ありがとうございました
サンプルプログラムでも、四捨五入をしていたのでOKです。
[1] 授業単元:演習 [2] 問題文(含コード&リンク): キーボードから0以上の整数を1つ読込み、 入力した数と同じ個数の文字'+'を一行に表示するプログラムを作成しなさい。 *条件 負の数が入力された場合は、"error"とエラーメッセージを表示して終了する。 整数以外の入力は考えなくてよい。 0が入力された場合は、空行(何も文字が表示されていない行)を表示する。 [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン: gcc4.00 [3.3] 言語: C [4] 期限:06年05月18日 [5] その他の制限:特に無し 以上ですよろしくお願いします。
>>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;
}
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] その他の制限:正しい値以外は絶対に通らないように製作。ファンクションや複数キーを含む
【質問テンプレ】 [1] 授業単元: プログラミング演習I [2] 問題文(含コード&リンク): 住所録の作成と検索 個人の情報を格納し、整理するプログラム 扱う項目:姓、名、住所、電話番号(もちろん架空のもの) [3] 環境 [3.1] OS:Windows [3.2] bcc [3.3] 言語:C言語 [4] 期限:06年05月21日0時 [5] その他の制限:姓、名で検索を行い、検索結果を標準出力に表示 よろしくお願いしますm(._.)m
>>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;
}
980 :
979 :2006/05/18(木) 20:41:03
ごめん今コンパイルしたらバグってたorz
>>979
>>979 は多分↓にすれば動く
do{
scanf("%d",&n);
}while( (n<0) || (n>80) );
do{
scanf("%d",&m);
}
while( (m<0) || (m>80) );
982 :
billy :2006/05/18(木) 20:53:27
983 :
977 :2006/05/18(木) 21:07:23
本当にありがとうございます。間に合いそうです。
[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
[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] その他の制限:無し
よろしくお願いします。
>>985 記入漏れが有りました。
OSはLinuxです。
よろしくお願いします。
988 :
デフォルトの名無しさん :2006/05/18(木) 22:17:01
>>987 この問題は大学何年生くらいのレベルなんですか?
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 っていれてね。 これが出来ないとこれからきついと思われ。
>>987 自己参照構造体ってことは
リスト構造で動くようにしろと考えておkなのかな?
うん、問題見たら線形リストはまったく関係ないね 問題見ないで言うもんじゃないね サーチするときにでも使うのではないかと予想
>>985 >>991 サンの出してくれた奴に、3番目の
>>辺の長さがaの正方形からそれに対して内接する円の部分を除いた面積
を導く式を追加してね。
rgrg
998 :
991 :2006/05/19(金) 00:26:48
>996 おっと、読みすごした。スマソ
↓綺麗に終わっておくれ
日々之精進 1000なら皆が宿題を理解できる
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。