[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 08/07 07:44 / Filesize : 167 KB / Number-of Response : 621
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2010/05/26(水) 07:45:28 BE:94671825-S★(522522)]
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

前スレ
C/C++の宿題片付けます 135代目
pc12.2ch.net/test/read.cgi/tech/1269438098/

424 名前: [2010/06/07(月) 22:11:27 ]
【質問テンプレ】
[1] 授業単元:C言語課題
[2] 問題文(含コード&リンク):2つの正の整数(aとb)の最大公約数をユークリッドの互除法を用いて表示するプログラムを作成せよ。ただし、0<b≦a≦32767とする。
               ≪ユークリッドの互除法≫
               ユークリッドの互除法による最大公約数(GREATEST COMMON DIVISOR:GCD)は、次のように求める。
               @2数(aとb)の中で大きい値をl、小さい値をmとする。
               Alをmで割り、あまりをrとする。
                      r=0ならば、mが最大公約数となる。
                      r≠0(0<r<m)ならばl←m、m←r として再びAの処理を行う。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:main.c Visual Studio 2008
 [3.3] 言語:C++
[4] 期限:2010年6月18日17:00まで
[5] その他の制限:(まだ本当に初心者なので)do文やif文、for文まで習いました。


期限までは時間がありますが…宜しくお願いしますm(_ _)m


425 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 22:29:12 ]
#include <iostream>

int main()
{
int a, b, r;

std::cin >> a >> b;

while(r = a % b) a = b, b = r;

std::cout << b;
}

426 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:09:24 ]
>>423
逆にその関数として、不正な値が渡された時はどういう挙動にしようか

427 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:10:21 ]
for(i = 0 ; i < 5 ; i++){
printf("%d,", i );
}
これで出力したら
1,2,3,4,5,
みたいに最後にもカンマがついちゃうんでfor文の外側に
printf("\b\n");
を付け加えたんだけどうまく最後のカンマが消えません
その理由とどうすればいいのか教えてください

428 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:21:48 ]
\bは書き込む位置が1文字分戻るだけだから
スペースで上書きする必要がある
printf("\b \n");

429 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:23:30 ]
なるほど
d

430 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:25:03 ]
>>427
端末側がバックスペースをサポートしていない、と思われる。
仕方がないから、
#include <stdio.h>
#define N 5
int main()
{
int i;
for (i = 1; i <= N - 1; i++)
printf("%d, ", i);
printf("%d\n", i);
return 0;
}
でごまかすしかない。

431 名前:430 mailto:sage [2010/06/07(月) 23:29:20 ]
>>428
そのような手があったんですね。これでうまくいきました。(cygwin)
#include <stdio.h>
#define N 5
int main()
{
int i;
for (i = 0; i < N; i++)
printf("%d, ", i);
printf("\b\b \n");
return 0;
}

432 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:32:36 ]
>>424
#pragma warning(disable:4996)
#include <stdio.h>
int main(void){
  int a, b, l, m, r;

  printf("整数 a と b を入力して下さい > ");
  scanf("%d %d", &a, &b);
  if(a>b) l=a, m=b; else l=b, m=a;
  while(r = l % m) l=m, m=r;
  printf("GCD = %d", m);
}



433 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:46:04 ]
>>426
#include <stdio.h>
char *month_name(int n){
static char *months[]={"January","February","March",
"April","May","June","July","August","Septmber",
"October","November","December"};
return months[n-1];}
int main(void)
{
int n;
scanf("%d",&n);
if (n<1||n>12)printf("unkown month\n");
else printf("%s\n",month_name(n));
return 0;
}
不正な値が行く場合がわかりませんので教えて下さい。

434 名前:430 mailto:sage [2010/06/07(月) 23:53:41 ]
>>433
できている、と思うのですが。

435 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:55:12 ]
しっかし無駄なstaticだ

436 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:55:25 ]
>>433
関数をライブラリとして提供した場合に、使う側に対して値チェックを強制するべきか、
それとも不正な値を渡された場合にunknown monthを返却する仕様とするのかという話。

で、使用者に対して値チェックを強制した場合、使用者の不手際により
不正な値が渡されることを考慮しなければならない。
その際、メモリアクセス違反で落ちるライブラリでよしとするのか?ということ。

例外機構があれば例外を投げるのも手だけれど、Cではどうするのか。
型をboolにし、out引数を追加するのもありだよね。
でも今回はプロトタイプが指定されている。

