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

このエントリーをはてなブックマークに追加
501デフォルトの名無しさん
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
int plot(int x,int y,int c);は座標(x,y)に色cを設定する関数である。
これが与えられているものとして
コマンドラインから(x,y)の形で座標値が何個か与えられた時
(0<=x,y<=10000)これらに異なる色(選択は自由)を与える。
0<=x,y<=10000を満たす座標の各点についてその点から
最も近い点の色をその点に設定する(2つ以上の点から等距離
にある場合は、これらの点の中でコマンドラインで最初に指定
された点の色を設定)
この処理を行うプログラムを記述する

[3] 環境
 [3.1] OS:Windows XP(Service pack 3)
 [3.2] コンパイラ名とバージョン:visual c++.net 2005
 [3.3] 言語:C++
[4] 期限:6/11迄
[5] その他の制限:
 ヘッダファイルは使わない。extern宣言でplot関数を宣言した
のちにpaint関数のコードを記述すること。
0<=x,y<=10000と仮定して良い。
plot関数を適当な名前の整数ファイルの1024*y+(x % 1024)番目
のレコードに値を設定する実装としたドライバコードを使って
テストするとよい。
502デフォルトの名無しさん:2010/06/08(火) 22:00:43
#include<stdio.h>
#define NUMBER 5
int main(void)
{
int n, a, oira, c, i, j, k;

for(n=1; n<=NUMBER; n++) {
for(a=1; a<n; a++) {
for(i=n, j=a; k=i%j; i=j, j=k);
if(j!=1) continue;
printf("n = %2d a = %2d :", n, a);
for(c=oira=1; c<n; c++) {
for(i=n, j=c; k=i%j; i=j, j=k);
if(j!=1) continue;
oira *= a;
oira %= n;
}
if(oira==1) printf("verified\n");
else printf("error\n");
}}

return 0;
}
503501:2010/06/08(火) 22:00:45
問題文がちょっと抜けてました。訂正させてください。

○この処理を行うプログラムのメイン処理を行う関数
void paint( int argc,char **argv);
を記述する

×この処理を行うプログラムを記述する
504デフォルトの名無しさん:2010/06/08(火) 22:01:35
>>500
助言d
それはその方が無駄にφ(n)(=count)を求めなくて済むからか?
だとしたらその通りかもしれないから今後の参考にするわ
505デフォルトの名無しさん:2010/06/08(火) 22:11:30
あくまで好みだからそんなの自分の好きにしろとか言われるかもだが
プログラム書くときスペースとか改行ってどのタイミングで入れてる?

学校では a = a + 1 って書く奴がいれば a=a+1 って書く奴もいるし
for(i=0;i<5;i++)って書く奴がいれば
for(i = 0 ; i < 5 ; i++)って書く奴もいるし

こうしたほうが効率がいいとか後で見やすいってのがあるなら参考にしたい
今なら癖とかないから変えられるし
506デフォルトの名無しさん:2010/06/08(火) 22:12:55
>>504
そう。
できるだけ必要のない無駄な処理はしないってのが大事。
507デフォルトの名無しさん:2010/06/08(火) 22:14:02
508デフォルトの名無しさん:2010/06/08(火) 22:14:50
何のIDE使ってるか知らないけど
vs2008使ってる俺は適当に書いてから「編集→詳細→選択範囲のフォーマット」で整形してる
509デフォルトの名無しさん:2010/06/08(火) 22:20:58
http://www.textdrop.net/google-styleguide-ja/cppguide.xml
あえてこっちを載せないことに悪意を感じる
510デフォルトの名無しさん:2010/06/08(火) 22:25:31
>>509
知らなかったんだごめんよ
511デフォルトの名無しさん:2010/06/08(火) 22:39:58
>>502が理解できない
てか発想が秀逸すぎて手に負えない
512デフォルトの名無しさん:2010/06/08(火) 22:43:14
最大公約数をループで求めてるだけ
513デフォルトの名無しさん:2010/06/08(火) 22:50:13
とりあえず褒めとけばいいと思ってない?
514デフォルトの名無しさん:2010/06/08(火) 22:52:00
>>501
0<=x,y<=10000を満たす座標の各点についてその点から
最も近い点の色をその点に設定する
ってあるけど

