1 :
デフォルトの名無しさん :
2008/10/01(水) 07:28:51 BE:151474728-PLT(18888)
2 :
デフォルトの名無しさん :2008/10/02(木) 20:58:34
age
3 :
kazu :2008/10/02(木) 22:50:19
独学ではじめた者です。 練習問題 ・数値を複数回入力し、最後に"END"と入力された後、それぞれに対し 80以上なら"verygood"、80未満で60以上なら"good"、60未満なら"normal" と表示されるプログラムを作成しなさい。 例) 25(enter押下) 90(enter押下) 73(enter押下) END (enter押下) 25 normal 90 verygood 73 good という問題なんですが、 正解が分かりません。 本にはヒントとして 1 文字の入力にはgets()という標準関数を使用する。 2 "END"との比較にはstrcmp()という標準関数を使用する。 3 文字を数値に変換するには、atoi()という標準関数を使用する。 4 繰り返し文(for、while文)とbreak文 と載っていました。 どなたか教えていただけないでしょうか? よろしくお願いします。
6 名前: ◆7W9NT64xD6 Mail: sage 投稿日: 2008/08/04(月) 17:31:05 [1]C言語応用 [2]2chの掲示板のdatファイルを解析して、レスストリーム(後述)に分解し、 フレーム付きのページで、ストリーム単位に閲覧することができるような HTMLファイルを生成する。Windows/Linux/MacOS共に対応し、コマンドラインで スレURLを与えれば、カレントディレクトリに、取得した時点のYYYYMMDDHHMMSS形式の 名称のディレクトリを作り、そこにフレーム付きページを生成する。 ☆レスストリーム (1)同一スレの別のレスへのアンカーを含まないレスは単一のストリームに含まれる、その ストリームの代表レスとなる。 (3)同一スレの別のレスへのアンカーを含むレスは、指しているレスが所属するストリーム のすべてに含まれる。 ※一つのレスが複数のストリームに含まれることはあり得る。 [3] Windows/Linux /MacOS/gcc/C言語が望ましいがC++でも可 [4] 7月中でしたが8月中に変更
>>3 マルチに答えるのもアレだが
そこまでヒントがあって組めないのはな…
基礎学力の向上がいるだろ。
1000 名前:デフォルトの名無しさん[sage] 投稿日:2008/10/02(木) 20:26:11 では遠慮なく 1000ならオレ様勝手にレベルアップ おめ
>>3 マルチに言うのもなんだが、まずどこで躓いてるのか書かないと答えようがない
そのマルチ先ですでに回答されてるけどねw
12 :
デフォルトの名無しさん :2008/10/03(金) 02:09:13
>>12 各行ごとに説明ってやる気をなくす問題だなw
いっそう無理矢理数行にして・・
>>14 4行でいけるなw
#include<〜> /*ヘッダファイルを読み込む*/
void dft(〜){ 1行で } /*フーリエ変換を行う*/
void idft(〜){ 1行で } /*逆フーリエ変換を行う*/
main(){1行で} /*メイン関数*/
16 :
デフォルトの名無しさん :2008/10/03(金) 11:11:25
>>14 すみません、全部でなくとも大事なとこにだけ説明を入れてもらえれば大丈夫です。
>>16 フーリエ変換といってもFFTなのかDFTでいいのか
どちらにしても検索したらソースたくさんあるからググってみれ
[1] 授業単元:アルゴリズム概論 [2] 問題文:システムを想定せよ [3] 環境 [3.1] OS:WindowsXP [3.2]コンパイラ名とバージョン:Visual Studio 2005 [3.3] 言語:C [4] 期限:明日 [5] その他の制限:特になし
[1] 授業単元:C言語 [2] 問題文(含コード&リンク): ファイルからいくつかの0以上の整数を読み込み,小さい整数から順に並び替えて, その結果をファイルに保存するプログラムを作成せよ. [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C言語 [4] 期限: ([2008年10月5日24:00まで] または [無期限] のいずれか) [5] その他の制限: 二分木まで習ってます。 ファイルは入力ファイル、出力ファイルの順にコマンドラインの引数で指定する。 一旦ファイルに記述された並びの通りにリストを作成して, リストを作成した後にソートを実行すること 入力できる数値データの個数の上限は(メモリが確保できる限り)ない. 数値と数値の区切りにはコンマ(,)を使用せよ。 数値データに数字以外の文字が含まれていた場合,エラーを出力して終了する. どうかおねがいします。
22 :
21 :2008/10/03(金) 20:51:33
ごめんなさい、期限は2008年10月5日24:00までです。 無期限ってのを消すの忘れてました。
23 :
デフォルトの名無しさん :2008/10/03(金) 21:11:21
>>21 リストって一般名詞的な意味じゃなくて
ポインタ使って連結してるあのリストのことでおk?
25 :
21 :2008/10/03(金) 21:51:13
>>23 とくに指定されてなかったと思います。
>>24 はい、そのリストです。
宜しくお願いします。
>>18 H/W Express5800/110Ge
O/S Windows Server 2003
M/W Oracle10g 10.2.0
W/S IIS6.0
>>26 > M/W Oracle10g 10.2.0
MS SQL Server 2005にしようよ。
29 :
デフォルトの名無しさん :2008/10/03(金) 23:27:31
[1] 授業単元: C言語 [2] 問題文(含コード&リンク): ★以下の仕様を満たすプログラムをC言語で作成しなさい。 【仕様】座席予約簡易プログラム ▽通路を挟んだ5行×5列(1−1〜5−5まで)の座席がある列車の座席を予約・キャンル するプログラムを作る。 ▽メニューは、「予約」「キャンセル」「終了」の3種類とする。 ▽空き状態を0、予約済み状態を1で表現する。初期の予約状態はランダムにしておく。 ▽「予約」では、予約状況の一覧を表示し、予約する座席数を入力させる。入力数が空席の数以上 であれば、 「空席が足りません」として、再度入力させる。 ▽次に希望する座席を入力させる(行‐列の順)。入力されたら確認メッセージ (「(座席番号)」を予約しますか?)を表示する。Yesならば予約処理をし、「予約しました」と表 示してメニューに戻る。 Noならばメニューに戻る。 ▽すでに予約済みの座席を指定した時は、「(座席番号)は予約済みです」とエラーメッセージを表 示し、再度入力させる。 ▽入力数が2以上のときは複数選択が可能になるようにする(全ての希望を入力した時点で確認メッ セージを表示) ▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。 ▽「キャンセル」では、「予約」メニューと同様の機能をもたせる(一覧表示・キャンセルする座席 数の入力・ 座席番号の入力・確認メッセージ・エラー処理・複数選択機能) ▽「終了」では、プログラム終了する。 [3] 環境 [3.1] OS: Windows xp [3.2] コンパイラ名とバージョン:bcc [3.3] 言語: C言語 [4] 期限: 来週中ぐらいまで。 [5] その他の制限:条件判断文、繰り返し文、関数(引数、戻り値)、配列を勉強しました これらを使ってお願いします。
30 :
デフォルトの名無しさん :2008/10/03(金) 23:31:30
[1] 授業単元:プログラミング基礎 [2] 問題文: ファイルを1つまたは複数指定し、 各ファイルに含まれる行数と文字数を数えて画面に出力するプログラムを作れ。 [3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:どちらでも [4] 期限:2008年10月14日 [5] その他の制限:まだ基礎の段階です
>>31 #include<stdio.h>
void moji_line_count(const char *filename){
FILE *fp;
int prev='\n', moji, moji_count=0, line_count=0;
if((fp=fopen(filename, "rb"))==NULL) return;
for(;(moji=fgetc(fp))!=EOF;prev=moji,moji_count++) if(moji=='\n') line_count++;
fclose(fp);
if(prev!='\n') line_count++;
printf("File : %s\nCharacter count : %d\nLine count : %d\n\n", filename, moji_count, line_count);
}
int main(int argc, char *argv[]){
int i;
for(i=1;i<argc;i++) moji_line_count(argv[i]);
return 0;
}
33 :
デフォルトの名無しさん :2008/10/04(土) 12:56:52
>>31 #include <stdio.h>
#include <string.h>
void chomp(char *buf)
{
int len = strlen(buf); if (len > 0 && buf[len - 1] == '\n') buf[len - 1] = '\0';
}
int main(int argc, char *argv[])
{
int i, lines, chars; FILE *fin; char buf[512];
for(i = 1; i < argc; i++) {
fin = fopen(argv[i], "r");
if (fin != NULL) {
lines = chars = 0;
while(fgets(buf, 512, fin) != NULL) {
chomp(buf);
chars += strlen(buf);
lines++;
}
fclose(fin);
printf("ファイル\"%s\"の行数は%d、文字数は%d\n", argv[i], lines, chars);
}
else
fprintf(stderr, "ファイル \"%s\"は開けません。\n", argv[i]);
}
return 0;
}
34 :
12 :2008/10/04(土) 13:03:08
>>17 DFTでお願いします。
一通りググってはみたんですけど、どれも難解で各行説明が難しいです…
>>29 #include <stdlib.h>
#include <stdio.h>
#include <string.h>
int aki;
char zaseki[5][5];
void chomp(char *buf)
{
int len = strlen(buf); if (len > 0 && buf[len - 1] == '\n') buf[len - 1] = '\0';
}
void yoyaku(void)
{
int i, j, n;
char buf[128];
printf("予約状況:\n");
printf(" ");
for(j = 0; j < 5; j++) printf(" %2d", j+1);
printf("\n");
for(i = 0; i < 5; i++)
{
printf(" %2d", i+1);
for(j = 0; j < 5; j++)
if(zaseki[i][j]) printf(" x");
else printf(" .");
printf("\n");
}
printf("x: 予約済み .: 空き\n\n"); if (!aki) { printf("空席がありません。\n"); return; } do { printf("予約する座席数: "); scanf("%d", &n); if (aki < n) { printf("空席が足りません。\n"); continue; } } while(0); if(n <= 0) return; while(n--) { rewind(stdin); printf("予約を希望する座席(行-列): "); scanf("%d-%d", &i, &j); if(zaseki[i - 1][j - 1] == 1) { printf("座席「%d-%d」は予約ずみです。\n", i, j); n++; continue; }
printf("座席「%d-%d」を予約しますか?(YES/NO): ", i, j); rewind(stdin); fgets(buf, 128, stdin); chomp(buf); if (strcmpi(buf, "YES") == 0) { zaseki[i - 1][j - 1] = 1; printf("予約しました。\n"); } } } void cancel(void) { int i, j, n; char buf[128]; printf("予約状況:\n"); printf(" "); for(j = 0; j < 5; j++) printf(" %2d", j+1); printf("\n"); for(i = 0; i < 5; i++) { printf(" %2d", i+1); for(j = 0; j < 5; j++) if(zaseki[i][j]) printf(" x"); else printf(" ."); printf("\n"); }
printf("x: 予約済み .: 空き\n\n"); if (aki == 5 * 5) { printf("予約済みの席はありません。\n"); return; } do { printf("キャンセルする座席数: "); scanf("%d", &n); if (5*5 - aki < n) { printf("予約済みの席が足りません。\n\n"); continue; } }while(0); if(n <= 0) return; while(n--) { rewind(stdin); printf("キャンセルを希望する座席(行-列): "); scanf("%d-%d", &i, &j); if(zaseki[i - 1][j - 1] == 0) { printf("座席「%d-%d」は予約されていません。\n", i, j); n++; continue; }
printf("座席「%d-%d」をキャンセルしますか?(YES/NO): ", i, j); rewind(stdin); fgets(buf, 128, stdin); chomp(buf); if (strcmpi(buf, "YES") == 0) { zaseki[i - 1][j - 1] = 0; printf("予約しました。\n"); } } } int main(void) { int i, j, m; aki = 5 * 5; for(i = 0; i < 5; i++) for(j = 0; j < 5; j++) { zaseki[i][j] = rand() & 1; if(zaseki[i][j]) aki--; } do { printf("\n\nメニュー(1.予約 2.キャンセル 3.終了): "); scanf("%d", &m); switch(m){ case 1: yoyaku(); break; case 2: cancel(); break; case 3: return 0; } } while(1); }
printf("x: 予約済み .: 空き\n\n"); if (aki == 5 * 5) { printf("予約済みの席はありません。\n"); return; } do { printf("キャンセルする座席数: "); scanf("%d", &n); if (5*5 - aki < n) { printf("予約済みの席が足りません。\n\n"); continue; } }while(0); if(n <= 0) return; while(n--) { rewind(stdin); printf("キャンセルを希望する座席(行-列): "); scanf("%d-%d", &i, &j); if(zaseki[i - 1][j - 1] == 0) { printf("座席「%d-%d」は予約されていません。\n", i, j); n++; continue; }
if((fp=fopen(filename, "rb"))==NULL) return; for(;(moji=fgetc(fp))!=EOF;prev=moji,moji_count++) if(moji=='\n') line_count++; fclose(fp); if(prev!='\n') line_count++; printf("File : %s\nCharacter count : %d\nLine count : %d\n\n", filename, moji_count, line_count); } rewind(stdin); fgets(buf, 128, stdin); chomp(buf); if (strcmpi(buf, "YES") == 0) { zaseki[i - 1][j - 1] = 1; printf("予約しました。\n"); } } } void cancel(void)
うざす
43 :
デフォルトの名無しさん :2008/10/04(土) 15:16:13
45 :
21 :2008/10/04(土) 15:37:15
>30 早速作って戴いて ありがとうございます。実行のとき、 ./kadai3-2 s aって入力すると不正な文字ですぅって でるんですが、どこがおかしいですか? ファイルは入力ファイル、 出力ファイルの順にコマンドラインの引数で指定していると 思うんですが。
>>45 おそらくスペースか改行文字かタブ文字が原因
>>45 数字と,以外受け付けない
スペースも改行も入れられないよ
48 :
21 :2008/10/04(土) 15:49:59
>>46 ん、ん?
スペース入れずにどうやって入力するのですか?
50 :
21 :2008/10/04(土) 15:55:25
>>49 えっと読み込むファイルsの中身は
1,2,3,4,5,6,7
としたんですが、どこかおかしいですか?
52 :
21 :2008/10/04(土) 16:04:19
>>51 確かめてみたんですが、とくに最後に改行
とかはされていませんでした。
53 :
デフォルトの名無しさん :2008/10/04(土) 16:23:22
ファイルがないときもスコンスコン落ちるし、まあ、大雑把なつくりなんでしょう。 改造するほうがいいよ。
55 :
21 :2008/10/04(土) 16:51:48
改造か・・・。 できる気がしないけどちょくらやってみる。 でもこれ再提出の上に期限大分オーバー しちゃってるんだよなぁ。 はぁ。
かなりの初心者です…。質問があります。 入力された数値を二乗して返す、というプログラムなのですが、↓のようにしました。 … printf("Enter a floating number > "); while( scanf("%f",&data) != EOF ){ printf("%lf^2 = %lf\n",data,SQUARE(data)); printf("Enter the next value > "); } … 「SQUARE」は二乗するための関数です。 実行してみると、dataの中には何も数値は入っていませんでした(data = 0.000)。 「while文の条件の中で一度scanfを行っているからdataには入力された数値が入っているんじゃないの??」と 思ったのですが、そうはいっていないようです。ループに入っていることは確認できました。 自分のスキルでは解決できないので、力を貸して下さい…(泣)
変数はdoubleか? それならまず%fと%lfを入れ替えてみようか
書き忘れてました、double型です。 それで、%f → %lfにしてみたら…大丈夫でした(^^ 同時に、勉強の必要性を強く感じました… ただ、このループはCtrl + Dで終了するはずらしいのですが、それを入力するとなぜか無限ループ開始…(^^; これについてはどうでしょうか??
windowsならCtrl+Z
あ、なるほど。学校のPCはLinuxだったからそうなっていたのですね。 確かにCtrl + Zで無事に終了できました。 初心者のばかばかしい質問に答えて下さり、ありがとうございましたm(_ _)m
三平方の定理の斜辺を求めるプログラムなのですが、 関数をcalcuteとして、a^2 + b^2 = c^2のaとbを入力させて渡そうとしているのですが、コンパイル時にエラーが起こります。 なぜかわかるでしょうか? 以下が関数main、 int main(double *argv[]) { printf("%f", calcute(argv[1], argv[2])); return 0; } 以下がエラーの内容です。 pyt.c:6: error: incompatible type for argument 1 of `calcute' pyt.c:6: error: incompatible type for argument 2 of `calcute'
>>62 int main(double *argv[])
なんだこのふざけた引数は
>>64 int main(int argc,char *argv[])
{
double a,b;
sscanf(argv[1],"%f",&a);
sscanf(argv[2],"%f",&b);
以下略
>>65 勉強不足でした。どうもありがとうございます。
>>65 sscanf(argv[1],"%lf",&a);
sscanf(argv[2],"%lf",&b);
>>32 >>33 ありがとうございます。
ところでこれでファイルを指定するにはどうすればよいのでしょうか?
学校のコンパイラはgccなのですが家ではvisualC++2008を使っているのですが…
>>68 横スレですまんが、
>>33 のソースは間違っているので使わない方がいいよ。
>>32 は正しくできている(ちなみに私も作っていろいろなファイルで結果を取りますた)。
VS C++2008なら、コンパイルなりビルドなりしてコマンドプロンプトだったかな(Windowsしらねぇ)からコマンドライン引数としてファイルを渡せばいいと思う。VS C++のIDEくらいなら、引数を指定して実行とかってメニューがあるかもしれない。
70 :
65 :2008/10/04(土) 21:03:46
>>67 floatじゃなくてdoubleだから%lfだね。
スマソ
>>68 ちょっと調べてみたよ。
プロジェクト(P) -> プロパティ(P)でプロジェクトのプロパティを開く。
構成プロパティ -> デバッグ -> コマンド引数にファイル名を書けば良いと思う。
なんか宿題の本筋からずれてますね。 visualC++のスレで聞いてきます。
75 :
デフォルトの名無しさん :2008/10/05(日) 01:19:04
C言語って懐かしいな
やったことないからよくわかんないけど、-270度まで回転するのがまずいんでないの? -90度回転させて、中心点を左の円のものにして+90度からプラス方向に360度回転させて、 元の中心を使って-90度から-270度まで回転させればいくんでない? やり方は知らないんだけど。
半円を4つ描くと思えばいい
twintail.jpからel.hなくなってるじゃん コンパイルできないからうpれよ
79 :
デフォルトの名無しさん :2008/10/05(日) 11:25:26
C と C++ とC# と、後なんか。 何がどう違うの? 簡単な表にしてZIPでくれ。
みなさん童貞ですか?
86 :
デフォルトの名無しさん :2008/10/05(日) 16:52:12
AGE
87 :
デフォルトの名無しさん :2008/10/05(日) 20:01:02
90 :
デフォルトの名無しさん :2008/10/05(日) 21:28:25
91 :
デフォルトの名無しさん :2008/10/05(日) 21:29:00
>>89 いくらでも待ちます。ハチ公のように。
本当にありがとうございます。
二度と戻らぬ主人を待ち続けるハチ公であつた。
93 :
90 :2008/10/05(日) 21:32:38
あ、
>>89 さんゴメン。かぶった。
プログラム
>>89 のほうがいいかもしれないよ。俺あんまりこのスレきたことないから
94 :
デフォルトの名無しさん :2008/10/05(日) 21:33:39
>>90 ありがとうございます。参考にさせてもらいます。
C初めて間もないので、とても為になります。
96 :
デフォルトの名無しさん :2008/10/05(日) 22:08:56
>>95 マジですか?…
わかりました。では
>>90 さんのを元に、各行の説明付けに励みたいと思います。
>>90 さんありがとうございました。
>>74 の「八の字」の描き方もお願いします。
円はできたのですが、八の字はどのようにやったら良いかわかりません。
円を二個くっつければ八の字にならないか?
○○ でも八の字といえば八の字だよな
>>100 そこだけ見るとゼペット爺さんなんか痛い子
>>100 51文字目にカンマやピリオドがあったらどうする?
1.直前の単語ごと次の行へ
2.カンマやピリオドが行の先頭にあっても構わない
3.行の後ろにこっそりつける
>>103 ピリオドや?などは単語の一部という扱いでいいと思います
ですので「1」で大丈夫です
106 :
デフォルトの名無しさん :2008/10/06(月) 04:35:00
>>97 眠れないので作ってみた
void teki_01_dp(void)
{
static float n = 0;
static float inc = 0.1;
for (cnt = 0; cnt < 17; cnt++) {
if (init_fl[cnt] != 0) {
/* 出現済みの敵の場合 */
/* 次の座標を計算 */
#if 0
spx[cnt] += spxg[cnt];
spy[cnt] += spyg[cnt];
zx[cnt] += FrameTime * spx[cnt];
zy[cnt] += FrameTime * spy[cnt];
#else
zx[cnt] += cos(n * PI / 180) * FrameTime * 100;
zy[cnt] += sin(n * PI / 180) * FrameTime * 100;
n += inc;
if (n >= 180.0) {
inc = -0.1;
} else if (n <= -180.0) {
inc = 0.1;
}
#endif
}
}
}
速度とかは超適当す。
108 :
106 :2008/10/06(月) 07:40:39
>>107 うpろだの内容はそのままビルドできんかったので
1.zako_01.cppを新規に作成
2.zako.cppをコピペ
3.teki_reqをtei_01_reqに変更
4.teki_dpをteki_01_dpに変更
5.読みにくかったので全面書き替え!!
5.teki_01_dpに
>>106 のを書いた
6.teki_01_reqは固定位置出現にした
最終動きのイメージを今見たんだがハチの字の方向が違うかもしれん
そこはまぁ適当によろしこ
ちなみにPIは3.141592にdefineしてある
109 :
106 :2008/10/06(月) 07:41:46
書き忘れた もう仕事に行く時間なので 夜になるまで応答できないかも
>>109 ありがとうございます。
やってみるので、夜になったらまた見てもらえますか?
それまで自分でやってみます。
111 :
21 :2008/10/06(月) 11:27:20
>>61 よし動いた。
・・・あれ肝心のソートがされてないorz
誰か13時までに原因を教えてください。
1] 授業単元:C++
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7745.txt ・「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。
【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)上記以外については自由に作成してよい。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2008
[3.3] 言語:C++
[4] 期限: ([2008年10月8日
114 :
デフォルトの名無しさん :2008/10/06(月) 18:40:58
[1] 授業単元:プログラミング演習 [2] n*3がたの行列Aと3*mの行列Bの積を計算する プログラムを作成せよ。 [3] 環境 [3.1] OS:Windows [3.2] コンパイラ名とバージョン:gcc バージョン5.5 [3.3] 言語:C [4] 期限: 10月9日 [5] その他の制限:特にありません よろしくお願いします。素人でもわかりやすい作りに していただければ幸いです。
>>113 そんなに無理矢理三項演算子使わなくても…
>>115 使わないと分かりにくいかなと思って使ったんだけども・・・
取っても結果同じだから、違和感あるなら取ってね
#include<stdio.h> #define n 2 #define m 4 int main(){ int A[n][3] ={{1,2,3}, {4,5,6}}; int B[3][m] ={{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; int C[n][m],i,j,k,t; for(i=0;i<n;i++){ for(j=0;j<m;j++){ for(t=0,k=0;k<3;k++){ t += A[i][k]*B[k][j]; } C[i][j] = t; } } //A for(i=0;i<n;i++){ for(j=0;j<3;j++){ printf("%3d",A[i][j]); } printf("\n"); } //B for(i=0;i<3;i++){ for(j=0;j<m;j++){ printf("%3d",B[i][j]); } printf("\n"); } //C for(i=0;i<n;i++){ for(j=0;j<m;j++){ printf("%3d",C[i][j]); } printf("\n"); } }
118 :
74 ◆5/7mhL.nO6 :2008/10/07(火) 00:33:44
>>108 のように書いたのですが、
このようなエラーはどう対処したら宜しいのでしょうか?
..\zako_01.cpp(52) : warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
..\zako_01.cpp(66) : error C2065: 'PI' : 定義されていない識別子です。
..\zako_01.cpp(70) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
..\zako_01.cpp(72) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
#define PI 3
笑ったけど本気にしたらかわいそうだ
>>118 #define PI 3.141592
warningってのは警告だから無視すればいい
121 :
デフォルトの名無しさん :2008/10/07(火) 01:35:20
123 :
74 ◆5/7mhL.nO6 :2008/10/07(火) 04:23:57
>>119 >>120 >>122 すみません見落としていました…
とりあえず、
>>106 を参考に作りました。
http://www.dotup.org/uploda/www.dotup.org6018.zip.html するとこのようなエラーが出るのですが…ファイルを見て確認してみて下さい。
zako_01.obj : error LNK2005: "float * zy" (?zy@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "int * init_fl" (?init_fl@@3PAHA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spy" (?spy@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spx" (?spx@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spyg" (?spyg@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * zx" (?zx@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spxg" (?spxg@@3PAMA) は既に zako.obj で定義されています。
124 :
74 ◆5/7mhL.nO6 :2008/10/07(火) 06:01:05
125 :
106 :2008/10/07(火) 07:40:12
すまん。もともとあった内容は省略して書いてた。 ----- こっから //アニメーション----------------------------- timer_a[cnt]+=FrameTime; if(timer_a[cnt]>0.1){ timer_a[cnt]=0; no_a[cnt]++; if(no_a[cnt]>9) no_a[cnt]=0;//アニメーションのループ } //敵の表示 elDraw::Layer((int)zx_a[cnt],(int)zy_a[cnt],tkBMP[cnt],40*no_a[cnt],0,40*no_a[cnt]+40,40); // SHOW2((int)zx[cnt],(int)zy[cnt]-5,"no= %d",cnt); }//リクエスト if end }//for end if(out_cnt==17){//17個全て消えたか? for(cnt=0;cnt<17;cnt++){ init_fl_a[cnt]=0; } ---- ここまで をkadai_d_dpの最後に追加してみそ。 分かってるとは思うが //敵の表示 elDraw::Layer((int)zx_a[cnt],(int)zy_a[cnt],tkBMP[cnt],40*no_a[cnt],0,40*no_a[cnt]+40,40); のコールでビットマップを描画してるので これ消したら当然何も出ない罠
>>124 表示してないからあたりまえ
#define PI 3.141592F
void teki_01_dp(void)
{
static int no[17];//アニメ用
static float timer[17];//アニメ用
static float n = 0.0F;
static float inc = 0.1F;
int cnt;
for (cnt = 0; cnt < 17; cnt++) {
if (init_fl_01[cnt] != 0) {
zx_01[cnt] += cos(n * PI / 180) * FrameTime * 100;
zy_01[cnt] += sin(n * PI / 180) * FrameTime * 100;
n += inc;
if (n >= 180.0) {
inc = -0.1F;
} else if (n <= -180.0) {
inc = 0.1F;
}
timer[cnt]+=FrameTime;
if(timer[cnt]>0.1){
timer[cnt]=0;
no[cnt]++;
if(no[cnt]>9) no[cnt]=0;//アニメーションのループ
}
elDraw::Layer((int)zx_01[cnt],(int)zy_01[cnt],tkBMP[cnt],40*no[cnt],0,40*no[cnt]+40,40);
}
}
}
127 :
74 ◆5/7mhL.nO6 :2008/10/07(火) 08:04:53
>>125 >>126 できました!ありがとうございます!
これを元に波線の軌道もやってみますので、分からなくなったら再び質問します。
128 :
112 :2008/10/07(火) 10:41:20
>>113 デバックしましたけど何も表示されませんでした。
>>128 デバック???
「修正してやったぜ」って意味か?
失礼な奴だな
知らない言葉は調べたほうがいいぜ
デバッグ実行のことじゃね
VSが「デバッグ開始」て書いてあるから間違って覚えたんだろ
>>128 コマンドライン引数が無いときの処理が無いからな
134 :
21 :2008/10/07(火) 16:58:43
誰か61のプログラムでソートされない原因を 教えてください。 お願いします
>>134 やってみたらソートされたが、どんなデータを与えたの?
136 :
21 :2008/10/07(火) 17:12:27
>>135 ./kadai3-2 s sa
と入力しました。./kadai3-2が実行プログラムで
Sが読み込ませるプログラムでsa
137 :
21 :2008/10/07(火) 17:14:56
すいません途切れました。 saが出力させるファイルで sの中身は1,2,3,4,5,6,7,という 数字が記録されています。 実行するとsaの中身は 1,2,3,4,5,6,7となっていて ソートされてないのです。
>>137 見事にソートされているように見えるんだが。。
たとえばsを 3,6,1,5,2,7,4 という内容にしてみたら。
ソートの意味がわかっていないのか、それとも
>>21 の思っているソートがこちらに伝わっていないのか。
140 :
21 :2008/10/07(火) 17:35:18
あっ、あぁ、ほんとだ。 ごめんなさい。 いつのまにか俺のなかで ソートの種類が勝手に順番を逆にするソート にすり変わってたorz 思い込みってやだな。 お手数かけました。 心よりお詫び申し上げます。
[1] 初級プログラミング [2] #include <stdio.h> int main(void){ int a,b,c,d,e,f,g,h,i,j,k,l,m;//a〜m(13個,数は固定)には整数0か1が毎回ランダムに入るとしてください a=1;b=0;c=0;d=1;e=0:f=1;g=1;h=1;i=1;j=0;k=1;l=1;m=0;//例 printf("%d",a); printf("%d",b); printf("%d",c); printf("%d",d); printf("%d",e); printf("%d",f); printf("%d",g); printf("%d",h); printf("%d",i); printf("%d",j); printf("%d",k); printf("%d",l); printf("%d",m); printf("\n"); //表示 1001011110110 /*以下に13ビットの値を16進数に変換するプログラムを記述せよ*/ printf("%d",?); printf("%d",?); printf("%d",?); printf("%d",?); printf("\n"); return 0; } abcdefghijklmが 1001011110110 の時は 12f6 と表示 aが4桁めb〜eが3桁めf〜iが2桁めj〜mが1桁めとなるようにする [3] 環境 [3.1] OS:linux [3.2] gcc3.4 [3.3] c [4] 期限: 10/8 [5] その他の制限:なし
というわけでもないと思うので、こうしてみたよ。 printf("%d",a); printf("%x", b*8+c*4+d*2+e); printf("%x", f*8+g*4+h*2+i); printf("%x", j*8+k*4+l*2+m); もしくは printf("%d",a); printf("%x", b<<3|c<<2|d<<1|e); printf("%x", f<<3|g<<2|h<<1|i); printf("%x", j<<3|k<<2|l<<1|m);
144 :
141 :2008/10/07(火) 18:06:39
>>142 ?は自分がこんな感じかなと勝手に考えて書いたものですので
無視してもらっても大丈夫です。
145 :
141 :2008/10/07(火) 18:20:49
>>142 ,143
ありがとうございます。出来ました。
146 :
デフォルトの名無しさん :2008/10/07(火) 20:51:46
147 :
146 :2008/10/07(火) 20:58:31
×美しいソート ○美しいソース です; 頭んなか、ソートだらけか….
150 :
146 :2008/10/07(火) 21:28:19
>>148 宿題を解いて,もっと短くできるから
やってみろって言われたんです;
テンプレどおりに書かなかったのはすみません。
>>149 マージソートで、数十行くらいで作れるらしいです。
それをやれといわれました;
教科書通りにやるのはできるんですが
短くするとなると、なかなか凡人クラスの頭のキレでは難しくて.
つstdlib.h
まず、このソースが何をしていて、どの辺で苦労して、どのあたりが改善できそうであるかを言ってみて。
153 :
デフォルトの名無しさん :2008/10/07(火) 23:05:45
1] 授業単元: 基礎プログラミング [2] ニュートンラプソン法を用いてnのルート、及び逆数の関数を作成せよ [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc 3.4 [3.3] 言語: C [4] 期限: 10/8 24:00
154 :
デフォルトの名無しさん :2008/10/08(水) 02:34:55
ありゃageになってたすまぬ
ttp://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0 > 2008年8月、史上最大の素数探求のための分散コンピューティング・プロジェクトである
> GIMPSによって、その時点で史上最大とされる素数が発見された。これは知られている中で
> 46番目のメルセンヌ素数、243112609 - 1 であり、十進記数法で表記したときの桁数は
> 1297万8189桁に及ぶ。
上記の史上最大とされる素数を求めるプログラムきぼんぬ
158 :
157 :2008/10/08(水) 09:51:30
2^nの1桁目は0にならないから最後1引くのにループはいらなかった
159 :
157 :2008/10/08(水) 09:54:31
#define END_POINT 243112609
は
#define END_POINT 43112609
の間違いだな(
>>156 のをそのままコピペしてしまった)
>>156 #include <stdio.h>
#define MER_P 43112609
int main(void)
{
int i;
printf("(2^%d) - 1 =\n", END_POINT);
for (i = 0; i < MER_P; i++)
{
printf("1");
}
printf("\n(2進数)\n");
return 0;
}
間違えた #include <stdio.h> #define MER_P 43112609 int main(void) { int i; printf("(2^%d) - 1 =\n", MER_P); for (i = 0; i < MER_P; i++) { printf("1"); } printf("\n(2進数)\n"); return 0; }
[1] 授業単元:C++ [2] 問題文(含コード&リンク): すごろくプログラムを作成しなさい。ただし,下記の条件を満たすものとする。 ・すごろくのコマとしてユーザクラスを作成しなさい。 ・すごろくのコマを移動させる場所としてマスクラスを作成しなさい。 ・main関数でユーザクラスの実体(2つ以上)とマスクラスの実体(5つ以上)を生成しなさい。 ・ここで,マスには,「スタート」「ゴール」「1つ進む」「1つ戻る」「2つ進む」「2つ戻る」「スタートへ戻る」「何もしない」の条件があるとする。 ・さらに,ユーザは初期状態で「スタート」とし「ゴール」になったら終了とする。 ・乱数でサイコロ(1つ)の数字を出しすごろくを行い,片方がゴールしたら終了とする(ちょうどゴールにとまらなくてもよい)。なお,すごろくをプレイしている状況は表示すること。 ・あとはすごろくとして成り立っていればどのようにプログラミングしてもよい(他のクラスが必要な場合は追加してもよい)。 [3] 環境 [3.1] OS:WindowsXP [3.2] コンパイラ名とバージョン:VisualStudio [3.3] 言語:C++ [4] 期限: ([2008年10月16日
[1] 授業単元:C言語入門 [2] #include <stdio.h> int add(int x, int y) { return x+y; } int main() { int a, b, c; } printf("calc a + b\n"); printf("input a b\n"); scanf("%d%d", &a, &b); c = add(a,b); printf("result: %d + %d = %d\n", a, b, c); return 0; } void accum(int *x, int y) { *x = *x + y; } このポインタを使って上の関数addを用いずに同じ動作をするプログラムを作れ。 お願いします(__)
>163 問題は正確に
#include <stdio.h>
void accum(int *x, int y)
{
*x = *x + y;
}
int main()
{
int a, b;
printf("calc a + b\n");
printf("input a b\n");
scanf("%d %d", &a, &b);
printf("result: %d + %d", a, b);
>>163 accum(&a, b);
printf(" = %d\n", a);
return 0;
}
すみません。 VC++をいじってるんですが、double型の値を画面に表示させると 「0.000000」といった感じで小数部が6桁表示されてしまいます。 この小数部の表示桁数を制限したいのですが、何か良い関数など があれば教えて下さい。 よろしくお願い致します。
printf("%5.2lf",12.34); ってやったらどうだろう
それは間違いだ いやc99ならいける というレスが続きそうな気がするので先に言っておこう
>>168 C99なら…それでもC99ならきっとなんとかしてくれる…
170 :
お願いします :2008/10/08(水) 23:58:33
【質問テンプレ】 [1] 授業単元: アルゴリズムデータ構造2 [2] 問題文(含コード&リンク): 52枚のトランプを5人に配るシミュレーション [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: コマンドプロンプト バージョンはすいません分からないです。 [3.3] 言語: C言語 [4] 期限: 10月13日(月)まで [5] その他の制限: 配列でswap関数を使って作ってもらいたいです。
171 :
お願いします :2008/10/09(木) 00:16:55
>>170 アップローダの使い方がいまいち分からなかったので
ソースを貼ります このプログラムを書き換えてください。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i;
char *card[]={"Club","Diamond","Heaart","Spade"};
char *numb[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
srand(time(NULL));
i=rand()%52;
printf("%s%s\n",card[i/13],numb[i%13]);
return 0;
}
>>171 こんなんでおk?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int*a,int*b){int c = *a;*a=*b;*b = c;}
int main(void)
{
int i,n;
char *card[]={"Club","Diamond","Heaart","Spade"};
char *numb[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
int cards[52];
for(i=0;i<52;++i)
cards[i] = i;
srand(time(NULL));
//カードをシャッフルする
for(i=0;i<52;++i)
swap(cards+i,cards+rand()%(52-i)+i);
for(i=0;i<52;++i)
printf("%cさん %s%s\n","ABCDE"[i%5],card[cards[i]/13],numb[cards[i]%13]);
return 0;
}
ぎゃあ表示がバグってる。 たぶん空白だけだと思うけど念のためにもう一度。 #include <stdio.h> #include <stdlib.h> #include <time.h> void swap(int*a,int*b){int c = *a;*a=*b;*b = c;} int main(void) { int i,n; char *card[]={"Club","Diamond","Heaart","Spade"}; char *numb[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; int cards[52]; for(i=0;i<52;++i) cards[i] = i; srand(time(NULL)); //カードをシャッフルする for(i=0;i<52;++i) swap(cards+i,cards+rand()%(52-i)+i); for(i=0;i<52;++i) printf("%cさん %s%s\n","ABCDE"[i%5],card[cards[i]/13],numb[cards[i]%13]); return 0; }
174 :
デフォルトの名無しさん :2008/10/09(木) 04:00:50
1から指定した数までを足し算で計算するプログラム教えてくれ。
#include <stdio.h> int main() { int a; scanf("%d", &a); printf("%d", a * (1 + a) / 2); return 0; }
176 :
デフォルトの名無しさん :2008/10/09(木) 15:08:33
[1] 授業単元:ランダムウォークと配列 [2] 問題文(含コード&リンク): 左右に動く点がありそれが連続で右に動いた回数をカウントし出力 一連続は**回 二連続は++回 [3] 環境 [3.1] OS:WinXP [3.2] コンパイラ名とバージョン:Visual Basic 2005 [3.3] 言語: C++ [4] 期限: 無期限 よろしくお願いします
177 :
176 :2008/10/09(木) 15:14:43
失敬 開発環境はMicrosoft Visual Studio 2005です
>>176 #include <iostream>
#include <cstdlib>
int main()
{
int i, j, n, r1 = 0, r2 = 0, state = 0;
std::cout << "繰り返し回数 = ";
std::cin >> n;
for (i = 0; i < n; i++) {
j = std::rand() % 2; // 0で左、1で右
if (j == 1) // 右へ動いた
switch (state) {
case 0: // 左へ動いた直後か右へ二回動いた直後
r1++;
state = 1;
break;
case 1:// 右へ一回動いた直後
r1--;
r2++;
state = 0;
break;
default:
break;
}
else
state = 0;
}
std::cout << "一連続は" << r1 << "回 " << "二連続は" << r2 << "回" << std::endl;
}
>>176 情報が足りなさすぎるということに気づけないレベルなんだなあ。
単位落としちゃえよ。
180 :
デフォルトの名無しさん :2008/10/09(木) 19:56:21
あと30分で終わらせとか(><
184 :
デフォルトの名無しさん :2008/10/10(金) 00:10:16
185 :
デフォルトの名無しさん :2008/10/10(金) 00:26:53
[1] 授業単元:C言語 [2] 問題文:a(n+1)=3a(n)+4b(n) b(n+1)=2a(n)+3b(n) の漸化式で1.4142135を算出するプログラム [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限: 10月10日 朝7時まで [5] その他の制限:特になし 手計算だと5回目に算出できましたが、プログラムに仕方がわかりません;
>>185 せめてnはいくつから始めるのかだけでも言え
それがないと漸化式が解けん
188 :
デフォルトの名無しさん :2008/10/10(金) 00:36:49
>>184 #include <iostream>
using namespace std;
int main() {
for (;;) {
string name;
int credit_standing, amount_owed, minimum_payment;
cin >> name >> credit_standing >> amount_owed;
if (cin.eof()) break;
if (credit_standing > 6)
minimum_payment = (amount_owed <= 20) ? amount_owed
: (amount_owed <= 100) ? 10
: 0.1 * amount_owed;
else
minimum_payment = amount_owed;
cout << name << " with credit standing " << credit_standing
<< " must pay " << minimum_payment << endl;
}
return 0;
}
>>184 なんだCだったか
#include <stdio.h>
int main() {
char name[32];
int credit_standing, amount_owed, minimum_payment;
while (scanf("%31s %d %d", name, &credit_standing, &amount_owed) == 3) {
if (credit_standing > 6)
minimum_payment = (amount_owed <= 20) ? amount_owed
: (amount_owed <= 100) ? 10
: 0.1 * amount_owed;
else
minimum_payment = amount_owed;
printf("%s with credit standing %d must pay %d\n",
name, credit_standing, minimum_payment);
}
return 0;
}
192 :
デフォルトの名無しさん :2008/10/10(金) 01:06:07
>>192 #include <stdio.h>
double fa(double a_n, double b_n)
{
return 3 * a_n + 4 * b_n;
}
double fb(double a_n, double b_n)
{
return 2 * a_n + 3 * b_n;
}
int main()
{
double an = 7, bn = 5;
double tmp;
int i;
for (i = 0; i < 10; ++i) {
tmp = fa(an, bn);
bn = fb(an, bn);
an = tmp;
}
printf("%.10f\n", an / bn);
return 0;
}
>>193 ありがとうございます!!助かりました!!
>>185 素直に再帰したいけどこれじゃダメなのかな
#include <stdio.h>
int a(int); int b(int);
int a(int n) {
if (n == 0) return 7;
else return 3 * a(n-1) + 4 * b(n-1);
}
int b(int n) {
if (n == 0) return 5;
else return 2 * a(n-1) + 3 * b(n-1);
}
int main() {
printf("%.10lf\n", (double)a(10) / b(10));
return 0;
}
>>195 いえいえ全然ダメじゃないです!本当にありがとうございます!
197 :
デフォルトの名無しさん :2008/10/10(金) 01:39:40
>>189 ありがとうございました。
ちなみに各customerのコードはどのように入力すればいいのですか?
初心者ですいません。
>>191 すみません、言語はC++でした。
書き間違えてしまいました。
お手数おかけしました。
198 :
181 :2008/10/10(金) 01:52:36
201 :
デフォルトの名無しさん :2008/10/10(金) 12:16:32
なぜうp先は関西2ちゃんねらーなんですか
202 :
デフォルトの名無しさん :2008/10/10(金) 15:52:19
[1] 授業単元: c言語 [2] 問題文(含コード&リンク): ペイントソフトを作る [3] 環境 [3.1] OS: windowsXP [3.2] コンパイラ名とバージョン: Visual studio .NET 2003 [3.3] 言語: c,c++ [4] 期限: 2週間後の火曜まで [5] その他の制限: MFCを使用しない 線の描画などはできましたが、ペンの太さや色の変更、 操作のやり直しなどが分かりません どなたかよろしくお願いします
>>202 単線だけでいいんじゃないの
機能つけるときりがないよ
アンドゥとか特に無理
204 :
デフォルトの名無しさん :2008/10/10(金) 17:14:13
>>203 返事ありがとうございます
やはり、アンドゥ機能などは難しいのですかね?
今までc言語はやった事があったのですが
それに比べるとVC++は色々ややこし過ぎて困っています。
画面を左右に分けて、描画とパレットのように分けて作ろうと思っているのですが
雛形みたいなのはあるのでしょうか?
1] 授業単元:C++
[2] 問題文:ファイルから波形を読み込み、FFTした結果をテキスト出力する
プログラムを作成せよ。
波形のデータは以下のようなものです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7771.txt [3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Visual Studio 2005
[3.3] 言語:C++
[4] 期限: [無制限]
[5] その他の制限:まだCの勉強が浅く、色々と検索してみましたがどうもバタフライ演算の
やり方が難しく分かりません。。何か説明不足があれば聞いてください。
FFTで詰まってしまい困っています。どうか、よろしくお願いしますm(_ _)m
>>204 宿題できてんじゃん。
色・ふとさ固定、undoできないなどの機能制限がたくさんあるが、それは立派なペイントソフトだよ。
さらに機能追加をしたいのであれば必要に応じてデバイスコンテキストに関する質問その他を
やってけば?宿題スレじゃなく。
>>202 線じゃなくて、点を打つようにすると太さ変えるのも楽になる
お絵かきチャットでは、線と線を結んでる場合が多いけど
ローカルで使えるペイントソフトはたいてい点を打って点を繋いでると思われる
点をつなげるのは、結構めんどい
アンドゥは、やり方がいくつかある
画像として管理するか
数値データとして管理するか、かな。
突貫でいいなら画像として管理するのを作ったほうが楽かもしれない
どちらが得意かによる