トップページ⇒tech
1001コメント313KB

C/C++の宿題やらせてください。おながいします

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
ついでに今はJavaと基本情報もやっている。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m
4代目(前スレ): http://pc2.2ch.net/test/read.cgi/tech/1045074808/l50
3代目: http://pc2.2ch.net/test/read.cgi/tech/1041992392/l50
2代目: http://pc3.2ch.net/test/read.cgi/tech/1039772622/l50
宿題手伝いますYO!!: http://pc3.2ch.net/test/read.cgi/tech/1038024989/l50



0002デフォルトの名無しさんNGNG
2
0003デフォルトの名無しさんNGNG
乙

前スレの話だが汎用の値交換に興味のある向きは
BSD や GNU の libc/stdlib/qsort.c を見るといいやも
0004C初心者NGNG
SGLつかってscanfで読み込んだ2つの数値n,mで
n行m列の表を作ろうと思ったのですがうまくいきません。
超初心者的な質問で申し訳ないですが、どなたかご教授下さい。

#include "sfcgl.h"
void display()
{
BGColor(0, 0, 0);
int i,j;
double n,m,x,y;
for(i = 0; i < n; i++){
x = 10.0 + 10*i;
DrawLine(x, 0.0, 0.0, x, n*100 , 0.0);
}
for(j = 0; j < m; j++){
y = 10.0 + 10*j;
DrawLine(0.0, y, 0.0, m*100, y, 0.0);
}
SGSwapFrames();
}
int main(int argc, char** argv) {
int n,m;
scanf("%d%d",&n,&m);
SGInit(argc, argv);
SGOpenWindow(50, 50, 500, 500);
SG2DMode();
SGSetDisplay(display);
SGCallBack();
return 0;
}