各々の座標の色はどう初期化するべきなの?
なにかしら初期化しておかないと最も近い点の色もなにもないと思うんだけど。
515デフォルトの名無しさん:2010/06/08(火) 23:09:33
引数で与えられた点の色はこっちで好きに決めていいんだろ
516430:2010/06/08(火) 23:12:01
>>505
K&R にしておけば後ろ指をさされることはないかと。
ただし私は

int main() {
...
}

とかえている。
emacs(xyzzy) ではこのほうが便利だから。
517デフォルトの名無しさん:2010/06/08(火) 23:54:47
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10656.txt
  プログラムと問題文が書いてあります
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 2010年6月9日中に提出
[5] その他の制限: 特にありません

よろしくお願いします。
518デフォルトの名無しさん:2010/06/09(水) 03:13:20
[1] 授業単元:プログラミング演習
[2] 問題文:整数nを入力し、以下のようにサイズnの“N型の図形”を、奇数目入力では”*”、偶数目入力では”+”で表示で表示されるプログラムを作成しなさい。なお、処理の終了はnが0以下の時とする。複合条件やスイッチを用いて作製なさい。
実行例
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10658.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4]期限:6/9日PM10:00
[5]その他制限: printf int while scanf float for のみの使用
なお、||、break、return,は使用禁止
プログラム形式はサンプル風にお願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt
519デフォルトの名無しさん:2010/06/09(水) 03:19:59
520デフォルトの名無しさん:2010/06/09(水) 03:41:51
#include <stdio.h>

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

while(scanf("%d", &n)==1 && n > 0) {
printf("n=%d\n", n);
for(i=0; i<n; i++) for(j=0; j<=n; j++) printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n');
}

return 0;
}
521:2010/06/09(水) 10:07:40
>>432
すごいです!!…学校で習った感じに少し、
書き直させて頂きました(>_<)
こんなに早く出来ると思ってなかったので
びっくりしました。
本当に助かりました!有難う御座いました☆
522デフォルトの名無しさん:2010/06/09(水) 10:43:14
シルエット
カーディガン
レントゲン
サンドイッチ
523デフォルトの名無しさん:2010/06/09(水) 11:01:34
>>501
http://ideone.com/EtsT0
作ってみたけどなんか違うから、だれか直してくれ
524デフォルトの名無しさん:2010/06/09(水) 16:11:42
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10662.txt
[3] 環境
 [3.1] OS:特に指定なし
 [3.2] gcc 3.2
 [3.3] 言語: (C)
[4] 期限: ([2010年6月10日15:00まで] )
[5] その他の制限: なし

よろしくお願いします。
525デフォルトの名無しさん:2010/06/09(水) 16:45:36
>>524

おまえ、5つの数字の列の取りうる範囲は0~99999の100,000個だぞ。
だから入れるバケツの大きさは100,000の配列にしてそこへ2000個のデータを
5桁の数字に対応するバケツに次々入れて、終わったら番号の小さいバケツから順番に
数字を取り出すようにしないとダメだぞ。
526デフォルトの名無しさん:2010/06/09(水) 16:47:15
void sort(char data[][LENGTH+1], int size)
{
int *p = calloc(100000, sizeof(int));
int i, j, k;
for(i=0; i<size; i++) p[atoi(data[i])]++;
for(i=j=0; i<100000; i++) for(k=0; k<p[i]; k++) sprintf(data[j++], "%05d", i);
free(p);
}
527デフォルトの名無しさん:2010/06/09(水) 17:46:55
void sort(char data[][SLENGTH+1], int size) {
  int i, j=0, k;
  char p5[6];
  int *p = calloc(100000, sizeof(int));

  for(i=0; i<size; i++)
    p[atoi(data[i])]++;
  for(i=0; i<100000; i++) {
    if(p[i]) {
      sprintf(p5, "%05d", i);
      for(k=0; k<p[i]; k++)
        strncpy(data[j++], p5, 5);
    }
  }
  free(p);
}
528デフォルトの名無しさん:2010/06/09(水) 18:23:29
>>522
申し訳ないですが、
||と条件文の中にさらに条件文は使用禁止なんです。
説明足りなくてスミマセン。
[printf("%c", j!=n ? j==0||j==n-1||j==i ? n & 1 ? '*' : '+' : ' ' : '\n'); ココと]
[while(scanf("%d", &n)==1 && n > 0)ココの部分です]
529デフォルトの名無しさん:2010/06/09(水) 19:11:45
>>528
これなら大丈夫だろw
http://ideone.com/lGet1
530デフォルトの名無しさん:2010/06/09(水) 19:27:49

