C/C++の宿題片付けま ..
[2ch|▼Menu]
175:デフォルトの名無しさん
09/10/21 19:51:27
あ、プロトタイプ宣言があっては困るか。

つまるところint main()は完全合法ってことになるのね

176:デフォルトの名無しさん
09/10/21 19:57:02
ANSIから外れた記述であるわけは無かろうと思っていたのに、C++だから合法みたいなレスが
いっぱいついてどうしようかと思った。

177:デフォルトの名無しさん
09/10/21 20:50:11
>>175
いや、べつに main() のプロトタイプを書いてもいいんですよ。無意味ですが。

178:デフォルトの名無しさん
09/10/21 20:52:44
>>177
え?
どう書くの

179:170
09/10/21 20:54:10
やっぱり >>172 が間違ってるのかも
もう数学なんて分からん orz

180:デフォルトの名無しさん
09/10/21 21:43:26
>>178
「プロトタイプ」の意味、理解してる?

181:デフォルトの名無しさん
09/10/21 22:30:10
[1] 授業単元:C言語とアルゴリズム
[2] 問題文:
 キーボードから自然数を入力し1から入力した数までの自然数の中から、
3の倍数と3のつく数字をすべて出力するプログラムを作成しなさい。ただし、
3の倍数と3のつく数字を入力したときに真(非0)、それ以外の場合は偽(0)を返す関数
(関数名は任意)を作成し、それをmain関数内から呼び出して使用すること

{実行例}
自然数を入力して下さい.
100
1から100までで3の倍数と3のつく数字は以下の通りです.
3 6 9 12 13
15 18 21 23 24
27 30 31 32 33
34 35 36 37 38
39 42 43 45 48
51 53 54 57 60
63 66 69 72 73
75 78 81 83 84
87 90 93 96 99

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで

182:デフォルトの名無しさん
09/10/21 22:55:13
#include <stdio.h>

int f(int n)
{
if(n % 3 == 0) return 1;

while(n) {
if(n % 10 == 3) return 1;
n /= 10;
}

return 0;
}

int main(void)
{
int i, n, cnt;

printf("自然数を入力して下さい.");
scanf("%d", &n);

printf("1から%dまでで3の倍数と3のつく数字は以下の通りです. \n", n);

for(i=1,cnt=0; i<=n; i++) if(f(i)) printf("%d%c", i, ++cnt % 5 ? ' ' : '\n');

return 0;
}

183:162
09/10/21 23:08:13
>>170
考えて頂いてありがとうございます。

結局点が選ばれる確率を1/4πとして,極座標表示での微小領域に点が入る確率の積分が1になることを利用し,
微小領域の確率を変形して無理やり乱数を使える形にしました。省略しすぎた説明ですいません。

結局 ( theta, phi ) = ( arccos(r1), 2*pi*r2 ) という式を導きました。
但し,r1:[-1, 1],r2:[0, 1]で,theta:[0, pi],phi:[0, 2*pi]で考えています。

184:デフォルトの名無しさん
09/10/21 23:51:24
>>178
難しく考えすぎ。

#include <iostream>

int main( );

int main( )
{
std::cout << "Hello World" << std::endl;

return 0;
}

185:デフォルトの名無しさん
09/10/22 00:07:52
>>175
プロトタイプ宣言がどうとか、独自の環境なら話は別。
もう少し言葉の意味を理解する頭を持ってくれよ。
ANSI、ISO準拠では条件もしっかり明記されている。
main関数を プログラムの開始 とする。
自分でソースの中から開始の関数を指定できるなら
もはやISO、ANSI準拠にあらず、ご自由にどうぞ。
で、ANSI、ISO準拠の 標準スタイル ではC言語は引数がないなら
int main(void)としている。従うか従わないから各個人の任意にお任せ。
int main()でも良いじゃないか?どうぞどうぞ。別にそれが
間違っているなんて誰も言ってませんよ?

186:デフォルトの名無しさん
09/10/22 00:09:21
>>181
世界のアツナベキターーーーー!

187:デフォルトの名無しさん
09/10/22 00:41:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
問1
行列のかけ算を使って幅20、高さ140の長方形の横に3.3倍、縦に0.4倍の拡大率で表示をするプログラムを作成せよ。

問2
サンプルプログラムを参考にして、画面の中心に幅80、高さ50の長方形を原点を中心にπ/8だけ回転させた長方形を描くプログラムを作成せよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

問3
画面上に描かれた長方形がキー入力によって原点を中心に回転するアニメーションを実現するプログラムを作成せよ。キーの「1」と「3」で回転角度が増減するようにせよ。

 [3.1] WindowsXP
 [3.2] Turbo c++ 4.0
 [3.3] C++
[4] 今週の金曜日まで
お願いいたします。

188:デフォルトの名無しさん
09/10/22 00:45:45
>>185
int main() { return 0; } は完全に ANSI 準拠ですけれども、何がおっしゃりたいのでしょうか?

>>184
int main(void);
int main() { return 0; }
ではなかろうかと。プロトタイプには void が必要となるのが ANSI 準拠です。

189:188
09/10/22 00:47:27
>>184
失礼、C++ で書いてありましたね。ごめんなさい。

190:デフォルトの名無しさん
09/10/22 02:11:06
>>185
ああ、そういうこと?
K&Rなんかは、合法だが標準じゃないスタイルで記述された、それだけの話か。

