C/C++の宿題を片付け ..
646:ロベ
08/06/05 13:49:11
[1] 授業単元:プログラミング
[2] 問題文:BMPファイルの情報(画像サイズ、色数等)を表示する
BMPファイルの画像を上下・左右反転させる
BMPファイルの画像を回転(90、180、270度)させる
BMPファイルのカラー画像をグレースケール化するプログラムの作成
輝度を変換する式は、下記の式を使用すること
Y=0.298912*R+0.586611*G+0.114478*B
※BMPファイルにはWindows形式とOS/2形式があります。どちらにも正しく対応できるように。
※入力ファイル名は、プログラム実行後に聞いてくるものとします。
※出力ファイル名は、プログラム実行後に聞いてくるものとします。
※反転・回転方法の指示は、プログラム実行後に聞いてくるものとします。
※ソースには必ずコメントを書いて下さい。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ 5.5.1 for Win32
[3.3] 言語:C
[4] 期限:6月5日 0:00
[5] その他の制限:無し
よろしくおねがいします
647:デフォルトの名無しさん
08/06/05 14:15:52
>>644-645
嘘を教えるなよ。。。
648:デフォルトの名無しさん
08/06/05 14:22:25
constがどこにかかってるかを考えれば、なんとなくわかるぞ
649:デフォルトの名無しさん
08/06/05 14:50:50
[1] 授業単元:C言語
[2] 問題文:
int 型の2つの数をキーボードから読み込んで,
それらの3乗の和を出力するプログラムを作成せよ。
ただし,2つの数の3乗の和を計算する部分は,
関数 int cubesum(int x, int y) を作成してそれを使え。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2008年6月9日
[5] その他の制限:
650:デフォルトの名無しさん
08/06/05 15:04:16
int cubesum(int x, int y)
{
return x*x*x + y*y*y;
}
651:デフォルトの名無しさん
08/06/05 18:07:23
#include <stdio.h>
int cubesum(int x, int y)
{
return x*x*x + y*y*y;
}
int main()
{
int a, b;
printf("2つの整数を入れてください:");
scanf("%d %d", &a, &b);
printf("%d^3 + %d^3 = %d\n", a, b, cubesum(a, b));
return 0;
}
652:デフォルトの名無しさん
08/06/05 19:31:10
.;;;;彡彡ミミ;;;
;;;;彡彡ミミミ;;;
;;;;彡彡ミミミ;;;
;;;;;;彡彡ミミミ;;;;;
;;;;彡ミ彡ミミミミ;;;
;;;彡ミ彡;;人;;;ミ彡ミ;;;
;;;彡ミ彡ノ ヽ;ミ彡ミ;;;
;;;彡ミ;;;;ノ.人 ヽ;彡ミ;;;
;;;彡ミ;;;ノ | ..| ;ヽ彡ミ;;;
;;;彡ミ;;ノ .| | ヽ彡ミ;;;
;;;彡ミ;ヽ |.・.| /彡ミ;;;
;;;彡ミ;;ヽ| .| /;;彡ミ;;;
.;;;;;;;ミ;;;ヽ|( )|./ミ彡;;;;
..;;;彡;;;;ヽ| .|/;;;ミ;;;
..;;;;.彡;|.|;;ミ;;;;;....
;;;;;彡;彡|;;ミミミ;;;;
;;彡彡彡*ミミミミ;; マンコ
;;;;彡彡ミミミ;;;
;;彡彡ミミミ;;;
653:デフォルトの名無しさん
08/06/05 19:54:07
>>550
の問題にメイン文も付け加えた形で教えて欲しいです。
よろしくお願いいたします。
654:デフォルトの名無しさん
08/06/05 19:56:27
マルチで申し訳ないです。
本格的にハマってしまい、ヘルプをお願いさせてください。
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
2次元配列(hai[10][10])を用いる。
各マスには予め1または2がランダムで入力されている。
100マスの中で、1と2のサイズを計測せよ。
なお、境界は存在せず、トーラス状とする。
例)
1,1,1
2,1,1
1,1,1
であれば、
1:8
2:1
1,1,1
2,1,2
1,2,1
であれば、
1:6(トーラス状であるため、左下と右下も一つの塊と見る)
2:2(トーラス状であるため、中段の左右は一つの塊と見る),1
[3] 環境
[3.1] 言語: どちらでも可
[4] 期限: 6月10日
解決の糸口が見つかりません。
どうかよろしくお願いします。
655:639
08/06/05 20:40:30
>>639のところで回答してくださりました方々
ありがとうございます
課題ですのでgccで固定という以上
ほかの方法では試せませんのでなんともいえませんが
自分でもいろいろと試そうかと思います
656:デフォルトの名無しさん
08/06/05 20:53:40
>>654
無理やり1レスにまとめたからいろいろ足りないけど
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 10
char hai[SIZE][SIZE], check[SIZE][SIZE];
int f(int x, int y, int n)
{
if(check[x][y] || hai[x][y]!=n) return 0;
check[x][y] = 1;
return 1 + f(x, (y+1)%SIZE, n) + f(x, (y+SIZE-1)%SIZE, n)
+ f((x+1)%SIZE, y, n) + f((x+SIZE-1)%SIZE, y, n);
}
int main(void)
{
int i, j, c[2][50] = {0}, count[2] = {0};
srand(time(NULL));
for(i=0; i<SIZE; i++) for(j=0; j<SIZE; j++) hai[i][j] = rand()%2+1;
for(i=0; i<SIZE; i++) {
for(j=0; j<SIZE; j++) {
int n = f(i, j, hai[i][j]);
if(n) c[hai[i][j]-1][count[hai[i][j]-1]++] = n;
}
}
for(i=0; i<2; i++) {
printf("%d : ", i+1);
for(j=0; j<count[i]; j++) printf("%d ", c[i][j]);
putchar('\n');
}
return 0;
}
657:654
08/06/05 21:11:52
>>656
ありがとう!
自分は3日間超絶悩んだのに、あっさり出来てるw
動作を確認させていただいたのですが、
#define SIZE 100
に変更した場合は、
int i, j, c[2][5000] = {0}, count[2] = {0};
と変更すれば、
SIZEが大きくなっても検索できるようですね。
もしよろしければ、いろいろ足りない部分とお名前を・・・・。
658:デフォルトの名無しさん
08/06/05 21:12:31
お名前ってww
659:デフォルトの名無しさん
08/06/05 21:17:24
足りないってのは最後にソートしたほうがいいんじゃないかなってこと。
660:デフォルトの名無しさん
08/06/05 21:18:00
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク):
次の規則に従い、入力された文字列を変換して表示する。
T ・・・タブとして空白を2つ入れる(Tは表示しない)
N ・・・改行する(Nは表示しない)
+ ・・・空白を1つ入れる(+と空白を置きかえる)
その他・・・そのまま表示する。
$ ・・・¥に変換する。($は表示しない。)
$の後に入力されてる数値を円に換算する。換算率は1$を120円とする。
行の先頭の英小文字は英大文字に変換する。
実行結果
データを入力してください:aprilT$012-NmayTT$023+Njune T$026+N
April \01440-
May \02760
June \03120
[3] 環境
[3.1] OS: windouws
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:どちらでも可
[4] 期限: 明日中
[5] その他の制限:switch使用
C言語歴2ヶ月の課題なんで低レベルとは思いますが、よろしくお願いします。
661:デフォルトの名無しさん
08/06/05 21:18:40
>>625
20x20の行列を用意後、画面から入力したサイズ分だけを使用。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
662:654
08/06/05 21:24:32
えっと、ちなみにソートするにはどうすればw
c[i][j]と c[i][j+1]を比較させまくるのかnya。
663:デフォルトの名無しさん
08/06/05 21:30:16
バブルソートでもクイックソートでもすきなのでいいだろw
>>654が宿題に出されるレベルならソートぐらいできんだろ
664:654
08/06/05 21:42:29
>>663
おk。
本当にありがとねノシ
665:デフォルトの名無しさん
08/06/05 21:45:24
ヘボいなーおまえら
プログラミング向いてないよ
666:デフォルトの名無しさん
08/06/05 21:52:16
トーラスってなんじゃろうと思ってみてた。
ドラクエの地図の海と陸地の数およびサイズを知りたいって書いてくれればよかったのに。。
667:デフォルトの名無しさん
08/06/05 21:58:42
[1]プログラミング
[2]問題文
多次元配列を利用して、5人の3教科(国語・数学・英語)の@最高点A平均点それぞれのソースを作れ。
[3-1]windows
[3-2]gcc
[3-3]C言語
[4]明日まで
よろしくお願いいたします。
668:デフォルトの名無しさん
08/06/05 22:10:48
>>664
マルチの片割れにも終わったことを知らせんかい
669:デフォルトの名無しさん
08/06/05 22:12:13
なんで偉そうなの?
670:デフォルトの名無しさん
08/06/05 22:20:55
>>660
URLリンク(kansai2channeler.hp.infoseek.co.jp)
671:デフォルトの名無しさん
08/06/05 22:48:13
>>670
ありがとうございます、助かりました。
こんなに早く応えがくるなんて、良い意味で驚きました
672:デフォルトの名無しさん
08/06/05 22:51:04
>>664,669
礼儀も知らんのかボケ
673:デフォルトの名無しさん
08/06/05 22:55:17
>>671
タイミングさえ合えばちゃんとした回答者がいるスレだよ
674:デフォルトの名無しさん
08/06/05 23:00:16
>>672
なんで回答者でもないあなたが偉そうなの?
675:654
08/06/05 23:00:26
ちょw
669は自分じゃない。
676:デフォルトの名無しさん
08/06/05 23:01:30
>>674
っつか、マジで態度が悪いぞ、お前。社会じゃそれじゃやっていけねーよ
失せろクズガキ
677:デフォルトの名無しさん
08/06/05 23:01:57
>>534をお願いしますm(_ _)m
678:デフォルトの名無しさん
08/06/05 23:04:23
>>535
679:デフォルトの名無しさん
08/06/05 23:05:35
>>674
会社の同僚と何かあった時に上司から何か言われても
「同僚との問題なのになんであなたがそんな事言うの?」
とか言うんか? 消えろ
680:デフォルトの名無しさん
08/06/05 23:07:03
>>674
っつか、偉いとかって話じゃないだろ。完全にお前が態度が悪い
ただそれだけ。何で自分が指摘されたのか、分からないのか?
だとしたら相当痛いぞ、お前。反論する前に自分が起こしている行動
発言を自覚しろ。干されんぞ。人間社会はお前一人の都合や
思う通りには動いてないからw
681:デフォルトの名無しさん
08/06/05 23:09:21
>>667
お願いしますm(__)m
682:デフォルトの名無しさん
08/06/05 23:11:22
なんか>>674の人気に嫉妬しつつ、本当に>>672は回答者ではないのだろうか?
683:デフォルトの名無しさん
08/06/05 23:11:27
#include <sys/param.h>
#include <stdio.h>
int z(int y, int m, int d) {
int a = y / 100, b = y % 100;
return ((int) (m * 2.6 - 0.2) + d + b + (int) b / 4 + (int) a / 4 + 5 * a) % 7;
}
int zeller(int y, int m, int d) {
return m < 3 ? z(y - 1, m + 10, d) : z(y, m - 2, d);
}
int main(int argc, char *argv[]) {
int year, month, nf13 = 0;
for (year = 2001; year <= 2100; year++) {
for (month = 1; month <= 12; month++) {
if (zeller(year, month, 13) == 5) {
nf13++;
}
}
}
printf("%d\n", nf13);
return 0;
}
684:デフォルトの名無しさん
08/06/05 23:12:26
>>681
はやる気持ちは分からんでもないけど、もうちょっとまとう。
ギリギリまで宿題やらなかったのもちょっと悪いとおもうお
685:デフォルトの名無しさん
08/06/05 23:14:01
>>667
問題ってほんとにこれだけ?
制限とかかいとかないと
「それなんですか?分からないのでもっと簡単なものを。。。」
というハメになっちゃうかもだよー
686:デフォルトの名無しさん
08/06/05 23:14:18
#include <stdio.h>
int main(void)
{
int i, j, data[3][5] ={0}, max[3];
double ave[3];
char *kamoku[3] = {"国語","数学","英語"};
for(i=0; i<3; i++) {
ave[i] = max[i] = data[i][0];
for(j=1; j<5; j++) {
ave[i] += data[i][j];
if(max[i] < data[i][j]) max[i] = data[i][j];
}
ave[i] /= 5;
}
for(i=0; i<3; i++) printf("%s 最高点:%d 平均点%.2f\n", kamoku[i], max[i], ave[i]);
return 0;
}
687:デフォルトの名無しさん
08/06/05 23:14:25
多次元配列を利用
int point[5][3]={{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}};
688:デフォルトの名無しさん
08/06/05 23:16:32
わざわざ多次元って言ってるんだから、二次元程度じゃ許されない。
689:デフォルトの名無しさん
08/06/05 23:17:45
>>682
人気じゃなくて一人がファビョってるだけにしか見えねーよw
690:デフォルトの名無しさん
08/06/05 23:18:10
多次元っていったってどう考えても2次元で十分だろ。
691:デフォルトの名無しさん
08/06/05 23:18:48
>>688
口だけじゃなくてソースplz
692:デフォルトの名無しさん
08/06/05 23:19:48
せいぜい平均と最高点をまとめて
もひとつ2次元配列にするくらいかな
693:デフォルトの名無しさん
08/06/05 23:25:58
679はこのスレの上司だそうですw
694:デフォルトの名無しさん
08/06/05 23:26:48
こんなところで宿題丸投げする学生?相手に語ってるほうもどうかとw
695:デフォルトの名無しさん
08/06/05 23:26:50
>>689 = >>691 = >>674 必死だなぁ・・・IDが無いからって、他人のふりしようとか
白々しいぞお前。やたらと口出しする一言居士って、友達のいない構ってちゃんだろ?
696:デフォルトの名無しさん
08/06/05 23:26:56
IDが出ないと一人芝居が楽でいいよな
697:デフォルトの名無しさん
08/06/05 23:27:57
>>693 = >>689 = >>691 = >>674
しつけぇ・・・お前、このスレに何の用があって来てんだ?
無駄口叩く奴って、口先だけで役に立たない上に
自分が否定されるとファビョるからうぜぇ。
698:デフォルトの名無しさん
08/06/05 23:28:17
なんだこれ
699:デフォルトの名無しさん
08/06/05 23:30:05
ケフィア、、でしょうか?
700:デフォルトの名無しさん
08/06/05 23:31:23
なんで691まで一緒にされてるのかわからんw
701:デフォルトの名無しさん
08/06/05 23:33:12
二つの整数値を読み込んで、
小さい方の数以上で大きい方の数以下の整数を全て加えた値を
表示するプログラム。
コンパイラ gcc
OS Windows
言語 C
お願いします。
702:デフォルトの名無しさん
08/06/05 23:34:33
何度か書いてるが、Windows + gccってのはほんとにそういう環境なのかなあ。
703:デフォルトの名無しさん
08/06/05 23:35:20
>二つの整数値を読み込んで、
標準入力でOK?
704:デフォルトの名無しさん
08/06/05 23:36:07
>>702
Cygwin + gcc かもね
705:デフォルトの名無しさん
08/06/05 23:36:54
a < b
((1+b) * b - (1 + a) * a ) / 2
706:デフォルトの名無しさん
08/06/05 23:37:44
>>626
わかりました。ありがとうございます。
707:デフォルトの名無しさん
08/06/05 23:37:54
>>701
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d", a > b ? (a + b) * (a - b + 1) / 2 : (a + b) * (b - a + 1) / 2);
return 0;
}
708:デフォルトの名無しさん
08/06/05 23:39:12
>>703
標準かどうかはよくわかりませんが、scanfで読み取る形です。
709:デフォルトの名無しさん
08/06/05 23:42:00
>>707
すいません!書き忘れました。
Do文を使って最後にWhile文を追加する形でした。
710:デフォルトの名無しさん
08/06/05 23:44:04
>>704
cygwin + gcc だとして、実行環境はWindows?cygwin?というのも
あるし、Xかもしれない。
といったところで実行環境に依存するような宿題については
そのような曖昧な環境記述は無かったような気もするし、、、
気にしないほうがいいのかなあ?
711:デフォルトの名無しさん
08/06/05 23:45:04
なんだそりゃw
#include <stdio.h>
int main(void)
{
int a, b, sum = 0;
scanf("%d%d", &a, &b);
if(a < b) do { sum += a++; } while(a<=b);
else do { sum += b++; } while(b<=a);
printf("%d", sum);
return 0;
}
712:デフォルトの名無しさん
08/06/05 23:45:10
>>1より。
> ・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
きをつけてね
713:デフォルトの名無しさん
08/06/05 23:45:33
>>707
初心者向けにしましょうw
714:デフォルトの名無しさん
08/06/05 23:45:38
>>701
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", (a+b)*(abs(a-b)+1)/2 );
return 0;
}
715:デフォルトの名無しさん
08/06/05 23:49:32
>>713
初心者の定義は何?自分が理解できる=初心者向け?
理解できない=初心者じゃない?とか?
716:デフォルトの名無しさん
08/06/05 23:51:02
パッと見であっさり理解できるか
ちょっと見てみてあぁなるほどと思えるか
の差じゃない?
717:デフォルトの名無しさん
08/06/05 23:51:48
>>711
++はどういう意味なんでしょうか?
718:デフォルトの名無しさん
08/06/05 23:52:21
>>715
いちいち絡むなよw
719:デフォルトの名無しさん
08/06/05 23:54:13
>>717
a++ は a = a + 1
720:デフォルトの名無しさん
08/06/05 23:55:29
>>717
a++ = a = a + 1
721:デフォルトの名無しさん
08/06/05 23:58:06
その=の使い方には問題があるぞ
722:デフォルトの名無しさん
08/06/05 23:58:49
ではsum+=とは何なのでしょうか?
初心者ですいません
723:デフォルトの名無しさん
08/06/06 00:00:32
sum += a は sum = sum + a
724:デフォルトの名無しさん
08/06/06 00:00:50
sum = sum + 1
725:デフォルトの名無しさん
08/06/06 00:01:27
つまり sum += a++; は
sum = sum + a;
a = a + 1;
726:デフォルトの名無しさん
08/06/06 00:05:30
>>725
cのとっつき難さはそこなんだろうな。
727:デフォルトの名無しさん
08/06/06 00:06:39
A += B
A -= B
A *= B
A /= B
A = A 演算子(+-*/) B
728:デフォルトの名無しさん
08/06/06 00:06:45
レスをくれた方々ありがとうございます。
色々勉強になりました。
ちょっと複雑に考えすぎていたようです。
729:デフォルトの名無しさん
08/06/06 00:09:36
プログラムは単純に考えよう。
プログラムを書くこときも、トリッキーなことをせずに簡単に書こう。
って、先輩にならったな。
730:デフォルトの名無しさん
08/06/06 00:10:02
>>725
逆も上げとくわ
sum += ++a;は
a = a + 1;
sum = sum + a;
731:デフォルトの名無しさん
08/06/06 00:11:29
>>729
sum += a++ が一番簡単で単純だろ?
732:デフォルトの名無しさん
08/06/06 00:12:13
直感的ではないよ
733:デフォルトの名無しさん
08/06/06 00:15:09
>>731
そうだな。
こっちのPart28終わりからPart29の頭にかけてa++関連の未定義問題で論争があったくらいだ。
C言語なら俺に聞け(入門篇) Part 29
スレリンク(tech板)
734:733
08/06/06 00:15:52
>>733は>>731への同意ではなく>>732への同意だ。
735:デフォルトの名無しさん
08/06/06 00:17:36
インクリメントを禁止してるプロジェクトに関わった事があったな。。。。。
ちょっと新鮮だった。
736:デフォルトの名無しさん
08/06/06 00:21:07
実際のところたとえば
a = a + 1;
sum = sum + a;
を
sum += ++a;
としたところでコンパイル後のバイナリレベルでどのくらいクロックやメモリ
を稼げるものなんだ?
それと引き換えに新人が保守するかも知れないリスクとの天秤にかけた場合の
コストも。
737:デフォルトの名無しさん
08/06/06 00:23:16
まだ学生だからわからんのだけど仕事でやってて、それに引っかかる人いるの?
738:デフォルトの名無しさん
08/06/06 00:24:10
万人にわかるようにするんだよ。
739:デフォルトの名無しさん
08/06/06 00:25:54
そんなのもわからないやつにソース触らせんなよw
740:デフォルトの名無しさん
08/06/06 00:27:30
しるかよw
そういう規約をつくってるんだからw
あ、デクリメントも禁止されてたよ。
741:デフォルトの名無しさん
08/06/06 00:28:09
>>737
ソースって案外長生きなんだよ。
COBOLとかあれだけクラサバ登場で無くなるといわれたのに
今だに残ってる。
webの発達でc出来る人口が減ってるのに、新人にわざわざ
今の程度の説明で時間取られたくないだろ?
742:デフォルトの名無しさん
08/06/06 00:29:04
>>736
最適化がかかればクロックやメモリは同等になるはず
好きな方を選べばいいだけ
743:デフォルトの名無しさん
08/06/06 00:29:54
インクリメントすら理解できないなら他の部分が大丈夫なわきゃないと思うんだが。
744:デフォルトの名無しさん
08/06/06 00:31:37
前に、++aとa++って、何が違うんですかって、聞かれたことがあった。
745:デフォルトの名無しさん
08/06/06 00:35:52
それだけが1行にあれば機能は同じだけど、
条件判定の中にあったりすると面倒だし
この間論争になったのは
if (xxxxxx) printf("%d",(a++)*(a++));
こんな感じの結果の違いでもめてたし。
746:デフォルトの名無しさん
08/06/06 00:36:21
それ論争以前の未定義だから
747:デフォルトの名無しさん
08/06/06 00:37:33
>>746
新人がインクリメント覚えて使い出してこんなの書かれると
また教える羽目になるでしょ。
だったら素直にインクリメントなどは使うなとしたほうがいい。
748:デフォルトの名無しさん
08/06/06 00:39:46
なんていうか、C言語の省略した記述って
メモリやCPUなんかのハード資源が極端に
少なかったころのゲーム開発と似てて
みみっちいという気がする。
749:デフォルトの名無しさん
08/06/06 00:40:29
それを論争とか言っちゃう人間が何を教えんの?
750:デフォルトの名無しさん
08/06/06 00:49:14
なんでいまさら宿題スレでインクリメントが問題視されるのかわからん
751:デフォルトの名無しさん
08/06/06 01:32:20
とても難しい問題が来ました
しかし馬鹿な私と違って非常に優秀な諸兄にはわけないでしょう
[1] 授業単元:C言語研修
[2] 問題文(含コード&リンク):
1から45の数(合計値)は1から9の数(要素)の和で作ることができる。(要素に同じ数を使わない)
例えば合計値6は最大3つ(要素数)の要素の和でつくることができ、要素数1であれば6、要素数2で
あれば1+5と2+4の2通り、要素数3であれば1+2+3でつくる。この組み合わせで全てである。
合計値と要素数から要素の和の組み合わせ全てを計算する再帰関数を作れ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: Microsoft Visual C++ 6.0
[3.3] 言語: C言語
[4] 期限: 起源はありませんが優秀な貴方方の手に掛かれば瞬殺でしょう
[5] 制限はありません。貴方方の持っている全ての知識を注ぎ込んじゃって構いません
752:デフォルトの名無しさん
08/06/06 01:36:25
>しかし馬鹿な私と違って非常に優秀な諸兄にはわけないでしょう
こういっておけば馬鹿が調子こいてやってくれるよwプゲラ
という主の顔が浮かぶ
753:デフォルトの名無しさん
08/06/06 01:54:21
>>751
#include<stdio.h>
int resolve_sub(int total, int num, int min) {
static int ans[9], anslen = 0;
int i, j;
if(!num)
return !total;
for(i = min; i <= 9 && i <= total; i ++) {
ans[anslen ++] = i;
if(resolve_sub(total - i, num - 1, i + 1)) {
for(j = 0; j < anslen ; j ++)
printf("%d ", ans[j]);
printf("\n");
}
anslen --;
}
return 0;
}
void resolve(int total, int num) {
resolve_sub(total, num, 1);
}
int main() {
resolve(30, 6); /* (例)30を6個の和に分ける */
return 0;
}
754:デフォルトの名無しさん
08/06/06 02:25:34
#include <stdio.h>
void f(int size, int n, int *p)
{
static int pos = 0, start = 1;
int i;
if(pos==size-1) {
p[pos] = n;
for(i=0; i<size; i++) printf("%d ", p[i]);
putchar('\n');
return;
}
for(i=start; i*2<n; i++) {
start = i + 1;
p[pos++] = i;
f(size, n-i, p);
pos--;
}
}
int main(void)
{
int num, amount, *p;
printf("要素数を入力して下さい:");
scanf("%d", &num);
printf("合計数を入力して下さい:");
scanf("%d", &amount);
p = malloc(sizeof(int) * num);
f(num, amount, p);
return 0;
}
755:デフォルトの名無しさん
08/06/06 02:34:17
問題読み違えた。
1から45まで限定で1から9しか使っちゃダメなのか。
756:デフォルトの名無しさん
08/06/06 02:50:08
>>751
#include<stdio.h>
int O00O(int OOO0){
if(OOO0%2) return OOO0/2*(OOO0+1);
return (OOO0+1)/2*OOO0;
}
void OOOO(int O0OO[], int OOO0, int OO0O, int OO00, int O0000){
int O, O000;
if(OO00<=1){
O0OO[OO00]=OOO0;
for(O=1;O<OO0O;O++) printf("%d+", O0OO[O]);
printf("%d\n", O0OO[OO0O]);
return;
}
O000=(OOO0-O00O(OO00-1)-1)/OO00;
for(O=O0000;O<=O000;O++){
O0OO[OO00]=O;
OOOO(O0OO, OOO0-O, OO0O, OO00-1, O+1);
}
}
void O0O0(int OOO0, int OO0O){
int O0OO[1000];
if(OO0O>=sizeof(O0OO)/sizeof(O0OO[0])) return;
OOOO(O0OO, OOO0, OO0O, OO0O, 1);
}
int main(void){
O0O0(100, 10);
return 0;
}
757:デフォルトの名無しさん
08/06/06 03:11:13
>>756
難読化乙
758:デフォルトの名無しさん
08/06/06 11:37:44
#include <stdio.h>
#include <float.h>
int main(void)
{ float f;
double x;
long double ld;
printf("\nTesting the precision of float, double, and long double : \n");
f = 1.0f + 1.0e-7;
printf(" 1.0 + 1.0e-7 = %.10f\n", f);
f = 1.0f + 1.0e-8;
printf(" 1.0 + 1.0e-8 = %.10f\n", f);
x = 1.0l + 1.0e-15;
printf(" 1.0 + 1.0e-15 = %.20lf\n", x);
x = 1.0l + 1.0e-16;
printf(" 1.0 + 1.0e-16 = %.20lf\n", x);
ld = 1.0L + 1.0e-19;
printf(" 1.0 + 1.0e-19 = %.30Lf\n", ld);
ld = 1.0L + 1.0e-20;
printf(" 1.0 + 1.0e-20 = %.30Lf\n", ld);
printf("\nThe experiment above is explained by constants from float.h :\n");
printf(" precision of float : %e\n", FLT_EPSILON);
printf(" precision of double : %.15le\n", DBL_EPSILON);
printf(" precision of long double : %.30Le\n", LDBL_EPSILON);
return 0; }
表示された結果のうち、
1.0 + 1.0e-7 が 1.0000001 にならず、同様に
1.0 + 1.0e-15 が 1.000000000000001 にならず、
1.0 + 1.0e-19 が 1.0000000000000000001 という、きれいな数にならない理由を、FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON との関係から説明してもらえないでしょうか。
よろしくお願いします。
759:デフォルトの名無しさん
08/06/06 11:43:55
>>758
単純な話管理できる桁があるので小数点側の切捨てが行われてるだけかと。
たとえば
1.0 + 1.0e-7 を 0.1 + 1.0e-7 や 0.01 + 1.0e-7 とした場合
おそらく.0000001は保持されると思われ。
760:デフォルトの名無しさん
08/06/06 12:01:07
>>759
それをFLT_EPSILON, DBL_EPSILON, LDBL_EPSILON との関係から考察しなきゃならないんですけどいまいちわからなくて・・・
761:759
08/06/06 12:05:21
>>760
URLリンク(www.asahi-net.or.jp)
ここがいいかも
イプシロン(誤差幅)だそうです。
762:デフォルトの名無しさん
08/06/06 12:06:34
ググったら直ぐ出てきたんだが…怒
763:デフォルトの名無しさん
08/06/06 12:32:01
>>758
質問と関係ないが
printfの %l は整数にしか使えないと思うんだ
764:デフォルトの名無しさん
08/06/06 12:41:53
複素数を求めるプログラムなのですけど、
#include <stdio.h>
#include <math.h>
typedef struct {
double rel;
double imp;
} complex;
double mulcompl(complex x, complex y); /* 関数の戻り値の型を定義 */
int main(void){
complex c1, c2, c3;
c1.rel = 3.2; c1.imp = 2.7;
c2.rel = 2.5; c2.imp = 1.8;
c3 = mulcompl( c1 , c2 ); /* complex変数c1,c2を仮引数としてmulcompl関数を呼び出す */
printf("複素数の積 \n");
printf("( %.2f + i %.2f ) * ", c1.rel, c1.imp);
printf("( %.2f + i %.2f ) = ", c2.rel, c2.imp);
printf("( %.2f + i %.2f )\n", c3.rel, c3.imp);
return 0;
}
double mulcompl(complex x, complex y) /* 関数の戻り値の型を定義 */
{
complex z;
/* 仮引数x,yを使って複素数の掛け算を計算する */
z.rel = x.rel * y.rel - x.imp * y.imp;
z.imp = x.rel * y.imp + x.imp * y.rel;
return z;
}
それでどうしてエラーが取れないのですがどこが間違っているのか分かりません。
どなたかお願いします。
765:デフォルトの名無しさん
08/06/06 12:42:42
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):forkによる子プロセスの生成
子プロセスを2つ生成して、それぞれに、fork1, fork2 のプログ
ラムを実行させるようなプログラムを作成しなさい。
///fork1.c///
URLリンク(kansai2channeler.hp.infoseek.co.jp)
///fork2.c///
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:6月11日
前回は本当にありがとうございました。よろしくお願いします。
766:ロベ
08/06/06 12:43:46
>>646
お願いします!!!!
767:デフォルトの名無しさん
08/06/06 12:58:20
いまどきこれはないだろ。VC++が無料で使えるってのに。
> [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1 for Win32
768:ロベ
08/06/06 13:00:53
VC++は家でつかってますb
769:デフォルトの名無しさん
08/06/06 13:07:42
>>764
double mulcompl(complex x, complex y) → complex mulcompl(complex x, complex y)
770:デフォルトの名無しさん
08/06/06 13:11:37
>>766
wikipediaみたらOS/2 2.xのヘッダ構造書いてなかったんでやる気無くした。
771:ロベ
08/06/06 13:14:11
>>770
いちようBMPのヘッダについて書いてあるページは見つけたけど
プログラムの技術がないからできなくて;;
URLリンク(www.kk.iij4u.or.jp)
772:デフォルトの名無しさん
08/06/06 13:31:33
とあるゲーム機のSS取るのに使った構造体
typedef struct
{
// char bfType[2];
unsigned long bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned long bfOffBits;
} BmpFileHed;
typedef struct
{
unsigned long bcSize;
short bcWidth;
short bcHeight;
unsigned short bcPlanes;
unsigned short bcBitCount;
} BmpFileInfoOS2;
typedef struct
{
unsigned long biSize;
long biWidth;
long biHeight;
unsigned short biPlanes;
unsigned short biBitCount;
unsigned long biCompression;
unsigned long biSizeImage;
long biXPixPerMeter;
long biYPixPerMeter;
unsigned long biClrUsed;
unsigned long biClrImporant;
} BmpFileInfoWindows;
773:デフォルトの名無しさん
08/06/06 13:31:53
残り
typedef struct
{
BmpFileHed hed;
BmpFileInfoWindows Info;
char data[480*272*4];
} BmpWindows;
774:デフォルトの名無しさん
08/06/06 13:32:48
でも欠点があってgccでコンパイルすると共通のヘッダ部分に
アライメントが入る。
誰だよBMの後に調整用の領域作らないヘボいフォーマット決めたの
775:デフォルトの名無しさん
08/06/06 13:35:11
typedef struct
{
BmpFileHed hed;
BmpFileInfoWindows Info;
char data[2];
} BmpWindows;
typedef struct
{
BmpFileHed hed;
BmpFileInfoOS2 Info;
char data[2];
} BmpOS2;
776:ロベ
08/06/06 13:50:42
>>772 >>773 >>775
この構造体をどう使えば・・・
777:デフォルトの名無しさん
08/06/06 13:54:30
>>766
期限に間に合わなかったので作るのやめたよ
778:ロベ
08/06/06 13:59:04
>>777
6月10日まで期限延ばしてもらえたので
お願いできませんか?
779:777
08/06/06 14:00:06
>>778
作りかけのやつ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
780:772
08/06/06 14:03:19
>>779
unsigned long bcSize;(unsigned long biSize;)に該当する
部分を
unsigned long bfOffBits;
の後に持ってくると楽
781:デフォルトの名無しさん
08/06/06 14:05:06
BMとかどうせ使わないし読み捨てて構造体から排除しちゃえ。
782:ロベ
08/06/06 14:05:22
>>777
どこまでできてるんですか?
783:ロベ
08/06/06 14:06:25
↑
>>779 の間違え
784:デフォルトの名無しさん
08/06/06 14:06:46
>>781
以前別スレでやってたけど
#pragma pack(push, 1)
この間に調整されたくない構造体を記述
#pragma pack(pop)
するといいらしい
785:デフォルトの名無しさん
08/06/06 14:17:44
>>782
こいついったいなんなの?
ソースがあるのにどこまでできているか聞くなんて。
自分で確認もできないのなら何でも適当なものをでっちあげてやれば、
ありがたがってそのまま提出しちゃうんじゃないかw
786:777
08/06/06 14:19:47
>>774
gccなら
struct s0 {
char a, b, c;
} __attribute__ ((packed));
でパディングなし
787:デフォルトの名無しさん
08/06/06 14:21:14
>>786
おーそうなんだ
継続して作ってないなら続きやろうか?
788:ロベ
08/06/06 14:22:28
>>787
おねがいできますか?
789:777
08/06/06 14:32:31
>>787
どうぞ
自分はグレースケール変換だけやってみる
790:787
08/06/06 14:53:08
うほ>>779のを見てると自分の組み方が変則的なのかわかるorz
我流でやってるので悩むorz
791:デフォルトの名無しさん
08/06/06 15:06:00
問03
学科の出席簿作成。
15人分の学生を表示し、入力により内容を変動させる。
表示順番:
出席表
<入力>学生番号0〜14
<入力>曜日番号0〜6
<入力>時限番号0〜3
<入力>出欠番号0〜1
<入力>学生番号0〜14の時に99を入力するとプログラム終了。
頼む。
792:デフォルトの名無しさん
08/06/06 15:10:28
>>646の例題で不明な点があるんだけど
ビットカウントが1,4,8のときはカラーパレットに対して処理するのか?
793:777
08/06/06 15:19:54
>>792
もうそれで作りつつある
switch(bit_count) {
// 2値なのでスケール化はできない
case 1:
printf("2値画像のため変換しません\n");
return;
// パレットのみ変更
case 4:
case 8:
pal_count = 1 << bit_count;
for (i = 0; i < pal_count; i++) {
if (os == BMP_OS2) {
y = (unsigned char)(pal3[i].rgbRed * YR + pal3[i].rgbGreen * YG + pal3[i].rgbBlue * YB);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
}
else if (os == BMP_WIN) {
y = (unsigned char)(pal4[i].rgbRed * YR + pal4[i].rgbGreen * YG + pal4[i].rgbBlue * YB);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
fwrite(&y, 1, 1, out_fp);
y = 0;
fwrite(&y, 1, 1, out_fp);
}
}
794:デフォルトの名無しさん
08/06/06 15:21:07
いつまでだらだらとスレ消費すんだよw
795:デフォルトの名無しさん
08/06/06 15:21:58
フルフォーマット考えると結構面倒だなw
796:デフォルトの名無しさん
08/06/06 15:26:22
>>777
どうする?すでに読み込み用プログラム公開してるサイト見つけたんだけど・・・・
797:デフォルトの名無しさん
08/06/06 15:27:35
BMPの圧縮関係ってどう対処すれば正解?
biCompressionフィールドって任意に拡張可能だった希ガス
798:デフォルトの名無しさん
08/06/06 15:29:19
>>797
まあそうなんだけどさ・・・
BMPで圧縮してるのなんてみたことないし。
でも出題した教師はこれを知ってかしらないでか出してるしな。
まともに対応を考えるとLibレベルになるよ。
799:デフォルトの名無しさん
08/06/06 15:29:23
ちなみにBMP関係でこんなの見つけたお
URLリンク(sunpillar2004.hp.infoseek.co.jp)
800:デフォルトの名無しさん
08/06/06 15:30:24
ああ,色深度16bitの時のビットフィールドの意味とかもいろいろあるし,BEかLEかで違いがあるんだっけか・・・?
忘れた
801:796
08/06/06 15:30:30
>>799
URLリンク(www.syuhitu.org)
こっちはLibにしてソースまで公開してくれてる。
802:デフォルトの名無しさん
08/06/06 15:30:57
>>800
あるね
かなり面倒だよ、これ。
803:デフォルトの名無しさん
08/06/06 15:34:54
>>801
それでいいなら,プログラムの著者に連絡とって使ってみたら?
804:デフォルトの名無しさん
08/06/06 15:52:20
[1] 授業単元:メディア情報処理
[2] 問題文(含コード&リンク):
マイク入力からの信号をリアルタイムに解析し、音名を表示するプログラムを作れ
(チューナーみたいなもんですかね?)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C C++
[4] 期限: 6月8日
[5] その他の制限: なし
805:デフォルトの名無しさん
08/06/06 16:00:53
[1] C
[2]URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3]
[3.1] Linux
[3.3] C
[4] 6月10日
[5] 記載されているプログラムを改訂して作ってください
スーパークイーンが求められません
すいませんお願いします
806:kokoro
08/06/06 16:16:03
はじめまして。
今、c言語をやっているのですが、分からないので
問題をのせますので、プログラムを作ってほしいです。
お願いします。
807:kokoro
08/06/06 16:21:12
[1]授業単元:C言語
[2]問題文:
★下記の仕様を満たすプログラムを作成しなさい。
【仕様】 ATM簡易プログラム
▼取引は「預け入れ」「引き出し」「残高照会」の3種類とする。始めに
どの取引をするかを選択させる。0が入力されたらプログラムを終了する。対応していない数字が入力された場合は、
「入力番号が正しくありません」と表示し、入力画面に戻る。
▼どの取引を希望したとしても、次に暗証番号入力を促し、キーボードキーボード入力させる。
▼あらかじめ設定しておいた番号と一致していれば、次の処理(最初に選択した取引)に入る。そうでなければ、
「暗証番号が違います。もう一度入力してください」と表示し、入力させる。
3回失敗したら、「防犯上の理由により、取引を中止します」と表示し、プログラムを
終了する。
▼「預け入れ」を選択した場合は、預け入れ金額を入力させ、合計金額(あらかじめ適当な金額に設定しておく)
を表示し、入力画面に戻る。
▼「引き出し」を選択した場合は、引き出し金額を入力させ、残り金額を表示し、入力画面に戻る。ただし、
1回で引き出せる金額は500,000円までとし、それを超える金額を入力したら「1回で引き出せる金額は
500,000円までです」と表示し、再度入力させる。なお不足の場合は「残高が不足しています」と表示し、
というメッセージと残高を表示し、再度入力させる。
▼「残高照会」を選択した場合は、残高を表示し、入力画面に戻る。
[3]環境
[3.1]OS:windows xp
[3.2]コンパイラ名:bcc32
[3.3]言語:c言語
[4]期限:2008年6月7日
[5]その他:キーボード入力、if文、for文を使って。
お願いします。
808:デフォルトの名無しさん
08/06/06 16:24:49
>>805
8queenってやったことなかったな〜
で、参考になるサイト
URLリンク(www.pro.or.jp)
809:ロベ
08/06/06 16:25:00
>>646の課題はわりと単純なものでもかまいません
よろしくおねがいします
810:ねね ◆ia23AXgoXg
08/06/06 16:30:29
[1] 授業単元: 工学実験(画像処理)
[2] 問題文: 濃度ヒストグラムを伸長(濃度変換)する関数[extend()]を作成せよ
[3.1] OS:WinXP
[3.2] コンパイラ名とバージョン: VisualC++6.0
[3.3] 言語:C++
[4] 期限: 6/9 17:00
[5] その他の制限: 概念くらいしかわかってません…orz
メインプログラムおいときます、無理に使わなくてもいいかと
#include <stdio.h>
#define X 260 /* 画像の横方向の画素数 この例では260 */
#define Y 60 /* 画像の縦方向の画素数 この例では60 */
unsigned char f[Y][X]; /* 入力画像配列 横X画素 ,縦Y画素 */
unsigned char g[Y][X]; /* 入力画像配列 横X画素 ,縦Y画素 */
main()
811:ねね ◆ia23AXgoXg
08/06/06 16:31:12
main()
/* 画像処理を行うメインプログラム */
{
char source[80]; /* 入力ファイル */
char destin[80]; /* 出力ファイル */
unsigned char t; /* 閾値 */
printf("filename(input) ? ");
scanf("%s",source);
printf("filename(output) ? ");
scanf("%s",destin);
printf("threshold ? ");
scanf("%d",&t);
image_input(f,source); /* 画像の入力処理 */
threshold(f,g,t); /* 閾値処理の場合 */
image_output(g,destin); /* 画像の出力処理 */
どうかよろしくお願いします。・・・
812:デフォルトの名無しさん
08/06/06 16:36:16
>>805
for(k=0; k<3&&j>=0; k++, j--) if(i-3<=board[j] && board[j] <= i+3) flag = 0;
を適当なとこに突っ込んでそれに合わせて少しいじればおk
813:デフォルトの名無しさん
08/06/06 16:55:28
>791
#include <stdio.h>
void view(int attend[][7][4])
{
int main(void)
{
int n, d, p, a, attend[15][7][4]={0};
while(0<=fputs("number : ", stdout) && scanf("%d", &n)==1 && 0<=n && n<=14)
{
if(0<=fputs("day : ", stdout) && scanf("%d", &d)==1 && 0<=d && d<=6
&& 0<=fputs("period : ", stdout) && scanf("%d", &p)==1 && 0<=p && p<=3
&& 0<=fputs("attend : ", stdout) && scanf("%d", &a)==1 && 0<=a && a<=1)
{
attend[n][d][p]=a;
view(attend);
}
else
{
fputs("input error.\n", stdout);
}
}
return 0;
}
814:デフォルトの名無しさん
08/06/06 17:05:41
途中で送信しちゃった
void view(int attend[][7][4])
{
int i,j,k;
for(i=0; i<15; i++)
{
printf("student no.%d : \n", i);
fputs(" S M T W T F S\n", stdout);
for(j=0; j<4; j++)
{
printf("period %d : ", j);
for(k=0; k<7; k++)
{
printf("%d ", attend[i][k][j]);
}
putchar('\n');
}
}
}
815:デフォルトの名無しさん
08/06/06 17:09:58
>>807
URLリンク(kansai2channeler.hp.infoseek.co.jp)
816:デフォルトの名無しさん
08/06/06 17:11:23
>>797
っつか、劣化さえずにファイルサイズを小さくするってなら
PNG辺りを
817:デフォルトの名無しさん
08/06/06 17:12:34
>>804
高度すぎてワロタ
818:デフォルトの名無しさん
08/06/06 17:14:42
まあ、最悪マイクからの信号を拾えたとしても
「リアルタイム」で解析し、音名を表示ってえぐいなまた
と言うか音「名」ってなんだ?
819:デフォルトの名無しさん
08/06/06 17:15:22
>>818
ドとかそういうんじゃね?
820:デフォルトの名無しさん
08/06/06 17:16:17
内部で絶対音感を持ってる人に処理させればおk
821:デフォルトの名無しさん
08/06/06 17:18:07
内部で初音ミクが処理してるんですね、わかります
822:デフォルトの名無しさん
08/06/06 17:18:19
MikuMikuVoiceの機能を知りたい手合いか
823:デフォルトの名無しさん
08/06/06 17:21:58
音名ってまた曖昧な
ピアノのド=トランペットのレ=ホルンのソ
実音でいいのにな
824:デフォルトの名無しさん
08/06/06 17:21:58
音名表示のソフトとかフリーであるでしょ
まぁ俺はつくれんがwAPIはむり
825:デフォルトの名無しさん
08/06/06 17:23:04
>>805
スーパークイーン強すぎワロタ
826:デフォルトの名無しさん
08/06/06 17:24:02
>>807
すまん、>>815間違ってるわ
微妙に修正
URLリンク(kansai2channeler.hp.infoseek.co.jp)
827:デフォルトの名無しさん
08/06/06 17:24:45
>>646
グレイスケール化だけ
圧縮には未対応
URLリンク(kansai2channeler.hp.infoseek.co.jp)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5227日前に更新/305 KB
担当:undef