5つの数字が全部0って可能性はないのかな?
もし0が入る可能性があるのならallocateされた領域の初期値が0じゃまずいかも。
531デフォルトの名無しさん:2010/06/09(水) 19:28:55
data[000000]++;
532デフォルトの名無しさん:2010/06/09(水) 19:39:49
>>530
お前は何をいってるんだ
533デフォルトの名無しさん:2010/06/09(水) 20:07:46
>>529
何度もすみません
さっきの説明が分かりにくかったですね;
forの中にscanfとかを入れるのがダメなんです。
1行に付きscanf、forなどは1つです。
printf
int
while
scanf
float
for
のみの使用です。

それ以外は使用禁止です。
return
||
else
if
は使用禁止です。


534デフォルトの名無しさん:2010/06/09(水) 20:09:59
>>528
誰が禁止って言ったの?
535デフォルトの名無しさん:2010/06/09(水) 20:21:51
>>531-532

わはははは、javaやりながらここ見てたから勘違いだ。笑えwwwww
536デフォルトの名無しさん:2010/06/09(水) 20:33:58
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次の仕様を満たすプログラムを作成せよ
「xy 平面内に任意の電荷量の点電荷を複数個配置する.xy 平面内の原点Oを中心とする4 m 四方(±2 m)の領域内において,位置r(x, y)に形成される電界Erや電位Φrを計
算する.」複数個の点電荷で形成される電界Erや電位Φrを,任意の位置r で計算する際は,重ね合わせの原理を用います
電界ベクトルの計算は, x 成分とy 成分に分けて行います
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:6月11日
[5] その他の制限: 特になし
537デフォルトの名無しさん:2010/06/09(水) 20:54:43
学校でやってないところは使うなと
先生に言われました;;
538デフォルトの名無しさん:2010/06/09(水) 21:01:58
エスパー無理
539デフォルトの名無しさん:2010/06/09(水) 21:03:14
>>537
学校と先生を教えてくれるかな?w
540デフォルトの名無しさん:2010/06/09(水) 21:04:30
>>537
誰だお前は
541デフォルトの名無しさん:2010/06/09(水) 21:11:04
学校でやってないこと 使うなと
講師の先生(せんせ)に 言われたよ
――痴楽 綴り方教室
542デフォルトの名無しさん:2010/06/09(水) 21:13:19
≫538
例ですと
前回の課題の
問題文:整数nを入力し、以下のようになサイズnの”Z型の図形”を”*”で表示するプログラムを作成しなさい。
ただし、図形を表示するためのnの値は3以上とし、2以下の値が入力された場合は処理を終了する様にしなさい。
[実行例]
3      <-n入力
n=3
***
 *
***
4 <-n入力
n=4
****
   *
  *
****  
8 <-n入力
n=8
********
         *
        *
       *
     *
   *
  *
********
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt
はこうなりました。
543デフォルトの名無しさん:2010/06/09(水) 21:21:14
エスパーできないって言ってるんだが
544537 542:2010/06/09(水) 21:27:23
≫534
すみません!!
番号うつの忘れてました。
ホントすみません;;
545デフォルトの名無しさん:2010/06/09(水) 21:35:42
546デフォルトの名無しさん:2010/06/09(水) 22:00:30
<iostream>とか<studio.h>って何が違うんですか?
547デフォルトの名無しさん:2010/06/09(水) 22:03:59
>>546
STanDard InputOutput Headerな
定義されてる関数群がちがう。
548デフォルトの名無しさん:2010/06/10(木) 00:33:37
もう本当に挫折しそうです。
関数を二つ pen()とqen()として作って
int main()の中に呼びたいんですが
この時pen()の実引数をqen()にしたいんですが
これがうまくいきません、どうしたらいいですか?
レス代行なので長いプログラムは書けません・すいません。
int main(void)
a=pen();
qen(a);
としてもpen()とqen()が別個に呼び出されるだけで一つの作業と
なりません。
549デフォルトの名無しさん:2010/06/10(木) 02:48:35
>>548
penの引数をqenの引数にしようとしているようには見えないので、いろいろおっちょこちょいな人なのかな。
関数ポインタをキーワードにいろいろ調べてみてください。
550デフォルトの名無しさん:2010/06/10(木) 06:07:31
pen()の実引数をqen()にするなら
pen(qen);
だろ。
551デフォルトの名無しさん:2010/06/10(木) 06:46:15
pen(void (*p)(void)); かなシグネチャは