その上での考えを教えてほしい。

437 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:57:16 ]
NULLを返却するのは?
結局関数の中で範囲チェックすることになるけど。

438 名前:デフォルトの名無しさん mailto:sage [2010/06/07(月) 23:58:00 ]
>>435
これstatic消したら関数抜けた時に戻り値のアドレスが破棄されるんじゃないの?

439 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:00:30 ]
>>438
リテラルのアドレスが返るから問題ない

440 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:11:50 ]
>>438
sizeof(months) == sizeof(char *) * 12

441 名前:デフォルトの名無しさん [2010/06/08(火) 00:16:14 ]
[1] 授業単元: 情報数学
[2] 問題文(含コード&リンク):
次の連立一次方程式をガウスザイデル法とSOR法で解け
{2 , -1 , 0} {x1} {-1}
{-1 , 2 , -1} * {x2} = {2}
{0 , -1 , 2} {x3} {1}
なお、反復回数を20、x1-3の初期値x1-3^0を0、SOR法の・をそれぞれ1.2と1.5で計算せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 本日中、出来ればお昼までにお願いします。

442 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:20:40 ]
>>440
要するに、予約語staticをつけなくとも、
monthsはその各々の要素が文字列リテラルの先頭へのポインタであるから
静的領域に確保されると。




443 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:27:51 ]
それって規格で決まってたっけ?
そうでなくても、いちいち呼ばれるたびに確保するような処理系なさそうだけどさ。

444 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:35:16 ]
>>436
いろいろとありがとうございました。
今回は不正な値を渡された場合にunknown monthを返却する仕様のつもりです。
使用者に対しての値チェックのやり方はどれがいいかまだよくわかりません。
難しいですね。

445 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 00:58:11 ]
>>442-443
文字列リテラルがstatic const char[]か?ならYes 6.4.5 文字列リテラル
文字列リテラルを指すポインタ非可変長配列がstaticか?ならchar const * const []であってもNo 6.2.4 オブジェクトの記憶域期間

446 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 01:03:04 ]
>442>443
横レスだけど
months自体は自動変数だから、スタックに置かれるよ。関数が返しているのは
スタック変数を指すポインタではなく、静的領域に置かれている文字列リテラルの
ポインタ。

447 名前:443 mailto:sage [2010/06/08(火) 01:34:03 ]
>>445
d


448 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 08:57:28 ]
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10651.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6月9日12時まで
[5] その他の制限:

libstation.aが無いのでやりずらいかもしれませんが、形だけでもお願いします。



449 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:20:42 ]
>>441をお願いします。

450 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 10:44:00 ]
>>449
とりあえずガウスザイデル法のみ

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10652.txt

451 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 11:08:42 ]
>>449
SOR法

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10653.txt

452 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 12:04:27 ]
>>451
ありがとうございます。



453 名前:デフォルトの名無しさん [2010/06/08(火) 13:17:45 ]

[1] 授業単元: 上級プログラミング
[2] 問題文(含コード&リンク):

1、VisualC++2008のWindowsフォームアプリケーションのプロジェクトを作成し、DataGridViewを作成なさい。列は
A,B,C の3列とする。
2、列Aに入力された4桁の数値を日付形式に変換し表示する様にしなさい(○月○日)。
3、sample.txtの内容を読み取り、その内容を使って列Bにオートコンプリートを実装しなさい。

sample.txtの内容は
あいうえお
abcde
12345
と言う様に、1行に1単語とする。

[3] 環境
[3.1] OS: Windows
[3.2] VC++2008
[3.3] 言語: C/C++
[4] 期限: 6/12
[5] その他の制限:とくに制限はありません

1はできますが2以降がよくわかりません。
2はプロパティでCellStyleを設定しましたが動いてくれませんでした。
3は調べてみたのですが、C++での実装はのっていなかったので・・・
よろしくお願いします。



454 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 13:21:57 ]
C++/CLIの宿題スレってないの?

455 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 13:43:20 ]
>>448
適当に見繕ってttp://codepad.org/Hzoa3JtQ

456 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:00:14 ]
(1) 【main 関数のみ】
int型配列 x[101] を定義し、キーボードから人数 N と N 人分の点数を入力し、平均点と
偏差値を計算し、結果を画面に出力するプログラムを作成せよ。
◆ 条件
 人数 N に負の値や101以上の値が入力されたときには、再入力するものとす