標準じゃないからといってint main()がひたすらに叩かれる理由がよく分からんけど、とりあえず理解した。

191:デフォルトの名無しさん
09/10/22 02:25:22
こいつに触っちゃダメ

192:デフォルトの名無しさん
09/10/22 02:57:43
こいつ?そいつ?

193:デフォルトの名無しさん
09/10/22 12:56:02
>>191
お前に触れない方が良いことは分った。理解力のない池沼めw

194:デフォルトの名無しさん
09/10/22 12:58:51
>>188
> 何がおっしゃりたいのでしょうか?
分らないならレスするなよ、バカw
準拠ですけれども?意味不明。前提条件もあってのことだが???
だから敢えて細かく説明されてんじゃん。いい加減、この手の話は
過去ログで決着がついているから、後は自分で調べろ。

> int main() { return 0; }
激しく意味不明な指摘w

195:デフォルトの名無しさん
09/10/22 13:05:54
>>185はプロトタイプ宣言についてじゃないぞ?
ANSI、ISO準拠のmain関数の記述の「標準スタイル」についてだぞ?
mainに関係なくプロトタイプ宣言にvoidが必要だのって、そういう話じゃない。
int main(void)かint main()か?だから上の方でC言語 int main() (笑)とか
言われてたんだろ。
後で必死に反発したつもりなのか、C++が読めない「文盲」なんて
人を見下す差別用語を平気で使うならず者が出てくるし。
C++なんて突っ込むから #include <stdio.h> についてさらに突っ込まれてやんの。
もう支離滅裂。話の主題、論点が分らないならレスしないで構わんよ。
自分が無知だとばれますよ?

196:デフォルトの名無しさん
09/10/22 13:17:12
>>194
そりゃそこだけ抜けば意味不明な指摘になる
プロトタイプのとこだとおもうよ

ANSI-Cにおけるint main(){return 0;}は合法であるという旨のレスをいくつかしたんだけど
>>176の通り、C++なら大丈夫だよ!というのが混ざってくるから話がこじれたんじゃないか?
C++は関係ない、で捨てようにも、「C++なら」ってことはCではダメだという風に取れちゃうし。

197:デフォルトの名無しさん
09/10/22 13:26:15
ISO、ANSI準拠では プログラムの開始をmain関数 としているわけだが
それをプロトタイプ宣言とか言い出したら意味不明だわw
いい加減、プロトタイプ宣言から離れろ

198:デフォルトの名無しさん
09/10/22 13:37:53
なんだ、いつもの話をずらして粘着する人か

199:デフォルトの名無しさん
09/10/22 15:59:01
HANDLE a;
…ハンドル取得…
HDC b = (HDC)a;

これってダメなんだっけ?w

200:デフォルトの名無しさん
09/10/22 16:06:52
>>199
aは何のハンドルですか?

201:デフォルトの名無しさん
09/10/22 16:07:36
フォントです

202:デフォルトの名無しさん
09/10/22 16:53:18
>>201
フォントのハンドルをHDCにキャストするのは、ダメです。
使い方が間違っています。

203:デフォルトの名無しさん
09/10/22 16:55:38
>199
typedef struct hcd {
 foo_t foo;
} *HDC;
typedef struct handle {
 struct hcd hdc;
 bar_t bar;
} *HANDLE;
typedef struct font {
 struct handle handle;
 baz_t baz;
} *FONT;
とかなっているんだったら、いいでそ
もしかしてHDCって、Windowsのあれかな。

typedef void *HANDLE;
typedef struct hdc {
 foo_t foo;
} *HDC;
typedef struct font {
 struct hdc hdc;
 bar_t bar;
} *FONT;
こんなのでもいいわ。
もう、typedef void *HANDLE, *HDC, *FONT;でもいいわ。
どういう風に宣言なり定義なりされているのかわからないと何とも言えない。

204:デフォルトの名無しさん
09/10/22 17:30:19
HDCとかHANDLEとかWindowsのあれでしょ
Windowsのスレへどうぞ
void*をむやみにキャストしてもだめということだろうが


205:デフォルトの名無しさん
09/10/22 21:57:18
[1] プログラミング演習
[2]以下のプログラムの図形を画面の中心に平行移動をしてから表示するように改造せよ。
結果として画面の中央(320, 240)を中心とした回転移動の角度をキー入力によって増減するようにせよ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
 [3.1]WindowsXP
 [3.2] turbo c++ 4.0
 [3.3] c++
[4] 明日中

よろしくおねがいします。

206:デフォルトの名無しさん
09/10/22 22:11:56
>>199
大体の流れとして。

HDC hdc;
PAINTSTRUCT ps;
hFont = CreateFont(…);
hdc = BeginPaint(hWnd, &ps);

SelectObject(hdc, hFont);

じゃないの。それぞれ宣言場所違うけどね。
デバイスコンテキストハンドル2つ生成してSelectObjectすればそれっぽいんじゃないか?。

207:デフォルトの名無しさん
09/10/22 23:55:47
Visual StudioでC++をやり始めたんですが
実行してもすぐに
コマンドプロンプトが閉じてしまって結果が見れません
対処法を教えてください。

208:デフォルトの名無しさん
09/10/23 00:01:21
僕の肛門も出すものを出したら直ぐに閉じてしまいます ><;

209:デフォルトの名無しさん
09/10/23 00:01:29
右クリック→設定 で
「終了後に自動的に閉じる」のチェックを外す。