pen()の中で (*p)(); もしくは p(); として呼び出す
552デフォルトの名無しさん:2010/06/10(木) 07:52:36
>>550
double a;
qen(a);
pen(qen);
ですか?普通に無理でしたが・・
pen(qen);だけでもまぁ無理でした。
>>551
pen((*p)(qen(a));ってことですか?これも無理でした。
553デフォルトの名無しさん:2010/06/10(木) 07:55:25
関数ポインタってのあるんですが、馬鹿でした。で
int mainの中で
p= pen;
qen((*p)pen());とかごちゃごちゃ色々なとこ変えて、
付け足して
90回くらい思考錯誤したけど全部だめした......
ちなみにpen()、qen()自体はそれぞれsin関数とcos関数
です。ポインタ関数理解したいのでこのままの構造でい
きたいと思ってます。
554デフォルトの名無しさん:2010/06/10(木) 07:59:47
何がしたいのかさっぱり伝わってこない
555430:2010/06/10(木) 08:09:29
>>553
#include <stdio.h>
#include <math.h>
double p(double (*f)(double), double a)
{
return sin((*f)(a));
}

double q(double a)
{
return cos(a);
}

int main()
{
double a, b;
a = 3.1415926;
b = p(q, a);
printf("%f\n", b);
return 0;
}
/* end */
556デフォルトの名無しさん:2010/06/10(木) 08:12:37
cos()の返り値をsin()の引数にするってw
557デフォルトの名無しさん:2010/06/10(木) 08:21:43
関数を関数の引数にするってことを理解できてないようにみえる
558デフォルトの名無しさん:2010/06/10(木) 08:23:28
>>554
関数を2つ呼び出して、一つの関数をもうひとつの関数の
引数にしたいんです。ただそれだけです。
559デフォルトの名無しさん:2010/06/10(木) 08:23:50
>>555
わざわざありがとうございます、doubleじゃなくてfloatでした。
この時も関数ポインタはfですね?
あとretrunっているのですか?どういう役割なのかなぁ....
それとa=3.1415926..とは?
色々ややこしいなぁ、簡単なプログラムなのにこんな複雑だとは....
560デフォルトの名無しさん:2010/06/10(木) 08:25:31
>>558
もしかして
sin(cos(a));
か?この式に何の意味があるのかは不明だが
561デフォルトの名無しさん:2010/06/10(木) 08:27:38
>>559
問題を適切に抜き出す能力が足りないだけ
少なくとも俺は>>558読んでもさっぱりわからん
562デフォルトの名無しさん:2010/06/10(木) 08:28:07
>>560
それでオッケーなら>548でもオッケーだろ
563デフォルトの名無しさん:2010/06/10(木) 08:30:26
こういう自分の勝手な解釈で嵌ってくアホ見ると、
余計なことしないで教科書のサンプルでも打ち込んでろって思うな
564デフォルトの名無しさん:2010/06/10(木) 08:38:27
マゾなんだろ
簡単な事をわざわざ複雑怪奇に書いて苦しみ悶える事に快感を覚えるタイプ
565デフォルトの名無しさん:2010/06/10(木) 08:39:27
>>561
いやめちゃくちゃ単純なんですが・・
合成関数のプログラムですよ。
sin(cos(a))ですよ。
関数が二つあるんだから、二つの関数呼び出す必要ありますよね。
全然意味不明じゃないですが・・・
566デフォルトの名無しさん:2010/06/10(木) 08:44:22
x=cos(a);
y=sin(x);
変数と代入から勉強だな。
567デフォルトの名無しさん:2010/06/10(木) 08:47:18
>>565
それはcos(a)の返り値をsin()の実引数にするといい、
cos()をsin()の実引数にするとは言わない。
正しく用語を使えてないから、他人に正しく伝わらない。
568デフォルトの名無しさん:2010/06/10(木) 08:47:37
>>565
まだわからない。
double sincos(double a)
{ return sin(cos(a)); }
ではどうだめなのか。
569デフォルトの名無しさん:2010/06/10(木) 08:51:53
>>567
すいません。その通りです。返却値をsin()の実引数の実引数にしたいんです。

>>568
あぁ絶対言うかと思いました。
別に合成関数のプログラム作りたいわけじゃなくて、関数の呼び出しという
構造を学びたいだけで。それなら僕も考えてました。複雑なプログラムはそれ
じゃ無理です。

570デフォルトの名無しさん:2010/06/10(木) 08:55:31
お前に複雑なプログラムの何がわかるってんだよw
571デフォルトの名無しさん:2010/06/10(木) 08:58:56
っと、>>569はなりすましか
572553:2010/06/10(木) 09:00:44
このスレにいる人は全員低脳ばっかりですね。
573デフォルトの名無しさん:2010/06/10(木) 09:01:44
・質問者はなりすましを防ぐため、トリップを使ってください。
名前欄に、「好きな数字#...」に続けて任意の文字列
574デフォルトの名無しさん:2010/06/10(木) 09:02:36
>>567
以後気をつけますんで、お願いします、どうしたらいいでしょう....
>>570
少し複雑になったら関数が必要だから。別にプログラムの何もわからないが。
575デフォルトの名無しさん:2010/06/10(木) 09:03:29
>>574
日本語でおk
576 ◆mDrzcbRHP2 :2010/06/10(木) 09:04:48
>>573
すいません。

>>569>訂正
実引数の実引数にしたい。→実引数にしたい。
577デフォルトの名無しさん:2010/06/10(木) 09:06:22
>>576
おまい誰だよ
578:2010/06/10(木) 09:09:20
再び、お願いします(_ )

【質問テンプレ】
[1] 授業単元:C言語 演習問題4-14
[2] 問題文(含コード&リンク):身長と標準体重を表示するプログラムを作成せよ。
               なお、表示する身長の範囲(開始値、終了値、増分)は、整数値として読み込み、
               標準体重は小数点以下2桁だけ表示すること。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: main.c Visual Studio 2008
 [3.3] 言語: C++
[4] 期限: 22年6月18日17:00まで
[5] その他の制限: do文やif文、for文までです

file:///C:/Users/aika/Desktop/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E/c.html

一応上記まで作り、実行も出来たのですが
実行時エラーで問題のように上手くいきません。
多分、水色で示したところが間違っているのだと
思うのですが…(p‥`)

手直し(?)という形で宜しくお願いします、
579デフォルトの名無しさん:2010/06/10(木) 09:10:47
>>578

>file:///C:/Users/aika/Desktop/%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E8%A8%80%E8%AA%9E/c.html

ふざけてんの?
580デフォルトの名無しさん:2010/06/10(木) 09:15:44
aikaって名前?
581デフォルトの名無しさん:2010/06/10(木) 09:25:42
>>580
>file:///C:/Users/aika/Desktop/マークアップ言語/c.html
http://pc12.2ch.net/test/read.cgi/tech/1274827528/424
582デフォルトの名無しさん:2010/06/10(木) 09:29:11
スーパーハカーでもなきゃ、あんたのPCの中身はわからんよw
583デフォルトの名無しさん:2010/06/10(木) 09:33:03
>>581
それはわかってんよ
実行時エラーとか水色で示した部分がこちらは知りたいわけ
584566 ◆/91kCCQXBo :2010/06/10(木) 10:23:24
>>548 >>552 >>559
#include <stdio.h>
#include <math.h>
/*  double sin( double x ); */
/*  double sin( double x ); */
float r(double (*p)(double), double (*q)(double), float a)
{
  return (*p)((*q)(a));
}

int main()
{
  printf("%f\n", r(sin, cos, 1.0));
  return 0;
}
585デフォルトの名無しさん:2010/06/10(木) 10:29:07
>578 は、AKBオタ。
586デフォルトの名無しさん:2010/06/10(木) 10:34:42
仲間が見つかってよかったねw
587デフォルトの名無しさん:2010/06/10(木) 10:53:59
>>616
% Prolog (その一)

バケツソート(_整列されたならび) :-
    abolish('$temp'/2),
    findall(S,(for(1,_,2000),ランダムな文字列の発生(S)),L),
    バケツソート(L,_整列されたならび),!.

バケツソート(L,_整列されたならび) :-
    バケツに吐き出す(L),
    findall(X,(鍵候補値を昇順に発生させる(S),バケツから拾い上げる(S,X)),_整列されたならび).

数値文字候補ならび(['0','1','2','3','4','5','6','7','8','9']).

鍵候補値を昇順に発生させる(S) :-
    数値文字候補ならび(L),
    member(A,L),member(B,L),member(C,L),member(D,L),member(E,L),
    concat_atom([A,B,C,D,E],S).

ランダムな文字列の発生(S) :-
    数値文字候補ならび(L),
    findall(A,(for(1,_,5),M is (random mod 10) + 1,list_nth(M,L,A)),L2),
    concat_atom(L2,S),!.
588デフォルトの名無しさん:2010/06/10(木) 11:02:44
>>587
なるほど、よくわかりました
589:2010/06/10(木) 11:13:51



すみません…どう書いたらいいのか
よく分からなかったもので。

#include <stdio.h>

int main(void)
{
int i;
int low, high, step;

printf( "何cmから:" ); scanf( "%d", &low );
printf( "何cmまで:" ); scanf( "%d", &high);
printf( "何cmごと:" ); scanf( "%d", &step);

for(i=low; i<=high; i+=step) {
printf( "%dcm %.2fkg\n", low, ((low += step <= high) - 100) * 0.9);
printf( "%dcm\n", low += step);
}

return( 0 );
}

上記のfor{文}のところです。。。


本当にすみませんでした、
また宜しくお願いします。
590デフォルトの名無しさん:2010/06/10(木) 11:23:54
589 の for 内 printf 1発目
副作用関連で鼻から悪魔コード じゃない? (関数引数での , は副作用完了点じゃないよな?)
591587:2010/06/10(木) 11:33:47
ごめんなさい。誤爆です。行方不明だと思ったらこんなところに書き込んでいたか。
592デフォルトの名無しさん:2010/06/10(木) 11:42:47
>>590
本当やね

low2 = ((low += step <= high) - 100) * 0.9;
printf( "%dcm %.2fkg\n", low, low2);

とすればうまくいくはず
593デフォルトの名無しさん:2010/06/10(木) 11:44:26
あ、だめだ

low2 = ((low + step <= high) - 100) * 0.9;
printf( "%dcm %.2fkg\n", low, low2);
low += step <= high;

か?
594581 ◆/91kCCQXBo :2010/06/10(木) 11:51:26
#include <stdio.h>

int main(void)
{
  int i;
  int low, high, step;

  printf( "何cmから:" ); scanf( "%d", &low );
  printf( "何cmまで:" ); scanf( "%d", &high);
  printf( "何cmごと:" ); scanf( "%d", &step);

  for(i=low; i<=high; i+=step) {
    printf( "%dcm 標準体重=%.2fkg BMI(22)=%.2fkg\n", i, (i - 100) * 0.9, 22.0*i/100*i/100);
  }
  return 0;
}
595デフォルトの名無しさん:2010/06/10(木) 18:59:06
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
以下のようにmain関数を定義し、mainの引数を合計するプログラムsumを作成せよ。ただし、引数の数は未定であり、実行時に決定されるものとする。
int main(int argc, char *argv[])
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月15日まで
[5] その他の制限:
端末上で
./sum 3.2 1.9 2.3
と入力すると
7.4000
と出力されるようにする。
596デフォルトの名無しさん:2010/06/10(木) 19:27:07
#include <stdio.h>
int main(int argc, char *argv[])
{
  int i;
  float tmp, sum=0;

  for(i=1; i<argc; i++){
    sscanf(argv[i], "%f", &tmp);
    sum += tmp;
  }
  printf("%g\n", sum);
}
597デフォルトの名無しさん:2010/06/10(木) 19:56:13
#include <stdio.h>
int main(int argc, char *argv[])
{
printf(argv[1])
printf(argv[2])
}
のようにするとき,コマンドからargv[]にデータを入れないとエラーがでます。
配列argv[]の初期値はどのように設定すればよいのでしょうか?
598デフォルトの名無しさん:2010/06/10(木) 20:08:21
if(argc<=1) exit(1);
599デフォルトの名無しさん:2010/06/10(木) 21:00:42
2つの自然数aとbの最大公約数gcd(a, b)を求め、それを出力するプログラムを作成せよ。
なお、m = a % b としたとき、gcd(a, b) は m≠0 の場合 gcd(b, m) に等しく、 m=0 の場合 b に等しい。


2つの自然数aとbを入力させ、a 人から b 人を選ぶ組み合わせ comb(a, b)を求め、それを出力するプログラムを作成せよ。
なお、comb(a, b) = comb( a-1, b) + comb( a-1, b-1) であり、 b==0 もしくは b==a のとき comb(a, b) = 1 である。


今週は2つありますが。。。よろしくお願いしますorz
600デフォルトの名無しさん:2010/06/10(木) 21:16:32
>>597
argc == 1 の時はargvを調べないようにする