る。
 点数 x[i] に負の値や100点を超える値が入力されたときには、再入力する
ものとする。
◆ 偏差値 Ti の計算式
10( xi   )
Ti   50

ただし
N
1
x
 i
N i 1
N
1
 (x
  )2
i
N i 1
ここに、N :データの数 xi :個々の点数 μ:平均 σx:標準偏差


457 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:01:04 ]
実行例
Input N (0<N<101):0 ← 入力エラー
Input N (0<N<101):5
Input x[1] (0<=x<=100):200 ← 入力エラー
Input x[1] (0<=x<=100):30
Input x[2] (0<=x<=100):50
Input x[3] (0<=x<=100):-1 ← 入力エラー
Input x[3] (0<=x<=100):60
Input x[4] (0<=x<=100):80
Input x[5] (0<=x<=100):90
平均点 62.0
No. 1 点数 30 偏差値 35.0
No. 2 点数 50 偏差値 44.4
No. 3 点数 60 偏差値 49.1
No. 4 点数 80 偏差値 58.4
No. 5 点数 90 偏差値 63.1


458 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:02:48 ]
(2) 【平均点と偏差値を計算する関数の作成】
(1)のプログラムにおいて、平均点と学力偏差値を計算する部分を関数 seiseki に改
めたプログラムを作成せよ
◆ 条件
 データの入力と結果の出力はmain関数で行う。
 人数 N に負の値や101以上の値が入力されたときには、再入力するものと
する。
 点数 x[i] に負の値や100点を超える値が入力されたときには、再入力す
るものとする。
 main関数から関数seisekiに
データの数 N
N人分の点数 x[]
を渡し、関数seisekiからmain関数に
平均点 μ
偏差値 T[]
を受け渡す。
ただし、平均点は戻り値を用いて返す。



459 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:06:09 ]
3)【ポインタを用いた平均点と偏差値の計算】
(2)で作成したプログラムの関数 seiseki の中
次のプログラム例を参考にして、
の配列要素をポインタを用いて表すプログラムを作成せよ。
#include <stdio.h>
float average( int N, float *h);
int main(void){
float ave, height[101];
int i,N;
printf("Input N:");
scanf("%d",&N);
for(i=1; i<=N; i++){
printf("身長 ");
scanf("%f",&height[i]);
}
ave = average(N,height);
printf("平均 %6.1f \n",ave);
return 0;
}
float average( int N, float *h){
int i;
float av, total=0.0;
for(i=1; i<=N; i++){
total = total + *(h+i);
}
av = total/N;
return av;
}



460 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:35:27 ]
>>456
wakaran

461 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:42:29 ]
>>459
問題文が日本語になっていない
コードも直接貼ってるから読みにくい

462 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 14:51:41 ]
>>448
ありがとうございます。
セグメンテーション違反になりましたが、ここからは自分で頑張ってみます。



463 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:31:47 ]
>>456-458
codepad.org/JjTL3Zwl

(1)は input と main_q1関数だけ。
実行するときは、main_q1はmainに関数名を直すのが必要です。

(2)は コピペでも動く。main_q1関数は不要なので、消しても良い。

・偏差値はわからないから、wikipediaのを参考に。
・stdevの求め方は、2乗の平均 - 平均の2乗にした。
・データ入力の際に、avgも求められるが、題意から分けた。

464 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:38:36 ]
配列サイズが101だから、iは1からなんじゃね?

465 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 15:50:30 ]
>>463
Fortranな先生かな。
ttp://codepad.org/wUR2oqj6

466 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 16:10:08 ]
勝手に例の表記や条件を変えるヤツってなんなの?

467 名前:デフォルトの名無しさん [2010/06/08(火) 17:23:12 ]
>>354
すげぇ、てか制御式の中にscanf入れることできるのかー。
>>348
の人は何故だめなのかな。

468 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 17:30:20 ]
>>348
scanf("%c",&c);
で改行をよみこんでしまうから
後の条件式を総スルーしちゃう。
よってbは0で初期化されたまま

あと実際に動かすと
1
+
1
=
1
となってしまう。
これは
1
+
は計算するように書かれているけど
1
=
は計算するように書かれてないから。