210:デフォルトの名無しさん
09/10/23 00:13:56
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
[1 2 0] [3 2 0 1] [3 4 0 2 1]みたいな同じ数字を使わない任意の長さでランダムな数列の作成するプログラム。

[3] 環境
 [3.1] OS: vista
 [3.2] コンパイラ名とバージョン: gcc ?
 [3.3] 言語: C
[4] 期限: 来週の木曜日

rand()、switchでごり押しくらいしか思いつかないです…

211:デフォルトの名無しさん
09/10/23 00:20:49
>>210
カードシャッフルのアルゴリズムと同じ

212:デフォルトの名無しさん
09/10/23 00:23:11
>>211
論より証拠。口先よりソースコード。

213:デフォルトの名無しさん
09/10/23 00:46:22
>>210

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

int main(int c, char **v)
{
int n,*a,i;
if (c<2)return 0;
a=malloc((n=atoi(v[1]))*sizeof(int));
if (a==NULL)return 1;
srand(time(NULL));

for (int i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (int i = 0; i < n; ++i) {
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


214:デフォルトの名無しさん
09/10/23 00:46:40
>>209
207なですがどこで右クリックすればいいのか
教えてもらえないでしょうか。

215:デフォルトの名無しさん
09/10/23 00:51:33
>>214
.pif ファイル。
つーか、単に main の最後に getchar() か何か付け足して、
エンターで終了ってことにしとけば良いんじゃね?

216:213
09/10/23 00:54:49
これで出来てる?
携帯だから自分で確認できないんだが。


217:デフォルトの名無しさん
09/10/23 00:55:53
>>215さんありがとうございました
今日から勉強始めて
まったく分からない状況だったので助かりました

218:デフォルトの名無しさん
09/10/23 01:54:50
int main(int c, char **v)  (笑)
srand(time(NULL));  (苦笑)
for (int i = 0; i < n; ++i) a[i] = i; (爆笑)
int k = i + rand() % (n - i); printf("%d ", 1 + a[k]); (大爆笑)
putchar(8); (失笑)

219:デフォルトの名無しさん
09/10/23 02:18:55
修正

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;
srand(time(NULL));

for (i = 0; i < n; ++i) a[i] = i+1;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


220:デフォルトの名無しさん
09/10/23 02:29:22
問題よくみたら0からだった。
修正しといてくれ。

221:デフォルトの名無しさん
09/10/23 02:32:41
つーことで修正

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;

srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i = 0; i < n; ++i){
k = i + rand() % (n - i);
printf("%d ", a[k]);
a[k] = a[i];
}
putchar(8);
putchar(']');
return 0;
}


222:デフォルトの名無しさん
09/10/23 04:31:04
前から抜くより、後ろからの方が足し引きすくないよ。

for(i=n; i; ) {
k = rand() % i--;

223:デフォルトの名無しさん
09/10/23 04:55:38
じゃあ修正
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int c, char **v){
int n,*a,i,k;
if (c<2)return 0;
a=malloc((n=atoi(v[1])) * sizeof (int));
if (a==NULL)return 1;

srand(time(NULL));
for (i = 0; i < n; ++i) a[i] = i;
putchar('[');
for (i=n; i;){
k = rand() % i--;
printf(i?"%d ":"%d", a[k]);
a[k] = a[i];
}
putchar(']');
return 0;
}


224:デフォルトの名無しさん
09/10/23 05:03:45
個人的には
for (i = 0; i < n; i++){
k = rand() % (n-i);

a[k] = a[n-i];
}
とするのが好きだな。

225:デフォルトの名無しさん
09/10/23 05:07:10
a[k] = a[n-i-1]じゃね?

226:デフォルトの名無しさん
09/10/23 05:17:47
おぉーーっと、ここでうpロダ君のロングパス!

227:C初心者
09/10/23 06:26:19
>129, 135, 136さん
御礼が遅くなりました。
ありがとうございました。

228:デフォルトの名無しさん
09/10/23 06:48:23
>>223
ループの中で場合わけするなら、]もつけちゃえばいいのに。

229:デフォルトの名無しさん
09/10/23 08:10:48
>>210
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i, j, n, *p;

srand(time(NULL));

scanf("%d", &n);
p = malloc(n * sizeof(int));

for(i=0; i<n; i++) {
j = rand() / (RAND_MAX + 1.0) * (i + 1);
p[i] = p[j];
p[j] = i;
}

printf("[%d", p[0]);
for(i=1; i<n; i++) printf(" %d", p[i]);
printf("]\n");

free(p);

return 0;
}

230:デフォルトの名無しさん
09/10/23 11:44:38
【質問テンプレ】
[1] 授業単元:プログラミング言語C
[2] 問題文:
以下のプログラムの『考える』ところを直し、キーボードから1を入力したらRed2ならGreen、3ならBlueの文字列が画面表示されるようにせよ。またそれ以外の数字が入力されたら『終了します』と画面表示されプログラムが終了するようにせよ


#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;

scanf("%d",&input);


if(考える)            {
printf("%s\n", colors[考える]);
};
return 0;

}
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:VC ++
 [3.3] 言語: C
[4] 期限:早く出せば点数が上がるので出来るだけ早くお願いします
[5] その他の制限:


よろしくお願いします

231:デフォルトの名無しさん
09/10/23 11:49:39
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
scanf("%d",&input);
if(1 <= n && n <= 3) {
printf("%s\n", colors[n - 1]);
}else {
printf("終了します\n");
}
return 0;
}