mainで読み込んだn,mをvoid displayに関連させる方法が分りません。
0005デフォルトの名無しさんNGNG
>>4
void display(double n,m) /* ←引数にする */
{
BGColor(0, 0, 0);
int i,j;
double x,y; /*←ローカル変数のm,nは削除*/
for(i = 0; i < n; i++){
x = 10.0 + 10*i;
DrawLine(x, 0.0, 0.0, x, n*100 , 0.0);
}
0006デフォルトの名無しさんNGNG
>>3
glibcはdo{}while(0)マクロを使っていたと思う。
0007C初心者NGNG
レスどもです。
でもそれをやると
parse error before m と
m undeclared, n undeclared
とエラーが出ます。引数にするのは正しいと思うのですが、
なぜかできない・・・。
スマソ
0008bloomNGNG
http://homepage.mac.com/ayaya16/
0009デフォルトの名無しさんNGNG
>>7
void display(double n,double m)
0010デフォルトの名無しさんNGNG
http://pc2.2ch.net/test/read.cgi/tech/1045074808/948
質問の問いのを作ってるのですが、カーソルにあたった時の処理ってどうでしたっけ?
・ボールの角度が垂直×真ん中にあたった=垂直のボールが飛ぶ
・ボールの角度が垂直×端にあたった=端にあたるほど角度の無いボールが飛ぶ
・ボールの角度が垂直でない×真ん中にあたった=その角度を反転させたボールが飛ぶ
・ボールの角度が垂直でない×端にあたった=?
?の部分を教えてください。元のボールの角度に関係なくあたった位置により角度を作るか、
元のボールの位置とあたった位置を平均して角度を作るのどちらかっぽいのですが。
0011C初心者NGNG
神キター!!!
しかしできず。萎え・・・。
passing arg 1 of SGSetDisplay from imcompatible pointer type
と出ます。

何度も何度もスマソですがこのエラーの対処方わかります?。
0012デフォルトの名無しさんNGNG
>>11
お前はそのエラーメッセージが読めんのか?
0013デフォルトの名無しさんNGNG
SGSetDisplay()に渡す関数ポインタのシグネチャが違うんじゃないの
0014デフォルトの名無しさんNGNG
>>11
ヒント。
自分自身の書いた関数名を渡そうとしていないか?
そのSGなんたらには何を渡すべきか判っているのか?
0015C初心者NGNG
SGSetDisplay(display);
問題は上の()の中に入れる関数だと思うのですが、
(display(n,m))と入力しても voidエラーが出て実行できません。
英語が駄目駄目なんでエラー文の意味もまともに解釈できず困ってます。
神の方どうかご教授下さい。
0016デフォルトの名無しさんNGNG
>>15
とりあえず関数ポインタについて勉強してからにした方がいいよ

0017デフォルトの名無しさんNGNG
>>15
博識者を神とおだてるより自分で調べろよ。
英語がわからないならオンライン辞書でも使えばいいしさ。
エラーをヘルプで検索するってのもできるだろ?
0018C初心者NGNG
わかりました。関数ポインタについては参考書を購入して
勉強いたしたいと思います。ですがとりあえずこのプログラムが
上手くいく方法をご教授願えないでしょうか?よろしくお願いします。
0019デフォルトの名無しさんNGNG
>>18
英語も勉強しろ。
sageも覚えろ。

さて、「とりあえず」のコードをやろう。

#include "sfcgl.h"
int n,m;
void display()
{
BGColor(0, 0, 0);
int i,j;
double x,y;
〜〜〜〜〜〜〜〜〜〜〜〜
〜〜〜〜〜〜〜〜〜〜〜〜
}
int main(int argc, char** argv) {
scanf("%d%d",&n,&m);
SGInit(argc, argv);
SGOpenWindow(50, 50, 500, 500);
SG2DMode();
SGSetDisplay(display);
SGCallBack();
return 0;
}

このライブラリは描画関数に引数を渡せんのか・・・。不便だな。
0020デフォルトの名無しさんNGNG
>>19
> sageも覚えろ。

これは余計
0021デフォルトの名無しさんNGNG
なんか結局質問した時に戻ってるような
0022デフォルトの名無しさんNGNG
ようは答えだけが知りたいんだろ。

ヒントなんかくれなくていいから答えだせ、と
0023C初心者NGNG
>>19氏
ありがとうございます。おかげさまで実行できますた。

0024デフォルトの名無しさんNGNG
scanfに突っ込むのは無粋ですね
0025デフォルトの名無しさんNGNG
既存質問スレでの常時age進行は、
質問スレ乱立防止策には成り得ませんか?ダメ?
0026デフォルトの名無しさんNGNG
>C初心者さん
なんでnとmへの入力をmain関数で受けるの?
0027デフォルトの名無しさんNGNG
以下の2つの宣言は、どう異なるか述べなさい。
char *p = 'A';
char *p = "A";
次に上記のようにポインタ変数に初期値を与えるのでなく、
代入によって与えるような次のプログラムを書いた。
このプログラムに誤りがあるとすれば指摘しなさい。
#include<stdio.h>
int main(void)
{
char *p;
*p = 'A';
printf("*p = %c",*p);
return 0;
}
よろしくお願いします。
0028デフォルトの名無しさんNGNG
とりあえず。1が宿題をやらないのがむかつく
0029デフォルトの名無しさんNGNG
>>27
怪しい問題だな。写し間違いか?
0030デフォルトの名無しさんNGNG
>char *p = 'A';
>char *p = "A";

上、ろくな事にならんぞ。
0031デフォルトの名無しさんNGNG

>char *p;
>*p = 'A';
>printf("*p = %c",*p);

pは有効な変数を指してないのでまともに動かね
0032デフォルトの名無しさんNGNG
#include<stdio.h>

main(){
int i;
float f;
f=1234.0098;
i=f;
printf("%f %d",f,i);}

1234.0098 1234 と表示されるはずが
1234.009766 1234 と表示されます。
どうしてですか?教えてください。
ちなみに環境はwinXP,bcc5.5です
0033デフォルトの名無しさんNGNG
>>31
重箱の隅だが「pは有効な変数を指してない」はいかがなものか
0034デフォルトの名無しさんNGNG
>>27
> char *p = 'A';
> char *p = "A";

Cではcharはintと等価だから、上のは代入の時点で普通Warning吐かれるよ。
まあ、そういうことを言いたいんじゃないと思うけど。

とりあえず'A'は値を代入、"A"はアドレスを代入することになるから。
char *p = 'A'は多分、コンパイル通ってもAccess Viorationで落ちるね。
このプログラム、なんか少し前のVCLの某文字列クラスのバグを皮肉ってるようでなんかムカつく。

>>32
C、というかprintfはfloat型を出力できません。
すべてdouble型に暗黙の型変換されます。
0035デフォルトの名無しさんNGNG
int型って-127〜128だったっけ?

2進数    →10進数

00000000  → 0
10000000  → -128  でいいの?
10000001  → -1
01111111  → 128  ?

助けて
0036デフォルトの名無しさんNGNG
>>35
× int型って-127〜128だったっけ?

○ 00000000  → 0
○ 10000000  → -128
× 10000001  → -1
× 01111111  → 128

× 助けて
003735NGNG
char型って-128〜127だっけ?

00000000  →  0
10000000  →  -128
11111111  →  -1
01111110  →  127

助けて
0038デフォルトの名無しさんNGNG
>>37
× char型って-128〜127だっけ?

○ 00000000  →  0
○ 10000000  →  -128
○ 11111111  →  -1
× 01111110  →  127

× 助けて
003935NGNG
char型って-128〜127だろ!

00000000  →  0
10000000  →  -128
11111111  →  -1
01111111  →  127
10000001  →  -127
10000010  →  -126

分かった!
0040デフォルトの名無しさんNGNG
>>34
そうなんですか?でも、誤差はでませんよね??
0041デフォルトの名無しさんNGNG
>>39
× char型って-128〜127だろ!

○ 00000000  →  0
○ 10000000  →  -128
○ 11111111  →  -1
○ 01111111  →  127
○ 10000001  →  -127
○ 10000010  →  -126

× 分かった!
0042デフォルトの名無しさんNGNG
実数を使う以上誤差はでるよ。
004335NGNG
char型って-127〜127ですか?

中略


分かりません。
0044デフォルトの名無しさんNGNG
>>43
型の取り得る値の範囲は処理系依存。(CHAR_MIN〜CHAR_MAX)
char型が符号付か符合無しかも処理系依存。
0045デフォルトの名無しさんNGNG
>>42
丸め誤差とかのことでしょ?
0.0098に対して0.009766は誤差がありすきでしょう。
0046デフォルトの名無しさんNGNG
#include <float.h>
printf("%f",FLT_EPSILON);
0047デフォルトの名無しさんNGNG
>>43
signed charなら確実にその範囲は表せる。
004847NGNG
0〜127なら確実だね。
004935NGNG
サッパリ分かりません。
char型は1バイトでしょう?8ビット。
256個の整数を表せるのでは?
-128〜127は256個
-127〜127では255個です。
unsigned charでは0〜255なので256個

リナックスとウィンドウズは想像以上に違うの?
つうかリナックスの何処に<stdio.h>ってあるのですか?
#include <stdio.h>
って書いて意味あるの?
0050デフォルトの名無しさんNGNG
>>49
補数って知ってますか?
0051デフォルトの名無しさんNGNG
>>49
最低8ビットだけど、8ビットとは限らない。
limits.hの中のCHAR_BITがビット数

で、8ビットかつ1の補数表現なら最低は-127
1の補数表現だと全ビット0と全ビット1がどちらも値として0になる。

> つうかリナックスの何処に<stdio.h>ってあるのですか?
多分/usr/include
stddef.hとかは別の場所にあるかも。
005235NGNG
出直してきます
ありがとうございました。
0053デフォルトの名無しさんNGNG
>>45
IEEE754ならfloatの32bitの内訳は符号sが1bit, 指数eが8bit, 仮数mが23bitなので
有効数字は2進で24桁、約7桁だから期待通りの結果だと思うが?
0054 NGNG
つーか
ttp://www.bohyoh.com/CandCPP/FAQ/FAQ00046.html
読めば全て解決。

昔、漏れも C の先生に
sizeof int 以外は処理系に依らず決まってる
と嘘つかれますた。
0055デフォルトの名無しさんNGNG
薦めるならこっち
ttp://www-ccs.ucsd.edu/c/types.html#Basic%20Integer%20Types
ttp://www-ccs.ucsd.edu/c/limits.html
ttp://www-ccs.ucsd.edu/c/
0056デフォルトの名無しさんNGNG
int one(int i, int vc)
{


for (i = 0; i < 2; i++) {
int temp = vc[i];
vc[i] = vc[4 -i];
vc[4 -i] = temp;
}
return(vc[i]);
}

どこをどう治したらいいかわからん
あと
c:7: warning: declaration of `i' shadows a parameter
これはなに?
0057デフォルトの名無しさんNGNG
>>56
なぜint vcを配列として扱う?
0058デフォルトの名無しさんNGNG
>>56
その程度の英語くらい何とかしろよ。
そのソースには書いてないようだが、
パラメータでiを宣言しているのに関数内でも宣言してないか?
0059デフォルトの名無しさんNGNG
>>56
ただのループカウンタを引数にすんなよ。
0060デフォルトの名無しさんNGNG
>>56
何をしたいプログラムなの?
0061デフォルトの名無しさんNGNG
>>56
% echo 'void f(int i){
int i;};' | gcc -c -xc -
: In function `f':
:2: warning: declaration of `i' shadows a parameter
0062デフォルトの名無しさんNGNG
int one(int n, int *vc)
{
int i;
for (i = 0; i < 2; i++) {
int temp = vc[i];
vc[i] = vc[4 -i];
vc[4 -i] = temp;
}
return(vc[n]);
}
0063デフォルトの名無しさんNGNG
>>62
中途半端なスワップ関数だなぁ・・・。
0064デフォルトの名無しさんNGNG
スワップッつーか、リバースだろ。
006556「NGNG
returnは使えないんじゃないの
使わないやり方教えてください
0066デフォルトの名無しさんNGNG
>>56
おいおい、それ以前にやることがあるだろ。
・自分がどんな関数を書きたかったのか
・書かれたことは理解できたか
・ついでにお礼も
ここは質問スレじゃないんだからネタ提供せずに質問だけするなよ。
#あ、ネタにはなってるのか。
0067デフォルトの名無しさんNGNG
リバースならこうかな。iは要素数として
void one(int i, int *vc)
{
for (; --i > 0; vc++) {
int temp = *vc;
*vc = vc[i];
vc[i] = temp;
}
}
0068デフォルトの名無しさんNGNG
なんで使えないの?
vc[n]はintだから型もあっているし。
0069デフォルトの名無しさんNGNG
名前が one だからリバースじゃないね
007056「NGNG
配列の並び順を 逆にする関数を作りたいんです
#include <stdio.h>
#define NUMBER 5
void one(int i, int *vc)
{ for (; --i > 0; vc++) {
int temp = *vc;
*vc = vc[i];
vc[i] = temp;
} }
int main(void)
{
int i;
int vc[5];


puts("5個の整数を入力してください。");
for ( i = 0;i < 5; i++){
printf("%2d番目:", i + 1); scanf("%d", &vc[i]);
}
puts("逆に並べると");

for (i = 0;i < 5; i ++)
printf("vc[%d]=%d\n", one(i, *vc ));
return(0);
}
: In function `main':
:26: warning: passing arg 2 of `one' makes pointer from integer without a cast
:26: invalid use of void expression
さっぱりでつ お願いします
0071デフォルトの名無しさんNGNG
>>70
> printf("vc[%d]=%d\n", one(i, *vc ));

なぜ*vcと間接参照する。参照しないでポインタを渡すの。
007271NGNG
それにoneの戻り値はvoidなんだからprintfの引数には使えないでしょう。
007356「NGNG
もう少しわかりやすくお願いします
0074デフォルトの名無しさんNGNG
>>73
#include <stdio.h>
#define NUMBER 5
void one(int i, int *vc)
{ for (; --i > 0; vc++) {
int temp = *vc;
*vc = vc[i];
vc[i] = temp;
} }
int main(void)
{
int i;
int vc[5];


puts("5個の整数を入力してください。");
for ( i = 0;i < 5; i++){
printf("%2d番目:", i + 1); scanf("%d", &vc[i]);
}
puts("逆に並べると");
one(i, vc );
for (i = 0;i < 5; i ++)
printf("vc[%d]=%d\n", i,vc[i]);
return(0);
}
0075デフォルトの名無しさんNGNG
>>66
漏れは礼はいらんと思う。理解できたかどうかだけが意味がある。
007666NGNG
>>75
「理解できました、ありがとう。」ってのを期待してた。
でもどうやらそれ以前のようだね・・・
0077デフォルトの名無しさんNGNG
>>76
紛らわしかったかもしれんが75≠56
007866NGNG
>>77
わかってるよん。
0079デフォルトの名無しさんNGNG
>>67
もう一つ引かないといけないんじゃない?
void one(int i, int *vc)
{
for (; --i > 0; vc++, i--) {
int temp = *vc;
*vc = vc[i];
vc[i] = temp;
}
}
0080デフォルトの名無しさんNGNG
void reverse(int i, int *vc) {
for (; --i > 0;)
*vc++ ^= vc[i--] ^= *vc ^= vc[i];
}
0081__NGNG
  ∧_∧   
 ( ・∀・)/< こんなのみつけたっち♪ 
http://www.yamazaki.90.kg/moe/hankaku07html
http://yamazaki.90.kg/mona/index.html
http://www.yamazaki.90.kg/moe/hankaku08.html
http://yamazaki.90.kg/moe/hankaku10.html
http://www.yamazaki.90.kg/moe/hankaku07.html
http://yamazaki.90.kg/moe/hankaku03.html
http://www.yamazaki.90.kg/moe/hankaku05.html
http://yamazaki.90.kg/moe/hankaku01.html
http://www.yamazaki.90.kg/moe/hankaku06.html
http://yamazaki.90.kg/moe/hankaku04.html
http://www.yamazaki.90.kg/moe/hankaku09.html
0082デフォルトの名無しさんNGNG
>>1 やってみて。

1.1926以上2002以下の数(西暦)をキーボードから入力すると、「昭和45年です」とか
 「平成6年です」とか和暦に直すプログラム。1926年の場合は「昭和元年です」
 1989年の場合は「平成元年です」と表示するように。
 で、1925以下や2002以上が入力されると「入力は1926-2001の間にして下さい」と表示。

2.Aさん、Bさんが階段じゃんけんゲームをシュミレーションするプログラム。
 ルールは・・・
 ○プレイヤー2人は、最初階段の0段目にいてじゃんけんする。
 ○じゃんけんの勝者はグーで勝てば1段、チョキで勝てば2段、パーで勝てば5段
  階段を登ることが出来る。あいこは0段。
 ○10回のじゃんけんの結果、より高い段に居た方が勝ち。

3.「2のn乗 −2」がnで割り切れるなら素数であるという定理を使って、2〜20までの
 素数を全て求めよ。
0083デフォルトの名無しさんNGNG
>>67 >>79 >>80
おまえら、無駄が多い。
0084デフォルトの名無しさんNGNG
>>83
お前は無駄レスだけ。
0085デフォルトの名無しさんNGNG
オレニマカセロ!
0086not 1NGNG
>>82
1ではないが、やっていいかNa??
0087 NGNG
>>82
> 3.「2のn乗 −2」がnで割り切れるなら素数であるという定理を使って、2〜20までの
この定理、なんか変じゃないか???

0088デフォルトの名無しさんNGNG
2^2-2=4
2^3-2=6
2^4-2=14 ×
2^5-2=30
...
0089デフォルトの名無しさんNGNG
そもそも何が素数か書かれていない。
0090デフォルトの名無しさんNGNG
>>87
n=341の時はその定理は成り立たない。nが20以下には全部適用できるね。
009187 NGNG
>>90
なるほど「問題文の日本語が変」なだけだw

3.「2のn乗 −2」がnで割り切れるなら "nが" 素数であるという定理を使って、2〜20までの
 素数を全て求めよ。

ってことね。
0092デフォルトの名無しさんNGNG
ちょっとやってみるか。
0093デフォルトの名無しさんNGNG
今日の宿題です。

配列を上位桁から表示するようにして欲しいです。
関数は


int card_conv(unsigned x, int n, char d[])
{

int i;

char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int digits = 0;
if (x == 0)
d[digits++] = dchar[0];
else
while (x) {
d[digits++] = dchar[x % n];
x /= n;
}


for (i = 0; i < n / 2; i++)
swap(int, d[i], d[n - i - 1]);


return (digits);

}
0094デフォルトの名無しさんNGNG
メインは


int main(void)
{
int i;
unsigned no;/* 変換する整数 */
int cd;/* 基数 */
int dno;/* 変換後の桁数 */
char cno[100];/* 変換後の各桁を格納する文字の配列 */
int retry;/* もう一度? */

do {
printf("正の整数値を入力してください:");
scanf("%u", &no);
do {
printf("何進数に変換しますか(2-36):");
scanf("%d", &cd);
} while (cd < 2 || cd > 36);
dno = card_conv(no, cd, cno);/* noをcd進数に変換 */
printf("%d進数では", cd);
for (i = dno - 1; i >= 0; i--)/* 上位桁から順に表示 */
printf("%c", cno[i]);
printf("です。\n");
printf("もう一度しますか(1…はい/0…いいえ):");
scanf("%d", &retry);
} while (retry == 1);

return (0);
}
0095デフォルトの名無しさんNGNG
for (i = 0; i < n / 2; i++)
swap(int, d[i], d[n - i - 1]);

for (i = 0; i < digits / 2; i++)
swap(int, d[i], d[digits - i - 1]);
0096デフォルトの名無しさんNGNG
16行目でエラーが出てしまいます。aには名前を入力したいのですが
この書式指定では駄目なのでしょうか?

#include <stdio.h>
#include <string.h>
struct tell{
char name[20];
char tele[20];
};
main(){
char *a,*b;
struct tell c[255];
int i,j=0;
while(1) {
printf("全角5字以内で、氏名を入力せよ。 終了:e\n");
scanf("%s",&a);
if (a == "e") break;
strcpy(c[j].name, a);
printf("半角20字以内、ハイフン編集して、電話番号を入力せよ。 終了:e\n");
scanf("%s",&b);
if (b == "e") break;
strcpy(c[j].tele, b);
j++;
}
printf("氏名  電話番号\n");
for (i=0;i>j;i++) {
printf("c[i].name  c[i].tele\n");
}
}
009796NGNG
すいません13行目になります
0098デフォルトの名無しさんNGNG
char *a

char a[1000]
0099デフォルトの名無しさんNGNG
scanf("%s",&a);

scanf("%s",a);
0100デフォルトの名無しさんNGNG
>>96
exploitコードの見本ですか?
0101デフォルトの名無しさんNGNG
>>94
> char cno[100];/* 変換後の各桁を格納する文字の配列 */

変換対象が unsigned no なら 100 もとることはなかろう。
0102デフォルトの名無しさんNGNG
n元連立一次方程式を解くプログラム作って下さい。
0103デフォルトの名無しさんNGNG
数式処理のソフト手に入れろ。
0104デフォルトの名無しさんNGNG
>>102
ftp://ftp.matsusaka-u.ac.jp/pub/algorithms/src/gauss.c
ftp://ftp.matsusaka-u.ac.jp/pub/algorithms/src/matutil.c
0105102NGNG
卑怯な奴等ですね。
有難く頂いておきますが。
0106デフォルトの名無しさんNGNG
>>105
『アルゴリズム事典』は持っとけ。良くできた本だから。
ttp://www.gihyo.co.jp/books/syoseki.php/4-87408-414-1
ttp://www.matsusaka-u.ac.jp/~okumura/algo/
ttp://www.amazon.co.jp/exec/obidos/ASIN/4874084141
0107その1NGNG
>82
86ではないが、2をやってみますた

#include <stdio.h>
#include <time.h>

int nyuryoku(){
int t;

while(1){
printf("1:グー 2:チョキ 3:パー\n");
scanf("%d",&t);
if(t<=0||t>=4){
printf("1 2 3のどれかを入力して下さい!\n");
} else {
break;
}
}

return t;
}
0108その2NGNG
int janken(int a,int b){
if(a==b){return 0;}
if(a==1&&b==2)return 1;
if(a==1&&b==3)return -5;
if(a==2&&b==1)return -1;
if(a==2&&b==3)return 2;
if(a==3&&b==1)return 5;
if(a==3&&b==2)return -2;
}

void main(){
int pla=0,plb=0;//A,Bのいる位置
int i;
int ta,tb;//じゃんけんの手
int jan;
char *s;
time_t a;
0109その3NGNG

for(i=1;i<=10;i++){
ta=nyuryoku();
tb=time(NULL);
tb=tb%3+1;
jan=janken(ta,tb);
if(jan>=0){
pla=pla+jan;
printf("Aの勝ち\n");
printf("Aは階段を%d段上がりました\n",jan);
} else {
plb=plb-jan;
printf("Bの勝ち\n");
printf("Bは階段を%d段上がりました\n",-jan);
}
}

if(pla<plb)s="Bの勝ちです";
if(pla==plb)s="あいこです";
if(pla>plb)s="Aの勝ちです";

printf("Aは%d段に、Bは%d段にいるので%s",pla,plb,s);
}
0110107NGNG
なんか、ダサいプログラムだなあ・・・
もっと上手い方法きぼんぬ
0111デフォルトの名無しさんNGNG
うーん、長いね。もっと簡潔に出来そうじゃない?
0112102NGNG
( ゚Д゚)ゴルァ!!
コンパイルしたけど下の奴はコンパイルできねえし
gauss.cは出来たけど実行したら
nしか入れられないじゃないか!

2 2 3  x    10
3 2 3  y  =  9
9 2 3  z     8

とかやりたいの!
0113107NGNG
もっと簡素にですか・・・
いいプログラムきぼんぬ

っていうか、janken関数が自分で書いててなんか気持ち悪い
0114デフォルトの名無しさんNGNG
int janken(int a,int b){
 static int const *const sSteps[] = {0, 1, -5, -1, 0, 2, 5, -2, 0};
 return sSteps[(a - 1) * 3 + (b - 1)];
}
0115107NGNG
>112
Aを行列として
Ax=y
を解きたいんでしょ?
線形代数の教科書に載ってる、余因子を使って逆行列を求める方法を使えば?

1.A,yの値を入力する
2.detAを求め正則かどうかを判別する
3.余因子を計算し、それを用いてAの逆行列A^(-1)を求める
4.x=A^(-1)yを計算し、表示する
0116107NGNG
>114
おぉ、成る程
いい方法教えてくれて有難うございます
0117デフォルトの名無しさんNGNG
>82
#define NGAMES 10
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int
main(int argc, char **argv)
{
  unsigned long seed;
  int a = 0, b = 0, x, y, i;
  int p[3][3][2]={{{0,0},{1,0},{0,1}},{{0,1},{0,0},{1,0}},{{1,0},{0,1},{0,0}}};
  char *name[3] = {"goo", "choki", "paa"};

  seed = argc > 1 ? atoi(argv[1]) : time(NULL); 
  srandom(seed); printf("# seed = %ld\n", seed); 
  for (i=0; i<NGAMES; i++){
    x = random()%3; y = random()%3; a += p[x][y][0]; b += p[x][y][1];
    printf("turn %2d: A:%5s(%2d), B:%5s(%2d)\n", i+1, name[x], a, name[y], b);
  }
  if (a < b) puts("B won"); else if (a > b) puts("A won"); else puts("draw");
  return 0;
}
0118102NGNG
>>112で俺が書いた連立方程式って

2x+2y+3z=10
3x+2y+3z=9
9x+2y+3z=8

って事だよね?

xの解が3個あるような...(°Д°)数学分かんね
0119デフォルトの名無しさんNGNG
>118
行列式は知ってる?
この場合行列式(detAと書く)が0になるから
解は無限に存在するんだよ
0120デフォルトの名無しさんNGNG
ゴメン、うそ書いたかも・・・
この場合、条件を満たすx,y,zは存在しないみたいね
0121102NGNG
(°Д°)撃沈しました。寝ます。
0122デフォルトの名無しさんNGNG
enum AHYA
{
 Mona, Giko, Shii
};

ってenumがあったとき、
関数(Mona) // 0を返す
関数(Giko) // 1
関数(Shii)  // 2

って関数がC++にあったような木がするのですが、
俺様の気のせいですか?
0123デフォルトの名無しさんNGNG
>>122

別に関数なんて使わないでも値指定しなきゃ
デフォで012,、って入ってる気がするが俺の気のせいですか?
0124デフォルトの名無しさんNGNG
#define G 1
#define C 2
#define P 5
int win(int a, int b) {
return a == G && b == C || a == C && b == P || a == P && b == G;
}
if (win(a, b)) c += a;
else if (win(b, a)) d += b;
こんな感じでどう?
0125デフォルトの名無しさんNGNG
>>113
デフォ。1個目は省略すると0、2個目からは++していく。
0126デフォルトの名無しさんNGNG
>>82の2を見て「どうして“キーボードから入力”なんて書いてないのにscanf使ってんだ? おまえら文盲か?」と思う。
 ↓
「乱数つかえよ?アホ共」と思い、boost::mt19937にstd::timeで実装してみる。
 ↓
あいこの判定がないのに気づく。
 ↓
完成しレスするかと読み返していると、ふと「場合によっては10回ループ中で、あいこの無限ループ?」という事実に気づく。
 ↓
女々しくZThreadで逃げてみる。
 ↓
数レスでは収まらない馬鹿長いコードになっている。
 ↓
他人のために数時間を無駄にしていることに気づき、なにもかも忘れようとゲームを始める。
 ↓↑
なにか納得いかない。(繰り返し)
0127デフォルトの名無しさんNGNG
>>126
>>117
0128デフォルトの名無しさんNGNG
>>119
蛇足だが、補足
行列式が0だからといって解が無限にあるという考えは間違い。
一般の非斉次の場合、解が無い場合がほとんど。
つまり連立方程式は
1)解が一組だけある。
2)解そのものが無い
3)無限組ある
の3つの場合が起こりえるが、このうち行列式=0で起こるのは2)3)
のいずれか。
0129デフォルトの名無しさんNGNG
高校での行列の扱いが20年前と比べてスゲエ減ってるのに衝撃を受けたが、
それでも>>128の内容は数Cの教科書に載ってますな。
0130デフォルトの名無しさんNGNG
>>129
最近の中学校と高校の数学の教科書見ましたけど、こんなんで日本は大丈夫なのか?
って思っちゃいました。

これで思考力をつけるとか言ってるんだから正気じゃないね。

基礎力のないところに思考力もへったくれもないだろっての!
0131102NGNG
(°Д°)私は理系の大学生ですが何か?
0132デフォルトの名無しさんNGNG
>>129
行列式(det)なんて、大学入るまで習ってねーぞー。
確か・・・。
0133デフォルトの名無しさんNGNG
電光掲示板みたいに文字を横に移動させるプログラムをlocateを使って
作りたいんですけど作れません。どなたか教えてくださいm(_ _)m
0134デフォルトの名無しさんNGNG
オレニマカセロ!
0135デフォルトの名無しさんNGNG
>>134
マカセタ!
0136デフォルトの名無しさんNGNG
>>134
ガンバッテ!
0137デフォルトの名無しさんNGNG
どのレベルで聞きたいのかわかりません。
とりあえず、これだけ聞くと、memcpyで出来そうな気がするけど。
0138デフォルトの名無しさんNGNG
>>132
こないだ知合いの高3に数C教えたけど、逆行列は載ってたよ。
「行列式」という言葉や「det A」はなぜか書いてなかったけど、
同じものをΔと書いて>>128と同じことが説明してあった。
ついでにいうと、その数Cの教科書には掃き出し法による
連立一次方程式の数値解法のBASICのコードも載ってた。
つうか、今の数Cの教科書の行列のところは、和、積、ケーリーハミルトン、
逆行列、連立一次方程式、掃き出し法しかのってないんだけど。
線形空間の言葉が全然出てこなくておじさんクラクラしたよ。
0139デフォルトの名無しさんNGNG
void erase(char *s) {
for (; *s; s++) putchar(' ');
}
for (;; x++) {
locate(x, y);
puts(s);
if (end) break;
locate(x, y);
erase(s);
}
0140デフォルトの名無しさんNGNG
>>139
むぅ。
0141デフォルトの名無しさんNGNG
>>139
ありが�d
0142デフォルトの名無しさんNGNG
#include <stdio.h>
#define NUMBER 5
void one(int i, int vc[])
{
while(i < 2) {
int temp = vc[i];
vc[i] = vc[4 -i];
vc[4 -i] = temp;
i++;
} }
int main(void)
{
int i;
int vc[5];
i = 0;
puts("5個の整数を入力してください。");
while (i < 5 ){
printf("%2d番目:", i + 1); scanf("%d", &vc[i]);
i++;
}
puts("逆に並べると");
one(i, vc );
while (i < 5) { ←ここの部分が表示されないんだけど
printf("%d\n", vc[i]);     助けてください
i++;
}
puts("となります。");
return(0);
}

0143デフォルトの名無しさんNGNG
5個の整数を入力してください.
1番目: 5
2番目: 80
3番目: 110
4番目: 2200
5番目: 33000
逆にならべると
33000
2200
110
80
5
となります.


こんな風にしたいんですがおながいします
0144デフォルトの名無しさんNGNG
iの値を再初期化してへんやん
0145デフォルトの名無しさんNGNG
void one(int i, int vc[])
{
i = 0;
while(i < 2) {
int temp = vc[i];
vc[i] = vc[4 -i];
vc[4 -i] = temp;
i++;
} }
0146デフォルトの名無しさんNGNG
#include <stdio.h>
#define NUMBER 5
void reverse(int i, int *vc) {
for (; --i > 0;)
*vc++ ^= vc[i--] ^= *vc ^= vc[i];
}
int main(void)
{
int i, vc[NUMBER];
printf("%d個の整数を入力してください。\n", NUMBER);
for ( i = 0;i < NUMBER; i++){
printf("%2d番目:", i + 1); scanf("%d", &vc[i]);
}
puts("逆に並べると");
reverse(NUMBER, vc);
for (i = 0;i < NUMBER; i++)
printf("vc[%d]=%d\n", i,vc[i]);
return 0;
}
0147デフォルトの名無しさんNGNG
今のでやったんですが
5個の整数を入力してください。
1番目:1
2番目:2
3番目:3
4番目:4
5番目:5
逆に並べると
となります。 ←ここのところが抜けちゃう運ですよ



0148デフォルトの名無しさんNGNG
while (i < 5) { ←ここの部分が表示されないんだけど
printf("%d\n", vc[i]);     助けてください
i++;
}

for (i=0; i<5; i++) printf("%d\n", vc[i]); 
0149デフォルトの名無しさんNGNG
>>146
> *vc++ ^= vc[i--] ^= *vc ^= vc[i];

また、「 未 定 義 」か...。
0150デフォルトの名無しさんNGNG
>>146
whileぶんで作らなければならないんですよ
0151デフォルトの名無しさんNGNG
i=0;
while (i < 5) { ←ここの部分が表示されないんだけど
printf("%d\n", vc[i]);     助けてください
i++;
}
0152デフォルトの名無しさんNGNG
>>151
そりゃあ、その行には出力するための処理がないからね。
0153デフォルトの名無しさんNGNG
forを使え forを使え forを使え forを使え forを使え forを使え forを使え
forを使え forを使え forを使え forを使え forを使え forを使え forを使え
forを使え forを使え forを使え forを使え forを使え forを使え forを使え
forを使え forを使え forを使え forを使え forを使え forを使え forを使え
forを使え forを使え forを使え forを使え forを使え forを使え forを使え
forを使え forを使え forを使え forを使え forを使え forを使え forを使え
forを使え forを使え forを使え forを使え forを使え forを使え forを使え
0154デフォルトの名無しさんNGNG
>>149
for (; --i > 0; vc++, i--) *vc ^= vc[i] ^= *vc ^= vc[i];
これでいい?
0155デフォルトの名無しさんNGNG
>>151
ちょっともちつけ
何言ってるのかわからなくなってきてるぞ
0156151NGNG
151は150にレスしただけで助けてほしいわけではないです。
コピペしたときに入っただけで。
0157デフォルトの名無しさんNGNG
i=0;
while (i < 5) { ←ここの部分が表示されないんだけど
printf("%d\n", vc[i]);     助けてください
i++;
}


ここの部分をどうすればよいのでしょうか
教えてください
0158あんたまだ解決してなかったんかいNGNG
while (i < 5) { ←ここの部分が表示されないんだけど
printf("%d\n", vc[i]);     助けてください
i++;
}
を
i=0;
while (i < 5) { ←ここの部分が表示されないんだけど
printf("%d\n", vc[i]);     助けてください
i++;
}
に
0159デフォルトの名無しさんNGNG
もう一箇所ある予感!
0160デフォルトの名無しさんNGNG
printf("%d" , i);
0161デフォルトの名無しさんNGNG
#include <stdio.h>
#define NUMBER 5
void one(int i, int vc[])
{
while(i < 2) {
int temp = vc[i];
vc[i] = vc[4 -i];
vc[4 -i] = temp;
i++;
} }
int main(void)
{
int i;
int vc[5];
i = 0;
puts("5個の整数を入力してください。");
while (i < 5 ){
printf("%2d番目:", i + 1); scanf("%d", &vc[i]);
i++;
}
puts("逆に並べると");
one(i, vc );
i = 0;
while (i < 5)
printf("%d", i);
printf("%d\n", vc[i]);
i++;
puts("となります。");
return(0);
}
こんどは、5番目まで入力したら、その後ずっと止まらなくなってしまいました
0162デフォルトの名無しさんNGNG
>>161

最後のwhileの中括弧が抜けてるよ
これだとprintf("%d",i);が無限にw
0163デフォルトの名無しさんNGNG
t99j017@opbb076[ 19 ] kadai4-2
5個の整数を入力してください。
1番目:1
2番目:2
3番目:3
4番目:4
5番目:5
逆に並べると
01
12
23
34
45


手取り足取りで申し訳ないが今度はこんな風になってしまった。
この課題が終わったら少しまじめに取り組もうと思うのでこれだけはお願いします。
0164デフォルトの名無しさんNGNG
すんませんできました。
本当にありがとうございました
またくるかもしれませんがよろしくね
0165デフォルトの名無しさんNGNG
アカウント名t99j017か
0166デフォルトの名無しさんNGNG
>逆に並べると
全然逆じゃないんだがいいのか?
0167デフォルトの名無しさんNGNG
99年度入学のj科17番さん?
0168デフォルトの名無しさんNGNG
>>167
大阪工大?
0169デフォルトの名無しさんNGNG
>>167
留年 or 院 ってことかな ?
0170デフォルトの名無しさんNGNG
藻前らみっともない
0171デフォルトの名無しさんNGNG
俺も身元探りレスしようとしたけど、皆でそんな事したら、
来れなくなっちゃうよ・・・
0172172NGNG
生年月日を和暦で"S57/6/5"という書式で標準入力したとき、
西暦に変換し"1982年06月05日"という書式で標準出力する
プログラムを作成しなさい。ただし、生年月日は明治元年
以降に対応すること。

どのような条件式をつくればいいのでしょうか?
if elseで可能ですよね?
0173デフォルトの名無しさんNGNG
?format$("S57/6/5","yyyy年mm月dd日")
1982年06月05日
0174デフォルトの名無しさんNGNG
#include <stdio.h>
int main()
{
char c;
int year;
int month;
int day;

scanf("%c%d/%d/%d",&c,&year,&month,&day);
/* 元号を西暦に変換する処理は後回し */
printf("%d年%02月%02日\n",year,month,day);

return 0;
}
0175デフォルトの名無しさんNGNG
で、その変換処理だが・・・まあswitchを使うだろう。
何年から何年が明治で何年から大正とか知らないんだよな・・・
0176172NGNG
>>175
1868年から明治、1912年から大正、
1926年から昭和、1989年から平成です
0177デフォルトの名無しさんNGNG
>>174
不正な入力で落ちまくり(w
0178デフォルトの名無しさんNGNG
平成1年1月1日は存在しないけどな。
0179デフォルトの名無しさんNGNG
>>177
気にするな(w
宿題じゃなきゃこんなコードかかん
0180デフォルトの名無しさんNGNG
>>178
そもそも平成1年が存在しない(よね?)
0181デフォルトの名無しさんNGNG
>>180
Excelでオートフィルかけたらこんなんなったが?
昭和64年1月6日
昭和64年1月7日
平成1年1月8日
平成1年1月9日
0182デフォルトの名無しさんNGNG
>>181
それはエクセルがおかしい。
平成元年ならあるが平成1年はない
0183デフォルトの名無しさんNGNG
今は元年が1年の別名だってことを知らない奴がいるのか。
0184デフォルトの名無しさんNGNG
別名ねぇ・・・平成1年なんて言ったら恥書くと思うけど。
その時に別名だからいいんだと言い張るのかい?
0185デフォルトの名無しさんNGNG
本題に戻そう

>>176
あり得ない日付を入力したらエラー処理をしろとか言われた?
0186172NGNG
>>185
月別に日にちの制限を設ける必要はないと思います。ただ13月、
32日はさすがにエラー処理しないといけないでしょう
0187デフォルトの名無しさんNGNG
>>184
恥書くわけ無いでしょ。
普通に使われてるよ。
むしろあんたが恥。
0188デフォルトの名無しさんNGNG
オレの脳内ではできた。とりあえずスカラー波で送っとく。
白い服は着てないよね?
0189デフォルトの名無しさんNGNG
ttp://www.google.co.jp/search?q=%22%95%BD%90%AC1%94N%22+site%3Ago.jp
ttp://www.google.co.jp/search?q=%22%95%BD%90%AC%8C%B3%94N%22+site%3Ago.jp
0190デフォルトの名無しさんNGNG
>>189
うん。普通に使われてるね。
0191デフォルトの名無しさんNGNG
この件数の差で普通か・・・
件数で計れるものではないかもしれないけど
0192デフォルトの名無しさんNGNG
NENGOU,NENSUU
平成,1
平成,2
平成,3
#というわけで、数字しかはいらないんだから、無茶を言うな。
0193デフォルトの名無しさんNGNG
普通じゃん。
1年という言い方が間違っているならそうとう減るはずだからね。
特にgo.jpなら。でもこの差はgo.jp以外でも一緒だし。



いいかい。1年という言い方は正しいんだよ。
0194デフォルトの名無しさんNGNG
>>192
変数の中身は1でも、表示を元年にすることはできますね。
0195172NGNG
僕の課題は1年でOKですよ
0196デフォルトの名無しさんNGNG
明治='M'
大正='T'
昭和='S'
平成='H'
でいいの?
0197デフォルトの名無しさんNGNG
Masa='M'
Tyuu='T'
Settu='S'
Highschool='H'
0198デフォルトの名無しさんNGNG
if(year==1)printf("元年");
else printf("%d年",year);
これをつけるかつけないかだけだろ?
0199194NGNG
あー、そういえば元年と表示することはないな。
表示は西暦だから。
0200デフォルトの名無しさんNGNG
>>1999
西暦元年
0201デフォルトの名無しさんNGNG
>>191
普通かどうかは別にしても、>>180=>>182=>>184 が主張するほどではないことは明白だわな。
>>184 は、何をもって恥を掻くと言ってんだろう ?
普通に考えたら、そこまで言っといて「恥を書く」と書くほうがよほど恥ずかしいと思うが。
0202デフォルトの名無しさんNGNG
>>199
でも、入力は「元年」にも対応しなくちゃね。
0203デフォルトの名無しさんNGNG
市役所に出した書類で「平成元年」と書いたら「1年」に修正されますた
0204デフォルトの名無しさんNGNG
お役所ですから(-_-;) y-。oO○
0205デフォルトの名無しさんNGNG
C言語の基礎を覚えた程度の私に、何か問題をいただけませんか?
C++ではありません。

【開発環境】
Visual Studio.NET(Not 2003)
OSはXP Home
エディタはK2Editerを使用してます。
どなたか、問題を出していただけませんか?
0206デフォルトの名無しさんNGNG
>>205
1から任意数までの素数を全部表示するプログラムとか?
0207205NGNG
>>206
それは既にやったんですよ。任意の数字を変数に入れ、
それをfor文、if文でちょいっと…。
わがままで申し訳ありませんが、もう少しレベルの高いものって
ありませんか?
よろしくお願いします。
0208デフォルトの名無しさんNGNG
>>207
MSDN ライブラリを調べて API 使ってみたら?
プログラミングの幅が広くなって面白いよ。
試しに、あるディレクトリにある全てのファイルを表示させてみるとか。
0209デフォルトの名無しさんNGNG
>>205
int expand(double x, int base, char str, char *len)
0 ≦ x < 1 を base 進法で表した小数部を最大 len 文字で str に書き込む。
書き込んだ文字数を返す。
0210デフォルトの名無しさんNGNG
>>209
誤 int expand(double x, int base, char str, char *len)
正 int expand(double x, int base, char *str, char len)
0211デフォルトの名無しさんNGNG
>>210
もちつけ俺
誤 int expand(double x, int base, char str, char *len)
正 int expand(double x, int base, char *str, int len)
0212デフォルトの名無しさんNGNG
>>205
多倍長演算の実装やって、円周率を下1000桁ぐらいまで求めるとか
0213デフォルトの名無しさんNGNG
>>205
アルゴリズムイントロダクションを買ってきて、
最初から順に実装していく。
0214デフォルトの名無しさんNGNG
>>200
明治以降に西暦元年はないわな。
それに西暦では1年なんでは・・・
0215デフォルトの名無しさんNGNG
#include <stdio.h>
char *me;
static void die(char *msg){fprintf(stderr, "%s: %s", me, msg); exit(1);}
int main(int argc, char **argv)
{
  char c;
  char s[BUFSIZ];
  int y,m,d;
  me = argv[0];
  if (fgets(s, BUFSIZ, stdin) == NULL) die("couldn't read input\n");
  if (sscanf(s, "%c%d/%d/%d",&c,&y,&m,&d) != 4) die("invalid format\n");
  switch(c) {
    case 'H': y += 1988; break;
    case 'S': y += 1925; break;
    case 'T': y += 1911; break;
    case 'M': y += 1867; break;    
    default: die("unknown first letter\n");
  }
  printf("%d年%02d月%02d日\n", y,m,d);
  return 0;
}
0216デフォルトの名無しさんNGNG
>>215
exitを使うときはstdlib.hをインクルードせよ。
0217デフォルトの名無しさんNGNG
visualC++.netインストールしようとしたら
「ファイルが見つかりません」ってでるんですが
どうしたらインストールできますか?」
0218デフォルトの名無しさんNGNG
>>217
インストールしろという宿題なのか?
マイクロソフトに聞けよ。
0219205NGNG
みなさんアドバイスありがとうございます。
>>208
初心者本を読破した程度でAPIが理解できるものなのでしょうか?
まぁせっかくVisual Studio.NETがあるので、見てみたいと思います。

>>209
ああ・・・全然理解できん・・・

>>212
面白そうですね。
多倍長演算は名前だけ聞いたことがあるのですが、実際に使ったことはありませんし、
すごく面白そうです。

>>213
そろそろアルゴリズム云々を勉強しようとしてたので、やってみたいですね。
実際に力もつきそううですし。

みなさん、こんな初心者に丁寧にアドバイス本当にありがとうございました。
0220デフォルトの名無しさんNGNG
>>219
http://www.linux.or.jp/JM/
http://www.bohyoh.com/CandCPP/C/Library/index.html

ここでCの標準関数を調べて、自分で書いてみるってのはどう?
とりあえずはシステム依存の知識がいらないstr系関数から。
0221デフォルトの名無しさんNGNG
平成元年はほぼ1年あったからそれでいいとして、
昭和元年は確か半月もなかったと思うのだが
1926年=昭和元年でいいのか?
うちの甥っ子が昭和64年1月2日生まれだから気になるのかもしれんが。
0222デフォルトの名無しさんNGNG
昭和64年なんて数日
その時に作られた貴重な硬貨があるYO
0223デフォルトの名無しさんNGNG
漏れ、昭和65年の硬貨もってたよ
0224sageNGNG
int main(void){
 const int TARGETVALUE=100;
 const int HALFTARGETVALUE=TARGETVALUE/2+1;
 const int UNPRIMENUM=3;
 int i;
 int j;
 bool blnPrimeFlg[TARGETVALUE];
 for(i=0;i<TARGETVALUE;i++){
  blnPrimeFlg[i]=false;
 }
 for(i=UNPRIMENUM;i<TARGETVALUE;i+=2){
  blnPrimeFlg[i]=true;
 }
 blnPrimeFlg[2]=true;
 for(i=UNPRIMENUM;i<HALFTARGETVALUE;i+=2){
  j=i*(i-1);
  while(blnPrimeFlg[i]){
   j+=i;
   if(j<TARGETVALUE){
    blnPrimeFlg[j]=false;
   }
   else{
    break;
   }
  }
 }
 for(i=0;i<TARGETVALUE;i++){
  if(blnPrimeFlg[i]){
   cout<<i<<"\n";
  }
 }
}
0225sageNGNG
すみません224です。送信ミスしました(つдT)
あらためて。
1>>様、その他の先生の皆様。Cをはじめて半年の未熟者です。ご意見をいただ
きたいのですが、おながいします。
目的の値までの素数を表示させるプログラムについて課題がでておりまして、
以下のようなコード書いたのですが、問題なく素数は表示される状態です。
ただし、可能であればもう少しスマートに進めたいのですが、なにか改善可能
な場所、方法はありませんでしょうか。よろしくおながいします。

0226デフォルトの名無しさんNGNG
for(i=UNPRIMENUM;i*i<TARGETVALUE;i+=2){
if (blnPrimeFlg[i])
for(j=i*i; j < TARGETVALUE; j+=i)
blnPrimeFlg[j]=false;
}
0227デフォルトの名無しさんNGNG
int prime;//任意の数
int tmp;
(省略)
for(tmp=2; tmp<prime/2; tmp++)
{
   if(tmp == prime) printf("素数\n");
   if else((prime%tmp) == 0) printf("素数ではありません\n")
}

かなり略したけどこんなのじゃだめ?
列挙したいならこれ全体をforで囲むとか
0228デフォルトの名無しさんNGNG
エラトステネスのふるい
0229デフォルトの名無しさんNGNG
226様>>
感動しました!
実際、コードみると納得なんですが、そこまで思いつくのが難しいんですよね。。
どうもありがとうございました。すごくためになりました。また何か在りましたら、
よろしくお願いします。

227様>>
即レスありがとうございます。
今回はmodしようせずに(授業中にmodでおこなうような様誘導があったため。)
あえて進めてみようと思っておりました。ただ、mod使用の際にはかなり、行数を短く
提出できるタイプみたいなので、ありがたく頂戴させていただきます。
どうもありがとうございました。
0230デフォルトの名無しさんNGNG
225です。
228様>>
"エラトステネスのふるい”こういったアルゴリズムが存在してたんですね。
勉強不足でした。。。。
ありがとうございました。
0231デフォルトの名無しさんNGNG
int main(void){
const int TARGETVALUE=100;
const int UNPRIMENUM=3;
int i;
int j;
bool blnPrimeFlg[TARGETVALUE];
for(i=UNPRIMENUM;i<TARGETVALUE;i+=2){
blnPrimeFlg[i]=true;
}
cout<<2<<"\n";
for(i=UNPRIMENUM;i*i<TARGETVALUE;i+=2){
if (blnPrimeFlg[i]){
for(j=i*i; j < TARGETVALUE; j+=2*i)
blnPrimeFlg[j]=false;
cout<<i<<"\n";
}
}
for(;i<TARGETVALUE;i+=2){
if (blnPrimeFlg[i])
cout<<i<<"\n";
}
}
0232デフォルトの名無しさんNGNG
>>230
>>106
0233デフォルトの名無しさんNGNG
宣伝かよ・・・
0234230NGNG
たびたび申し訳ございません。230です。
231様>>
ありがとうございます。最終的にそのような形で固まりました。
232様>>
さっそくチェキしてみます。ただ、先に答えがあると、考える前にみそうな感じがして怖いです。丸写しになりそうで・・・精神力弱いんです(つдT)

前回、226様よりお教えいただいた方法で実行すると、100に含まれる素数を判断するために、条件分岐がfor(i=UNPRIMENUM;i*i<TARGETVALUE;i+=2)のなかで8回、for(j=i*i; j < TARGETVALUE; j+=i)のなかで54回となるのですが、さらにこれを少なくする事は可能でしょうか。
私てきにはこれで限界と思えるため、この状態で提出を考えておりますが、可能であればコードでなくても、結構です。可能とだけお教え願えないでしょうか。
大変お手数おかけしますが、どうぞよろしくお願いします。

0235デフォルトの名無しさんNGNG
素数 "列挙" アルゴリズムを極めるスレ
http://pc2.2ch.net/test/read.cgi/tech/1018657457/
0236デフォルトの名無しさんNGNG
#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>

void filter(int limit, char *filename);
int isprime(int *discoverd_prime, int chknum, int dis_num);

/* mainがやるのは、引数チェックのみ。 */
void main(int argc, char *argv[]){
int limit;//この数までの素数を調べる。
char filename[10];//ファイル名

/* 上限数とファイル名の設定。 */
if(argc == 1){//引数無し
limit = 1000;
strcpy(filename,"nanashi.txt");
}else if(argc > 2 && (isdigit(*argv[1])) ){//第1引数が数字で、ファイル名の指定あり
limit = atoi(argv[1]);
strcpy(filename,argv[2]);
}else if(argc >= 2 && (!isdigit(*argv[1])) ){//第1引数が数字でない
limit = 1000;
strcpy(filename,argv[1]);
}else if(argc >= 2 && (isdigit(*argv[1])) ){//第1引数が数字で、ファイル名の指定無し
limit = atoi(argv[1]);
strcpy(filename,"nanashi.txt");
}
if (limit >= 131071){limit = 131071;}//一応の上限
filter(limit,filename);
}
0237デフォルトの名無しさんNGNG
void filter(int limit, char *filename){
FILE *fp;
int num;
int p,i;//ループ処理などに使う汎用変数。
int m;//現在までに発見した素数の個数
int a = limit/2+1; // 素数の最大個数。
int prime[65536]; //素数を格納する配列。とりあえずこんだけ確保しとく。
if((fp = fopen(filename,"w")) == NULL){ //ファイルを作る。
fprintf(stderr,"ファイルが作れませんでした。");
}
printf("%d までの素数を計算し、ファイル名 %s で保存します。\n",limit,filename);

/* 作業開始 */

for(p=0; p < a ; p++){//prime配列の初期化
prime[p]=1;
}
p = 0;
prime[p] = 2;p++; m=1;//偶数はチェックしないので、あらかじめ2を検出したことにしておく。
0238デフォルトの名無しさんNGNG
/* 篩の本体 */

for(num = 3; num <= limit ;num += 2){//偶数はチェックするだけ時間の無駄だ。
if((isprime(prime,num,m))== 0 ){
prime[p] = num; m++; printf("%d ",prime[p]);p++;
}
}
for(p = 0; p< m ;p++){
fprintf(fp," %d",prime[p]);
}
printf("\n以上の素数を保存しました。\n作業が終了しました。\n");
fclose(fp);
}

/* 与えられた数が素数か調べる。 */
int isprime(int *discoverd_prime, int chknum, int dis_num){
int p;
for(p=0; p<dis_num; p++){

if(chknum % *discoverd_prime != 0){
discoverd_prime++;
continue;
}else{
return 1;
}
}
return 0;
}
0239239NGNG
int data[4]={1,-2,3,-4};という配列があるとき、いかの値はいくつになるか答えなさい
i=2のとき、data[i++] data[++i]
変数aからjがint型としたとき、下記の式において演算の順序はどうなるか答えなさい。また、a=0b=1c=2…j=9を初期値とするときこの式の実行結果はどうなるか答えなさい。
a = b = c == d && e | |f < g % h / i + j ;
よろしくお願いします。
0240デフォルトの名無しさんNGNG
>>239
なぜ実行して確かめない?
0241デフォルトの名無しさんNGNG
>>239
死んだ方が良いな。
0242デフォルトの名無しさんNGNG
>>239
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=C%E8%A8%80%E8%AA%9E+%E6%BC%94%E7%AE%97%E5%AD%90+%E5%84%AA%E5%85%88%E9%A0%86%E4%BD%8D
0243デフォルトの名無しさんNGNG
演算子の優先順位なんてこと細かく覚えていられるか。
心配なら括弧を付ける。
0244デフォルトの名無しさんNGNG
>>243
それに関しては激しく同意だが、悲しいけどこれって宿題なのよね。
0245デフォルトの名無しさんNGNG
a = b = (((c == d) && e) | |(f < ((g % h / i) + j))) ;
こうじゃないかな。
0246デフォルトの名無しさんNGNG
文法違反なんだけどね
0247デフォルトの名無しさんNGNG
>>246
えっ、どこが ?
0248デフォルトの名無しさんNGNG
思いっきり初心者の質問だけど

a = b = c
って何?
0249デフォルトの名無しさんNGNG
b=c;
a=b;
0250デフォルトの名無しさんNGNG
>>247
| |
0251デフォルトの名無しさんNGNG
>>248
a, b, c が全て等しい時に真になる新しい比較演算子。
0252デフォルトの名無しさんNGNG
>>250
ああ、なるほど。了解した。
しかし、よく気付いたな、コンパイルしてみたのか ?
0253デフォルトの名無しさんNGNG
>>252
等幅のフォントならひと目で分かるんだが
0254デフォルトの名無しさんNGNG
>249
thx
0255デフォルトの名無しさんNGNG
>>239
data[i++] = 3
data[++i] = -4 (ただし上式を行った後なら変な値を返す)

まず (左結合)
 g % h / i (6 % 7 / 8 = 0) ・・・(1)
次に
 (1) + i (0 + 9 = 9) ・・・(2)
でもって
 f < (2) (5 < 9 = 1) ・・・(3)
さらに
 d && e (3 && 4 = 1) ・・・(4)
これから
 (4) || (3) (1 || 1) ・・・(5) *この時orの左側が真なので右は評価されない
最後に (右結合)
a = b = (5) (b = 1, a = b)

ってか演算子の優先順位ぐらいは知ってるだろ


 
0256デフォルトの名無しさんNGNG
嘘付いた

c == d が抜けてら

さらに
 c == d (2 == 3 = 0) ・・・(4)
となると
 (4) && e (0 && 4 = 0) ・・・(5) *この時andの左側が偽なので右は評価されない
これから
 (5) || (3) (0 || 1 = 1) ・・・(6)
最後に (右結合)
a = b = (5) (b = 1, a = b)
0257デフォルトの名無しさんNGNG
>>239
http://www-ccs.ucsd.edu/c/express.html#Preincrement
http://www-ccs.ucsd.edu/c/express.html#Postincrement
http://www-ccs.ucsd.edu/c/express.html#precedence
http://www-ccs.ucsd.edu/c/express.html#Logical%20AND
http://www-ccs.ucsd.edu/c/express.html#Logical%20OR
0258デフォルトの名無しさんNGNG
後置インクリメントはPostincrementというのか
0259デフォルトの名無しさんNGNG
9.2 12.3
8.3 9.0
8.8 10.3
・・・

上のような1行にスペース区切りで、複数行にデータが入っている
ファイルから、データを分割してそれぞれの
総和をもとめたいんですが
どうすればいいですか?

PerlでいうところのSplit関数ってないんですが?
0260デフォルトの名無しさんNGNG
あるよ。strtok
正規表現みたいな頭のいいことは出来ないが。
0261デフォルトの名無しさんNGNG
fstream s("hoge.txt");
vector<double> values;

while(s){
double sum=0;
for(int i=0; i<2; i++){
ddouble val=0;
s>>val; sum+=val;
}
values.push_back(sum);
}

でけた!! 駄目だこりゃ!
0262デフォルトの名無しさんNGNG
include<stdio.h>
main()
{
FILE* file;
int ret;
double f=0,s=0;
if( (file=fopen("data.txt","r")) == NULL )
return 0;
do{
s+=f;
ret = fscanf(file,"%ld",&f);
}while(ret != EOF);
printf("%ld",s);
fclose(f);
return 0;
}
改行とか入れてなけりゃこれでできるとおもうが
0263デフォルトの名無しさんNGNG
各行ごとに総和だすのか?
0264デフォルトの名無しさんNGNG
STRTOK
バグ
これらの関数は絶対に使用しないこと。もし使用する場合は、以下のことに注意すること。

これらの関数はその最初の引数を変更する。
これらの関数は const な文字列では使えない。

終端文字はすべて \0 になってしまう。

strtok() 関数はパーズに静的バッファを用いるので、スレッドセーフでない。もしこれが問題になる場合は strtok_r() を用いること。
0265デフォルトの名無しさんNGNG
例えば1クラス20人の生徒の身長と体重の
それぞれの総和を求めたいのです。
0266デフォルトの名無しさんNGNG
#include <iostream>
#include <fstream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
  vector<double> m, kg;
  ifstream s("hoge.txt");
  while(s)
  {
    double val;
    s >> val;
    m.push_back(val);
    s >> val;
    kg.push_back(val);
  }
  m.pop_back();
  kg.pop_back();
  cout << "身長の和は" << accumulate(m.begin(), m.end(), 0.0) << endl;
  cout << "体重の和は" << accumulate(kg.begin(), kg.end(), 0.0) << endl;
  return 0;
}
0267デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
 FILE *fp;
 double height, weight, h_sum = 0, w_sum = 0;
 char buf[256];
 
 if ((fp = fopen("filename.txt", "r")) == NULL) {
  printf("ERROR\n"); exit(1);
 }

 while (fgets(buf) != NULL) {
  sscanf("%lf%lf", &height, &weight);
  h_sum += height;
  w_sum += weight;
 }
}
0268267訂正NGNG
#include <stdio.h>
main()
{
 FILE *fp;
 double height, weight, h_sum = 0, w_sum = 0;
 char buf[256];
 
 if ((fp = fopen("filename.txt", "r")) == NULL) {
  printf("ERROR\n"); exit(1);
 }

 while (fgets(buf, 255, fp) != NULL) {
  sscanf(buf, "%lf%lf", &height, &weight);
  h_sum += height;
  w_sum += weight;
 }
}
0269デフォルトの名無しさんNGNG
あ
0270デフォルトの名無しさんNGNG
>>259
C の勉強/宿題なの ?
実務で使う & Perl がわかるなら、Perl でやったほうがいいんじゃないのか ?
0271デフォルトの名無しさんNGNG
>>259
C++なら準標準ライブラリboostのregex.hppの中にsplitと同じ事が出来る
メソッドがあります。
0272デフォルトの名無しさんNGNG
regexはDLLをビルドしなきゃいけないからちょっとめんどくさいですよね
0273デフォルトの名無しさんNGNG
リスト構造なんですけど,最初に入れたリストを表示したいのですが
一番最後に入れたリストが表示されてしまいます(FIFOというやつでしょうか)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct list {
char *name;
char *tele;
struct list *nextlist;
};

>>274
0274デフォルトの名無しさんNGNG
>>273

main()
{
struct list *a, *b;
char *n,*t;
int fig = 0;
b = NULL;

while(1) {
printf("名前キボンヌ。終了:e\n");
scanf("%s", n);
if(n[0] == 'e') break;
a = (struct list *)malloc(sizeof(struct list));
a->name = (char *)malloc(strlen(n)+1);
strcpy(a->name,n);
printf("電話キボンヌ。終了:e\n");
scanf("%s", t);
if(t[0] == 'e') {
fig = 1;
break;
}
0275デフォルトの名無しさんNGNG
これだけでどうしろと(怒)
0276デフォルトの名無しさんNGNG
>>274

a->tele = (char *)malloc(strlen(t)+1);
strcpy(a->tele,t);
a->nextlist = b;
b = a;
}
printf("名前 電話番号\n");
a = b;
while (1) {
if (a == NULL)
break;
printf("%s %s\n", a->name,a->tele);
a = a->nextlist;
}
}
0277デフォルトの名無しさんNGNG
>>275
スマソ。ソースちょっと長くなった。

構造体は名前のポインタと電話番号のポインタの2つです。
scanfつかってデータを入力する。eで終了します。
0278デフォルトの名無しさんNGNG
>>273
リストの最初を保持する変数がない。

a はmallocで確保した要素を保持している。
b はリストの最後を保持している。

表示はaを表示しているから、一番最後に確保した要素に
なるのは当たり前。
0279278NGNG
解釈間違えた。
> a->nextlist = b;
> b = a;
これはLIFOのやり方だ。
0280デフォルトの名無しさんNGNG
双方向じゃないのがつらいが・・・やってみるか
0281デフォルトの名無しさんNGNG
>>273
278のいうことももっともだが
それ以前にどうしてsにmallocしないんだ。
確実にメモリー参照エラーっぽ。
0282デフォルトの名無しさんNGNG
失礼。
char *n;
scanf("%s",n);
これまずいでしょ。
0283デフォルトの名無しさんNGNG
ちゃんとコンパイルして実行してみた?
最後に入れた要素を表示する前に落ちると思うんだけど。
0284デフォルトの名無しさんNGNG
>>283
それ以前に、最初の scanf() で落ちたよ。
(Win2KPro, VC++6, Debug Build)

まあ、>>282 が書いてる通り当たり前なわけだが。
0285デフォルトの名無しさんNGNG
画像ってcで表示できますか?
0286デフォルトの名無しさんNGNG
>>285
できる。
0287デフォルトの名無しさんNGNG
ちょっと自分でなんとなくいい宿題を思いついたので。
初心者向けでスマソ。
1〜任意の数字までの階乗を表示するプログラム。

・・・15!ぐらいになるとCでは扱えない数字になっちゃうかも
0288280NGNG
>>273
長いので2回に分ける。
どういうわけか構造体を次のようにあらかじめ
サイズきめとかないとエラー出るのでそこはかんべん。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#include<conio.h>

typedef struct{
char name[256];
char tel[256];
void* nextpoint;
}LIST;

void movenext(LIST** pplist)
{
LIST* sub;
sub = (LIST*)((*pplist)->nextpoint);
free(*pplist);
*pplist = sub;
}

main()
{
char n;
char name[256],tel[256];
LIST *lpbottom=0,*lptop=0,*sub=0;
lpbottom = lptop = (LIST*)malloc(sizeof(LIST));

0289280NGNG
つつきでちゅ。やっぱり長いんで分けます。
while(1)
{
printf("------------------\n");
printf("どれよ?\n");
printf("1:入力\n");
printf("2:出力\n");
printf("other:終わり\n");
printf("------------------\n");
n = getch();
if(n == '1')
{
printf("名前キボン\n");
scanf("%s",lptop->name);
printf("電話番号キボン\n");
scanf("%s",lptop->tel);
lptop->nextpoint=malloc(sizeof(LIST));
lptop=(LIST*)lptop->nextpoint;
}
0290280NGNG
これで最後。切れて長くて流してスマソ
else if(n=='2')
{
if(lpbottom==lptop)
break;
printf("名前 %s\n",lpbottom->name);
printf("電話番号 %s\n",lpbottom->tel);
movenext(&lpbottom);
}
else
break;
}
while(lpbottom != lptop)
movenext(&lpbottom);
free(lpbottom);
return 0;
}
0291デフォルトの名無しさんNGNG
int main()
{
int n;
int64 ret = 1;
cin >> n;
for(int i=2; i<=n; i++)
  ret *= n;
cout << ret << endl;
return 0;
}
0292デフォルトの名無しさんNGNG
int64 ってなに?
sizeof(long) = 4のときの
long long のこと?
0293デフォルトの名無しさんNGNG
int64は64bitの整数型だけど、
sizeof(long) = 4のときの
long longのサイズって一意に決まってるの?
0294デフォルトの名無しさんNGNG
>>288
> typedef struct{
> char name[256];
> char tel[256];
> void* nextpoint;
> }LIST;

name, tel を固定長で持つ是非は別にして、void* nextpoint ってなんだ ?
こんなこと書く奴を俺は信用しない。
0295292NGNG
はぅあ
.NETだと long longでエラー出して
確認できねぇ・・・
誰か回答キボン
0296288NGNG
LIST* nextpoint
とおいていいのかわからなかったんで
void* で妥協。
0297273NGNG
>>280
ありがとうございます。
双方向リストもこれの応用と考えればいいんでしょうね。
今度は自力で頑張ってみまつ。
0298288NGNG
void* がつかえない
Cコンパイラってないよね?
念のため
>>294
0299デフォルトの名無しさんNGNG
>>272
スタティックリンクも出来ますよ。LIBをビルドする事になるけど。
0300デフォルトの名無しさんNGNG
winsockまたはUNIX socketを使ってCまたはC++で
http://chart.yahoo.co.jp/t?c=2003&a=4&b=1&f=2003&d=4&e=30&g=d&s=6701.t&y=0&z=6701.t
を取得し終値の平均値を出しなさい。
難しすぎるか…
0301デフォルトの名無しさんNGNG
>>291
わっちの使っているコンパイラにint64なかったんで
結果が正確ではないが次のようにしますた。
main()
{
int n;
double i,t=1;
scanf("%d",&n);
for(i=2;(int)i<n;i++)
t*=i;
printf("%ld",t);
return 0;
}
0302デフォルトの名無しさんNGNG
>>300
かききれないような・・・
0303301NGNG
失礼−
次のとこ訂正
×printf("%ld",t);
○printf("%lf",t);
0304デフォルトの名無しさんNGNG
"winsockまたはUNIX socket"
これじゃ書ききれないな。wininetとboost使えれば書ききれるけど。
0305デフォルトの名無しさんNGNG
#include<stdio.h>

int f();

main()
{printf("%d\n",f(3.14));}

int f(int a)
{return a*3.14*2;}
0306305NGNG
かき忘れた
この結果がなぜ6になるのか教えてください
0307デフォルトの名無しさんNGNG
>>305
18か19
0308デフォルトの名無しさんNGNG
すれちがいになったし違うし
0309デフォルトの名無しさんNGNG
18になったけど
0310デフォルトの名無しさんNGNG
>>306
×int f();
○int f(int)
つーかエラーでコンパイルできないだろ多分
0311デフォルトの名無しさんNGNG
>>305
int f()
int f(int a)
は引数が違うので別物と見られます。
使うときに引数によってどっちが使われるか決まります。
で、f(3.14)なので引数がある
int f(int a)が使われ。
3.14がintにキャストされ a=3状態に。
で、a*3.14*2で18.28に。
値返すときにやっぱりintにキャストされるので
18になるってこった。
切り上げの場合は19か。コンパイラによるだろうが。
0312デフォルトの名無しさんNGNG
>>310
コンパイラによっちゃ
仮想関数ってことでOK。
だめなほうが少ないかしら?
0313デフォルトの名無しさんNGNG
C++ならね。

Cなら、doubleの引き数を渡し、intの引き数を受け取ると言う事態が発生する。
0314デフォルトの名無しさんNGNG
>>313
Cでも自動的にキャストしてくれないのでつか?
コンパイラによるのかな。
0315デフォルトの名無しさんNGNG
>>311
> int f()
> int f(int a)
> は引数が違うので別物と見られます。

これはあってるけど...

> int f(int a)が使われ。

アホか。そういう状況 (=C++) なら、int f(int a) はまだ宣言されてないから、単にそんな関数は無いと怒られるだけのことだよ。

>>312
仮想関数 ? C++ の初歩からやり直すべし。

>>313
これが、正解。

>>314
キャストしようが無いだろ。
f(3.14) をコンパイルしている時点では、f(int) なのか f(double) なのかわからんのだから。
0316デフォルトの名無しさんNGNG
問
次の式が成り立つとき、a+bがもっとも小さいときの
aとbを求めなさい。
a*b=2450448
こんな問題どうでしょ。宿題ってわけじゃないんですが。
0317デフォルトの名無しさんNGNG
>>316
それ、C/C++の問題なのか?
0318315NGNG
>>315
はて、VCなら通ったんだが・・・
VCが特殊なのかねぇ。
ところでポケコンのCコンパイラでやってみたところ
これだめでした
int f();
int f(int a)
{
return a*3.14*2;
}
fが再定義されてるとのことでだめでした。
たんにへっぽこコンパイラなのかもしれないけど。
0319デフォルトの名無しさんNGNG
>>316
a+bが尤も小さくなるようにaとbを選べばいいんだな?
a=-1,b=-2450448でどうだ。
0320デフォルトの名無しさんNGNG
>>315
VCはCコンパイラでもあるからな。
0321316NGNG
>>319
ウマヒ!
でも自然数限定ってことで。
0322デフォルトの名無しさんNGNG
>>319
いやいや、例えばa=-1e-100,b=-2450448e100の方が小さくなるぞ。
ということで、解が得られないじゃぁないか。>>316
0323デフォルトの名無しさんNGNG
|a+b|って書けば良かったのにね
0324318NGNG
スマン名前間違えた。
311です。
0325デフォルトの名無しさんNGNG
>>323
|a| + |b|だろ
0326デフォルトの名無しさんNGNG
>>325
(゚Д゚)ハァ?
0327316NGNG
いいたいことは325だったんだが
323も間違えでもないような・・・
0328デフォルトの名無しさんNGNG
a+b=整数 だから
aの符号=bの符号
よって
|a|+|b| = |a+b|
ってことでよい?
0329328NGNG
しつれい。a+b=正の整数
0330デフォルトの名無しさんNGNG
>>327
> いいたいことは325だったんだが
> 323も間違えでもないような・・・

はぁ ?

>>321
> でも自然数限定ってことで。
>>325
|a| + |b|だろ

全然違うじゃねーか。
0331327NGNG
>>330
両方符号が同じなら正でも負でもよくなっちまいますな
スマソ
計算手法はあまりかわらんと思ったもんで
別にいいかなと。
0332316NGNG
最終的にはこうしました。
ともかく整数aとbが次の関係を持つとき、|a+b|がもっとも小さくなる時の
aとbの絶対値を求めよ。
a×b=2450448
ややこしくてすみません。言うまでもないがCかC++で書いてけれ。
ところでさっきつっこまれたんですがここは
文法に関する問題のみでつか?
0333デフォルトの名無しさんNGNG
妥当にプログラムくんでやってみたが
a=1547 b=1584で合計3131が最小らしい。
かなり適当に作ったからウソかも?w
0334デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
int a, b, x;
for (x = 2; x < 10000000; x++)
for (a = 1, b = x - a; a <= b; a++, b--)
if (a * b == 2450448) {
printf("%d %d\n", a, b);
return 0;
}
return 0;
}
0335デフォルトの名無しさんNGNG
>>334
コンパイルしたら>>333と同じ結果が出た
0336デフォルトの名無しさんNGNG
俺は頭悪いからこうやったけど

#include <stdio.h>
#define NUM 2450448
int main(void)
{
int a,b,ma,mb,min=NUM;
for(a=1;a<NUM/2;a++) {
if(NUM%a==0) {
b=NUM/a;
if(min>a+b) {
ma=a;
mb=b;
min=a+b;
}
}
}
printf("%d %d",ma,mb);
return 0;
}
0337デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>
int main()
{
int const num = 2450448;
int a = floor( sqrt( (double)num ) );
for( ; a > 0 ; --a )
{
int const b = num / a;
if( a * b == num )
{
printf( "a = %d , b = %d\n" , a , b );
return 0;
}
}
return 1;
}
0338デフォルトの名無しさんNGNG
なめてかかってたら
商の整数チェックわすれて違う答えが出た
…フカク
0339デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>
#define NUM 2450448
int main(void){
int a = sqrt(NUM), b;
while (a * (b = NUM / a) != NUM) a--;
printf("%d %d %d", a, b, a + b);
}
0340デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>
#define N 2450448
int main(void){int a=sqrt(N);while(a>1&&(N%a)!=0)--a;printf("%d %d",a,N/a);return 0;}
0341デフォルトの名無しさんNGNG
while(N%a)--a;
0342デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>
#define N 2450448
int main(void){int a=sqrt(N);while(N%a)--a;printf("%d %d",a,N/a);return 0;}
0343デフォルトの名無しさんNGNG
このスレの>316はいいことしたな。
いい流れ。
こんな感じで誰か問題だしてくれぃ
0344343NGNG
・・・と思ったけど、やっぱり他力本願はいけないので自分で探しました。
ピタゴラス数をどんどん出していくやつとか。
あとは、完全数を列挙していくものとか。

ピタゴラス数・・・各辺の長さが整数で表される直角三角形。3:4:5とか。
完全数・・・約数のうち、その数自身以外の物の和がその数になるもの。
例えば、6。これの約数は1,2,3,6。ここから自身の数、6以外の和を出す。
1+2+3 つまり6(自身の数)

こんなん面白そうなんで出してみました。
俺もちょっと考えてみまふ
0345343NGNG
階乗列挙プログラムとか。
0346デフォルトの名無しさんNGNG
なんか問題が欲しいって言うのならこれはどう。

n 路盤に次の条件を満たすように石をおくとき、
おくことのできる碁石の最大数を求めよ。
条件: どの4つの碁石も路に平行な辺を持つ長方形にならない。

なお、路とは碁盤に引かれた線のことで、
縦横に n 本の路がある碁盤を n 路盤と言う。
石は路と路の交点におく。条件を無視すれば n*n 個の石がおける。
0347デフォルトの名無しさんNGNG
>>346
長方形以外ならいいのね
0348デフォルトの名無しさんNGNG
>>347
yes
なお長方形とは4つの角が等しい四辺形なので正方形も長方形とみなす
0349デフォルトの名無しさんNGNG
>>344
// 単純にどんどん出すけど全てを列挙しているわけではない
#define LIMIT (10000)
int main(void)
{
 for (int ic = 1; ic < LIMIT; ic++) {
  int num = 2 * ic * (ic + 1);
  printf("%d, %d, %d\n", 2 * ic + 1, num, num + 1);
 }
 return 0;
}
0350デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
int i;
i=0;
do{
printf("%d\n",i);
i++;
}while(この中身がわかりません);
return 0;
}
1から400まで+1づつ表示したいです
よろしくおながいします
0351デフォルトの名無しさんNGNG
1回目のループで0が出力されるがいいのか?
0352デフォルトの名無しさんNGNG
>>351
はい、よろしくおながいします
0353デフォルトの名無しさんNGNG
はあ・・・
0354デフォルトの名無しさんNGNG
次のプログラムの実行結果を調べよ

for(i=1;i<=10;i++){
for(j=1;j<=10;j++){
System.out.print("\n");
}
プログラムの出力を次のように修正せよ

● 出力の横幅を40に変更
● 出力の縦幅を20に変更

↑
この問題の解答おながいします
0355354NGNG
上の文ですが
for(i=1;i<=10;i++){
for(j=1;j<=10;j++){
System.out.print("*");
}
System.out.print("\n");
}
でした
0356デフォルトの名無しさんNGNG
ネタが増えてきたな
0357デフォルトの名無しさんNGNG
それはCの宿題なのかと小一時間(ry
0358デフォルトの名無しさんNGNG
>>354
宿題以前の問題だよ。それくらいは自力で理解できないと、
ネタとマジの区別もつかなくなるぞ。

>>350
普通はforループを使うケースだな。
なんでdo-whileループなんだ?

>>345
多桁演算クラスを用意してくれたらすぐにでも書くぞ。w
#確か700!くらいで2000桁近く入ったような記憶がある。
0359デフォルトの名無しさんNGNG
>>350
#include <stdio.h>
int main(void)
{
int i;
i=0;
do{
printf("%d\n",i);
i++;
}while(i < 400);
return 0;
}
0360デフォルトの名無しさんNGNG
for(i=1;i<=20;i++){
for(j=1;j<=40;j++){
System.out.print("*");
}
System.out.print("\n");
}
0361デフォルトの名無しさんNGNG
>>359
それだと0〜399だべ
0362デフォルトの名無しさんNGNG
標準入力から文字列を最低でも5個以上
読み込んだものを戻り値とする関数を
reallocを使って作成せよ。

お願いします
0363デフォルトの名無しさんNGNG
オレニマカセロ!
0364デフォルトの名無しさんNGNG
>>362
 関数の終了条件が不十分。
0365デフォルトの名無しさんNGNG
vector<string> readstringfromcin()
{
void *dummy = malloc(50);
vector<string> strs;

for(int i=0;i<5;i++)
{
std::string t;
cin >> t;
strs.push_back(t);
dummy = realloc(dummy, t.size());
}
free(dummy);
return strs;
}

0366デフォルトの名無しさんNGNG
ダミーかよ
0367デフォルトの名無しさんNGNG
>363
オマエニマカセタ!
0368デフォルトの名無しさんNGNG
>>366
realloc使えというから使ってやったんだ。感謝しろ。
0369デフォルトの名無しさんNGNG
#include <stdio.h>
void main(void)
{
int a,b,c,d,e,f,g;
printf("===============================================");
printf("いまから四則演算をする数値2つ入れなさい");
printf("===============================================");
printf("1つ目");
scanf("%d",&a);
printf("二つ目");
  scanf("%d",&b);
c=a + b;
d=a - b;
e=a * b;
f=a / b;
g=a % b;
printf("演算結果");
  printf("%d + %d=%d\n",a,b,c);
printf("%d - %d=%d\n",a,b,d);
printf("%d * %d=%d\n",a,b,e);
printf("%d / %d=%d\n",a,b,f);
printf("%d % %d=%d\n",a,b,g);
printf("\n");
printf("\n");
printf(" 以上\n");
}
なぜエラー11も?
0370デフォルトの名無しさんNGNG
>>369
エラーの内容読めよ
0371デフォルトの名無しさんNGNG
標準入力から文字列を最低でも5個以上
てのはどういう意味?文字列の区切りは改行?

返り値の型は char **でいいの?
0372デフォルトの名無しさんNGNG
>369
まるちすんなっちゅーの
0373デフォルトの名無しさんNGNG
改行くらいいれようぜ
0374362NGNG
>>371
書いてなかったけど改行だと思う
問題があいまいな気が
0375デフォルトの名無しさんNGNG
じゃあ5行なかったらどうするんだろう。
0376デフォルトの名無しさんNGNG
つーか質問する時はCかC++か書けよ。
書かないから>>365みたいな教師をおちょくるような答えが出てくるんだよ。
0377デフォルトの名無しさんNGNG
>>369
そんなに変数いらない
0378362NGNG
>>376
すみません、Cでお願いします
0379デフォルトの名無しさんNGNG
>>365
realloc()の使い方が×です
0380うんこNGNG
>369
「error C2018: 文字 '0x81' は認識できません。」
文字列リテラルとか文字定数とか以外で全角文字使うと、
こういうのが出てくる。全角文字を消せ。使うな。

これが出ると、続けて似たようなのがもう一つ出る。
「error C2018: 文字 '0x40' は認識できません。」
と。ちなみに、そのソースだと全角スペースが入ってる。
インデントはタブで付けるんだ
0381デフォルトの名無しさんNGNG
>>380
やさしいヤツだなオマエ。
ヘルプも活用できないクソ野郎はほっとけばいーのに
0382369NGNG
やさしい方々ありがとう。クラスで俺よりできない奴たくさん。
あっ、目くそ鼻くそですか。すいません
0383デフォルトの名無しさんNGNG
専門学校?
0384369NGNG
2chで質問する俺は出来る男だぜ
0385369NGNG
384の言うとおりです(^^
0386デフォルトの名無しさん NGNG
1から100までの乱数を1000個ふり、その中にどの数字が
何個あるのか数えなさいとの問題がでました。
入力ファイルは1000個の数字であり、出力ファイルは
2列で数字とその個数をかいたものとします。
よろしくおねがいします。
0387369NGNG
工業高校
0388デフォルトの名無しさんNGNG
入力の1000個の数字は何に使うんだ?
乱数の種か?
0389デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
int result[100],i;
FILE *fp;
srand((unsigned int)time(NULL));
for(i=0;i<100;i++) result[i]=0;
for(i=0;i<1000;i++) result[rand()%100]++;
fp=fopen("out.txt","w+");
for(i=0;i<100;i++) if(result[i]!=0) fprintf(fp,"%d %d\n",i+1,result[i]);
fclose(fp);
return 0;
}
適当に書いたからコンパイル通るかわからん(藁
0390デフォルトの名無しさんNGNG
>>386
int main()
{
std::ifstream if(in.txt);
 std::map<int, int> intmap;
 for(int i=0;i<1000;i++)
 {
  int val;
  if >> val;
  intmap[i]++;
  
 }
 
 std::ofstream of(out.txt);
 for(std::map<int, int>::iterator it=intmap.begin(); it!=intmap.end(); ++it)
 {
of << (*it).first << " " << (*it).second << std::endl;
 }
 return 0;
}
0391デフォルトの名無しさんNGNG
高校生にもなって英語も読めなきゃ口の聞き方も知らないと。

反論する前に自分のミスのフォローをするべきだろ?
0392390NGNG
×intmap[i]++;
○intmap[val]++;
0393デフォルトの名無しさんNGNG
>>386
宿題丸投げですか…まあ、そーゆースレだが…
それくらいはやったほうが…
0394デフォルトの名無しさんNGNG
>>390
×
std::ifstream if(in.txt);
std::ofstream of(out.txt);
○
std::ifstream if("in.txt");
std::ofstream of("out.txt");
0395デフォルトの名無しさんNGNG
課題:
任意の省略型学籍番号(例:M02121)を文字型で入力し、
イニシャルから学科を判定し、学科名、入学年度(西暦下2桁分)及び学籍番号を次のように印刷せよ

学科名:Management
入学年度:’02年度
学籍番号:02175121

この問題で学科はChemistry,Electricity,Architecture,Design,Managementの五つあります。
学籍番号は省略型で読み込んだ02と121の間に17は各学科共通で
17の後に学科別にChemistryは1、Electricityは2となりManagementは5となり
この数字が入ります。
条件として省略学籍番号は文字型で読み込み、最後に正式学籍番号を単一の文字列として完成させる。

一応ここまではできたのですが、学籍番号を出すところがイマイチわかりません
ご教授お願い致します。Cです。
#include <stdio.h>
#define N 5
int main()
{
char a[80];
static char *name[]={"Chemistry","Electricity","Architecture","Design","Manegement"};
int i;
printf("省略学籍番号:");
scanf("%s",a);
for(i=0;i<N;i++){
if(name[i][0]==a[0])
printf("学科名:%s\n",name[i]);

}
0396395NGNG
上の課題はポインタ配列の課題です。
ポインタの使い方がまだ良く分からないので
ご教授お願い致します
0397デフォルトの名無しさんNGNG
省略学籍番号の意味がわからん。
02175121の省略形は
175なの?
0398397NGNG
ああ分かった。
0399デフォルトの名無しさんNGNG
>>396
×if(name[i][0]==a[0])
○if(!strcmp(name[i], a))
以上。
0400デフォルトの名無しさんNGNG
printf("入学年度:’%c%c年度",a[1],a[2]);
printf("学籍番号:%c%c17%d%c%c%c",a[1],a[2],i,a[3],a[4],a[5]);
じゃだめ?
0401395NGNG
省略学籍番号は各学科のイニシャルの頭文字と175を抜いた数字です。
学籍番号の内容的に
最初の02は入学年、17は各学科共通、次の数字が学科判別の数字で
Chemistryなら1、Managementなら5となります。ラストの3桁は生徒番号です。
M02121が省略学籍番号で、これを入力すると
学科名:Management
入学年度:’02年度
学籍番号:02175121
と結果がでます。
説明が下手で申し訳ないです
0402デフォルトの名無しさんNGNG
>>399
いや、どっちでも動くし。
0403395NGNG
<<400
入学年度に関してはそれでいいといってましたが
学籍番号でそれはダメだ。といってました。
他の方法ないでしょうか?
0404デフォルトの名無しさんNGNG
>>399
違うでしょ
0405デフォルトの名無しさんNGNG
> 条件として省略学籍番号は文字型で読み込み、最後に正式学籍番号を単一の文字列として完成させる。
がわからん。
1文字ずつ読む条件ならscanf("%s",a)はおかしいし。
0406デフォルトの名無しさんNGNG
>>395
>>400は無難だと思うけど何で駄目なんだ?
0407デフォルトの名無しさんNGNG
あ、判った。
char str[9];
sprintf(str, "%c%c17%d%c%c%c",a[1],a[2],i,a[3],a[4],a[5]);
printf("学籍番号:%s",str);
ってことか?
0408デフォルトの名無しさんNGNG
それでいいのかよ
0409395NGNG
>>405
ただ文字型で出せってことだと思うんですが、
>>406
それだと簡単にできるからとの理由でダメなんです。
0410デフォルトの名無しさんNGNG
>>400の方法なら

if (a[0] == name[i][0]) {
printf("学科名:%s\n", name[i]);
i++;
continue;
}

にしないとな
0411デフォルトの名無しさんNGNG
ようするに[a-z]*printf使用禁止ってことかな
0412デフォルトの名無しさんNGNG
#define N 5
for(i=0;i<N;i++){
よりも、
#define numberof(x) (sizeof(x)/sizeof(*(x)))
for (i = 0; i < numberof(names); i++) {
とするべきだが、それを言い出すとscanf()も使うべきではない。
0413デフォルトの名無しさんNGNG
>>410
飛ばしちゃうのかよ!!!
0414デフォルトの名無しさんNGNG
>>411
それでどうやって数値を文字に返るの?
itoaは機種依存だよ。
0415デフォルトの名無しさんNGNG
複雑な文字列を生成するのにsprintf()以上にまともな手段はない。
一文字ずつコピーしたりstrcpy()やstrcat()を駆使するコードを書いたら馬鹿だ。
0416デフォルトの名無しさんNGNG

char number[80], bak;

a++;
bak = a[2];
strcpy(number, a);
strcat(number, "17");
a += 2;
a[0] = bak;
strcat(number, a);
printf("学籍番号:%s",number);
0417410NGNG
あぁ
s/continue/break/
だな
0418416NGNG
馬鹿だぜ
0419395NGNG
>>416
これでいけますか?
0420デフォルトの名無しさんNGNG
じゃあこれでどうよ。
memmove(a+5,a+3,3);
memmove(a,a+1,2);
a[2]='1';a[3]='7';a[4]='0'+i+1;
printf("学籍番号:%s",a);
0421デフォルトの名無しさんNGNG
あ、a[8]=0も要るな
0422395NGNG
'memmove' : 定義されていない識別子です。
というエラーがでてきました。
どうすればいいんでしょうか?
0423デフォルトの名無しさんNGNG
すまんかった。忘れてくれ。
0424395NGNG
ポインタ使ってできそうなんですがどう思いますか?
0425デフォルトの名無しさんNGNG
>>424
>>416でポインタの移動してますが…
0426デフォルトの名無しさんNGNG
char r[9],t[9];
int num,r_num;
num = atoi(a+1);
r_num = num/1000*1000000+num%1000+170000+i*1000;
memset(r,0x30,8);
r[8]='\0';
itoa(r_num, t, 10);
if(r_num < 10000000) {
memcpy(r+1,t,7);
} else {
memcpy(r,t,8);
}
printf("学籍番号:%s",r);

memory.hとstdlib.hをinclude
0427デフォルトの名無しさんNGNG
>>426
itoaは機種依存ですよ。
0428395NGNG
このようにやってみました。エラーが下の2つ出てきました、どう修正すればいいでしょうか?

'++' には左辺値が必要です。
'+=' : 左のオペランドが、左辺値になっていません。

プログラム
#include <stdio.h>
#include <string.h>
#define N 5
int main()
{
char a[80],number[80], bak;
static char *name[]={"Chemistry","Electricity","Architecture","Design","Manegement"};
int i;
printf("省略学籍番号:");
scanf("%s",a);
for(i=0;i<N;i++){
if(name[i][0]==a[0])
printf("学 科 名:%s\n",name[i]);
}
printf("入学年度:'%c%c年度\n",a[1],a[2]);
a++;
bak = a[2];
strcpy(number, a);
strcat(number, "17");
a+=2;
a[0] = bak;
strcat(number, a);
printf("学籍番号:%s",number);

return 0;
}
0429デフォルトの名無しさんNGNG
>>428
a++の前の行でで
char *b = a;
とやってbで処理する。
0430デフォルトの名無しさんNGNG
a++とかa+=2の意味は?
0431デフォルトの名無しさんNGNG
>>428
配列とポインタは別物です
0432395NGNG
自分の作ってたプログラムに>>416にあるプログラムを組み込んだんです。
今ポインタとか配列とか理解しきれてないのでなかなかうまいことできないんです。
後>>426にあるプログラムを組み込んで実行したところ学科別の番号が識別されてませんでした。
難しいですね・・。
0433デフォルトの名無しさんNGNG
for(i=0;i<N&&name[i][0]!=a[0];i++) ;
printf("学 科 名:%s\n",name[i]);
printf("入学年度:'%c%c年度\n",a[1],a[2]);
printf("学籍番号:%c%c17%1d%s\n",a[1], a[2], i, a+3);
0434395NGNG
>>433
printf("学籍番号:%s",number);
のように文字列で出さないといけないと言われました。
%1dの時点でやり直して来いと言われると思います。
0435デフォルトの名無しさんNGNG
>>432
そのまま組み込みたいなら、char a[80];
ってのを
char *a;

a = (char*)malloc(80);
にして、最後にfree(a);をするようにすると通るかと。
0436デフォルトの名無しさんNGNG
sprintf(number, "%c%c17%1d%s",a[1], a[2], i, a+3);
0437デフォルトの名無しさんNGNG
>>435

char temp_buf[80];
char *a=temp_buf;

こっちの方がよいと思う。
0438デフォルトの名無しさんNGNG
sprintf(number, "%c%c17%1d%s",*(a+1), *(a+2), i, a+3);
0439デフォルトの名無しさんNGNG
char *s=a, *t=number;
*t++ = *s++;
*t++ = *s++;
*t++ = '1';
*t++ = '7';
*t++ = '0'+i;
while (*t++ = *s++) ;
0440デフォルトの名無しさんNGNG
これで動いたけど

#include <stdio.h>
#include <string.h>

#define N 5
int main()
{
char a[80];
static char *name[]={"Chemistry","Electricity","Architecture","Design","Manegement"};
int i;
printf("省略学籍番号:");
scanf("%s",a);
for(i=0;i<N;i++){
if(name[i][0]==a[0]){
printf("学科名:%s\n",name[i]);
printf("入学年度:'%c%c年度\n",a[1],a[2]);
memmove(a+5,a+3,3);
memmove(a,a+1,2);
a[2]='1';a[3]='7';a[4]='0'+i+1;a[8]=0;
printf("学籍番号:%s",a);
}
}
}
0441395NGNG
皆さんどうもありがとうございました!
無事完成させることができました!
Cの知識があまりないので
memmove(a+5,a+3,3); と
memmove(a,a+1,2);
はプログラム上どういうことを行っているのか教えていただきたいのです。
memmove(a,a+1,2);はどういうこと?と聞かれると答えられないので
ぜひご教授お願い致します。
0442デフォルトの名無しさんNGNG
manとかしないの?
0443デフォルトの名無しさんNGNG
a+3から3バイトをa+5に移動
a+1から2バイトをaに移動

0444395NGNG
>>443
なるほど!分かりました!ありがとうございました!
皆さん本当にありがとうございました
0445デフォルトの名無しさんNGNG
問題文にちと謎があるかもしれんが・・・。

1.1を読んだら「グー」、2を読んだら「チョキ」、3を読んだら「パー」と表示せよ。
 (多分岐処理、switch文、case文、break文、default文 がキーワード)

2.10人分の英語と数学の点数を2次元配列に入れ、それぞれの平均を求めよ。
 各点数は2次元配列に初期値として格納する。

3.入力した数字が配列中にあるかどうか調べ、見つかれば○、見つからなければ×を
 表示せよ。検索は0を入力するまで続ける。配列中の数値は初期値として設定。
 キーワードはbreak
0446デフォルトの名無しさんNGNG
>>445
1,

#include <string>
#include <iostream>

void main()
{
int i;
std::string out;
std::cin >> i;
switch(i)
{
case 1:
out = "グー";
break;
case 2:
out = "チョキ";
break;
case 3:
out = "パー";
break;
std::cout << out << endl;
}
}
0447デフォルトの名無しさんNGNG
最後の三行は

std::cout << out << endl;
}
}

じゃなくて
}
std::cout << out << endl;
}
0448デフォルトの名無しさんNGNG
2.10人分の点数をファイルから読むか自分でつくるのか分からないので回答不能
0449デフォルトの名無しさんNGNG
3.

#include <iostream>
#include <algorithm>

void main()
{
 int values[] = { 7, 41, 552, 61, 889, 1024, 26 };
 int in;
 for(;;)
 {
  std::cin >> in;

  std::cout << std::find(values, values + 7, in) == (values + 7) ? "×" : "○" << endl;
  if(!in)
   break;
 }
}
0450デフォルトの名無しさんNGNG
endlはエラーが出るならstd::endlに置き換えて。
0451445NGNG
>>448
スマソ、自分で入力するっぽい。
0452デフォルトの名無しさんNGNG
>>451
コマンドラインから入力するの?それともソースの中に書いちゃっていいの?
0453445NGNG
コマンドラインからみたい
0454デフォルトの名無しさんNGNG
よく見たら,各点数は2次元配列に初期値として格納する。とか書いてあるけど
本当にコマンドラインからなの?
まあいいや、

2
#include <iostream>
#include <numeric>

using namespace std;
void main()
{
 int in[2][10];
 for(int i=0;i<10;i++)
 {
  cout << i << "人目の英語の点数入れてね" << endl;
  cin >> in[0][i];
  cout << i << "人目の数学の点数入れてね" << endl;
  cin >> in[1][i];
 }
 cout << "英語の平均点は" << accumulate(in[0], in[0] + 10, 0.0) / 10 << "点" << endl;
 cout << "数学の平均点は" << accumulate(in[1], in[1] + 10, 0.0) / 10 << "点" << endl;
}

あと言い忘れてたのを2つ。
これらのソースはC++
全角スペースはタブに置き換えろ
0455デフォルトの名無しさんNGNG
もしコンパイラに`main' must return `int'とか怒られたら
void main()を
int main()に置き換えて
最後にreturn 0;で0返してあげてね。
0456デフォルトの名無しさんNGNG
×cout << i << "人目の○○の点数入れてね" << endl;
○cout << i+1 << "人目の○○の点数入れてね" << endl;
0457445NGNG
なるほど
親切かつ迅速にありがとう
0458デフォルトの名無しさんNGNG
3.
#include <iostream>
#include <algorithm>
int main()
{
 int values[] = { 7, 41, 552, 61, 889, 1024, 26 };
 int* const values_begin = &values[0];
 int* const values_end = &values[ sizeof( values ) / sizeof( values[0] ) ];
 std::sort( values_begin , values_end );
 for( int in ; ( std::cin >> in ) && ( in != 0 ) ; )
  std::cout << ( std::binary_search( values_begin , values_end , in ) ? "○" : "×" ) << std::endl;
 return 0;
}
0459デフォルトの名無しさんNGNG
いきなりすみません。
課題なのですがVC++を使って、
サーバーからファイルをDLするプログラムを教えてください。
アドレスを入力してそのファイルをDLする感じのプログラム
なのですが、よくわかりません;;よろしくお願いします。
0460デフォルトの名無しさんNGNG
何使えって言われたの?
wininet? winsock?
0461デフォルトの名無しさんNGNG
wchar_tを使った場合半角と全角が混在してても問題無いの?
wchar_t *wc = "ち0こ";
wc[1] = 'ん';
wc[2] = 'げ';
で
ちんげになるの?'
0462デフォルトの名無しさんNGNG
誤爆した…
0463デフォルトの名無しさんNGNG
>>459
プロトコルは?
おまいはどこまで作った?
0464デフォルトの名無しさんNGNG
#include <windows.h>
#include <wininet.h>
#include <string>
#include <iostream>
#pragma comment(lib, "wininet.lib")
int main()
{
 std::string url;
 std::cout << "『えっとね、URLを入力してほしいの』" << std::endl;
 std::cin >> url;
 HINTERNET hSession = InternetOpen( "Mio", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0 );
 if(hSession){
  HINTERNET hService = InternetOpenUrl( hSession, url.c_str(), NULL, 0, 0, 0 );
  if(hService)
  {
   for(;;)
   {
    char buf[1025];
    DWORD readbyte = 1024;
    InternetReadFile( hService, buf, 1024, &readbyte );
    if( readbyte == 0 ) break;
    buf[readbyte] = 0;
    std::cout << buf << std::endl;
   }
  }
  InternetCloseHandle(hService);
 }
 InternetCloseHandle(hSession);
 return 0;
}
0465デフォルトの名無しさんNGNG
点(a,b)が三角形(x1,y1)(x2,y2)(x3,y3)の内部にあるか判定するルーチンキボン
0466デフォルトの名無しさんNGNG
c1 = (y1-y2)*(a-x2)-(x1-x2)*(b-y2)
c2 = (y2-y3)*(a-x3)-(x2-x3)*(b-y3)
c3 = (y3-y1)*(a-x1)-(x3-x1)*(b-y1)
((c1<0)&&(c2<0)&&(c3<0)) || ((c1>0)&&(c2>0)&&(c3>0))
0467459NGNG
レスありがとうございます。
>>460
特に指定はありませんでした。

>>463
プロトコルはhttpかと思います。
僕はDLしてくれる命令がわからなくてgetstoreってのが
そうじゃないかとか探してる最中でした。;;

>>464
ありがとうございます。
えっと、実行してみました。そして
DL先のアドレスはどこになるのでしょうか?
0468459NGNG
連続でカキコすみません。

>>464
すみません、表示されました。^^;
わけがわからないこといってすみません。
ありがとうございました!
もう少しまじめにCの勉強をして見ます。
ホントにありがとうございました。
0469デフォルトの名無しさんNGNG
int main(void)
{

char str[] = "abcde";
char *ptr = str;

以上のような変数宣言をしたときの
・ポインタ変数のアドレス
・ポインタ変数に格納されている値
・ポインタ変数が参照する配列変数の先頭アドレス
・ポインタ変数の参照先データ

をそれぞれポインタ変数を用いてポインタの位置を文字数分まで
1つずつ進めながら16進数で確認するプログラムを作成せという問題がでました。

これからまじめに講義聞きますので、教えてください。先生・・・許してね。




0470bloomNGNG
http://homepage.mac.com/ayaya16/
0471デフォルトの名無しさんNGNG
何を16進数で確認するんだ?
0472デフォルトの名無しさんNGNG
>>471
書いてあるやろ
0473デフォルトの名無しさんNGNG
あげ足を取るならむしろ、
> 確認するプログラム
こっちを。
さて、どういう処理をすれば「確認」した事になるかというと
0474デフォルトの名無しさんNGNG
ポインタ変数に格納されてる値ってなんぞや?
0475デフォルトの名無しさんNGNG
>>469
 あんたもアホだが問題もアホだ。
 ポインタ変数をptrだと考えると
#include<stdio.h>
int main(void)
{
char str[] = "abcde";
char *ptr = str;
int i;

printf( "ptrのアドレス=%p(インクリメント無意味)\n", &ptr );
printf( "ptr参照する配列変数の先頭アドレス=%p(インクリメント無意味)\n", ptr );
for( i = 0; i < 5; i++ )
{
printf( "ptrに格納されている値=%p\n", ptr );
printf( "ptrの参照先データ=%x\n", (int)*ptr );
ptr++;
}
return( 0 );
}
0476デフォルトの名無しさんNGNG
>>475
だよな…
配列の先頭アドレスがインクリメントするごとに変わるのかと思って自分を疑った
0477デフォルトの名無しさんNGNG
>>475
変わらないのを確かめろ、って意味なんじゃない?
0478デフォルトの名無しさんNGNG
宿題じゃないけど、助けてください。

5.438,6.546
3.846,5.478
5.154,5.433
6.516,3.937
....
....

こういう座標のデータが入っているファイルが100個くらいあるんですが、
7x7の空間を0.1ずつに区切って、その区切った升目に、点がいくつあるか
を求めたいんです。

70x70の2次元配列を作って、何とかすればいいのかな、とは思うんですが
プログラム作ったことがないので、まったくどうしていいのかわかりません。

どなたか、助けてください、おねがいします。
0479デフォルトの名無しさんNGNG
g < x < g + 0.1
とかでカウントしてけばいいんでないか
0480デフォルトの名無しさんNGNG
>をそれぞれポインタ変数を用いてポインタの位置を文字数分まで

これだとやっぱり、「ポインタ変数のアドレス」と
「ポインタ変数が参照する配列変数の先頭アドレス」も
インクリメントしながら確認せにゃいかんのじゃない?

もっとも前者は「変わらん」でいいとして、
後者をどうやれというのか俺には理解できんけど。

やっぱり問題作成者がポインタを理解してないか、日本語を理解してないかのどっちかだな。
0481デフォルトの名無しさんNGNG
後者
&str[0]
0482デフォルトの名無しさんNGNG
>>478
丸投げしたいならファイルの内容を晒すこと
自分でやりたいならわからない部分をはっきりさせること
0483デフォルトの名無しさんNGNG
>>478
プログラムを組みたい!というのが目的でなければ
エクセル等表計算ソフトを使ったほうが速い
0484デフォルトの名無しさんNGNG
>>480
例示されてるコードにはポインタ変数は一つしかないし
「ポインタの位置を文字数分まで1つずつ進めながら」だから、
配列変数の先頭アドレスをどうこうしなかy、と読むのはおかしい
0485478NGNG
>479

そうなんですけど、それを「どうやってCで書くか?」
が、わからないんですわ。
ほんとに初心者ですみませんが、よろしくお願いします。
0486デフォルトの名無しさんNGNG
>>485
#include <string>
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int main()
{
 int point[70][70] = {0};
 ifstream ifs("in.txt");
 while(ifs)
 {
  double x, y;
  ifs >> x;
  ifs.get();
  ifs >> y;
  point[int(floor(x*10))][int(floor(y*10))]++;
 }
 for(int i=0;i<70;i++)
 {
  for(int j=0;j<70;j++)
  {
   if(point[i][j])
    cout << 0.1*i << "-" << 0.1*(i+1) << "," << 0.1*j << "-"
     << 0.1*(j+1) << "=" << point[i][j] << endl;
  }
 }
}
0487デフォルトの名無しさんNGNG
>>486
おまえ嫌なヤツだな
0488デフォルトの名無しさんNGNG
宿題じゃないんですけど、友人からVBのカウントダウンのプログラムで相談されました。
それはできたんですけど、これをCでやるとどうなりますか?
・秒数を入力。Enterでカウントダウン開始
・0になったらビープ音が鳴り、TimeOverと表示
0489478NGNG
>486
>487

ありがとうございます。
gccではコンパイルできませんでしたが、g++でコンパイルできました。
実際は360*900に分けないといけなかったので、
これで何とかなりそうです。
ほんとに助かりました、ありがとうございました。

>483
ファイルサイズが結構でかいのと、処理するファイルがたくさんだったので、
excellではちょっと大変そうだなあ。と思いまして。
awkを少し使えるので、試しに作ってみたんですけど、うまくいかなかったのと、
遅かったので、こちらに泣きついてしまいました。
レスをくれた皆様、ありがとうございました。

0490デフォルトの名無しさんNGNG
>>488
それは実際のカウントダウンなのか?
それとも秒数関係なく数字だけを表示してビープ音を鳴らすのかね
0491デフォルトの名無しさんNGNG
>>488
#include <windows.h>
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
 int sec;
 cin >> sec;
 DWORD endtime = GetTickCount() + sec*1000;
 int tick;
 while((tick = endtime - GetTickCount()) > 0)
 {
  if(tick / 1000 < sec)
  {
   cout << sec << endl;
   sec--;
  }
  else
   Sleep(1);
 }
 Beep(4000, 1000);
 cout << "TimeOver" << endl;
 
}
0492デフォルトの名無しさんNGNG
この2つの行逆だわ。

Beep(4000, 1000);
cout << "TimeOver" << endl;
0493デフォルトの名無しさんNGNG
GetTickCount()はclock使ってもいいんだけど、
どうせBeepはAnsi C++にないからGetTickCount使っちゃいました
0494478NGNG
たびたびすみません。

486さんのプログラムを使ってみたところ、
最後の行を一回多くカウントしているようなんですが、これはどういうことなのでしょうか?

せっかくなので、勉強のために、どうしてそうなるのかを教えていただけたら幸いです。
よろしくお願いします。
0495デフォルトの名無しさんNGNG
>>494
5
4
3
2
1
1
TimeOut
となるって事ですか?
0496デフォルトの名無しさんNGNG
>>494
意味がよく分からないのだけどこうしろって事?
#include <windows.h>
#include <string>
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
int main()
{
 int sec;
 cin >> sec;
 DWORD endtime = GetTickCount() + sec--*1000;
 int tick;
 while((tick = endtime - GetTickCount()) > 0)
 {
  if(tick < sec * 1000)
   cout << sec-- << endl;
  else
   Sleep(1);
 }
 cout << "TimeOver" << endl;
 Beep(4000, 1000);
}
0497デフォルトの名無しさんNGNG
>>493
'\a' 使えよ
0498デフォルトの名無しさんNGNG
>>497
すっかり忘れてました。
0499478NGNG
>495,496

ええと、「カウントダウン」のプログラムではなくって、
その前の「座標」のプログラム。のほうです。

>>486さんのプログラムを使うと、
in.txtにある座標のデータの、最後の行を2回カウントしてしまうんですよ。

たとえば、in.txtの中身が
3.846,5.478
5.154,5.433
6.516,3.937
だとすると、

3.8-3.9,5.4-5.5=1
5.1-5.2,5.4-5.5=1
6.5-6.6,3.9-4=2

という結果が出力されてしまうんです。
よろしくお願いします。
0500デフォルトの名無しさんNGNG
>>499
#include <string>
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int main()
{
 int point[70][70] = {0};
 ifstream ifs("in.txt");
 while(ifs)
 {
  
  double x, y;
  ifs >> x;
  ifs.get();
  ifs >> y;
  if(ifs.fail())
continue;
  point[int(floor(x*10))][int(floor(y*10))]++;
 }
 
 for(int i=0;i<70;i++)
 {
  for(int j=0;j<70;j++)
  {
   if(point[i][j])
    cout << 0.1*i << "-" << 0.1*(i+1) << "," << 0.1*j << "-"
     << 0.1*(j+1) << "=" << point[i][j] << endl;
  }
 }
}
0501478、499NGNG
>500

ありがとうございます。うまくいきました。
ソース見てもちんぷんかんぷんですが、
どんなことをしているのか、勉強してみます。
0502デフォルトの名無しさんNGNG
S=x/1!+xの2乗/2!+xの3乗/3!+・・・・・・xのn乗/n!
を解くプログラムがわかりません。教えてください
0503デフォルトの名無しさんNGNG
俺、別スレで答えたんだが・・・。
0504343NGNG
簡易ですがピタゴラス数を出すプログラムを書いてみました。
#include <stdio.h>
int main()
{
   int a,b,c;
   for(a=2; a<10000; a++)
   {
      for(b=2; b<10000; b++)
      {
         for(c=1; c<10000; c++)
         {
            if(a*a==(b*b)+(c*c))
            {
            printf("%d:%d:%d\n",a,b,c);
            }
         }
       }
   }
return 0;
}
まだ色々改善しなくちゃだめだけどもっともっと簡単にできたりできませんか?
0505デフォルトの名無しさんNGNG
>>504
別の変数を使ってやる方法があったとおもうよ。
u+vとu*vから求めるとかいうの。
0506343NGNG
>>505
え・・・?どういうことでしょうか?
スマソですが、教えていただけませんか?
0507デフォルトの名無しさんNGNG
>>505
aを長辺に固定してるからb<a,c<a
またc<=bとしても一般性は失われない。

ってのでループの条件を修正
0508デフォルトの名無しさんNGNG
>>503
いろんなパターンのプラグラムが知りたいんですけど....
0509デフォルトの名無しさんNGNG
ただのマクロリン展開じゃん
0510デフォルトの名無しさんNGNG
(u^2-v^2, 2u*v, u^2+v^2)
0511デフォルトの名無しさんNGNG
色んなパターンのプラグラムが知りたいなら検索くらいしろ
0512デフォルトの名無しさんNGNG
日本ロジテム(みずほの融資先)の子会社せいも素(みずほの融資先)
で過労による自殺者が出た。
http://www.samos.co.jp
http://society.2ch.net/test/read.cgi/traf/1046749189/l50
http://tmp.2ch.net/test/read.cgi/company/1046775680/l50 
              ,.-、
           /.n l  /⌒ヽ
             | l l | ,' /7 ,'
        , '' ` ー ' '-' /
       /  、_,       `ヽ  
         l   , .-. 、`´    l
         ヽ  ヽ ̄フ     / また死んだ〜〜〜!
        丶、 ̄____,/
         /  ,. - 、  )
      (( ( n ([N],ハ_う
         ゝ)ノ  ̄   ヽ     
            /   _   l ))  
            〈__ノ´   `(_ノ
0513名無し@沢村NGNG
おれは就職してから1ヶ月目に絶対に会社をやめないという誓約書を書かされたよ。
会社をやめたら膨大な違約金を取られてしまうんだよ。
また自宅にあるPCも会社に没収されてしまったよ。尾行をつけられたり、電話も盗聴されているんだよ!
会社はおれが他の会社に移ったり自宅でこっそりプログラムをつくったりすることをとても怖れているよ。
困ったもんだね…
0514デフォルトの名無しさんNGNG
catでテキストの中身を出力し、パイプライン処理で
標準出力及びファイルに出力するプログラムをシステムコールを
使って作成したいのですが・・・例えば
cat foo.txt | ./a.out
というコマンドを入力とすると、foo.txtの中身が標準出力に出力され、
さらにファイルhoge.txtに格納されるという感じです。
コンパイルはできたのですが、実行するとどうしても
”/0=/dzy#”という変な文字しか出力されません。
どこがおかしいのでしょうか?よろしくお願いします。

#define SIZE 100

int main(void){
int n;
int fd;
char buf[SIZE];

creat("hoge.txt",0644);
fd = open("hoge.txt",1);

while(n = read(0, buf, sizeof buf) > 0){
write(1, buf, n);
write(fd, buf, n);
}
close(fd);
return 0;
}
0515デフォルトの名無しさんNGNG
>>514
n初期化しなさいよ。
0516デフォルトの名無しさんNGNG
> creat("hoge.txt",0644);
> fd = open("hoge.txt",1);
ここがおかしい
0517デフォルトの名無しさんNGNG
> int n;
size_t n;
0518デフォルトの名無しさんNGNG
というか
while(n = read(0,bufm sizeof(buf) > 0) なんてやったら
nには1か0かしか入らない気がするが?
0519デフォルトの名無しさんNGNG
それ以前になぜ低レベルIO?
0520514NGNG
御回答ありがとうございます。
>>516の部分、fd = creat("test2.txt",0644);に直してみました。
他で指摘いただいた部分も直しましたがやはり全く同じ結果になります。
本当にわからないです・・・
0521デフォルトの名無しさんNGNG
whileの中もちゃんとなおしたかい?
0522デフォルトの名無しさんNGNG
バグだらけだな
0523デフォルトの名無しさんNGNG
環境を書きなさい。
シェルがパイプエラー出してないかい?
0524デフォルトの名無しさんNGNG
>>520

>while(n = read(0, buf, sizeof buf) > 0){
を
while((n = read(0, buf, sizeof buf)) > 0){
にしたか?
0525デフォルトの名無しさんNGNG
whileの中の人も大変だな。
0526デフォルトの名無しさんNGNG
>>525
いや、コンパイラの中の人の方が。
0527デフォルトの名無しさんNGNG
まあな
0528デフォルトの名無しさんNGNG
素直に tee を使ったほうが百万倍も楽チンなのに。
0529514NGNG
>>521-524
できました、どうもありがとうございます。

>>523
すみません、UNIXの場合どう環境を説明すれば良いか
分かりませんがとりあえずパイプエラーは出てなかったです。
0530369NGNG
>>391
スマソ。気をつけます。
0531デフォルトの名無しさんNGNG
ファイルの属性を表示させてUNIXの ls -l コマンドと同様の機能を
実現したいのですが、関数などの使い方がよく分からず
ls_l()の中身をどのようにすればよいか苦戦しております。
どうか指南いただけないでしょうか。以下は滅茶苦茶ですが途中まで書いたやつです。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <pwd.h>
#include <grp.h>

int main(int argc, char *argv[]){

if( argc != 2 ){
fprintf(stderr,"Usage: %s filename \n",argv[0]);
exit(0);
}

ls_l(argv[1]);

}
0532デフォルトの名無しさんNGNG
ls_l(char *path){

struct stat buf;
if(lstat(const path, &buf) == -1)
{
perror(path);
exit(1);
}

printf("%d",readlink(path));
printf("%s",getpwuid((int)path));
/*printf("%s",getgrgip(buf.st_gid));*/
/*printf("%d",buf.st_size);*/
printf("%s",ctime(&buf.st_ctime));
printf("%s\n",path);
}
0533デフォルトの名無しさんNGNG
>>531
manを引きながらBSDとかGNUのソースを見ればいいのでは?
0534デフォルトの名無しさんNGNG
っつーか、車輪を再開発する理由が判らん。
system("ls -l dir");
するとか、
popen("ls -l dir", "r");
すれば事足りるんでないの?

どうしてもってことならUnixならソースがあるんだから>>533の言うとおり。
0535531NGNG
すみません、探してみます。
0536デフォルトの名無しさんNGNG
VC6でやってる初心者です。
テンプレートとフレンド関数の問題なんですが、

friend void C2< T1 >::F3( C1< T1 > &);

が入るときの各クラスを求めよというものです。

Cx : クラス Tx : 型パラメータ Fx : 関数 で
xはクラスごとに異なります


#include <iostream.h>

template <typename T3>
class C3{
public:
void F3(C3< T3 > &a){;}
};

template <typename T2>
class C2 : public C3< T2 >{
};

template <typename T1>
class C1{
friend void C2< T1 >::F3(C1< T1 > &);
};

だと F3(C1< T1 > &) が F3(C3< T1 > &) じゃないとダメだし…
ホントわけ分からなくなりました。よろしくお願いします。
0537デフォルトの名無しさんNGNG
どなたか助けてください。問題はコレです。。。
入力した文字列から指定した文字を検索するプログラムを作れ。
ただしポインタ変数を用いよ!

要は、こんな感じで実行結果が出ればいいようですが・・・。
文字列を入力してください:abcabc
検索文字を入力してください:b

文字列"abcabcに"b"は
2番目 5番目
にあります.

文字列を入力してください:abcde
検索文字を入力してください:z

そんな文字は入っていません

時間がなくて困ってます。お願いしますtt
0538デフォルトの名無しさんNGNG
>>531
man stat
0539デフォルトの名無しさんNGNG
>>537
#include <stdio.h>

int main()
{
char s[100];
char ch;
printf("文字列を入力してください:");
gets(s);
printf("検索文字を入力してください:");
ch = getchar();
0540539NGNG
もう7時すぎてるよ。
途中だけど帰る。
0541デフォルトの名無しさんNGNG
#include <stdio.h>

char *mystrchr(char *p, int ch)
{
while (*p) {
if (*p == ch) {
return p;
}
++p;
}
return NULL;
}

0542デフォルトの名無しさんNGNG
int main()
{
char buf[256];
char ch;
char *p;
int offset;

printf("文字列を入力してください:");
scanf("%256s", buf);
printf("検索文字を入力してください:");
scanf(" %c", &ch);
if ((p = mystrchr(buf, ch)) != NULL) {
printf("文字列\"%s\"に\"%c\"は\n", buf, ch);
while (p != NULL) {
offset = p - buf + 1;
printf("%d番目 ", offset);
p = mystrchr(p + 1, ch);
}
printf("\nにあります.\n");
}
else {
printf("そんな文字は入っていません\n");
}
return 0;
}

0543デフォルトの名無しさんNGNG
キーボードの右を押すとカーソルが右に移動するにはどうしたらいいの?
教えてください。。
0544デフォルトの名無しさんNGNG
>>543
C FAQ読み直して来い
0545デフォルトの名無しさんNGNG
C FAQってなんでしょうか?
0546デフォルトの名無しさんNGNG
google に聞け
0547デフォルトの名無しさんNGNG
char=1byteとは限らない(へりくつ)なので、わざわざ別にチェック用の変数を用意しました。

#include <stdio.h>
#include <stdlib.h>

#define BUFSIZE (1024)
#define TRUE (0)
#define FALSE (!TRUE)

int main(){
char buffer[BUFSIZE]; // for fgets&sscanf

char strSearchData[BUFSIZE];
char chrQuery;
char *pSearch;

int iCheck[BUFSIZE];
int iCount;
int i;

// init
for(i=0;i<BUFSIZE;i++){
iCheck[i]=FALSE;
}
iCount=0;
0548デフォルトの名無しさんNGNG

// input
printf("文字列を入力してください:");
fgets(buffer,BUFSIZE,stdin);
sscanf(buffer,"%s",strSearchData);

printf("検索文字を入力してください:");
fgets(buffer,BUFSIZE,stdin);
sscanf(buffer,"%c",&chrQuery);

// search
i=0;
for(pSearch=(char *)strSearchData;*pSearch!='\0';pSearch++,i++){
if(*pSearch == chrQuery){
iCheck[i]=TRUE;
iCount++;
}
}
0549デフォルトの名無しさんNGNG

// result
if(iCount==0){
printf("そんな文字は入っていません\n");
}else{
printf("文字列\"%s\"に'%c'は\n",strSearchData,chrQuery);
for(i=0;i<BUFSIZE;i++){
if(iCheck[i]==TRUE){
printf("%d番目",i+1);
}
}
printf("\n");
printf("にあります");
}
}

>>542の方が綺麗だけどさ・・・
0550デフォルトの名無しさんNGNG
っていうか、この回答だとポインタを(無理に?)使う意味がわからないね…… スマソ
0551デフォルトの名無しさんNGNG
#include <stdio.h>
int main() {
char s[100];
char ch, *t;
printf("文字列を入力してください:");
gets(s);
printf("検索文字を入力してください:");
ch = getchar();
for (t = s; *t && *t != ch; t++) ;
if (!*t) {printf("そんな文字は入っていません\n"); return 0;}
printf("文字列\"%s\"に\"%c\"は\n", s, ch);
for (; *t; *t++)
if (*t == ch) printf("%d番目 ", t-s+1);
printf("\nにあります.\n");
return 0;
}
0552デフォルトの名無しさんNGNG
惜しい。
tを巻き戻せ。
0553デフォルトの名無しさんNGNG
charは1バイトです。むしろ、sizeof(char)を1バイトと呼ぶのです。
0554デフォルトの名無しさんNGNG
>>553
1バイト=8ビットとは限らない、って言いたかったんだろう
きっと
0555デフォルトの名無しさんNGNG
ちがうなあ。wchat_tを言いたかったのか。
0556デフォルトの名無しさんNGNG
>>552
tを巻き戻すってどこ?
0557デフォルトの名無しさんNGNG
>>547
配列に入れる代わりにフラグを使ってみました

#include <stdio.h>
#include <string.h>

int main()
{
 char InputString[512], SearchString[512], *Position;
 int Matched;

 fprintf(stderr, "文字列を入力してください:"); gets(InputString);
 fprintf(stderr, "検索文字を入力してください:"); gets(SearchString);
 Matched = 0;
 for(Position = InputString; (Position = strstr(Position, SearchString)) != NULL; Position++){
  if(!Matched){
   printf("文字列\"%s\"に\"%s\"は", InputString, SearchString);
   Matched = 1;
  }
  printf(" %d", Position - InputString + 1);
 }
 if(Matched){
  printf(" 番目にあります\n");
 } else {
  printf("そんな文字は入っていません\n");
 }
 return 0;
}
0558デフォルトの名無しさんNGNG
よろしくおながいします。(言語はCで)

3次元空間上の4点
A (10,135,14), B (73,-16,-22), C (27,-21,96), D (-50,-32,-43),
で構成される3角錐、及びその3角錐内の点 P を考える。
今、点 P が始点 O (0,0,0)にあり、1秒毎に
ベクトル V(1,2,3) 分だけ移動し続けるとする。
但し、もし P が3角錐の面と交差した時には、
P はその面に対して垂直に反射するように移動方向を
変えるものとした場合、1年(365日)後の点 P の
座標を求めよ。
0559デフォルトの名無しさんNGNG
なかなか面白いけど、これは数学的にエレガントに解くの?
それともシミュレーションでゴリゴリやっていいの?
0560デフォルトの名無しさんNGNG
>>537
#include <string>
#include <iostream>
using namespace std;
int main()
{
 string str, fstr;
 char c, *pc = &c;
 size_t pos;
 cout << "文字列を入力して下さい" << endl;
 cin >> str;
 cout << "検索文字を入力して下さい" << endl;
 cin >> *pc;
 fstr = *pc;
 if((pos = str.find(fstr)) != string::npos)
 {
  cout << "文字列\"" << str << "\"に\"" << *pc << "\"は" << endl;
  do
  {
   cout << pos + 1 << "番目 ";
  } while((pos = str.find(fstr, pos+1)) != string::npos);
  cout << "\nにあります" << endl;
 }
 else
  cout << "そんな文字は入っていません" << endl;
}
0561560NGNG
1個以上の整数コマンド行から入力したとき、それらの和を標準出力するプログラムを作成しなさい。
ヒント関数atoiを用いると容易。

お願いします
0562rNGNG
>>561
これを参考にして。

#include <cstdlib>
#include <iostream>
int main( int argc, char* argv[] ) {
  int sum = 0;
    while( int i = 1; i < argc; i++ ) {
      sum += std::atoi( argv[i] );
    }
    std::cout << sum;
  }
}
0563デフォルトの名無しさんNGNG
>>561
#include <cstdlib>
#include <iostream>
int main(int argc, char** argv)
{
 int value=0;
 for(int i=1; i<argc; i++)
  value += std::atoi(argv[i]);
 std::cout << value << std::endl;
 
 return 0;
}
0564デフォルトの名無しさんNGNG
先を越されたぜ
0565草鍋春樹NGNG
>>564
どんまい
0566デフォルトの名無しさんNGNG
>>559
解ける方法で解いてください。
0567561NGNG
>>562>>563
ありがとうございました
0568デフォルトの名無しさんNGNG
C言語でよろしくおねがいします。

まず50個のデータ(数字)を入力し、昇順に並べ替える。
そのなかに好きな数字を入れて、その数字がどこにあるのかを探し、
その進行状況を表示するプログラムを作成せよ。
(例えば、すべてのデータが50個であり、二分探索で25番目を検索している時は、25と表示。)
0569デフォルトの名無しさんNGNG
>>568
めんどいからバカソートで良いじゃん。
0570デフォルトの名無しさんNGNG
>>569
ソートはqsortでいいだろ。
サーチはbsearch使うわけにはゆかないけど。
0571デフォルトの名無しさんNGNG
>>570
じゃあ線形探索だ。for一個で楽ちん。
0572デフォルトの名無しさんNGNG
>>568
Hash 表作って一発サーチすれば、進行状況の表示がサボれるかもしれない。
0573デフォルトの名無しさんNGNG
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
inline int icmp(const int *x, const int *y){return *x - *y;}
int ibsearch(const int key, const int *base0, size_t nmemb) {
int i, base = 0; size_t lim;
for (lim = nmemb; lim != 0; lim /= 2) {
i = base + lim/2; printf("[%d]", i);
if (key == base0[i]) return i; if (key > base0[i]) { base = i+1; lim--; } }
return -1; }
int main(int argc, char **argv) {
int n, i, *base; char buf[BUFSIZ];
n = argc-1;
if (0 == n){ fprintf(stderr, "usage: %s numbers...\n", argv[0]); return 1; }
base = (int*)malloc(sizeof(int)*n);
for (i = 0; i < n; ++i) base[i] = atoi(argv[i+1]);
qsort(base, n, sizeof(int), (int(*)(const void*, const void*))icmp);
while (fprintf(stderr, "input target: "), fgets(buf,BUFSIZ,stdin))
puts(ibsearch(atoi(buf), base, n) < 0 ? " not found" : " found");
return 0; }
0574デフォルトの名無しさんNGNG
Cだと言われているのに、inline を使い、
あまつさえ、それを qsort の引数にしている >>573 に小一時間(ry
0575デフォルトの名無しさんNGNG
>>572
ハッシュがかち合ったとき、どのみち表示しないとダメでしょ
0576デフォルトの名無しさんNGNG
>>575
オーバーフロー領域の検索なんて所詮数回でしょ ?
(そうでないときは、ハッシュの設計ミスだし。)

表示なんかしても一瞬だからいらんと思うけど。
0577デフォルトの名無しさんNGNG
>>576はネタなのか真性なのか理解に苦しむ
0578558NGNG
>>570
比較関数内に状況を表示させる機能をつければ bsearch を使っても良いと思われ。
(但し、それがC言語の規約上、動作が「保証」されているかどうかは怪しいが・・・)

そんな事より、誰か >>558 の解答、よろしくおながいします。
0579デフォルトの名無しさんNGNG
Cだと考える気にならん
0580デフォルトの名無しさんNGNG
>>576は畑を耕すのに戦車を使おうと考えるようなやつかも
0581デフォルトの名無しさんNGNG
>>579
じゃあ、何だったらいいでしか?
0582デフォルトの名無しさんNGNG
C++!
0583デフォルトの名無しさんNGNG
c--
0584デフォルトの名無しさんNGNG
D
0585デフォルトの名無しさんNGNG
while program
0586デフォルトの名無しさんNGNG
>>558
三角錐の面と交差するか調べる関数と
垂直に反射する関数を書けばいいのだよ。
俺は数学が分からないから書けないが。

緯度と経度で表したり、外積を使えば簡単に書けるかもしれん。
0587デフォルトの名無しさんNGNG
^Mの文字列を削除するにはどのようにしたらよいのでしょうか?
0588デフォルトの名無しさんNGNG
Cなんですが、
順次探索のsearch関数、insert関数、delete関数を配列ではなくリストで
プログラムを書かないといけないのですが、
どのようなプログラムになるか教えてくださいm(_ _)m
0589558NGNG
>>582
とリあえず C++ でもいいです。

>>586
要するにレイトレするのと同じなのは分かっていますが、
もっと単純&エレガントな方法があればなお良いのです。
Cを使って2chの1レス内にコピペできるくらいのが希望です。
0590デフォルトの名無しさんNGNG
結構簡単だと思うよ。引っ掛け問題みたいだけど。
> P はその面に対して垂直に反射するように
              ^^^^^^^^
0591デフォルトの名無しさんNGNG

あるデータファイルをヒストグラムが書けるデータファイルに
したいのですが。データの数は決まってないです。
よろしくお願いします。
0592デフォルトの名無しさんNGNG
>>578
比較関数に渡される要素ってどっちが探索中の要素で、どっちが比較対照要素になるかって決まってるのか ?
俺も一瞬考えたけど、そこら辺がわからんかった。

>>577, >>580
畑って言ってるけど、進行状況を表示するぐらいの規模だぜ。
まあ、>>568 はなんかの宿題だろうから、>>572 は当然ネタだけど、実際のプログラムなら Hash は検討すべきだと思うよ。

>>587
もうちょっとなんか書けよ。
0593デフォルトの名無しさんNGNG
>>588
とりあえず、これで必要最小限の実装になっていると思うが、どうよ。

typedef struct List_ {struct List_ *n;void *e;} List;
typedef int ListCmp(void *a,void *b);

List *Search(List *h,void *e,ListCmp p)
{while(h!=NULL&&p(h->e,e))h=h->n;return h;}
List *Insert(List *h,void *e)
{List *l=(List *)malloc(sizeof(List));l->n=h;l->e=e;return l;}
List *Delete(List *h,List *d)
{if(h==d)return h->n;while(h)if(h->n==d){h->n=d->n;break;}return h;}
0594デフォルトの名無しさんNGNG
>>574
C99ならinlineがサポートされているよ
0595558NGNG
>>590

垂直方向に方向を変えるのではありません。
あくまでも「反射」です。
よろしくお願いします。
0596デフォルトの名無しさんNGNG
>>594
なら、qsort に inline 関数を渡したとき、
その関数はインライン展開されるのか?
0597デフォルトの名無しさんNGNG
>>592
>比較関数に渡される要素ってどっちが探索中の要素で、どっちが比較対照要素になるかって決まってるのか ?
進行状況を表示するだけならば、それらの情報は全く要らないと思うが。
0598デフォルトの名無しさんNGNG
おながいしまる。

これを実行すると 合計は[2550] と表示される。
4行目の宣言を消してforヘッダの中でnumを宣言するようにすると
合計は[2] になってしまう。理由を述べよ。

#include <stdio.h>
int main()
{
int sum;
int num; /* 4行目 */
for (/*int*/ num = 2, sum = 0; num <= 100; num += 2)
sum += num;
printf("合計は[%d]\n", sum);
return 0;
}
0599デフォルトの名無しさんNGNG
>>598
うちでは、0 になりましたが。
0600デフォルトの名無しさんNGNG
0が定義されるかどうかの違い
0601デフォルトの名無しさんNGNG
>>598
正確にいうと出力される数字は不定

for (int num = 2, sum = 0; num <= 100; num += 2)

こうした場合sumは2回目の宣言となる
1個目のsumは隠されるためアクセスできない

1個目のsumは値が代入されないので値は不定
0602デフォルトの名無しさんNGNG
>>596
qsortの中にってこと?されるはずがない。
ちなみに私は>>573じゃないよ。
0603デフォルトの名無しさんNGNG
>>598
糞みたいな宿題だな。
0604593NGNG
うわ、よく考えたら Delete の引数の双方ともに NULL が
渡されたら(まぁ、普通起こらないとは思うが)、ぬるぽが出ちゃうよ!
やっぱり本能に任せたままのコーディングはいかんな。

悪い、>>588 よ、そこら辺はてきとーに直しておいてくれ。
0605デフォルトの名無しさんNGNG
順次検索ってシーケンシャルサーチ? つまりは線形探索?
0606デフォルトの名無しさんNGNG
糞みたいな宿題に答えていただきありがとうございます。。。m(_ _)m
3行目のint sumとforヘッダのsumは別物なんでつね。
たまたま偶然2だったと、フみたいなもんでつか。
ちなみ3行目を int sum = 55; にしたら
合計は[55] になりますた。
0607動画直リンNGNG
http://homepage.mac.com/hitomi18/
0608デフォルトの名無しさんNGNG
>>604
ガッ
0609デフォルトの名無しさんNGNG
ファイル(ファイル名はfile.txt)の中に数字があれば「数字がありました。」と表示し、
なければ「数字がありませんでした。」と表示するプログラムをつくれ。

C言語です。よろしくお願いします。
0610デフォルトの名無しさんNGNG
inlineはコンパイラに対するヒントでしかないから
関数のポインタ渡しと化する場合は当然展開されない版が
リンクされる。
0611デフォルトの名無しさんNGNG
>>609
isdigit
0612デフォルトの名無しさんNGNG
>>593
Delete() で、ルートがさす要素以外の要素を指定したら無限ループ。
Insert() で、malloc() する割には、Delete() で free() しないと言う変なインターフェース。

>>604 以前に、よくこんなものネットに晒せたもんだな。
0613デフォルトの名無しさんNGNG
strchr
0614デフォルトの名無しさんNGNG
>>612
そこまで言わなくてもいいじゃん。
だからいつも一言多いと言われるんだよ。
0615デフォルトの名無しさんNGNG
>612は「インターフェイス」の使い方を勉強しる。

そんな文章よくネットに晒せたもんだな。
0616593NGNG
>>612
>Delete() で、ルートがさす要素以外の要素を指定したら無限ループ。
お、ほんとだ、ありがと。で修正。
{if(h==d)return h->n;while(h)if(h->n==d){h->n=d->n;break;h=h->n;}return h;}

>Insert() で、malloc() する割には、Delete() で free() しないと言う変なインターフェース。
ここは趣味の問題。
0617593NGNG
>>616
うわ、修正にもなっていないよ(w
{if(h==d)return h->n;while(h){if(h->n==d){h->n=d->n;break;}h=h->n;}return h;}
0618デフォルトの名無しさんNGNG
どこでfreeするの?
0619デフォルトの名無しさんNGNG
>>615
ぷぷっ、釣りですか ?
0620デフォルトの名無しさんNGNG
>>618
利用者がやるんだと思う。
ルートポインタの更新も利用者任せみたいだから、正直ちょっとどうかと思う。
0621デフォルトの名無しさんNGNG
http://www.zdnet.co.jp/help/tips/linux/l0034.html
にある処理をC言語でするとどうやればいいのでしょうか?
0622デフォルトの名無しさんNGNG
>>621
system("perl -i.bak -npe 's/\r\n/\n/' hogehoge.txt");
0623593NGNG
>>618
プログラムが終了するまで free しないんでつ。
0624デフォルトの名無しさんNGNG
InsertDeleteを繰り返すとどんどん使用メモリが増えていくって事ですか?
0625デフォルトの名無しさんNGNG
>>621
read(s,buf,sizeof(buf));
のbufを変換する場合は?
0626デフォルトの名無しさんNGNG
>>601 そうなんですか?
for(1;2;3) {4} なら 1→(2→4→3→2→4→3)・・・
と言うのは分かるのですが。初期値代入は複数書くのは処理系依存なのですか?
パット見102*25==2550と思ったのでよく宿題の意味がわからなかったのですが。
0627デフォルトの名無しさんNGNG
>>622
×: system("perl -i.bak -npe 's/\r\n/\n/' hogehoge.txt");
○: system("perl -i.bak -npe 's/\\r\\n/\\n/' hogehoge.txt");
0628デフォルトの名無しさんNGNG
>>609 てきとうですが。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
FILE*fp;char s[1024];int i,l,ok;
if((fp=fopen("file.txt","rb+"))==NULL){puts("ファイルオープン失敗");exit(1);}
fread(s,sizeof(s),1,fp);fclose(fp);
for(i=0,l=strlen(s),ok=0;i<l;i++){if(isdigit((int)s[i])){ok=1;break;}}
if(ok)puts("数字あり");else puts("数字なし");
return 0;
}
0629629NGNG
日曜日を0として、n日目の曜日名を返す関数char *DayName(int n)を作成しなさい。ただし、0≦n≦6とし、関数DayName(n)内では以下のポインタ配列宣言を行うこと。
Static char *name[7] = {“Sunday”,”Monday,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”};n

お願いします
0630デフォルトの名無しさんNGNG
>390
の考え方がわかりません。どなたかおしえてください
0631593NGNG
>>624
なら、 free すれば使用メモリが減るという保証でもあるんでしか?
また、(実は)下の件にも関わってくるでし。

>>620
>ルートポインタの更新も利用者任せみたいだから、正直ちょっとどうかと思う。
実際に何度かリストをいじったことがあればすぐに気づくと思うが、
リストという香具師は、必ず先頭から辿りたい時ばかりとは限らない
(言語処理系の変数のスコープの実装などが良い例)。
ならば、「リストを管理する構造体」などという殻で全体を囲わずに
実際に扱う対象はリストの先頭のポインタのみで、
後の細かな管理は使用する側にまかせるのが吉、という事もある。
まあ、これも趣味の問題だが・・・
0632デフォルトの名無しさんNGNG
>>628
普通EOFまで一文字ずつ読み込んで処理しないか?
0633デフォルトの名無しさんNGNG
>>629
#define Static static

char *DayName(int n)
{
Static char *name[7] = {“Sunday”,”Monday,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”};
if(n<0||n>6) return NULL;
return name[n];
}
0634デフォルトの名無しさんNGNG
>>626
こう書き換えるとわかるかな?

int sum;
for (int sum = 0, num = 2; num <= 100; num += 2)


int sumが2回宣言されてるよね
0635デフォルトの名無しさんNGNG
電源を切るとfreeされます。
0636633NGNG
コピペしたから気づかなかったが、”と全角じゃだめじゃん。
0637デフォルトの名無しさんNGNG
>>629 そのままだと思うのですが。
#include <stdio.h>
char*DayName(int n)
{
static char*name[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
return name[n%7];
}
int main(void)
{
printf("%s\n",DayName(14));
return 0;
}
0638626NGNG
>>634 初期化を複数行うことではなくて途中宣言の事の方ですか。分かりました。ありがとうございました。
0639デフォルトの名無しさんNGNG
>>633 StaticのSが大文字であるのが意地悪問題ではないと思うけど。
0640628NGNG
>>632 ファイル操作は殆ど使ったことが無かったので本当にてきとうでした。
0641デフォルトの名無しさんNGNG
>>631
> なら、 free すれば使用メモリが減るという保証でもあるんでしか?

毎回こう言うこと言う奴がでてくるな...。
まあ下の件も含めて、趣味の範疇なんだろうからどうでもいいけど、正直こう言う奴とは組みたくないな。
0642593NGNG
>>641
>まあ下の件も含めて、趣味の範疇なんだろうからどうでもいいけど、正直こう言う奴とは組みたくないな。
世の中には奇妙な事や変な事を考えている奴は意外と多いもの。
あなたには、たまには普段と違う世界・パラダイムを覗いてみる事を
お勧めするでつ。
0643デフォルトの名無しさんNGNG
InsertDeleteを繰り返すとどんどん使用メモリが増えていくって事ですか?
と聞いてるんだよ。
質問を質問で返すなよ。
0644643NGNG
とっとと答えねーかーーっ!!
この糞度もがぁーーーーっ!!!!!
0645デフォルトの名無しさんNGNG
こんな時間に・・・しかもsageで・・・・・
0646デフォルトの名無しさんNGNG
まあ644はsageてない時点で偽者なわけだが。
0647デフォルトの名無しさんNGNG
class CTest* p_tst;
というクラスがあって、これを削除したい場合は
delete p_sts;
ですむのだけど、これをたとえば、自殺したい場合はどうすれば
いいのですか?

たとえば、CTestのメンバ関数内で、自殺したい場合です。
delete this; では、まずいですよね?
0648デフォルトの名無しさんNGNG
>>647
自殺なんてできない。
0649デフォルトの名無しさんNGNG
>>648
えと、ではいつもどうしてます?
ちなみに自分は、KillRequest() というメンバ関数を設置して、
自殺したい場合はこのメンバ関数を呼び出してます。
この関数内では、boolフラグをたてて、
あとで、別の場所でこのboolフラグを監視し、もしたっていれば
そこで delete かけることで実装してます。

が、これは非常にコーディングに注意力が必要で、
油断してると、すぐにdelete漏れしてしまうのです。

どうしたものだか・・・
0650デフォルトの名無しさんNGNG
>>649
それは生成元で管理しきれないから
GCっぽいことしてるってこと?
そのフラグ監視してるのが自前GC?
0651デフォルトの名無しさんNGNG
>>650

んー、そうなのかなー、自前GCというのだろうか?
自分の中ではグルーピングと呼んでいて、
一応、それ専用の監視クラスが存在してはいるんだけど・・・

>>それは生成元で管理しきれないから
そのとおりですー
小規模なら、注意力喚起して、生成元で管理しきれるのだけど
最新のPCでビルドに3分以上かかるような規模になると
もう、生成元では管理できなくて・・・
0652デフォルトの名無しさんNGNG
本当に管理できないなら、その自前GCで良いのではないかと。
ただ、自信が無かったりするなら↓とかチェックしてみれ。
http://www.hpl.hp.com/personal/Hans_Boehm/gc/
(boolフラグ立て忘れたらどうしよう・・・とか)
0653デフォルトの名無しさんNGNG
よくあるスマートポインタじゃいかんのかな?
0654593NGNG
おはよございます。

>>643-644
夜遅くまでご苦労さん(w
いちお解答しますけど、当然ふえていきます。
ただし、これが問題となるような状況が発生した時に
それを解決するための方法は、>643タン は真っ先に free を
思いつくのかも知れませんが、私ならまず、

1.(OS側の管理情報を減らす為)List 構造体用のメモリ管理を
アプリケーション内で行う
2.GCを実装する

という(比較的効果が高いと思われる)対策を取ったあと、
最後のおまけとして free をくっつけまつ。

今回の件では、ここまでやる必要性は無いと判断したのですが・・・
0655デフォルトの名無しさんNGNG
>>654
> 1.(OS側の管理情報を減らす為)List 構造体用のメモリ管理を
> アプリケーション内で行う

よくこう言う奴がいるけど、大体 malloc()/free() ライブラリよりヘボイもの書いて自己満足してる奴が多い。
大体は、まともに free() するプログラムが書けない奴だと思う。

> 2.GCを実装する

だったら初めから、C/C++ なんか使わん方がいいと思うけどね。

別に、>>593 がそうだと言ってるわけじゃないけどさ。
0656デフォルトの名無しさんNGNG
そんなにfreeが嫌いならBoehm GC使えよアフォども。
0657デフォルトの名無しさんNGNG
>>654
> 今回の件では、ここまでやる必要性は無いと判断したのですが・・・
じゃぁ真っ先に思いつく最後のおまけのfreeくらいつけとくもんだ。
0658デフォルトの名無しさんNGNG
このスレのレベルが循環参照を起こしまくるようなコードを書くほど
高いとは思えん。shared_ptrで十分。
0659デフォルトの名無しさんNGNG
ちゅーか、たんに書き忘れただけだろうと思う
604のケアレスミスを見てると
0660デフォルトの名無しさんNGNG
>>647
仮にdelete thisで自殺ができたとすると、
p_sts(p_tst?)が参照切れを起こす。
自殺時にp_stsを書き換えるようにすると、外部との結合度が高くなりよろしくない。
自殺したこを示すフラグを用意する手もあるが、わざわざ自殺しなくても、
そのフラグをチェックしたときにdeleteすればよい。

外部から参照されていない場合は、そもそもメンバ関数が呼ばれないはず…
0661あふぉNGNG
xのn乗を計算するプログラムを教えて下さい。
2進数表示を利用する奴です。
0662593NGNG
>>657
あのー、しっかりと>>631で
>また、(実は)下の件にも関わってくるでし。
とコメントつけといたんですけど・・・

Delete した構造体が "必ず" free するべき対象となるとは
限らないことは結構あるものです。

>>659
あなた、ケアレスミスの "亡霊" に取り付かれていませんか?
なにか辛い事でもあったんでしか?
0663デフォルトの名無しさんNGNG
// 2進数表示を利用するって何だろ
double power(double x, double n)
{
FILE *fp;
char buf[100];
sprintf(buf, "awk 'BEGIN{print %g^%g}'", x, n);
fp = popen(buf, "r");
fgets(buf, sizeof(buf), fp);
pclose(fp);
return atod(buf);
}
0664593NGNG
>>659
そんな点より、free の前の malloc でメモリが確保できなかったときの
対応がぬけていると責める人が現れなくなった、というのは
時代の流れを感じるでつ。

隔世の感がありまつな・・・
0665デフォルトの名無しさんNGNG
宿題でエラー処理しろと言われてないのにやる奴は馬鹿
0666デフォルトの名無しさんNGNG
>>664
ここは宿題スレ。
0667デフォルトの名無しさんNGNG
> 後の細かな管理は使用する側にまかせるのが吉
こういうスタンスに立つなら、mallocするのがおかしいような気がする。
0668デフォルトの名無しさんNGNG
すげー饒舌になったな(w
今はfree()の話をしてるんで、malloc()の件は後で
0669デフォルトの名無しさんNGNG
ケアレスミスの "亡霊"って何?
0670デフォルトの名無しさんNGNG
Cなんですが、

#include<stdio.h>
#include<stdlib.h>

#include"list_appli_header.h"
#include"liststructure.h"

int init(void)
{
head=NULL;
return 1;
}
0671デフォルトの名無しさんNGNG
●上のプログラムの続き
nodetype* search(keyType a_key) {
........
}

int insert(dataType *dp) {
........
}

int delete(keyType a_key) {
........
}

void printAllData(void) {
nodeType *p=head;
  while(p!=NULL){
  printkey(p);
  printf(",");
  p=p->next;
  }
 printf("\n");
}

このプログラムの........の部分の順次探索の
search関数、insert関数、 delete関数をリストで書かないといけないのですが、
どのようなプログラムになるのか教えて下さい。
0672デフォルトの名無しさんNGNG
#include"list_appli_header.h"
#include"liststructure.h"
の中身は自分で想像しろってことかな?
0673デフォルトの名無しさんNGNG
list_appli_header.hとliststructure.hの中身もさらせよ。
0674デフォルトの名無しさんNGNG
>>670
>>588 と同じ課題?
0675デフォルトの名無しさんNGNG
593に聞け
0676デフォルトの名無しさんNGNG
すいませんでした。
list_appli_header.hとliststructure.hの中身は、

●list_appli_header.h
typedef int keyType ;

typedef struct {
keyType key ;
} dataType ;

typedef struct node {
dataType data ;
struct node *next ;
} nodeType ;

int less(keyType, keyType) ;
int equal(keyType, keyType) ;
keyType key(dataType *p) ;
keyType key2(nodeType *p) ;

void printKey(nodeType *p);
0677デフォルトの名無しさんNGNG
●liststructure.h
static nodeType *head ;

int init(void) ;
int insert(dataType *p) ;
nodeType* search(keyType) ;
int delete(keyType) ;
void printAllData(void) ;

です。
宜しくお願いします。
0678デフォルトの名無しさんNGNG
>>662
> Delete した構造体が "必ず" free するべき対象となるとは
> 限らないことは結構あるものです。

はぁ ?
だったら、なぜ Insert する構造体は必ず malloc() するんだ ?
free してない構造体は何に使うんだ ?

設計ミスの言い訳は見苦しいぞ。

(InsertWithoutMalloc() を作るとか言い出しそうだな...。(藁 )
0679デフォルトの名無しさんNGNG
次のプログラムをwhileを使い、かつ、ファイル名を標準入力、
データ数がいくつでも可能というように書き換えて

#include<iostream.h>
#include<fstream.h>
#include<map.h>

int main()
{
std::ifstream fin("in.txt");
std::map <int,int> intmap;
for(int i=0;i<5000;i++)
{
int val;
fin >> val;
intmap[val]++;
}
std::ofstream fout("out.txt");
for(std::map<int, int>::iterator it=intmap.begin();it!=intmap.end(); ++it)
{
fout << (*it).first << " " << (*it).second << std::endl;
}
return 0;
}
0680デフォルトの名無しさんNGNG
ファイル名を標準入力、
0681デフォルトの名無しさんNGNG
> #include<iostream.h>
> #include<fstream.h>
> #include<map.h>


    ぐはっ

0682初心者の名無しさんNGNG
> Delete した構造体が "必ず" free するべき対象となるとは
> 限らないことは結構あるものです。

全然思いつかないんだけど例えばどういうとき?
0683デフォルトの名無しさんNGNG
>>679は>>390に凄く頭悪そうなincludeを付け足したものですか?
0684デフォルトの名無しさんNGNG
つまり>>386==>>679ですか?
0685デフォルトの名無しさんNGNG
>>670
nodeType* search(keyType a_key) {
  nodeType* p = head;
  while (p != NULL) {
    if (p->data.key == a_key) break;
    p = p->next;
  }
  return p;
}

int insert(dataType *dp) {
  nodeType* node;
  if ((node = (nodeType*)malloc(sizeof(nodeType))) == NULL) return 0;
  node->data = *dp;
  node->next = NULL;
  if (head == NULL) {
    head = node;
  } else {
    nodeType* p = head;
    while (p->next != NULL) p = p->next;
    p->next = node;
  }
  return 1;
}
0686デフォルトの名無しさんNGNG
>>679
#include <iostream>
#include <fstream>
#include <map>
#include <string>
int main()
{
 std::string filename;
 std::map <int,int> intmap;
 while(1)
 {
  std::cin >> filename;
  if(std::cin.fail())
   break;
  std::ifstream fin(filename.c_str());
  std::map<int, int> intmap;
  for(;;)
  {
   int val;
   fin >> val;
   if(fin.fail())
    break;
   intmap[val]++;
  }
 }
 std::ofstream fout("out.txt");
 for(std::map<int, int>::iterator it=intmap.begin(); it!=intmap.end(); ++it)
 {
  fout << (*it).first << " " << (*it).second << std::endl;
 }
 return 0;
}
0687685NGNG
int delete(keyType a_key) {
  nodeType* node;
  if (head->data.key == a_key) {
    node = head;
    head = node->next;
    free(node);
    return 1;
  } else {
    nodeType* p = head;
    while (p->next != NULL) {
      if (p->next->data.key == a_key) {
        node = p->next;
        p->next = node->next;
        free(node);
        return 1;
      }
      p = p->next;
    }
  }
  return 0;
}
0688686NGNG
>>679へ >>686は1行間違ってるのでこっちで
#include <iostream>
#include <fstream>
#include <map>
#include <string>
int main()
{
 std::string filename;
 std::map <int,int> intmap;
 while(1)
 {
  std::cin >> filename;
  if(std::cin.fail())
   break;
  std::ifstream fin(filename.c_str());
  for(;;)
  {
   int val;
   fin >> val;
   if(fin.fail())
    break;
   intmap[val]++;
  }
 }
 std::ofstream fout("out.txt");
 for(std::map<int, int>::iterator it=intmap.begin(); it!=intmap.end(); ++it)
 {
  fout << (*it).first << " " << (*it).second << std::endl;
 }
 return 0;
}
0689デフォルトの名無しさんNGNG
無限ループ+breakキモイ

 std::map<int,int> intmap;
 std::string filename;
 while(std::cin >> filename)
 {
  std::ifstream fin(filename.c_str());
  int val;
  while(fin >> val)
  {
   intmap[val]++;
  }
 }
0690デフォルトの名無しさんNGNG
>>686
ありがとうございます。

クラスとか使わないでできないですかね?
0691デフォルトの名無しさんNGNG
>>690
出来るけどやる気無いから他の人にやってもらって
0692デフォルトの名無しさんNGNG
>>690
> クラスとか使わないでできないですかね?
意味わからん。
0693デフォルトの名無しさんNGNG
>>692
頭悪いな
0694デフォルトの名無しさんNGNG
>>693
意味わかったの?おしえて。
「クラスとか」ってやつを具体的にしてもらえれば分かるような気はするんだ。
0695デフォルトの名無しさんNGNG
>>694
ifstreamはbasic_ifstreamのtypedefでbasic_ifstreamはクラスだよ。分かる?
ofstreamはbasic_ofstreamのtypedefでbasic_ofstreamはクラスだよ。分かる?
0696デフォルトの名無しさんNGNG
さすが宿題スレだな。精神年齢が低い香具師ばかり。
0697デフォルトの名無しさんNGNG
>>695
それはわかります。
streamクラスを使わないとして、FILE*は使っていいってことですかね?

stringもmapもクラスです。
stringのほうはchar*でいけそうだけど、
mapのほうは構造体を使わないとムリなんじゃないですか?

あ、もしかして、
int intmap[INT_MAX];ですか?
0698デフォルトの名無しさんNGNG
さすが宿題スレだな。精神年齢が低い香具師ばかり。
0699デフォルトの名無しさんNGNG
>>697
int* mapindex;
int* mapvalue;
0700デフォルトの名無しさんNGNG
ええ、>>698を筆頭にね。
0701デフォルトの名無しさんNGNG
mapのほうは構造体を使わないとムリなんじゃないですか?
mapのほうは構造体を使わないとムリなんじゃないですか?
mapのほうは構造体を使わないとムリなんじゃないですか?

int intmap[INT_MAX];int intmap[INT_MAX];int intmap[INT_MAX];
0702697NGNG
                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎
0703デフォルトの名無しさんNGNG
やはり >>1 が宿題やらないのがムカツク
0704デフォルトの名無しさんNGNG
>679用に
下のプログラムを書いたんだけどエラーでちゃったどう書き直せばいいの?
main( int argc, char *argv[])
{
int dat[1];
int i, ii;
int time;
int G=[200000];
if(argc!=2)
{
printf("<execute file> <input filename>\n");
exit(1);
}
if( argc < 2)
{
cerr << "You must specify a filename" << endl;
exit(1);
}
ifstream fin(argv[1]);
while(1)
{
fin >> dat[0];
if(!fin.eof())
break;
for(time=0; time < 100000;time++)
{
if(dat[0]==time)
G[time]++;
}
cout << dat[0] << setw(4) << G[time] << endl;
}
}
0705デフォルトの名無しさんNGNG
>>704
ifstreamは使っちゃ駄目なんじゃないの?
0706デフォルトの名無しさんNGNG
ifstream fin(argv[1]);
0707デフォルトの名無しさんNGNG
関係ないがdat[1]って何?
0708デフォルトの名無しさんNGNG
int G=[200000];
0709デフォルトの名無しさんNGNG
ワラタ
0710デフォルトの名無しさんNGNG
>>707
dat[1]と書けばdat=3;などとやってしまったときにエラーにしてくれる。
0711697NGNG
みなさんにヒントをいただいたおかげで、できました。
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <algorithm>
int main()
{
 using namespace std;
 size_t mapsize = 0;
 int* mapindex = 0;
 int* mapvalue = 0;
 size_t filenamecapacity = 1;
 char* filename = static_cast< char* >( malloc( filenamecapacity ) );
 if( filename == 0 ) abort();
0712697NGNG
 for(;;)
 {
  size_t filenamesize = 0;
  for(;;)
  {
   int c = getchar();
   if( c == EOF )
    goto END_OF_INPUT;
   else if( c == ' ' || c == '\n' || c == '\t' )
    c = '\0';
   if( filenamecapacity <= filenamesize )
   {
    size_t n = filenamecapacity * 2;
    filename = static_cast< char* >( realloc( filename , n ) );
    if( filename == 0 ) abort();
    filenamecapacity = n;
   }
   filename[ filenamesize++ ] = c;
   if( c == '\0' ) break;
  }
0713697NGNG
  FILE* const in = fopen( filename , "r" );
  if( in != 0 )
  {
   size_t const bufsize = std::numeric_limits< int >::digits10 + 1;
   char buf[ bufsize ];
   for(;;)
   {
    size_t read = 0;
    for(;;)
    {
     int c = fgetc( in );
     if( c == EOF )
      goto END_OF_FILE;
     else if( c == ' ' || c == '\n' || c == '\t' )
      c = '\0';
     if( read < bufsize )
     {
      buf[ read ] = ( read < bufsize - 1 ) ? c : '\0';
      ++read;
     }
     if( c == '\0' ) break;
    }
    if( read == 0 || bufsize < read ) goto END_OF_FILE;
0714697NGNG
    char* endptr;
    long val = strtol( buf , &endptr , 0 );
    if( *endptr != '\0'
     || val < std::numeric_limits< int >::min()
     || std::numeric_limits< int >::max() < val )
     goto END_OF_FILE;
    size_t pos = distance( mapindex , lower_bound( mapindex , mapindex + mapsize , val ) );
    if( pos == mapsize || mapindex[pos] != val )
    {
     size_t n = mapsize + 1;
     mapindex = static_cast< int* >( realloc( mapindex , sizeof( int ) * n ) );
     mapvalue = static_cast< int* >( realloc( mapvalue , sizeof( int ) * n ) );
     if( mapindex == 0 || mapvalue == 0 ) abort();
     copy_backward( mapindex + pos , mapindex + mapsize , mapindex + n );
     mapindex[ pos ] = val;
     copy_backward( mapvalue + pos , mapvalue + mapsize , mapvalue + n );
     mapvalue[ pos ] = 0;
     mapsize = n;
    }
    ++mapvalue[ pos ];
   }
  END_OF_FILE:
   fclose( in );
  }
0715697NGNG
 }
END_OF_INPUT:
 free( filename );
 FILE* const out = fopen( "out.txt" , "w" );
 if( out != 0 )
 {
  for( size_t i = 0 ; i < mapsize ; ++i )
   fprintf( out , "%d %d\n" , mapindex[ i ] , mapvalue[ i ] );
  fclose( out );
 }
 free( mapindex );
 free( mapvalue );
}

はぁ。C++標準ライブラリは偉大だなぁ。
0716デフォルトの名無しさんNGNG
p=realloc(p,n);

こういう書き方をしちゃいけないと何度言ったら(ry
宿題だから許されるんだろうけど
0717デフォルトの名無しさんNGNG
>704を書き直せ!!!!
0718デフォルトの名無しさんNGNG
FILE* const out = fopen( "out.txt" , "w" );
FILE使ってるけどいいの?
システムコール使えよ。
0719デフォルトの名無しさんNGNG
>>718
はぁ?死ね。
0720デフォルトの名無しさんNGNG
>>719
>>697
0721697NGNG
やっぱりFILEもダメだったのかよ。先に言ってくれよな。
0722デフォルトの名無しさんNGNG
numeric_limitsとかクラスだろ。
0723697NGNG
あぁ・・・
0724デフォルトの名無しさんNGNG
>>685
どうもありがとうございました。
0725デフォルトの名無しさんNGNG
#include <stdio.h>
#define N 128
void defvec(double [N]);
int N;
double A[N];
void defvec(double A[N]){
void main(){
double k,d;
double A[N];
double B[N];
int i;
defvec(A);
defvec(B);
k=0;
for(i=0;i<N;i++)
k=k+(A[i]-B[i])*(A[i]-B[i])
d=sqrt(k);
double distance(double A(N),double B(N));
return (d);
}
これではしらないのですが、どこがおかしいのでしょうか?
おながいします。
0726デフォルトの名無しさんNGNG
>>725
はぁ ?

> #define N 128
> int N;

そもそもコンパイルできるとも思えないんだが。
0727725NGNG
>>726
そうですね・・・すいません。

>double k,d;
ってのは合ってるんですかね?
0728__NGNG
  (●´ー`●)/ <先生!こんなのがありました!
http://www.yoshiwara.susukino.com/moe/hankaku08.html
http://yoshiwara.susukino.com/zenkaku/
http://yoshiwara.susukino.com/moe/hankaku10.html
http://www.yoshiwara.susukino.com/moe/hankaku03.html
http://yoshiwara.susukino.com/moe/hankaku09.html
http://www.yoshiwara.susukino.com/moe/hankaku06.html
http://yoshiwara.susukino.com/moe/hankaku05.html
http://www.yoshiwara.susukino.com/moe/hankaku01.html
http://yoshiwara.susukino.com/moe/hankaku02.html
http://www.yoshiwara.susukino.com/moe/hankaku08.html
http://yoshiwara.susukino.com/moe/hankaku04.html
0729デフォルトの名無しさんNGNG
>>725

パッと見あやしいのは
726が言ってた場所と
double distance(double A(N),double B(N)); ←ここ

0730デフォルトの名無しさんNGNG
>>727
なんでint N;がエラーになるかわかっている?
0731725NGNG
>>730
分からないです・・・教えてください。
0732デフォルトの名無しさんNGNG
void defvec(double A[N]){

何も問題ないけど、普通はdouble A[]と書くかdouble *Aと書く。
0733デフォルトの名無しさんNGNG
>>725
何する(したい)プログラム?
0734デフォルトの名無しさんNGNG
>>731
#define N 128ってやっているでしょ。こうすると以降のNは(undefされるまで)全て128に置き換えられるの。
つまりint 128;となるわけ。変数名(識別子)の先頭は英字かアンダーバーしか使えないから。
0735725NGNG
>>733
1:実数要素N個からなるベクトルAを定義する関数defvecを作る。
2:次にdefvec関数を2回呼び出しA,Bを定義するmain関数を作る。
3:そのmain関数のなかでベクトルA,B間の距離を計算する。
4:次にこの距離の計算部を関数にする。
 という問題なんですが。
0736731NGNG
>>734
なるほど!ありがとうございます。
0737デフォルトの名無しさんNGNG
ベクトルわからないんですけど。vector?配列?とか思ってしまうんですけど。
泣きそうなんですけど。  ・・・ごめんなさい。
0738デフォルトの名無しさんNGNG
これはmallocで確保しろとか言われた?
構造体でするとか・・・。
0739デフォルトの名無しさんNGNG
>>738
特には言われなかった気がします。
0740デフォルトの名無しさんNGNG
http://www.yahoo2003.com/betu/linkvp2/linkvp.html
0741デフォルトの名無しさんNGNG
>実数要素N個からなるベクトル
ってところでわけわかめ

単に2点間の距離を求めるということとは違うんだよね?
0742bloomNGNG
http://homepage.mac.com/ayaya16/
0743デフォルトの名無しさんNGNG
違うかもしれないけど
要はN次元での2点間の距離を求める問題とは違うのん?
0744デフォルトの名無しさんNGNG
>725のプログラムめちゃくちゃすぎ!
0745デフォルトの名無しさんNGNG
defvecが何をすればいいのか解らないんだよね。
領域を確保するだけでいいのか、
確保して値もstdinとかから読み込むのか、
main内で配列として持っておいて値を入れるだけなのか。
0746デフォルトの名無しさんNGNG
とりあえず。
defvec関数は何を入れたらいいのか分らんから、とりあえず0で埋めた。

#define N 128

void defvec(double A[]){
int i;
for(i=0; i<N; i++)
A[i]=0;
}
double distance(double A[],double B[]){
int i;
double k=0;
for(i=0;i<N;i++)
k+=(A[i]-B[i])*(A[i]-B[i]);
return sqrt(k);
}
int main(){
double A[N];
double B[N];
defvec(A);
defvec(B);

printf("%f\n",distance(A,B));
return 0;
}
0747デフォルトの名無しさんNGNG
すいません。わたし自身がどうしていいのか理解できてません・・・
>735しか言われなかったもので。
0748デフォルトの名無しさんNGNG
言い換えれば、その仕様さえ満たしていればどう作ろうが出題者は文句を言えないわけか。
0749デフォルトの名無しさんNGNG
N次元ベクトルの各要素を配列に入れなさいってことではないかと思ふ
0750デフォルトの名無しさんNGNG
あぁその値がどこから来るのかが不明なわけか…
0751あふぉNGNG
xのn乗を求めるプログラムを教えて下さい。
2進数表示を利用する奴です
0752デフォルトの名無しさんNGNG
オレニマカセロ!
07537NGNG
文字列sを逆順にして出力する関数void reverse(char s[])を作成しなさい。
ヒント:関数strenを用いてあらかじめ文字列sの長さを測ると容易。
お願いします
0754デフォルトの名無しさんNGNG
#include <algorithm>
#include <stdlib.h>
#include <iostream>
void reverse(char s[])
{
 std::reverse(&s[0], &s[strlen(s)+1]);
std::cout << s << std::endl;
}
0755デフォルトの名無しさんNGNG
オレニマカセロ!

>>751
int power(int x, int n) {
int r = 1;
for (; n; n>>=1, x*=x)
if (n&1) r *= x;
return r;
}
0756デフォルトの名無しさんNGNG
void reverse(char s[]) {
char *t = s + strlen(s) - 1;
for (; s < t; s++, t--) {
char tmp = *s;
*s = *t;
*t = tmp;
}
}
0757あふぉNGNG
ありがとん!!
0758動画直リンNGNG
http://homepage.mac.com/hitomi18/
0759デフォルトの名無しさんNGNG
>>755
符号付きのものを右シフトして、0になることを期待するなよ。
0760デフォルトの名無しさんNGNG
ごめん。
if (n < 0) return 0;
とかいれて、はじいといて。
0761デフォルトの名無しさんNGNG
みんなー、ちんぷんかんぷんなオラに力を貸してくれ

Cなんですけど

int 型の配列 a[MAX] (MAX は 10〜100000 の間で適当に動かしてみる) に,昇順で整数を代入しておく.
配列 a[MAX] に代入される整数は,1,3,9,12 などのように飛び飛びでもよく,また,8,10,10,10,14 などのように同じ値が連続してもよいとする.
以下の仕様に従って,a[l]〜a[r] (l ≦ r) の中に値 k が存在するならばその位置を返す再帰関数 int binary_search(int a[], int k, int l, int r) を作成し,プログラムと実行結果を示せ.

 関数 int binary_search(int a[], int k, int l, int r) は,a[l]〜a[r] (l ≦ r) の中に値 k が存在するならばその位置を返す.

 a[l]〜a[r] (l ≦ r) の中に値 k が存在しない時は,関数 int binary_search(int a[], int k, int l, int r) は -1 を返す.

 関数 int binary_search(int a[], int k, int l, int r) は,以下のような再帰関数とせよ:

  a[l] == k ならば,l を返す.

  a[l] < k ≦ a[(l + r) / 2] ならば,binary_search(a, k, l, (l + r) / 2) を再帰的に呼び出しその値を返す

  a[(l + r) / 2] < k ≦ a[r] ならば,binary_search(a, k, ((l + r) / 2) + 1, r) を再帰的に呼び出しその値を返す.

  それ以外の場合,-1 を返す.

比較的小さな MAX に対しては,計算の過程において関数 int binary_search(a, k, i, j) (0 ≦ i < MAX, 0 ≦ j < MAX) がどのように呼び出され,どのような値を返したのかを,printf などを用いて画面に出力すること.
また,MAX を 10〜100000 の間で適当に動かして

 関数 binary_search(a, k, i, j) (0 ≦ i < MAX, 0 ≦ j < MAX) が呼び出された回数

 関数 binary_search(a, k, i, j) の中で k と配列の要素が大小比較された回数

がどのように変化するかについて考察すること (大ざっぱなオーダーだけではなく,係数・定数の値まで見積ること).

って宿題があるんですが、さっぱりわからないのでお願いします。
0762デフォルトの名無しさんNGNG
ホントにさっぱり判らないならここで聞くだけ無駄だ。あきらめろ。
0763デフォルトの名無しさんNGNG
(゚∀゚)シープラプラ!!
0764デフォルトの名無しさんNGNG
>>761
>大ざっぱなオーダーだけではなく,係数・定数の値まで見積ること

無茶言うなよ・・・
0765デフォルトの名無しさんNGNG
川合堂ライセンス(´_ゝ`)
0766デフォルトの名無しさんNGNG
学校で情報処理やっているから、良スレ発見。
0767488NGNG
非常に亀レスすいません。突然ネットワークに接続できなくなったので...

>>491
ありがとうございます。その通りです。
ただ、C++じゃなくてCのソースが欲しいです。
最初に書かなかった私が悪いんですが、勉強のため、よろしくお願いします。
0768デフォルトの名無しさんNGNG
>>767
cinとcoutをそれぞれstdinからの入力とstdoutへの出力に置き換えるだけじゃん。
自力で何とかしなさいよ。
0769488NGNG
>>768
すいません。Cしか使ったことないんで...
調べたんですけど、良くわからなくて...
もうちょっと調べてみます。
0770デフォルト名無しさんNGNG
Sample:
最初の #: 1(scanf)
次の #:   3(scanf)
三番目の #:  4(scanf)

最初の2つの#を入力してください:  1 3 (scanf)

最初の#は1、次は3、 三番目は 4ですね? (printf)

というプログラム。(ノードを使って)
0771デフォルトの名無しさんNGNG
ノードって何?
0772動画直リンNGNG
http://homepage.mac.com/hitomi18/
0773デフォルトの名無しさんNGNG
>>761
とりあえずbinary_searchは書けるだろ。
0774デフォルトの名無しさんNGNG
>>767
ちゃんと書いてるから気にするな。
このスレは「C」って言われてもC++で書く、字の読めない馬鹿がいるだけだ。
0775デフォルトの名無しさんNGNG
>>771
リスト構造のことじゃねーの?
0776デフォルトの名無しさんNGNG
>>770を読んでも意味がわからないんですけど。
0777デフォルトの名無しさんNGNG
>>770
ニホンゴワカリマスカ?
0778デフォルトの名無しさんNGNG
ワーカリーマセーン
0779デフォルトの名無しさんNGNG
>>488 処理系に依存する。
0780デフォルトの名無しさんNGNG
>>779
どこが?ビープ音? それは処理系というか他の環境によるのでは。
0781デフォルトの名無しさんNGNG
>>779>>780
timeとclockの事では?winでは暦時間、プロセス時間だけど、unix?何かでは
違うらしいです。
0782デフォルトの名無しさんNGNG
>>781
clockはANSI Cにあるだろ。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/clock.3.html
0783デフォルトの名無しさんNGNG
2分木探索のdelete関数のプログラムを
ポインタのポインタを使って書かなければいけないのですが、
どのようなプログラムになるか教えて下さい。
お願いします。

0784デフォルトの名無しさんNGNG
>>782
僕のパソコン(winMe)だとミリ秒を返してくれるのですが、返してくれない機種も
あると言われたことがありました。
0785デフォルトの名無しさんNGNG
>>784
CLOCKS_PER_SECで割ればいいだけ。
まあ実時間であるとは限らないからだめと言う人もいるかもしれないけど。
0786デフォルトの名無しさんNGNG
>>784
CLOCKS_PER_SECで割るんだけど。馬鹿?
0787デフォルトの名無しさんNGNG
相乗平均を求めるプログラムってどうすればいいのですか?
二つの時はルート取ればいいのですが
三つ以上になるとどうすればいいのかわかりません。
0788デフォルトの名無しさんNGNG
>>787
#include <math.h>
double
geometric_mean(double *a, int n)
{
int i;
double x = 0.0;

for(i=0; i<n; i++) x += log(a[i]);
return exp(x/n);
}
0789デフォルトの名無しさんNGNG
>>785>>786
1000/1秒を返す機種ならCLOCKS_PER_SECが1000になり
100/1秒を返す機種なら100になり、割ることで結果的に秒単位の
プロセス時間を得れるって事?
0790デフォルトの名無しさんNGNG
>>789
標準C ttp://www-ccs.ucsd.edu/c/
0791デフォルトの名無しさんNGNG
>>788
ありがとうございます。そっかlogから考えれば良いのか。
0792568NGNG
>568です。遅くなりましてすみません。
レスくださった方、有り難うございます

>568とほとんど同じなのですが…、
まず50個のデータ(数字)を入力し、昇順に並べ替える。
そのなかに好きな数字を入れる。そして、その数字がどこにあるのかを最初(1番目)から探し、
探している進行状況を表示するプログラムを作成せよ。
(例えば、好きな数字25を入力した場合、まず1番目を検索し、25でなければ「1 NG」と表示。
2番目を検索し、25でなければ「2 NG」と表示…… と続いて、x番目にあれば「x OK」と表示。」

C言語です。プログラムよろしくお願いしますm(__)m
0793デフォルトの名無しさんNGNG
>>792
それは二分探索を使わなければならないの?
0794デフォルトの名無しさんNGNG
>>792
>>573を改造すればいいだろ?
0795568NGNG
>>793
二分探索は使用しても、しなくてもどちらでも良いですm(__)m

>>794
すみません。さっぱりわからないんです。
0796デフォルトの名無しさんNGNG
>>795

#include <stdio.h>
#include <stdlib.h>

static int icmp(const void *,const void *);

int main()
{
int ia[50],i,search;

for(i=0;i<50;i++){
printf("%2d個目のデータ : ",i+1); fflush(stdout);
scanf("%d",ia+i);
}
qsort(ia,50,sizeof(int),icmp);
printf("\n\n探索する数字 : "); fflush(stdout);
scanf("%d",&search);
for(i=0;i<50;i++){
if(ia[i]==search){
printf("%2d OK\n",i+1);
return 0;
}
printf("%2d NG\n",i+1);
}

return 0;
}
0797つづきNGNG

static int icmp(const void *x,const void *y)
{
const int *xp=(const int *)x;
const int *yp=(const int *)y;

return *xp==*yp?0:*xp<*yp?-1:1;
}
0798798NGNG
文字列sを逆順にして出力する関数void reverse(char s[])を作成しなさい。
ヒント:関数strenを用いてあらかじめ文字列sの長さを測ると容易。

お願いします
0799デフォルトの名無しさんNGNG
>>798

#include <stdio.h>
#include <string.h>

void reverse(char s[])
{
int i;
for(i=strlen(s)-1;i>=0;i--)
putchar(s[i]);
}
0800デフォルトの名無しさんNGNG
>>799
strenを使うんだろ。
strlenではないかと思われ

int stren(char *s)
{ return strlen(s); }
を使うべし
0801デフォルトの名無しさんNGNG
>>800
#define stren(x) strlen(x)でいいだろ。
0802デフォルトの名無しさんNGNG
マクロ関数とはかいてねーからさ
0803デフォルトの名無しさんNGNG
>>802
うるせー馬鹿!

ところで、戻り値の型はsize_tにしたほうがいいと思う。
0804デフォルトの名無しさんNGNG
size_t (*stren)(const char *)=strlen;

stren(s);
0805デフォルトの名無しさんNGNG
>796
有り難うございました!
0806デフォルトの名無しさんNGNG
マクロ関数って聞いたことないな。
>>801で言ってるのは引数つきマクロなんだが、これのことか?
0807デフォルトの名無しさんNGNG
俺は関数風マクロと呼んでいるが何か?
0808デフォルトの名無しさんNGNG
引き数つきマクロの関数的用法と呼んでいるが何か?
0809デフォルトの名無しさんNGNG
マクロって読んでますが何か?
0810正直、「>>761=>>795=いい加減うぜぇ」と思ってたNGNG
>>761
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 100000
int compare(const void*, const void*);
int binary_search(int*, int, int, int);
int main(void) {
static int a[MAX]; int i, n;
srand( (unsigned int)time(NULL) );
for (i=0 ;i < MAX; i++) { a[i] = rand(); }
qsort((void*)a, (size_t)MAX, sizeof(int), compare);
printf("Input:"); scanf("%d", &n);
if ( binary_search(a, n, 0, MAX-1) == -1) printf("not found\n");
}
int compare(const void* left, const void* right) {
return (*(int*)left == *(int*)right)? 0 : (*(int*)left < *(int*)right)? -1 : 1;
}
int binary_search(int* a, int k, int l, int r) {
static int ct=1;
if (a[l] == k) { printf("%d OK\n", ct); return l; }
if ( (a[l] < k)&&(k <= a[(l+r)/2]) ) { printf("%d NG\n", ct++); return binary_search(a, k, l, (l+r)/2); }
if ( (a[(l+r)/2] < k)&&(k <= a[r]) ) { printf("%d NG\n", ct++); return binary_search(a, k, (l+r)/2+1, r); }
return -1;
}
0811デフォルトの名無しさんNGNG
>>810
お前の冗長なコードもなー
int compare(const void* left, const void* right) {
return (int*)left-(int*)right;
}
0812デフォルトの名無しさんNGNG
>>811
よく確認しないで書いてしまうおまえもなー
int compare(const void* left, const void* right) {
return *(int*)left-*(int*)right;
}
0813デフォルトの名無しさんNGNG
Cの宿題で、与えられた年が閏年か判定するプログラムを作れってのが出たんだが
関数uru_year()は整数型の引数をもらい、閏年なら1、違ったら0を返すらしいんだが
if文でやるぐらいしかワカンネ。
こんな簡単なのもわからん漏れに誰か教えてくれ。
0814デフォルトの名無しさんNGNG
uru_yearの中でifを使えばイーンジャネーノ?
0815813NGNG
>>814
整数型の引数をもらうところがわからん。
0816デフォルトの名無しさんNGNG
bool leap_year(unsigned int year){
 if(yeaar>西暦何年だが忘れた)
  return (year % 4!=0)?false:((year%100!=0)?false:*));
 else{
  printf("当時は閏年という概念は無かった\n");
  exit(-1);
 }
}
*は普通はtrue,しかし厳密には更に(year%うんたらかんたら!=0)?false:...
が続く。(ほぼ無限)
0817デフォルトの名無しさんNGNG
キーワード「閏年 判定」
上から5件目

だからなぁ、ぐぐれよ・・・
0818デフォルトの名無しさんNGNG
(ぼそっ)おいおい、西暦指定間違えただけでプログラム停止かよ……
ずいぶんユーザーに厳しいな
0819デフォルトの名無しさんNGNG
int uru_year(int year);
/* yearは現行西暦を仮定 */
int uru_year(int year)
{
 if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
  return 1;
 }
 return 0;
}
0820デフォルトの名無しさんNGNG
>>818
それ以前に間違ってるんだからどうでもいいじゃん。
0821デフォルトの名無しさんNGNG
>>820
ま、確かに。
0822デフォルトの名無しさんNGNG
>>821
そりゃ2chなんだから、falseとtrueが入れ替わることは
大いにあり得るな。ビットにして1ビットしか違わないんだし...
0823デフォルトの名無しさんNGNG
いやいや、bool型なんてものはANSIのC言語には存在しないでしょ?
yeearなんて未定義の変数を使ってみたり、、、

普通は>>819さんのプログラムで正解と思われ。
エラー処理も必要(?)なんだが。
0824わかNGNG
不況に負けていませんか?インターネットでお金を稼いで
人生をバラ色にして、年商1000万円ほど稼ぎませんか?
ただし、多少の営業努力が必要です。ノルマ無し、料金回収無し
クーポン屋 「2003年」
営業が得意な方は、年商1000万円稼げます。
私と仲良くビジネスをしませんか?
http://www.c-gmf.com/index1.htm
http://www.c-gmf.com/index2.htm
http://www.c-gmf.com/index3.htm
http://www.c-gmf.com/mail.htm
クーポン屋でございます。貴方のHPにバナーを貼るだけで
稼げます。本当にお金が欲しい方は、相談にのります。キャッシュバック制度!
0825デフォルトの名無しさんNGNG
>>823
おまえもエラーだな
○yeaar
×yeear
0826デフォルトの名無しさんNGNG
もう、いやーーーーーー
0827デフォルトの名無しさんNGNG
>>819 勝俣のところ、括弧もう一個いらなかったけ?
0828デフォルトの名無しさんNGNG
>>823
あなたの頭はどんな石で出来てますか?もしかしてコンパイラさんでっか?
0829デフォルトの名無しさんNGNG
>>828
プ
0830デフォルトの名無しさんNGNG
C言語でお願いします。

長さが32の0と1の列
se7e6…e1e0d1d2d3…d23
を入力してこのビット列の表す実数値

(-1)^s*(1+M)*2^E if -127<E<128
(-1)^s*M*2^(E+1) if E=-127
Inf(無限大) if E=128,M=0
NaN(非数) if E=128,M≠0
ここで、M=琶=1~23 di*2^-i , E=琶=0~7 ei*2^i−127

を出力するCプログラムを作成せよ。
0831デフォルトの名無しさんNGNG
>>830
問題が理解できない
0832デフォルトの名無しさんNGNG
馬鹿
0833デフォルトの名無しさんNGNG
>>830
float
str2float(char *str)
{
  union strflo {unsigned int u; float f;} x; x.u = 0;
  while (*str != '\0'){x.u <<= 1; x.u |= *str++ == '1' ? 1 : 0;}
  return x.f;
}

#include <stdio.h>
int
main(int argc, char **argv)
{
  if (argc < 2 || strlen(argv[1]) != 32) return 1;
  printf("%.8e\n", str2float(argv[1]));
  return 0;
}
0834デフォルトの名無しさんNGNG
>>833
ついでに、文字列のチェックも入れといて
0835デフォルトの名無しさんNGNG
>長さが32の0と1の列
>se7e6…e1e0d1d2d3…d23

0と1の列とか言ってるけど、例はそうなってないし、ようわからんね。

0836デフォルトの名無しさんNGNG
ああ、わかった。
つまり、たとえば以下のbit列を、
0 1  0  1011010101001001
~ ~  ~  ~
S e7 e6 e5...
とするって事か。
0837デフォルトの名無しさんNGNG
>>833
intとfloatは同じ大きさなの?
0838デフォルトの名無しさんNGNG
>>837
C言語では定義されていないInfやらNaNが指定されている時点で可搬ではない。
0839デフォルトの名無しさんNGNG
>>838
ん?
0840デフォルトの名無しさんNGNG
void main(void)
{
char x='A';
int a=5,b=32;
printf("�@",x);
printf("%d+%d=(�A)x\n",�B)
printf("%d�C%d=%d\n",�D);
printf("変数%cの初期値は%dです\n",x+�E,a);
}
実行結果
変数xの初期値はAです
5+32=(0025)x
32%5=2
変数aの初期値は5です
�Eの答えがわかりません
0841デフォルトの名無しさんNGNG
>>840

(-x)+'a'
0842デフォルトの名無しさんNGNG
>>840
bなんだろうけど、>>841 にすべきだね。
0843840NGNG
なるほど。ありがとうごさいます
0844デフォルトの名無しさんNGNG
VCでapiのpeekmessage()を使って押された、
キーコードを2文字以上を、
同時に取れる事で出来るんですか?
また方法を教えていただけますでしょうか?
0845デフォルトの名無しさんNGNG
ある乱数を発生させてそれぞれに条件式をつけるにはどうすればいいですか?
例
乱数で1から100までの数字を発生させて
1〜40ならA
41〜50ならB
50〜99ならC
100ならD
といったような具合に場合分けしたいときって どうすればいいんですかね?
1<X<40
こういった条件式をプログラム上で行いたいんだけど
良いほうが思いつかないもので

初心者的な質問ですんません
C言語限定ってわけではないけどアルゴリズムが知りたいので書きました
良かったら 教えてください


0846デフォルトの名無しさんNGNG
>>845
あちこち同じカキコすんなや。
0847デフォルトの名無しさんNGNG
>>845
int r=ransuu;
if(r<=40){A();}elseif(r<=50){B();}elseif(r<=99){C();}elseif(r==100){D();}
0848デフォルトの名無しさんNGNG
お願いします。

「英文字を入力すると読み込んだ文字を 50 個横に並べて表示する」プログラムを作れ。

入力される文字は A 〜 Z で、1文字であると仮定して良い。たとえば、G を
入力すると、

GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

と表示されるようにする。

なお、入力された文字の検査(A 〜 Z以外の文字が入力されなかったかどうか、
1文字であるかどうかの検査)は行わなくて良い。

また、入力された文字が変数 moji に格納されている時、この文字を表示するには、

printf("入力された文字は %c です。\n", moji);

と書くことができることをヒントにしても良い。ただし、解答として、

printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c...

のように %c を 50 個並べることは禁止する。


0849デフォルトの名無しさんNGNG
>>848
void print50char(int c){int i;for(i=0;i<50;i++)printf("%c");printf("\n");}
0850デフォルトの名無しさんNGNG
>>845

x=(rand()/100)+1;
if (x >= 1 && x <= 40) {
} else if (x >= 41 && x <= 50) {
} else if (x >= 51 && x <= 99) {
} else if (x == 100) {
} else {
}
0851デフォルトの名無しさんNGNG
>>848

char buf[51];
memset(buf,getchar(),50);
buf[50]='\0';
puts(buf);
0852デフォルトの名無しさんNGNG
>>849,851
848はバカだから、scanfのところも書いておいてあげなきゃ
char moji; int i; scanf("%c",&moji); for (i=0;i<50;i++) printf("%c", moji);
0853デフォルトの名無しさんNGNG
>>848

#include <stdio.h>

int main(void)
{
  int i;
  char c;

  c=getchar();
  for (i=0; i<50; i++)
    printf("%c", c);
  printf("\n");

  return 0;
}
0854デフォルトの名無しさん NGNG
実行すると文章の行ごとに左右反対になるプログラムを
ファイル構造体を使って作成しなさい
asupugqaudga9という文だと9aduaqgupusaとなるようにしなさい
文章がはいってるのはahya.txtとします
(´・ω・`)?

0855デフォルトの名無しさんNGNG
ab
cd
は
ba   dc
dc か ba か
どっち?
0856デフォルトの名無しさんNGNG
>854
コンパイラを教えて
0857デフォルトの名無しさんNGNG
>>856
icl
0858デフォルトの名無しさんNGNG
お願いします

3ケタの数字でそれぞれのケタを3乗したものの和が
元の3ケタの数字と同じになるものを全て探すプログラムを作成しなさい。
0859854NGNG
asupugqaudga9という文だと9agduaqgupusadesaですた・・・
0860854NGNG
追記
./a.out ahya.txt result.txt と実行すると
ahya.txtの中のそれぞれの文章の行について左右反対にした
resulet.txtというファイルを作成するプログラムでつ
(´・ω・`)わかりにくかったね・・・
0861初心者の名無しさんNGNG
>>858
if (pow(100の位 , 3) + pow(10の位 , 3) + pow(1の位, 3) == 元の数)
{
同じでした
}
0862デフォルトの名無しさんNGNG
#include <stdio.h>
main(){
int dat,a[3];
scanf("%d",&dat);
a[0]=dat%10;dat/=10;
a[1]=dat%10;dat/=10;
a[2]=dat%10;/*datだけも良いかな*/
if((a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==dat)
printf("%d",dat);
return 0;
}
0863デフォルトの名無しさんNGNG
>>858
#include <stdio.h>
int main()
{
  int i, j, k;
  int cube[10];
  int value100, value10, value;
  int sum100, sum10, sum;
  
  for (i = 0; i < 10; i++) cube[i] = i * i * i;
  for (i = 1; i < 10; i++) {
    value100 = i * 100;
    sum100 = cube[i];
    for (j = 0; j < 10; j++) {
      value10 = value100 + j * 10;
      sum10 = sum100 + cube[j];
      for (k = 0; k < 10; k++) {
        value = value10 + k;
        sum = sum10 + cube[k];
        if (value == sum) {
          printf("%d = %d + %d + %d\n", value, cube[i], cube[j], cube[k]);
        }
      }
    }
  }
  return 0;
}
0864デフォルトの名無しさんNGNG
#include <stdio.h>
main(){
int data,dat,a[3];
for(data=100; data<1000; data++){
dat=data;
a[0]=dat%10;dat/=10;
a[1]=dat%10;dat/=10;
a[2]=dat%10;/*datだけも良いかな*/
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==data)
printf("%d ",data);
}
return 0;
}
0865デフォルトの名無しさんNGNG
4つでしょ?
0866デフォルトの名無しさんNGNG
void reverseoutput(char *s, FILE *outfp)
{
    int i;
    for (i = strlen(s) - 1; i >= 0; i--)
        putc(s[i], outfp);
}

int main(int argc, char **argv)
{
    FILE *infp = stdin, *outfp = stdout;
    char buf[256];

    switch (argc) {
    default:
    case 3:
        if ((outfp = fopen(argv[2], "w")) == NULL) {
            fprintf(stderr, "connot open file: %s", argv[2]); exit(1);
        }
    case 2:
        if ((infp = fopen(argv[1], "r")) == NULL) {
            fprintf(stderr, "connot open file: %s", argv[1]); exit(1);
        }
    case 1:
        break;
    }

    while (fgets(buf, sizeof(buf), infp))
        reverseoutput(buf, outfp);

    return 0;
}
0867デフォルトの名無しさんNGNG
What is >>866?
0868デフォルトの名無しさんNGNG
改行の取り扱いに難あり。
0869デフォルトの名無しさんNGNG
文字列を扱うための2つの変数string1とstring2をつぎのように初期化する。
この初期化の仕方は何が違うのか詳細に述べよ。
メモリ上で文字列を格納する領域の取り方に注意。
それぞれの変数に適した使い方についても考えてみること。
char string1[]="Good morning";
char *string2="Good night";

↑ってのが課題ででました。
ちんぷんかんぷんです。教えてください。
0870デフォルトの名無しさんNGNG
Cの仕様書見れ。
0871デフォルトの名無しさんNGNG
紀元後の任意の年、任意の月のカレンダーを表示する
プログラム組んでちょんまげ。
0872デフォルトの名無しさんNGNG
>>869
ttp://www.catnet.ne.jp/kouno/c_faq/c6.html#0
0873デフォルトの名無しさんNGNG
>>871
国は?
グレゴリオ暦の採用時期がそれによって大きく異なるのだが。
0874デフォルトの名無しさんNGNG
>>871
http://www.linux.or.jp/JM/html/util-linux/man1/cal.1.html
を呼び出せ!
0875871NGNG
日本です!
0876デフォルトの名無しさんNGNG
ってことは、紀元ってのは西暦紀元じゃなくて紀元節の方か?
誰がそんなもん作るってのよ。
0877デフォルトの名無しさんNGNG
>>876
まぁ、660を引くんだか足すんだかすればいいわけだし。
ちなみに、皇紀という呼称のほうが好きだ。
0878デフォルトの名無しさんNGNG
>>875
4000年分ぐらいのテーブルつくれ。先生もきっと許してくれる。
0879デフォルトの名無しさんNGNG
実行した日より一週間分の天気予報を表示するプログラムを作成せよ。
なお、あくまでも予想なのではずれてもよいものとする。

さっぱりわかりません(T_T)
0880デフォルトの名無しさんNGNG
>>879
地球シミュレータをクラックすれば、何とかなるんじゃないか。
まずは socket の使い方から学べ。
0881デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char w[] = {"晴","曇","雨"};
int i;
for(i=1;i<=7;i++)
printf("%d日後の天気は%sかも\n",i,w[rand()/(RAND_MAX/N+1)]);
return 0;
}
0882デフォルトの名無しさんNGNG
>>879
1.天気予報のページを探して、そのページをブラウザで表示するシェルなどを作る。
2.上記のページをパースして、その情報を任意の方法で表示する。
3.”晴れ”,”曇り”,”雨”などの天候文字列を乱数で選んで表示する。

1:学生ならば不正解。社会人なら大正解。
2:ヒマと興味があるならおすすめ
3:普通だね
0883デフォルトの名無しさんNGNG
>>871 間違っている所があるかも。
#include <stdio.h>
#include <stdlib.h>
int CheckUruuDosi(int year)
{if((year%4==0&&year%100!=0)||year%400==0)return 1;return 0;}
int main(void)
{
int a,i[2],y,m,d,w=0,u;char s[256];
const int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
for(a=0;a<=1;a++)
{puts(a==0?"year?":"month?");gets(s);i[a]=atoi(s);
if(i[a]<=0||(a==1&&i[a]>=13))a--;}
for(y=1;y<=i[0];y++)for(m=1,u=CheckUruuDosi(y);m<=(y==i[0]?i[1]-1:12);m++)
w=(w+day[m-1]+(u&&m==2?1:0))%7;
u=CheckUruuDosi(i[0])&&i[1]==2?1:0;
puts("\nSun Mon Tue Wed Tur Fri Sat");
for(d=0;d<=w;d++)printf("%4s","");
for(d=1;d<=day[m-1]+u;d++)
printf("%3d%s",d,(d+w+1)%7==0?"\n":" ");
printf("\n\n改行を押してください 終了します");getchar();return 0;
}
0884デフォルトの名無しさんNGNG
お願いします

inoue note 120
inoue envelope 80
inoue pencil 20
yamada note 120
yamada envelope 80
kawaguchi envelope 80
kawaguchi pencil 20
yamamoto note 100

という内容の、db.txtというファイルを用いて
品目、単価への射影を

note 120
envelope 80
pencil 20
note 100

のように出力させたいんです

射影とは関係表から属性を切り出し
もし重複があればそれを取り除いたものだそうです。
0885858NGNG
#include <stdio.h>
main(){
int data,dat,a[3];
for(data=100; data<1000; data++){
dat=data;
a[0]=dat%10;dat/=10;
a[1]=dat%10;dat/=10;
a[2]=dat%10;/*datだけも良いかな*/
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==data)
printf("%d ",data);
}
return 0;
}

で求める事ができました  協力頂いた皆様ありがとうございます

さらにここで見つけた解の個数も表示するにはどうすれば良いのですか。
結果は定数「4」でなく変数を用いて表すとするとどうなりますか、教えて下さい。お願いします。
0886__NGNG
  ∧_∧  
 ( ・∀・)/< こんなの有ったっち♪
http://www.yoshiwara.susukino.com/moe/hankaku03.html
http://yoshiwara.susukino.com/moe/hankaku10.html
http://www.yoshiwara.susukino.com/moe/hankaku08.html
http://yoshiwara.susukino.com/moe/hankaku09.html
http://www.yoshiwara.susukino.com/moe/hankaku06.html
http://yoshiwara.susukino.com/moe/hankaku05.html
http://www.yoshiwara.susukino.com/moe/hankaku01.html
http://yoshiwara.susukino.com/moe/hankaku02.html
http://www.yoshiwara.susukino.com/moe/hankaku08.html
http://yoshiwara.susukino.com/moe/hankaku04.html
0887デフォルトの名無しさんNGNG
if文の内でカウントすればええやろ
0888858NGNG
>>887
もうすこし詳しく教えて下さいませんか?
カウントすれって言われてもピンと来ない程度なので。。。
0889871NGNG
>>883
完璧でした!!まじありがとうございました。
0890デフォルトの名無しさんNGNG
まいったなあ、カウントすれがわからないってか。
if文の内に入った回数を数えましょう、ならわかるか?
0891デフォルトの名無しさんNGNG
>>890
ホントにわかんないです。。。
何使って書くのかさえわかんないです。。。
0892デフォルトの名無しさんNGNG
>>891
1ずつ数えるなら変数の値に1足してゆく。
0893デフォルトの名無しさんNGNG
(解の数)++って書けばよいのだと思うのですが、
解の数の表現方法がわかりません。。。

解というかif文に入った回数ですか?

あぁホント情けないです。。。
0894デフォルトの名無しさんNGNG
解の数は0から899を表現できる型ならなんでもいいでしょ。
普通はint型を選ぶよね。
int 解の数;で宣言して、if文の内で(解の数)++てやって
最後に表示すればいいでしょ。
0895デフォルトの名無しさんNGNG
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==data)
printf("%d\n",data);
printf("%d個です",i++);}

ってやってみたらメチャクチャたくさん表示されるのはどうしてでしょうか?
0896デフォルトの名無しさんNGNG
1. iは初期化してますか?
2. {}で囲まれていないif文の範囲はわかりますか?
0897デフォルトの名無しさんNGNG
>>858
#include <stdio.h>
int SZ(int num){return num*num*num;}
int main(void)
{
int num[3]={0};int a;
for(;num[2]<=9;)
{
if(num[2]*100+num[1]*10+num[0]==SZ(num[2])+SZ(num[1])+SZ(num[0]))
printf("%d%d%d ",num[2],num[1],num[0]);num[0]++;
for(a=0;a<=1;a++)if(num[a]==10){num[a]=0;num[a+1]++;}
}
puts("\n改行を押してください 終了します");return 0;
}
0898デフォルトの名無しさんNGNG
なるほど、わかりました。ありがとうございますです
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==data)
{printf("%d\n",data);
printf("%d個目\n",i++);}
初期化の後、こうして記述すると個数が表示できました。

この場合の実行結果は
(数字)1個目
(数字)2個目
・・・・・・・・・・・
となりました。

ここで結果として「何個あったか」のみを表示するためにはどこをいじれば良いのですか?
0899897NGNG
>>897
最後にgetchar()を付け忘れてました。
後、num[0]++が変な位置にありますが、前のifとは関係ありません。
0900デフォルトの名無しさんNGNG
>>898
i++はif文の内に残して、for文の外でprintfすれば良い
0901デフォルトの名無しさんNGNG
i++だけ残してっていうやり方が。。。 

うわぁ、、もう朝の準備せんと。。。 あとひといきお願いします!
0902デフォルトの名無しさんNGNG
if(a[0]*a[0]*a[0]+a[1]*a[1]*a[1]+a[2]*a[2]*a[2]==data)
{printf("%d\n",data);
i++;}
}
printf("%d個\n",i);
0903動画直リンNGNG
http://homepage.mac.com/hitomi18/
0904デフォルトの名無しさんNGNG
>>902
できました! 長々とありがとうございました!
0905デフォルトの名無しさんNGNG
インデントが気持ち悪いよぉ。

だから最初からifやwhileはブロックにしろと・・・
0906デフォルトの名無しさんNGNG
indent style
ttp://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?indent+style
0907こんぴゅーた-NGNG
ポインタ変数を使って作成しろって課題が出たんですが、
実行すると
文字列を入力してください:tokyo
反転文字列は"oykot"です.
ってなるようにプログラムを作成しなければならないのですが、
最近printfとかcharの使い方を最近になって理解したばっかなのに、
こんな課題出されてこまっております。
だれか救って下さい。ぼくはパソコンむいてないかも(*-*)
0908デフォルトの名無しさんNGNG
/* >>907 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int
main(int argc, char **argv)
{
  char buf[BUFSIZ];
  int n;

  fputs("文字列を入力してください:", stderr);
  fgets(buf, BUFSIZ, stdin);
  fputs("反転文字列は\"", stderr);
  for(n=strlen(buf)-1; n>0;) putc(buf[--n], stderr);
  fputs("\"です.\n", stderr);
  return 0;
}
0909こんぴゅーたーNGNG
ありがとうごザいます。
やってみます
0910デフォルトの名無しさんNGNG
>>908
末尾につくであろう改行文字を考慮しているんだろうけど、なんか・・ちょっと・・・
0911デフォルトの名無しさんNGNG
おまえら、Windowsでは改行は\r\nだぞ。
0912デフォルトの名無しさんNGNG
入出力関数がうまくやってくれる。
0913デフォルトの名無しさんNGNG
俺もたいした技術じゃないけど、配列に順に入れて
ケツから出せばいいだけでは?
0914デフォルトの名無しさんNGNG
>>913
>>908にはそう書いてあるようには見えないのか?
0915デフォルトの名無しさんNGNG
私は907ではないんですが
こういうソースを書いたら上手くいきませんでした
どこがおかしいのでしょうか?

#include <stdio.h>
#include <string.h>

int main(){
char *str,*str1;
int len,i;

puts("文字列を入力して下さい");
gets(str);
len=strlen(str);
for(i=0;i<=len-1;i++){
*(str1+i)=*(str+len-1-i);
}
printf("反転文字列は %sです",str1);
return 0;
}
0916デフォルトの名無しさんNGNG
>>915
コンパイラの警告は無視しないように。
str,str1が初期化されていないのに使われていると言われなかったか?
0917デフォルトの名無しさんNGNG
char str[1000],str1[1000];
0918デフォルトの名無しさんNGNG
while (1) {
if (a[i] == key)
break;
i++;
}

において、whileではなく、forを使うとどうなりますか?
0919デフォルトの名無しさんNGNG
for(; a[i] != key; i++);
0920デフォルトの名無しさんNGNG
for(;;) {
  if (a[i] == key)
    break;
  i++;
}
0921デフォルトの名無しさんNGNG
ファイル処理の問題で、30行ほどの英文が書かれたunix.txtを1行ずつ逆に表示したresult.txtを作るプログラムをお願いします。(例:I am が ma I と表示される)

下のソースを改造するようなのですが・・・。

#include <stdio.h>

void main (void)
{
unsigned char moji[10];
FILE *fp;

if ((fp = fopen ("unix.txt", "r")) == NULL)
{
printf(" FILE OPEN ERROR\n");
}
else
{
if(fgets (moji , 2, fp) !=NULL)
{
printf ("FILE ROAD OK\n");
printf ("READ DATA -> %s\n", moji);
}

else
{
printf ("FILE READ ERROR\n");
}

fclose (fp);
}
}
0922デフォルトの名無しさんNGNG
919さん、920さんありがとうございました。
こんな短いプログラムも書くことが出来ないなんてダメですよね。

ですが、もう1問だけ質問させてください。

要素数がnである配列aからkeyと一致する要素数の添え字を配列idxの先頭から
順に格納し、一致したよう素数を返す以下の関数を作成するという問題です。
272625という配列で2を指定すると3が導かれると言うものです。

int searchidx(int a[], int n, int key, int idx[]);

main関数は次の書き込みにします。
0923デフォルトの名無しさんNGNG
int main(void)
{
int i, ky, idx;
int x[7];
int nx = sizeof(x) / sizeof(x[0]);

printf("%d個の整数を入力してください。\n", nx);
for (i = 0; i < nx; i++) {
printf("x[%d]:", i);
scanf("%d", &x[i]);
}
printf("探す値:");
scanf("%d", &ky);

idx = search(x, nx, ky);/* 配列xから値がkyである要素を線形探索 */

if (idx == -1)
puts("探索に失敗しました。");
else
printf("%dは%d個あります。\n", ky, idx + 1);

return (0);
}
0924デフォルトの名無しさんNGNG
>>921
#include <stdio.h>
#include <algorithm>

void main (void)
{
unsigned char buf[32768];
FILE *fp;

if ((fp = fopen ("unix.txt", "r")) == NULL)
{
printf(" FILE OPEN ERROR\n");
}
else
{
while(fgets(buf , 32767, fp) !=NULL)
{
std::reverse(buf, buf + strlen(buf));
std::cout << buf << std::endl;
}

fclose (fp);
}
}
0925924NGNG
#include <string.h>
#include <iostream>

入れ忘れた
0926デフォルトの名無しさんNGNG
このスレだけでreverse問題は何問でてきたのか・・・・・
0927デフォルトの名無しさんNGNG
>>922です。
補足すると線形探索でするそうです。
0928デフォルトの名無しさんNGNG
>>921
適当にだけどこんな感じ?

void main()
{
char str[256];
int i;
FILE *fp;

if ((fp = fopen("unix.txt", "r") == NULL) {
printf("error\n");
exit(1);
}

while(fgets(str, 255, fp)) {
for (i = strlen(str - 1); i >= 0; i--) {
putchar(str[i]);
}
putchar('\n');
}

fclose(fp);
}
0929デフォルトの名無しさんNGNG
>>921
良く読んでなかった。result.txt作るのね。

#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <iostream>
#include <fstream>

void main (void)
{
unsigned char buf[32768];
FILE *fp;

if ((fp = fopen ("unix.txt", "r")) == NULL)
{
printf(" FILE OPEN ERROR\n");
}
else
{
std::ofstream ofs("result.txt");

while(fgets(buf , 32767, fp) !=NULL)
{
std::reverse(buf, buf + strlen(buf));
ofs << buf << std::endl;
}

fclose (fp);
}
}
0930デフォルトの名無しさんNGNG
>>921
課題1
./a.out unix.txt result.txt と実行すると
unix.txtの各行について左右反対にしたresulet.txtというファイルを
作るようなプログラムを作成しなさい

もとの課題はこれ?
0931デフォルトの名無しさんNGNG
>>928
訂正
fopenでresult.txtをwで開いて
fputcで書き込みかな
0932デフォルトの名無しさんNGNG
>>922
int searchidx(int a[], int n, int key, int idx[])
{
  int i, j;

  j = 0;
  for (i = 0; i < n; i++) {
    if (a[i] == key) {
      idx[j] = i;
      j++;
    }
  }
  return j;
}
0933デフォルトの名無しさんNGNG
>>931
ありがとうございます。ちょっとやってみます。

>>930
それですw
0934デフォルトの名無しさんNGNG
>>905
#define p3(xx) (xx*xx*xx)
if(p3(a[0])+p3(a[1])+p3(a[2])==data)
{printf("%d\n",data);
i++;}
}
printf("%d個\n",i);
0935デフォルトの名無しさんNGNG
>>933
>>860 見ろ。
おまいらの学校はどうなってるんだ?
0936デフォルトの名無しさんNGNG
>>935
すいません、よく見てませんでした。以後気をつけます。

言い忘れてましたが>>929氏もありがとうございました。
0937922NGNG
932さん、書き込みありがとうございます。

早速、関数を置き換えてみました。
ですが、呼び出し時のパラメータが足りないと出てしまいます。
たしかに3つしかSearchidx関数に渡していないのですが
解決方法が分かりません。
どうしたらいいのですか?
0938922NGNG
int main(void)
{
int i, ky, idx;
int x[7];
int nx = sizeof(x) / sizeof(x[0]);

printf("%d個の整数を入力してください。\n", nx);
for (i = 0; i < nx; i++) {
printf("x[%d]:", i);
scanf("%d", &x[i]);
}
printf("探す値:");
scanf("%d", &ky);

idx = searchidx(x, nx, ky);/* 配列xから値がkyである要素を線形探索 */

if (idx == -1)
puts("探索に失敗しました。");
else
printf("%dは%d個あります。\n", ky, idx + 1);

return (0);
}
0939デフォルトの名無しさんNGNG
3つしか受け取らない関数として書きなおすか
十分な領域を確保して関数に渡す。
0940デフォルトの名無しさんNGNG
int searchidx(int a[], int n, int key, int idx[])
関数の定義では、引数を4つとることになっている。
idx = searchidx(x, nx, ky);
関数呼び出し時に引数が3つしか指定されていない。1つ足らない。
0941デフォルトの名無しさんNGNG
939さんへ

もし、書き直すとすれば、main関数だけです。
何処を書き換えるのですか?
0942デフォルトの名無しさんNGNG
>>922
これでどう?
int searchidx(int a[], int n, int key)
{
  int i, j;

  j = 0;
  for (i = 0; i < n; i++) {
    if (a[i] == key) {
      j++;
    }
  }
  return j;
}
0943デフォルトの名無しさんNGNG
int hoge[7];
idx = searchidx(x, nx, ky, hoge);
0944デフォルトの名無しさんNGNG
>>941
idx = searchidx(x, nx, ky);/* 配列xから値がkyである要素を線形探索 */

↓

int *idxbuf = new int[x];
idx = searchidx(x, nx, ky, idxbuf);/* 配列xから値がkyである要素を線形探索 */
delete[] idxbuf;
0945デフォルトの名無しさんNGNG
int searchidx(int a[], int n, int key)
{
return n?(searchidx(a+1,n-1,key)+(*a==key?1:0)):0;
0946デフォルトの名無しさんNGNG
問題文で引数は4つと決められてるんでしょ?
じゃあ、呼び出し元がおかしいでしょ。
0947デフォルトの名無しさんNGNG
>>944
int *idxbuf = new int[x];

↓

int *idxbuf = new int[nx];
0948941NGNG
皆さんのお力でどうにか解くことが出来ました。
短い時間にたくさんのご指導をありがとうございました。

全ての解答を試してスキルアップしてみます。
0949デフォルトの名無しさんNGNG
>916
今、理解しました
ありがとうございます
0950デフォルトの名無しさんNGNG
宿題でなくてもいいでしょうか。
0951デフォルトの名無しさんNGNG
駄目です
0952950NGNG
(。>0<。) びええん
0953デフォルトの名無しさんNGNG
次スレを立てるプログラムはどう書きますか?
0954デフォルトの名無しさんNGNG
Thread2ch thread("http://pc2.2ch.net/test/read.cgi/tech/1051594046/");
Board2ch board("http://pc2.2ch.net/tech/")
if(thread.GetResCount > 950)
{
 board.CreateNewThread(thread.GetTitle() + " Part2", thread.GetRes(1).GetBody());
}
0955デフォルトの名無しさんNGNG
>>954
山崎渉
0956デフォルトの名無しさんNGNG
Thread2ch thread("http://pc2.2ch.net/test/read.cgi/tech/1051594046/");
Board2ch board("http://pc2.2ch.net/tech/")

for(;;)
{
 thread.Update();
 if(thread.GetResCount() > 950)
 {
  board.CreateNewThread(thread.GetTitle() + " Part2", thread.GetRes(1).GetBody());
  break;
 }
 Sleep(300 * 1000);
}
0957デフォルトの名無しさんNGNG
for(;;)
{

Board2ch board("http://pc2.2ch.net/tech/")
board.Update();
Thread2ch &thread = board.FindThread("C/C++の宿題", Thread2ch::latest);

for(;;)
{
 thread.Update();
 if(thread.GetResCount() > 950)
 {
  board.CreateNewThread(thread.GetNextPartTitle(), thread.GetRes(1).GetBody() +
   "前スレ:" + thread.GetURL);
  break;
 }
 Sleep(300 * 1000);
}

}
0958958NGNG
1から5の総和を求めるプログラムを作成したが、下記のプログラムではうまく動かない場合が生じる。誤りを指摘し1行だけ直して正しいプログラムにしなさい。

int add(int);

int main(void)
{
add(1);
add(2);
add(3);
add(4);
printf(“%d\n”,add(5));
return 0;
}
int add(int n)
{
int sum;
sum += n;
return (sum);
}

お願いします。
0959デフォルトの名無しさんNGNG
int sum; -> static int sum = 0;

こんな糞コード仕事で書くなよな。
0960デフォルトの名無しさんNGNG
int add(int);

int main(void)
{
add(1);
add(2);
add(3);
add(4);
printf("18\n");
return 0;
}
int add(int n)
{
int sum;
sum += n;
return (sum);
}
0961958NGNG
>>959>>960
ありがとうございました
0962デフォルトの名無しさんNGNG
文字列sを逆順にして出力する関数void reverse(char s[])を作成しなさい。
関数strlenを用いてあらかじめ文字列sの長さを求めると容易。
お願いします。
0963デフォルトの名無しさんNGNG
>>958
>>959のが普通だと思うけど、””が間違いだし、戻り値が役に立っていない。
笑ってしまう>>960のが正解っぽい。意地悪問題か?ただ、総和は15だと思う。
0964デフォルトの名無しさんNGNG
ごめん。もうだめ。丸投げ。
for文かwhile文による繰り返しの問題です。

ボールを水平面に落とすと、元の高さの0.75倍の高さまで跳ね返る。
10回水平面にバウンドした後、最高地点に到達した瞬間までのボールの動いた
総距離を計算せよ。
初期高さは80mで、各回の高さも出力表示せよ

多分基本問題なんだろうけど、おながいします。
0965964NGNG
あ、↑ふつうのCです。よろしくお願いします。
0966デフォルトの名無しさんNGNG
ただの等比数列じゃねーか
0967デフォルトの名無しさんNGNG
int x,y,t;
for(x=1; x<=10; x++)
{
   t = 80*0.75;
   printf("%d回目のバウンド時のボールの高さは%dです。\r\t",x,t);
}

コンパイルしてないし、漏れも初心者なのであってるかワカラン。
誰か上級者教えてくたされ
0968デフォルトの名無しさんNGNG
#include <iostream>

main()
{
 double total = 0;
 double height = 80;
 for(int i=0; i<10; i++)
 {
  total += height;
  height *= 0.75;
  std::cout << i+1 << "回目" << height << "m" << std::endl;
  total += height;
 }
 std::cout << "合計" << total << "m" << std::endl;

}
0969デフォルトの名無しさんNGNG
逆順が今の流行なのか?
0970デフォルトの名無しさんNGNG
>>967-968
はやっ!ありがとうございます。たすかりました。

0971デフォルトの名無しさんNGNG
>>969
同一学校と思われ
0972デフォルトの名無しさんNGNG
普通のC

#include <stdio.h>

float bound( float height )
{
return height * 0.75;
}

int main( void )
{
float height = 80;
float total = 0;
int counter;

for( counter=0; counter<=10; counter++ ) {
if( 0 != counter ){
height = bound( height );
total += height;
}
total += height;

printf( "%2d回目 %f m\n", counter, height );
}

printf( "ボールの動いた総距離: %fm\n", total );

return 0;
}
0973デフォルトの名無しさんNGNG
なぜdoubleではなくfloat?
なぜ片道しか加算しない?
0974デフォルトの名無しさんNGNG
doubleはfloatよりメモリ消費が烈しいからだろ。
0975デフォルトの名無しさんNGNG
>>972
出来ないならそんな無理しないで素直に>>968のcoutだけprintfに書換えとけよ。
0976デフォルトの名無しさんNGNG
関数電卓のソースがあるところ知りませんか?
0977デフォルトの名無しさんNGNG
#include<stdio.h>
#include<math.h>
int func(double param1,double param2,double *souka,double *soujou)
{
*souka = (param1+param2)/2;
*soujou = sqrt(param1*param2);
return 0;
}
int main(void)
{
double a,b,c,d;
scanf("%f %f",&a,&b);
func(a,b,&c,&d);
printf("相加平均%f 相乗平均%f",c,d);
return 0;
}

どこが間違っているのかが分からないんです!教えてください!
0978デフォルトの名無しさんNGNG
>>977
doubleなら
%f→%lf
0979デフォルトの名無しさんNGNG
C FAQを読みましょう。
scanfはdoubleに対しては%lfを使います。
0980977NGNG
>>978>>979
助かりました!ありがとうございます!
0981デフォルトの名無しさんNGNG
思い込みによるバグ注入だな。
電脳土方にはよくある事
0982デフォルトの名無しさんNGNG
>>974
馬鹿?
たったの4バイトで「烈しい」と言うのか?
あぁ、変数が2つあるから8バイトか。
しかも、スタックは節約できても実コードは却って増える罠。
0983デフォルトの名無しさんNGNG
普通のC
#include <stdio.h>
#include <math.h>
#define START 80
#define RATE 0.75
#define TIMES 10

double gettotalmove(double start,double brate,int ntimes)
{
double d = pow(brate,(double)ntimes);
return start * (1 + brate) * (1 - d) / (1 - brate);
}

int main(void)
{
int i;
for (i = 1;i <= TIMES;i++){
printf("%d times, bound = %f,total = %f\n",
i,START * pow(RATE,i),gettotalmove(START,RATE,i));
}
return 0;
}
0984デフォルトの名無しさんNGNG
せめて
get_total_move
にしてホシイ
0985デフォルトの名無しさんNGNG
>>984
漏れは字数が伸びてアンダースコア嫌い
GetTotalMoveにしてホシイ
0986デフォルトの名無しさんNGNG
>>984
javaっ娘なのでgetTotalMoveにしてホシイ
0987デフォルトの名無しさんNGNG
川合堂ライセンス(´_ゝ`)
0988デフォルトの名無しさんNGNG
>>985
字数を気にしてる時点でまだまだだな
俺もjava風味でgetTotalMoveとかがいいかな?
getが修飾してるってわかりやすいし
0989デフォルトの名無しさんNGNG
>>988
大文字小文字を混ぜるとき、先頭だけ小文字ではじめるのって、なんか利点があるんですか?
0990デフォルトの名無しさんNGNG
>>989
文字の量をそのままに単語の区切りを指定できる。
0991デフォルトの名無しさんNGNG
>>990
先頭だったら大文字小文字関係ないじゃん。
0992デフォルトの名無しさんNGNG
カットオフを組み込んだクイックソートをプログラムとして実現せよ。ここで、要素数がM以下の部分ファイルに挿入整列法を使うものとする。そして、1000の要素のランダムなファイルに対して、最も速く走るようにMの値を定めよ。

問題の意味から教えて下さい。
0993デフォルトの名無しさんNGNG
>>992
quicksort cutoff >google
0994デフォルトの名無しさんNGNG
先頭小文字にするヤシは
JAVA厨ということでよろしいか?
0995デフォルトの名無しさんNGNG
元に戻すちゃんねる
0996デフォルトの名無しさんNGNG
1000
0997990NGNG
>>991
ごめんなさい。読み間違えてました。
>>989
先頭を小文字にするのは僕の場合、ローカル変数とグローバル変数を分ける
ため。特に仮引数に小文字ロングネーム変数を使う。僕が使っているVC6は、
関数を呼び出した時その名前が出るのでと言うのもある。グローバル変数を
使ってはいけないと言う説もありますが。
ローカル:yCountNum グローバル:YCountNum 関数:YCountNum() マクロ:Y_COUNT_NUM
0998デフォルトの名無しさんNGNG
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )
0999デフォルトの名無しさんNGNG
(´∀`)ノ ハロハロ〜!
1000デフォルトの名無しさんNGNG
:::::::::::::::::::::::::::::::::::::/       \::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::/         :::::::::::::::::::::::::::::::::
:::::::::::::::::...... ....::::::|            |::::::::::::.. ...: ::::::::
:. .::::::::........ . .:::::::::::::::::::         | ........... ..:::::
:::: :::::::::... . .... .. . ヽ          / . . . ... ..::::: . .. .
            \      /
               −ー
       ∧_∧                    ./^^^^\
      ( ´∀`)               .   /      ;、 \
      (つ日 )              ⌒⌒/', ' ',;'', ;'',; '',;' ',' \
      | | |           ⌒⌒⌒/ ,          、  \⌒⌒
 TTTTTTTTTTTTTT.            /          、     \
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|      ⌒⌒⌒⌒⌒⌒⌒⌒⌒ヽ
              .|               '⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒⌒
              .|                _      _
              .|    ',',',',', _  ,',',',',',' l^lニl ,',',',', l^lニl ',',',',',',',',',',',',',',',','
              .|     ',',' l^lニl ,',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',',','
1000ゲットは気持ち(・∀・)イイ!!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。