887 :
デフォルトの名無しさん :
2008/04/01(火) 23:25:37 二人三脚練習のペアの組合わせを自動的にしたいんです…
しかし、わかりません… だれか詳しい方教えてください…
先輩が5人、後輩が12人います。必ず先輩と後輩でペアを組みます。
先輩5人が、後輩を交代させ1日6回練習し、後輩を養成します。
組み合わせを決める際、不平等にならないよう、できるだけ同じ回数練習に参加できるようにしたいのです。
もし、練習回数が少なくなってしまった後輩は、つぎの日の練習を多めにします。
さらに、日ごとに練習場所が異なり(平たん、登り、下り)、
異なる練習場所ごとにも平等の回数にしたいのです。
みなさん、教えてくださいよろしくお願いします…
ここでの注文です
気軽に「こんなソフトあリませんか?」 Part.85
http://pc11.2ch.net/test/read.cgi/software/1206534091/431-
889 :
デフォルトの名無しさん :2008/04/02(水) 13:16:54
>>886 Cの宿題じゃないね。
よってスレ違い。
[1] 授業単元:オペレーションシステム [2] 問題文(含コード&リンク):アーカイバユーティリティを作りなさい。 [3] 環境 [3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C [4] 期限:2008年4月12日 簡単なアーカイバユーティリティ(圧縮無し可)を作りたいのですが、何から始めた方がいいのか全く分かりません。 制限としては、ユーザーが『xmkfs ファイル名』とタイプしたらアーカイブファイルを作成して。 『xcpin アーカイブファイル名 コピーするファイル名』とタイプしたらアーカイブファイルの中にファイルをコピー。 『xdir アーカイブファイル名』とタイプしたらアーカイブファイルの中に入ってるファイル名を表示する。 『xmore アーカイブファイル名 ソースファイル名』とタイプしたらソースファイルの中身を表示する。 『xcpout アーカイブファイル名 ソースファイル名』 とタイプしたらソースファイルを解凍。 このようなプログラムを作りたいです。 助けて頂けるとありがたいです。
>>890 まずはアーカイブファイルの構成を考えてみ
[1] 授業単元:プログラミング
[2] 問題文:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6194.txt [3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: CPad for Borland
[3.3] 言語:C
[4] 期限:2008年4月7日提出
[5] その他の制限:getchar,fgets関数可 scanf,gets関数不可
C言語自体かじったこともなく、教科書見ても全然判らないです;
気づけば期限が今週迄で、自分の頭ではどこをどうすれば…という状態です。
期限が短すぎますが、手の空いてる方がいたら何卒よろしくお願いします;
(できれば、自分でも後からできるように簡単なプログラムで
お願いします…注文多くて申し訳ないです)
>>892 >自分でも後からできるように簡単なプログラムでお願いします
無理。
>>892 (1)。エラーチェックとかしてない。問題文に誤字があったけど適当に解釈した。
#include <stdio.h>
#include <limits.h>
int absolute(int n1, int n2)
{
return abs((n1 > n2) ? (n1 - n2) : (n2 - n1));
}
int getInt(const char * pszPrompt)
{
char sz[LINE_MAX];
printf("%s", pszPrompt);
fgets(sz, sizeof(sz), stdin);
/* ignore some digits */
sz[('-' == sz[0] ? 10 : 9)] = '¥0';
/* no error checking */
return atoi(sz);
}
int main(int argc, char * argv[])
{
int n1 = getInt("Integer 1:");
int n2 = getInt("Integer 2:");
printf("absolute difference of %d and %d is %d¥n",
n1, n2, absolute(n1, n2));
return 0;
}
895 :
892 :2008/04/05(土) 21:21:32
失礼しました、@の問題は、
@入力された2つの整数の差の絶対値を出力するプログラムを作成せよ。
整数には負数を入力される場合も考慮する。
ただし、入力される数値は、整数の場合最大8桁までを有効とし、9桁以降を無視する。
負数の場合は、最大9桁までを有効とし、10桁目以降は無視する。
また次のプロトタイプ宣言を持ち、変数n1とn2の差の絶対値を戻す関数を使用すること。
【 int absolute(int n1,int n2); 】
誤字だらけで申し訳ないです;
>>894 様
コンパイルしてみたのですが、エラーで実行できませんでした;
他にも手伝ってくれる方がいましたらよろしくお願いします。
>>895 >コンパイルしてみたのですが、エラーで実行できませんでした;
何歳のおこちゃまか知らないけど、どんなエラーがでたかくらい書けよ
#include <math.h>
#include <stdlib.h>
#define LINE_MAX 256
これを追加すればエラーは無くなるかもな
LINE_MAXの値は適当だけど
>>892 >>1 をなぜ読まない↓
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
2番は返すと書いてるくせにvoidだから問題が矛盾してると教師に言っておけ。
899 :
892 :2008/04/05(土) 22:10:57
>>896 様、
>>897 様
失念してました、度々申し訳ないです。
>>1 読み直してきます;
そして、エラーについてですがちゃんと動くようになったのですが、
警告 W8057 prc08.c 42: パラメータ 'argc' は一度も使用されない(関数 main )
警告 W8057 prc08.c 42: パラメータ 'argv' は一度も使用されない(関数 main )
と出てきますが、問題ないでしょうか?
そして@にて、エラー仕様があったので追加させていただきます;
<エラー仕様>
「・整数以外が入力されたら、"整数以外"を表示し、終了。
・『−』のみ、または改行のみ入力されたら"-、又は改行のみ"を表示し、終了。」
自分焦りすぎですね…少し頭冷やしてきます。
>>898 様
よく判りませんが、力がついたら言っておきます;
>>899 >警告 W8057 prc08.c 42: パラメータ 'argc' は一度も使用されない(関数 main )
>警告 W8057 prc08.c 42: パラメータ 'argv' は一度も使用されない(関数 main )
日本語がわからないのか?使用されないって書いてあるじゃないか
int main(void)にすれば警告は消える
人に優しく
>>892 (2)
#include<stdio.h>
#include<stdlib.h>
void figure( int x, int y, int *p_add, int *p_sub) {*p_add = x + y; *p_sub = abs(x - y);}
int main() {
int x = 50, y = 60, add, sub;
figure(x, y, &add, &sub);
printf("和: %d 差:%d\n", add, sub);
return 0;
}
>>892 (3)
#include <stdio.h>
void dump(int *p_data) { while (*p_data != 0) printf("%d\n", *p_data++); }
void main() { int data[] = {10, 20, 30, 0}; dump(data); }
>>892 (4)
#include <stdio.h>
#define toupper(c) if (c >= 'a' && c <= 'z') c = c - 'a' + 'A';
void upper(char *p_data) { while (*p_data != '\0') { toupper(*p_data); p_data++; } }
void main() { char str[] = "apple"; upper(str); puts(str); }
906 :
890 :2008/04/06(日) 05:15:33
if(argv[1] == NULL) これはコマンドではなく、その後ろのパラメータ、あるいはオプションでは?
>>906 そんな糞雛形作る前に、アーカイブファイルの仕様を決めないとダメ。
仕様っていうのは例えば次みたいに決める(これは適当)
アーカイブファイル =
「各ファイルの情報」が順に並ぶ
ファイル終端は EOF
各ファイルの情報 =
ファイル名 (16 byte)
ファイルサイズ (16進数, 8 byte)
ファイルのデータ (ファイルサイズ分)
元のファイルの情報のうち,アーカイブに追加したいものは
ちゃんと仕様に取り込んでおかないといけない.
(上の例だと,大体 4 GB くらいまでの元ファイルのデータと,
英数字 16 文字までのファイル名しか保存できない)
ファイル名を任意の長さにしたり,ファイルサイズを任意にしたりしたければ,
仕様の段階で頭を使ってやる必要がある.
また,最終更新日時とかを保存したければ,OS やファイルシステムを考えて,
それなりに何とかする必要がある.
仕様をうまく設計しないと、
>>890 の要求は満たせないかもしれない。
909 :
892 :2008/04/06(日) 12:50:59
>>892 (5)
>>909 (5)
#include <stdio.h>
int _strcmp(char *s1, char *s2) { while (*s1 != '\0' && *s2 != '\0') { if (*s1 != *s2) return *s1 - *s2; s1++; s2++; } return *s1 - *s2; }
void get_string(char *p_str, int size) { int c; while ((c = getchar()) != '\n') { if (size > 1) { *p_str++ = c; size--; } } *p_str = '\0'; }
void main() { char a[11], b[11]; get_string(a, sizeof(a)); get_string(b, sizeof(b)); if (_strcmp(a, b) == 0) puts("epual!!"); else puts("Not equal!!"); }
911 :
892 :2008/04/06(日) 17:47:51
>>910 様
またも解答、本当にありがとうございます。
期限も今日のみとなりましたので、残るところ@とEですが、
時間のある方よろしくお願いしますー。
[1] 授業単元: 画像処理 [2] 問題文: グレイスケール画像(拡張子はpgm)から2値化画像(pbm)を作るプログラムを組め. [3] 環境 [3.1] OS:linux [3.2] コンパイラ名とバージョン:gcc,cc [3.3] 言語:C [4] 期限:今週中 [5] その他の制限: 特になし,出来るだけ判り易く 要するにpgmtopbmの動作が出来れば良いと思われます. linuxの中にあるソース見たのですがちょっと良く解らなかったので お願いに上がりました. よろしくお願いします.
>>892 (6)
>>909 (6)
#include <stdio.h>
void binary(unsigned char n, char *s) { int i, d; for (i = 7; i > 0; i--) { d = n / (2 << (i - 1)); n -= (2 << (i - 1)) * d; *s++ = '0' + d; } *s++ = '0' + n; *s = '\0'; }
void print(unsigned char n) { char b[9]; binary(n, b); printf("%3d, %02x, %s\n", n, n, b); }
int atoi(char *s) { int n = 0; while (*s != '\0') { n = n * 10 + (*s - '0'); s++; } return n; }
void get_string(char *p_str, int size) { int c; while ((c = getchar()) != '\n') { if (size > 1) { *p_str++ = c; size--; } } *p_str = '\0'; }
void main() { char s[4]; unsigned char n[3]; get_string(s, sizeof(s)); n[0] = atoi(s); n[1] = n[0] << 1; n[2] = ~n[0]; print(n[0]); print(n[1]); print(n[2]); }
>>912 できるだけわかりやすくってどれくらいだよ
ポインタは使うなとかそういう制限はあるのか?
画像でポインタ使うなってどんだけww
>>914 単純にコメントなどで読みやすいコードをって意味じゃね?
>>912 #include <stdio.h>
#include <string.h>
int trans(char *fname_in, char *fname_out, int threshold){
FILE *fp_in=NULL, *fp_out=NULL;
int width, height, maximum, value, x, y, ret=0;
char buf[11];
if(!(fp_in=fopen(fname_in, "r"))) goto on_error;
if(!(fp_out=fopen(fname_out, "w"))) goto on_error;
fscanf(fp_in, "%10s", buf);
if(strcmp(buf, "P2")) goto on_error;
if(fscanf(fp_in, "%d %d %d", &width, &height, &maximum)!=3) goto on_error;
threshold=threshold*256/(maximum+1);
fprintf(fp_out, "P1\n");
for(y=0;y<height;y++){
for(x=0;x<width;x++){
if(fscanf(fp_in, "%d", &value)!=1) goto on_error;
fprintf(fp_out, " %d", value>=threshold?1:0);
}
fprintf(fp_out, "\n");
}
ret=1;
on_error:
if(fp_in) fclose(fp_in);
if(fp_out) fclose(fp_out);
return ret;
}
int main(int argc, char *argv[]){
if(argc==3) trans(argv[1], argv[2], 128);
return 0;
}
918 :
917 :2008/04/06(日) 19:22:37
間違えた。訂正 threshold=threshold*256/(maximum+1); ↓ threshold=threshold*(maximum+1)/256;
919 :
912 :2008/04/06(日) 19:30:40
抽象的な表現で申し訳ありませんでした.
>>916 さんの仰る通り出来るだけ簡単で読み易いコードって意味で
判り易くと表現しました.
>>917 さん
有難うございます.
試してみます
920 :
917 :2008/04/06(日) 19:33:42
>>912 >>917 の訂正版
#include <stdio.h>
#include <string.h>
int trans(char *fname_in, char *fname_out, int threshold){
FILE *fp_in=NULL, *fp_out=NULL;
int width, height, maximum, value, x, y, ret=0;
char buf[11];
if(!(fp_in=fopen(fname_in, "r"))) goto on_error;
if(!(fp_out=fopen(fname_out, "w"))) goto on_error;
fscanf(fp_in, "%10s", buf);
if(strcmp(buf, "P2")) goto on_error;
if(fscanf(fp_in, "%d %d %d", &width, &height, &maximum)!=3) goto on_error;
threshold=threshold*(maximum+1)/256; // ここ修正した
fprintf(fp_out, "P1\n%d %d\n", width, height); // ここ修正した
for(y=0;y<height;y++){
for(x=0;x<width;x++){
if(fscanf(fp_in, "%d", &value)!=1) goto on_error;
fprintf(fp_out, " %d", value>=threshold?1:0);
}
fprintf(fp_out, "\n");
}
ret=1;
on_error:
if(fp_in) fclose(fp_in);
if(fp_out) fclose(fp_out);
return ret;
}
int main(int argc, char *argv[]){
if(argc==3) trans(argv[1], argv[2], 128);
return 0;
}
921 :
912 :2008/04/06(日) 19:38:18
>>909 (1)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int absolute(int n1, int n2) {
if (n1 > 0 && n2 < 0) return n1 - n2;
if (n1 < 0 && n2 > 0) return -n1 + n2;
if (n1 == 0 && n2 == 0) return 0;
return n1 > n2 ? n1 - n2: n2 - n1;
}
int input() {
int n; unsigned int i; char buf[256], *p;
p = fgets(buf, 256, stdin);
if (buf[0] == '\n' || strlen(buf) == 2 && buf[0] == '-') { printf("-、又は改行のみ\n"); exit(EXIT_FAILURE); }
for (i = 0; i < strlen(buf); i++)
if (i == 0 && buf[0] == '-') continue;
else if (!isdigit(buf[i]) && buf[i] != '\n') { printf("整数以外\n "); exit(EXIT_FAILURE); }
if (strlen(buf) > 9) p = buf + strlen(buf) - 9;
n = atoi(p);
if (buf[0] == '-' && n > 0) n *= -1;
return n;
}
int main() {
long n1, n2; n1 = input(); n2 = input();
printf("%dと%dの差の絶対値: %d\n", n1, n2, absolute(n1, n2));
return 0;
}
923 :
909 :2008/04/06(日) 22:25:27
>>913 、
>>922 様
お付き合いいただいてありがとうございます。@の方で、
『警告 W8065 prc12-4.c 32: プロトタイプ宣言のない関数 'input' の呼び出し(関数 main )
警告 W8065 prc12-4.c 32: プロトタイプ宣言のない関数 'input' の呼び出し(関数 main )』
実行できたのですが、どうすればいいでしょうか?;
925 :
923 :2008/04/06(日) 22:58:22
>>924 様
ありがとうございました、なんとか期限までに完成できました。
本当にありがとうございます。
また後日お世話になるかもしれませんが、その時はよろしくお願いします;
927 :
890 :2008/04/07(月) 03:41:42
928 :
890 :2008/04/07(月) 03:53:18
930 :
890 :2008/04/08(火) 02:37:57
>>929 ありがとうございます。
参考にさせて頂きます。
>>890 $ cat xmkfs.c
#include <stdio.h>
void main(int argc, char *argv[]) { char commnd[256]; system("touch .fs"); sprintf(commnd, "tar --file %s --create .fs", argv[1]); system(commnd); system("rm .fs"); }
$ cat xcpin.c
#include <stdio.h>
void main(int argc, char *argv[]) { char commnd[256]; sprintf(commnd, "tar --file %s --append %s", argv[1], argv[2]); system(commnd); }
$ cat xdir.c
#include <stdio.h>
void main(int argc, char *argv[]) { char commnd[256]; sprintf(commnd, "tar --file %s --list | grep --invert-match --line-regexp \\.fs", argv[1]); system(commnd); }
$ cat xmore.c
#include <stdio.h>
void main(int argc, char *argv[]) { char commnd[256]; sprintf(commnd, "tar --file %s --get %s --to-stdout", argv[1], argv[2]); system(commnd); }
$ cat xcpout.c
#include <stdio.h>
void main(int argc, char *argv[]) { char commnd[256]; sprintf(commnd, "tar --file %s --get %s", argv[1], argv[2]); system(commnd); }
>>931 これでええやん
$ cat xdir.c
#include <stdio.h>
void main(int argc, char *argv[]) { char commnd[256]; sprintf(commnd, "tar --file %s --list --exclude .fs", argv[1]); system(commnd); }
チートwww
>>932 > void main(int argc, char *argv[])
はずかしい間違いなのですが……。
>>934 (1)
後出しのエラー仕様を
>>913 に追加したらええやん
if (n < 0 || n > 255) { puts("エラー"); exit(0); }
if (c < '0' || c > '9') { puts("エラー"); exit(0); }
if (n[0] == '\0') { puts("エラー"); exit(0); }
mainから出るときはきちんとintを返しましょう
>>935 >>936 $ gcc -o xdir xdir.c
xdir.c: In function `main':
xdir.c:2: warning: return type of 'main' is not `int'
何か問題あるの?
間違いかどうかは一概には言えないが、ISO準拠だとmainはint型の値を返すのが 標準的とされている。くどいようだが、一概には言えないのは、各個人でISO準拠ではない スタイルでも問題のない環境が存在するから。とりあえず、幅広い環境で通用する int main(void) あるいはそこに書かれているスタイルの引数の変数を宣言するのが望ましい。 というのは、1年以上前にこのスレで五月蝿いくらいに議論されたことがある。 さてと、久々に帰ってきた俺が再びこのスレでレスしちゃうよぉ〜。あれから腕を磨いた。 そうだな、スーパーサイヤ人になったとでも言おうか。界王拳が使えるだけのときと比べて かなりレベルアップしたぜ?やるかい?うほっ?あっーー!
942 :
940 :2008/04/09(水) 15:50:05
>>940 チョンボしてたんでちょっと修正。
× if (month < 0 || 12 < month) {
○ if (month < 1 || 12 < month) {
他にも変なとこあるかもしんない。そんときはごめん。
943 :
デフォルトの名無しさん :2008/04/11(金) 01:42:06
[1] 授業単元:C言語プログラミング基礎実習 [2] 問題文(含コード&リンク):if文を用いて上半分が赤、下半分が青の正方形を描く プログラミングを作れ。(上半分なら赤、そうでなければ 青、という命令をif文で書く。) [3] 環境 [3.1] OS: Windows [3.2] コンパイラ名とバージョン: わかりません;; [3.3] 言語: (C/C++/どちらでも可 のいずれか) [4] 期限: 4月12日までにお願いします。 [5] その他の制限:for文とif文で作ってください。 ちなみに(10,10)〜(29,29)の範囲の正方形(赤)を描くプログラムは下の通りです。 int i,j; for(i=10,j=10;i++) for(j=10;j<30;j++) myDC.SetPixel(i,j,RGB(255,0,0)); 説明が分かりにくいかもしれませんがお願いします。
>>943 サンプルがどう見てもC++ですが……
つーか、有り得ない間違いがあるし。
945 :
940 :2008/04/11(金) 01:56:13
(0,0)〜(9,9)の範囲だとこんな感じか。 int i, j; for (i = 0; i < 10; ++i) { for (j = 0; j < 10; ++j) { if (i < 10 / 2) { myDC.SetPixel(i, j, RGB(255, 0, 0)); } else { myDC.SetPixel(i, j, RGB(0, 0, 255)); } } }
946 :
940 :2008/04/11(金) 02:09:06
>>944 別にCでも問題ないでしょ。
struct test_struct {
void (*SetPixel)(int, int, int);
};
static void test_func(int i, int j, int rgb)
{
/* ... */
}
int main(int argc, char *argv[])
{
struct test_struct myDC;
myDC.SetPixel = test_func;
myDC.SetPixel(0, 0, 0);
return 0;
}
947 :
デフォルトの名無しさん :2008/04/11(金) 02:22:24
>>945 そんな感じで(10,10)〜(29,29)の範囲でしていただけないでしょうか?
948 :
940 :2008/04/11(金) 02:44:34
>>947 int i, j;
for (i = 10; i < 30; ++i) {
for (j = 10; j < 30; ++j) {
if (i < 20) {
myDC.SetPixel(i, j, RGB(255, 0, 0));
} else {
myDC.SetPixel(i, j, RGB(0, 0, 255));
}
}
}
949 :
デフォルトの名無しさん :2008/04/11(金) 03:45:57
なにこのあつかましさ
950 :
890 :2008/04/11(金) 14:12:20
>>929 >>931 >>932 前回はありがとうございました。
更に質問なのですが、アーカイブファイルに取り込んだファイルの情報に最終修正時刻を追加したいのですが、どうすれば良いでしょうか?
最終修正時刻の方は何とか自分でコードが書けたのですが、それを
>>929 が作ってくれたプログラムに追加が上手く行っておりません。
struct stat st;
struct tm* t;
char strtime[256];
int tlength;
stat(argv[3], &st);
t = localtime(&st.st_mtime);
strftime(strtime, 256, "%b %d %H:%M %y", t); //format time
tlength = strlen(strtime);
fwrite(&tlength, sizeof(int), 1, fout);
fwrite(strtime, sizeof(char) * tlength, 1, fout);
時間情報の追加はこのような形で行えばいいでしょうか?
また、[i] ファイル名, サイズ、日にちの順番でアーカイブの中身を表示をするにはどうすればいいでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6218.c
951 :
940 :2008/04/11(金) 16:26:17
953 :
934 :2008/04/12(土) 13:14:31
>>936 様
解決しました。ありがとうございますー
>>940 様
わざわざありがとうございます。ですが、元を使わなくていけなかったので;
あと、@がコンパイルできたのですが、入力結果がでませんでした;
955 :
936 :2008/04/12(土) 13:38:54
>>953 おめ。3つ目のは以下の間違いだったので今更だけど訂正
if (s[0] == '\0') { puts("エラー"); exit(0); }
あと、2進数変換は
>>940 氏のアルゴリズムのほうがエレガントなので
余力があるなら書き換えたほうが良さそう
956 :
940 :2008/04/12(土) 14:17:59
>>953 問題文に「@0〜255の整数を入力し、数値に変換して unsigned char型配列に格納する。」
とあるので、0〜255を入力し終えるまで何も出力されないです。
そこら辺はソース見てもらった方がいいと思います。
#include <stdio.h> int main(void) { int dst=0; int cnt; for(cnt=0; ; ++cnt){ char in = getchar(); if(in=='0' || in=='1'){ if(cnt<8) dst = dst*2 + (in - '0'); }else{ if(in=='\n'){ if(cnt>0) break; else printf("エラー\n再入力せよ\n"); } dst=0; cnt=-1; } } printf("%d\n", dst); return 0; } 元の仕様には明記されていないんだが、エラー文字があった場合はエラーメッセージが何度も表示されないようにしてみた。
958 :
940 :2008/04/12(土) 16:38:04
[5] その他の制限:入力はgetcharで行う。
960 :
940 :2008/04/12(土) 17:04:00
963 :
940 :2008/04/12(土) 21:16:42
964 :
940 :2008/04/12(土) 22:09:30
全然違いますね、わかります。
>>936 様
了解です。わざわざどもですー。
>>940 、958様
説明が下手で申し訳ありません。つまり入力した数が255なら、
こんな感じで表示するようにしたかったのです;
『ビット処理前 dec:255 hex:ff bin:11111111 〜』
こっちのほうはすいません、ちょっとよく判らないです;
あと、Aは問題なく動いてると思うのですが、0のとき何もおきなかったですー。
>>957 様
問題なく動いてます。ありがとうございますー。
>>962 ツッコめるLvならいいのですが、修正できればここには来ないです;;
とりあえず動いていて、気になったのは03を例にすれば、
警告 W8068 main.c 34: 比較において定数が範囲外(関数 main )
警告 W8004 main.c 30: 'Pow' に代入した値は使われていない(関数 main )
警告 W8004 main.c 30: 'Answer' に代入した値は使われていない(関数 main )
警告 W8004 main.c 29: 'ch' に代入した値は使われていない(関数 main )
警告 W8004 main.c 28: 'Point' に代入した値は使われていない(関数 main )
警告 W8004 main.c 28: 'L' に代入した値は使われていない(関数 main )
警告 W8004 main.c 28: 'i' に代入した値は使われていない(関数 main )
と、こんな感じで警告文が出るのですが問題ないでしょうか?
968 :
962 :2008/04/13(日) 01:56:58
ボーランドのコンパイラって、初期化に警告だすの? 初期化時の値は大体つかってない。途中でかわってるはず。習慣なんでね。 一点だけ、EOFが現状-1だと気づかなくって、確認漏れなんだけど、 unsigned charでは比較できない。ので、intに変更してくだちい。 それだけかな?何で動いてるのかよくわかってないもんでね。。。 うごいててよかったよ。あっはっは〜。
970 :
966 :2008/04/13(日) 16:09:28
知らない人がお礼してますが、966のものです。
>>967 様
警告 W8065 ParseFlt.c 84: プロトタイプ宣言のない関数 'parse_input' の呼び出し(関数 main )
とでて、数字を入力するとerror3が出たり、英数を入力すると、入力のループになってるようです;;
>>962 様
変えて見たのですが、iとhが残ってますね。でも、動いてよかったですー。
そして少々特殊?な問題なのですが、
こちらのフローチャートを見てプログラムしなさいという問題があったので、
できれば今日中でよろしくお願いします。
ワードもエクセルもないので、オープンオフィスで申し訳ないのですが;
[1] 授業単元:プログラミング
[2] 問題文:
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6234.zip [3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: CPad for Borland
[3.3] 言語:C
[4] 期限:2008年4月14日提出
[5] その他の制限:getcharで入力
971 :
967 :2008/04/13(日) 17:48:29
do{ scanf("%d", &s); }while(s<0 || s>=10000); if ( s == 0 ) { return 0; }
>>972 なんかめんどくさいことやりすぎじゃね?
#include <stdio.h>
int f( int s_ ) { return ( ( s_ * s_ ) % 1000000 ) / 100; }
int main(){
int i,s;
do { scanf( "%d", &s ); } while ( s < 0 || s > 10000 );
if ( s == 0 )
return 0;
for ( i = 0; i < 10; ++i )
printf( "%d\n", ( s = f( s ) ) );
return 0;
}
#include <stdio.h> #include <math.h> #include <stdlib.h> #define DATASIZE 10 #define RANDS 4 int main() { int s,rank=2,base; int RandInt[DATASIZE] = {0}; int i,j; char *RandStr; puts("初期値(10000未満の正の整数"); scanf("%d",&s); if( s == 0 ) return 0; RandStr = malloc(sizeof(char)*((rank * RANDS) + 1)); s = (int)pow(s,rank); for(i = 0; i < DATASIZE; i++){ sprintf(RandStr,"%0*d",rank * RANDS,s); for(j = - (RANDS/2) ; j < (RANDS/2); j++){ RandInt[i] *= 10; RandInt[i] += RandStr[(rank * RANDS)/2 + j] - '0'; } s = RandInt[i]; s = (int)pow(s,rank); } for(i = 0; i < DATASIZE; i++) printf("%d\n",RandInt[i]); free(RandStr); return 0; }
977 :
デフォルトの名無しさん :2008/04/14(月) 22:31:13