232:デフォルトの名無しさん
09/10/23 11:54:19
>>230
#include<stdio.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;

while(1){
scanf("%d",&input);
if(input>0&&input<4){
printf("%s\n", colors[input-1]);
}else{
printf("終了します\n")
break;
}
}
return 0;
}

233:デフォルトの名無しさん
09/10/23 12:36:50
int main() (笑)

234:デフォルトの名無しさん
09/10/23 12:41:02
>>230

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3"};
char b[80];

gets(b);
for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else{
printf("終了します\n");
}
return 0;
}


235:デフォルトの名無しさん
09/10/23 12:56:45
>>230

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];

gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=0;input<11;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}else if(input<10){
printf("終了します\n");
}
return 0;
}


236:デフォルトの名無しさん
09/10/23 13:05:54
つまんね

237:デフォルトの名無しさん
09/10/23 13:08:44
こうだろ。

#include<stdio.h>
#include<string.h>
int main()
{
char *colors[]={"Red", "Green", "Blue"};
int input;
char *nums[]={"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};
char b[80];

gets(b);
for(input=0;input<11;input++)if(!strchr(b,"0123456789"[input]))printf("終了します\n"),return 0;
for(input=3;input<11;input++)if(strstr(b,nums[input]))printf("終了します\n"),return 0;

for(input=0;input<4;input++)if(!strcmp(b,nums[input]))break;
if(input<4){
printf("%s\n", colors[input]);
}
return 0;
}


238:デフォルトの名無しさん
09/10/23 13:37:15
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input, i;
char buf[1024];
char *num[] = {"0","1","2","3","4","5","6","7","8","9"};
char *num2[] = {"零","一","二","三","四","五","六","七","八","九"};
fgets(buf, 1024, stdin);
input = atoi(buf);
for(i = 0; i < 10; i++) if (strncmp(buf, num[i]) == 0) input = i;
for(i = 0; i < 10; i++) if (strncmp(buf, num2[i]) == 0) input = i;
if (input <= 0 || input >= 4) printf("終了します\n");
printf("%s\n", colors[input]);
return 0;
}

239:デフォルトの名無しさん
09/10/23 13:43:12
__declspec(dllimport) extern int printf(const char *s, ...);
__declspec(dllimport) extern int scanf(const char *s, ...);
int main(void) {
char *colors[] = {"Red", "Green", "Blue"};
int input;
char b[80];
gets(b);
input = atoi(b);
if (input <= 0 || input >= 4) printf("終了します\n");
else printf("%s", colors[input - 1]);
return 0;
}

240:210
09/10/23 13:47:52
>>211
ありがとうございます。
検索ワードが思い浮かばず困っていた面もありました。
時間はあるのでじっくりググって煮詰めようと思います。

>>213=>>219=>>221=>>223
>>229
ありがとうございます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
自分でも布団の中で考えn個の中から1つを選ぶ、n-1個の(ryみたいな感じでやってみましたが比べると無駄が多い…
参考に改善しようと思います。




241:デフォルトの名無しさん
09/10/23 13:52:09
knuthやfisher-yatesでググると参考になる。

242:デフォルトの名無しさん
09/10/23 14:05:23
putchar(8) って何? バグ?

243:デフォルトの名無しさん
09/10/23 14:11:29
asciiコードぐらい自分で調べろよw

244:デフォルトの名無しさん
09/10/23 14:23:37
さぁとっととリストの課題こいや〜!麻呂のミートクソースをお見舞いしてやんよでおじゃる?
カレンダー出力も来るでおじゃる!

245:デフォルトの名無しさん
09/10/23 16:45:24
いやっほー!

246:麻呂専用
09/10/23 16:55:35
[1] C言語中級
[2] 8X8のオセロの全局面をリスト構造で列挙しそれを適当なファイルに保存するプログラム
次の問いの答えも添付すること
(1)先手必勝、後手必勝かの決定
(2)平行初期値と通常初期値(回転対称、鏡映は同一視)それぞれの
場合において到達可能な葉は全部の場合の何パーセント程度であるか?

[3] Windows 2000/Visual-C++ 6.0/C言語(厳守)
★置く場所が無い場合に限りパスが認められる。
★FileMappingやVirualAllocateのWindowsの機能を利用し、
メモリがパンクしないように留意すること。メモリの搭載は128M程度
を仮定する。
[4]来週月曜日迄(厳守)

247:デフォルトの名無しさん
09/10/23 18:21:25
全文を書くと大変なことになるのと(300行以上)、
どこから、どこまでを引っこ抜いてきて書けばいいかが分からないので、とりあえず下記を抜粋しました。
この部分で文法的に間違ってる文章はありますでしょうか?
nはdefine済みです。よろしくお願いします。

int i, l, s, c, k, d[n];

srand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(rand() * n);
c = i;
for(l=0; l<10; l++){
s = floor(rand() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}


248:デフォルトの名無しさん
09/10/23 18:28:02
>>1
>【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)

249:デフォルトの名無しさん
09/10/23 19:09:34
【質問テンプレ】
[1] 授業単元: 情報演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
うpろだお借りしました。
10001.txtの中の
int i, l, s, c, d[n];

init_genrand(10);

for(k=0; k<n; k++){
d[k] = 0;
}

i = floor(genrand_real2() * n);
c = i;
for(l=0; l<10; l++){
s = floor(genrand_real2() * rowvec[c].num );
c = rowvec[c].kazu[s];
d[c]++;
}
for(c=0; c<n; c++){
printf(" %d\n", d[c]);
}
}
が手間取っている部分です。どうしてもうまく動作しません。
よろしくお願いします