469 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 17:44:47 ]
>>348を書き直すと
#include<stdio.h>
int main(void){
int a=0,b = 0;
char c=' ';
char prevc=' ';
while(c != '='){
scanf("%d%*c",&a);
scanf("%c",&c);
if (c == '+'){b += a; prevc='+';}
else if(c == '-'){b -= a; prevc='-';}
else if (c == '=')
{
if(prevc == '+' || prevc == ' ') b+=a;
else if(prevc == '-' || prevc == ' ') b-=a;
}

}
printf("%d\n", b);
}

470 名前:デフォルトの名無しさん [2010/06/08(火) 18:00:42 ]
>>468
頭良すぎワロタww
何故そのような分析ができるんだ。
C言語難しすぎ、どんだけ繊細なんだよ。

471 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:18:23 ]
お前がバカすぎるだけだってまだわからないのかw

472 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:19:08 ]
それほどでもないけどね



473 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:25:51 ]
>>468はいろいろ間違ってるぞw

474 名前:デフォルトの名無しさん [2010/06/08(火) 18:28:05 ]
prevcってなんだ?見たことも聞いたこともない。
苦し紛れの技巧か?

あと='';

''の中は空白だな。

475 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:36:20 ]
>>454
C#宿題スレに書きこんでみるか?

476 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:39:34 ]
#include <stdio.h>

int main(void)
{
int sum = 0, temp;
char ch = '+';

do {
scanf("%d", &temp);
if(ch == '+') sum += temp;
else if(ch == '-') sum -= temp;
scanf(" %c", &ch);
}while(ch != '=');

printf("%d\n", sum);

return 0;
}

477 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 18:46:02 ]
あげて古いの蒸し返してるのは:4 ◆nNHcoCEvyoだろ
こいつに何かを理解させるのは無理だって

478 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:06 ]
>>474
一個前のを取っておきたかったんだと思うよ。技巧ってほどじゃない

479 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:03:07 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):オイラーの定理の仮証明
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:visual c++
 [3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:初心者なので。。。

互いに素なnとaについてオイラーの定理が成り立つか確かめる。
とりあえずnは1以上5以下の数とし、aは1以上n以下とする。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10654.txt
これを実行すると何故か一部でエラーが出るんですが(プログラミング的な意味ではなく)
その理由と解決方法を教えてください

480 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:17:35 ]
>>479
count = 1;の位置がおかしい

481 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:19:22 ]
>>480
なにがココまではおkなんだか・・・
ありがとうございます

482 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:21:07 ]
関係ないけどそのままだと数が大きくなるとオーバーフローしてしまう。
oira *= a;
oira %= n;
ってすれば数が大きくなっても対応可能。



483 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:23:02 ]
>>482
まじでそこを聞こうと思ってたところです
ありがとうございます

484 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 19:46:03 ]
>>482
度々悪いんですけど
なぜそうすればいいのか教えてもらえませんか?
自分で考えてもわかりませんでした

わからないのは
なぜ数が大きくなっても対応出来るのかではなく
なぜこの計算方法でも正しい結果が得られるのかです

485 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:00:30 ]
めんどくさいからパス

486 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:08:13 ]
そか(’・ω・`)
oiraにnで割った余りを入れちゃったら
次a倍すると意図しない値になっちゃいそうなんだ
少なくとも俺のない頭はそう思っちゃうorz

一回一回a倍とnで割った余りをいれようとした根拠とか考え方とかをご教授願いたかった(’;ω;`)

487 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:19:18 ]
これって高校数学の範囲じゃねーの?

488 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:22:42 ]
もしかして俺の勘違いかもしれん

>>482って
if(i == a){
printf("n = %2d, a = %2d", n, a);
oira = 1;
for(j = 0 ; j < count ; j++){
oira *= a;
oira %= n;
}
if((oira - 1) % n == 0){
printf(": verified\n");
}
else{
printf(": error\n");
}
}
みたいに直せって事だよな?


