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] 授業単元:プログラミングⅢ
[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へのレスね
346:デフォルトの名無しさん
09/10/26 01:38:59
>>345
123 って入力したときに、
配列に
_____
|3|2|1|
ーーーーー
って格納させる方法です・・・
国語力無くて申し訳ない
347:デフォルトの名無しさん
09/10/26 02:31:10
>>346
#include <stdio.h>
int main(void){
int i;
int x;
int a[3];
scanf("%d",&x);
for(i=0;i<3;i++){
a[i] = x%10;
x /= 10;
}
for(i=0;i<3;i++) printf("a[%d] = %d\n",i,a[i]);
return 0;
}
348:デフォルトの名無しさん
09/10/26 02:44:17
なるほど。数字のみなら>>347もありか。
文字もokな一般的なものを考えてみたのが↓。
>>346
#include <stdio.h>
int main(void){
int pt1 = 0 , pt2 = 0;
char s[101] = "", tmp;
printf("input : ");
scanf("%s", s);
while(s[pt2 + 1]!='\0'){
pt2++;
}
while(pt1 < pt2){
tmp = s[pt1];
s[pt1] = s[pt2];
s[pt2] = tmp;
pt1++;
pt2--;
}
printf("output : %s\n", s);
return 0;
}
349:デフォルトの名無しさん
09/10/26 02:46:11
>343
一応作ったけど、凝り始めると終わらない
350:333
09/10/26 09:42:08
[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まで
すいません。少し補足させていただきますm(。._.)m
351:デフォルトの名無しさん
09/10/26 12:50:45
>>304
ps2textというのがある。
URLリンク(www.asahi-net.or.jp)
352:デフォルトの名無しさん
09/10/26 13:27:19
>>351
それは、ゴーストスクリプトという専用ツールを呼び出すだけ。
遅いし、確実には抽出できなかったよ。
動作環境:
PerlActivePerl
ghostscript日本語ghostscript, (ghostscript 8.11 以降推奨)
353:デフォルトの名無しさん
09/10/26 14:04:58
postscriptのフォーマット概要がここに書いてあるけど、これだけでは抽出できないみたい。
バージョンが1~4.2くらいてまであって、それぞれに対応しないと駄目みたい。
URLリンク(www.bunmeisha.co.jp)
こっちは開発元資料へのリンクあり
URLリンク(fontforge.sourceforge.net)
354:デフォルトの名無しさん
09/10/26 14:40:10
>>350
問題の前半が省かれてるっぽいのでよくわからんが、
set_mapがコメントの内容とあってない。
コメントが正しいなら
//マップ内なら数値を代入
void set_map(int n, int x, int y, double v) {
if (x >= 0 && X > x && y >= 0 && Y > y) {
map_q[n][y][x] = v;
}
}
upされたやつだとy=-1とかでもmap_qに値をセットしてたから
それでsegmentaition fautになってる
あと mainの中でcountの初期化がされてない
355:デフォルトの名無しさん
09/10/26 15:11:19
[1] 授業単元:C言語とアルゴリズム
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:早めに。。
よろしくお願いします!
356:デフォルトの名無しさん
09/10/26 15:31:21
>>355
①
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int l = 0, u = 0, d = 0;
char str[256], *p;
printf("文字列を入力して下さい.\n");
scanf("%s", str);
for(p=str; *p; p++) {
if(islower(*p)) l++;
else if(isupper(*p)) u++;
else if(isdigit(*p)) d++;
}
printf("入力文字列は %s で\n", str);
printf("小文字は%d文字,大文字は%d文字,数字は%d文字です.\n", l, u, d);
return 0;
}
357:デフォルトの名無しさん
09/10/26 15:38:43
>>355
②
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char surname[21], firstname[21], fullname[41], *p;
printf("姓を入力して下さい.\n");
scanf("%s", surname);
printf("名を入力して下さい.\n");
scanf("%s", firstname);
strcpy(fullname, surname);
strcat(fullname, firstname);
printf("入力した氏名は%sです.\n", fullname);
for(p=fullname; *p; p++) {
if(islower(*p)) *p += ('A' - 'a');
else if(isupper(*p)) *p += ('a' - 'A');
}
printf("小文字と大文字の交換後の文字列は%sです.\n", fullname);
return 0;
}
358:デフォルトの名無しさん
09/10/26 16:10:17
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
(1)ライプニッツの公式を用いて円周率の近似値を求める時、その値が3.14から3.15の間になるまで
nを増やしていき、そのnの値(繰り返し回数)を求めるプログラムを作成せよ。
(2)ライプニッツの公式を用いて円周率の近似値を以下の条件で求めよ。
nの値が増えるにつれ、それまでの近似値の平均値を求め、近似値と平均値の差が平均値の1%におさまるまで繰り返す。
(最初にfor文を使って計算を繰り返すたびに平均値も出力するプログラムを作成する。
そしてforをwhileに置き換えたプログラムを作成する。そのときdo()whileを使え。)
[3] 環境
[3.1] OS: WindowsVista
[3.2] コンパイラ gcc
[3.3] 言語: C
[4] 期限: 09年10月28日20:00まで
[5] その他の制限: (1)に関してはif elseを使った文。(2)に関しては問題文通りです。
大学の授業ですが、全くならってない範囲を出題されました…
お願いします。
359:デフォルトの名無しさん
09/10/26 16:20:30
単純なループだから習ってないとは思えない。
応用がきかないのか数学的知識がないだけかググることすらできないのか。
360:デフォルトの名無しさん
09/10/26 16:43:24
>>358
(1)
#include <stdio.h>
int main(void)
{
int n;
double d = 0;
for(n=0; d < 3.14 || 3.15 < d; n++) {
if(n & 1) d -= 4.0 / (n * 2 + 1);
else d += 4.0 / (n * 2 + 1);
}
printf("%d回", n);
return 0;
}
361:デフォルトの名無しさん
09/10/26 17:52:15
[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まで
何度も何度も申し訳ないです。
自分の分からないところだけ載せてました。
それだけでは分かりづらいですね。
(ⅲ)が分かりませんお願いします。
362:デフォルトの名無しさん
09/10/26 17:57:57
>>349
ありがとうございます。
動けば十分ですので、貼ってもらえると嬉しいですm(_ _)m
363:デフォルトの名無しさん
09/10/26 18:02:14
>362
O(N^2)だから遅すぎて、お兄たん泣きたくなった、プロファイルかけたらqsort()の300倍の遅さ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
364:デフォルトの名無しさん
09/10/26 18:09:16
>>363
ありがとうございます!今から解読して勉強します。。
365:デフォルトの名無しさん
09/10/26 18:36:31
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++
[3.3] 言語:C++
[4] 期限:2009年10月27日 昼12時
[5] その他の制限:
すみませんが宜しくお願い致します。
366:333 ◆F8HqQ.0zX2
09/10/26 19:51:00
>>354
ありがとうございます。
実行して出力はできるようになりましたが、
100試行ごとの出力ができません。
ご教授をい願いします。
367:デフォルトの名無しさん
09/10/26 21:24:57
>>365
#include <stdio.h>
double f(double x) { return 3 * x * x; }
#define N 1000
int main()
{
int i;
double sum = 0.0;
for (i = 0; i < N; i++)
sum += 1.0 / N * f((double)i / N);
printf("S = %lf\n", sum);
return 0;
}
/* end */
368:333 ◆F8HqQ.0zX2
09/10/26 21:45:12
URLリンク(kansai2channeler.hp.infoseek.co.jp)
ここまでできました。
実行して出力したときに、
countを1000にするとうまく表示されるのですが、
countを100にしたときに、どうして壁を突き破るのか教えてください。
また、100にしても壁を突き破らない方法を教えてください。
369:デフォルトの名無しさん
09/10/26 21:54:15
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3.1] OS:Windows vista
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008
[3.3] 言語:C
[4] 期限:2009年10月28日
[5] その他の制限:特に無いです。
よろしくお願いします。
370:デフォルトの名無しさん
09/10/26 21:58:38
>>347->>348
ありがとうございました!!!!!!
371:デフォルトの名無しさん
09/10/26 22:37:06
1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):ニュートン法を用いて三次方程式の解を求める。
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C++
[4] 期限: 2009/10/28
[5] その他の制限:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
どこが悪いのかわかりません…。
ググりましたが自分の考えたアルゴリズムを尊重したいので、参考になりませんでした。
372:デフォルトの名無しさん
09/10/26 22:47:56
>>371
なんでa,b,c,d,x1,y1を整数にするの?浮動小数点数でいいじゃん
373:デフォルトの名無しさん
09/10/26 22:53:11
>>371
ニュートン法はお前の考えたアルゴリズムじゃねえだろw
374:デフォルトの名無しさん
09/10/26 23:00:51
ワシが育てた
375:デフォルトの名無しさん
09/10/27 00:32:40
>>359
すいませんが、教えてもらってないので何とも言えません(´・ω・`)
>>360
ありがとうございます。助かりました。
(2)に関しては教授にきいてみます
376:デフォルトの名無しさん
09/10/27 02:38:37
>>358,375
#include <stdio.h>
#include <math.h>
int main(void){
int n;
double d = 0, sum = 3;
for(n = 0; (sum / n - d) > 0.01; n++) {
if(n & 1) d -= 4.0 / (n * 2 + 1);
else d += 4.0 / (n * 2 + 1);
sum += d;
printf("%d 回目 , 平均 = %f\n",n,sum/n);
}
return 0;
}
377:デフォルトの名無しさん
09/10/27 02:39:56
[1] 授業単元:数値計算演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
上のソースコードのうち、行列計算を行うmatmul_blockが正しい結果を返しません
どこが間違っているのかご指摘お願いします
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2009年10月27日19時まで
378:デフォルトの名無しさん
09/10/27 08:36:11
>>371
アルゴリズムはあっていると思います。 >>372 の指摘のとおり、 a, b, c, x1, y1 を double にするとうまくいきます。
じゃあ、なにがまちがっているかというと、私にもわかんないんですが。
379:デフォルトの名無しさん
09/10/27 08:40:18
多次元配列はCではあまり使わないほうが良い。
ポインタと相性が合わないから
380:デフォルトの名無しさん
09/10/27 09:17:00
>>377
68行目の第3引数cでとりあえず普通に警告@VC2008
381:デフォルトの名無しさん
09/10/27 09:37:03
>>379-380
計算に与えられる行列はこのような配列で表せということだったんで・・・
デバッガで追いかけてみても、matmul_cacheのcは想定された動きしてるんで問題はないんじゃないかと思うんですが
382:デフォルトの名無しさん
09/10/27 11:19:07
いったん別の言語で書き直してみると良いかも
(GPCとかFPCとか)
383:デフォルトの名無しさん
09/10/27 12:18:21
三角形と四角形がぶつかったときの当たり判定をとりたいのですがどうすればよいでしょうか
384:デフォルトの名無しさん
09/10/27 12:34:38
PostScriptをPDFに変換してからテキスト抽出すればいいと思うけど。
385:デフォルトの名無しさん
09/10/27 12:37:29
>>383
BeginPath(hdc);
Polyline(hdc, ..., 3);
EndPath(hdc);
hRgn1 = PathToRegion(hdc);
BeginPath(hdc);
Polyline(hdc, ..., 4);
EndPath(hdc);
hRgn2 = PathToRegion(hdc);
hRgn = CreateRectRgn(0, 0, 0, 0);
if (CombineRgn(hRgn, hRgn1, hRgn2, RGN_AND) == NULLREGION) {
...
} else {
...
}
386:デフォルトの名無しさん
09/10/27 12:43:19
>>385
せっかく書いていただいたのにすみません
全て計算で求めなくてはいけないので関数は使用できないんです…
387:デフォルトの名無しさん
09/10/27 13:10:14
>>386
後出しじゃ判らんだろ。
前提として得られる情報がどれだけ有るか(x,y座標など)、を書くべし。
388:デフォルトの名無しさん
09/10/27 13:57:34
詳細に書くと内外判定で三角形の中に四角形が入っているか(触れている場合も“入っている”と認識)どうかを検査したいのです
XY座標は毎回変動します。関数は使わずに計算のみで求めなくてはならないので困っています
389:デフォルトの名無しさん
09/10/27 14:43:41
>>388
四角形の頂点が全て、三角形の内側にある事。
三角形の内側にある <--- 三辺をベクトルとみなして、各ベクトルから見て同じ側にある事。
390:デフォルトの名無しさん
09/10/27 14:44:44
四角形の辺と三角形の辺と交わっているか、
四角形の内部に三角形があるか、
三角形の内部に四角形があるかのどれかだろう。
391:デフォルトの名無しさん
09/10/27 14:54:35
>>390
三角形と四角形とが、互いに離れている場合もあり得る。
392:デフォルトの名無しさん
09/10/27 15:18:06
>>367
ありがとうございました!助かりました。
393:デフォルトの名無しさん
09/10/27 15:20:18
線分の当たり判定
URLリンク(totoki.my.land.to)
三角形、多角形による包含判定
URLリンク(www5d.biglobe.ne.jp)
394:デフォルトの名無しさん
09/10/27 15:21:48
>>389
完全に三角形のなかに含まれている場合はそれで良いのですが一部分でも触れている場合値を返すようにしたいのです
四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます
395:デフォルトの名無しさん
09/10/27 15:24:23
繰り返しますが、関数は使わずに計算のみで求めなくてはならないので困っています
396:デフォルトの名無しさん
09/10/27 15:28:40
[1] 授業単元:卒業研究
[2] 問題文(含コード&リンク):白黒濃淡画像[0-255]をカラー画像に変換
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語:C
[4] 期限: ([2010年1月10日24:00まで])
[5]その他の制限:
・色をユーザーから指定することはできない。
・画像はできればppm形式
様々な本や書類に目を通し、ネットを用いて一通り調べたつもりですが、一向に見つかりません。
難題だとは思います。最低限情報のある場所だけでも教えてもらえれば幸いです。
どうか御願い致します。
397:デフォルトの名無しさん
09/10/27 15:29:06
>>395
自分で作った関数もダメですか?
398:デフォルトの名無しさん
09/10/27 15:34:08
>>397
それは大丈夫です
399:デフォルトの名無しさん
09/10/27 16:06:23
入力ファイルからデータを読み込みロジック部分を関数化し、
qsort関数以外を使用して番号順にソートしたいのですが何かいい方法を教えてください。
読み込んだデータの例)
F016 C002
C002 C015
H001 F016
C015 H001
H009 H009
左のデータをソートし、右のように並び替えたいです。
400:デフォルトの名無しさん
09/10/27 16:09:04
sort関数
401:デフォルトの名無しさん
09/10/27 16:43:57
>396
通常は原理的に不可能です。
なぜなら、カラー画像は一般的に3つの独立したベクトルが張る色空間で表現されます。
ここで、色空間をRGB、濃淡をGrayとすると、明らかにベクトルが足りないので、色空間を変換できません。
よって、GrayからRGBへの色空間の変更ができないので、濃淡画像をカラー画像に変換することは*通常*できないことが示された。
疑似カラー画像に変換したり、ユーザか適当に色を配置してそれを元にカラー画像にすることは既に研究されています。
グレースケール画像に色差情報をこっそり埋め込んだり埋め込まなかったりって、最近僕が研究したんだけど。
402:デフォルトの名無しさん
09/10/27 16:51:38
>>399
すきなソートアルゴリズムを関数化すればいいだけじゃね?
403:デフォルトの名無しさん
09/10/27 17:25:05
>>394
> 四点だけで判定した場合四点に触れずに三角形に触れる可能性が出来てしまいます
四角形の頂点が全て内側or三角形の辺上、という前提で、↑ってどんな状況だろう?
まさか3次元以上?
あと、課題だったらテンプレに沿って、課題文をそのまま載せて欲しいんだが。
404:デフォルトの名無しさん
09/10/27 18:03:04
3角形の中に四角形の点が1つ以上あれば、でよくね
405:デフォルトの名無しさん
09/10/27 18:04:09
ああだめか。
結局交点も必要か
406:デフォルトの名無しさん
09/10/27 18:54:32
何気に難しいな
407:デフォルトの名無しさん
09/10/27 19:02:32
四角形のいずれの頂点も三角形の外側にあり、かつ、交点がない
以外は全部触れてるんじゃないの
408:デフォルトの名無しさん
09/10/27 19:23:11
四角形に4点だけで判定すると三角形の先っちょが刺さってる状態だと触れていると判定されないんだな
409:デフォルトの名無しさん
09/10/27 19:44:18
完全に数学の話題也
三角形の一点が原点になるように平行移動
三角形の原点を含む一辺がx軸になるように回転変換
原点を含みx軸と一致しない辺のy軸へ正射影
原点を含む2つの辺の長さが一致するように、y軸方向もしくは
x軸方向へのスカラー変換
これを行い三角形を直角二等辺三角形に変換して考える。
四角形に対しても同じ操作を行う。(四角形は四角形に移る)
交点を持つ条件は四角形の2つの頂点を結ぶ6個の直線が
x軸、y軸、直線x+y=1と交わる点の座標の値でわかる。
410:デフォルトの名無しさん
09/10/27 20:05:23
>>409
よくわからないが、それは速いのか?
411:デフォルトの名無しさん
09/10/27 20:07:42
>>410
とりあえず、見るからに誤差が大きそう
412:デフォルトの名無しさん
09/10/27 20:30:49
こういう話は数学に詳しくないと難しいな
413:デフォルトの名無しさん
09/10/27 20:33:16
離散数学しかやってないからな…
414:デフォルトの名無しさん
09/10/27 20:48:33
>>401
>>396です
丁寧にお答えいただきありがとうございます。
ユーザーから色は指定できないので、とりあえず疑似カラーについて調べてみたのですが、いまいちよくわかりませんでした。
何か参考になる文献やサイトがあれば教えていただきたいです。
415:デフォルトの名無しさん
09/10/27 21:27:07
>414
・疑似カラー化について
0710g36やnakatani1.pdfをクエリにして検索する
・ユーザ指定色について
colorization-siggraph04をクエリにして検索する
・色差情報の埋め込みについて
色差情報 埋めこみ カラー 復元をクエリにして検索する
ちなみに僕がやったのは、3つ目の色差情報を埋め込む方法ね
あとは自分で適当な単語を選べば見付かると思う、CiNiiとかでね
416:デフォルトの名無しさん
09/10/27 21:32:17
>>407,408
>>389では「四角形の頂点が全て、三角形の内側にある事」が判定条件。
417:デフォルトの名無しさん
09/10/27 21:44:29
>>416
意図が見えん。
418:デフォルトの名無しさん
09/10/27 21:47:28
>>415
わざわざURLまで貼っていただきありがとうございます。
明日URLを参考にしてプログラムを作ってみたいと思います。
419:デフォルトの名無しさん
09/10/27 22:56:02
>>383
イメージはこれでOK?
URLリンク(kansai2channeler.hp.infoseek.co.jp)
420:デフォルトの名無しさん
09/10/27 23:06:39
>>408
これで、どうだろ。
三角形の頂点が全て、四角形の外にある。 and
四角形の頂点が全て、三角形の外にある。
421:デフォルトの名無しさん
09/10/27 23:20:56
>>419
左側のNGをOKにしたらイメージ通りです
422:デフォルトの名無しさん
09/10/27 23:26:40
[1] 授業単元: c言語
[2] 問題文
課題1 整数 n を入力すると n から1 までを出力する
プログラムを作成せよ。
課題2 整数 n を入力すると1からn まで出力する。
ただし、3の倍数か、5の倍数の時には数字の右側に* と表示すること。
プログラムを作成せよ。
課題3 整数 n を入力すると1 から n までの間の、
3か5いずれかの倍数の個数を数えて表示するプログラムを作成せよ。
[3.1] OS: Windows
[4] 期限: 2009年10月29日まで
よろしくお願いします!!
423:デフォルトの名無しさん
09/10/27 23:27:45
それくらい自分でやれよ
どこが出来ないんだよ
424:デフォルトの名無しさん
09/10/27 23:29:09
>>420
URLリンク(2sen.dip.jp)
425:デフォルトの名無しさん
09/10/28 01:50:05
>>422
同じ大学キタ―(゚∀゚)―!!
#include <stdio.h>
int main()
スタートでお願いしたほうがいいよ
426:デフォルトの名無しさん
09/10/28 02:11:19
>>422
/* 課題1 */
#include <stdio.h>
int main() {
int n;
printf("整数を入力 > ");
scanf("%d", &n);
while (n > 0) {
printf("%d\n", n);
n--;
}
return 0;
}
427:デフォルトの名無しさん
09/10/28 02:13:06
>>422
/* 課題2 */
#include <stdio.h>
int main() {
int n, i;
printf("整数を入力 > ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("%d", i);
if ((i % 3 == 0) || (i % 5 == 0))
printf("*");
printf("\n");
}
return 0;
}
428:デフォルトの名無しさん
09/10/28 02:13:45
>>422って大学なんだ…
429:デフォルトの名無しさん
09/10/28 02:14:23
>>422
/* 課題3 */
#include <stdio.h>
int main() {
int n, i;
printf("整数を入力 > ");
scanf("%d", &n);
i = 0;
while (n > 0) {
if ((n % 3 == 0) || (n % 5 == 0))
i++;
n--;
}
printf("3か5の倍数の個数 = %d\n", i);
return 0;
}
430:デフォルトの名無しさん
09/10/28 03:23:32
>>428
後期授業の出だしならこんなもんだろ。
431:デフォルトの名無しさん
09/10/28 10:54:18
エクセルのマクロの問題ってここで質問しても無駄ですか??
駄目ならどこで質問したらいいですか?
432:デフォルトの名無しさん
09/10/28 11:31:34
Excel VBA質問スレ Part13
スレリンク(tech板)
433:デフォルトの名無しさん
09/10/28 11:45:45
>>428
大学に通ったことの無いお前じゃ、大学でどんな授業が行われているか知らんのだろうね・・・
あと、何もC言語は専門分野の学生しか受けない授業でもないから。
434:デフォルトの名無しさん
09/10/28 16:57:45
>>383
四角形は三角形2つに分割出来るので三角形と三角形の衝突判定を作ればいい
2つの三角形のそれぞれの辺のベクトル方向の1次元に全ての頂点を射影して
分離軸が1本でも引けたら衝突してない。引けなかったら衝突してる。
435:デフォルトの名無しさん
09/10/28 17:30:35
>>433
大学生ですが
436:デフォルトの名無しさん
09/10/28 18:24:53
>>433
一般学生に C を教えるのは大変でしょうね。当時は pascal が使われていましたが、今はなんでしょうか?
437:デフォルトの名無しさん
09/10/28 18:54:36
普通科の高校でC言語からやるか?
そしたら大学で基本中の基本からやるにきまってるだろ
438:デフォルトの名無しさん
09/10/28 19:08:39
いまだと文系のパンキョーでもCの講義あったりするんかね
439:デフォルトの名無しさん
09/10/28 19:09:24
時々お世話になるFラン大学生だけどハローワールドとかからやったよ
1単元90分×15コマで3単元に渡ってやって
四則演算プラスアルファ
入出力:printf scanf
制御文:if switch for do while
配列
ファイル入出力:fopen fclose fprintf fscanf
乱数:rand() srand()
自作関数
くらいやった
440:デフォルトの名無しさん
09/10/28 19:09:38
最近の高校って数学でプログラム習うんじゃないの?
441:デフォルトの名無しさん
09/10/28 19:18:38
それはエクセルとかじゃね?
工業高校出身だけどBasicから始まってC言語に行ってたな。
大学でもCから教え始めるから内容かぶって単位余裕でした、みたいな感じで萎えた。
442:デフォルトの名無しさん
09/10/28 21:37:31
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
「スコアー,ステージナンバー,名前」が入っているファイルがあるとする。
降順にソート済みのスコアーデータのファイルから、上位10件を配列に読み込み、
新たに11件目のスコアーデータを入力後、スコアーの大きい順に並び替えを行い、
上位10件のデータを再度書き込むプログラムを作成せよ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C言語
[4] 期限: 特にありません
[5] その他の制限:特にありません
宜しくお願い致します。
443:デフォルトの名無しさん
09/10/28 21:49:14
出力結果をコピーする方法って無いですか?
444:デフォルトの名無しさん
09/10/28 21:56:08
>>443
まうすでえらぶ
445:デフォルトの名無しさん
09/10/28 21:57:25
キーボードのプリントスクリーンでクリップボードにコピーされるよ!
446:デフォルトの名無しさん
09/10/28 22:06:01
リダイレクトすれば?
447:デフォルトの名無しさん
09/10/29 01:10:57
>>443
Windows7なら普通にコピペ出来る!買うんだ。
448:デフォルトの名無しさん
09/10/29 04:30:25
>>447
Meもできるからオススメ
449:デフォルトの名無しさん
09/10/29 11:51:37
[1] 授業単元:C++実習2
[2] 問題文(含コード&リンク):
-関数テンプレート-
配列へのポインタと要素数を渡すと昇順にソートする関数を作成せよ。
但し,関数テンプレートにより作成すること。想定する配列の型は文字列以外とする。
ソートのアルゴリズムはバブルソート(単純交換法)とする。また,関数をテストする適切なmain関数も作成し提出すること。
関数名前名は b_sort とし,第1引数は配列へのポインタ, 第2引数はint型で配列の要素数, 戻値は無しとする。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:visual studio 2008
[3.3] 言語:C++
[4] 期限:[2009年11月1日23:00(日)まで]
よろしくお願いします。
450:デフォルトの名無しさん
09/10/29 14:51:32
>>449
#include <iostream>
using namespace std;
template <typename T> void b_sort(T a[], int n)
{
for (int i = 0; i < n - 1; ++i) {
for (int j = n - 1; j > i; --j) {
if (a[j - 1] > a[j]) {
T temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp;
}
}
}
}
int main()
{
int a[] = { 3, 8, 1, -1, 9, 8, 7 };
double b[] = { 3.09, 2.1, -9.27, 8.0, 3.11, -6.5 };
b_sort(a, 7);
for (int i = 0; i < 7; ++i) cout << a[i] << ' '; cout << endl;
b_sort(b, 6);
for (int i = 0; i < 6; ++i) cout << b[i] << ' '; cout << endl;
return 0;
}
451:デフォルトの名無しさん
09/10/29 15:55:37
URLリンク(www.dotup.org)
【質問テンプレ】
[1] 授業単元:計算機実習応用
[2] 問題文(含コード&リンク):
URLリンク(www.dotup.org)
[3] 環境
[3.1] OS: (Windows
[3.2] コンパイラ名とバージョンVC++
[3.3] 言語: (C
[4] 期限: ([2009年10月30日10:00まで]
[5] その他の制限:
明日の1限の授業中に出される課題です。
授業時間内に提出すれば評価が高くなるのでお願いします。
452:デフォルトの名無しさん
09/10/29 16:28:33
>>451
お断りします。
453:デフォルトの名無しさん
09/10/29 16:41:00
>>442
URLリンク(kansai2channeler.hp.infoseek.co.jp)
454:デフォルトの名無しさん
09/10/29 19:46:40
>>451
どうやって問題文を読めばいいのかわかりません。
455:デフォルトの名無しさん
09/10/29 20:06:26
新井さん?
456:378
09/10/29 21:23:19
>>371
ちょっとみなおしてみました。
問題は x1, y1 を整数で宣言したことでしょうね。
457:デフォルトの名無しさん
09/10/29 22:05:13
>>451
問1
return x*x+y*y
c = function1(a, b);
printf("%d\n", c);
問2
#include<stdio.h>
#include<math.h>
void wasasekisho(double x, double y, double* pwa, double* psa, double* pseki, double* psho);
int main(){
double a, b;
double lpwa, lpsa, lpseki, lpsho;
printf("a...");
scanf("%lf", &a);
printf("b...");
scanf("%lf", &b);
wasasekisho(a, b, &lpwa ,&lpsa, &lpseki, &lpsho);
printf("wa...%.0lf, sa...%.0lf, seki...%.0lf, sho...%.0lf",lpwa ,lpsa, lpseki, floor(lpsho));
}
void wasasekisho(double x, double y, double* pwa, double* psa, double* pseki, double* psho)
{
*pwa = x+ y;
*psa = x - y;
*pseki = x * y;
*psho = x / y;
}
458:デフォルトの名無しさん
09/10/29 22:37:17
問3
どういう確率分布にしたがっているのかがわからん。本来解けないはず?。
たぶんそれぞれ独立な事象で確率1/5だとして、期待値==平均(kekka)になるのかなとおもったが、
#include <stdio.h>
#include <math.h>
double heikin(int n, double x[]){
int i;
double sum;
sum=0.0;
for(i=1;i<=n;i++){
sum += x[i-1];
};
return sum/n;
}
int main(){
static double data[]={3.1, 5.8, 4.1, 1.0, 8.3};
double kekka=0.0, bunsan = 0.0;
kekka=heikin(5,data);
bunsan= pow(0.2, 2) *(kekka * 5.0) - pow(kekka, 2);
printf("データの平均は %lf\n",kekka);
printf("データの分散は %lf\n",bunsan);
return 0;
}
と書くと分散が負になってしまいましたとさw
問4
関数の中身を定義する前に,先に関数の引数の型および返り値の型だけをあらかじめ宣言しておくこと。
459:デフォルトの名無しさん
09/10/29 22:58:10
>>444->>448
どうもありがとうございました!!!
460:458
09/10/29 23:11:24
>>451
#include <stdio.h>
#include <math.h>
double heikin(int n, double x[]){
int i;
double sum;
sum=0.0;
for(i=1;i<=n;i++){
sum += x[i-1];
};
return sum/n;
}
int main(){
static double data[]={3.1, 5.8, 4.1, 1.0, 8.3};
double kekka=0.0, bunsan = 0.0;
double vx=0.0;
kekka=heikin(5,data);
for(int i = 0; i < 5; i++)
vx += pow(data[i], 2)*0.2;
bunsan = vx - pow(kekka, 2);
printf("データの平均は %lf\n",kekka);
printf("データの分散は %lf\n",bunsan);
return 0;
}
なんか例と値違うけど…さっきとちがって式はあってるはず
461:デフォルトの名無しさん
09/10/30 22:15:43
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
問題1:整数表記を <integer>::= <digit> {<digit>|'_'}*に書き換える。
正の整数をdigitだけではなく、'_'もトークンの一部として判別させてやるようにプログラムを書きかえる
例えば、10_23と仮に有った場合は10=整数値、_=識別子、23=整数値という風に判別されるのではなく10_23=1023=整数値となるようにしなさい。
問題2:以下のようなトークンも判別できるようにしてみる。
句切り文字:'(',
句切り文字:'(',
句切り文字:';',
演算子:'='
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名:gcc
[3.3] 言語: C言語
[4] 期限: 2009年11月5日
[5] その他の制限: とくにないです。よろしくお願いします。
462:デフォルトの名無しさん
09/10/31 18:45:36
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):キューをC言語で作成する
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio 2008
[3.3] 言語: C
[4] 期限: 2009/11/2
[5] その他の制限:
URLリンク(kansai2channeler.hp.infoseek.co.jp)
463:デフォルトの名無しさん
09/10/31 18:49:04
>>462ですが①と②の部分を改変してください。よろしくお願いします。
464:デフォルトの名無しさん
09/10/31 21:34:41
>462
境界条件が曖昧なので適当にやらせてもらった。
dequeueできないときは0が返るようにしたけど、よかったのか?
標準Cにあわないところは修正しておいた。VSにしたって、void main()はどうかと思ったので。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
465:デフォルトの名無しさん
09/10/31 21:50:06
>461
問題1:整数表記を <integer>::= <digit> {<digit>|'_'}*に書き換える。
問題の意味が全くわからない。問題文はこれで全部なの?
#例えば、10_23と仮に有った場合は10=整数値、_=識別子、23=整数値という風に判別されるのではなく10_23=1023=整数値となるようにしなさい。
というの10_23を引数に与えたらどうなればよい?
リンク先のコードに食わせると下みたいになった。
$ ./main 10_23
整数定数: 10 (2文字)
識別子: _23 (3文字)
トークン数は2個!
466:デフォルトの名無しさん
09/10/31 22:18:04
>>465
それBNF表記っていって
たとえば
10_23_23=102323
10_______23=1023
になるようにしろってことだよ。
467:466
09/10/31 22:24:07
BNF記法だった.
<変数>…<変数>で変数を表す。
{変数}…{変数}の変数を省略するか、一回以上繰り返し用いることを表す。
|…または を表す
::=…左辺の変数が、右辺で定義されることを表す。
あ、おれ解けないんでw
468:デフォルトの名無しさん
09/11/01 01:30:56
>461
問1だけ
ほとんどテストしていないのであしからず
URLリンク(kansai2channeler.hp.infoseek.co.jp)
469:464
09/11/01 01:33:21
>462
ごめ。違うのあげてた。
ファイル消えているのですぐにはできない。
思い出しながら書いてみる。
470:464
09/11/01 01:43:01
>462
URLリンク(kansai2channeler.hp.infoseek.co.jp)
471:デフォルトの名無しさん
09/11/01 20:56:25
[1] 授業単元:C++
[2] 問題文(含コード&リンク):メニューを表示し選択された処理を行なう。各機能ごとに関数にし,各関数へのポインタは配列に格納しておきメニュー選択に応じて動的に呼び出す。
実行例:URLリンク(kansai2channeler.hp.infoseek.co.jp)
472:デフォルトの名無しさん
09/11/01 20:58:45
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限: 2009年11月3日
どなたか出来る方がいましたらお願い致します。
473:デフォルトの名無しさん
09/11/01 21:06:48
>>450
遅れましたが回答ありがとうございました
474: ◆DfRWmhgSjg
09/11/01 21:28:36
[1] 授業単元:OS入門
[2] 問題文(含コード&リンク):
マルチプロセスを利用しfork(),セマフォ,メッセージをすべて使用したシステムの開発,結果を以下の項目にまとめ報告
1. システムの要求仕様
3. 上記プログラムの簡単な解説,特に fork(),メッセージ,セマフォの周辺について
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: [2009年11月5日08:00まで]
[5] その他の制限:
よろしくお願いします
475:デフォルトの名無しさん
09/11/01 21:30:13
>>474
設計と要求仕様までこっちで定義しろって馬鹿だろw
476:デフォルトの名無しさん
09/11/01 21:48:32
>>471>>472
VS2008環境で作った
URLリンク(kansai2channeler.hp.infoseek.co.jp)
#include <String>は消しといてね
477:474
09/11/01 21:54:55
>>475
私もそう思いましたが、
「本当に簡単なものでいいから作ってください。こういうにはあなたたちのインスピレーションしだいですので」
といわれてしまい・・・。
478:デフォルトの名無しさん
09/11/01 21:55:48
>>477
いや、教授とか講師とかがじゃなくってお前がねーよwww
479:474
09/11/01 22:01:25
すみません。
要求仕様など考えてから出直してきます。
480:デフォルトの名無しさん
09/11/01 22:58:19
>>471-472
「関数へのポインタを配列に」いれろとのことですので、そのようにしました。
URLリンク(codepad.org)
481:デフォルトの名無しさん
09/11/01 23:16:02
[1]C言語初級
[2] 次のプログラムから仕様書を起こして、全く異なるアルゴリズム
で同じ処理をするものに書き換えよ
URLリンク(codepad.org)
[3] Windows XP/Visual studio 2005/C
[4] 11/10迄
482:デフォルトの名無しさん
09/11/01 23:23:47
ああwww
関数のポインタとか見逃してた。
ごめん
483:471
09/11/02 00:36:52
>>480
ありがとうございます
しかしVS2008でエラーが出るのですがどうしたらよいでしょうか?
484:474
09/11/02 01:07:11
<<474
<<479
入力されたメッセージ1文字をキューにいれるプログラム
URLリンク(kansai2channeler.hp.infoseek.co.jp)
キューからメッセージを取り出し表示をするプログラム
URLリンク(kansai2channeler.hp.infoseek.co.jp)
を参考にして送信用プログラムにfork()を付け加え文字を重複送信するようにするプログラム。
またセマフォを用いてアクセスを制限する。
理解が浅いため本当にこれでいいの不安なのですがよろしくお願いします。
485:デフォルトの名無しさん
09/11/02 03:03:19
>>481
URLリンク(codepad.org)
3の倍数と3の付く数字を
10000*10000までの範囲で列挙する。
文字列型で10を出力すると
アスキーコードでは改行の意味に。
同等の処理は\nで行った。
各位の和が3の倍数であれば
その数は3の倍数であることを使い求めた。
486:satoshi
09/11/02 03:04:56
double型の引数を2つ持ち、aつの引数の積の絶対値を返す、
double型の戻値を持つ関数 absmul() を作成した上で、動作の
確認の出来るプログラムとして作成せよ。という問題と
標準入力からの入力に対して、アルファベットを全て空白文字
に変更して出力するプログラムを作成せよ。という問題がわかりません。
どなたかお願いします
487:satoshi
09/11/02 03:06:50
aつ が 2つの間違いです。
488:デフォルトの名無しさん
09/11/02 07:13:30
>>483
エラーを全部貼ってください。
489:デフォルトの名無しさん
09/11/02 07:15:11
>>486
>>1
490:satoshi
09/11/02 11:45:59
[1] プログラミング
[2] double型の引数を2つ持ち、2つの引数の積の絶対値を返す、
double型の戻値を持つ関数 absmul() を作成した上で、動作の
確認の出来るプログラムとして作成せよ。という問題と
標準入力からの入力に対して、アルファベットを全て空白文字
に変更して出力するプログラムを作成せよ
[3] 環境
[3.1] OS: (Windowsxp)
[3.2] コンパイラ名とバージョン:UNIX 2.1.4
[3.3] 言語: (C言語)
[4] 期限: (11月3日 13時
[5] その他の制限: (特になし)
491:デフォルトの名無しさん
09/11/02 12:07:11
>>490
#include<stdio.h>
double absmul(double a, double b){
short x=0x1234;
double c;
unsigned char *p, *q;
c=a*b;
p=(unsigned char*)&x;
q=(unsigned char*)&c;
if(*p==0x12) q[0]&=0x7f;
else q[sizeof(double)-1]&=(~0)^0x80;
return c;
}
int main(void){
double a=2.0, b=-3.0;
printf("%f\n", absmul(a, b));
return 0;
}
492:デフォルトの名無しさん
09/11/02 12:31:03
>>490
#include<stdio.h>
int main(void)
{
int c, map[256];
unsigned char *p="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for(c=0;c<256;c++) map[c]=c;
for(;*p;p++) map[*p]=' ';
while((c=getchar())!=EOF)
{
putchar(map[c]);
}
return 0;
}
493:デフォルトの名無しさん
09/11/02 12:38:10
アルゴリズムにsortというのがりますが、配列をsortするときにもとの配列番号が
何番に変わったか知る方法はありますか?ソートした配列を参考に別の配列も並び替えたいです。
494:デフォルトの名無しさん
09/11/02 12:44:27
ソートする配列と同じ長さの配列用意して、ソートする前にそこへコピーしとけば良いじゃん
あとはその二つを比較するだけ
495:デフォルトの名無しさん
09/11/02 13:06:44
>>493
構造体で例えば
sruct abc {
double a;
int n;
};
としといて、aにバラバラの値を入れ、nに連番を入れて置きます
その後構造体でqsort(比較基準はabc.a)を掛ければ、nに
どのようにバラバラになったか順列が入ります
496:デフォルトの名無しさん
09/11/02 13:20:40
こんな感じ
struct abc {
double a;
int n;
};
int comp(const void *a, const void *b)
{
struct abc x = *(struct abc *)a, y = *(struct abc *)b;
return (x.a < y.a) ? -1 : (x.a > y.a) ? 1 : 0;
}
int main(void)
{
struct abc aa[10];
int i;
srand((unsigned)time(NULL));
for (i = 0; i < 10; i++) {
aa[i].a = rand();
aa[i].n = i;
}
qsort(aa, 10, sizeof(aa[0]), comp);
for (i = 0; i < 10; i++)
printf("%d ", aa[i].n);
putchar('\n');
return 0;
}
497:デフォルトの名無しさん
09/11/02 13:38:02
【問題】0から40までの数字で3のつく数字と3の倍数を表示するプログラムを作成せよ
お願いいたします。
498:デフォルトの名無しさん
09/11/02 13:39:43
>>497
>>1
499:デフォルトの名無しさん
09/11/02 13:47:20
>>497
#include <stdio.h>
int main(void)
{
printf("0 3 6 9 12 13 15 18 21 23 24 27 30 31 32 33 34 35 36 37 38 39");
return 0;
}
500:デフォルトの名無しさん
09/11/02 13:47:39
もうネタとしか思えなくなってきた
501:デフォルトの名無しさん
09/11/02 13:50:08
>>499
わろたw
502:デフォルトの名無しさん
09/11/02 13:53:31
>>497
#include <stdio.h>
#include <string.h>
int main(void)
{
int i;
char buf[32];
for(i = 0; i <= 40; i++) {
sprintf(buf, "%d", i);
if (i % 3 == 0 || strchr(buf, '3') != NULL) printf("%d ", i);
}
return 0;
}
503:デフォルトの名無しさん
09/11/02 15:10:59
>>490
アルファベットとは何ぞやということになるな。
504:デフォルトの名無しさん
09/11/02 17:50:16
ハングルはアルファベットなのか(字母と方塊字で扱いは違うのか?)なんてのは
さすがに考えないとして、ウムラウトやセディーユのついた文字はどうするのかね。
505:デフォルトの名無しさん
09/11/02 18:00:43
isalphaで判定できるものでいいだろ、常識的に考えて
506:デフォルトの名無しさん
09/11/02 19:11:19
>>483
VC++2008EE をインストールして確かめました。なるほどねえ、VC は構造体タグの name space は独立していないんですね。
URLリンク(codepad.org)
507:デフォルトの名無しさん
09/11/02 20:01:57
[1] 授業単元: C++
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VS2008
[3.3] 言語: C++
[4] 期限: 2009/11/07
問題が2つあります。それぞれ違うファイルにしてもらえたならば幸いです。
宜しくお願い致します。