250:デフォルトの名無しさん
09/10/23 19:42:46
>>249
何がどうなって欲しいの?

251:デフォルトの名無しさん
09/10/23 20:10:44
プログラム全体でやっていることは、
隣接行列を作る。
強連結か判定。
ページランクの測定。
です。
>>249では有向グラフで出発点をランダムにとり、
そこからランダムウォークをして、何回か移動したとき、各点にどれだけ移動したかを測定しようとしています。


252:デフォルトの名無しさん
09/10/23 20:25:40
ランダムウォークじゃなくて全部歩くべきなんじゃないの?

253:デフォルトの名無しさん
09/10/23 22:28:46
>249
値を返していない関数がある
245行目で初期化されていない変数を使っている

254:デフォルトの名無しさん
09/10/24 00:55:05
[1] 授業単元:プログラミングV
[2] 問題文(含コード&リンク):外部ファイルより整数を読み込み、棒グラフを描くプログラムを
作る。外部ファイルはコンストラクタで配列に読み込め。使う関数はヘッダーファイルに
publickに定義する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:2009年10月29日10時
[5] その他の制限:特にないです。


255:デフォルトの名無しさん
09/10/24 03:12:57
問題文って本当にそれだけ?


256:デフォルトの名無しさん
09/10/24 09:13:10
mathematicaなんですが、関数を作れとのことなので
ここに投稿させてもらいます。
暇がある方お願いします。

2変量のデータ {{x1, y1}, {x2, y2}, ... , {xn, yn}} を引数として,散布図と相関係数を出力する関数を作成せよ.


257:デフォルトの名無しさん
09/10/24 09:49:53
お断りします

258:デフォルトの名無しさん
09/10/24 14:40:31
テストの平均点を出して小数第2位を四捨五入したいんだけどどうすればいいの?
平均点は出てます。


259:デフォルトの名無しさん
09/10/24 14:46:52
%とfの間に「.1」だっけ?

260:デフォルトの名無しさん
09/10/24 15:12:39
>>258
main(){
float a = 1.56;
int b;
b = a*10+0.5;
a = b/10.0;
printf("%f",a);
return 0;
}

261:デフォルトの名無しさん
09/10/24 15:15:44
#include <math.h>
float round(float val, int decimal)
{
val += pow(5.0, -(decimal+1));
long tmp = val * pow(10.0, decimal);

return tmp/pow(10.0, decimal);
}

262:デフォルトの名無しさん
09/10/24 16:58:52
テキストから"n 100"みたいな文字列を読み込んで、プログラム内でnに100を代入するにはどうすればいいでしょうか?

263:デフォルトの名無しさん
09/10/24 17:14:17
それがコンパイラだよ。

264:デフォルトの名無しさん
09/10/24 17:17:56
>>262
プログラム書くか、>>1を読めばいい。

265:デフォルトの名無しさん
09/10/24 19:07:42
[1] 授業単元:変数の基礎
[2] 問題文(含コード&リンク):このプログラムのどこかに変数における間違いがあります。
  その間違いを探しなさい。  URLリンク(kansai2channeler.hp.infoseek.co.jp)

[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: visual studio2008
 [3.3] 言語: C/C++/どちらでも可
[4] 期限: 明後日まで
[5] その他の制限: 特になし


266:デフォルトの名無しさん
09/10/24 19:27:11
>265
使われていない変数がある
値を返していない関数がある

267:デフォルトの名無しさん
09/10/24 19:41:18
>265
outputが開放されていない

引数が使われていない
未定義動作の式が存在する

268:デフォルトの名無しさん
09/10/24 19:45:31
意図のわからない名前をつけちゃだめ

269:265
09/10/24 20:22:15
>>266>>267

ありがとうございます。
もし良ければ何行目あたりかを教えてください。(スルーでも大丈夫です)


270:デフォルトの名無しさん
09/10/24 21:24:20
>>265
これすごいなw
実装したやつ天才すぎるw
つか宿題じゃねーだろこれ?

271:デフォルトの名無しさん
09/10/24 21:25:44
こういうスレにいると
問題と回答の両方があるから
勉強になるよね☆

272:265
09/10/24 21:28:20
専門学校の宿題です
長いプログラムですが間違えてる所は最初〜真ん中らへんにあるって言ってました

関数や引数のことがよく分かっていないんで詳しく説明できる人がいればお願いいたします


273:デフォルトの名無しさん
09/10/24 21:32:43
>>265
このコード自体くそ
はじめから書き直せ
素人丸だし

274:デフォルトの名無しさん
09/10/24 21:37:18
>>272
宿題なのかこれ・・・
これ先生が書いたの?
突っ込みどころ満載なんだがwww

275:デフォルトの名無しさん
09/10/24 21:43:59
>>265
プログラムを見た瞬間目が回った
これだけやる気をなくすプログラムも珍しいな

276:デフォルトの名無しさん
09/10/24 21:46:35
うちの学校の講師はプログラミングテストで合格しないとなれないみたいだから
>>265みたいなひどいコードはないな

277:デフォルトの名無しさん
09/10/24 21:46:57
とりあえず何をしたいプログラムか分らないと途中経過を追うのが怠すぎる…

278:265
09/10/24 21:47:08
>>274

先生が書きました とりあえず自力でがんばってみます。
一応明後日までみなさんの詳しい答え待ってます。おやすみなさい

279:デフォルトの名無しさん
09/10/24 22:13:01
>265
>266, 267
とりあえず、機械的に解析してもらった結果から出したんだけど
URLリンク(kansai2channeler.hp.infoseek.co.jp)

280:デフォルトの名無しさん
09/10/24 22:30:47
>>279

ってか機械的に解析ってどうやんの?プログラマーの俺に教えてちょww




281:デフォルトの名無しさん
09/10/24 22:36:15
lintと違うん?

282:デフォルトの名無しさん
09/10/24 22:36:15
>>280
ツール使うだけ
lint とか

283:デフォルトの名無しさん
09/10/24 22:36:27
>>265
こんなん教えてる専門学校は今すぐ辞めるべき


284:デフォルトの名無しさん
09/10/24 22:37:48
lintかー あざーす

285:デフォルトの名無しさん
09/10/24 22:43:15
lintってフリーソフトなん?

286:デフォルトの名無しさん
09/10/24 22:48:36
>>285
ググれよw

287:デフォルトの名無しさん
09/10/24 23:00:02
ググって見たけど最近のコンパイラなら必要なさそうだな

288:デフォルトの名無しさん
09/10/24 23:09:13
>265

まぁみんなつっこんでるので繰り返しになるが、
問題文自体が間違ってないか。

「このプログラムのどこかに変数における間違いがあります。」

いや、変数の問題じゃ無いんだが、、、。
こんなコードをデバッグさせようとすること自体が間違いでしょ。

専門学校の宿題か。
その講師の言うことは宛にならないと思う。



289:デフォルトの名無しさん
09/10/24 23:20:24
lintとかを使えるようにしようっていう意図なんじゃないかと深読み

290:デフォルトの名無しさん
09/10/24 23:22:06
>>265
これはひどい。
うちの会社なら、これ書いた奴の上司が社長室に呼びつけられるなw

291:デフォルトの名無しさん
09/10/24 23:24:59
>>265
こんなコードを人に見せるなんて恥ずかしくて切腹ものですね。
先生、あさってには死んでるかもしれないんじゃないですか。

292:デフォルトの名無しさん
09/10/24 23:29:09
プログラマが書いたコードじゃなくて数学屋が書いたコードだろ
やつらこんなの書くぞ

293:デフォルトの名無しさん
09/10/24 23:31:58
講師が学生のバイトで、そいつが研究課題でプログラム組んだけどミスがある。
でも自分ではわからないから、バイト先の連中にやらせちゃえ
って感じな気がする。


294:デフォルトの名無しさん
09/10/24 23:36:18
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 明後日

295:デフォルトの名無しさん
09/10/25 00:08:00
>>293
確かにw
そんな感じするw

296:デフォルトの名無しさん
09/10/25 00:19:37
>>294
#include <stdio.h>
void rotate(int *p, int size)
{
int i, temp;
for(i=0,size--; i<size; i++, size--) {
temp = p[i];
p[i] = p[size];
p[size] = temp;
} }
int main(void)
{
int a[10], i, length, n;
printf("整数列をローテーションします.\n整数列の長さを入力してください:");
scanf("%d", &length);
if(length <= 0 || 11 <= length) return printf("error");
printf("整数列を入力してください(スペース区切り):");
for(i=0; i<length; i++) scanf("%d", a + i);
printf("ローテーション数を入力してください:");
scanf("%d", &n);
while(n >= length) n -= length;
rotate(a, length - n);
rotate(a + length - n, n);
rotate(a, length);
printf("結果 [ ");
for(i=0; i<length; i++) printf("%d ", a[i]);
printf("]\n");
return 0;
}

297:デフォルトの名無しさん
09/10/25 00:20:00
>>294
もっと単純に書いちゃだめなのこれ?
for (i = 0; i < len; ++i)
{
  arr1[ (i + n) % len ] = arr0[ i ];
}
とかさ。

298:デフォルトの名無しさん
09/10/25 00:40:55
>>296
関数の名前はrotateじゃなくてreverseのほうが正しくね?

299:デフォルトの名無しさん
09/10/25 01:21:30
>294
どこかで見たことあるアルゴリズムだと思ったら、「珠玉のプログラミング」にあった奴だ。

問題の仕様には完全に合わせていないけど、
肝心の部分は、reverseを使ってこんな感じ。

void rightRotation(int *pInt, size_t size, size_t shift)
{
while (shift > size) {
/* シフトがサイズを超えたら、さらに一周させる */
shift -= size;
}

if (shift == size) {
/* シフトとサイズが同じなら変化無し */
return;
}

/* 先頭からsize - shiftサイズ分を逆順にする */
reverse(pInt, size - shift);
/* 残り部分を逆順にする */
reverse(&pInt[size - shift], shift);

/* 全体を逆順にする */
reverse(pInt, size);
}



300:デフォルトの名無しさん
09/10/25 01:28:40
>>294
URLリンク(codepad.org)
scanf()追放信者が書くとこうなってしまいました。

301:デフォルトの名無しさん
09/10/25 01:33:22
せめて関数のエラー回避をw

302:300
09/10/25 01:38:45
>>301
うーん、malloc()のエラー回避はしていますが、やっぱり足りないですか?

303:294
09/10/25 01:40:49
実は関数を習ってないので、その部分は回答を参考に書き替えたら
正しい結果になりました。回答ありがとうございました

304:デフォルトの名無しさん
09/10/25 03:24:18
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増えるよ。

305:デフォルトの名無しさん
09/10/25 03:29:01
乞食は死ね

306:デフォルトの名無しさん
09/10/25 04:10:02
>>304
PDFからテキスト抽出とかどっかで見たことあるからpostscriptからも普通にありそうなもんだけど

307:デフォルトの名無しさん
09/10/25 09:37:59
[1] 授業単元:独学
[2] 問題文(含コード&リンク):URLリンク(www.ioi-jp.org)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン:Visual Basic
 [3.3] 言語: C
[4] 期限: 無期限


308:デフォルトの名無しさん
09/10/25 09:39:20
>>307
ぁ、Windowsです
お願いします!

309:デフォルトの名無しさん
09/10/25 09:43:57
VBて。
しかも独学て。
独りで学んでないじゃん。

310:デフォルトの名無しさん
09/10/25 09:47:06
VBじゃ駄目ですか?

独学以外に何と書けば良いかわからなかったので・・・。

311:デフォルトの名無しさん
09/10/25 09:49:30
>>310
Visual Studioのことを言いたいのかい?

312:デフォルトの名無しさん
09/10/25 09:50:48
>>311

あ・・・はい。
そうです。すいません

313:デフォルトの名無しさん
09/10/25 09:58:34
>>308ではないのですが、
A〜Zまで配列にして
forで文字列を1文字ずつ取り出し
さらにforで配列との比較を行い一致したら
x,y,z以外だったら文字比較forのカウント変数に3を加算
x,y,zならa,b,cをそれぞれを出力用配列の内側配列に格納
という風に考えたんですが
これよりスマートなやり方を教えてください。


314:デフォルトの名無しさん
09/10/25 10:15:51
スマートかどうか知らんが
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main(int argc, char **argv)
{
char *p;

if (argc != 2) exit(EXIT_FAILURE);
if (strlen(argv[1]) > 1001) exit(EXIT_FAILURE);
for (p = argv[1]; *p != '\0'; p++) {
if (!isupper(*p)) {
exit(EXIT_FAILURE);
}
}

for (p = argv[1]; *p != '\0'; p++) {
putchar(((*p) - 'A' + 26 - 3) % 26 + 'A');
}
putchar('\n');

exit(EXIT_SUCCESS);
}

315:デフォルトの名無しさん
09/10/25 10:21:10
あ。'A'〜'Z'が連続しているコードが前提です。

316:デフォルトの名無しさん
09/10/25 10:52:13
>307
hashとかmapが使えるとすげー楽なのだけれど、Cには無いので代わりの方法をやってみた。
要はD→A、C→Z・・・の写像を定義してあげればよい。mapだとそのままこの写像が定義できる。
Cではできないので、インデックスに変換してあげている感じ。
#include <stdio.h>
#include <string.h>
#define ELENUM(array) (sizeof(array) / sizeof(array[0]))
/* A, B, C...,Zを0, 1, 2, .. 25に変換。 変換できない場合-1 */
int alphIndexing(char ch)
{
char alph[] = "ABCDEFCHIJKLMNOPQRSTUVWXYZ";
int idx;
for (idx = 0; idx < ELENUM(alph); idx++) {
if (alph[idx] == ch) {
return idx;
}
}
return -1;
}
int main(int argc, char **argv)
{
const char aCaesarTbl[] = "*XYZABCDEFCHIJKLMNOPQRSTUVW";
const char *pConvert = (aCaesarTbl + 1);
int idx;
printf("input : %s\n", argv[1]);
printf("encoded: ");
for (idx = 0; idx < strlen(argv[1]); idx++) {
putchar(pConvert[alphIndexing(argv[1][idx])]);
}
putchar('\n');
return 0;
}

317:デフォルトの名無しさん
09/10/25 11:12:48
>>314
>>316
共にエラーが出る・・・

318:デフォルトの名無しさん
09/10/25 11:16:01
>>317
へぇ。

319:316
09/10/25 11:42:44
引数入力してないでしょ。
入力チェック省いていたから。

ちょっと改善して入力チェックも入れた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

320:デフォルトの名無しさん
09/10/25 11:55:03
#include <stdio.h>
int main(){
 int c;
 while((c=getchar()) != EOF){
  if('D' <= c && c <= 'Z') putchar(c-3);
  else if('A' <= c && c <= 'C') putchar(c+23);
  else putchar(c);
 }
 return 0;
}

321:デフォルトの名無しさん
09/10/25 13:54:52
[1] 授業単元:C++
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.3] 言語:C++
[4] 期限: 2009年10月30日

私なりに考えてみましたがわかりませんでした。
どなたかお解りになる方がいましたら宜しくお願い致します。

322:デフォルトの名無しさん
09/10/25 15:09:43
>321

ポインタがわかっていないようですね。その点は要復習。
第3、第4引数がポインタ渡しか参照渡しか、曖昧ですが、
一応参照渡しでやってみた。
doubleの余りとか適当。

void div(int op1, int op2, int& sho, int& amari)
{
sho = op1 / op2;
amari = op1 % op2;
}

void div(double op1, double op2, double& sho, double& amari)
{
sho = int(op1 / op2);
amari = op1 - sho * op2;
}

323:デフォルトの名無しさん
09/10/25 15:10:12
インラインアセンブラでidivとか言ったら怒られるだろうか。

324:デフォルトの名無しさん
09/10/25 18:22:58
>>254
URLリンク(codepad.org)
プログラムの最初に想定しているファイル形式と出力を書いておきます。

325:324
09/10/25 21:26:09
書き直しました。
URLリンク(codepad.org)

326:デフォルトの名無しさん
09/10/25 21:39:30
[1] 授業単元:C言語とアルゴリズム
[2] 問題文: URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:明日まで

よろしくおねがいします!!

327:デフォルトの名無しさん
09/10/25 21:53:33
[1] 授業単元: C言語プログラミング演習
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 
 [3.3] 言語: C
[4] 期限: 2009年10月28日 16:00まで


328:デフォルトの名無しさん
09/10/25 21:57:20
>>326 問題1−2
#include<stdio.h>

char *ul2a(char buf[40], unsigned long value){
int i;
char *p;
for(i=31,p=buf;i>=0;i--){
*p++=((value>>i)&1)+'0';
if(i%4==0) *p++=' ';
}
*--p='\0';
return buf;
}

int main(int argc, char *argv[]){
char buf[40];
unsigned long x=0, y=0;

printf("符号なし32bit整数2つを入力してください.\n");
scanf("%lu %lu", &x, &y);
printf("%lu は2進表示で %s ,\n", x, ul2a(buf, x));
printf("%lu は2進表示で %s です.\n", y, ul2a(buf, y));
printf("~%lu は2進表示で %s ,\n", x, ul2a(buf, ~x));
printf("~%lu は2進表示で %s です.\n", y, ul2a(buf, ~y));
printf("%lu << 1は2進表示で %s ,\n", x, ul2a(buf, x<<1));
printf("%lu >> 1は2進表示で %s です.\n", y, ul2a(buf, y>>1));
printf("%lu & %lu は2進表示で %s です.\n", x, y, ul2a(buf, x&y));
printf("%lu | %lu は2進表示で %s です.\n", x, y, ul2a(buf, x|y));
printf("%lu ^ %lu は2進表示で %s です.\n", x, y, ul2a(buf, x^y));

return 0;
}

329:デフォルトの名無しさん
09/10/25 22:23:33
>>326
問題1: URLリンク(codepad.org)
問題2: URLリンク(codepad.org)

330:デフォルトの名無しさん
09/10/25 22:41:19
>>326です
>>328、329さんありがとうございます。
問題1−1なんですが>>328さんの問題1−2のようにもう少し簡単になりませんか?


331:デフォルトの名無しさん
09/10/25 22:43:38
すげー煽りだw

332:329
09/10/25 22:51:03
>>330
>>328 ではポインタを使っていますが、>>329 ではポインタを使わず、算術演算(割り算と余り演算子)で処理しています。
あるいは、わかりやすいように配列にいったん結果をいれるようにしています。4桁ごとのくぎりも普通にかいています。
>>329 も簡単だと思いますが( >>328 を否定しているわけではありません)、やっぱり短く書いたほうがわかりやすいでしょうか?

333:デフォルトの名無しさん
09/10/25 23:37:00
[1] 授業単元:
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows?
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (2009年10月30日17;50まで

うまく実行できません。おねがいいたします。

334: ◆pGt6/pVDLk
09/10/25 23:40:45



335:333 ◆F8HqQ.0zX2
09/10/25 23:43:07
見にくいですが、宜しくおねがいします。

336:デフォルトの名無しさん
09/10/26 00:03:32
>327
気が向いただけ、ただ気が向いただけ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
s/foo.zip/foo.tar.gz/

337:デフォルトの名無しさん
09/10/26 00:40:51
これ作ったら神。
PS postscriptのテキスト抽出するやつ。日本語対応版。
フリーでは、誰も開発してないので、検索エンジンのフィルターの需要あってアクセス増える。

338:デフォルトの名無しさん
09/10/26 00:47:46
ちょっとした質問なんですが、

123

この数列を配列に

321

と、格納するにはどうすれば良いですか?

339:デフォルトの名無しさん
09/10/26 00:54:04
a[0]=1,a[1]=2,a[2]=3;
tmp=a[0],a[0]=a[2],a[2]=tmp; //swap(a,b)
a[2]=1,a[1]=2,a[0]=3;
ちょっと横道に

340:デフォルトの名無しさん
09/10/26 00:55:46
>>339
説明不足でした

scanfから数字を入力して、
その数字を>>338みたいにするにはどうすれば良いですか?

341:デフォルトの名無しさん
09/10/26 01:09:21
後ろから順に前に入れていけばいい。

342:デフォルトの名無しさん
09/10/26 01:11:38
そのやり方がよく・・・

343:デフォルトの名無しさん
09/10/26 01:25:30
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Windows/Linux)
 [3.2] gcc 3.4
 [3.3] 言語: C

お願いしますm(_ _)m


344:デフォルトの名無しさん
09/10/26 01:27:01
意味がよくわからんけどこういうことかな
int a[3];
int i;
for (i = 0; i < 3; i++) scanf("%d", &a[2-i]);


345:デフォルトの名無しさん
09/10/26 01:27:58
>>344>>340へのレスね



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4796日前に更新/214 KB
担当:undef