489 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:33:16 ]
もしかして俺のバカさ加減に呆れてますか?(;ω;`)

490 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:55:42 ]
少なくとも処理結果は正しいの?

491 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 20:58:49 ]
a = n * b + cの形に変形してかけて見ればわからない?

a * a = (n * b + c) * (n * b + c)
=(n*b)^2 + 2 * n * b + c^2

(n*b)^2と2*n*bは明らかにnで割り切れるから、
a*aをnで割った余りはc^2をnで割った余りになる

492 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:07:13 ]
それがoira-1をnで割ったあまりにどう応用できるのか、俺もわからないので>>489は一人で泣かなくていい



493 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:19 ]
>>491
解説ありがとう
なんとなく考え方はわかったがまだしっくりこないのでもうちょい粘ってみる

>>492
気が楽になった

494 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:09:30 ]
oira-1がnで割り切れる=oiraをnで割った余りが1

495 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:35:01 ]
#include <stdio.h>

#define NUMBER 5

int gcd(int a, int b) { return a % b ? gcd(b, a%b) : b; }

int main(void)
{
int i, j, c, n, a, oira;

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

return 0;
}

496 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:37:49 ]
まだ関数と{? : }は習ってないから使っちゃいけないんだ
あくまで標準入出力とfor, while, if だけで

497 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:39:35 ]
使っちゃいけないという思い込み。
本当に使うなといわれた?

498 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:43:13 ]
思い込みだな
使っちゃいけないことは無いだろうが使わないでできるならそれに越したことはないかと

499 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:49:33 ]
そんなことしてる間に
>>491>>494のおかげで理解できました
理解できただけで次似たようなコード書くとき思いつくかどうかは別だけど

500 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:52:52 ]
countを求めるのはnとaが互いに素であることがわかってからの方がいい。

501 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 21:58:04 ]
[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 名前:デフォルトの名無しさん mailto:sage [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;
}



503 名前:501 mailto:sage [2010/06/08(火) 22:00:45 ]
問題文がちょっと抜けてました。訂正させてください。

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

×この処理を行うプログラムを記述する

504 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:01:35 ]
>>500
助言d
それはその方が無駄にφ(n)(=count)を求めなくて済むからか?
だとしたらその通りかもしれないから今後の参考にするわ

505 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:12:55 ]
>>504
そう。
できるだけ必要のない無駄な処理はしないってのが大事。

507 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:02 ]
>>505
どうぞ
google-styleguide.googlecode.com/svn/trunk/cppguide.xml


508 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:14:50 ]
何のIDE使ってるか知らないけど
vs2008使ってる俺は適当に書いてから「編集→詳細→選択範囲のフォーマット」で整形してる

509 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:20:58 ]
www.textdrop.net/google-styleguide-ja/cppguide.xml
あえてこっちを載せないことに悪意を感じる

510 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:25:31 ]
>>509
知らなかったんだごめんよ

511 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:39:58 ]
>>502が理解できない
てか発想が秀逸すぎて手に負えない

512 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:43:14 ]
最大公約数をループで求めてるだけ



513 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:50:13 ]
とりあえず褒めとけばいいと思ってない?

514 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 22:52:00 ]
>>501
0<=x,y<=10000を満たす座標の各点についてその点から
最も近い点の色をその点に設定する
ってあるけど

各々の座標の色はどう初期化するべきなの?
なにかしら初期化しておかないと最も近い点の色もなにもないと思うんだけど。

515 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:09:33 ]
引数で与えられた点の色はこっちで好きに決めていいんだろ

516 名前:430 mailto:sage [2010/06/08(火) 23:12:01 ]
>>505
K&R にしておけば後ろ指をさされることはないかと。
ただし私は

int main() {
...
}

とかえている。
emacs(xyzzy) ではこのほうが便利だから。

517 名前:デフォルトの名無しさん mailto:sage [2010/06/08(火) 23:54:47 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
  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 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:13:20 ]
[1] 授業単元:プログラミング演習
[2] 問題文:整数nを入力し、以下のようにサイズnの“N型の図形”を、奇数目入力では”*”、偶数目入力では”+”で表示で表示されるプログラムを作成しなさい。なお、処理の終了はnが0以下の時とする。複合条件やスイッチを用いて作製なさい。
実行例
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,は使用禁止
プログラム形式はサンプル風にお願いします
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10660.txt

519 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 03:19:59 ]
上の実行例の訂正です
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10661.txt

520 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 10:43:14 ]
シルエット
カーディガン
レントゲン
サンドイッチ



523 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 11:01:34 ]
>>501
ideone.com/EtsT0
作ってみたけどなんか違うから、だれか直してくれ

524 名前:デフォルトの名無しさん mailto:sage [2010/06/09(水) 16:11:42 ]
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):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] その他の制限: なし

よろしくお願いします。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<167KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef