5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C/C++の宿題を片付けます 43代目

1 :デフォルトの名無しさん:2005/05/11(水) 15:59:44
printf("%s\n","あんたの宿題片づけます");
――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
[5] その他の制限:

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

【歴代スレは>>2-13

2 :デフォルトの名無しさん:2005/05/11(水) 16:02:50
42代目: http://pc8.2ch.net/test/read.cgi/tech/1113811213/
41代目: http://pc8.2ch.net/test/read.cgi/tech/1109542053/
40代目: http://pc5.2ch.net/test/read.cgi/tech/1107625122/
39代目: http://pc5.2ch.net/test/read.cgi/tech/1106650397/
38代目: http://pc5.2ch.net/test/read.cgi/tech/1105541524/
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/

3 :デフォルトの名無しさん:2005/05/11(水) 16:03:18
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
28代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html

4 :デフォルトの名無しさん:2005/05/11(水) 16:03:42
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
09代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
08代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
07代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
06代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
05代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
04代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
03代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
02代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
01代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html

5 :デフォルトの名無しさん:2005/05/11(水) 16:05:01
>>1


6 :985:2005/05/11(水) 16:10:56
1さんお疲れ様でした。
前スレ埋まってしまったのでもう一度質問します
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文:
kg→gの変換プログラムを作る。
xkgのxをキーボードから入力すると

xkgはyyyygです。

と答えるプログラムを作成しなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限: まだ授業始まったばかりなので演算を習ったところです。

初歩的な質問ですいませんが、よろしくお願いします。




7 :デフォルトの名無しさん:2005/05/11(水) 16:15:40
>>6
int main(int argc, char* argv[])
{
printf( "kg→gの変換プログラムを作る。\n" );
printf( "xkgのxをキーボードから入力すると\n" );
printf( "\n" );
printf( "xkgはyyyygです。\n" );
printf( "\n" );
return ( 0 );
}


8 :デフォルトの名無しさん:2005/05/11(水) 16:17:35
>>6
#include<stdio.h>
int main(){
int x;
scanf("%d",&x);
printf("%dkgは%dgです。\n",x,x*1024);
return 0;
}
//要修正。

9 :デフォルトの名無しさん:2005/05/11(水) 16:24:32
>>8
warota

10 :985:2005/05/11(水) 16:28:22
>>7,8
早速のお返事ありがとうございます。
問題文わかりにくくてすいません。
後で早速試してみますね。
どうもありがとうございました。

11 :デフォルトの名無しさん:2005/05/11(水) 16:40:16
>>1
自分好みのスレタイに変えてんじゃねーよバカ

12 :デフォルトの名無しさん:2005/05/11(水) 16:49:41
こうかな?

#include<stdio.h>

int main(void)
{
char buf[256];
double x;
while(printf("重さを入力してください:"), fgets(buf, sizeof(buf), stdin) != NULL)
if(sscanf(buf, "%lf", &x) == 1)
break;
printf("%.0lf kg は %.0lf gです。\n", x, x * 1000.0);
return 0;
}

13 :デフォルトの名無しさん:2005/05/11(水) 16:51:09
>>11
1代目を見てみろ
好きに変えたのはぼるじょあの方だ

14 :デフォルトの名無しさん:2005/05/11(水) 16:56:14
[1] 授業単元:C 言語
[2] 問題文(含コード&リンク):
プログラムの実行が初めてであれば,その旨のメッセージを表示し,実行が2
回目以降であれば,1回前に実行したときの日付と時刻と「気分」を表示する
プログラムを作成せよ.すなわち,前回の時刻を表示した後に「feeling:」と
入力を促して,キーボードから文字列を読み込んで,ファイルに書き込む.
例えば,「good」と入力した場合,次回に実行したときには,
「9999-99-99-99:99:99 good」と表示すること.
[3] 環境
 [3.1] OS:iMac
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限 :無期限
[5] その他の制限:
よろしくお願いします。



15 :デフォルトの名無しさん:2005/05/11(水) 16:56:59
あげ忘れ

16 :デフォルトの名無しさん:2005/05/11(水) 16:59:57
乱数を初期化した後で、x=rnd(1)とするとどんな数をでたらめに発生させてxに代入するのですか?

17 :デフォルトの名無しさん:2005/05/11(水) 17:01:13
お願いします。

[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク): 静的記憶域期間が与えられたオブ
ジェクトのアドレスを表示するプログラム
を作成せよ.
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限 :2005/05/13
[5] その他の制限:なし


18 :デフォルトの名無しさん:2005/05/11(水) 17:10:20
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク): Rnd()やIntを用いて1以上12以下の整数を乱数として発生させ
1が出たらA、2が出たらBみたいなプログラムを作る。VBコードを示せ
[3] 環境
 [3.1] OS: 98
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:
[4] 期限:明日まで[5] その他の制限:

お願いしますです

19 :デフォルトの名無しさん:2005/05/11(水) 17:12:14
>>18
VBかよ!!!!!

20 :デフォルトの名無しさん:2005/05/11(水) 17:17:22
>>14
#include <stdio.h>
#include <string.h>
#include <time.h>
#define DATE_FILE "date.txt"
int main(void)
{
char buf[256], *p = "プログラムの実行が初めてです。";
time_t t;
struct tm *tm;
FILE *fp = fopen(DATE_FILE, "r");
if(fp)
{
fgets(buf, sizeof(buf), fp);
fclose(fp);
p = buf;
}
puts(p);
printf("feeling:");
fgets(buf, sizeof(buf), stdin);
p = strchr(buf, '\n'); if(p) *p = '\0';
time(&t); tm = localtime(&t);
fp = fopen(DATE_FILE, "w");
if(fp)
{
fprintf(fp, "%04d-%02d-%02d-%02d:%02d:%02d %s", tm->tm_year + 1900, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, buf);
fclose(fp);
}
else
printf("ファイル %s が書き込み用に開けません。\n", DATE_FILE);
return 0;
}

21 :デフォルトの名無しさん:2005/05/11(水) 17:18:28
>>16
質問の意味が不明というかスレ違い

22 :デフォルトの名無しさん:2005/05/11(水) 17:19:35
>>17
#include <stdio.h>

int main(void)
{
static int i;
printf("%p\n", &i);
return 0;
}

23 :デフォルトの名無しさん:2005/05/11(水) 17:27:03
>>18
Option Explicit

Sub Main()

Dim I As Integer, C As String

Randomize
I = Int(Rnd * 12) + 1
C = Chr(Asc("A") + I - 1)
MsgBox C

End Sub

24 :デフォルトの名無しさん:2005/05/11(水) 17:29:00
>>20
どうもです。

25 :デフォルトの名無しさん:2005/05/11(水) 17:59:00
>>20
>printf("ファイル %s が書き込み用に開けません。\n", DATE_FILE);
fprintf(stderr, "ファイル " DATE_FILE " が書き込み用に開けません。\n");


26 :デフォルトの名無しさん:2005/05/11(水) 18:07:04
1] 授業単元:プログラミング技術
[2] 問題文:最初に総人数、その後n人目の点数を入力し、
  そのデータを並び替えて降順および昇順で表示するプログラムを作成しなさい
[3] 環境
 [3.1] OS WindosXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++
[4] 期限:6月11日
[5] その他の制限:


27 :デフォルトの名無しさん:2005/05/11(水) 18:19:31
>>23さんありがとうございました!

28 :デフォルトの名無しさん:2005/05/11(水) 18:22:04
>>26
> [4] 期限:6月11日

一月後でいいのか。

29 :デフォルトの名無しさん:2005/05/11(水) 18:50:23
>>26
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int GeSizeT(const char *itemname, size_t max) {
char buf[256]; size_t i;
for(; ; ) {
printf("%sを入力してください: ", itemname);
fgets(buf, sizeof(buf), stdin);
if(sscanf(buf, "%u", &i) == 1 && i <= max) break;
puts("エラーです。");
}
return i;
}
int cmp_asc(const void *elem1, const void *elem2) { return *(int *)elem1 - *(int *)elem2; }
int cmp_desc(const void *elem1, const void *elem2) { return *(int *)elem2 - *(int *)elem1; }
int main(void) {
char buf[256];
size_t i, sw, num = GeSizeT("総人数", (size_t)-1);
size_t *scores = malloc(sizeof(int) * num);
if(!scores) { fputs("メモリが足りません。\n", stderr); return -1; }
for(i = 0; i < num; i++) {
sprintf(buf, "%u 人目の点数", i + 1);
scores[i] = GeSizeT(buf, 100);
}
sw = GeSizeT("昇順に表示するなら 0 を、降順なら 1 ", 1);
qsort(scores, num, sizeof(size_t), sw? cmp_desc: cmp_asc);
for(i = 0; i < num; i++)
printf("%u: %u\n", i + 1, scores[i]);
free(scores);
return 0;
}

30 :>>26:2005/05/11(水) 18:51:29
間違えましたorz
5月です…すいません

31 :29:2005/05/11(水) 18:58:17
#include <limits.h> 要らなかった ○| ̄|_

32 :デフォルトの名無しさん:2005/05/11(水) 19:26:34
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
プログラムの実行が初めてであれば,その旨のメッセージを表示し,実行が2 回目以降であれば,
1回前に実行したときの日付と時刻と「気分」を表示するプ ログラムを作成せよ.
日付・時刻を struct tm型の値として,直接バイナリに 読み書きすること.
[3] 環境
 [3.1] OS win xp
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C言語
[4] 期限 :なし
[5] その他の制限:



33 :デフォルトの名無しさん:2005/05/11(水) 20:20:14
[1] 授業単元:C
[2] 問題文(含コード&リンク): 要素型がdouble型で要素数が10
である配列の全要素の値を読み書きするプログ ラムを作成せよ.
[3] 環境
 [3.1] OS:win xp
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限 :無期限
[5] その他の制限:


34 :デフォルトの名無しさん:2005/05/11(水) 20:29:21
どういう風に読み書きしたらいいのだろうか・・・

35 :33:2005/05/11(水) 20:31:55
>>33
任意に読み書きできる、という意味だと思います。

36 :33:2005/05/11(水) 20:32:28
>>34
任意に読み書きできる、という意味だと思います。

37 :デフォルトの名無しさん:2005/05/11(水) 20:35:47
前スレが埋まったのでもう一度…
[1] 授業単元:プログラミング
[2] 問題文
英文をファイル入力で読み込み、7文字以上の英単語は大文字に変換して標準出力せよ。
なお、入力にはfscanfを、出力にはprintfを用いること。
[3] 環境
 [3.1] OS:winxp
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語C
期限 今週末

例えば、
This problem is inportant.
という英文が書かれたファイルを読み込んだときに
This PROBLEM is INPORTANT.
という風に変換して標準出力したいのです。
よろしくお願いします。

38 :デフォルトの名無しさん:2005/05/11(水) 21:25:30
>>37
#include<ctype.h>の中にint toupper(int c)とint tolower(int c)って関数がある。
前者は小文字を大文字に、後者は大文字を小文字にする。

39 :デフォルトの名無しさん:2005/05/11(水) 21:26:53
>>32 >14 と似ているな

#include <stdio.h>
#include <string.h>
#include <time.h>
#define DATE_FILE "date.txt"
int main(void)
{
char buf[256] = { 0 }, *p;
time_t t;
FILE *fp = fopen(DATE_FILE, "r");
if(fp) {
struct tm tm;
fread(&tm, sizeof(struct tm), 1, fp); fgets(buf, sizeof(buf), fp);
fclose(fp);
printf("%04d-%02d-%02d-%02d:%02d:%02d %s\n", tm.tm_year + 1900, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, buf);
}
else
puts("プログラムの実行が初めてです。");
printf("feeling:");
fgets(buf, sizeof(buf), stdin);
p = strchr(buf, '\n'); if(p) *p = '\0';
fp = fopen(DATE_FILE, "w");
if(fp) {
struct tm *tm; time(&t); tm = localtime(&t);
fwrite(tm, sizeof(struct tm), 1, fp); fputs(buf, fp);
fclose(fp);
}
else
printf("ファイル %s が書き込み用に開けません。\n", DATE_FILE);
return 0;
}

40 :39:2005/05/11(水) 21:27:57
ちなみに 「struct tm型の値として,直接バイナリに」 は本来やっちゃいけないこと。
出題したやつ祭れ。

41 :デフォルトの名無しさん:2005/05/11(水) 21:35:46
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク): 以下のメンバーを持つ構造体"player"をC言語で宣言せよ.

・背番号
・名前


そして、「赤星(53),藤本(9),シーツ(4),金本(6),今岡(7)」
の5名の名前と背番号をC言語で静的に宣言せよ.


[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限 :明日12日
[5] その他の制限:

タイガース初心者ですが、よろしくお願いします。


42 :デフォルトの名無しさん:2005/05/11(水) 21:50:41
>>33 期待通りの動作かは知らないが要件は一応満たしてるぞ
#include <stdio.h>
#define VALUES_FILE "values.dat"
#define VALUES_NUM 10
void Input(const char *itemname, const char *format, void *data) {
char buf[256];
for(; ; ) {
printf("%sを入力してください: ", itemname);
clearerr(stdin); *buf = '\0'; fgets(buf, sizeof(buf), stdin);
if(sscanf(buf, format, data) == 1) break;
puts("エラーです。");
}
}
int GetSizeT(const char *itemname) { size_t i; Input(itemname, "%u", &i); return i; }
double GetDouble(const char *itemname) { double d; Input(itemname, "%lf", &d); return d; }
int main(void)
{
double values[VALUES_NUM];
int i;
FILE *fp = fopen(VALUES_FILE, "r");
if(fp) { fread(values, sizeof(values), 1, fp); fclose(fp); }
else for(i = 0; i < VALUES_NUM; i++) values[i] = 0.0;
for(; ; ) {
for(i = 0; i < VALUES_NUM; i++) printf("%d: %f\n", i, values[i]);
while((i = GetSizeT("書き換える数値の番号")) >= VALUES_NUM) puts("エラーです。");;
values[i] = GetDouble("置き換える値");
fp = fopen(VALUES_FILE, "w");
if(fp) { fwrite(values, sizeof(values), 1, fp); fclose(fp); }
else fprintf(stderr, "ファイル " VALUES_FILE " が書き込み用に開けません。\n");
}
return 0;
}

43 :デフォルトの名無しさん:2005/05/11(水) 22:01:48
>>41

typedef struct _player {

unsigned int jersey_number;
const char* name;

} player;

static player players[] = {

{ 4, "シーツ" },
{ 6, "金本" },
{ 7, "今岡" },
{ 8, "山本浩二" },
{ 9, "藤本" },
{ 53, "赤星" }

};


44 :デフォルトの名無しさん:2005/05/11(水) 22:04:40
>>37
一応動くけど、fscanf() じゃ改行みんな消えちゃうよ。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define ENGLISH_FILE "english.txt"
#define BORDER 7
int main() {
char buf[256];
FILE *fp = fopen(ENGLISH_FILE, "r");
if(!fp) { fprintf(stderr, "ファイル " ENGLISH_FILE " が読み込み用に開けません。\n"); return -1; }
while(fscanf(fp, "%s", buf) != EOF) {
if(strlen(buf) > BORDER) {
char *p = buf;
while(*p) {*p = toupper(*p); p++; }
}
printf("%s ", buf);
}
fclose(fp);
getchar();
return 0;
}

45 :44:2005/05/11(水) 22:06:53
ここ間違いだった。

> if(strlen(buf) > BORDER) {

if(strlen(buf) >= BORDER) {

46 :デフォルトの名無しさん:2005/05/11(水) 22:19:45
>>37
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/377.c

47 :デフォルトの名無しさん:2005/05/11(水) 22:44:37
>>33
申し訳ないが、任意に読み書きできるという仕様は成立しないのです。
もっと具体的な動作を示す必要があります。

48 :デフォルトの名無しさん:2005/05/12(木) 00:25:58
>直接バイナリに」 は本来やっちゃいけない

はあ?
なんで?

49 :デフォルトの名無しさん:2005/05/12(木) 00:29:57
>>47
あんたが具体的な動作を日本語で示しなさい。

50 :デフォルトの名無しさん:2005/05/12(木) 00:35:55
>>49
じゃ、「何もしないで終了するプログラム」ということで

******* 終了 ********:

51 :デフォルトの名無しさん:2005/05/12(木) 00:40:45
>>44
ありがとうございます。
でも、この場合最後の単語が
xxxxxx.
と、ドットを伴っているとドットもアルファベットと認識されてしまうので
XXXXXX.
という風に6文字の英単語でも大文字に変換されてしまうのですが、どうしたらよいでしょうか?



52 :デフォルトの名無しさん:2005/05/12(木) 00:47:46

[1] 授業単元: プログラミングとその応用
[2] 問題文(含コード&リンク): 1以上の整数kに関して、kのkより小さい約数の合計がkに等しい時、
kを完全数という。整数nを入力して、1以上n以下の完全数を全て求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C/C++/どちらでも可 のいずれか :C
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか :来週まで
[5] その他の制限: 初心者向けのプログラムでお願いします。
条件分岐習いたてレベルで。

53 :デフォルトの名無しさん:2005/05/12(木) 01:12:19
>51

 :
while(fscanf(fp, "%s", buf) != EOF) {
char *p;
int cnt=0;
for(p=buf; *p; ++p) if(isalpha(*p)) ++cnt; else break;
if(cnt >= BORDER)
for(p=buf; *p; ++p) if(isalpha(*p)) *p=toupper(*p);
printf("%s ", buf);
}

改行みんな消えちゃうね


54 :デフォルトの名無しさん:2005/05/12(木) 01:17:23
>>52
#include<stdio.h>

int is_perfect_number(unsigned int n) {
    unsigned int i, sum = 0;
    for (i = 1; i < n; i++)
        if (n / i * i == n)
            sum += i;
    return n == sum;
}

int main(void) {
    unsigned int i, n;
    printf("input n:");
    scanf("%u", &n);
    for (i = 1; i < n; i++)
        if (is_perfect_number(i))
            printf("%d is a perfect number.\n", i);
    return 0;
}

55 :デフォルトの名無しさん:2005/05/12(木) 01:25:29
>53

abcdef.abcdef → abcdef.abcdef
abcdefg.abcdefg → ABCDEFG.ABCDEFG

これでいいの?

56 :デフォルトの名無しさん:2005/05/12(木) 01:37:15
>>52
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
int main()
{
  char inbuf[256], outbuf[1024], tmp[256];
  int i, j, k, sum;
  fputs("1以上の整数を入力 > ", stdout);
  k = atoi(fgets(inbuf, sizeof(inbuf), stdin));
  for(i = 1; i <= k; i++)
  {
    sum = 0; outbuf[0] = '\0';
    sprintf(outbuf, "%d ( ", i);
    for(j = 1; j < i; j++)
    {
      if( i % j == 0 )
      {
        sum += j;
        sprintf(tmp, "%d ", j);
        strcat(outbuf, tmp);
        if( sum > i ) break;
      }
    }
    if( sum == i ) printf("%s)\n", outbuf );
  }
  return 0;
}

57 :54:2005/05/12(木) 01:40:15
>>52
剰余演算子を忘れてた…恥ずかしい。
ということで、一部修正。

int is_perfect_number(unsigned int n) {
    unsigned int i, sum = 0;
    for (i = 1; i < n; i++)
        if (n % i == 0)
            sum += i;
    return n == sum;
}

58 :デフォルトの名無しさん:2005/05/12(木) 01:43:42
>> fputs("1以上の整数を入力 > ", stdout); 
最近f系関数がはやってるけど、これは素直にputsにしても良いともう。
以上、チラシの裏からお伝えしました。

59 :デフォルトの名無しさん:2005/05/12(木) 01:44:57
puts は改行しちゃうからだめ

60 :デフォルトの名無しさん:2005/05/12(木) 02:01:16
[1] 授業単元: プログラム基礎
[2] 問題文(含コード&リンク): VBコードを記述して四則演算を行うプログラムを作成せよ。
VBコードのみも記述せよ
[3] 環境
 [3.1] OS: 98
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:今日
[5] その他の制限:


61 :デフォルトの名無しさん:2005/05/12(木) 02:03:31
>>60
スレ違い

62 :デフォルトの名無しさん:2005/05/12(木) 02:21:25
>>58
行頭プロンプトを表示したいんだろ。
puts() では改行してしまう。

63 :デフォルトの名無しさん:2005/05/12(木) 02:40:40
>>60

スレの名前を百編声に出して読んでみる。
C++は議論あるけど暫定で「しーぷらぷら」で

あとこっちで聞いた方がいいかと思う
VBプログラマ質問スレ(6.0以前) Part41
http://pc8.2ch.net/test/read.cgi/tech/1112414085/l50
VB.NETは別物なので、基本的に質問はこちらへ
VB.NET質問スレ (Part11)
http://pc8.2ch.net/test/read.cgi/tech/1114217190/l50


64 :デフォルトの名無しさん:2005/05/12(木) 03:19:02
[1] 授業単元:応用プログラミング
[2] 問題文(含コード&リンク):
英文が書かれたファイルを読み込み、ある条件の下に暗号文を作る。
その条件とは
・アルファベットは2つ後のアルファベットに変換する(例:a→c、test→vguv)
・アルファベット以外の文字(記号や漢字など)が書かれていた場合はそのままにする。
・ファイルはfscanfで読み込み、出力はfprintfまたはprintfで行う。
[3] 環境
 [3.1] OS:winXP
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限: 5月13日

一応、標準入力→標準出力は不完全ながらできました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/378.txt
よろしくお願いします。


65 :デフォルトの名無しさん:2005/05/12(木) 04:12:17
>>64
漢字ってのはShiftJIS前提でいいのか?

66 :デフォルトの名無しさん:2005/05/12(木) 04:35:48
>>64
漢字には対応してない。
#include <stdio.h>
#include <ctype.h>
static const char *fin_name = "data.txt", *fout_name = "result.txt";
int shift_char(int c) {
    if (isupper(c)) return (c - 'A' + 2) % ('Z' - 'A' + 1) + 'A';
    else if (islower(c)) return (c - 'a' + 2) % ('z' - 'a' + 1) + 'a';
    else return c;
}
int main(void) {
    char c;
    FILE *fin, *fout;
    if ((fin = fopen(fin_name, "r")) == NULL) {
        printf("Can't open %s.\n", fin_name);
        return 1;
    }
    else if ((fout = fopen(fout_name, "w")) == NULL){
        fclose(fin);
        printf("Can't open %s.\n", fout_name);
        return 1;
    }
    while (fscanf(fin, "%c", &c) != EOF)
        fprintf(fout, "%c", shift_char(c));
    fclose(fout);
    fclose(fin);
    return 0;
}

67 :デフォルトの名無しさん:2005/05/12(木) 04:55:11
%cで読むのか、苦しすぎw
fscanfのしばりはきついね

68 :66:2005/05/12(木) 05:03:17
>>67
他のconversion specifiersも考えてみたけど、どうしてもwhite spacesの
考慮が難しくなるから諦めた。

69 :41:2005/05/12(木) 12:31:36
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク): 以下のメンバーを持つ構造体"player"をC言語で宣言せよ.

・背番号
・名前


そして、「赤星(53),藤本(9),シーツ(4),金本(6),今岡(7)」
の5名の名前と背番号をC言語で静的に宣言せよ.


[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限 :後1時間後
[5] その他の制限:

タイガース初心者ですが、よろしくお願いします。

これを答えてもらったのですが、続きがありました。

(2)背番号を入力すると線形探索により名前を出力するプログラムをC言語で実装せよ.

お願いします。
答え、サンクスです。



70 :デフォルトの名無しさん:2005/05/12(木) 14:51:13
>>64
漢字には対応してない
#include <stdio.h>

int main(void)
{
FILE *fp = fopen(__FILE__, "r");
if (fp == NULL) {
fprintf(stderr, "can't open %s\n", __FILE__);
return 1;
}

for (;;) {
char ch[2];
if (fscanf(fp, "%1[a-xA-X]", ch) == 1) {
printf("%c", ch[0] + 2);
} else if (fscanf(fp, "%1[yzYZ]", ch) == 1) {
printf("%c", ch[0] - 24);
} else if (fscanf(fp, "%c", ch) == 1) {
printf("%c", ch[0]);
} else
break;
}

fclose(fp);

return 0;
}

71 :デフォルトの名無しさん:2005/05/12(木) 17:49:41
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): int86x、int86を用いて、マシン内のHDDの容量を取得、表示しなさい
[3] 環境
 [3.1] OS: WIN系
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005年05月13日12:00
[5] その他の制限:拡張INT13Hの有無等も含め、容量を正しく表示すること
HDDの台数は最大4台と想定する。
シリアルATAやSCSIには対応できなくても良い。


誰か助けて下さいorz

72 :デフォルトの名無しさん:2005/05/12(木) 17:52:00
>>71
何のコンパイラ使ってるのかを書けよ。

73 :デフォルトの名無しさん:2005/05/12(木) 17:52:16
>>71
それはC言語の範囲じゃないなぁ

74 :71:2005/05/12(木) 17:55:55
>>72
コンパイラはTurboC++1.01です。
>>73
駄目ですか…申し訳ない

75 :デフォルトの名無しさん:2005/05/12(木) 17:59:52
>>71
ttp://hp.vector.co.jp/authors/VA003720/lpproj/dostools.htm
ttp://www.vector.co.jp/soft/dl/dos/util/se103907.html

この辺参考にしてガンガレ

76 :71:2005/05/12(木) 18:11:37
>>75
いろいろサイト探したのですが、ここは初めて見ました。
助かります。有難う御座いました。

77 :デフォルトの名無しさん:2005/05/12(木) 18:16:15
>>71
それは探し方が悪い。
ググって1番上に来ただけ。
http://www.google.com/search?hl=ja&q=int86x&lr=lang_ja

78 :デフォルトの名無しさん:2005/05/12(木) 18:20:31
>>69
俺は>>43ではないが、引用。
#include <stdio.h>
typedef struct _player {
    unsigned int jersey_number;
    const char* name;
} player;
static player players[] = {
    { 4, "シーツ" },
    { 6, "金本" },
    { 7, "今岡" },
    { 8, "山本浩二" },
    { 9, "藤本" },
    { 53, "赤星" }
};
int main(void) {
    int num, i, pos = -1;
    printf("背番号:");
    scanf("%d", &num);
    for (i = 0; i < sizeof(players) / sizeof(players[0]); i++)
        if (players[i].jersey_number == num) {
            pos = i;
            break;
        }
    if (pos != -1)
        printf("背番号%d:%s", num, players[i].name);
    else
        printf("背番号%dは見つかりませんでした", num);
    return 0;
}

79 :デフォルトの名無しさん:2005/05/12(木) 18:23:08
1から100までの数字を出力して、10行ごとに次の行に行きたいのですが、
100を出力した時には次の行にいかない処理にしたいのですが、
次のコードを書くと100を出力した時に次の行にいってしまいます。
これを100を出力した時に次の行にはどうやっていかないようにすればいいとですか?

#include <stdio.h>
int main(){int n;for (n = 1; n <=100; n++){printf("%4d", n);if (!(n % 10)) printf("\n");}return 0;}

80 :デフォルトの名無しさん:2005/05/12(木) 18:27:59
>>79
#include <stdio.h>

int main(void) {
    int n;
    for (n = 1; n <= 100; n++)
    {
        if (n != 1 && n % 10 == 1) printf("\n");
        printf("%4d", n);
    }
    return 0;
}

81 :80:2005/05/12(木) 19:03:51
>>79
やり直し
#include <stdio.h>

int main(void) {
    int n;
    for (n = 1; n <= 100; n++)
    {
        if (n % 10 == 1 && n != 1) printf("\n");
        printf("%4d", n);
    }
    return 0;
}

82 :デフォルトの名無しさん:2005/05/12(木) 19:13:25
>>79
#include <stdio.h>
int main(){int n;for (n = 1; n <=100; n++){printf("%4d", n);if (!(n % 10) %% n % 100) printf("\n");}return 0;}


83 :82:2005/05/12(木) 19:14:02
ミスった、訂正。
#include <stdio.h>
int main(){int n;for (n = 1; n <=100; n++){printf("%4d", n);if (!(n % 10) && n % 100) printf("\n");}return 0;}


84 :デフォルトの名無しさん:2005/05/12(木) 19:52:20
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
キーボードから実数を読み込み、その最大値MAXと最小値minを求める。
いくつかのデータを入力した後、Ctrl+Zを押してデータの入力を終わらせる
ようにすること。また、必ず入力した数値もすべて出力すること。
配列は使わない。
[3] 環境
 [3.1] OS:WINXP
 [3.2] コンパイラ(バージョン):VisualC++6.0
 [3.3] 言語:C
[4] 期限:5月12日22時まで
[5] その他の制限:
printf("data ?");
scanf("%f", &num);
printf("data No. %d = %f\n", i++, num);
min = num;
max = num;

while (printf("data ? "), scanf("%f", &num)!=EOF){
printf("data No. %d = %f\n", i++, num);
if(何か入れる)
min = 何か入れる;
else if(何か入れる)
max = 何か入れる;
}
を使うそうです

85 :デフォルトの名無しさん:2005/05/12(木) 19:57:22
フルスクラッチで作らせてくれない問題は詰まらん。
何の発展性もない。

86 :デフォルトの名無しさん:2005/05/12(木) 20:18:51
( ´,_ゝ`)プッ  だれもお前にタノンデネーヨ すっこんでろ

87 :84:2005/05/12(木) 20:20:30
自己解決しました。

88 :デフォルトの名無しさん:2005/05/12(木) 20:42:26
常駐プログラムを作りたいから教えて。

WinMainで作成して、Windowは非表示でOK?
常駐トレイにはどうやって表示させる?
俺のでよかったら貸してやるから教えろよ


89 :デフォルトの名無しさん:2005/05/12(木) 20:55:22
>>88
テンプレ使え

90 :デフォルトの名無しさん:2005/05/12(木) 21:03:38
【質問テンプレ】
[1] Win32API
[2] 常駐プログラムを作りたいから教えて
詳しくは >>88
[3] 環境
 [3.1] OS: WinXP PRO
 [3.2] コンパイラ(バージョン): VC++6.0
 [3.3] 言語:C
[4] 期限:無期限
[5] その他の制限: 失礼しましたorz


91 :デフォルトの名無しさん:2005/05/12(木) 21:07:27
>>88
おまいはどういうプログラムを常駐プログラムと定義するのか。
そこから書け。そしてテンプレ使え。


92 :デフォルトの名無しさん:2005/05/12(木) 21:13:42
>>91
外的因子なしに終了するプログラムこそが正しいから。

93 :デフォルトの名無しさん:2005/05/12(木) 21:15:47
>>90
タスクトレイに追加するにはShell_NotifyIcon()を使う。
ウィンドウは非表示にするか(ShowWindow()でSW_HIDE)、CreateWindowEx()で
hWndParentにHWND_MESSAGEを指定してメッセージ専用ウィンドウにする。

94 :93:2005/05/12(木) 21:17:10
>>90
これ以上はこっちで
Win32API質問箱 Build31
http://pc8.2ch.net/test/read.cgi/tech/1114762194/

95 :デフォルトの名無しさん:2005/05/12(木) 21:17:14
>>92
なら、WordもExcelもIEも全部常駐プログラムかよ・・・。
http://e-words.jp/w/E5B8B8E9A790E38397E383ADE382B0E383A9E383A0.html

96 :88、90:2005/05/12(木) 21:20:00
>>91 タスクトレイに常駐するタスク
>>92 ごもっともです。右クリックでメニューを付けようかと思う。
>>93 ありがとう!調べてみる!

97 :デフォルトの名無しさん:2005/05/12(木) 21:26:37
>>95
∞ループしちゃってるじゃん。そんなの正しいプログラムじゃないよ。

98 :デフォルトの名無しさん:2005/05/12(木) 21:27:27
e-wordは間違いだらけな辞書だね。

99 :デフォルトの名無しさん:2005/05/12(木) 21:28:11
【質問テンプレ】
[1] 授業単元: C実務入門(新人教育)
[2] 問題文(含コード&リンク): n個の外部から入力された数値の、合計を計算して表示せよ。
一番最初に入力された値は、 nを示し、これから入力される値の個数
を意味する。(つまり、実際の入力する個数はn + 1個である)
2番目に入力する値、 すなわち加算する数値の最初には、加算する値
がまだ入力されていないため、 0を加算するものと考えてプログラム
を作る。
3番目以降の入力は、前回の計算結果を足して表示する。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): VC++6.0
 [3.3] 言語:C
[4] 期限:今日中
[5] その他の制限: -を記入するとエラーで暴走してしまいます。
これを直すのはどうすれば良いのでしょうか?


100 :99:2005/05/12(木) 21:30:00
#include <stdio.h>
int main(void)
{
float n=0;
float no=0;
short kazu=0;
float ans=0;
puts("計算する回数を入力してください" );
scanf("%d", &kazu);
while(n < kazu)
{
puts("計算する数字を入力してください" );
scanf("%d", &no);
n ++;
ans += no;
}
printf("%d回計算しました。",kazu);
printf("計算結果は%dです。",ans);

return(0);
}


101 :デフォルトの名無しさん:2005/05/12(木) 21:38:01
>>99
"%d"は整数型(intなど)。floatなら"%f"

102 :デフォルトの名無しさん:2005/05/12(木) 21:44:30
>>99
新人教育をカンニングされると、後々評価が狂ってお互いのためにならないからできれば担当者に質問してくれ。
それと、scanf()の使い方が間違っている。fgets()とsscanf()(もしくはatoi()かatof())を組み合わせるのが常道。

103 :デフォルトの名無しさん:2005/05/12(木) 21:45:55
>>101
そう言う大誤解を書かないでくれ。%dが使えるのはintのみだ。その他の型には使えない。

104 :デフォルトの名無しさん:2005/05/12(木) 22:26:16
( ゚д゚) …

105 :デフォルトの名無しさん:2005/05/12(木) 22:37:01
%hdでshortだったっけ。(scanf)

106 :99:2005/05/12(木) 22:38:23
>>103
教材として使っている会社にある本には整数の場合%dとなっていたの
ですが、使い方が違っているということですか?
後、scanfは2箇所とも、fgets()で書くのが正解ということですか?
連投スマソ

107 :デフォルトの名無しさん:2005/05/12(木) 22:53:59
scanfは希望の入力が無いとバッファそのままにするから
簡単にループするぞ

108 :デフォルトの名無しさん:2005/05/12(木) 22:55:46
そこでgetsですよ

109 :デフォルトの名無しさん:2005/05/12(木) 22:56:57
>>106
%dはint型を受ける。つまり整数型。
floatは、単精度浮動小数点型だ。整数型じゃない。
そしておまいはなぜ「回数」を表現するのに
浮動小数点数を使う?普通は整数使うだろ。

入力にはバッファオーバフロー等のセキュリティ上の問題を
防止するためにもfgets()とstrtod()を使うのが定石。


110 :103:2005/05/12(木) 22:59:49
>>99
だからぁ、会社の担当者に聞けってば。
scanf()使えなんて言わないとは思うが、もし言うようならそれに従うべきだし。
で、整数といっても、intではなくてshortを使っているじゃないか。shortの場合は>105だ。

>>108
面白がって変なもん薦めるな。

111 :103:2005/05/12(木) 23:01:25
>>109
兄ちゃん兄ちゃん、回数であるkazuはshortですぜ。
もうちっとコードよく見てや。
#女性だったらゴメン。

112 :デフォルトの名無しさん:2005/05/13(金) 01:26:42
>>99
書き換えてみた。
#include <stdio.h>
int main(void) {
    double i, d, ans = 0;
    int n;
    printf("計算する回数を入力してください:");
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        printf("計算する数字を入力してください:");
        scanf("%lf", &d);
        ans += d;
    }
    printf("%d回計算しました。\n計算結果は%fです。", n, ans);
    return 0;
}

113 :84:2005/05/13(金) 01:44:38
>>87
おめーは誰だYO(・3・)

誰か解いてください


114 :デフォルトの名無しさん:2005/05/13(金) 01:46:02
>>112
根本的な問題が解決されていない。

115 :デフォルトの名無しさん:2005/05/13(金) 02:04:13
>>84
#include <stdio.h>

int main( void )
{
double num, min, max;
int i = 0;

while (printf("data ? "), scanf("%lf", &num)!=EOF){
printf("data No. %d = %lf\n", i++, num);
if( i == 1 ){
min = num;
max = num;
}
else{
min = (min>num ? num : min ) ;
max = (max<num ? num : max ) ;
}
}
if( i > 0 )
printf( "min = %lf max = %lf\n", min, max );
return 0;
}

116 :84:2005/05/13(金) 02:40:37
>>115ありがとうございます。助かりました。


117 :デフォルトの名無しさん:2005/05/13(金) 06:27:12
【質問テンプレ】
[1] 授業単元: Data Structure
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/379.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ(バージョン): MSVC++
 [3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:

問題文
//accumulator classを使用。
//(a)6つの数字をインプットして、平均をアウトプット。
//(b)10のaccumulatorbjectsのvectorを宣言。
//vector<accumulator<int> > count(10);
//100万のランダム数(範囲0から9)を作る。
//それぞれの値に対して、count[value]をincrementする。
//vector countにおいて、それぞれのelementの値をアウトプットする。

途中まで自分でやったのですが、
vector<accumulator<int> > count(10);の扱いがわかりません。

118 :デフォルトの名無しさん:2005/05/13(金) 11:54:32
【質問テンプレ】
[1] 授業単元: C実習
[2] 問題文(含コード&リンク):
200人分の児童の、国語、算数、理科、社会の4科目に関するテストの結果が存
在する。そこで、
「平均を求める関数を作成し、それを用いて各科目の平均を求めて表示せよ」[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ(バージョン): VC++
 [3.3] 言語:
[4] 期限:15時迄
[5] その他の制限:・作成する関数の定義は、次のようにする。
double mean(int a[], int size);
・テスト結果の表は、出題者からファイルを提供する。
・ファイルをプログラムに読み込ませるには、リダイレクトと呼ばれる方法を
用いる

119 :42代目 962の友人:2005/05/13(金) 12:50:01
解答ありがとうございました。助かりました。

それで… 新たな条件として分割コンパイルしてくださいと言われました。(-_-;)
分割コンパイルすると、変数をどう渡したらいいのか分からないのです。
2度も聞くのは失礼だと思ったのですが… 助けてください。m(_ _)m

【質問テンプレ】
[1] 授業単元: C言語応用
[2] 問題文(含コード&リンク):
ファイルnumber.datから0〜255の自然数Nと0〜255の自然数kを読み取り
(number.datにはNとkの間に半角スペース1個間隔開けたものが
縦に列挙されているものとする)
Nをk組以下の自然数の平方和で表現可能か、
また表現可能ならばその平方和の表現の仕方および何通りあるかを
出力するプログラムを作成せよ。
(ex) N=25,k=3
(5,0,0)
(4,3,0)
N=25,k=3,ans=2

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C/C++/どちらでも可 のいずれか:C
[4] 期限:出来るだけ早めにお願いします。m(_ _)m
[5] その他の制限:3つのファイルに分割すること。
(ファイルからの読み取り部・計算部・出力部)

120 :デフォルトの名無しさん:2005/05/13(金) 14:02:14
>>117
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/380.txt

accumulatorクラスをどこにも手を加えずに書くとこのようになるだろう。
intとwriteVector()、average()を共用すると、暗黙の型変換演算子が
呼び出されてプログラムの見通しが悪くなるので、explicit specialization
を行っておいた。

121 :デフォルトの名無しさん:2005/05/13(金) 14:07:04
あ、それと、namespace stdには同名のSTL用アルゴリズム accumulatorが
あり、関数のオーバーロードで解決されているが、一応注意。

122 :デフォルトの名無しさん:2005/05/13(金) 14:14:55
>>121
標準にあるのはstd::accumulate。
それから、型と関数名の間にオーバーロードは働かない。(関数名が優先され、classなどのキーワードをつけると型扱い)

123 :118:2005/05/13(金) 14:24:22
言語はCです。遅レスごめんなさい

124 :デフォルトの名無しさん:2005/05/13(金) 14:31:44
>>122
あーボケてました。スマソ。何書いてたんだろ。>>121は無かった事にして
下さい。(/ω\)ハズカシーィ

125 :デフォルトの名無しさん:2005/05/13(金) 14:43:03
>>118
>(5,0,0)
0って自然数だったんだ

126 :デフォルトの名無しさん:2005/05/13(金) 14:50:55
0は自然数か
ttp://www.ss.u-tokai.ac.jp/~itai/column/three.html

127 :デフォルトの名無しさん:2005/05/13(金) 14:51:58
>>118
ほらよ。やっつけ仕事だけどな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/381.txt

128 :デフォルトの名無しさん:2005/05/13(金) 15:08:30
>>126
それは集合論での考え方
0を自然数と考えるか考えないかの議論は数学板行き

129 :デフォルトの名無しさん:2005/05/13(金) 15:41:49
>>125
すいません^^; 0というのはあくまでも数合わせのためです。
25 = 5^{2} というふうに解釈してください。(-_-;)

k個以下ということを表現したかったのですが、
逆効果になってしまい申し訳ありません。m(__)m

130 :デフォルトの名無しさん:2005/05/13(金) 23:03:50
宿題 チン☆⌒ 凵\(\・∀・) まだぁ?

131 :デフォルトの名無しさん:2005/05/13(金) 23:16:06
[1] 授業単元: 演習
[2] 問題文(含コード&リンク): 「引数prefixで与えられる括弧つきの
前置記法の式を後置記法に変換し、引数postfixが示すキューに格納する関数
を作成せよ」という問題でプロトタイプ宣言が
void getexp(char *prefix,strut queue *postfix);
となっているとなっているのです。char *prefixはメイン関数の前置記法の式を代入するこ
とは分かっているんですけどstrut queue *postfixはいったいどういう意味な
のでしょうか?postfixのままポインタとして使えないし、それ以前にメイン
関数でポインタを作成して代入しなきゃならないのか?
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン): 分からない
 [3.3] 言語:C
[4] 期限:できれば早く

132 :デフォルトの名無しさん:2005/05/13(金) 23:19:47
>>131
ばかだなお前は。

133 :デフォルトの名無しさん:2005/05/13(金) 23:23:23
おーいみんな〜。面白い >>131 がいるよ〜。

134 :デフォルトの名無しさん:2005/05/13(金) 23:26:51
別に面白くない

135 :デフォルトの名無しさん:2005/05/13(金) 23:38:01
【質問テンプレ】
[1] 授業単元: C実務入門
[2] 問題文(含コード&リンク):
200人分の、国語、算数、理科、社会の4科目に関するテストの結果が存
在する。平均を求める関数を作成し、それを用いて各科目の平均を求めて表示せよ
[3] 環境
 [3.1] OS: Win2KPro
 [3.2] コンパイラ(バージョン): VC6.0
 [3.3] 言語:C
[4] 期限:5/14 12:00迄
[5] その他の制限:取り込みはfgets()使用。scanf()使用禁止。
関数定義:double mean(int a[], int size);
テスト結果の表は、1行が1人分データをあらわし、次のように各科目の点数が
TABで区切られている。
国語 算数 理科 社会
出力データの表示形式は自由。
(ここまで出来た。) (次のレスに続く

136 :135:2005/05/13(金) 23:40:34
#include <stdio.h>
#define MAX_NUM 200//人数200
#define STR_BUFSIZE 20//文字列受信用バッファサイズ
#define KAMOKU 4//科目数(4)
double mean(int a[], int size);
double ave[KAMOKU];
long sum[KAMOKU];
int main(void)
{
int a[KAMOKU][MAX_NUM];
char str[STR_BUFSIZE];
char num[STR_BUFSIZE];
short i = 0;
fgets( str, STR_BUFSIZE, stdin);
printf ("%s\n", str);
for(i = 0; i >= num; i++)
while( (fgets( str, STR_BUFSIZE, stdin)) && (i < MAX_NUM))
{
i++;
num = a;
}
printf("** %d人分の平均点**\n", MAX_NUM);
printf ("%s\n", str);
return 0;
}

137 :デフォルトの名無しさん:2005/05/13(金) 23:58:54
>>127はsscanf()使ってるからだめなのか?
atoiでも使うしかないか。めんどい。

138 :デフォルトの名無しさん:2005/05/14(土) 00:19:14
>>137
sscanf()とやったら、それじゃあなくてfgetsでやってくれと言われたので
改良してみたのですが・・・
(やり方は136で良いらしい)
動かなくなってしまいまして・・・
よろしくお願いします


139 :デフォルトの名無しさん:2005/05/14(土) 00:49:10
>>138
>sscanf()とやったら、それじゃあなくてfgetsでやってくれと言われたので
fgets()したからこそのsscanf()だと思うが?
scanf()で駄目と言うのであれば分からん事はないが…

140 :デフォルトの名無しさん:2005/05/14(土) 00:59:37
>>138
fgets()で得られるのはあくまでもchar型の配列データだから、それを
数字に変換しないと計算できない(無理とは言わないが、普通はしない)。
で、char型の配列データを数字に変換するには大抵atoi()、atof()、sscanf()
などを使うわけであるが、sscanf()が禁止らしいので、atoi()を使う事になる。
但し、ポインタを知っていなければならず、見た目も汚くなるぞ。

141 :デフォルトの名無しさん:2005/05/14(土) 01:09:39
>>138
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/383.txt
例えばこんな感じになる。エラーチェックは全くやってないので、入力データ形式が
間違っていると即あぼんの可能性あり。

142 :デフォルトの名無しさん:2005/05/14(土) 11:51:23
>>131
>strut queue *postfixはいったいどういう意味な
のでしょうか?
構造体 queue のポインタという意味です。
関数getexp内で変数postfixは構造体queueのポインタ
として使用できます。なお呼び出し元から渡されている
ものはアドレスだけなので、実体は呼び出し元で定義さ
れいてる必要があります。

>>postfixのままポインタとして使えないし、それ以前にメイン
関数でポインタを作成して代入しなきゃならないのか?
関数getexpを呼ぶ側では構造体queueのアドレスを指定する
必要があります。
 (例)
struct queue post, *pt;
char pre[1000];
....
getexp( pre, &post );
または
pt = ⪯
getexp( pre, pt );

 てな感じ。
 ポインタがまだ理解できていないようですね。
 ポインタ変数に格納できるのは”ポインタ”ではなくて
”アドレス”です。
”アドレス”は"&"演算子を使って取得することができます。
 がんがれ


143 :デフォルトの名無しさん:2005/05/14(土) 11:54:16
キーボードから入力される100個の整数のうち、
2桁の数がいくつあるかを数えて、その個数を表示する。

こんな問題があったのですが、さっぱり分かりません。
どなたか実際にプログラムを書いて教えてもらえませんか?

144 :デフォルトの名無しさん:2005/05/14(土) 12:06:51
>>143

#include <stdio.h>

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

num = 0;
for(int i = 0; i < 5; i++)
{
scanf("%d", &tmp);
if(10 <= tmp && tmp <= 99)
{
num++;
}
}
printf("num = %d\n", num);

return 0;
}

145 :デフォルトの名無しさん:2005/05/14(土) 12:08:31
すまん
for(int i = 0; i < 5; i++)じゃなくて
for(int i = 0; i < 100; i++)だった

146 :143:2005/05/14(土) 12:24:56
エラーが7個、警告が1個出てくるんですが・・・

147 :デフォルトの名無しさん:2005/05/14(土) 12:28:47
>>146
>1を読め

148 :143:2005/05/14(土) 12:32:12
Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ')' が 'type' の前に必要です。
Z:\プログラミング実習\レポート\レポート4.c(8) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
Z:\プログラミング実習\レポート\レポート4.c(8) : error C2065: 'i' : 定義されていない識別子です。
Z:\プログラミング実習\レポート\レポート4.c(8) : warning C4552: '<' : 演算子にプログラム上の作用がありません。作用を持つ演算子を使用してください
Z:\プログラミング実習\レポート\レポート4.c(8) : error C2059: 構文エラー : ')'
Z:\プログラミング実習\レポート\レポート4.c(9) : error C2143: 構文エラー : ';' が '{' の前に必要です。


149 :デフォルトの名無しさん:2005/05/14(土) 12:40:17
for(int i = 0; i < 5; i++)

int i;
for ( i = 0; i < 100; ++i )

150 :144:2005/05/14(土) 12:45:18
全部Cで書いたつもりだったのに...orz
VCTKだとコンパイル通っちまって気づかなかった。

151 :143:2005/05/14(土) 12:52:10
ありがとうございました!
これに少し手を加えたらできるようになりました

152 :デフォルトの名無しさん:2005/05/14(土) 15:23:25
[1] 授業単元: 実習
[2] 問題文(含コード&リンク):
  文字列strの中に、文字cが含まれていれば
  (複数ある場合は、最も先頭側とする)、
  その文字へのポインタを返し、含まれてなければNULLを返す関数
  char *str_chr(const char *str, int c)
  を作成せよ。
[3] 環境
 [3.1] OS: win2000Pro
 [3.2] コンパイラ(バージョン): Visual C++ (Ver7.1)
 [3.3] 言語:C++
[4] 期限:5月15日
[5] その他の制限: 文字列strと文字cへの入力は標準入力により行う。

よろしくお願いします。


153 :デフォルトの名無しさん:2005/05/14(土) 15:41:10
>>152
#include <iostream>
#include <cstring>
#include <string>

char * str_chr(const char * str, int c) { return std::strchr(str, c);}

int main()
{
std::string s;
char c;

std::cout << "文字列>";
std::cin >> s;

std::cout << "文字";
std::cin >> c;

std::cout << str_chr(s.c_str(), c) << endl;
}


154 :152:2005/05/14(土) 16:03:09
>>153
ごめんなさい!C++じゃなくてCでした・・・
ホントすいません。

C言語で書いてくれる方いらっしゃらないでしょうか・・・

155 :デフォルトの名無しさん:2005/05/14(土) 16:12:20
Cってconst使えたっけ?

156 :デフォルトの名無しさん:2005/05/14(土) 16:20:24
c89以降ならね

157 :デフォルトの名無しさん:2005/05/14(土) 16:23:50
>>154
#include <stdio.h>
#include <string.h>

char * str_chr(const char * str, int c)
{
for (; *str != '\0' && *str != c; str++)
;

return *str == '\0' ? NULL : (char*)str;
}

int main(void)
{
char str[256];
char ch;
char *ptr;

printf("文字列>");
scanf("%255s", str);
scanf("%*[^\n]");

printf("文字>");
scanf(" %c", &ch);

ptr = str_chr(str, ch);

printf("%s\n", ptr ? ptr : "(null)");

return 0;
}


158 :デフォルトの名無しさん:2005/05/14(土) 16:25:54
とりあえず書いてみたが、初心者が書いたコードだからあんまり信用するなよ。

char *str_chr(const char *str, int c)
{
unsigned int i;
for(i = 0; i < strlen(str); i++)
{
if(str[i] == c)
{
return &str[i];
}
}
return NULL;
}


159 :152:2005/05/14(土) 16:57:21
>>153 >>157 >>158
ありがとう!かなり参考になりました。
どうやら基本的な間違いで
関数でのreturnにおいて(char*)を付けていなかった為に動かなかったようです。
constの扱いに慣れないとダメですね。
どうもありがとうございました。



160 :デフォルトの名無しさん:2005/05/14(土) 18:59:16
>>152
#include <string.h>
char*str_chr(const char*str, int c){return strchr(str,c);}

161 :デフォルトの名無しさん:2005/05/14(土) 23:23:03
char* str_chr(char* str,char c){
    while((*str) != '\0' && (*str) != c) {
        str++;
    }
    if( (*str)==c){
        return str;
    }else{
        return NULL;
    }
}

162 :デフォルトの名無しさん:2005/05/14(土) 23:36:01
char *str_char(const char *str,char c) {
return *str?*str-c?str_char(str+1,c):(char*)str:NULL; }

163 :デフォルトの名無しさん:2005/05/15(日) 09:23:01
#define str_chr strchr

164 :デフォルトの名無しさん:2005/05/15(日) 10:51:30
[1] 授業単元: 演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/384.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:5月19日
[5] その他の制限: 無し

考えても考えてもさっぱり・・orz
ご指南よろしく御願いします。

165 :デフォルトの名無しさん:2005/05/15(日) 11:04:18
>>164
不可能。

標準入力には文字数の制限があるから。

166 :デフォルトの名無しさん:2005/05/15(日) 11:17:46
そんなのあったっけ?

167 :デフォルトの名無しさん:2005/05/15(日) 11:45:06
>>164
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/385.c

168 :デフォルトの名無しさん:2005/05/15(日) 12:39:16
制限があるのはシェルだろう。リダイレクトでやれば制限ない。

169 :デフォルトの名無しさん:2005/05/15(日) 14:54:37
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク)
 キーボードから全て小文字の文字列を入力し、 その文字列の先頭の文字を
大文字に変更して表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ(バージョン):分かりません・・・
 [3.3] 言語:C++
[4] 期限:2005年05月17日まで

プログラミング始めたばっかりでさっぱり分かりません。
よろしくお願いします。

170 :デフォルトの名無しさん:2005/05/15(日) 15:28:44
↑に追加です。申し訳ありません。
注釈に
「ASCIIコード表を見て、大文字と小文字のコード番号の規則性に
注目すると、上位バイトが2バイト違うだけである」
と書いてありました。

171 :デフォルトの名無しさん:2005/05/15(日) 15:30:44
やっつけ

#include <iostream>
#include <string>
using namespace std;

int main(int argc, char* argv[])
{
char str[32 + 1];

cin >> str;
cout << char(toupper(str[0])) << &(str[1]) << endl;

return 0;
}

172 :デフォルトの名無しさん:2005/05/15(日) 19:46:55
[1] 授業単元:C++実務
[2] 問題文(含コード&リンク)
50名分の4科目のテストの結果が存在する。
「ヒストグラムを求める関数を作成し、それを用いて各科目ごとのヒストグラムを求めて表示せよ」
今回求めるヒストグラムは、次のとおりである。

0 〜 10ある科目が 0点〜10点だった人の人数
11 〜 20ある科目が11点〜20点だった人の人数
21 〜 30...
31 〜 40
41 〜 50
51 〜 60
61 〜 70
71 〜 80
81 〜 90
91 〜 100ある科目が91点〜100点だった人の人数


173 :172:2005/05/15(日) 19:50:22
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン):VC++6.0
 [3.3] 言語:C
[4] 期限:5月15日中
[5] その他の制限:sscanf()・scanf()使用禁止。入力はfgets()のみ使用。
作成する関数の定義は、次のようにする。
int histgram1(int points[], int nchild, int low, int high);
points:各児童の、ある科目に関する点数が入って
いる配列。
nchild:児童の人数。
low:点数の範囲の最小値
high:点数の範囲の最大値
返り値はintで、lowとhighで指定された範囲の点数を取っている児童
の人数である。
・main()とhistgram1()は別々のファイルに作成する。
(分割コンパイルの練習)

174 :デフォルトの名無しさん:2005/05/15(日) 20:37:55
>>172-173
[1] 授業単元:C++実務 なのに  [3.3] 言語:C なのか。
それはいいとして、「50名分の4科目のテストの結果」 はどこから入力する?

175 :デフォルトの名無しさん:2005/05/15(日) 20:48:27
プログラミングの知識が乏しいので、不備があるかもしれません。
以下の2問が分かりません。助力を願いたいです。どなたか宜しくお願いします。


[1] 授業単元:プログラミング基礎
[2]
問題文1:
変数a、b、cの値が、三角形の3辺の長さとして正しいかどうか判定する条件式を書け。
三角形のどの2辺の和も残りの1辺より小さくないという性質を用いること。

問題文2:
n人分(n>10、最初に入力データで指定する)の試験の点数(0点以上100点以下)を入力し
A、B、C、Dの成績評価を行うプログラムを作り実行せよ。
(D:0点〜59点 C:60点〜69点 B:70点〜79点 A:80点〜100点)
プログラムはif…else if文を用いて表現すること。
範囲外の数字に対してはエラーの表示を行うこと。

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ(バージョン):分かりません
 [3.3] 言語:C
[4] 期限:明日(5月16日)の正午まで
[5] その他の制限:
授業で習った範囲(if,switch,do,while,for,配列)を使ってお願いします。

176 :デフォルトの名無しさん:2005/05/15(日) 20:48:48
>>172>>173
また例によってリダイレクトによる入力か。明記してくれ。

177 :デフォルトの名無しさん:2005/05/15(日) 21:27:08
>>175
解1
if(a>0&&b>0&&c>0&&a<b+c&&b<c+a&&c<a+b)

178 :172:2005/05/15(日) 22:03:29
自己解決できました。

179 :172:2005/05/15(日) 22:21:23
取り込みは、別ファイルからの入力です。
(今出題者に聞いてみたらそう言ってました)
自分では別コンパイルとか調べてみたけど判らなかったのでよろしくお願いします

180 :デフォルトの名無しさん:2005/05/15(日) 22:47:43
>>179
/* main.c */
#include "sub.h"
int main(void)
{
  sub();
  return 0;
}

/* sub.h */
void sub(void);

/* sub.c */
#include <stdio.h>
#include "sub.h"
void sub(void)
{
  printf("sub\n");
}

cl /c main.c
cl /c sub.c
cl main.obj sub.obj
...こんな感じだろーか。

181 :179:2005/05/15(日) 23:05:10
ありがとうございました。

182 :デフォルトの名無しさん:2005/05/15(日) 23:07:16
入力された数を昇順(CASE4の部分)に並べ替えるという課題がでているのですが下記のように入力して実行したところ、

Warning W8060 9-1.c 60: Possibly incorrect assignment in function main
Warning W8004 9-1.c 84: 'i' is assigned a value that is never used in function m
ain
とエラーがでてしまいました。どの部分が間違えているのでしょうか?

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/386.c

183 :デフォルトの名無しさん:2005/05/15(日) 23:12:02
>>182
>>1を嫁

184 :デフォルトの名無しさん:2005/05/15(日) 23:16:31
>>182
60行:for(i=0;i=num-1;i++){
i<=num-1か、i<num-1の間違いか?
84行:60行でnum-1を代入しているので、直前のi=0が無視されている

185 :182:2005/05/15(日) 23:19:25
>>183
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):入力された数を昇順(CASE4の部分)に並べ替えるという課題です。
  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/386.c

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ(バージョン):Borand C
 [3.3] 言語:C
 [4] 期限:2005年05月16日08:15

よろしくお願いいたします。

186 :デフォルトの名無しさん:2005/05/15(日) 23:36:39
授業 C言語必須2単位
OS ウィンドウズxp

改行までが空白なら削除するプログラムをつくりたいのですが
うまくいきません。途中までつくったのですが・・・
どなたかご教授お願いします。

int hyozi(char string_check[SIZE])
{
int n;
int status = OK;


for(n = 0; string_check[n] == '\n';n++)
{
if(string_check[0] == '\n')
return NG;

else if(string_check[n] == ' ')
status = NG;
else
return OK;
}
return(status);
}


187 :デフォルトの名無しさん:2005/05/15(日) 23:38:32
[1] 授業単元: プログラミング論
[2] 問題文(含コード&リンク): 次のプログラムを2つのファイルに分割して実行できるようにせよ。
(複数モジュールにしろ)
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可
[4] 期限:2005年5月16日の朝


188 :187:2005/05/15(日) 23:38:58
#include<stdio.h>
#include<process.h>

/*例題11−1:法王の名前 */

static int count;
main()
{
int generation;

for(;;)
{ printf("\n>何代目ですか? ");
scanf("%d",&generation);
count = 0;
if ( generation==0 )
exit(1);
pope(generation);
printf("\n関数popeは%d回呼ばれました。",count);
}
}/* End of main */

pope(n)
int n;
{
count++;
if ( n==1 )
printf("ヨハネ ");
else if ( n==2 )
printf("パウロ ");
else pope(n-2),pope(n-1);
}/* End of pope */

189 :デフォルトの名無しさん:2005/05/15(日) 23:49:18
>2つのファイルに分割して実行

何一店の?
a.exeファイルとdllファイルの2つにする
b.分割コンパイルの話? (ほにゃらら.c と ちょめちょめ.c の2つに分割)
c.ヘッダファイルとソースに分割? (ぺけぺけ.h と ほげほげ.c の2つに分割)

どれかなのか?あるいは別のなにかなのか?

190 :187:2005/05/15(日) 23:50:23
分割コンパイルの話です。

191 :187:2005/05/15(日) 23:53:23
「〜.c」「****.c」をつくり、実行する際には、個々にコンパイルして
オブジェクトファイルを作成し、最後にリンカで実行可能プログラムにするらしいです。

とりあえず、「〜.c」「****.c」ができれば良いのですが・・・。

192 :デフォルトの名無しさん:2005/05/15(日) 23:55:13
>改行までが空白なら削除するプログラム

意味が不明だが、
string_checkが改行までが空白なら NG を返す。
string_checkが改行までに空白以外の文字があるなら OK を返す、という
int hyozi(char *string_check) を作ればよいのか?

int hyozi(char *string_check)
{
while(*string_check==' ') ++string_check;
if(*string_check!='\n') return NG;
return OK;
}



193 :デフォルトの名無しさん:2005/05/15(日) 23:55:24
よろしくお願いします。

[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
「Ford-Fulkersonアルゴリズムに対して、
故意に計算速度が遅くなるよう増大路を選択させるようなプログラムをつくりなさい。」

ソースは改悪前のものです。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/387.txt

[3] 環境
 [3.1] OS: Windows98
 [3.2] コンパイラ(バージョン): Borland C++ Compiler
 [3.3] 言語:C
[4] 期限:2005年5月17日17:30まで

194 :デフォルトの名無しさん:2005/05/15(日) 23:58:11
>187

countをpope()の引数に追加してはダメ?
グローバル変数を使わなければならないのか?


195 :187:2005/05/16(月) 00:03:49
>>194
すみません。知識不足の為、質問の内容が分かりません。
しかし自分なりに書き直してよいと書いてありました。

196 :デフォルトの名無しさん:2005/05/16(月) 00:21:20
>187
>194
おそらくグローバルでないとダメなんだろう
-----[main.c]-----
 :
/* static int count; */
int count;
main() {
int generation;
for(;;) { printf("\n>何代目ですか? ");
scanf("%d",&generation);
count = 0;
if ( generation==0 ) exit(1);
pope(generation);
printf("\n関数popeは%d回呼ばれました。",count);
}
}/* End of main */
-----

-----[sub.c]-----
 :
/* static int count; */
extern int count;
pope(n)
int n;
{ count++;
if ( n==1 ) printf("ヨハネ ");
else if ( n==2 ) printf("パウロ ");
else pope(n-2),pope(n-1);
}/* End of pope */
-----

197 :デフォルトの名無しさん:2005/05/16(月) 00:25:31
>>187-188
/* main.c */
#include <stdio.h>
int count = 0;
main()
{
  /* 元のmain関数をそのまま使用 */
}

/* pope.c */
#include <stdio.h>
extern int count;

pope(n)
int n;
{
  /* 元のpope関数をそのまま使用 */
}

198 :デフォルトの名無しさん:2005/05/16(月) 00:28:53
よろしくお願いします

[1] 授業単元:C言語
[2] 問題文(含コード&リンク):「基数ソート法」により int 型配列をソートするプログラムを作成せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005/5/19
[5] その他の制限:
* プログラムは,標準入力から任意個の整数を受け取り,ソートして出力する.
* プログラムは,コマンドライン引数において基数のビット数 k が指定された場合, 2^k 進数の基数ソートを行うものとする.指定のない場合は,16 進数の基数ソートを行うこと.

例: 2^6 = 64 進数の基数ソートを実行する
% ./radix_sort 6

* ソートを行う関数名は radix_sort とする.
o 引数は,整数配列 array と要素数 num と基数のビット数 radix_bits とする.
o 戻り値はなし
* プログラムは,コマンドライン引数においてデバッグ用のオプション -d が指定された場合,
ソートの経過を標準エラー出力に出力すること


199 :187:2005/05/16(月) 00:31:44
>>196-197
お2人様ありがとうございます
かなり複雑に考えてしまいました・・・
externとか変なところにつけていましたし・・・

ぜひ参考にさせていただきます

200 :デフォルトの名無しさん:2005/05/16(月) 00:52:17
[1] 授業単元:ポインタ
[2] 問題文(含コード&リンク):
1.a="sample",b="program"の文字列をポインタ変数を使って結合し、配列moji[14]に入れる(a,bはポインタ変数)
2.一次元配列a[8]="sample",b[8]="program"の文字列をポインタ変数を使って入れ替える
[3] 環境
 [3.1] OS:NT
 [3.2] コンパイラ(バージョン):95か98
 [3.3] 言語:C
[4] 明日(今日)
[5] その他の制限:
よろしくおねがいします。

201 :デフォルトの名無しさん:2005/05/16(月) 00:57:24
>[3.2] コンパイラ(バージョン):95か98
ハァ?

202 :デフォルトの名無しさん:2005/05/16(月) 01:01:39
>>200

共通
void Strcpy ( char *a, char *b ) {
while ( ( *a = *b ) != '\0' ) a++, b++ ; }

void Strcat ( char *a, char *b ) {
while ( *a != '\0' ) a++ ;
Strcpy ( a, b ) ; }


char *a="sample" ;
char *b="program" ;
char moji[14] ;
Strcpy(moji,a) ;
Strcat(moji,b) ;


char a[8]="sample" ;
char b[8]="program" ;
char c[8] ;
Strcpy ( c, a ) ;
Strcpy ( a, b ) ;
Strcpy ( b, c ) ;

203 :デフォルトの名無しさん:2005/05/16(月) 01:43:42
>>193
たぶん、データファイルもいじらんと無理だと思う。
ttp://www-or.amp.i.kyoto-u.ac.jp/members/yagiura/graph-th/LA0102-040708.pdf を参照。
順列生成に関しては、奥村センセのソースを読むべし。
(ちゅーか、気合のあるヒト、プログラムは任せた)

204 :デフォルトの名無しさん:2005/05/16(月) 02:41:39
試験の成績、合計の高い順に並び替える。
明日中にお願いします
C++です。
int i,j,temp;
int na[A][B]={1,17,43,30}; /*番号1番の学生 数学 理科 英語*/
int nb[A][B]={2,38,39,55}; /*2番*/
int nc[A][B]={3,100,86,58}; /*3番*/
int nd[A][B]={4,95,88,63}; /*4番*/
int ne[A][B]={5,23,52,72}; /*5番*/
int nf[A][B]={6,62,49,58}; /*6番*/
int ng[A][B]={7,77,80,84}; /*7番*/
int nh[A][B]={8,45,25,62}; /*8番*/
int ni[A][B]={9,69,73,48}; /*9番*/
int nj[A][B]={10,81,77,95}; /*10番*/
int nk[A][B]={11,83,64,55}; /*11番*/
int nl[A][B]={12,51,47,47}; /*12番*/
int nm[A][B]={13,42,62,85}; /*13番*/
int nn[A][B]={14,36,50,64]; /*14番*/
int no[A][B]={15,60,76,38}; /*15番*/

205 :デフォルトの名無しさん:2005/05/16(月) 02:52:49
>>204
配列として間違ってるし、添字ではなくn*みたいな形式で
書かれている場合にスマートなソートのプログラムは
書けない。

206 :デフォルトの名無しさん:2005/05/16(月) 03:11:56
>>204
テンプレ(>>1)使え。
それと、問題文はデータも含めて全部書け。


207 :デフォルトの名無しさん:2005/05/16(月) 03:35:35
>>198
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/388.txt
ビット数 20 あたりでディスクスワップ始まると思う

208 :183:2005/05/16(月) 07:04:52
>>182
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/389.txt

209 :デフォルトの名無しさん:2005/05/16(月) 08:47:48
>>208
なぜ h 抜きで?

210 :175:2005/05/16(月) 09:20:33
>>177
解答をありがとうございました。感謝します。

問題文2ですが、自分でも挑戦してるのですが中々うまくいきません。
どなたか大まかなヒントでも頂けないでしょうか?

211 :デフォルトの名無しさん:2005/05/16(月) 10:12:23
>>175
if(point>100 && point<0){/* エラー処理 */}
else if(point<60){/* 評価D */}
else if(point<70){/* 評価C */}
else if(point<80){/* 評価B */}
else {/* 評価A */}

212 :デフォルトの名無しさん:2005/05/16(月) 10:12:51
>>210
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/390.txt
あなたの言う 「授業で習った範囲」 がどの程度かわからないので使えるもの使った。
ダウングレードくらいは自分でやれ。

213 :デフォルトの名無しさん:2005/05/16(月) 10:14:30
point>100 && point<0
じゃない
point>100 || point<0
だorz

214 :210:2005/05/16(月) 10:23:56
>>212
解答ありがとうございます。
しかしサッパリ理解できませんでした (;´Д`)
完璧に動作するだけに勿体無い…
せっかく作成して頂いて申し訳ないですが、もうちょい自分で頑張ってみます。

215 :デフォルトの名無しさん:2005/05/16(月) 10:41:00
>>214
自分で 「大まかなヒントでも」 と言ってるのに 211 はスルーかよ

216 :210:2005/05/16(月) 10:56:28
>>211
下のレスに気を取られてて指摘されるまで気付きませんでした…ゴメソ
参考にします。配列は使わないみたいですね。見当違いなことをやってたかも…



217 :デフォルトの名無しさん:2005/05/16(月) 13:53:10
[1]授業単元:アルゴリズム論
[2]rand関数を使って0〜99の乱数を発生させる。
  ハッシュ関数としてキーの値の1/2を使う。***に当てはまるものを入れよ。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/20まで

プログラミング始めたばかりでさっぱりわかりません。
先輩方教えてください。

#include <stdio.h>
#include <stdlib.h>
int hash(int);
int main(void) {
int ran;

ran = rand();
ran = ran % 100;

data[*****] =***;

}
int hash(int x){
return ***;
}

218 :デフォルトの名無しさん:2005/05/16(月) 14:11:31
> ran = rand();
> ran = ran % 100;
こんな使い方初めて見た・・・。
まぁ、確かに動くけどさ・・・。

> data[*****] =***;
宣言されて無いのですが、良いの?

219 :デフォルトの名無しさん:2005/05/16(月) 14:13:29
>>217
data がどこにも宣言されてないが、

> data[*****] =***;

data[hash(ran)] = ran;

> return ***;

return x / 2;

でいいんでねーの?
・・・何がやりたいんだかようわからん

220 :デフォルトの名無しさん:2005/05/16(月) 14:49:40
課題を2つだされたのですがさっぱりわかりません、よろしくお願いします。
[1]授業単元:プログラミング論
[2]線形探索を応用して挿入しようとするデータの場所を特定する(iとする)
 最後から前に向かってdata[k+1]=data[k]を実行し、一つ後ろにずらす。これをk=iになるまで繰り返す
  data[i]にキーを挿入する。空欄をうめてプログラムを完成させよ。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/23の夕方5時まで


#include <stdio.h>
int main(void) {
int i,k,key, data[101];
/*配列に偶数をつめる*/
/*keyをキーボードから読み込む*/
/*線形探索で先頭より探して挿入位置をiとする*/
for (; k < *** ; ***) {
/*データを後ろにずらす*/
 }
/*結果を印字*/
return 0;
}



221 :220:2005/05/16(月) 14:50:19
[1]授業単元:プログラミング論
[2]先頭をl、最後をhとすると、中間mは(1+h)/2となる
  繰り返しの終了条件はlとm、あるいはmとhが等しいときとなる。
  空欄をうめてプログラムを完成させよ。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/23の夕方5時まで

#define N_DATA 100
#include <stdio.h>
int main(void) {
int l,m,h,key, data[101],result =0;
/*配列に要素をつめる(0~100)*/
/*keyをキーボードから読み込む*/
l = 0; h = N_DATA; m = (1+h)/2;
for (; ***||*** ; ***) {
/*データを後ろにずらす*/
 /*data[m]をキーを比較して等しければ見つかったのでresultを1として抜け出す。
  さもなければ大小関係により1かhを変更する*/
 }
/*結果を印字*/
return 0;
}



222 :デフォルトの名無しさん:2005/05/16(月) 15:16:24
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):(1)配列 studentGrades を宣言し、下記の値(点数)をキーボードより入力し初期値した後、一覧表示せよ。
(#define文を使用して学生数を STUDENTS,科目数を EXAMS,とすること。)

           学科名
       [A]  [B]  [C]  [D]  
   学生1 77 68  86 73
   学生2 96 87  89 78
   学生3 70 90  86 81 
(2)最低点を表示するプログラムを作成せよ(実行結果→最低点:68)
(3)最高点を表示するプログラムを作成せよ
(4)各学生毎の平均点表示機能を追加せよ
(5)全機能を同時に実行し、実行結果を確認せよ
[3] 環境
 [3.1] OS: Linux 3.1
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005年5月18日19:00まで
[5] その他の制限:関数を使用せずに作成せよ。for文を用いて作成せよ

すいません、問題が多いのでめんどうな場合は上記のいずれかだけでも構いません
よろしくお願いしますm(_ _)m

223 :デフォルトの名無しさん:2005/05/16(月) 15:38:01
>>222
[2](5)同時に実行とは? まさか、並列処理しろとでも?
[5]関数を使用せずにとは? まさか、表示も全て関数を利用せずに行なうのか?

224 :デフォルトの名無しさん:2005/05/16(月) 15:43:54
揚げ足はおいしい

225 :デフォルトの名無しさん:2005/05/16(月) 15:50:57
[1] 授業単元:プログラミング言語演習2
[2] 問題文(含コード&リンク):
1.int型の配列data「500×300」がある。
このデータの配列を逆(上下・左右)にするプログラムをclass arrayの下に作り、
class ex1(メイン)から起動するようなプログラムを作れ。

2.1で反転したdataに対して、以下の演算を施した結果の配列EDGE[500×300]を求めて、
data+EDGE(加算)を行った結果をdata配列に入れるプログラムを作れ。
      2  2
data[i][j]= Σ  Σdata[i+k][j+l]*W[R][l]
      k=0 l=0
考え方はW[3×3]のラプラシアンフィルタを使う。
[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005年05月11日15:00まで
[5] その他の制限:
1のほうは何とかできそうなんですが、
2のラプラシアンフィルタのやり方が良くわかりません。
よろしくお願いします。

226 :デフォルトの名無しさん:2005/05/16(月) 16:00:01
>>225
W[R][l]じゃなくてW[k][l]だろ?
で、ラプラシアンフィルタについてはこの辺を参考に。
ttp://www.mis.med.akita-u.ac.jp/~kata/image/lap8.html

227 :222:2005/05/16(月) 16:04:35
>>223
[2](5)に関しては(1)〜(4)の実行結果を同時に表示するようなプログラムを作成しろとの事です
わかりずらくてすいません;
[5]はよくわからないんですがプリントにそう書いてあるんですよね・・
なんかややこしいので「関数を使用せずに〜」というのは無視してください

228 :デフォルトの名無しさん:2005/05/16(月) 16:19:05
>>222
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/391.c

229 :デフォルトの名無しさん:2005/05/16(月) 16:39:49
>>225
classの下にプログラムを作るとか、classから起動するプログラムとか、
もっと一般的な言葉で解説するか具体例を挙げてくれ。
つーか、何とかできそうなら書いて味噌。

230 :222:2005/05/16(月) 16:44:54
>>228
ありがとうございます!
見たところそれで全部できそうですね
すごく参考になりました
どうもです^^

231 :220:2005/05/16(月) 16:54:41
すいません、期日が明日になったのを忘れてました;
単位落とすと学校辞めないといけなくなるので何卒よろしくお願いいたします;;

232 :183:2005/05/16(月) 17:17:49
>>209
いつもの癖が出ただけ。キニスンナ

233 :151:2005/05/16(月) 17:27:03
>>220
#include <stdio.h>

int main(void) {
int i,k,key, data[101];
/*配列に偶数をつめる*/
for(i = 0; i < 100; i++)
data[i] = i * 2;
/*keyをキーボードから読み込む*/
printf("keyを入力してください: ");
scanf("%d*\n*", &key);
/*線形探索で先頭より探して挿入位置をiとする*/
for(i = 0; i < 100; i++) {
if(data[i] >= key)
break;
}
for (k = 99; k >= i ; k--) {
/*データを後ろにずらす*/
data[k + 1] = data[k];
}
data[i] = key;
/*結果を印字*/
for(i = 0; i < 101; i += 5) {
for(k = 0; k < 5 && i + k <= 100; k++)
printf("data[%3d]=%3d ", i + k, data[i + k]);
putchar('\n');
}
return 0;
}

>>221
問題文があいまいで回答できなかった。

234 :デフォルトの名無しさん:2005/05/16(月) 19:06:17
[1] 授業単元: プログラム1
[2] 問題文(含コード&リンク):
■■ソケットの生成■■
2台のマシン(tokiとkenshirou)でソケットを用いた通信を行ってもらいます.
以下に送信側と受信側の動作を説明します.

・送信側
  文字列が書き込まれたファイル(前回のプログラムで書き込んだファイル等)か

 文字列を読み込み,文字列を適当な文字数ごとに分割して,ソケットを用いて受信

 に送信する.
 
・受信側
  受信した文字列を出力する.

 ファイルから読み込んだ文字列を分割せずに送信する場合からやってみてくださ
い.
 通信には,UDPを用い,ポート番号は1万+学籍番号の下3桁(10771など)を使って
 ください.

[3] 環境
 [3.1] OS: Linux 3.1
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005年05月18日まで
[5] その他の制限:

よろしくお願いします。


235 :デフォルトの名無しさん:2005/05/16(月) 19:20:46
#include<stdio.h>
int *sisoku(int,int);
void main(void)
{
int *result;
result=sisoku(3,2);
printf("\n TASU=%d HIKU=%d KAKERU=%d WARU=%d\n",
*result,*(result+1),*(result+2),*(result+3));
}
int *sisoku(int i,int j)
{
static intref[4];
ref[0]=i+j;
ref[1]=i-j;
ref[2]=i*j;
ref[3]=i/j;
return(ref);
}
長くてすみません。このプログラムはグローバル関数宣言らしいんです
けど、ローカル関数宣言にするには、どーしたらいいんですか?

236 :デフォルトの名無しさん:2005/05/16(月) 19:27:38
ローカル関数宣言て何かしら?
2行目の宣言をmain関数内に入れるか、staticを付けるか、
多分どっちかなんだろうな。

237 :デフォルトの名無しさん:2005/05/16(月) 19:29:09
>>235
ローカル関数宣言って他からexternで関数を読めないって事で良いのかな?

#include<stdio.h>
static int *sisoku(int i,int j);
void main(void)
{
int *result;
result=sisoku(3,2);
printf("\n TASU=%d HIKU=%d KAKERU=%d WARU=%d\n",
*result,*(result+1),*(result+2),*(result+3));
}
static int *sisoku(int i,int j)
{
static int ref[4];
ref[0]=i+j;
ref[1]=i-j;
ref[2]=i*j;
ref[3]=i/j;
return(ref);
}


238 :デフォルトの名無しさん:2005/05/16(月) 19:33:34
>>235
main関数内に入れたいんですけど、どーやればいいんですか?

239 :デフォルトの名無しさん:2005/05/16(月) 19:42:54
>>238
そんなん文字通り

#include<stdio.h>
void main(void)
{
int *result;
int *sisoku(int,int);
result=sisoku(3,2);
printf("\n TASU=%d HIKU=%d KAKERU=%d WARU=%d\n",
*result,*(result+1),*(result+2),*(result+3));
}
int *sisoku(int i,int j)
{
static intref[4];
ref[0]=i+j;
ref[1]=i-j;
ref[2]=i*j;
ref[3]=i/j;
return(ref);
}

240 :デフォルトの名無しさん:2005/05/16(月) 19:47:22
>>239
エラーがいっぱいでたんですけど…
ちゃんと動くようにお願いします。

241 :デフォルトの名無しさん:2005/05/16(月) 19:49:26
>>240
それならコンパイラのバージョンを明記しいや。
VC++6.0なら通ったで?

242 :デフォルトの名無しさん:2005/05/16(月) 19:52:41
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
ユーザーからの入力nを読み込み、n個の配列を作りなさい。
配列の中はa[0]=0 , a[1]=1 のように要素数?の数字を入れること。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):VisualStudio.NET
 [3.3] 言語:C
[4] 期限:今日中にお願いします。
[5] その他の制限:特になし。今まで入力から配列を確保したことが無くて混乱しています…誰か助けてください…

243 :デフォルトの名無しさん:2005/05/16(月) 19:56:10
>>241
下から7段目の static intref[4];のやつが
intとref[4];の間にスペースが開いてなかったみたいです。
ちゃんと動きました。ありがとうございます^^

244 :デフォルトの名無しさん:2005/05/16(月) 20:01:42
>>477
これは酷い…

245 :デフォルトの名無しさん:2005/05/16(月) 20:07:27
>>242

#include <stdio.h>
#include <malloc.h>
int main( int argc, char* argv[] )
{
int *a;
int n;
int i;

/* n の入力 */
printf( "n = ?" );
scanf( "%d", &n );
/* memory 確保 */
a = ( int * )malloc( sizeof( int ) * n );
if ( a == NULL ) return 1;
/* 配列の初期化 */
for ( i = 0; i < n; i++ ) a[ i ] = i;
/* 配列を処理するコードをここに書く */

/* memory 解放 */
free( ( void * )a );
return ( 0 );
}

246 :242:2005/05/16(月) 20:09:28
>>245
ポインタが出てきますね。ちょっと難しそうですが頑張ってみます。助かりました。ありがとうございました。

247 :Be名無しさん:2005/05/16(月) 21:17:59
http://tmp5.2ch.net/test/read.cgi/mog2/1116177047/
ここのスレ住人が速攻で回答してくれます
皆さん書き込みしましょう


248 :デフォルトの名無しさん:2005/05/16(月) 21:53:30
>>234 には解答つかないだろうな

249 :デフォルトの名無しさん:2005/05/16(月) 22:02:53
>>248
正直面倒くせえ

250 :193:2005/05/16(月) 22:13:17
>>203
なるべく流量を増やさないように増大路を増やせばいいというのはわかるのですが、
どのあたりで条件判定を入れて処理させればいいのやら・・・色々考えてるけどわからないです。

251 :デフォルトの名無しさん:2005/05/16(月) 23:10:39
>>250
経路をリストアップし、評価関数を使い、もっとも得点の高い(低い)経路を選択する。
評価基準はあなたの言うように、流量でよいのでわなかろーか。
なんか、A*(エースター)探索アルゴリズムの逆バージョンだな。

252 :デフォルトの名無しさん:2005/05/16(月) 23:19:46
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
サーバー→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/393.txt
クライアント→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/394.txt
ゲームサンプルプログラム→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/395.txt
問題→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/396.txt
上の「問題」の「6. キーボード版 Network対戦用ゲーム 作成」をやってほしいのですが…。
[3] 環境
 [3.1] OS:Red Hat Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:2005/5/25 12:00まで
[5] その他の制限:

253 :デフォルトの名無しさん:2005/05/16(月) 23:35:05
単元:C言語 問題文は以下の通りです。英語の問題を翻訳したんで少し分かりにくいかもです。

既存する配列に対して挿入、削除、検索をし、また配列要素を表示させるプログラムを作りなさい。
main関数:
1 数列の定義 int a[100]={5,20,50,100}, n=4; /* nを数列の長さとする */
2 下のメニューを表示させる
(1)配列要素の挿入(2)配列要素の削除 (3)配列要素の検索 (4)全ての要素の表示 (5)終了
3 上記の入力に基づき、相応の関数を用いさせる
4 挿入の場合:もし戻り値が0ならば、「この数は既に存在しています。挿入できません」
  と表示させる。戻り値が1の場合、n+1をし且つ4「全ての要素の表示」の関数を使い挿入後の要素値を表示させる
5 削除の場合:戻り値が0の場合「この数は数列の中に存在しません。削除できません」
        戻り値が1の場合n-1をし且つ4と同じく要素値を表示させる
6 検索の場合:戻り値が-1の場合「見つかりません」と表示
        戻り値が負数の場合、検索した要素のアドレス(?)を表示
7 プログラムは5終了を実行するまで繰り返し行うことができる

挿入関数:
1 既に数値が存在するため挿入不可の場合、戻り値を0とする
2 挿入後の戻り値を1とする
削除関数
1 削除不可の場合、戻り値を0とする
2 正常に削除できた場合、戻り値を1とする
検索関数
1 見つけた場合戻り値は対応するアドレス(?)とする
2 見つけれない場合は戻り値を-1とする
全ての要素の表示
1 配列の長さによって、順次に要素の値を表示させる




254 :225:2005/05/16(月) 23:38:31
>>226
間違ってました。スマソ。
ラプラシアンフィルタでググってそのページも見たんだが、いまいちピンとこないんです。
画像処理をCでやるのが間違っているんですかね。

>>229
classというのは関数の名前です。
1のほうは

#include <stdio.h>
int main(void) {
int i,j,temp,data[500][300];
for(i = 1; i < 500; i++) {
printf("%d\n",data[i][j]);
}
retuen 0:
}
int class array(int data[i][j])
{
int temp,i,j;
for(i = 1; i <= 500; i++){
for(j = 1; j <= 300; j++){
temp = data[500-i][300-j];
data[500-i][300-j] = data[i][j];
data[i][j] = temp;
}
}
return;
}

こんなカンジかと。

255 :253:2005/05/16(月) 23:38:41
配列の定義 int a[100]={5,20,50,100}, n=4; /* nを配列の長さとする */

の間違いです。すんません。

256 :デフォルトの名無しさん:2005/05/17(火) 01:36:58
>>253

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/398.txt

久しぶりにまずいカルボナーラを作ったよ。
味わってくれ。(汗。

257 :256:2005/05/17(火) 01:41:30
そうそう、デバッグは甘く作ったから、要デバッグ。

258 :253:2005/05/17(火) 02:26:10
>>256
スマソ。なんでか分からないけど、見ることができませぬ。
できればコピペでここにお願いします。

259 :デフォルトの名無しさん:2005/05/17(火) 02:45:04
>>234
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/400.zip
とりあえず動いた。
Linux3.1って何だよ!

260 :253:2005/05/17(火) 03:20:34
急いでいるので早くしてもらえませんか?

261 :253:2005/05/17(火) 03:20:48
>>256
急いでるんで早くしてもらえます?

262 :253:2005/05/17(火) 03:21:02
本当に急いでるんです!!!

263 :デフォルトの名無しさん:2005/05/17(火) 03:21:02
すっげぇ悪質なイタズラ思いついたwwww
http://ex10.2ch.net/test/read.cgi/news4vip/1116266649/

264 :253:2005/05/17(火) 03:21:16
とっとと教えてくださいよ。馬鹿なんですか?

265 :デフォルトの名無しさん:2005/05/17(火) 03:21:33
>>260
なんだいきなりそのたいどわwwwww

266 :253:2005/05/17(火) 03:21:34
ああーもう。
書き込むのおっせえなぁもう

267 :デフォルトの名無しさん:2005/05/17(火) 03:21:47
はえーよww

268 :デフォルトの名無しさん:2005/05/17(火) 03:21:55
>>263
VIPのせいにすんなよラウンコ

269 :デフォルトの名無しさん:2005/05/17(火) 03:22:00
>>253
ちょっと待て!!それが人に聞く態度か!!

270 :253:2005/05/17(火) 03:22:03
とっととうp汁!

271 :デフォルトの名無しさん:2005/05/17(火) 03:22:17
>>253
は?しねよ

272 :デフォルトの名無しさん:2005/05/17(火) 03:22:28
>>263
VIPにへんなスレ建てんなラウンコ

273 :デフォルトの名無しさん:2005/05/17(火) 03:22:31
>>253
いい加減にしてください!!!
訴えますよ!!!

274 :デフォルトの名無しさん:2005/05/17(火) 03:22:36
>>253
急に態度が変わったね

275 :256:2005/05/17(火) 03:22:40
>>253
なんだ?頭くるっちゃたのか?

276 :253:2005/05/17(火) 03:22:54
この程度の問題も出来ないのに本当にあんたCプログラマ?

277 :デフォルトの名無しさん:2005/05/17(火) 03:23:40
私は西洋梨が大好きです。
お店でよく売られているのはラ・フランスです。
興味があったので調べてみたら代表的なものは
「ラ・フランス」「バートレット」「ル・レクチェ」の3種だそうです。
私は「ラ・フランス」しか知りません。
「ラ・フランス」は100%外国から来たモノだと思っていたのですが
フランスの梨苗を 山形に植え改良を重ねて出来たのがラ・フランスなんだそうです。

こんな話をしていたら食べたくなってきました。
    /\___/ヽ
   /''''''   '''''':::::::\
  . |(●),   、(●)、.:| 
  |   ,,ノ(、_, )ヽ、,, .::::|
.   |   `-=ニ=- ' .:::::::|
   \  `ニニ´  .:::::/
  ,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |             それがVIPクオリティ
    >   ヽ. ハ  |   ||            http://ex10.2ch.net/news4vip/

278 :253:2005/05/17(火) 03:23:54
私の時間返してもらえませんか???

279 :256:2005/05/17(火) 03:24:02
ちょっと待てよ、なんか人違くないか?>>253

280 :253:2005/05/17(火) 03:25:07
そんなことよりオレの歌を聴いてください

お魚くわえたドラネコー♪

281 :253:2005/05/17(火) 03:25:23
本物は私です。お願いですからとっとと答えろ。

282 :253:2005/05/17(火) 03:26:06
いや違くはないですよ
それよりあんたの技術力の低さが問題だ。
カルボナーラでも食ってろデブ

283 :253:2005/05/17(火) 03:26:38
本当に急いでるんです。
偽者は無視して質問に答えてください。

284 :253:2005/05/17(火) 03:27:06
それではアンコールにお答えしまして

はしれーこうそくのてーいーこーくかげきだんー♪

285 :デフォルトの名無しさん:2005/05/17(火) 03:27:12
>>279
あんたにはガッカリだ・・・

286 :253:2005/05/17(火) 03:27:59
さらにアンコールにお答えして

あしたは〜晴れるねジャンポール♪

287 :256:2005/05/17(火) 03:28:36
>>286
待ってました!

288 :778:2005/05/17(火) 03:29:06
すみません、自己解決しました。

289 :デフォルトの名無しさん:2005/05/17(火) 03:29:57
すみません。僕のせいでだいぶスレが荒れてしまいました…
今更謝って済む問題ではないですよね…反省してます。
本当に申し訳ありませんでした。

290 :デフォルトの名無しさん:2005/05/17(火) 03:30:04
>>778
半年romってろ!

291 :デフォルトの名無しさん:2005/05/17(火) 03:30:18
>>288
おまwwwww
スレまちがえてるwwwwwwww

292 :デフォルトの名無しさん:2005/05/17(火) 03:31:05
スゲー横柄な質問者ってのは、昔から居るよなぁ。(溜息)

293 :デフォルトの名無しさん:2005/05/17(火) 03:33:40
またラウンコか・・・

294 :デフォルトの名無しさん:2005/05/17(火) 03:36:33
オモシロカッタヨ

295 :デフォルトの名無しさん:2005/05/17(火) 03:41:56
なに?
ラウンジって何なの?

296 :デフォルトの名無しさん:2005/05/17(火) 03:47:44
>>295
2ch内の荒らしの集団
初心者をオフに誘ってレイプとかするらしいよ
皆さん気をつけてください

297 :253:2005/05/17(火) 03:55:33
>>260-287
の253はニュー速VIPの悪戯ですので勘違いせぬようお願いします。

298 :デフォルトの名無しさん:2005/05/17(火) 03:57:00
ラウンジの人たちだね・・・

299 :デフォルトの名無しさん:2005/05/17(火) 03:57:38
答えてやるから質問を3行にまとめろ

300 :デフォルトの名無しさん:2005/05/17(火) 03:57:54
>>296
最悪だなラウンジって

301 :デフォルトの名無しさん:2005/05/17(火) 03:58:06
>>299
お兄ちゃんの
おちんちん
何センチ?

302 :デフォルトの名無しさん:2005/05/17(火) 03:58:19
>>299




303 :デフォルトの名無しさん:2005/05/17(火) 04:02:19
きさま
えがしら
ろっぷんだろ

304 :193:2005/05/17(火) 06:27:06
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/401.txt

つくって、コンパイルが通ったけど、何にも結果が出力されてこない・・・
もう限界だ、寝るorz

305 :デフォルトの名無しさん:2005/05/17(火) 06:36:44
[1] 授業単元:繰り返し文・配列
[2] 問題文
1・適当な2つの3行×3列の行列a,bを定め、両者の和行列cを計算するプログラムを書け。
 ヒント:2次元配列a[3][3] b[3][3]を定め、2重ループを使ってi,j成分をc[i][j]=a[i][j]+b[i][j]とすればよい
2・行列a,bの積行列cを求めるプログラムを書け。
 ヒント:制御変数kを使った3重ループとし、c[i][j]=a[i][j]×b[i][j]とすればよい。

[3] 環境
 [3.1] OS: WINDOWS XP
 [3.3] 言語:C

お願いします。

306 :デフォルトの名無しさん:2005/05/17(火) 07:16:31
期限書いてないから急ぎかわからないので大まかに
int i,j,k,tmpは初めに宣言しておくこと
複数の計算をforにやらせたいときは{}でまとめないと
積ではforのあとの1つtmp=0しかやってくれないことに注意
逆に和のように1つの時は{}を省略できる
積で{}を取るとどうなるか提出後に考えてみるのも一興


for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=a[i][j]+b[i][j];


for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
tmp=0;
for(k=0;k<3;k++)
tmp+=a[i][k]*b[k][j];
c[i][j]=tmp:
}

307 :デフォルトの名無しさん:2005/05/17(火) 08:35:41
>>254
いやそれ、未だ全然わかんないから。
つーか、コンパイルとおらねぇだろよ。
ついでに言えば、反転処理も間違ってる。

308 :デフォルトの名無しさん:2005/05/17(火) 09:59:18
[1] 授業単元
宿題ではないのですが初心者スレで
こちらのスレを薦められたので来ました
[2] 問題文
文字列をクイックソートを使って昇順にソートしたい
(qsort()は使わずに)
[3] 環境
 [3.1] OS: WINDOWS XP
 [3.3] 言語:C/C++
[4] 期限:無期限

作りかけのもの
ttp://vip-et.ddo.jp/vipet/cgi-bin/img/405.zip

Ignore.txtを行ごとに読み込んで、行をソートして上書きするプログラムです。
悩んでいるのはsort.cppの部分です。よろしくお願いします。

309 :デフォルトの名無しさん:2005/05/17(火) 10:18:16
1]授業単元:プログラミング論I
[2]2分探索のプログラムを作成せよ
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005年5月18日まで

期限せまってるのですがさっぱりわかりません、よろしくお願いいたします。


310 :デフォルトの名無しさん:2005/05/17(火) 11:18:48
>>259
ありがとうございます!
ソース見て勉強します。

311 :デフォルトの名無しさん:2005/05/17(火) 11:23:40
>>308
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31

312 :デフォルトの名無しさん:2005/05/17(火) 11:49:42
>>309
問題が抽象的すぎます。

313 :デフォルトの名無しさん:2005/05/17(火) 11:56:03
>>311
早速読んでみます
ありがとうございました

314 :309:2005/05/17(火) 12:38:47
なんかこの続きを作れって感じなのですが、さっぱり、、
ヒントをだされても何がなにやら、、

・先頭をl、最後をhとすると、中間mは(1+h)/2となる
・繰り返しの終了条件はlとm、あるいはmとhが等しい時となる。
#define N_DATA 100
#include <stdio.h>
int main(void){
int l, m, h, key, data[101], result=0;

315 :デフォルトの名無しさん:2005/05/17(火) 12:44:16
> #define N_DATA 100
> int l, m, h, key, data[101], result=0;

こんなコードを問題で出すから生徒は育たないのだと思う。

316 :デフォルトの名無しさん:2005/05/17(火) 12:50:01
些細なことだけど

・先頭をl、最後をnとすると、中間mは(l+n)/2となる
・繰り返しの終了条件はlとm、あるいはmとnが等しい時となる。
#define N_DATA 100
#include <stdio.h>
int main(void){
int l, m, n, key, data[101], result=0;

なきがする

317 :デフォルトの名無しさん:2005/05/17(火) 12:50:07
>>314
>>1
> ・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。

318 :309:2005/05/17(火) 13:09:10
大変失礼しました。期限がせまっててあせってるのでつい、、

319 :デフォルトの名無しさん:2005/05/17(火) 13:09:21
>>317
はあ?何をとちくるってんだこのボケは

320 :デフォルトの名無しさん:2005/05/17(火) 13:32:46
>>319
情報を小出しにするなって事だろ

321 :デフォルトの名無しさん:2005/05/17(火) 14:07:17
>>309
期限って明日やん。この程度の問題でそんなん迫っているとは言わん。
こんなもんで良いんか?

#include <stdio.h>
#define N_DATA 100
#define DATA_COUNT ( N_DATA + 1 )
int main( void )
{
int i, l, m, n, key, data[ DATA_COUNT ], result = 0;
l = 0;
n = N_DATA;
for ( i = 0; i < DATA_COUNT; i++ ) data[ i ] = i + 1;
printf( "key ? " );
scanf( "%d", &key );
m = ( l + n ) / 2;
while ( 1 ) {
printf( "l = %d n = %d data[ %d ] = %d\n", l, n, m, data[ m ] );
if ( m == l || m == n || data[ m ] == key ) break;
else if ( data[ m ] > key ) { n = m; m = ( l + n ) / 2; }
else { l = m; m = ( l + n ) / 2 + 1; }
}
if ( data[ m ] == key ) printf( "Found data[ %d ] = %d\n", m, data[ m ] );
return ( result );
}

うん、汚ねぇソース。

322 :321:2005/05/17(火) 14:31:48
あ、一カ所間違ってら。まぁ、理解して修正してくれ。

323 :193:2005/05/17(火) 16:37:09
何か、荒らしのせいで随分レスがすすんでしまったみたいなんですけど、
実行してしばらく経っても全然結果が出てこないんですよね。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/401.txt

あと1時間で出さなきゃいけないのに何も思いつかないorz

324 :デフォルトの名無しさん:2005/05/17(火) 16:40:35
>>323
故意に計算速度を遅くしているからじゃないか?

325 :デフォルトの名無しさん:2005/05/17(火) 16:40:37
寝たあと、すごいことになってたんだな。
偽者出現したり、やっぱここも2chだな。(笑

326 :デフォルトの名無しさん:2005/05/17(火) 16:52:56
>>323
そんなときこそ、デバッグプリントを活用するんだ。
たとえば、forで今、何番目を処理してるか?とかコンソールに出すと、視覚的に良くわかる。
でも、ソースが汚くなる諸刃の剣。と。

327 :デフォルトの名無しさん:2005/05/17(火) 16:57:37
>>326
オマエ、諸刃の剣いってみたかったんちゃうかと。

328 :193:2005/05/17(火) 17:03:54
>>324
だって、それが目的ですもの

329 :デフォルトの名無しさん:2005/05/17(火) 18:08:02
>>327
だって、それが目的ですもの

330 :デフォルトの名無しさん:2005/05/17(火) 18:44:22
一生のお願いです。助けてください!!
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.zip
この中に途中までのコードと問題文が含まれています。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): MSVC
 [3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。
本当、窮地なんです。
助けてください。お願いします!!

331 :デフォルトの名無しさん:2005/05/17(火) 19:00:08
>>330
問題文はどこ?

332 :デフォルトの名無しさん:2005/05/17(火) 19:04:45
>>330
問題文ないよね?

333 :デフォルトの名無しさん:2005/05/17(火) 19:09:14
オレも探しちったぜ
あの暗号が問題文かと

んなわきゃねー

334 :デフォルトの名無しさん:2005/05/17(火) 19:10:32
[1] 情報処理
[2] 問題文
キーボードから入力した数値を小さい値の順に並べるプログラム。
ただし、関数を作る)
[3] 環境
 [3.1] OS: WINDOWS XP
 [3.3] 言語:C
[4] 期限:無期限
初歩的な質問ですがお願いします。

335 :デフォルトの名無しさん:2005/05/17(火) 20:07:11
>>334
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/403.txt

336 :デフォルトの名無しさん:2005/05/17(火) 20:45:18
[1] 授業単元:C++応用
[2] 問題文(含コード&リンク):
200人分の、4科目のデータが存在する。これをヒストグラムを表示する関数を
使用し、表示せよ
ヒストグラムの表示方法
0 〜 10ある科目が 0点〜10点だったの人数
11 〜 20ある科目が11点〜20点だったの人数
21 〜 30...
31 〜 40
41 〜 50
51 〜 60
61 〜 70
71 〜 80
81 〜 90
91 〜 100ある科目が91点〜100点だったの人数
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):VC++6.0Pro
 [3.3] 言語:C++
[4] 期限:今日中にお願いします。
[5] その他の制限:データは別ファイルから参照。↓の関数を必ず使う
/* 構造体の定義 */
struct HistgramRange
{
int low;
int high;
};


337 :336:2005/05/17(火) 20:48:29
/* 構造体を用いた変数の宣言と初期化 */
struct HistgramRange ranges[] =
{
{ 0, 10 },
{ 11, 20 },
{ 21, 30 },
{ 31, 40 },
{ 41, 50 },
{ 51, 60 },
{ 61, 70 },
{ 71, 80 },
{ 81, 90 },
{ 91, 100 }
}
作成する関数の定義は、次のようにする。
void histgram2(int points[],
int nchild,
struct HistgramRange hist[],
int nhist,
int results[]);
(ここまで出来ました。ロダ使えないので長レスごめんなさい)


338 :336:2005/05/17(火) 20:50:50
#include <stdio.h>
#define NINZUU 200//処理する人数(200)
#define STR_BUFSIZE 30//文字列受信用バッファサイズ
#define KAMOKU 4//科目数(4)
#define KOKUGO0//国語
#define SANSUU1//算数
#define RIKA2//理科
#define SYAKAI3//社会
int atoi_c(char buf[]);
char *skipws(char *str);
int histgram1(int points[], int nchild, int low, int high);
int main(void)
{char buf[STR_BUFSIZE];//文字列受信用バッファ
int a[KAMOKU][NINZUU];//科目x人数別の点数情報
int i = 0;
struct HistgramRange
{int low;
int high;};
while (fgets(buf, STR_BUFSIZE, stdin) != NULL)
{
char *p = buf;
a[KOKUGO][i] = atoi_c(p);
p = skipws(p);
a[SANSUU][i] = atoi_c(p);
p = skipws(p);
a[RIKA][i] = atoi_c(p);
p = skipws(p);
a[SYAKAI][i] = atoi_c(p);
printf("%d人 国語 : %d,算数 : %d,理科 : %d,社会 : %d\n", i, a[KOKUGO][i], a[SANSUU][i], a[RIKA][i], a[SYAKAI][i]);
i++;
if (i == NINZUU)//処理可能な上限人数に達した場合も、集計を終了する
break;}

339 :336:2005/05/17(火) 20:52:47
int xa1_1 = histgram1(a[KOKUGO], i, 0, 10);
int xb1_2 = histgram1(a[SANSUU], i, 0, 10);
int xc1_3 = histgram1(a[RIKA], i, 0, 10);
int xd1_4 = histgram1(a[SYAKAI], i, 0, 10);
printf ("0-10 国語 : %d 人, 算数 : %d 人,理科 : %d 人,社会 : %d 人\n", xa1_1,xb1_2,xc1_3,xd1_4);

int xa2_1 = histgram1(a[KOKUGO], i, 11, 20);
int xb2_2 = histgram1(a[SANSUU], i, 11, 20);
int xc2_3 = histgram1(a[RIKA], i, 11, 20);
int xd2_4 = histgram1(a[SYAKAI], i, 11, 20);
printf ("11-20 国語 : %d 人, 算数 : %d 人,理科 : %d 人,社会 : %d 人\n", xa2_1,xb2_2,xc2_3,xd2_4);
(100まで続く)
return 0;
}
int histgram1(int points[], int nchild, int low, int high)
{

int i = 0;
short count = 0;

for (i = 0; i < nchild; i++)
{if ( (low <= points[i]) && (points[i] <= high) )
count++;
}
return count;
}int atoi_c(char buf[])


340 :336:2005/05/17(火) 20:54:00
{
int x = 0;//変換中の数値
short i = 0;//現在処理中の桁(要素番号)

while ( ('0' <= buf[i]) && (buf[i] <= '9') )//bufの中身は数字か?
{
x *= 10;//下の桁が見つかったので1桁大きくする
x += buf[i] - '0';//bufのi桁目を数字に変換
i ++;//一つ下の桁を見に行く
}
return x;
}char *skipws(char *str)
{
while (('0' <= *str) && (*str <= '9'))//読み終わった数字
str++;
while (!(('0' <= *str) && (*str <= '9')) && *str != '\0')//次の数字に当たるまでポインタを進める
str++;
return str;
}

以上になります。長レスごめんなさい。
構造体での表示方法がどうしてもわかりません。よろしくお願いします

341 :193 ◆vVe.Z3fuuw :2005/05/17(火) 21:25:01
まだ>>323から進展がない件
もう締め切りが過ぎてしまった件

342 :デフォルトの名無しさん:2005/05/17(火) 21:44:13
>>340
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/404.txt

> 作成する関数の定義は、次のようにする。
> void histgram2(int points[],
> int nchild,
> struct HistgramRange hist[],
> int nhist,
> int results[]);

クソなプロトタイプだな。

343 :デフォルトの名無しさん:2005/05/17(火) 21:56:49
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): マシンイプシロンを計算するプログラムを作成せよ(floatの場合とdoubleの場合の2種類)
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:明後日
[5] その他の制限: 1.0にある変数aを足したときPCが1.0+a>1.0と認識できなくなる瞬間がある。aの値をa=a/2のように各ループで計算し、不等式で判断するとよい。但し、認識できなくなる直前のaがマシンインプロシオンであることに注意せよ。
との事ですがいまいち分かりません;;どなたかご教授宜しくお願い致します。

344 :340:2005/05/17(火) 21:59:48
>>342
ありがとうございました。助かりました。

345 :デフォルトの名無しさん:2005/05/17(火) 22:07:00
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク): n個の乱数(整数)を発生させ、そのn個の整数が素数であるかどうかを判別するプログラムを作成せよ。但し、整数の上限は1000とする。
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:
[4] 期限:明日

お願いしますです

346 :345:2005/05/17(火) 22:07:57
すいません言語Cです

347 :デフォルトの名無しさん:2005/05/17(火) 22:11:13
>>343
んで、答えはこんなんだ。
double a = 1.0;
double old_a;
while (a + 1.0 > a) {
  old_a = a;
  a /= 2;
}
printf("%f\n", a);
でもなぁ。i386系のCの浮動小数点演算は、これで正確にでるかはわからんなぁ。

348 :デフォルトの名無しさん:2005/05/17(火) 22:12:09
[1] 授業単元: C言語基礎
[2] 問題文(含コード&リンク):数列int a[10]={1,2,3}に入力した数値を加え、小さい方から大きい方へと並び替え、表示させる
[3] 環境
 [3.1] OS: windows XP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可
[4] 期限:できれば今日中に・・・


349 :デフォルトの名無しさん:2005/05/17(火) 22:16:50
>>345

/* 1以上n以下の乱数を返す */
int random(int n) {return rand() % n + 1}
/* 素数なら真を返す */
int is_prime(int n) {
int i;
for (i = 2; i <= n; i++)
if (n % i == 0)
return 1;
return 0;
}
main(void) { /* 力尽きた */}

350 :デフォルトの名無しさん:2005/05/17(火) 22:18:40
ソートは食傷気味。

351 :デフォルトの名無しさん:2005/05/17(火) 22:22:43
>>347
なぜか動きません・・・orz

352 :デフォルトの名無しさん:2005/05/17(火) 22:27:50
[1] 授業単元:C言語基礎
[2] 問題文(含コード&リンク):
  与えられた文章から最も文字数の多い行を表示しなさい
  例)今日は
    とても良い天気なので
    公園に行きました
  解)とても良い天気なので    
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C


皆さんなら、朝飯前ですか?

353 :デフォルトの名無しさん:2005/05/17(火) 22:31:57
>>348
#include <stdio.h>
int main() {
char buf[256];
int i, j, tmp, a[10] = { 1, 2, 3 };
const int size = sizeof(a) / sizeof(*a);
for(i = 0; i < size; i++) {
for(; ; ) {
printf("%d 番目に加える数値を入力してください: ", i + 1);
*buf = '\0';
fgets(buf, sizeof(buf), stdin);
if(sscanf(buf, "%d", &tmp))
break;
fputs("エラー: 数値として認識できません。\n", stderr);
}
a[i] += tmp;
}
for(i = 1; i < size; i++) {
for(j = i; j < size; j++)
{
if(a[j - 1] > a[j])
{
tmp = a[j - 1];
a[j - 1] = a[j];
a[j] = tmp;
}
}
}
for(i = 1; i < size; i++)
printf("%d: %d\n", i + 1, a[i]);
return 0;
}

354 :デフォルトの名無しさん:2005/05/17(火) 22:31:58
>>352
>皆さんなら、朝飯前ですか?

なんかムカツク。
朝飯まで時間があるから自分でやれ。

355 :デフォルトの名無しさん:2005/05/17(火) 22:33:42
>>353
ありがとうがざいます。これで明日からちゃんと学校に通えれます。

356 :352:2005/05/17(火) 22:34:06
>>354
すみません・・・一言多かったです m(_ _)m
反省してます。


357 :デフォルトの名無しさん:2005/05/17(火) 22:36:43
>>348
#include <stdio.h>
#include <stdlib.h>
#define ArrayMax (10)
int func(const void* a,const void* b){
    int aa= (*(int*) a);
    int bb= (*(int*) b);
    if(aa>bb) return 1;
    if(aa == bb) return 0;
    if(aa<bb) return -1;
    return 0;
}
int main(void)
{
    int a[ArrayMax];
    for(int i=0;i<ArrayMax;i++){
        printf("%d-",i+1);
        scanf("%d",&a[i]);
    }
    for(int i=0;i<ArrayMax;i++){
        printf("%d ",a[i]);
    }
    puts("\n*start sort*\n");
    qsort(a,ArrayMax,sizeof(int),func);
    for(int i=0;i<ArrayMax;i++){
        printf("%d ",a[i]);
    }
    return 0;
}

358 :デフォルトの名無しさん:2005/05/17(火) 22:39:09
>>352
#include <stdio.h>
#include <string.h>

#define BUF_SIZE 256

int main()
{
char buf[BUF_SIZE], longest[BUF_SIZE] = "";
size_t len, maxlen = 0;

while(fgets(buf, sizeof(buf), stdin) != NULL)
{
len = strlen(buf);
if(len && buf[len - 1] == '\n')
buf[--len] = '\0';
if(len > maxlen)
{
maxlen = len;
strcpy(longest, buf);
}
}
puts("最も長い行:");
puts(longest);
getchar();
return 0;
}

359 :デフォルトの名無しさん:2005/05/17(火) 22:39:14
[1]授業単元:データ構造
[2] ダミー節点を使わないリスト構造を用いて,挿入整列の
プログラムを作成せよ
・リスト構造は,ポインタによるリンクリストを用いること
・整列前のリスト内の各要素,整列後のリスト内の各要素を
 表示するようにすること
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン): cygwin
[3.3]言語:C言語
[4]期限:2005/05/23

結構考えたつもりなんですがさっぱりわかりません。
どうかよろしくお願いします。

360 :デフォルトの名無しさん:2005/05/17(火) 22:42:49
>>359
どこまで考えたんだ?

361 :デフォルトの名無しさん:2005/05/17(火) 22:44:11
>>357
int func(const void* a,const void* b){
return *(int*)a - *(int*)b;
}
一行ですむものを。

362 :デフォルトの名無しさん:2005/05/17(火) 22:46:15
>>349
#includeから書いていただけると嬉しいです;

363 :デフォルトの名無しさん:2005/05/17(火) 22:48:14
>>361
おお、そんな方法が。
勉強になります。
さんきゅー。

364 :デフォルトの名無しさん:2005/05/17(火) 22:48:22
>>360
色々な参考書読んだのですが、プログラムを作るとなると手が出ません^^;
つまり、手付かずの状態です。全く分かりません^^;

365 :デフォルトの名無しさん:2005/05/17(火) 22:48:22
問題が2つ出たのですがさっぱり解りません。
先輩方宜しくお願いします。

[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):ダミー節点を使わないリスト構造を用いて,挿入整列のプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):bcc
 [3.3] 言語:C
[4] 期限:5月22日まで
[5] その他の制限:
リスト構造は,ポインタによるリンクリストを用いること
整列前のリスト内の各要素,整列後のリスト内の各要素を表示するようにすること

366 :352:2005/05/17(火) 22:48:32
>>358
ありがとうございました
助かりました

367 :デフォルトの名無しさん:2005/05/17(火) 22:53:24
>>364
本を読んでいるだけではプログラミングなんて身につかない。
自然言語にも言えることだけど。

368 :365:2005/05/17(火) 22:54:12
[2] 問題文(含コード&リンク):配列によるリストを用いて,Josephusの問題を解法するプログラムを作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):bcc
 [3.3] 言語:C
[4] 期限:5月22日まで
[5] その他の制限:無し

宜しくお願いします。

369 :デフォルトの名無しさん:2005/05/17(火) 23:14:06
>>367
はい、すみません。でも今回は本当にわからなかったんです。
どうかよろしくお願いしますm(__)m

370 :デフォルトの名無しさん:2005/05/17(火) 23:17:15
[1] 情報処理
[2] 問題文
テストの点数を入力していき、最高点、最低点、平均点を計算するプログラムを作成せよ
入力の値が負になったとき、入力は終了とする
[3] 環境
 [3.1] OS:linux
 [3.3] 言語:C
[4] 期限:明日
[5] その他の制限:入力値を用いて判定式を作成し、while分に応用する

よろしくお願いします

371 :デフォルトの名無しさん:2005/05/17(火) 23:20:14
激しくちゃぶ台ひっくり返したい。

372 :デフォルトの名無しさん:2005/05/17(火) 23:20:27
[1] 授業単元:C
[2] 問題文(含コード&リンク):ガウスの消去法。入力、前進代入、後進代入、出力の関数を使う。
[3] 環境
 [3.1] OS: WinXp
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:5月18日
[5] その他の制限:

数学系のプログラミングがまったくできません。
よろしくお願いします。


373 :デフォルトの名無しさん:2005/05/17(火) 23:25:03
>>372
数学系でないプログラミングを教えて欲しい。

374 :デフォルトの名無しさん:2005/05/17(火) 23:26:31
言語処理とか数学系じゃない・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ような気がちょっとする。

375 :デフォルトの名無しさん:2005/05/17(火) 23:42:29
>>252をどうか・・・お願いします

376 :デフォルトの名無しさん:2005/05/17(火) 23:46:25
>>361
aが指してる値がINT_MINで、bが指してる値が正だと
ヘンなことになるな。

377 :デフォルトの名無しさん:2005/05/17(火) 23:50:57
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):ポインタ変数の配列 char*a[5]; に
英単語を5個入力し、逆順に出力するプログラムをつくれ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C/C++/どちらでも可 のいずれか C
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 5月18日
[5] その他の制限:  特にありません。

どなたかよろしくお願いします。


378 :デフォルトの名無しさん:2005/05/17(火) 23:52:43
>>370
#include<stdio.h>
int main(){
    int min,max,sum=0,num=0,point=0;
    printf("点数を入力して下さい。\n負の数を入力すれば終了します。\n");
    scanf("%d",&point);
    min = max = point;
    while(point>=0)
    {
        ++num;
        if(min > point)min = point;
        if(max < point)max = point;
        sum += point;
        scanf("%d",&point);
    }
    if(num != 0) printf("最高点は%d点です。\n最低点は%d点です。\n平均点は%d点です。\n",max,min,sum/num);
    else printf("得点が入力されていません");
}

379 :デフォルトの名無しさん:2005/05/18(水) 00:00:30
>>365
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/405.txt
希望通りのものかどうか知らんが

380 :デフォルトの名無しさん:2005/05/18(水) 00:17:54
>>379
359ですが365と重複していたので解決しました。
ありがとうございました。

381 :デフォルトの名無しさん:2005/05/18(水) 00:19:38
>>378
ありがとうございます!助かりました

382 :デフォルトの名無しさん:2005/05/18(水) 00:25:59
>>252
問題の情報が十分に与えられていない。無理。

383 :デフォルトの名無しさん:2005/05/18(水) 00:59:43
>>377
#include <stdio.h>
#include <string.h>

#define BUF_SIZE 256

int main()
{
const char *seps = " ,\t\n";
static char inbuf[BUF_SIZE], abuf[BUF_SIZE];
char *a[5], *str, *writepos = abuf;
const size_t size = sizeof(a) / sizeof(*a);
size_t num = 0, i;
while(num < size)
{
*inbuf = '\0';
fgets(inbuf, sizeof(inbuf), stdin);
str = strtok(inbuf, seps);
while(str)
{
a[num] = writepos;
writepos += sprintf(writepos, "%s%c", str, '\0');
if(++num == size)
break;
str = strtok(NULL, seps);
}
}
for(i = size; i; )
printf("%s ", a[--i]);

return 0;
}

384 :デフォルトの名無しさん:2005/05/18(水) 01:04:10
書き忘れていましたが、>>365は自分で教科書を参考にしながら書いていたら以下のようになりました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/406.txt

385 :デフォルトの名無しさん:2005/05/18(水) 01:22:01
>>382
いや、あれ以上与えようが・・・。
サーバーとクライアントのチャットができるプログラムを、395.txtのゲームができるように、
少し変えてもらうだけでいいんですが。

386 :デフォルトの名無しさん:2005/05/18(水) 01:33:28
>>385
情報も環境もないのに出来るわけ無いだろ。
自分に出来ないことを 「だけ」 って言うな。

387 :377:2005/05/18(水) 01:39:37
>>383
ありがとうございます。とても助かりました。

388 :デフォルトの名無しさん:2005/05/18(水) 02:46:25
>>330
desu. suimasen. koredesu.
http://www.geocities.jp/arerenore1357/HW.cab

honto, onegai simasu!!

389 :デフォルトの名無しさん:2005/05/18(水) 02:59:40
【質問テンプレ】
[1] 情報通信:
[2] ttp://www.musication.to/prog/erl.html のBを求める計算のプログラム:
[3] 環境
 [3.1] OS:linux
 [3.3] 言語:C
[4] 期限:18日 13:00まで
[5] なし

計算式がわかっているのにどうにもできません。
どうかよろしくおねがいします。

390 :デフォルトの名無しさん:2005/05/18(水) 03:23:36
>>389
a は何で n は何で x は何だ?

391 :デフォルトの名無しさん:2005/05/18(水) 03:31:13
xはforループの変数だろ。

392 :389:2005/05/18(水) 03:42:03
すいません。
とりあえずaとnは自分で入力する変数ということで。
xは入れなくてもΣで動くと思います。

393 :デフォルトの名無しさん:2005/05/18(水) 04:15:48
>>392 藁った。

ところで、呼量がaで、回線容量がnだな。
Bは呼損率だが、それを求めてほしーよーだ。
リンク先では、aとBを与えてnを求めるプログラムだから混乱するわな。

あと、0の階乗は1な。
数学ライブラリを使うときは、-lm忘れんなよ。

394 :デフォルトの名無しさん:2005/05/18(水) 05:42:54
>>306
ありがとうございます。
遅くなってすいません。


395 :デフォルトの名無しさん:2005/05/18(水) 07:15:21
>>343
float版は自分でやんなさい

#include <stdio.h>

#define ONE 1.0
double deps(void)
{
double eps = ONE;
do {
eps *= 0.5;
} while( eps+ONE != ONE );
eps *= 2;
return eps;
}

int main( void )
{
printf( "%e\n", deps() );
return 0;
}

396 :デフォルトの名無しさん:2005/05/18(水) 07:50:09
[1] プログラミング演習
[2] 簡単なモグラたたきゲームを作れ
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C/C++/どちらでも可
[4] 期限:今日のお昼まで
 
今日中に外部構造、内部構造くらい作らないといけないのですが、全くわかりませぬ。
使用するグラフィックは素材集から流用しまつ。

397 :デフォルトの名無しさん:2005/05/18(水) 07:58:16
>>396 ネタどーも。

398 :デフォルトの名無しさん:2005/05/18(水) 07:58:50
宿題の提出時には

#include <2c.h>

を忘れるな

399 :396:2005/05/18(水) 08:03:44
ちょっとプログラムが長く?なりそうだと思うので、使うべき関数だけでも教えてもらえると幸いです(;´Д`)

あとこの文献が参考になる!ってのありませんでしょうか?ネト通販でいろいろ探してますがみつからんとです・・

400 :193 ◆vVe.Z3fuuw :2005/05/18(水) 08:03:56
>>323の方針から一旦離れて、
Pick_up_Next_Node()で計算回数を減らしてやろうと思っていじってみたものの
全くへっていない・・・
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/409.txt

* Flow augmented by 1 through 4 + 3 + 2 + 1
* Flow augmented by 1 through 4 + 2 + 3 + 1

を交互に出させるにはどうすればいいのでしょうか。
やっぱり↓を修正していくしかないのでしょうか。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/401.txt

401 :デフォルトの名無しさん:2005/05/18(水) 08:28:00
【質問テンプレ】
[1] 授業単元:Data structure
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/410.txt
[3] 環境
 [3.1] OS: Win XP
 [3.2] コンパイラ(バージョン):MSVC
 [3.3] 言語:C++
[4] 期限:なるべくはやく。
[5] その他の制限:
mainとsum関数はあたえられたものです。
自分なりにやってみたのですが、エラーが出ます。
よろしくお願いします。

402 :デフォルトの名無しさん:2005/05/18(水) 09:04:54
>>389
#include <stdio.h>

int main( void )
{
double a, b, val1, val2, val3, val4;
int n;

printf( "呼量:" );
scanf( "%lf", &a );
printf( "損失率:" );
scanf( "%lf", &b );

val1 = val2 = val3 = 1;
n = 0;
do {
n++;
val1 *= n;
val2 *= a;
val3 += val2 / val1;
val4 = val2 / val1 / val3;
} while( b < val4 );

printf( "回線数:%d\n", n );
return 0;
}

403 :デフォルトの名無しさん:2005/05/18(水) 09:57:02
[1] 授業単元: プログラミング演習
[2] 問題文:
ユーザーに 実数 a, b, c を代入してもらい、a * x * x + b * x + c = 0
の解を求めるプログラムを作成する。ただし a != 0.0 かどうかは考えなくても良いとする。
a, b, c の値によって、2個の実数解、重解、2個の虚数解、が求まる。 それぞれの場合について

実数解ならば、
入力パラメータは
a = 1.0, b = 4.0, c = 3.0 です。

2個の実数解を持ちます。答えは
x1 = -1.0000000 です。
x2 = -3.0000000 です。

重解ならば、
入力パラメータは
a = 1.0, b = 4.0, c = 4.0 です。

1個の重解を持ちます。答えは
x1 = -2.0000000 です。

虚数解ならば、
入力パラメータは
a = 1.0, b = -2.0, c = 5.0 です。

2個の虚数解を持ちます。答えは
x1 = 1.00000 + 2.00000 i です。
x1 = 1.00000 - 2.00000 i です

404 :403:2005/05/18(水) 09:57:30
と表示するプログラムを作成せよ。実数解と重解を求める場合には、平方根を用いなければ
ならないが、これは sqrt() 関数をもちいること。また、C言語には虚数型という型は存在しないので、
虚数解を求める場合は、実数部分 reと、虚数部分 imとを個別に求め、
printf( "x1 = %lf + %lf i です。\n", re, im ); のように表示せよ。

[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:明日まで [5] その他の制限: なし

どなたかご教授お願いしますm(_ _)m

405 :デフォルトの名無しさん:2005/05/18(水) 11:09:01
#include<stdio.h>
#include<math.h>

int main(int argc,char **argv){
    double a,b,c,d;
    scanf("%lf %lf %lf",&a,&b,&c);/* 入力 */
    d=b*b-4.0*a*c;/* 判別式 */
    printf("入力パラメータは\n a = %f, b = %f, c = %f です。\n\n",a,b,c);
    if(d>0){/* 異なる2実数解 */
        printf("2個の実数解を持ちます。答えは\n");
        printf("x1 = %f です。\n",(-b+sqrt(d))/(2.0*a));
        printf("x2 = %f です。\n",(-b-sqrt(d))/(2.0*a));
    }else if(d<0){/* 異なる2非実数解 */
        printf("2個の虚数解を持ちます 。答えは\n");
        printf("x1 = %f + %f i です。\n",-b/(2.0*a),sqrt(-d)/(2.0*a));
        printf("x1 = %f - %f i です\n",  -b/(2.0*a),sqrt(-d)/(2.0*a));
    }else{/* 重解 */
        printf("1個の重解を持ちます。答えは\n");
        printf("x1 = %f です。\n",-b/(2.0*a));
    }
    return 0;
}

-lm オプションを忘れずに
虚数解の誤植もあえてそのままにしてみた。気になるようだったら直すように

406 :デフォルトの名無しさん:2005/05/18(水) 12:33:46
>>402
損失率が解のを求めてほしいんじゃなかったっけ?
と言うやってもいない人間の俺ガイル

407 :デフォルトの名無しさん:2005/05/18(水) 12:40:26
また重複すいません。
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.cab
この中に途中までのコードと問題文が含まれています。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): MSVC
 [3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。
本当、窮地なんです。
助けてください。お願いします!!

408 :だだ:2005/05/18(水) 12:45:36
[1] オブジェクト指向論
[2] keybd_event を使って一番上のウインドウ(テキストファイルやコンソールウインドウ)に
1\n
2\n・・・・・・・
10\n
11\n
と表示させるようにプログラムを組む
[3] 環境
 [3.1] OS: Windows XP SP2
 [3.2] コンパイラ(バージョン):Visual C++ 6.0 SP5
 [3.3] 言語:C++
[4] 期限:2005年05月19日まで
[5] その他の制限: 関数化していただけるとうれしいです。


409 :デフォルトの名無しさん:2005/05/18(水) 14:35:12
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/411.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):bcc 5.5
 [3.3] 言語:C
[4] 期限:2005年05月20日まで
[5] その他の制限:構造体を使っていただけると助かります。

410 :デフォルトの名無しさん:2005/05/18(水) 14:35:41
[1] 授業単元: 情報
[2] 問題文(含コード&リンク):適当な範囲で値をとる整数の乱数を発生させ、
それを 365 で割った余りを計算する作業を繰り返す。余りとして0から364 までが考えられるが、
それぞれ何回出現したかを数えておくプログラムをお願いします。
[3] 環境  
[3.1] OS: WinXP
[3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C/C++/どちらでも可 のいずれか Cでお願いします。
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 5月19まで

411 :デフォルトの名無しさん:2005/05/18(水) 14:58:06
[1] 授業単元: アルゴリズムI
[2] 問題文(含コード&リンク):データとして0から100までの整数を配列の先頭から順に繰り返し文を使って詰める。
              その後、2つ目の繰り返し文で全データを表示する(数値のみでよい)
              このプログラムを書きなさい。
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C言語
[4] 期限:2005年5月19日の朝9時まで

先輩方、ご教授お願いします。

412 :403:2005/05/18(水) 15:20:23
>>405さん
丁寧な解答ありがとうございます。
おかげで助かりました。


413 :デフォルトの名無しさん:2005/05/18(水) 15:34:19
>>410

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

int main(int argc,char **argv){
    int a[365]={0},b,i;
    for(i=0;i<10000;i++)
    {
        b=rand() % 365;
        a[b]++;
    }
    for(i=0;i<365;i++)
    {
        printf("%3d-%03d ",i,a[i]);
    }
    return 0;
}
やっつけで作ってみたけど
・乱数に関して制限はないか(stdlib.hのものでokなのか、自分で作ってこいとか)
・乱数を365で割った余りを計算するがどこで終了するか(上のは10000回で打ち切り)
・余りkがいくつ出たかとか記憶はするが結果を表示するのかどうか
そのへんがわからないので勝手に設定した。

414 :デフォルトの名無しさん:2005/05/18(水) 15:46:06
>>411
#include<stdio.h> 

int main(int argc,char *argv[]){
 int a[101],i;
 for(i=0;i<101;i++)a[i]=i;
 for(i=0;i<101;i++)printf("%d ",a[i]);
 return 0;

ホントニコレデイインダロウカ…

415 :デフォルトの名無しさん:2005/05/18(水) 15:47:39
>411
#include <stdio.h>

#defineMAX_INTEGER 100

int main()
{
int i_array[ MAX_INTEGER + 1 ], i;

for( i = 0; i <= MAX_INTEGER; i++ )
i_array[ i ] = i;

for( i = 0; i <= MAX_INTEGER; i++ )
printf( "%3d ", i_array[ i ] );

return 0;
}

問題を誤解していたらスンマソン


416 :デフォルトの名無しさん:2005/05/18(水) 16:45:35
【質問テンプレ】
[1] 授業単元:アルゴリズム演習1
[2] 問題文(含コード&リンク):
@二つの整数を入れて、その公約数をすべて表示せよ
Aはじめに人数を入力、その人数分、交通費を入力。
  するとお金の種別ごと(一万円、五千円、千円、五百円、百円、五十円、十円、一円)
  に何枚用意する必要があるか表示してくれるプログラムを作成せよ。
  例:2人で530円と380円の場合
    はじめに、”2”次に”530””380”といれたら、
    五百円玉 1枚、百円玉 3枚、 五十円玉 1枚、十円玉 6枚 と表示される。
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):VC++ .NET (7.1)
 [3.3] 言語:C言語
[4] 期限:5月19日早朝まで

よろしくお願いします。

417 :デフォルトの名無しさん:2005/05/18(水) 16:50:57
整数のデータを線形リストに格納しているとする。リストは次のように
定義され、空はマクロNULLで表す。

struct ListNode{
int value;
struct ListNode* next;
};

リストと正の整数nを受け取り、nよりも大きな値を持つ要素の位置と
値を出力する、次のような名前と型を持つC言語の関数を定義せよ。

void printLargerList(struct ListNode* data,int n);

ただし最初の要素の位置を0番目と数えることにする。

お願いします。

418 :デフォルトの名無しさん:2005/05/18(水) 16:51:32
そんな金種計算ここでやるなよ

419 :デフォルトの名無しさん:2005/05/18(水) 16:59:40
>>395
できました!ありがとうございました
・・・が、floatがわからないですorz

420 :デフォルトの名無しさん:2005/05/18(水) 17:32:00
>>416
(1)
#include <stdio.h>
int main(void) {
    int a, b, i, m;
    printf("a?:"); scanf("%d", &a);
    printf("b?:"); scanf("%d", &b);
    m = a < b ? a : b;
    for (i = 1; i <= m; i++) if (!(a % i) && !(b % i)) printf("%d\n", i);
    return 0;
}

421 :デフォルトの名無しさん:2005/05/18(水) 17:34:23
>>416
二千円は?

422 :デフォルトの名無しさん:2005/05/18(水) 17:51:34
>>417
デバッグしてないけど、こんな感じか??

void printLargerList(struct ListNode* data,int n){
    struct Node* N=data;
    int i=0; 
    while(N != NULL){
        if(N->value >n){
            printf("%d-%d\n"i,N->value);
        }
        i++;
        N = N->next;
    }
    return;
}

423 :デフォルトの名無しさん:2005/05/18(水) 17:52:20
>>421
銀行で寝てて誰も知らないんだよ。(笑

424 :デフォルトの名無しさん:2005/05/18(水) 17:53:50
>>416
(2) 枚数を全角で表示していない。枚数を読点で区切って表示していない。
#include <stdio.h>
int main(void) {
    int i, count, fare, yen[9] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1}, need[9] = {0};
    char yen_notation[9][9] = {"一万円札", "五千円札", "千円札", "五百円玉", "百円玉", "五十円玉", "十円玉", "五円玉", "一円玉"};
    printf("人数は?:"); scanf("%d", &count);
    while(count-- > 0)
    {
        printf("交通費は?:"); scanf("%d", &fare);
        for (i = 0; i < 9; i++)
        {
            while(fare >= 0) {fare -= yen[i]; need[i]++;}
            fare += yen[i]; need[i]--;
        }
    }
    for (i = 0; i < 9; i++) if (need[i]) printf("%s %d枚 ", yen_notation[i], need[i]);
}

425 :416:2005/05/18(水) 17:56:37
>>421さん、えっと、特に問題文に書いた以上の指示はなかったんで、どちらでもいいとおもいます。
すみません。
>>420
ありがとうございました。
たすかりました。


426 :416:2005/05/18(水) 18:02:50
>>426さん
ありがとうございます。
考えたとき、さっぱりわからなかったんで、
ちょっと、これを参考にやり直してみようとおもいます。

返信をくれた方々、本当にありがとうございました。
感謝です。

427 :デフォルトの名無しさん:2005/05/18(水) 18:03:04
[1] 授業単元:プログラミング応用課題
[2] 問題文:入力1〜10000までの任意の整数を例のように正規化せよ
ただし、条件分岐命令は使用禁止
例:
入力 出力
1〜 8 8
9〜16 16
17〜32 32
33〜64 64
以下出力が2乗で増えていく

[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限 :2005/05/31
[5] その他の制限:なし

これ、if無しでどうやって作ればいいのか・・・orz
おねがいします。

428 :デフォルトの名無しさん:2005/05/18(水) 18:04:14
>>422
>struct Node* N=data; 
struct ListNode* N=data;
の間違い。コンパイル位するんだった。 


429 :デフォルトの名無しさん:2005/05/18(水) 18:05:40
>>427
1引いて8で割り、その結果に1を足して8掛ける。

430 :デフォルトの名無しさん:2005/05/18(水) 18:07:51
>>424
ちょっと待て、入力も全角になってないぞ。

431 :デフォルトの名無しさん:2005/05/18(水) 18:08:44
>>429
冗長ロジック乙。

432 :デフォルトの名無しさん:2005/05/18(水) 18:12:01
[1] 授業単元: プログラミング技術
[2] 問題文(含コード&リンク):借入金の返済シミュレーションを行うプログラムを作成せよ
[3] 環境  
[3.1] OS:Linux
[3.2] コンパイラ(バージョン): gcc
 [3.3] 言語:C
[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか 明日(できれば今日中)
[5] その他の制限:
実行例
借入金を入力してください:1000
毎月の返済額を入力してください:300
金利/月率(%)を入力してください:5
1ヶ月目:返済額=1050円、償還額=300円、残額705円
2ヶ月目:返済額=740.25円、償還額=300円、残額440.25円
3ヶ月目:返済額=462.2625円、償還額=300円、残額162.2625円
4ヶ月目:返済額=170.375625円、償還額=171円、残額0円
※最後は小数だとおかしいので繰上げで整数になります

どうか宜しくお願いしますm(_ _)m


433 :427:2005/05/18(水) 18:17:57
>>429
即レスありがとうございます。
若干結果が変わるようですが、大変参考になりました。
がんばってみます。

434 :デフォルトの名無しさん:2005/05/18(水) 18:24:22
>>433
>>427ではだめだと思うぞ。for文の条件式はさすがにいいだろうと
思い、次のようなプログラムを作った。でもこれ入力に対応してない
んだよね。もう少しいじれば何とかなると思うんだが・・・・
#include <stdio.h>

int main(void)
{
 int i = 1, k;

 for (k = 8; k < 256; k *= 2)
  for (; i <= k; i++) {
   int j = (i - 1) / k + 1;
   printf("%d %d, ", i, j * k);
  }
 return 0;
}

435 :デフォルトの名無しさん:2005/05/18(水) 18:24:58
>>427
whileは使ってもいいの??

436 :デフォルトの名無しさん:2005/05/18(水) 18:28:40
[1] 授業単元: アルゴリズム論
[2] 問題文(含コード&リンク):キーボードから任意の整数(これをキーという)を入力する。
              データの入った配列を前から順に調べてキーと一致するデータをもつ要素の
              添字を表示する。一致しない時はー1を表示する。
              このプログラムを作りなさい。
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C言語
[4] 期限:2005年5月19日13時まで

明日のテストに必ずでるそうなんですがさっぱりわかりません、先輩方助けてください。

437 :デフォルトの名無しさん:2005/05/18(水) 18:36:23
>>427
多分これでいいはず。
ポイントは、正規化する数字が2乗されていること。
普段あんまり使わないというか、古のテクニックが役に立ったというところか。

void main(){
    int i;
    int j=0,k=0;
    puts("Input...");
    scanf("%d",&i);

    while(j<i){
        j=8*(1<<k-1);
        k++;
    }
    printf("%d",j);
}

438 :437:2005/05/18(水) 18:39:47
>>437
>j=8*(1<<k-1); 
j=8*(1<<k);
の間違い。 
-1しても意味ない。

439 :デフォルトの名無しさん:2005/05/18(水) 18:41:21
>>436
馬鹿丸出しで申し訳ないが、添字って何を指しているの?
要素の中身を表示すればいいのかな?

440 :デフォルトの名無しさん:2005/05/18(水) 18:44:27
a[n]ならnが添字

441 :デフォルトの名無しさん:2005/05/18(水) 18:44:59
>>436
データの入った配列がどんなのかは知らんから適当に作った。

#include <stdio.h>
#define NUM 4
int main(int argc, char *argv[])
{
int a[NUM] = {2, 4, 8, 16};
int i, key;

scanf("%d", &key);
for(i = 0; i < NUM; i++)
{
if(a[i] == key)
{
printf("%d\n", i);
return 0;
}
}
printf("-1\n");

return 0;
}

442 :デフォルトの名無しさん:2005/05/18(水) 18:45:37
>>440
ああ、そっちか。
サンキュー。勉強になった。

443 :デフォルトの名無しさん:2005/05/18(水) 18:52:43
>>437
シフトを使わないで、必要ない所も削ったら次のようになった。
どちらにしろ、for()やwhile()の条件式が使えないと無理そう。
int main(void)
{
 int i = 1, j, k, l;

 scanf("%d", &l);

 for (k = 8; k < l; k *= 2)
  i = k;

 j = (i - 1) / k + 1;
 printf("%d\n", j * k);

 return 0;
}


444 :デフォルトの名無しさん:2005/05/18(水) 18:53:23
>>436
#include <stdio.h>
#define DataMax (10)

int Find(int* data,int key,int n){
    int i=0;
    for(i=0;i<n;i++){
        if(data[i] == key){
            return i;
        }
    }
    return -1;
}

int main(void)
{
    int data[DataMax];
    int key=0,i=0,ret=0;
    for(i=0;i<DataMax;i++){
        data[i]=i;
    }
    puts("Input Key...");
    scanf("%d",&key);
    ret=Find(data,key,DataMax);
    printf("Result:%d",ret);
    return 0;
}


445 :デフォルトの名無しさん:2005/05/18(水) 18:56:00
>>427
完全に条件判断削除
bit演算使うの久しぶりだったよ

#include<stdio.h>
int main(){
int i;
puts("Input...");
scanf("%d",&i);
--i;
i |= (i>>8);
i |= (i>>4);
i |= (i>>2);
i |= (i>>1);
i+= 8;
i&=~7;
printf("%d",i);
}


446 :デフォルトの名無しさん:2005/05/18(水) 19:02:45
>>445
おしい

447 :デフォルトの名無しさん:2005/05/18(水) 19:06:46
いやいいのか、すまん

448 :437:2005/05/18(水) 19:08:16
>>445
うえー、まじで条件分岐ないし。
なにやってんだかわからNEEEEE。

>>446
回答ください。

449 :デフォルトの名無しさん:2005/05/18(水) 19:11:27
10000までというのがミソだったな

450 :デフォルトの名無しさん:2005/05/18(水) 19:19:04
ハイ、次々。

451 :445:2005/05/18(水) 19:20:20
簡単に説明。

簡単に説明するため基本的に2進数で書きます
出力が100000になるためには10001 <= i <= 100000が条件
ここでi = i-1を代入すると
10000 <= i <= 11111
ここからi-1の立っている最上位ビットの一つ左のbitだけ立った数が目的の数とわかります
でi|(i>>8)と似た形の連続の式は立っている最上位ビットを最下位ビットまで普遍させるための式
これで数は11111になるので1を最後に加えることによって目的の数を作る。
ただ、1<=i<=8の時だけはi=8になるという制約があるので7を足して~7とのandをとって強制的に繰上げを行っている。

ただし65536を超えると動作しないの注意。

452 :427:2005/05/18(水) 19:20:28
うへぁ!!!神!!!!
何やってるかわからないけど完璧でした!

問題がおかしいと思って今問い合わせていましたが
赤っ恥かきそう・・・

勉強させてもらいます
ありがとうございました。

453 : ◆u2YjtUz8MU :2005/05/18(水) 20:00:51
[1] 授業単元: プログラミング課題
[2] 問題:0〜19までの中からランダムにすべて異なる数5個を作りたいです。
2個だったら1個目と2個目を比べて異なる数だったら終わりにすれば簡単にできるのですが
5個の場合も同じように全部比べて異なる数が出るまで乱数作り続けるしかないでしょうか?
[3] 環境 : C,C++どちらでも可
[4] 期限:無期限
[5] その他の制限:


454 :デフォルトの名無しさん:2005/05/18(水) 20:08:41
>>453
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAXN 20

void random_shuffle(int a[], int n)
{
 int i, j;

 srand((unsigned)time(NULL));
 for (i = n - 1; i > 1; i--) {
  int t;
  j = rand() % i;
  t = a[i], a[i] = a[j], a[j] = t;
 }
}

int main(void)
{
 int i, a[MAXN];

 for (i = 0; i < MAXN; i++)
  a[i] = i;
 random_shuffle(a, MAXN);
 for (i = 0; i < 5; i++)
  printf("%d%s", a[i], (i == 4) ? "\n" : ", ");

 return 0;
}

455 :デフォルトの名無しさん:2005/05/18(水) 20:09:32
>>453
C++だったら、std::random_shuffle()というアルゴリズムを使えばいい。

456 :デフォルトの名無しさん:2005/05/18(水) 20:17:49
>>453
C++ならこうする。

#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <iterator>
#include <vector>

int main()
{
    std::srand((unsigned int)(std::time(0)));
    std::vector<int> v(20);
    for (int i = 0; i < v.size(); ++i) v[i] = i;
    std::random_shuffle(v.begin(), v.end());
    v.resize(5);
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
}

457 :デフォルトの名無しさん:2005/05/18(水) 20:27:37
[1] 授業単元: 関数の扱い
[2] 問題文(含コード&リンク):
1:適当な角度(x)を引数とし、戻り値としてsin^2(x)+cos^2(x)を与える関数プログラムをかけ。
2:1で使ったプログラムを使い、0°〜90°の間で10°刻みに計算した結果を表示するプログラムを書け。
だたし、プロトタイプ宣言を省略してはいけない。

[3] 環境
 [3.1] OS:XP
 [3.3] 言語:C/
[4] 期限:2005年05月20日まで。
[5] その他:
1の問題はこんなプログラムを考えてみたのですが、これだと問題が要求しているプログラムとは違いますよね・・・
宜しくお願いします。
#include <stdio.h>
#include <math.h>

int main (void)
{
float a,b,c,x;
printf("xの角度を入力してください\nx=");
scanf("%f", &x);
a=sin(x/180);
b=cos(x/180);
c=a*a+b*b;
printf("sin^2(x)+cos^2(x)=%f\n",c);

return 0;
}



458 :デフォルトの名無しさん:2005/05/18(水) 20:29:51
別関数にしろって事だろ。
double sincos(double x)
{
 return pow(sin(x), 2) + pow(cos(x), 2);
}

459 :デフォルトの名無しさん:2005/05/18(水) 20:37:19
>>457
>プロトタイプ宣言を省略してはいけない。

main関数とは別に関数をつくらなきゃいけない。
>>458のように。

#include <stdio.h>
#include <math.h>

double sincos(double x){ return pow(sin(x), 2) + pow(cos(x), 2); }

int main (void)
{
double c,x;
printf("xの角度を入力してください x=");
scanf("%lf", &x);
c = sincos(x)
printf("sin^2(x)+cos^2(x)=%lf\n",c);

return 0;
}

久々に人に対して教えるんで、自信ないけど、まあこんな感じだw

460 :453 ◆u2YjtUz8MU :2005/05/18(水) 20:37:44
>>454-456
ありがとうございました。

461 :デフォルトの名無しさん:2005/05/18(水) 20:39:20
>>457
あーそれと、Cのsin()、cos()はradianを引数に取るので、入力する
角度の指定が必要。
弧度法ならそのままでいいが、degreeなら、2π/360=π/180を掛けとけ。

462 :デフォルトの名無しさん:2005/05/18(水) 20:42:43
>>453

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

int main(void)
{
int n = 5;
int i;

srand((unsigned)time(NULL));
for (i = 0; n > 0; i++) {
if (rand() % (20 - i) < n) {
printf("%d\n", i);
n--;
}
}

return 0;
}


463 :デフォルトの名無しさん:2005/05/18(水) 20:55:15
[1]授業単元:アルゴリズム論I
[2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した
  値の1/2の値の添字をもつ配列要素に入力するデータを納めるものとする。その後、別のグループで入力された
  配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/20まで

問題文を読んでもさっぱり、、、ご教授お願いします;


464 :365:2005/05/18(水) 21:02:13
>>379様、ありがとうございます。
コードを参考にしながらそれっぽい物を作成しいましたが、実行時にエラーが発生してしまいます。
よろしければ添削お願いします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/415.txt

465 :デフォルトの名無しさん:2005/05/18(水) 21:06:10
>>458
>>459
>>461
ありがとうございます。

466 :345:2005/05/18(水) 22:10:45
[1] 授業単元:基礎プログラミング
[2] 問題文(含コード&リンク): n個の乱数(整数)を発生させ、そのn個の整数が素数であるかどうかを判別するプログラムを作成せよ。但し、整数の上限は1000とする。
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:
[4] 期限:今日中

すいません明日提出なので宜しくお願いします;;

467 :デフォルトの名無しさん:2005/05/18(水) 22:36:36
>>466
0も正数だっけ?わすれた!

#include <stdio.h>
#include <stdlib.h>
int issosu( long int val )
{
long int i;
for( i = 2; i<val ; i++ )
if( val % i == 0 ) return 0;
return 1;
}
int main( int argc, char *argv[] )
{
long int val, n, count;
for( count=0; count<atoi( argv[1] );count++ ) {
do {
val = random();
} while( ! ( val > 0 && val <=1000) );
if( issosu( val ) ) {
printf( "%ld は素数である\n", val );
}
else {
printf( "%ld は素数でない\n", val );
}
}
return 0;
}

468 :デフォルトの名無しさん:2005/05/18(水) 22:39:11
整数だが正の数ではない

469 :デフォルトの名無しさん:2005/05/18(水) 22:41:37
]「jisho.txt」というファイルの辞書(1行に「表記,読み,品詞」という1つの
言葉が入る 例えば、「亀,カメ,0010」のようなカンジなものが約10万語つ
まり約10万行ほどある。)を配列に読み込み、表記・読み・品詞(品詞は4桁の
数字で表す)を指定すると、その情報を標準出力に出力するプログラムの作成。
《流れ》
@単語の個数を数える Aメモリ確保 B辞書を読み込み C検索情報入力 D出力する。失敗の場合、失敗メッセージを出力。

[3.1.]linux
[3.3.]
[4]至急

ここに一応ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/416.txtに私のものを置いておきました。ただ、「セグメントエラー」がおきます。指摘など宜しくお願いいたします。


470 :デフォルトの名無しさん:2005/05/18(水) 22:43:17
>>466 せめて、言語がCかC++かくらいは書こうや。

#include <stdlib.h>
#include &math.h>

/* 0以上x未満の乱数を返す */
double random(int x)
{
  return rand() / ((double) MAX_RAND + 1) * x;
}

/* nが素数なら真を返す */
int is_prime(int n)
{
  int i, last;

  if (n < 2)
    return 0;
  if (n == 2)
    return 1;
  last = sqrt(n);
  for (i = 3; i <= last; i += 2)
    if (n % i == 0)
      return 1;
  return 0;
}

471 :345:2005/05/18(水) 22:53:38
>>470
すいませんCです・・m(_ _)m
やってみたのですがエラーがでてしまいました

472 :デフォルトの名無しさん:2005/05/18(水) 22:55:50
>>469 書き忘れ[3-2] Cで。

473 :デフォルトの名無しさん:2005/05/18(水) 23:01:28
>>471
×&math.h>
○<math.h>

474 :345:2005/05/18(水) 23:02:45
>>473
そこは直してあるのですが
だめみたいです・・・printfで素数を表示するのもどうしたらいいのでしょうか

475 :デフォルトの名無しさん:2005/05/18(水) 23:02:59
おう。&lt;と書こうとしたんだが、セミコロン忘れてたよ-だわ。

476 :デフォルトの名無しさん:2005/05/18(水) 23:20:23
>>466
折角作ったからうp。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define PrimeMax (1000)
#define TRUE (1)
#define FALSE (0)
int IsPrime[PrimeMax];
void hurui(int *p,int n){
int i,j;
for(i =2;i<n;i++){for(j=2;(i*j)<n;j++){
p[i*j]=TRUE;
}}}
int PrimeCheck(int *p,int cmp){
if(cmp>=PrimeMax) return -1;
return p[cmp] ? FALSE:TRUE;
}
int main(void)
{int i,n,pri;
srand(time(NULL));
memset(IsPrime,0x00,sizeof(int)*PrimeMax);
hurui(IsPrime,PrimeMax);
for(i=0;i<PrimeMax;i++) if(PrimeCheck(IsPrime,i) == TRUE) printf("%d ",i);
puts("\n");
puts("Input N...");scanf("%d",&n);
for(i=0;i<n;i++){
if(PrimeCheck(IsPrime,pri=(rand()%PrimeMax)) == TRUE){
printf("%d is prime! \n",pri);
}else{
printf("%d is Not prime! \n",pri);
}}return 0;}

477 :デフォルトの名無しさん:2005/05/18(水) 23:21:10
>>386
すいませんでした。情報と環境を全部うpしました。
http://uppp.ath.cx/src/uppp1483.zip

>>252をどうかよろしくお願いします。

478 :デフォルトの名無しさん:2005/05/18(水) 23:23:21
>>474
そだな。main()がないわな。

479 :デフォルトの名無しさん:2005/05/18(水) 23:23:45
>>476
今日はミスが多いな。
#include <memory.h>
を追加。
後は、全角スペースを旨く取り除いてくれ。

480 :デフォルトの名無しさん:2005/05/18(水) 23:23:56
[2] 問題文(含コード&リンク): ファイルを読み込みソート(選択ソート法)してファイル出力する
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ(バージョン):VisualStudio.NET
 [3.3] 言語:C++
[4] 期限:2005年5月19日21:00まで
構造体配列を使用した時の文字列の扱いかたがわかりません。
エラー: error C2106: '=' : 左のオペランドが、左辺値になっていません。
SubTable[k+1].name=SubTable[k].name; SubTable[k].name=name;
このような代入はできないようです。どうすればいいのでしょうか
structSUBJECT
{
intcode;// 科目コード
charname[ SUBNAME_LEN + 1 ];// 科目名 (+1はNULLの分)
intdayCode;// 曜日  (+1はNULLの分)
inthour;// 時限
};
struct SUBJECTSubTable[ max ];// 科目データ構造体配列の定義
//途中省略//
voidSelSort( int no, SUBJECT* SubTable )
{
int n,k,w1,w3,w4;
char name[ SUBNAME_LEN + 1 ];
for(n=1;n<no;n++){
w1=SubTable[n].code; name=SubTable[n].name; w3=SubTable[n].dayCode; w4=SubTable[n].hour;
for(k=n-1;k>=0;k--){
if(SubTable[k].code>w1){
SubTable[k+1].code=SubTable[k].code;
SubTable[k].code=w1;
*この部分がわかりません-> SubTable[k+1].name=SubTable[k].name;
           -> SubTable[k].name=name;
//以下省略

481 :デフォルトの名無しさん:2005/05/18(水) 23:28:54
>>479
俺も酒飲みながら片手間に書いてるとよく間違う(^_^;)
趣味の時間だしな。

482 :デフォルトの名無しさん:2005/05/18(水) 23:29:42
>>480
char[]型の代入はサポートされてないがな。
memcpy or strcpy使うか、そもそもstd::stringに変えてしまうかしたほうが良いと思う。

483 :デフォルトの名無しさん:2005/05/18(水) 23:30:26
>>480
strcpy()
C/C++には配列のコピー演算子はない。C++でクラスなら代入演算子や
コピーコンストラクタを定義する事はできる。またPODでも構造体なら
operator=がデフォルトで存在する。

484 :デフォルトの名無しさん:2005/05/18(水) 23:41:28
>>481
酒を飲んでるわけじゃないんだけど、しらふでもこの有様で。:)
コンパイル位は通すべきだった。

VC2003のコンソールプロジェクト使ってるんだけど、
開いたときに最初から書いてあるコードを削除するときにポカしまくりで。
いや、まいった。何でブランクプロジェクトがなくなったんだろ。スッゴイ不便。
愚痴になっちゃった。
今後精進します。

485 :デフォルトの名無しさん:2005/05/18(水) 23:42:28
>>469
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/419.c

486 :デフォルトの名無しさん:2005/05/18(水) 23:53:41
>>484
あるよ。
ウィザードのダイアログの左側メニューで
「アプリケーションの設定」を選択後、
「空のプロジェクト」チェックボックスを選択汁。

487 :デフォルトの名無しさん:2005/05/18(水) 23:59:31
>>485
ありがとうございます。少し理解に苦しむところもありますが、きちんと実行できました。ただ、私はまだ初心者なので私の作った物の推敲をしてくれればと思います。よろしくおねがいします

488 :デフォルトの名無しさん:2005/05/19(木) 00:04:03
>>486
あ''〜〜〜ぁ!!!!
背景と同化してて選択できるなんて全く思いつかなかった。
ありがとう、一個賢くなったよ。

489 :デフォルトの名無しさん:2005/05/19(木) 00:08:05
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク): 与えられた配列Xについて、35以上かつ95未満の要素の数を求めよ。
それをユーザ関数を使ってあらわせ。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン):bcc
 [3.3] 言語:C
[4] 期限:今日中
[5] その他の制限: 例題に上記の処理を追加する問題でした。
ユーザ関数にする前までは出来たので、書いておきます。
よろしくお願いします。
#include <stdio.h>
int main(void) {
int x[16]={53,21,34,31,25,129,12,80,28,98,7,24,92,51,54,5},
count[11],i,d,n,a;
n=16;
a=0;
for(i=0;i<=10;i++) count[i]=0;
for(i=0;i<=n-1;i++) {
d=x[i]/10;
if(d>10) d=10;
count[d]++;
}
for(i=0;i<=9;i++) printf("%5d台 :%2d\n",i*10,count[i]);
printf("100以上 :%2d\n",count[10]);
for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++;
printf("35以上95未満の要素の数は%d\n",a);
return 0;
}

490 :デフォルトの名無しさん:2005/05/19(木) 00:22:05
>>for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++; 
for(i=0;i<=n-1;i++) if(IsMatch(x[i])) a++;

/*----IsMatch-----------*/
int IsMatch(int val){
    if(35<=val && val<95){
         return 1;
    }else{
         return 0;
    }
}
/*----------------------*/

こんな感じか?

491 :489:2005/05/19(木) 00:45:23
>490
ありがとうございます。
voidでやってつまづいたので、intでやってみます。

自分でやってみたのは下記のものなのですが、
ユーザ関数とポインタがいまいち理解できていないため
エラーが出てしまいます。
もしよければvoidでのやり方もお願いします。

youso(n);

void youso(int *x) {
int i,n,a;
for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++;
printf("35以上95未満の要素の数は%d\n",a);
}

492 :デフォルトの名無しさん:2005/05/19(木) 00:54:31
>>407
です。
すいません。
どなたか助けていただけないでしょうか。
これが出来ないと、次の実験でも使えなくて、
これから先の課題が出来ないのです。
ほんと、お願いします。
align関数を埋めるだけだと思うのですが・・・。
お願いします。

493 :デフォルトの名無しさん:2005/05/19(木) 01:04:35
>>491
こんな感じか??

#include <stdio.h> 

void youso(int *x,int n) { 
int i,a=0; 
for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++; 
printf("35以上95未満の要素の数は%d\n",a); 

int main(void) { 
    int x[16]={53,21,34,31,25,129,12,80,28,98,7,24,92,51,54,5}, 
    count[11],i,d,n,a; 
    n=16; 
    a=0;    
    for(i=0;i<=10;i++) count[i]=0; 
    for(i=0;i<=n-1;i++) { 
        d=x[i]/10; 
        if(d>10) d=10; 
        count[d]++; 
    } 
    for(i=0;i<=9;i++) printf("%5d台 :%2d\n",i*10,count[i]); 
    printf("100以上 :%2d\n",count[10]); 
    /*
    for(i=0;i<=n-1;i++) if(35<=x[i] && x[i]<95) a++; 
    printf("35以上95未満の要素の数は%d\n",a); 
    */
    youso(x,n);
    return 0; 


494 :489:2005/05/19(木) 01:18:00
>493
ありがとうございます!
すごく悩んでたのですっきりしました。


C言語の授業もっとマジメに受けておくべきでしたorz
勉強しなおさなくては。

495 :デフォルトの名無しさん:2005/05/19(木) 01:24:11
>>494
がんがれ。

496 :デフォルトの名無しさん:2005/05/19(木) 01:27:20
>>ALL
おやすみ〜。

497 :463:2005/05/19(木) 06:14:09
[1]授業単元:アルゴリズム論I
[2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した
  値の1/2の値の添字をもつ配列要素に入力するデータを納めるものとする。その後、別のグループで入力された
  配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/20まで

今日中に出さないとまずいので、何卒よろそくおねがいします;;

498 :デフォルトの名無しさん:2005/05/19(木) 06:56:22
>>497
問題正しい?
「入力された回数を配列要素に代入する」なら判るけど...


499 :デフォルトの名無しさん:2005/05/19(木) 07:08:16
"別のグループで入力された配列要素の値のみを表示"の意味がわからない...orz

500 :デフォルトの名無しさん:2005/05/19(木) 08:21:54
要素数3(全部char型)の構造体にファイルから文字列を読み込んで格納したいのですが、
ファイルの中身と実際格納する文は何と書いたらいいのでしょうか?
テキストがファイルの入出力まで記述されておらず、調べてもいまいち分かりませんでした。
例えば、以下のように格納したいと思います。
main関数で実際そう宣言してもいいのですが、以下のように3×3では済まずとても大きくなるもので…

structure std[] = {
{"aaa","bbb","ccc"},
{"ddd","eee","fff"},
{"ggg","hhh","iii"}, }

501 :デフォルトの名無しさん:2005/05/19(木) 08:40:01
>>500
typedef struct str_tag
{
char hoge[32 + 1];
char hogehoge[32 + 1];
char hogehogehoge[32 + 1];
}STR;

ならば

STR str;
FILE *fp = fopen("hoge.dat", "r");
fscanf(fp, "%s%s%s", str.hoge, str.hogehoge, str.hogehogehoge);

502 :463:2005/05/19(木) 08:48:24
[1]授業単元:アルゴリズム論I
[2]キーボードから0から100までの偶数をランダムに入力し、配列に納めていく。その際、入力した
  値の1/2の値の添字をもつ配列要素に入力データを納めるものとする。その後、別のループで入力された
  配列要素の値のみを表示する。このプラグラムを書け。実行時には20個のデータを入力しなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/20まで

すいません、問題文を一部間違っていました、大変申し訳ありません。


503 :デフォルトの名無しさん:2005/05/19(木) 09:32:17
#include<stdio.h>
#define INPUTVAL_MAX 100
int main( int argc, char* argv[] )
{
int data[ INPUTVAL_MAX / 2 ];
int v;
int i;

for ( i = 0; i < INPUTVAL_MAX / 2; i++ ) data[ i ] = -1;
printf( "Please do data input.\n" );
printf( "'Ctrl + Z' key for end.\n" );
while ( 1 ) {
printf( "data = ?" );
if ( scanf( "%d", &v ) == EOF ) break;
if ( 0 <= v && v <= INPUTVAL_MAX && v % 2 == 0 ) {
data[ v / 2 ] = v;
} else {
printf( "Illegal data.\n" );
}
}
printf( "Inputted data.\n" );
for ( i = 0; i < INPUTVAL_MAX / 2; i++ ) if ( data[ i ] >= 0 ) printf( "%d\n", data[ i ] );
return ( 0 );
}

504 :デフォルトの名無しさん:2005/05/19(木) 13:39:58
>>13
違う。
もっと前からタイトルは>>1の好きなようにしていた。

505 :デフォルトの名無しさん:2005/05/19(木) 14:13:49
[1]アルゴリズム論I
[2]配列に0から100までの偶数を先頭から順に間を空けずに詰める。キーボードから1から99の間の奇数を入力し
 その数と要素の値を順次比較する。そしてその数を順序関数を維持して配列に納める。その後、全データを表示する。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005年5月20日17時まで

今年の4月からC言語を学び始めたのですがさっぱり、、、先輩方ご教授お願い致します。


506 :デフォルトの名無しさん:2005/05/19(木) 14:38:08
#include<stdio.h>
#define INPUTVAL_MAX 100
int main( int argc, char* argv[] )
{
int data_even[ INPUTVAL_MAX / 2 + 1 ];
int data_odd[ INPUTVAL_MAX / 2 ];
int v;
int i;
for ( i = 0; i <= INPUTVAL_MAX / 2; i++ ) data_even[ i ] = i * 2;
for ( i = 0; i < INPUTVAL_MAX / 2; i++ ) data_odd[ i ] = -1;
printf( "Please do data input.\n" );
while ( 1 ) {
printf( "'Ctrl + Z' key for end.\n" );
printf( "data = ?" );
if ( scanf( "%d", &v ) == EOF ) break;
if ( 0 <= v && v <= INPUTVAL_MAX && v % 2 == 1 ) {
data_odd[ v / 2 ] = v;
printf( "All data.\n" );
for ( i = 0; i <= INPUTVAL_MAX; i++ ) {
switch ( i % 2 ) {
case 0 : printf( "%d\t", data_even[ i / 2 ] ); break;
case 1 : if ( data_odd[ i / 2 ] >= 0 ) printf( "%d\t", data_odd[ i / 2 ] ); break;
}
}
printf( "\n" );
} else {
printf( "Illegal data.\n" );
}
}
return ( 0 );
}

507 :デフォルトの名無しさん:2005/05/19(木) 15:54:15
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):ろだのC/C++宿題スレ42代目3のNo.423です。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:明日の午前八時まで
[5] その他の制限:特にないです。

どうかよろしくおねがいします。ごめんなさい

508 :デフォルトの名無しさん:2005/05/19(木) 15:59:49
>>507
リンクくらい貼れや。

509 :デフォルトの名無しさん:2005/05/19(木) 16:11:05
>>508
ご指摘ありがとうございます

[1] 授業単元:データ構造
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/423.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:明日の午前八時まで
[5] その他の制限:特にないです。

こうですか。ごめんなさい。迷惑かけました

510 :デフォルトの名無しさん:2005/05/19(木) 16:21:31
ステレオ16bitWAVEファイルの左右個別の平均音量をdBで取得したいです。
short型で左右別の配列にデータを格納までは出来たのですが、計算方法が分かりません。

dB=20*log(A1/A2)
A1とA2の振幅が、この場合何を意味しているのでしょうか?

511 :デフォルトの名無しさん:2005/05/19(木) 17:39:04
>>509
C++で書きたくなるのをうずうずとこらえながらCで書いた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/424.txt

512 :デフォルトの名無しさん:2005/05/19(木) 18:20:21
>>402の損失率と呼量を求めるものもどなたか教えてください。

513 :デフォルトの名無しさん:2005/05/19(木) 18:28:29
>>510
デシベルは相対的な単位だから、wavファイルから直接デシベル
単位で音圧を求めることは出来ない。

514 :デフォルトの名無しさん:2005/05/19(木) 18:33:32
>>511
あ、あ、ありがとうございます。
もっとCの練習します。

515 :デフォルトの名無しさん:2005/05/19(木) 18:43:58
>>510
A1: 入力音量
A2: 基準音量(1Vrms だったっけ)
入力信号は 16bit だと, 折れ線とか対数とかで圧縮してあると思うぞ.


516 :デフォルトの名無しさん:2005/05/19(木) 19:03:11
>>389
#include <stdio.h>

int main( void )
{
double a, b, val1, val2, val3;
int n, count;

printf( "呼量:" );
scanf( "%lf", &a );
printf( "回線数:" );
scanf( "%d", &n );

val1 = val2 = val3 = 1;
for( count=1; count<=n; count++ ){
val1 *= n;
val2 *= a;
val3 += val2 / val1;
}
b = val2 / val1 / val3;

printf( "損失率:%lf\n", b );
return 0;
}

517 :デフォルトの名無しさん:2005/05/19(木) 19:45:12
以下URLにあるプログラムなのですが、コンパイル時に

002.c: In function `main':
002.c:105: error: incompatible type for argument 1 of `search'

と表示されてしまいます。
どこがどう違うのかかれこれ小一時間色々やってますがさっぱりです…
main関数のsearch文のstrが悪いってことですよね?
ファイル操作や型宣言のどこかでしょうか?

http://www.za.ztv.ne.jp/yosi-h/

518 :デフォルトの名無しさん:2005/05/19(木) 19:59:19
>>517
searchの第1引数はDICの配列なのに、mainではSTRを
入れているから。

519 :デフォルトの名無しさん:2005/05/19(木) 20:04:52
1] 授業単元:C++応用
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/423.txt
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン): VC6.0
 [3.3] 言語:C++
[4] 期限:本日中
[5] その他の制限:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/425.cpp
この部分まで出来ましたが、この後がわかりません。よろしくお願いします。

520 :519:2005/05/19(木) 20:11:52
[2] 問題文を間違えました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/426.txt
よろしくお願いします

521 :517:2005/05/19(木) 20:16:18
>>518
ありがとうございます!確認してみます。

522 :デフォルトの名無しさん:2005/05/19(木) 20:27:11
>>516 
見て理解します。
ありがとうございました。

523 :デフォルトの名無しさん:2005/05/19(木) 20:35:27
>>519
C++には見えないのですが…

524 :519:2005/05/19(木) 21:14:49
>>523
始めはC++で作成していたのですが、出題者に数回添削されていたら
何時の間にかC++なのにCっぽく(汗
エラーの原因がわからなくなってしまいまして・・・よろしくお願いします

525 :デフォルトの名無しさん:2005/05/19(木) 21:24:35
>>524

>j = (int)argv[num]; //argvから数値を読み込み、jに代入する

この行何?普通atoi()かsscanf()だと思うが・・・・

526 :524:2005/05/19(木) 21:33:50
>>525
あ、本当だ・・・何時の間にか直されている(汗
(元はatoi()で作っていました)
よろしくお願いします。

527 :デフォルトの名無しさん:2005/05/19(木) 21:38:22
>>526
これさあ、全部C++で作り直して、一発で合格させてもらった方がいいよ。
多分担当の教官は、頭が古くてC++がわからず、C風にどんどん直すも、
間違いだらけの添削やってるみたいだから。

528 :デフォルトの名無しさん:2005/05/19(木) 22:21:20
忘れられてるといけないので・・・
>>252>>477
をやってくれる神を待っています

529 :524:2005/05/19(木) 22:23:33
なるほどです。
*数値が足りない
*0による割り算が発生する
*全てに当てはまらない場合
の場合の条件はどのようにすればいいのか教えてもらってよいでしょうか?
条件がわからなくなってしまいましたので・・・(汗

530 :デフォルトの名無しさん:2005/05/19(木) 22:43:56
[1] 授業単元: 3DCGプログラミング
[2] 問題文(含コード&リンク):(1)「Vector3D」型に対し、内積値を返す関数
innerProdを作成せよ。引数は以下の構成とする。
double innerProd(struct Vector3D v1, struct Vector3D v2);
(2)「Vector3D」型に対し正規化を行う関数vecNormalizeを作成せよ。引数は
以下のような構成とする。ただし、引数に0ベクトルが与えられた場合はなにも
しないものとする。
void vecNormalize(struct Vector3D *v);

[3] 環境
 [3.1] OS:Win XP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C++
[4] 期限:明日の午前6時までです
[5] その他の制限:

お力添えをいただければと思います。
どうかよろしくお願いします。

531 :デフォルトの名無しさん:2005/05/19(木) 23:11:35
>>529
それは作ったけど、「数値の形式が不正」ってのは、atof()だけでは
判断できない。多分小数点が2個あるとか、符号が連続して付いて
いるとかだと思うが、その場合sscanf()で、戻り値を見たい。

しかし問題文の条件にはsscanf()を使っていいような場所が見あたらない
ので、作れない。それで、今回は「数値の形式が不正」のエラーを省略
している。ここは自分で直して欲しい。

後はだいたい動くようだ。

それから、インクルード・ヘッダもC形式の指定になっているので、あえてC++
独自の機能を使う事を避けた。強いて言えばvoidとreturn 0;を省略している
事くらい。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/427.txt

532 :デフォルトの名無しさん:2005/05/19(木) 23:15:32
>>529
スマソ。間違いがあったので修正した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/428.txt

533 :デフォルトの名無しさん:2005/05/19(木) 23:20:10
>>252
http://www.comm.musashi-tech.ac.jp/~kyomuka/sylb/2004/26/2605300.htm
これか?
"プログラミングスキルが足りないと感じた学生は早めに申し出れば指導を行う"
とあるじゃないか。いい先生じゃないか。逝ってきなさい。


534 :デフォルトの名無しさん:2005/05/19(木) 23:25:04
>>530
Vector3D型とはどんな型か分からないと、プログラムは書けないぞ。

535 :デフォルトの名無しさん:2005/05/19(木) 23:25:58
>530
(1)はこんな感じかな。
ぐぐるさん見ながらだけどね。
何に使えるかわからない。
double innerProd(struct Vector3D v1, struct Vector3D v2){
    return (v1.x*v2.x)+(v1.y*v2.y)+(v1.z*v2.z);
}

536 :デフォルトの名無しさん:2005/05/19(木) 23:30:38
>>530
double innerProd(struct Vector3D v1, struct Vector3D v2)
{
return (v1.x * v2.x + v1.y * v2.y + v1.z * v2.z);
}
void vecNormalize(struct Vector3D *v)
{
double norm = v->x * v->x + v->y * v->y + v->z * v->z;
if(norm != 0.0) {
v->x /= norm;
v->y /= norm;
v->z /= norm;
}
}
作るだけ作ったけど、>>534の忠告は正しい。

537 :デフォルトの名無しさん:2005/05/19(木) 23:34:19
数学の素養が無いので以下を見て作った。
http://hakuhin.hp.infoseek.co.jp/main/as/vec3d.html#VEC3D_07
/*---------------------------------------------------------*/
#include <cmath>
void vecNormalize(struct Vector3D *v){
    if(v == NULL) return;
    double length = (v->x*v->x) + (v->y*v->y) + (v->z*v->z);
    if(length == 0.0) return;
    length = std::sqrt(length);

    if(length > 0) length= (1/length);
    v->x = v->x*length;
    v->y = v->y*length;
    v->z = v->z*length;
     return;
}

538 :537:2005/05/19(木) 23:35:52
おっと遅かったか。

539 :530:2005/05/19(木) 23:39:39
すみませんでした。
Vector3D型なんですけど、
struct Vector3D{
double x;
double y;
double z;
};
です。
構造体を使った問題なんですが
構造体の作り方や宣言の仕方、それをメイン関数にどう反映させていいものなのかが
よくわかりません・・・
二つのベクトルにそれぞれ数値を入れて内積値を出力させるというものに
したいのです。
自分でも今現在いろいろ検索してみて調べてるのですが
一つのプログラムにまとめようとすると混乱してしまって・・・

540 :デフォルトの名無しさん:2005/05/19(木) 23:42:40
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):for文を用いて1〜nまでの二乗の積算値を求めるプログラム
(1+2^2+3~2+4~2+5~2+・・・・)を作成せよ
[3] 環境
 [3.1] OS: windowsxp
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:明日中
[5] その他の制限:特になしです。よろしくお願いします。


541 :デフォルトの名無しさん:2005/05/19(木) 23:49:07
上の(1+2^2+3~2+4~2+5~2+・・・・)は
(1+2^2+3^2+4^2+5^2+・・・・)の間違いです。すいません。

542 :デフォルトの名無しさん:2005/05/19(木) 23:49:37
int main(void){
 int n,s=0;
 scanf("%d",&n);
 for(;n>0;n--)
  s += n*n;
 printf("%d\n",s);
 return 0;
}

543 :デフォルトの名無しさん:2005/05/19(木) 23:49:49
>>530
こんな感じかい?
数字は好きにいじってちょ。
#include <iostream>
double innerProd(struct Vector3D v1, struct Vector3D v2){ 
    return (v1.x*v2.x)+(v1.y*v2.y)+(v1.z*v2.z); 


int main(){
    struct Vector3D v1,v2;
    v1.x=1;v1.y=1;v1.z=1;
    v2.x=1;v2.y=1;v2.z=1;

    double ip=innerProd(v1,v2);
    std::cout<<ip<<std::endl;

}

544 :デフォルトの名無しさん:2005/05/19(木) 23:52:14
>>540
#include <stdio.h>

int main( int argc, char *argv[] )
{
int n, sum;
n = atoi( argv[1] );

sum = 0;

for( ;n > 0; n-- )
sum += n*n;

printf( "%d\n", sum );

return 0;
}

545 :530:2005/05/20(金) 00:02:11
多くのかたがたにお答えいただきまことにありがとうございました。
また質問の内容に不明な点があったことについてお詫びします。
みなさんからお答えいただいたものをもとに頑張ってみようと思います。

546 :543:2005/05/20(金) 00:19:17
>>543
はちょっとおせっかいだったかな。すまぬ。

547 :540:2005/05/20(金) 00:22:13
ありがとうございました。

548 :デフォルトの名無しさん:2005/05/20(金) 08:48:06
>>407
です。
どなたか助けてもらえないでしょうか。
明日までなのですが、自分にはお手上げです。
Matrixの1スペースを決める際に、上を−1したものか、下を−1したものか、
ななめを表の数字で足したものかのどれかの一番大きいものを取るのです。
もし、問題がよく分からなかったら説明しなおします。
たぶん、struct AminoAcidAlignmentの中で、
vector<vector<int> >
vector<vector<Move>>を使って
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++)
const int some = kscoreMatrix[s1.AAnums[i=1][s2.AAnums[j-1]];

本当、よろしくお願いします。

549 :デフォルトの名無しさん:2005/05/20(金) 09:33:15
http://ppp209-162.yomogi.or.jp:8080
http://ppp209-162.yomogi.or.jpうへへ。

550 :デフォルトの名無しさん:2005/05/20(金) 10:48:59
山田改?

551 :デフォルトの名無しさん:2005/05/20(金) 10:59:40
>>548
問題文の
「右、左、斜め上で一番大きい数字を取る。左右と同じ数字の場合は斜め上優先。」
がわかんね〜。どういう事?どこを基準で考えているの?

552 :デフォルトの名無しさん:2005/05/20(金) 12:18:11
>>551
ありがとうございます。
わたしの書いた問題文の後半の後ろから直線的に辿っていくっていうのは、
たぶんどうでもいいと思う。
ただ表を完成させて、一番右下の数字がどれだけ似かよっているかを
表すから、それを返せばいいんだと思う。

>>右、左、斜め上で一番大きい数字を取る。左右と同じ数字の場合は斜め上優先。
右じゃなくて、上でした。
一つマスを埋めるたびに、左の数を−1した数と、上の数を−1した数と
その埋めなければならない場所に相当した数を表から取って来て、
その数と斜め上の数を足したものを比べて、
一番大きい数をそこに埋めていくとやります。
それをやって出来上がった表の一番下の数がどれだけ似通っているかを
示す数です。

553 :551:2005/05/20(金) 13:20:33
>>552
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
Cだけど、こんなんで良いの?
C++への変換は自分でやって。

554 :デフォルトの名無しさん:2005/05/20(金) 13:40:23
>>551
ありがとうございます。
でも、vector<vector<int> >
vector<vector<Move>>を使って
あのプログラムに埋め込まなきゃいけないんです・・・。

555 :デフォルトの名無しさん:2005/05/20(金) 14:05:30
>>554
アホか。そういうのは先に「その他の条件」に書いておけ。
その為のテンプレだろうが。

556 :551:2005/05/20(金) 14:18:55
オレ C++ 分らないんだよね・・・。

557 :デフォルトの名無しさん:2005/05/20(金) 14:43:59
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):身長(cm,センチメートル)と体重(kg,キログラム)をヤードポンド法に換算するプログラムを作成せよ.
[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:5月23日
[5] その他の制限:
グローバル変数は使用しない.
以下の関数を作ること
身長(cm)と体重(kg)を入力する関数(身長,体重が戻り値)
身長を計算する関数(身長(cm)を引数,変換結果を戻り値)
体重を計算する関数(体重(kg)を引数,変換結果を戻り値)
結果を表示する関数.
身長は○フィート○インチと表示すること.
体重は○ポンドと計算すること.
cm, kgとヤードポンド法の間には以下のような関係がある.
1ヤード(yd)=3フィート(ft)=91.44cm
1フィート(ft)=12インチ(in)=30.48cm
1インチ(in)=2.54cm
1ポンド(lb)=0.45359237kg

宜しくお願いします!

558 :デフォルトの名無しさん:2005/05/20(金) 15:09:11
>>557
それくらい自分の脳みそで考えてできないとまずいだろ。

559 :デフォルトの名無しさん:2005/05/20(金) 15:18:52
[1] 授業単元:C言語
[2] 問題文:if文を用いてジャンケンプログラムを作れ。
[3] 環境
 [3.1] OS:WindowsXP Pro SP2
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C++
[4] 期限:5月23日
[5] その他の制限:グーの入力…'G' チョキの入力…'T' パーの入力…'P'
※「あいこ」も判定せよ…「あいこです」表示
※'G'、'T'、'P'以外の入力は「入力エラー」と表示

マジ勘弁してください先生orz
宜しくお願いします。

560 :デフォルトの名無しさん:2005/05/20(金) 15:22:58
>>559
単元がC言語なのに、プログラム言語がC++とはこれ如何に


561 :デフォルトの名無しさん:2005/05/20(金) 15:34:33
>>557
#include <stdio.h>
#include <math.h>
struct HW{float cm,ft,in,kg,lb;};
HW input(){HW ret={0};printf("Height(cm),Weight(kg)= ");scanf("%f,%f",&ret.cm,&ret.kg);return ret;}
float cm2in(float *ft,float *in,float cm){*ft=floorf(cm/30.48f);*in=(cm-*ft*30.48f)/2.54f;return *in;}
float kg2lb(float *lb,float kg){*lb=kg/0.45359237f;return *lb;}
void output(HW hw){printf("Height= %.3f ft %.3f in\nWeight= %.3f lb\n",hw.ft,hw.in,hw.lb);}
int main(){
HW hw=input();
cm2in(&hw.ft,&hw.in,hw.cm);
kg2lb(&hw.lb,hw.kg);
output(hw);
return 0;}


562 :デフォルトの名無しさん:2005/05/20(金) 15:43:20
>>557
最近算数やってないので出力を確認すること。
#include <stdio.h>
#include <math.h>
#define INCH ((double)(2.54))
#define FEET (12*INCH)
#define POND ((double)( 0.45359237))
typedef struct Pair_{
    double fst,snd;
}Pair;
Pair Input(){
    Pair p;
    puts("Input 身長(cm)");
    scanf("%lf",&p.fst);
    puts("Input 体重(kg)");
    scanf("%lf",&p.snd);
    return p;
}
double cmToin(Pair* p ){return p->fst/INCH;}
double kgTold(Pair* p){return p->snd/POND;}
void Output(Pair* p){
    int feet=p->fst/FEET;   int inch=fmod(p->fst,FEET);int pond=p->snd;
    printf("身長:%dフィート%dインチ\n体重:%dポンド",feet,inch,pond);
    return;}
int main(){
    Pair p,p2;
    p=Input();
    p2.fst=cmToin(&p);
    p2.snd=kgTold(&p);
    Output(&p2);
}

563 :デフォルトの名無しさん:2005/05/20(金) 15:43:31
>>557
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/430.txt

564 :デフォルトの名無しさん:2005/05/20(金) 15:59:52
>>559
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
srand(static_cast<unsigned int>(time(0)));
char c, cpu;
cpu = static_cast<char>(rand() % 3);
cout << "ジャンケンを入力してください (グー='G'、チョキ='T'、パー='P'): ";
cin >> c;
if(cpu == 0) { cpu = 'G'; cout << "CPU: グー" << endl; }
else if(cpu == 1) { cpu = 'T'; cout << "CPU: チョキ" << endl; }
else { cpu = 'P'; cout << "CPU: パー" << endl; }
if(c == cpu)
cout << "あいこです" << endl;
else if(c == 'G' && cpu == 'T' || c == 'T' && cpu == 'P' || c == 'P' && cpu == 'G')
cout << "あなたの勝ちです" << endl;
else if(c == 'G' && cpu == 'P' || c == 'T' && cpu == 'G' || c == 'P' && cpu == 'T')
cout << "あなたの負けです" << endl;
else
cout << "入力エラー" << endl;
return 0;
}

565 :デフォルトの名無しさん:2005/05/20(金) 16:08:21
>>555
すいません。書き直します。

【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.cab
この中に途中までのコードと問題文が含まれています。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): MSVC
 [3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
たぶん、struct AminoAcidAlignmentの中で、
vector<vector<int> >
vector<vector<Move>>を使って
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++)
const int some = kscoreMatrix[s1.AAnums[i=1][s2.AAnums[j-1]];
ってやるんだと思います。

コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。
本当、窮地なんです。
どなたかC++できる方、助けてください。お願いします!!

566 :デフォルトの名無しさん:2005/05/20(金) 16:16:05
http://YahooBB219199159114.bbtec.net:8080
http://YahooBB219199159114.bbtec.netうへへ。

567 :デフォルトの名無しさん:2005/05/20(金) 16:23:40
>>559
久々にゲームっぽいものを作った。結構楽しかったよ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
の102またはNo.431

568 :デフォルトの名無しさん:2005/05/20(金) 16:28:43
>>567
ジャンケンの手をエコーバックさせればもうちょっとフレンドリーになるが、忘れていた。
独自にやる気があったらやってくれ。

569 :559:2005/05/20(金) 16:30:12
>>560
C言語という授業なんですが、C++をやってるんです・・・

>>563
ありがとうございます。学校で盛り上がりましたw
まだ習っていない文法があったのでもうちょっと簡単にできないでしょうか?
それと、書き忘れていたことがありました・・・ 訂正します。

[1] 授業単元:C言語
[2] 問題文:if文を用いてジャンケンプログラムを作れ。
[3] 環境
 [3.1] OS:WindowsXP Pro SP2
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C++
[4] 期限:5月23日
[5] その他の制限:グーの入力…'G' チョキの入力…'T' パーの入力…'P'
※「あいこ」も判定せよ…「あいこです」表示
※'G'、'T'、'P'以外の入力は「入力エラー」と表示

     【実行画面例】
    Aさんの手は? G
    Bさんの手は? P

    Bさんの勝ちです

     ↑こんな感じで表示できるようにお願いします。

570 :デフォルトの名無しさん:2005/05/20(金) 16:43:22
>>569
ジャンケンでもそうだけど、後だし禁止。

571 :デフォルトの名無しさん:2005/05/20(金) 16:46:43
>>570
中出しは・・・・してもいいのか?ハァハァ

572 :デフォルトの名無しさん:2005/05/20(金) 16:50:34
>>571
突っ込むための穴が無いのでできません。残念!!

573 :デフォルトの名無しさん:2005/05/20(金) 16:58:10
そこでコレの出番です。

つ「セキュリティーホール」

574 :デフォルトの名無しさん:2005/05/20(金) 16:58:51
すみません、ほかの所で聞いたらスレ違いと言われてしまったので、ここで質問させていただきます。
[1] 授業単元:情報実験
[2] 問題文(含コード&リンク):
下のプログラムを実行すると以下の出力が得られた。値(1)、(2)、(3)を求めよ。
#include<stdio.h>
int main(void){
int ai[3]={(1), (2), (3)};
int n;
for(n=0;n<5;n++)
printf("%d,%d\n", n, *(int *)(((char *)(ai+1))-n));
for(n=0;n<2;n++)
printf("%d, %d\n", n, *((short *)(&ai[sizeof(ai)/sizeof(int)-1])+n));
}
出力結果
0, 1
1, 256
2, 65536
3, 16777216
4, 0
0, -9
1, 9
[3] 環境
 [3.1] OS: Win XP
 [3.2] コンパイラ(バージョン): わかりません・・
 [3.3] 言語:C
[4] 期限:来週の火曜日まで
[5] その他の制限: どうしてそうなるのかを考察すること
(1)=0, (2)=1, (3)=-9 とすると最後の行以外は出るのですが、0から4の値と、最後の9がどうして出るのかがわかりません。どなたか教えてください。9は配列の外側に行ってるような気がするのですが・・。

575 :デフォルトの名無しさん:2005/05/20(金) 17:06:43
そんなとこはみ出させちゃって、
これが良いのか!?
ん?これがいいのか!!

576 :デフォルトの名無しさん:2005/05/20(金) 17:10:34
ああ、入ってくるぅ〜
トロイ入ってくるぅ〜〜!!

トロイ「俺の(バックドア)でガバガバにしてやるぜ!」

577 :デフォルトの名無しさん:2005/05/20(金) 17:12:03
>>574
(1) 0
(2) 1
(3) 655351

578 :デフォルトの名無しさん:2005/05/20(金) 17:19:07
どうしてそうなるのかを考察すること

579 :デフォルトの名無しさん:2005/05/20(金) 17:20:21
ああっ!エネマグラによるドライオーガズムで、一時間以上も逝きっぱなしよ!

580 :デフォルトの名無しさん:2005/05/20(金) 17:41:39
>>574
これでわかるか?

 <- ai[0]-> <- ai[1]-> <- ai[2]->
 xx xx xx xx xx xx xx xx xx xx xx xx
0:      01 00 00 00
1:     00 01 00 00
2:   00 00 01 00
3:  00 00 00 01
4:00 00 00 00
0:            f7 ff
1:               09 00

581 :デフォルトの名無しさん:2005/05/20(金) 17:47:13
>>569
このプログラムには不備がかなりある。
つまりエラーチェックをもう少し進めよ。
#include <iostream>

int main(){
char Hund[2];

std::cout<<"Aさんの手は?";
std::cin>>Hund[0];
std::cout<<"Bさんの手は?";
std::cin>>Hund[1];

if(Hund[0] == Hund[1]){
std::cout<<"あいこです"<<std::endl;
return 0;
}
if(Hund[0] == 'P')
if(Hund[1] == 'G')std::cout<<"Aさんの勝ち。";
else std::cout<<"Bさんの勝ち。";
if(Hund[0] == 'T')
if(Hund[1] == 'P')std::cout<<"Aさんの勝ち。";
else std::cout<<"Bさんの勝ち。";
if(Hund[0] == 'G')
if(Hund[1] == 'T')std::cout<<"Aさんの勝ち。";
else std::cout<<"Bさんの勝ち。";

std::cout<<std::endl<<"End"<<std::endl;

}

582 :デフォルトの名無しさん:2005/05/20(金) 17:49:42
>>579
いいなー。

583 :デフォルトの名無しさん:2005/05/20(金) 18:22:46
>>565
見たけどやる気が起きない。

584 :デフォルトの名無しさん:2005/05/20(金) 18:24:11
以下のように4つのchar型の要素を持った構造体にファイルから文字列を読み込みたいのですが、
最後の文がおかしいらしくきちんと格納されません。
ファイルの中身と格納する文はどう書けばいいのでしょうか?

とりあえずコンパイラを通すためにstr[0]のみに入れようとしたのですが、
例えばfor文で回しても変えられるのはstr[i]の部分だけですよね?
ファイルの中身を
str[0]のAAAに入れる文 ; str[0]のBBBに入れる文 ; str[0]のCCCに入れる文 ; str[0]のDDDに入れる文
str[1]のAAAに入れる文 ; str[1]のBBBに入れる文 ; str[1]のCCCに入れる文 ; str[1]のDDDに入れる文
としたとして、for文の2周目で2行目の文を入れる方法もよく分かりませんでした。
テキストがファイルの処理まで扱ってないためググって頑張ったのですが限界です('A`)

typedef struct{
char AAA[20];
char BBB[20];
char CCC[20];
char DDD[20];
} STR;

STR str[50] = {'\0'};

FILE *fp = fopen("001.dat", "r");
fscanf(fp, "%s%s%s%s", str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD);



585 :デフォルトの名無しさん:2005/05/20(金) 18:35:46
>for文の2周目で2行目の文を入れる方法
入力関数はストリームの先頭から文字を「取り出す」(いい加減な説明だけど、最初はそういう理解で十分)
だから、1周目で1行目の文を入れたら、(ストリームに1行目は残ってないので)自動的に2周目で2行目の文が入る。

(残ってない は実は嘘だけど気にすんな)

586 :584:2005/05/20(金) 18:39:30
>>585
アナルヘソ(・∀・)
指定しなくてもとにかく順番に入れてくれるってことですね。
ただファイルの中身とfscanf文は上記のようにしてあるのですが、
BBBに入れたい文がAAAに続けて入っていたりします。
きちんと区切って入れるにはどうしたらいいのでしょうか?

587 :デフォルトの名無しさん:2005/05/20(金) 18:53:02
>>585では無いが、区切り文字を入れると良いよ。
一般的なのは、ホワイトスペース、またはコンマかな。
本文に出てこない文字を区切り文字にするといい。

588 :デフォルトの名無しさん:2005/05/20(金) 18:55:10
>>587
584のテキストはセミコロンで区切られているように見えるが。

589 :デフォルトの名無しさん:2005/05/20(金) 18:57:22
おっと、見落としてた。
fscanf("%s;%s;%s;%s",str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD); 
でどうだろう??

590 :デフォルトの名無しさん:2005/05/20(金) 18:58:07
fscanf(fp.....
fpわすれてた。

591 :584:2005/05/20(金) 19:05:27
>>587
区切り文字はfscanf側ですね。
一応>>584のような記述で実行しての不具合だったので、
ファイル側は一応まともに区切られてはいるってことですよね。
今は自宅にいて試せる環境にないのですが、後日fscanf側を変更してやってみます。
>>585-590 みなさまありがとうございました。

592 :デフォルトの名無しさん:2005/05/20(金) 19:06:43
うまく動きません。二分探索です。
#include <stdio.h>
#define MAX 10
struct student {
int key;
char name[10];
};


struct student Student[MAX]={{8,"Hanada"},{5,"Goto"},{24,"Nishida"},{10,"Toh"},{3,"Sasaki"}};
int Num=5;









593 :デフォルトの名無しさん:2005/05/20(金) 19:07:47
main()
{
int i;
int tgt_key;


while(1) {
printf("Please input the key.\n");
if (scanf("%d", &tgt_key)==EOF)
break;
if((i=bi_search(tgt_key))!=-1)
printf("Found! key=%d, Name=%s \n",
Student[i].key, Student[i].name);
else
printf("Not found.\n");

}
}




594 :デフォルトの名無しさん:2005/05/20(金) 19:09:30
int bi_search(int target)
{
int hi, lo, mid;
lo=0; hi=MAX-1; /* nは配列の大きさ */

while(lo <= hi) { /* この条件が成立しなければ,データは無い */
mid=(lo+hi)/2; /* 中央のデータのインデックス */
if (target==Student[mid].key)
return mid;
else if(target<Student[mid].key)
hi=mid-1; /* 左半分を再探索 */
else
lo=mid+1; /* 右半分を再探索 */
}
return -1; /* 見つからなかった */
}


595 :デフォルトの名無しさん:2005/05/20(金) 19:11:48
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): ポーランド記法を逆ポーランド記法に変換するプログラムを作成せよ。
ただし、逆ポーランド記法は以下のトークンの列で表現する。
  struct token{
enum{NUM,ADD,SUB,MUL,DIV}type;
int value;
};
NUMは数値を示し、ほかは演算記号です。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:なるべく早く
[5] その他の制限: できればキューに格納してほしい


596 :デフォルトの名無しさん:2005/05/20(金) 19:18:30
>>592-594
テンプレつかっておくれ。

597 :デフォルトの名無しさん:2005/05/20(金) 19:26:51
>>592
2分探索はソート済みのデータじゃないと無理。

hi=MAX-1;
でなく
hi= Num-1;
でないか?

598 :デフォルトの名無しさん:2005/05/20(金) 19:31:14
>>595
スタックではなく?

599 :デフォルトの名無しさん:2005/05/20(金) 19:51:03
[1] 授業単元:演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/432.txt
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005/5/23
[5] その他の制限:特に無し

ご指南よろしくおねがいします。
考えれば考えるほど頭がこんがらがってくる・・・OTZ


600 :デフォルトの名無しさん:2005/05/20(金) 20:58:42
>599
なんか変な仕様だな。
とりあえず、一つのListのvalueが一桁の数値を持つようだな。
これを踏まえてだな。
intに変換する関数。
int DisitToInt(disit *data);
をつくって、intでごにょごにょして、
disit* IntToDisit(int val);
を作ってというのが一つの案なんだが、
読み直してみると、結構面倒だな。
あっさりINT32分超えそう。
すまん、やくにたってないな。

601 :デフォルトの名無しさん:2005/05/20(金) 21:04:24
>>599
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/433.c

602 :デフォルトの名無しさん:2005/05/20(金) 21:17:01
えっと、やっぱり>>252>>477は難しいんでしょうか。
さっぱり分からないので、「こーすればいいんじゃないの?」みたいなアドバイスでもいいのでご指南よろしくお願いします・・・

603 :デフォルトの名無しさん:2005/05/20(金) 21:26:15
>>601
ご回答ありがとうございます。
・・・が,9999と1を入力しても10000にならないです・・・


604 :デフォルトの名無しさん:2005/05/20(金) 21:38:06
>>599
じゃ、これ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/434.c

605 :デフォルトの名無しさん:2005/05/20(金) 21:56:36
>604
わざわざご丁寧に有難うございました。
考え方一つでここまで単純にすることができるんですね・・・


606 :デフォルトの名無しさん:2005/05/20(金) 22:07:45
もう遅いのは承知だけど、あげ。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/435.txt

607 :デフォルトの名無しさん:2005/05/20(金) 22:14:52
>>602
興味が無いわけではないけど、僕はWindows使いなので手が出ません。
まーソケットは扱ったこと無いから元々手が出ないかもしれんが。

608 :デフォルトの名無しさん:2005/05/20(金) 22:31:33
>598
595のものですが関数のプロトタイプ宣言が
例)void change(char *pre,struct queue *postfix)
な感じになればいいんです。

609 :デフォルトの名無しさん:2005/05/20(金) 23:18:57
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
1.
2つの整数を読み込み、最大公約数と最小公倍数を計算するプログラムを作成せよ.但し,main関数の他に以下の関数を必ず使用すること.
整数の読み込み(読み込んだ整数を戻り値とする関数)
最大公約数の計算(2つの整数を引数,結果を戻り値)
最小公倍数の計算(2つの整数を引数,結果を戻り値)
結果を表示する関数(最大公約数,最小公倍数を引数)
2.
フェボナッチ数列{a_n}の要素,a_1, a_2, ..., a_20の中で素数である要素をカウントし,それらを表示するプログラムを作成せよ.但し,main関数以外に関数として以下の関数を作成すること.
数列を計算する(nを引数とし,a_nを戻り値)
素数を判別する(整数aを引数とし,素数の場合1,素数でない場合0を戻り値とする関数)
表示(1)(素数を引数とし,結果を表示)
表示(2)(カウントした数を引数とし,結果を表示)

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:5月22日まで
[5] その他の制限:あまり難しい事は習っていないので簡単?なプログラムで。。。
あつかましいですが宜しくお願いします。

610 :デフォルトの名無しさん:2005/05/20(金) 23:56:32
>>565
やばい。あとしめきりまで、6時間しかありません。
必死なんです。どなたか手伝ってください。
ほんと、お願いします!!!!!!!



611 :デフォルトの名無しさん:2005/05/20(金) 23:59:54
>>609 1個目
#include <stdio.h>

int gcd(int a, int b)
{ /* 最大公約数。アルゴリズムはユークリッドの互除法 */
if(b == 0) return a;
return gcd(b, a % b);
}

int lcm(int a, int b)
{ /* 最小公約数。アルゴリズムは…特になし。 */
int ggcd = gcd(a, b);
return a * (b / gcd(a,b));
}

int main(void)
{
int a, b;
printf("a=?"); scanf("%d", &a);
printf("b=?"); scanf("%d", &b);
printf("GCD(%d,%d)=%d\n", a, b, gcd(a, b));
printf("LCM(%d,%d)=%d\n", a, b, lcm(a, b));
return 0;
}


612 :デフォルトの名無しさん:2005/05/21(土) 00:06:10
>>610
仕方ないから大雑把にアルゴリズムだけ。実際には自分で組め。
まずは表作り。詳しい書き方は(C++を)知らん。
vector<vector<int> > table; // 左端、上端の初期化を忘れずに
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++) {
int fromleft = table[i-1][j]-1;
int fromup = table[i][j-1]-1; // upは文法的におかしい?
int fromdiagonal=table[i-1][j-1]+Matrix[Indexof[s1[i]]][Indexof[s2[j]]]; // ここは適宜直せるだろう
table[i][j] = max(fromleft, fromup, fromdiagonal); // ここもif等で書き換える必要有り
}
これを貴様がC++に移行している間に次を書いとく。

613 :デフォルトの名無しさん:2005/05/21(土) 00:15:59
>>610 Move vector の作成
vector<Move> 変数名を指定されていた気がするけど忘れた。ここでは v にしておく。
for(int i = length1-1, j = length2-1; i != 0 || j != 0; ) {
int left, up, diag;
left = table[i-1][j];
up = table[i][j-1];
diag = table[i-1][j-1];
if(diag >= left && diag >= up) {
v.push_back(斜め); // enum 忘れた
i--;
j--
} else if(left >= up) {
v.push_back(1にブランク); // 同上
i--;
} else {
v.push_back(2にブランク); // 同上。もしかしたら「1にブランク」「2にブランク」は逆かも。
j--;
}
}
scoreの計算方法は示されてなかったが、おそらく
score=table[length1-1][length2-1];
あとは5時間半がんばれ。

614 :デフォルトの名無しさん:2005/05/21(土) 00:23:09
>>609
素数の判定だけ

int IsPrime(int n)
{
int i;

if(n < 2) return 0;
if(n==2) return 1;
if(n % 2 == 0) return 0;
for(i = 3; i <= sqrt(n); i += 2)
if(n % i == 0) return 0;
return 1;
}



615 :デフォルトの名無しさん:2005/05/21(土) 00:25:30
>>614
素数判定するんだったらもっとマシなアルゴリズム使えよwww

616 :611:2005/05/21(土) 00:33:26
>>609 2個目。表示に関して(1)と(2)の区別の意味が分からんのでそこは放置してる
改行が多い関係で省いたけどisprimeに関しては>>614といっしょ。
#include <stdio.h>
int fibo(int n)
{
int i, a, b, c;
if(n < 1) return 0;
if(n < 3) return 1;
a = b = c = 1;
for(i = 2; i < n; i++) { a = b; b = c; c = a + b; }
return c;
}
int main(void) {
int i, n, fib, count = 0;
printf("n=?"); scanf("%d", &n);
for(i = 1; i < n; i++) {
fib = fibo(i);
if(isprime(fib) == 1) { printf("%d\n", fib); count++; }
}
printf("The number of prime numbers is %d\n", count);
return 0;
}

>>615 AKSですか?

617 :Me != 615:2005/05/21(土) 01:03:20
作りおきだが。
int *sieve_of_eratosthenes(int upper) {
    int i, notprime, *integers = (int*)malloc(sizeof(int) * (upper + 1));
    for (i = 2; i <= upper; i++) integers[i] = 1;
    integers[0] = integers[1] = 0;
    for (i = 2; i <= upper / 2; i++) {
        notprime = i;
        while ((notprime += i) <= upper) integers[notprime] = 0;
    }
    return integers;
}

int is_prime(int n) {
    int *sieve = sieve_of_eratosthenes(n), ret = sieve[n];
    free(sieve);
    return ret;
}

618 :609:2005/05/21(土) 01:23:57
皆さんありがとうございます
1番はできたのですが2番の616さんのプログラムがエラー出てしまいます・・

619 :ME->NewFace:2005/05/21(土) 01:26:23
フェボナッチ数自体があってるか謎。
数学の素養がないとこういうときつらいな〜。
#include <stdio.h>
#include <stdlib.h>
#define TRUE (1)
int F(int n){
    if(n==1) return 1;
    if(n==2) return 1;
    return F(n-2)+F(n-1);
}
int EratosthenesSieve(char *p,int n){/*エラトステネスの篩*/
    int i,j;
    for(i =2;i<n;i++){
        if(p[i]==TRUE) continue;
        for(j=2;(i*j)<n;j++){
            p[i*j]=TRUE;
        }
    }
    return 0;
}
int main(){
    int n,f;char *buf;
    puts("Input N...");scanf("%d",&n);
    f=F(n);
    printf("%d",f);
    buf = (char*)calloc(f+1,sizeof(char));
    EratosthenesSieve(buf,f+1);
    if(buf[f] != TRUE)puts("Prime!!");
    else puts("Not Prime!!");
    free(buf);
    return 0;
}

620 :616:2005/05/21(土) 01:37:28
>>618
isprime関数を>>614のから
int isprime(int n)
{
int i;
if(n < 2) return 0;
if(n==2) return 1;
if(n % 2 == 0) return 0;
for(i = 3; i * i <= n; i += 2) /* ここが違う */
if(n % i == 0) return 0;
return 1;
}
にしてみ?表示用の関数2つ作らなきゃならんらしい(それぞれ何を出力するのか問題文からはよく分からん)
からそのままだとアウトだが。

621 :デフォルトの名無しさん:2005/05/21(土) 02:14:17
>>ALL
おやすみ〜。

622 :デフォルトの名無しさん:2005/05/21(土) 02:18:41
エラーが出るときはエラーメッセージをコピペ。


623 :デフォルトの名無しさん:2005/05/21(土) 02:26:46
>>620
ありがとうございます!できました。
自分も問題文がよくわかりませんorz

624 :デフォルトの名無しさん:2005/05/21(土) 02:50:00
>表示(1)(素数を引数とし,結果を表示)
>表示(2)(カウントした数を引数とし,結果を表示)

void put_1(int n){ printf("%d は素数です\n",n); }
void put_2(int n){ printf("素数である要素は %d あります\n", n); }

625 :デフォルトの名無しさん:2005/05/21(土) 03:23:44
>>612,613
ありがとうございます。
私も、やることのアルゴリズムはわかるんですよ。
でも、このもとあるコードが理解できてないんですね。。。
これだけでもRunするんですよ。
それらを、どういうふうにこのコードにそって
書いたらいいのかが、全くわからないんですね。。。
すいません。
もし、C++が分かる方がいたら、教えてください。
ほんと、お願いします。

626 :625:2005/05/21(土) 03:55:29
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/436.txt
koreto niterun dato omoimasu.

627 :デフォルトの名無しさん:2005/05/21(土) 03:57:39
ジャンケンプログラム作成を依頼した>>559>>569です。
回答ありがとうございました。
習っていない文法があったので、もう少し簡単目なのではできないのでしょうか?
ttp://www.media.osaka-cu.ac.jp/~k-abe/2001-JS-OSAKA-U/C.html
↑ここの最初からbreak文あたりまでしかまだ習っていないので・・・

628 :625:2005/05/21(土) 04:11:39
これができないと、次の課題もできなくて、
このクラス、パスできないかもしれないのです。
お願いです。助けてください。

629 :デフォルトの名無しさん:2005/05/21(土) 04:22:22
>>628
お金払って、それなりの人にやってもらえば?
大事な単位なんでしょ。そんな問題をタダでやってもらおうなんて虫が良すぎる。
お金払ってやってもらう価値があるんでしょ?
それにいい加減ウザイ。

630 :625:2005/05/21(土) 04:26:46
>>629
テメエには言ってねえよ(゚Д゚ )ゴルァ!!余計な茶々入れるんじゃねーよ。
私は解いて下さるだけにお願いしているのです。
どうかお願いしますm(_ _)m

631 :デフォルトの名無しさん:2005/05/21(土) 04:28:23
>625って明確に落ちこぼれてきてるよな。


632 :デフォルトの名無しさん:2005/05/21(土) 04:29:44
>>630
諦めろ。

633 :デフォルトの名無しさん:2005/05/21(土) 06:27:47
age

634 :625:2005/05/21(土) 06:31:46
やってくれた方にはお礼します。
あと2時間しかないです。
630は私ではありません。

635 :デフォルトの名無しさん:2005/05/21(土) 06:32:09
>>630 はネタだと思うが。

>>625 よ、学校にお友達いないのか?

回答者にとってここは人助けのためにあるのではなくって、
暇つぶし程度だとおもう・・・そんなに期待しないよーに。

それと、FAQかなぁ。

Q.解けないと単位もらえない。
A.知ったこっちゃない。

Q.急いでください。
A.回答者は急ぐ義理はない。

(とか書くと、やさしいおせっかいさんが、プログラム書いてくれるハズ)

636 :デフォルトの名無しさん:2005/05/21(土) 06:41:01
荒れてるなー。

>>634
問題どこ? リンク貼っといて。
それと、お礼はなんですか? いくら出せますか?

637 :625:2005/05/21(土) 06:41:17
>>635
無理に急いでくださいとは言える立場ではないのは分かってます。
締め切りすぎた後でもこれは必要なので、お願いします。

638 :625:2005/05/21(土) 06:47:16
>>636
メールください。

639 :デフォルトの名無しさん:2005/05/21(土) 06:50:49
・・・んー・・・yahooメールの人は信用してないんで。
ごめんねー。

640 :625:2005/05/21(土) 06:52:17
>>636
もう一度張ります。
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/arerenore1357/HW.cab
この中に途中までのコードと問題文が含まれています。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): MSVC
 [3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:
たぶん、struct AminoAcidAlignmentの中で、
vector<vector<int> >
vector<vector<Move>>を使って
for(int i=1;i<=length1;i++)
for(int j=1;j<=length2;j++)
const int some = kscoreMatrix[s1.AAnums[i=1][s2.AAnums[j-1]];
ってやるんだと思います。
他にもやり方があれば、別にかまいません。

コードはだいたい出来ていて、あとは、align 関数を完成させるだけです。

641 :625:2005/05/21(土) 06:53:04
どこのメールだったらいいのですか?
家のメアドはここには張りたくないのですが・・・。

642 :デフォルトの名無しさん:2005/05/21(土) 07:08:14
フリーメール系はダメなんじゃない?
プロバイダのメールとか学校のメールとかか?

643 :636:2005/05/21(土) 07:48:15
>>640
ネタだったのかなぁ。cabファイル落とせない。

644 :デフォルトの名無しさん:2005/05/21(土) 08:17:32
>>625に扮して釣ろうとするやつ多すぎwwww


645 :デフォルトの名無しさん:2005/05/21(土) 08:36:41
>>640
最後の矢印を辿るところがよく分からないので適当に。
scoreの求め方も書いてないからやってない。

AminoAcidAlignment align(const AminoAcidSequence &s1, // it is ok if
const AminoAcidSequence &s2) { // &s1 == &s2
 struct matrix {
  int row, col;
  std::vector <int> v;
  matrix(int r, int c) : row(r), col(c), v(row * col) {}
  int *operator[](int r) {return &v[r * col];}
 };
 AminoAcidAlignment aln; aln.seq1=s1; aln.seq2=s2; aln.score=-654321;
 const int len1=s1.AAnums.size(), len2=s2.AAnums.size();
 matrix m(len2 + 1, len1 + 1);
 int i, j, gap = -1;
 for (j = 0; j < len2; j++)
  for (i = 0; i < len1; i++)
   m[j + 1][i + 1] = max(max(m[j + 1][i] + gap, m[j][i + 1] + gap),
              m[j][i] + kScoreMatrix[s2.AAnums[j]][s1.AAnums[i]]);


646 :645:2005/05/21(土) 08:37:13
続き
 for (i = j = 1; i < len1 || j < len2;)
  if (i == len1)
   aln.moves.push_back(GAPIN1), j++;
  else if (j == len2)
   aln.moves.push_back(GAPIN2), i++;
  else if (m[j][i + 1] >= m[j + 1][i] && m[j][i + 1] >= m[j + 1][i + 1])
   aln.moves.push_back(GAPIN2), i++;
  else if (m[j + 1][i + 1] >= m[j + 1][i])
   aln.moves.push_back(NOTGAP), i++, j++;
  else
   aln.moves.push_back(GAPIN1), j++;
 aln.moves.push_back(NOTGAP);
 return aln;
}

647 :625:2005/05/21(土) 09:52:36
ありがとうございます。ほんと、助かります。
スコアーは、一番右下のものになります。
その数値が大きいほど、2つの配列が似ているということです。
640はねたではありません。
cab落せないですか?私は落せますが・・・。

648 :625:2005/05/21(土) 12:00:19
自己解決しました。ありがとうございました。

649 :625:2005/05/21(土) 12:04:26
648は私ではないのですが・・・。

650 :デフォルトの名無しさん:2005/05/21(土) 12:15:51
こりゃ、625さんには2chの使用料12時間分の請求が行くかも知れんね。

651 :デフォルトの名無しさん:2005/05/21(土) 12:20:20
ネタを供給してるってことで、口座番号とカードの暗証番号書いとけばギャラもらえるかも。

652 :625:2005/05/21(土) 12:26:04
うるせーよ。おめーらが無能なだけだろうがー。
出来ねーからって、がたがた言うな。
能力のある方にお願いしてるのです。
どうかお願いしますm(_ _)m

653 :デフォルトの名無しさん:2005/05/21(土) 12:47:35
>うるせーよ。おめーらが無能なだけだろうがー。 
>出来ねーからって、がたがた言うな。 

>>625に該当

654 :625:2005/05/21(土) 12:54:16
652は私ではないのですが・・・。

655 :デフォルトの名無しさん:2005/05/21(土) 12:59:50
ところで、>>645への謝礼はどれくらいなのだらう。

656 :625:2005/05/21(土) 13:02:03
ほとんど、自分じゃないし。。。
ここ最近で私が書いたのは、
>>638 >>634 >>637 >>640 >>641 >>647 >>649


657 :625:2005/05/21(土) 13:14:57
謝礼は大いにはずみますから、ぜひお願いします。
卒業がかかってるんです。不況なので早めに就職活動始めたいので、
是 非 お 願 い し ま す 。

658 :作ってみた>627:2005/05/21(土) 13:16:26
int ta,tb;
printf("Aさんの手は?"); ta=getchar();
if( ! (ta=='G' || ta=='T' || ta=='P')) printf("入力エラー\n");
tb=getchar(); /*←なぜかENTERの分を読まないといけないらしい*/
printf("Bさんの手は?"); tb=getchar();
if( ! (tb=='G' || tb=='T' || tb=='P')) printf("入力エラー\n");
if(ta==tb) printf("\nあいこです\n");
if((ta=='G' && tb=='T') || (ta=='T' && tb=='P') || (ta=='P' && tb=='G')) printf("\nAさんの勝ちです\n");
if((ta=='G' && tb=='P') || (ta=='T' && tb=='G') || (ta=='P' && tb=='T')) printf("\nBさんの勝ちです\n");

659 :625:2005/05/21(土) 13:19:31
皆さんは皆さんの都合を優先するのではなく、**私の都合を**優先してください。
わかったらとっとと答え出しやがれ無能が。

660 :デフォルトの名無しさん:2005/05/21(土) 13:22:58
なんかVIPPER臭くねえか?このスレ。
うはwwwwおkwwwwうっうぇっうぇwwww

661 :デフォルトの名無しさん:2005/05/21(土) 13:41:32
>>656 本物くさい。
ネタだとしたら、金城センセ並み。
本物だとしたら、イタイ。

662 :デフォルトの名無しさん:2005/05/21(土) 13:44:44
>>625
本物であればトリップかフシアナ使ってからソースを上げなおせ

663 :fusianasan:2005/05/21(土) 13:54:50
これでいいですか?

664 : ◆tr.t4dJfuU :2005/05/21(土) 14:13:03
>>663
せめて、これくらいじゃないとね

665 :pool-71-106-99-28.lsanca.dsl-w.verizon.net:2005/05/21(土) 14:20:57
私が書いたのは、
>>638 >>634 >>637 >>640 >>641 >>647 >>649 >>656


666 :pool-71-106-99-28.lsanca.dsl-w.verizon.net:2005/05/21(土) 14:27:54
【質問テンプレ】
[1] 授業単元: バイオインフォマティックス
[2] 問題文(含コード&リンク):
http://www.geocities.jp/cplushelphelp/HW.cab
この中に途中までのコードと問題文が含まれています。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): MSVC
 [3.3] 言語:C++
[4] 期限:なるべく早く。
[5] その他の制限:


667 :デフォルトの名無しさん:2005/05/21(土) 15:15:08

            ,:::-、       __
      ,,r   〈:::::::::)    ィ::::::ヽ
      〃   ,::::;r‐'´       ヽ::ノ
    ,'::;'   /::/  __
     l:::l   l::::l /:::::)   ,:::::、  ji
    |::::ヽ j::::l、ゝ‐′  ゙:;;:ノ ,j:l
    }:::::::ヽ!::::::::ゝ、 <:::.ァ __ノ::;!  パンダー!
.    {::::::::::::::::::::::::::::`='=‐'´:::::::::/
    ';::::::::::::ト、::::::::::::::i^i::::::::::::/
      `ー--' ヽ:::::::::::l l;;;;::::ノ
          `ー-"

【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です。



668 :デフォルトの名無しさん:2005/05/21(土) 18:35:08
>>627
C++やってたんじゃないのか??
情報は正確にたのむよ〜。

669 :デフォルトの名無しさん:2005/05/21(土) 18:53:02
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キューのプログラムを作成したい。
ただし注意点がある。
大きさは0-9までの配列を用いる。
head=0,tail=-1で初期化を行う。
0-999の任意の値の追加、取り出しと表示、キュー全体の表示を行うプログラムを作成せよ。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ(バージョン):microsoft visual c++
 [3.3] 言語:C言語
[4] 期限:2005年05月23日0:00まで

どなたか御願いします。

670 :デフォルトの名無しさん:2005/05/21(土) 18:59:15
>>669
STL使う。終了。

671 :デフォルトの名無しさん:2005/05/21(土) 19:44:00
C言語にSTLは無いぞ...

672 :デフォルトの名無しさん:2005/05/21(土) 19:55:19
>>669
手を抜くためにグローバル変数を使った。
特に反省はしていない。
改造するなら構造体にすると複数でつかえるよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/438.txt

なお、tailの初期化値が-1だとエラーが出たので0で初期化した。

673 :デフォルトの名無しさん:2005/05/21(土) 19:57:57
そうそう、両端キューじゃなくて、FIFOだからね。

674 :デフォルトの名無しさん:2005/05/21(土) 20:06:08
LIFOだったかも。とにかくダブルエンデッドキューじゃないからね。

675 :デフォルトの名無しさん:2005/05/21(土) 21:06:30
>>674
LIFO はキューじゃなくてスタック

676 :デフォルトの名無しさん:2005/05/21(土) 21:14:20
そうだっけ?あー、ゴチャゴチャする。
レスthx

677 :デフォルトの名無しさん:2005/05/21(土) 21:52:21
俺一人しかいないようかんまん。

678 :デフォルトの名無しさん:2005/05/21(土) 22:03:29
>>677
ノシ

679 :デフォルトの名無しさん:2005/05/21(土) 22:11:41
[1]情報工学実験
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/439.txt
問題文と自分で解いたプログラムを載せてます
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):
 [3.3] C
[4] 期限:5月26日迄
[5] その他の制限:なしっす
どこが間違っているの指摘だけでも結構です、よろしくお願いします。

680 :デフォルトの名無しさん:2005/05/21(土) 22:17:09
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
米ドルの換金レートを入力し,円をドルまたはドルを円に計算するプログラムを作成せよ.但し,以下の仕様にすること.

* 入力は換金レート(1ドル=x円のx)を入力.
* 円→ドルまたは,ドル→円を選択させる.
* ドル→円は四捨五入
* 以下の関数を作ること
1. レートを入力する関数(レートの値を戻り値)
2. 円→ドルを計算する関数(円とレートを引数,ドルを戻り値)
3. ドル→円を計算する関数(ドルとレートを引数,円を戻り値)
4. 結果を表示する関数(結果を引数)
* マイナスの円またはドルを入力すると終了.
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C言語
[4] 期限:2005年05月24日
ご教授よろしくお願いします。

681 :デフォルトの名無しさん:2005/05/21(土) 22:30:09
>>679
文法がCじゃないところがある。
C++として進めて見るよ。

682 :679:2005/05/21(土) 22:32:02
>>681
そうなんですか?C++は分からないですが、
お手数ですがよろしくお願いします。

683 :デフォルトの名無しさん:2005/05/21(土) 22:33:27
>>679
コンパイラのエラーはちゃんと無理ない方法で対処してほしい。
でないと、初期値不定の変数にアクセスしちゃったりするよ。

684 :デフォルトの名無しさん:2005/05/21(土) 22:56:08
>>607
そうですか・・・レスありがとうございます。

えっと、いちおうまだ時間はあるので、>>252>>477をやってくださる神を待っています

685 :デフォルトの名無しさん:2005/05/21(土) 22:57:03
59行目
hashtable[x].・・・x=-2
前方参照してるがな。アンダーフローっていうのかな。


686 :デフォルトの名無しさん:2005/05/21(土) 22:59:46
>>679
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/440.txt

687 :デフォルトの名無しさん:2005/05/21(土) 23:01:06
アンダーフローの原因はintがハッシュ値計算中に正の値を振り切ったところにあるようだ。
sum=31*sum+c[i];この計算だ。あっさり振りきっとる。

688 :デフォルトの名無しさん:2005/05/21(土) 23:05:30
グダグダ書いてたけどお役ごめんだな。
数値はしっかり把握してちょ。
うんじゃまた。

>>686
仕事が速いですな。関心します。

689 :デフォルトの名無しさん:2005/05/21(土) 23:10:21
>>683
>>685-688
詳しくアリガトウございました。
確かに振り切ってましたね。
>>686
ご丁寧にありがとうございました。
こんなに速くとは思ってなかったのでありがたいです。


690 :デフォルトの名無しさん:2005/05/21(土) 23:30:55
>>680
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/441.txt

691 :690:2005/05/21(土) 23:32:28
break は continu だった_| ̄|○

692 :デフォルトの名無しさん:2005/05/21(土) 23:32:46
>>690
微妙にC++?

693 :デフォルトの名無しさん:2005/05/21(土) 23:37:15
>691
continueね。

694 :679:2005/05/21(土) 23:48:10
たびたびすいません。
>>686さんのプログラムを参考にして
書き換えてみました。
ファイルから入力する時、1000行分のは実行できましたが
100,000行分のファイルを持ってくるとエラーになってしまいます。
原因としてどのような事が考えられるでしょうか?

695 :デフォルトの名無しさん:2005/05/22(日) 00:02:26
>>1
> ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。

696 :690:2005/05/22(日) 00:04:13
>>692
どの辺が C++?

>>694
デバッガは使えないのか?

697 :デフォルトの名無しさん:2005/05/22(日) 00:12:39
エラーメッセージはセグメントエラーと出るだけです。
学校のUNIXに家のWINDOWSから入って作業しています。
>>696
デバッガは無いので分からないですね。


698 :デフォルトの名無しさん:2005/05/22(日) 00:15:22
>>697
その Windows にデバッグ環境は無いのか?
無ければ Visual C++ 2005 Express Beta でもインストールしたら?

699 :デフォルトの名無しさん:2005/05/22(日) 00:19:03
>>698
VCがあっても意味無いだろ

700 :デフォルトの名無しさん:2005/05/22(日) 00:22:01
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):

次の実行結果になるようにプログラムを作成しなさい。
abc + cba = 1333となるa,b,cを求めるプログラム。
三重for文を使用すること。
変数は下記を使用すること。
int a,b,c; ← カウンタ

<実行結果>

419 + 914 = 1333
518 + 815 = 1333
617 + 716 = 1333
716 + 615 = 1333
815 + 514 = 1333
914 + 419 = 1333



[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C++
[4] 期限:日曜日まで。
[5] その他の制限:

検索で色々調べたのですが二重for文までしか調べられませんでした。
ろだにも書き込みしました。よろしくおねがいします。

701 :デフォルトの名無しさん:2005/05/22(日) 00:28:40
>>698
デバッグ環境の話をしているのになぜ意味無いと思ったんだ?

702 :デフォルトの名無しさん:2005/05/22(日) 00:34:40
>>700
検索するまでも無いだろ。

#include <stdio.h>
int main(int argc, char *argv[])
{
int a, b, c, x, y;
for(a = 1; a <= 9; a++)
{
for(b = 1; b <= 9; b++)
{
for(c = 1; c <= 9; c++)
{
x = a * 100 + b * 10 + c;
y = c * 100 + b * 10 + a;
if(x + y == 1333)
printf("%d + %d = 133\n", x, y);
}
}
}
return 0;
}

703 :デフォルトの名無しさん:2005/05/22(日) 00:35:14
>>701
VC++はコンパイラだからじゃない?

>>697
UNIXならgdbとかあるんじゃない?
せめてどこでセグフォが起きるか分からんと。
というか、そのエラーが出たプログラムを上げ直しなよ。

704 :デフォルトの名無しさん:2005/05/22(日) 00:35:25
>>700
あと、ろだに書いたならリンクぐらい貼ろうな。

705 :デフォルトの名無しさん:2005/05/22(日) 00:36:47
int main()
{
int a,b,c;
for(a=0;a<10;++a)
for(b=0;b<10;++b)
for(c=0;c<10;++c)
if((a*100+b*10+c + c*100+b*10+a )==1333)
printf("%d + %d = 1333\n", a*100+b*10+c ,c*100+b*10+c);
}


706 :697:2005/05/22(日) 00:44:59
>>703
セグフォは削除のところで起きてました!
追加と探索は出来ていましたので・・・。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/442.txt
プログラムあげました。たびたびすみません。


707 :デフォルトの名無しさん:2005/05/22(日) 00:45:43
>>703
VC++ はコンパイラじゃなくて開発環境。
デバッグ環境も含まれる。
ちなみに VC8b2 に含まれるコンパイラの名称は Microsoft (R) 32-bit C/C++
Optimizing Compiler Version 14.00.50215.44。
コマンド名は CL.exe。

708 :デフォルトの名無しさん:2005/05/22(日) 00:46:32
>>658
m9(・∀・)ソレダ!!
ありがとうございました。getcharだったのか・・・

709 :デフォルトの名無しさん:2005/05/22(日) 00:50:21
>>707
だから、UNIX上で動かすプログラムをVCでデバッグしてどうすんの。馬鹿?

710 :デフォルトの名無しさん:2005/05/22(日) 00:50:27
>>706
> char *keys[100000];
> int n,i,z=0;
> int len;
> char line[256];
> for(n=0;fgets(line,256,stdin)!=NULL;n++){
> len=strlen(line);
> line[len-1]='\0';
> keys[n]=(char*)malloc(len);
> strcpy(keys[n],line);
> }

何コレ。
こんな事したら 100001 行入力した時にバッファオーバーフローするのわからない?
malloc() で領域確保して realloc() で調整すべし。

711 :デフォルトの名無しさん:2005/05/22(日) 00:51:39
>>709
C の標準機能しか使っていないソースを VC でデバッグできないと思ってんの? 馬鹿?

712 :デフォルトの名無しさん:2005/05/22(日) 00:53:02
>>711
泣くなよwww

713 :デフォルトの名無しさん:2005/05/22(日) 00:54:00
わざわざVCでデバッグする意味がわからないな。

714 :デフォルトの名無しさん:2005/05/22(日) 00:55:29
>>713
>>711

715 :デフォルトの名無しさん:2005/05/22(日) 00:56:57
>>714
答えになってない。

716 :デフォルトの名無しさん:2005/05/22(日) 00:58:47
>>715
UNIXでのデバッグができないアフォなんだろwww
そっとしておいてやれwwww

717 :デフォルトの名無しさん:2005/05/22(日) 01:01:16
>>716
>>697 が目に入らないのか?

718 :デフォルトの名無しさん:2005/05/22(日) 01:02:24
dbgの存在知らないだけだろ。

719 :デフォルトの名無しさん:2005/05/22(日) 01:03:19
>>718
見苦しいのでもうやめ

720 :デフォルトの名無しさん:2005/05/22(日) 01:05:01
>>719
プププ

721 :デフォルトの名無しさん:2005/05/22(日) 01:09:25
VC++のデバッガは楽チン
CODEVIEWの頃から使ってるとつい
unixのプログラムもこっちでデバッグしてしまう
おかげでWinのHDDに\usr\local\xxx やら \var\xxx やらいろいろできてる・・
syslogもね

722 :デフォルトの名無しさん:2005/05/22(日) 01:12:41
>>710
realloc使ったこと無かったのでぐぐってみましたが
いまいちピンと来ませんでした。具体的には
どんな感じなんでしょうか・・・。

723 :デフォルトの名無しさん:2005/05/22(日) 01:23:26
>>702
>>705
ありがとうございました。参考にさせていただきます。
リンクは貼るの忘れていました。すいません。

724 :デフォルトの名無しさん:2005/05/22(日) 01:28:08
>>706 >>722
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/443.txt



煽るだけ煽って情報提供もせず回答もしない香具師は逝ってよし。
ちなみにこのソースは VC6 でデバッグしますた。

725 :デフォルトの名無しさん:2005/05/22(日) 01:29:47
>>724
自分に都合の悪い事は煽りにしたいんだろうな。
見苦しい。

726 :デフォルトの名無しさん:2005/05/22(日) 01:30:56
>>725
「情報提供もせず回答もしない香具師は」 の部分読めてるか?

727 :デフォルトの名無しさん:2005/05/22(日) 01:31:48
>>726
そんな決まりは無い。

728 :デフォルトの名無しさん:2005/05/22(日) 01:34:29
>>717
決まり? (゚Д゚)ハァ?

729 :デフォルトの名無しさん:2005/05/22(日) 01:35:39
そこまで。
最後に書いたほうが負け。

730 :デフォルトの名無しさん:2005/05/22(日) 01:37:00
>>729
そんな決まりは無い。

731 :デフォルトの名無しさん:2005/05/22(日) 01:37:37
>>724
本当にありがとうございます。
なんとか出来そうな感じです。
感謝です。

732 :デフォルトの名無しさん:2005/05/22(日) 02:04:51
>>666
眺めていて浮かんだ疑問なんだが。「ARNDCQEGHILKMFPSTWYVBZX」って
アミノ酸の一文字表記だよな?
問題文中の「S(G,G)=6なので」や「S(G,A)=0なので」に出てくる「ATCG」は塩基
だよな?
一緒にしてしまっていいのか?

733 :デフォルトの名無しさん:2005/05/22(日) 02:06:43
.cabってどうよ・・・。


734 :デフォルトの名無しさん:2005/05/22(日) 02:06:56
>>690
助かりました。ありがとうございました!

735 :pool-71-106-99-28.lsanca.dsl-w.verizon.net:2005/05/22(日) 03:04:23
>>732
ありがとうございます。
ここでの問題は、どれだけ2つの配列が似通っているかを調べるもので、
一番の焦点は、どこに、ギャップを入れると一番大きい数字を得ることが
できるかというものです。
その配列はなんなのかとかには、プログラムをする際には、
あまり気を使わなくていいと思います。

736 :デフォルトの名無しさん:2005/05/22(日) 06:09:46
[1]授業単元:アルゴリズム
[2]キーボードから、0から1000の間の整数をランダムに入力する。その数を100で割った余りを添字とする配列要素に
 その入力データを格納する。この方法では入力データが異なっても同じ添字になる可能性がある。(これを衝突という)
 データ入力中に衝突が起こったら、添字を+1した要素に納める。そこにもすでにデータが入っていたら、さらに添字を
 +1して空き要素を探して格納する。その後入力されたデータが入っている配列の添字と要素の値を表示しなさい。なお
 あらかじめ全配列要素に-1を詰めておくこと。このプログラムを書きなさい。
[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/23の夕方5時まで

4月からアルゴリズムを習い始めたのですが、いくら考えてもわかりません。
先輩方助けてください、よろしくおねがいします。


737 :デフォルトの名無しさん:2005/05/22(日) 06:27:23
>>736
クローズドハッシュでぐぐれ。

738 :デフォルトの名無しさん:2005/05/22(日) 09:33:44
>>737
ここは宿題を片付けるスレじゃなかったか?

739 :デフォルトの名無しさん:2005/05/22(日) 09:40:16
このスレを見てると、結構Windowsでやってるところが多いなと思う。
やっぱりVisual Studio使うのかな?
プログラミングの演習なんてみんなUnixを使うものだと思ってたよ。

740 :デフォルトの名無しさん:2005/05/22(日) 10:28:06
>>738
今や、ここはネタの場所だ。

741 :デフォルトの名無しさん:2005/05/22(日) 10:40:02
>>736
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/444.txt
>>737
何から何まで問題文に書いてあるのにぐぐる必要があるのか?

742 :デフォルトの名無しさん:2005/05/22(日) 11:12:47
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):

Aghdsfh A 123
Mgfdhfh B345
Cgfdgfd A678


このようなファイルを、読み込み、

123 Aghdsfh A
345 Mgfdhfh B
678 Cgfdgfd A

このように出力せよ。(区切りはタブ、スペース、改行)

[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:できれば今日中。
[5] その他の制限: scanf系、is系、str系の標準ライブラリ関数を、
  使わないものとする。

教授が、根本から理解してほしいとの理由で、関数を使わせてくれません。
いくら考えても、できません。
よろしくお願いします!

743 :デフォルトの名無しさん:2005/05/22(日) 11:18:03
> Aghdsfh A 123
> Mgfdhfh B345
> Cgfdgfd A678
      ~~~~~
これを分解しなきゃいけないのか?

744 :デフォルトの名無しさん:2005/05/22(日) 11:26:39
>>743
すみません。各単語の間はタブやスペースです。
Aghdsfh (タブ) A  (タブ)  123
書き込んだらおかしくなってました。

745 :デフォルトの名無しさん:2005/05/22(日) 11:30:01
>742
getchar()使え
あとはifで

746 :デフォルトの名無しさん:2005/05/22(日) 11:59:41
>>745
ここは宿題を片付けるスレじゃなかったか?

747 :デフォルトの名無しさん:2005/05/22(日) 12:00:19
>690

>double rate = InputRate();
C99ならおけなのか?

748 :デフォルトの名無しさん:2005/05/22(日) 12:01:51
>>742
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/445.txt

749 :デフォルトの名無しさん:2005/05/22(日) 12:02:29
/* >>742 動くかわからん。*/
#include <stdio.h>

int is_space(int c)
{
  return c == '\n' || c == '\t' || c == ' ';
}

void skipspace(void)
{
  int c;
  while (is_space(c = getchar()))
    ;
  ungetc(c, stdio);
}

char *getstr(char *buf, size_t size)
{
  size_t len = 0;
  int c;
  skipspace();
  while ((c = getchar()) != EOF && !is_space(c)) {
    if (len < size - 1)
      buf[len++] = c;
  }
  buf[len] = '\n';
  return (c == EOF && len == 0) ? NULL : buf;
}

750 :デフォルトの名無しさん:2005/05/22(日) 12:02:45
>>747
C99 じゃない C でも OK ですが何か?

751 :デフォルトの名無しさん:2005/05/22(日) 12:03:18
749のつづき

int main(void)
{
  char field1[100], field2[100], field3[100];
  while (getstr(field1, sizeof(field1)) {
    getstr(field2, sizeof(field2));
    getstr(field3, sizeof(field3));
    printf("%s %s %s\n", field3, field1, field2);
  }
  return 0;
}

752 :デフォルトの名無しさん:2005/05/22(日) 12:05:51
>>749 >>751
1 レスに収まらないならろだに貼れよ・・・。
それと、1 カラムに 100 文字以上書かれたらどうするんだ?

753 :デフォルトの名無しさん:2005/05/22(日) 12:12:14
ろだには張るなよ、うぷしろ。
コメント欄にソース張るとじゃますぎ!

754 :524:2005/05/22(日) 12:12:32
その後、こちらで小さな修正加えて提出しました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/446.cpp

これだとダメだから全部if・for文に変えろとか言われて・・・orz
これでも一応動いていたのですが。
環境等は変更ありません。
[4] 期限:2005年05月23日 AM8:00
申し訳ありませんがよろしくお願いします。

755 :デフォルトの名無しさん:2005/05/22(日) 12:18:04
>>754
何が 「ダメ」 なのかわからないと直すべき場所がわからない。

756 :デフォルトの名無しさん:2005/05/22(日) 12:19:07
>>748
ネタ? 一応動くけど

757 :デフォルトの名無しさん:2005/05/22(日) 12:19:14
>750
>警告 W8065 test.c 49: プロトタイプ宣言のない関数 'InputRate' の呼び出し(関数 main )


758 :デフォルトの名無しさん:2005/05/22(日) 12:25:42
>>757
どんなクソなコンパイラ使ってるんだ?

759 :デフォルトの名無しさん:2005/05/22(日) 12:29:35
BCB か
クソだな
何がプロトタイプ宣言のない関数、やねん

760 :デフォルトの名無しさん:2005/05/22(日) 12:35:42
イライラしてる人がいる(藁

761 :デフォルトの名無しさん:2005/05/22(日) 12:36:32
イラ(・∀・)イラ!!

762 :デフォルトの名無しさん:2005/05/22(日) 12:42:00
>>690

printf("変換方法を選択してください (円→ドル='D'、ドル→円='Y'): ", dollar, yen);

, dollar, yenってやっぱり必要ですか?

763 :デフォルトの名無しさん:2005/05/22(日) 12:47:22
必要なわけねえだろ

764 :デフォルトの名無しさん:2005/05/22(日) 12:55:27
[1]授業単元 : c言語
[2]あるファイルを読み込み、羅列している単語を抜き出して、
抜き出した単語を、辞書順にして画面に表示させるプログラムを作成せよ。
あるファイルというのは、自分で適当に作成するものとする。

例:Car Apple Dog
Cat windows2000 MBA
Beef Milk Mild
  Dust Mac Enter Y
Can Statue Hang

[3]環境
[3.1]OS:WinXP
[3.2]コンパイラ(バージョン):
[3.3]言語:C言語
[4]期限:2005/05/23まで

よろしくお願いします。

765 :デフォルトの名無しさん:2005/05/22(日) 12:59:22
>単語
スペースorタブor改行で区切られているもの、という解釈でよいのか?


766 :765:2005/05/22(日) 13:06:21
#include <stdio.h>
int main(void)
{
int c;
while((c=getchar())!=EOF)
if(c==' ' || c=='\t' || c=='\n') putchar('\n');
else putchar(c);
return 0;
}

使い方: 実行プログラム < 読み込むあるファイル | sort

767 :765:2005/05/22(日) 13:08:49
c==' '
のところのスペースがいなくなって見えますな

768 :デフォルトの名無しさん:2005/05/22(日) 13:15:12
辞書順か・・・やっかいだな。
文字コード順なら楽だが。


769 :765:2005/05/22(日) 13:20:17
あれ?システムコマンドのsortって辞書順だよ

770 :デフォルトの名無しさん:2005/05/22(日) 13:20:28
>>768
そうとも限らないでしょ
つー訳で>>764は辞書を晒してね

771 :TK:2005/05/22(日) 14:16:40
10進数a(Int)を16進数に再帰関数を利用して求めよ。
答えはCHAR配列に格納。
お願いします。

772 :デフォルトの名無しさん:2005/05/22(日) 14:19:45
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
多くの整数値が1行ずつ書かれたテキストファイルをリダイレクションで入力して、行数を数えて表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:できれば今日中。
[5] その他の制限: do-whileでお願いします。

途中までやってみましたが、これ以上無理でした。最後の行に999を入力して終了するようにしています。
#include <stdio.h>

int main(void)
{
int i,count;

count=0;
do{
scanf("%d",&i);

if (i == '\n') {
count = count + 1;
}
}while(i!='999');

printf("行数:%d",count-1);

return 0;
}

773 :デフォルトの名無しさん:2005/05/22(日) 14:20:03
そういう馬鹿な質問はIntとCHAR配列を定義してから言ってね

774 :デフォルトの名無しさん:2005/05/22(日) 14:29:04
>>772
>scanf("%d",&i);
>if (i == '\n') {
何処から教えれば良いのか…
取り合えず、fgets()使いましょう
行数は簡単に分かるはずなので…

775 :デフォルトの名無しさん:2005/05/22(日) 14:38:08
>>774
ここは宿題を片付けるスレじゃなかったか?

776 :デフォルトの名無しさん:2005/05/22(日) 14:38:23
>>772
そのプログラムを持って先生のところへ行け。
ここは宿題スレでC言語を教えるスレじゃない。

777 :デフォルトの名無しさん:2005/05/22(日) 14:38:43
>>775
スレ勘違いスマソ

778 :デフォルトの名無しさん:2005/05/22(日) 14:38:50
昨日お世話になったものですが、>>724様のプログラムを
そのまま使用してみてちょうど10万行のデータのファイルを読み込んで見ましたが
やはりremove_itemの箇所でセグメントエラーとなってしまいます。
どのようにしたらよいのか全く分かりません。


779 :デフォルトの名無しさん:2005/05/22(日) 14:42:13
>771
void n2h(char *buf, int n){
if(0<=n%16 && n%16<=9) *buf=n%16 +'0';
if(n%16==10) *buf='a';
if(n%16==11) *buf='b';
if(n%16==12) *buf='c';
if(n%16==13) *buf='d';
if(n%16==14) *buf='e';
if(n%16==15) *buf='f';
if(n/16) n2h(buf-1, n/16);
}


memset(buf,' ',sizeof(buf)); buf[4]='\0';
n2h(&buf[3],a);


780 :772:2005/05/22(日) 14:45:40
>>776
すいません、書き方が悪かったかもしれません。
作成して貰ったものを見て勉強しますので、引き続き宜しくお願いします。

781 :デフォルトの名無しさん:2005/05/22(日) 14:47:23
>>772
#include <stdio.h>
int main(void)
{
int i, count = 0;
while((i = getchar()) != EOF)
if (i == '\n')
count++;
printf("行数:%d", count);
return 0;
}

>>774
fgets() 使うまでもなかろ。

782 :デフォルトの名無しさん:2005/05/22(日) 14:49:11
#include <stdio.h>
int main(void)
{
int i = '\n', count = 0;
while((i = getchar()) != EOF)
if (i == '\n')
count++;
if (i != '\n')
count++;
printf("行数:%d", count);
return 0;
}

だったorz

783 :デフォルトの名無しさん:2005/05/22(日) 14:50:05
>772
これでどう?
#include <stdio.h>

int main(void)
{
unsigned long line=0;
int c;
while((c=getchar())!=EOF) if(c=='\n') ++line;
printf("%lu\n", line);
return 0;
}


784 :782:2005/05/22(日) 14:50:10
これでもないorz
逝ってくる

785 :デフォルトの名無しさん:2005/05/22(日) 14:50:28
>>781
>999を入力して終了

786 :デフォルトの名無しさん:2005/05/22(日) 14:51:44
>783
最後の行が改行無しだと数えないね

787 :782:2005/05/22(日) 14:51:52
#include <stdio.h>
int main(void)
{
int i, last = '\n', count = 0;
while((i = getchar()) != EOF)
if ((last = i) == '\n')
count++;
if (i != '\n')
count++;
printf("行数:%d", count);
return 0;
}

こうだった
スレ汚しすまき

788 :デフォルトの名無しさん:2005/05/22(日) 14:52:44
>>786
問題文を見る限りそのアプローチは間違っている。

789 :デフォルトの名無しさん:2005/05/22(日) 14:53:07
>787
lastは何に使ってんのと小一時間(r

790 :デフォルトの名無しさん:2005/05/22(日) 14:53:24
みんな餅付け
999を入力して終了なんだってば

791 :788:2005/05/22(日) 14:53:58
>>785 宛てだった、すまぬるぽ

792 :デフォルトの名無しさん:2005/05/22(日) 14:54:29
>[5] その他の制限: do-whileでお願いします

これか!

793 :782:2005/05/22(日) 14:55:03
#include <stdio.h>
int main(void)
{
int i, last = '\n', count = 0;
while((i = getchar()) != EOF)
if ((last = i) == '\n')
count++;
if (last != '\n')
count++;
printf("行数:%d", count);
return 0;
}
直せばいいんだろ (T∀T)

794 :デフォルトの名無しさん:2005/05/22(日) 14:56:06
>>790
問題文を見る限りそのアプローチは間違っている。

795 :782:2005/05/22(日) 14:56:34
>>792
無理ポ

796 :デフォルトの名無しさん:2005/05/22(日) 14:58:09
>>794
そうか?
俺はてっきり最後の行が999で無ければエラーを吐く仕様かと…

797 :デフォルトの名無しさん:2005/05/22(日) 15:00:00
>795

なんで?
while((i = getchar()) != EOF)
if ((last = i) == '\n')
count++;

i=0;
do{
if (i == '\n')
count++;
}while((i = getchar()) != EOF);
でええやん

798 :デフォルトの名無しさん:2005/05/22(日) 15:01:56
>>771
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/447.c

799 :772:2005/05/22(日) 15:02:11
>>790
私の場合はそれしか思いつかなかったので、それは強制していません。
ファイルの最後に999を入力して、無理やり終了させています。
すいません。

EOFの事をまだ習っていませんので、それを使用せずに作れないでしょうか?

800 :デフォルトの名無しさん:2005/05/22(日) 15:02:54
count-- ;
do { count += ( last == '\n' ) ; } while ( ( last = getchar() ) != EOF ) ;

801 :デフォルトの名無しさん:2005/05/22(日) 15:05:42
>799
scanfだって
>入力の失敗が生じた場合には EOF が返される
ですけど?

802 :デフォルトの名無しさん:2005/05/22(日) 15:06:36
>>799
数字以外や空行が出たら終了でOK?

803 :デフォルトの名無しさん:2005/05/22(日) 15:08:33
>>778
漏れのところではセグフォは発生しなかった。

804 :778:2005/05/22(日) 15:12:16
>>803
ホントですか?おかしいですね、環境を変えてためしてみます・・・。

805 :772:2005/05/22(日) 15:12:32
EOFについては自分でなんとかやってみます。

#include <stdio.h>
int main(void)
{
int i, last = '\n', count = 0;

do{
if ((last = i) == '\n')
count++;
if (last != '\n')
count++;
}while((i = getchar()) != EOF)

printf("行数:%d", count);

return 0;
}

で一度やってみます。
ありがとうございます。

806 :デフォルトの名無しさん:2005/05/22(日) 15:14:39
>805
そいつじゃだめだ
if (last != '\n')
count++;
をループの外に出せ
(下手にlast変数なんか導入するからw)

807 :デフォルトの名無しさん:2005/05/22(日) 15:18:19
>>771
先越されたけど一応参考までに
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/448.c

アップしてから気づいたけどdec2hex内のif文を短くできるorz
*s++=b[a & 0xF];
if(a>0xF) dec2hex(a>>4,s);
else *s=0;


808 :デフォルトの名無しさん:2005/05/22(日) 15:22:49
>>779 && >>807
で、aが負の時の処理は?
さらに言えば>>773

809 :524:2005/05/22(日) 15:33:19
>>755
ダメなところ
・swichとforが混同してるからFORに統一
・多次元配列で判りやすく記述する
・1つのメイン関数で1つの処理
にしろということらしです.
例は、一番上にかいてある処理のやり方みたいです

810 :779:2005/05/22(日) 15:34:46
>808

memset(buf,' ',sizeof(buf));
if(a<0){
buf[0]='-';
buf[5]='\0';
n2h(&buf[4],-a);
}else{
...



811 :デフォルトの名無しさん:2005/05/22(日) 15:38:59
>swichとforが混同してるからFORに統一
ありえねー


812 :デフォルトの名無しさん:2005/05/22(日) 15:40:51
char *to_hex(char *s, unsigned n)
{
  if (n > 16)
    s = to_hex(s, n / 16);
  *s++ = "0123456789abcef"[n % 16];
  *s = '\0';
  return s;
}
あんまし考えてない。

えらい人に質問。ここでマジックナンバー使ってるんだけれど、この場合OK? HEXって名前じゃあんましだし。

813 :デフォルトの名無しさん:2005/05/22(日) 15:41:30
>>811
まだswichを習ってないとかでは無いかと…
ありえないけど…
>>809
>例は、一番上にかいてある処理のやり方みたいです
って何?

814 :デフォルトの名無しさん:2005/05/22(日) 15:43:23
>マジックナンバー
あとで意味がわからないような謎の数値を指す。
16進数へ変換する'16'なのだからマジックナンバーとはいえないな

815 :デフォルトの名無しさん:2005/05/22(日) 15:48:59
>>812
どうでも良いが'd'が無い

816 :デフォルトの名無しさん:2005/05/22(日) 15:51:43
>>808
負の数って補数表現? それとも頭に'-'付けるタイプ?
またあとで質問だらけになってしまうかもしれないけど
まずこれだけ確認したい

817 :デフォルトの名無しさん:2005/05/22(日) 15:59:56
>>812
細かく言えば、ヘッダを作ってあげて、
そこでdefineしてやるべきではあるが、
この程度なら、分からなくなる事はありえないのでOK
但し、簡単なコメントはつけるべき
/* unsigned -> HEX(文字列s)に変換 例 0 -> "0" 273 -> "111" */

818 :デフォルトの名無しさん:2005/05/22(日) 16:08:16
>>816
この手の問題で、負(int)の値や、hex(char[])を扱う時には、色々な問題があるでしょ?
だから、まず>>773を見れと「>>771と回答者に」言ってるの

819 :デフォルトの名無しさん:2005/05/22(日) 16:12:37
>但し、簡単なコメントはつけるべき
>/* unsigned -> HEX(文字列s)に変換 例 0 -> "0" 273 -> "111" */

モジックナソバーとは何の関係も無いが、概ね同意

820 :809:2005/05/22(日) 16:58:47
>>811.813
それはこちらが聞きたいです。
swich使った方が楽なんですが・・・

>>813
1個目のメイン及びその次の処理のように、ifelseで掛けということらしいです。
又はfor文らしい…

821 :デフォルトの名無しさん:2005/05/22(日) 18:06:47
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
2次元配列配列A[][]にn個の1と0の組み合わせ全てを格納するプログラム
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン):VisualStudio.NET
 [3.3] 言語:C
[4] 期限:できれば今日中にお願いします

n=4のとき

A[16][4]={
{0,0,0,1},
{0,0,1,0},
 :
 :
{1,1,1,1},
}
という風になるようにしたいです。よろしくお願いします。

822 :デフォルトの名無しさん:2005/05/22(日) 18:09:46
>>820
こんな感じでどう?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/449.txt

823 :デフォルトの名無しさん:2005/05/22(日) 18:12:50
>>821
それだと15個しかない罠

824 :デフォルトの名無しさん:2005/05/22(日) 18:15:35
>>823
あ、{0,0,0,0}もです。ごめんなさい。

825 :デフォルトの名無しさん:2005/05/22(日) 18:20:57
int A[ 16 ][ 4 ]
int i;
for ( x = 0; i < 16; i++ ) {
A[ i ][ 0 ] = ( i & 0x08 ) ? 1 : 0;
A[ i ][ 1 ] = ( i & 0x04 ) ? 1 : 0;
A[ i ][ 2 ] = ( i & 0x02 ) ? 1 : 0;
A[ i ][ 3 ] = ( i & 0x01 ) ? 1 : 0;
}


826 :デフォルトの名無しさん:2005/05/22(日) 18:21:47
落ち着け、オレ。orz

int A[ 16 ][ 4 ];
int i;
for ( i = 0; i < 16; i++ ) {
A[ i ][ 0 ] = ( i & 0x08 ) ? 1 : 0;
A[ i ][ 1 ] = ( i & 0x04 ) ? 1 : 0;
A[ i ][ 2 ] = ( i & 0x02 ) ? 1 : 0;
A[ i ][ 3 ] = ( i & 0x01 ) ? 1 : 0;
}

827 :デフォルトの名無しさん:2005/05/22(日) 18:23:13
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): ttp://bal4u.dip.jp/mt/program/archives/2004/10/gap.html
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/450.zip
上が最終目標、下が今回の課題の問題文です。作りかけのソースも入れてあります
[3] 環境
 [3.1] OS:VineLinux3.3.2(kernel2.4.27)
 [3.2] コンパイラ(バージョン): gcc 3.3.2
 [3.3] 言語:C
[4] 期限:2005年05月23日まで
[5] その他の制限:特になし

行き詰まったときに戻ってくるために各ノードの状態を記録しておく
必要があると思うんですが、どうやったらいいのか見当がつきません。
よろしくお願いします

828 :デフォルトの名無しさん:2005/05/22(日) 19:05:19
>>827
意外と面倒そうやね…
基本的には再帰で行けそうな気はするが…

829 :821:2005/05/22(日) 19:42:52
すいません、n=4のときというのは例で、A[2^n][n]の2次元配列を作りたいです。
分かりづらくしてすいません。

830 :デフォルトの名無しさん:2005/05/22(日) 20:08:41
#define _N 4
int A[ _N * _N ][ _N ];
int i;
int j;
int b;
for ( i = 0; i < _N * _N; i++ ) for ( b = 0x00000001, j = 0; j < _N; b <<= 1,j++ ) A[ i ][ _N - j - 1 ] = ( i & b ) ? 1 : 0;


831 :809:2005/05/22(日) 20:27:47
>>822
ありがとうございます。これでいってみます。

832 :822:2005/05/22(日) 20:38:09
>>831
最初の数値を判定ルーチンに通すの忘れてたわ。
悪いけど修正しといて。

833 :821:2005/05/22(日) 21:34:12
ありがとうございまんこ

834 :デフォルトの名無しさん:2005/05/22(日) 21:37:08
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
無数の整数値が1行ずつ書かれたテキストファイルがる。
その個数よりも大きな整数型1次元配列変数int date[???]を用意し、これを読み込んだデータを大きい順に格納せよ。
さらに、時間反転した1次元配列を作成し、配列変数の中身をprintf文で出力せよ。
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:できれば早く。

よろしくお願いします。

835 :デフォルトの名無しさん:2005/05/22(日) 22:18:44
出題者を殴って来い

836 :デフォルトの名無しさん:2005/05/22(日) 22:48:18
>>834
簡単じゃん。一瞬で出来た。でもあげない。

837 :デフォルトの名無しさん:2005/05/22(日) 23:49:03
どなたか368番お願いします。

838 :デフォルトの名無しさん:2005/05/22(日) 23:59:17
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
aとnをに適当な値を代入してEn(a)=aE(n-1)(a)/n+aE(n-1)(a)を計算するプログラムを作成せよ。
(n-1)となっているのは、分子のほうも分母のほうもEの下付き文字です。
表示方法がわかりませんでした。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:できるだけ早くお願いします。
[5] その他の制限:


839 :デフォルトの名無しさん:2005/05/23(月) 00:08:38
>>838
> aとnをに適当な値を代入してEn(a)=aE(n-1)(a)/n+aE(n-1)(a)を計算するプログラムを作成せよ。
> (n-1)となっているのは、分子のほうも分母のほうもEの下付き文字です。

下付文字? 添字のことか? そういうときは[]で囲んで表示しろ。
その書き方ではどこがそうなのかわからん。

840 :デフォルトの名無しさん:2005/05/23(月) 00:13:56
>>838
あと、nの部分は
n→n-1→n-2→…→1→0→-1→-2
とどこまでも行くわけじゃないだろ?どこで止まって
どういう定義になってるか書いてくれなきゃ。

841 :デフォルトの名無しさん:2005/05/23(月) 00:15:24
>834
>時間反転した1次元配列
これ、読み込み順と逆順に、って意味かな?

とりあえず、前に行数を数える、ってのでてたからそれの応用でよいと思うんだが、
mallocとか使っていいのかな?

842 :デフォルトの名無しさん:2005/05/23(月) 00:18:11
>>838
*もちゃんと書け。添え字は[]にして()でしっかりと演算の順序を示せ。

843 :デフォルトの名無しさん:2005/05/23(月) 00:26:39
http://tool-ya.ddo.jp/2ch/trash-box/file/20050522223502265.txt
↑のプログラムはFord-Fulkersonのアルゴリズムで、
http://coconut.sys.eng.shizuoka.ac.jp/gn/resume11.pdf 参照)
幅優先探索を利用して最大フローを求めているものなのですが、
これを深さ優先探索を利用したプログラムに変更するには
どう変更すればいいのでしょうか?

評価する関数を作って最小の増大路を求めるプログラムに
しようとしたんだけど、結果が出てこなくてうまくいかず・・・
http://tool-ya.ddo.jp/2ch/trash-box/file/20050518233531212.txt

844 :デフォルトの名無しさん:2005/05/23(月) 00:30:05
>>843マルチなので生暖かく見守りながらスルーしてください

845 :デフォルトの名無しさん:2005/05/23(月) 00:32:20
>>368
こんなんでいいのか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/451.c

846 :デフォルトの名無しさん:2005/05/23(月) 00:33:39
>>843
マルチはやめてください

847 :834:2005/05/23(月) 00:36:27
>>841
たぶん、読み込み順と逆順であってるとおもいます。

mallocはまだ知りません…使わないでお願いします。

848 :デフォルトの名無しさん:2005/05/23(月) 00:39:45
>847
だとすると、行数の上限とか決まってるか?(問題文を全てさらせやゴルァ)
何行あるか調べてから配列を確保するためにはmalloc使うしか

849 :デフォルトの名無しさん:2005/05/23(月) 00:41:14
B=En(a)=aE[n-1](a)/n+aE[n-1](a)
この式は(n-1)の場合のBが求められれば、nの場合のBが求められることを意味している。
nが0ならBは1であるからE[0](a)=1となり、これを初期条件として順次nまで殖やして行けば
B=E[n](a)が計算できる。
となっています。
他のところではE[0](a)=1を初期条件にして、順次nを増加していけばよい。
とも書いてありました。
書き方が汚くてすいませんでした。

850 :デフォルトの名無しさん:2005/05/23(月) 00:41:18
んじゃcallocで

851 :デフォルトの名無しさん:2005/05/23(月) 00:43:41
問題文の書き方からして、c99を使えって事だろ。

852 :デフォルトの名無しさん:2005/05/23(月) 00:46:40
>851
C99って
int sz;
szに値をセット

int buffer[sz];

みたいな事ができるのか。。。

853 :デフォルトの名無しさん:2005/05/23(月) 00:48:11
>>849
aとnは適当な値なんだろ?
aE[n-1](a)ってなんだよ。
a*a*E[n-1]ってことか?それともa*E[(n-1)*a]ってことか?

854 :834:2005/05/23(月) 00:48:36
>>848
行数は>>805で数えれそうです。
>>841さんの言うとうり、805の応用だと思います。

855 :デフォルトの名無しさん:2005/05/23(月) 00:57:41
いや>805はダメだろw

856 :デフォルトの名無しさん:2005/05/23(月) 01:04:17
>852
エラー E2313 test.c 8: 定数式が必要
だって。。。orz

857 :デフォルトの名無しさん:2005/05/23(月) 01:06:34
>>856
はあ?C99でやってもか?

858 :デフォルトの名無しさん:2005/05/23(月) 01:10:09
単にC99非対応ってことだろ

859 :デフォルトの名無しさん:2005/05/23(月) 01:25:08
>>834
行数を数えてから、Cのソースを吐き
system()を使ってコンパイル後、出来たファイルを実行

860 :368:2005/05/23(月) 01:33:18
>>845
ありがとうございました。
完成に近づけそうなんですが、うまくコンパイルできずに
warning:assignment makes pointer from integer without a cast
というエラーが出るんですが・・・。
どう対処すればいいでしょうか?


861 :368:2005/05/23(月) 01:46:14
一応、実行できますが原因が知りたいです。

862 :デフォルトの名無しさん:2005/05/23(月) 01:47:53
>>368
エラーメッセージに行数は出てない?

863 :デフォルトの名無しさん:2005/05/23(月) 01:50:35
>>368
分かった。恐らく、
mat = malloc( sizeof(*mat) * num );
が原因なので、最初の行に以下を追加でOK
#include <stdlib.>

864 :デフォルトの名無しさん:2005/05/23(月) 01:50:51
intをポインタに明示的なキャストなしで代入してるけど大丈夫?

865 :デフォルトの名無しさん:2005/05/23(月) 01:52:16
hが抜けてしまった…
つーわけで、
#include <stdlib.h>

866 :デフォルトの名無しさん:2005/05/23(月) 02:06:54
H無しのincludeか。Cでの行為だと誉められたものではないな。

867 :デフォルトの名無しさん:2005/05/23(月) 02:32:16
CなのにHなしの行為。そんなプラトニック・ラヴ。

868 :デフォルトの名無しさん:2005/05/23(月) 03:09:27
>>866
.が入ってるよ

869 :デフォルトの名無しさん:2005/05/23(月) 03:23:48
>>849&838
やろうとおもったんだが、aの増加法則が良くわからない。
nはn++またはn--を繰り返すことだと思うんだが。
数学苦手なんで数式が読めない。

870 :デフォルトの名無しさん:2005/05/23(月) 03:50:43
>>849&>>838 
暇なのでこういうものを作ってみた。
穴埋め形式にしてみた、関数EまたはEnを書き換えて旨いことやってください。
数学苦手だから、全く間違ってることも無きにしも非ず。
#include <stdio.h>
double E(int n,double a){
    /*
    穴埋めだよ。
    このコメントは消しても支障ありません。
    *関数Eの中身を全て書き換えよう。
    ここから,
    */
    return 1;
    /*ここまで。*/
}
double En(int n,double a){
    return (a*E(n-1,a))/(n+a*E(n-1,a));
}
int main(){
    int n;
    double B,a;
    puts("Input n(as integer)");
    scanf("%d",&n);
    puts("Input a(as double)");
    scanf("%lf",&a);
    B=En(n,a);
    puts("B=En(a)=aE[n-1](a)/n+aE[n-1](a)");
    printf("%lf=B=E%d(%lf)\n",B,n,a);
    return 0;

}

871 :デフォルトの名無しさん:2005/05/23(月) 11:48:05
#include<stdio.h>
struct pencil{
int hardness;
char maker[10];
int number;};
void input(struct pencil[]);
void printout(struct pencil[]);
void main(void){
struct pencil p[3],q[3];
input(p);
q=p;
printout(q);}
void input(struct pencil p[]){
int i;
for(i=0;i<3;++i){
printf("\n input-hardness(int)=");
scanf("%d",&p[i].hardness);
printf("\n input-maker(char=1)=");
scanf("%s",&p[i].maker);
printf("\n input-number(int)=");
scanf("%d",&p[i].number);}
}
void printout(struct pencil q[]){
int i;
for(i=0;i<3;++i){
printf("\n input-hardness=%d",q[i].hardness);
printf("\n input-maker=%s",q[i].maker);
printf("\n input-number=%d\n",q[i].number);}
}
長くてすみません。このプログラムを動かすには、どう直せば動きますか?

872 :デフォルトの名無しさん:2005/05/23(月) 11:57:32
>>871
>q=p;

for (int i = 0; i < 3; ++i) {
q[i] = p[i];
}

873 :デフォルトの名無しさん:2005/05/23(月) 12:00:07
>>871
q=p;



#include <memory.h>

memcpy(q,p,sizeof(q));


874 :デフォルトの名無しさん:2005/05/23(月) 12:00:09
input(p);
q=p;

int i;
input(p);
for(i=0;i<3;i++)
    q[i]=p[i];
構造体自体のコピーは = のみでできるが配列に関しては
for文を使った方がいい。無論iの宣言も忘れない

scanf("%s",&p[i].maker); 

scanf("%s",p[i].maker);
自分も不勉強なのでアレだがポインタとアドレスを学び直せ

875 :デフォルトの名無しさん:2005/05/23(月) 12:01:54
>>872
ありがとうございますm(_ _)m

876 :デフォルトの名無しさん:2005/05/23(月) 12:27:08
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
1:
刻みを利用して0〜1の範囲でx^2の積分をせよ。
刻み101001000
台形
長方形1
長方形2
長方形3
1<2<3
台形:
Si=(Yi-1+Yi)*ΔX/2
Yi=pow(Xi,2)
Xi=Xi-1+ΔX
ΔX=1/n (n:刻みの数)
2:
半径1の四分円の面積を積分で導出し、πの値を近似せよ。
y=√(1-x^2)
%6.3f = インデント6文字、小数点以下3文字 " 0.357"(コンマ含め6字)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ(バージョン): VisualStudio.NET
 [3.3] 言語:C
[4] 期限:あさってまで
[5] その他の制限: 授業でやったサンプルうpしときます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/452.txt

877 :デフォルトの名無しさん:2005/05/23(月) 12:37:44
>>876
台形公式 でぐぐれ。

878 :デフォルトの名無しさん:2005/05/23(月) 12:49:34
#include<stdio.h>
struct pencil{
char namae[20];
int toshi;
int taijyuu;};
void input(struct pencil[]);
void printout(struct pencil[]);
void main(void){
struct pencil p[3],q[3];
int i;
input(p);
for (i=0;i<3;++i){
q[i] = p[i];}
printout(q);}
void input(struct pencil p[]){
int i;
for(i=0;i<3;++i){
printf("\n 名前=");
scanf("%s",&p[i].namae);
printf("\n 年齢=");
scanf("%d",&p[i].toshi);
printf("\n 体重=");
scanf("%d",&p[i].taijyuu);}
}
void printout(struct pencil q[]){
int i;
for(i=0;i<3;++i){
printf("\n 名前=%s",q[i].namae);
printf("\n 年齢=%d",q[i].toshi);
printf("\n 体重=%d\n",q[i].taijyuu);}
}
体重のところを実数でよみこむには、どうしたらいいんですか?

879 :デフォルトの名無しさん:2005/05/23(月) 13:02:13
pencil.taijyuuがintだからこのままでは整数でしか読めない
実数(というか浮動小数)を読み込むときは%fでなくて%lf あと>>874 
それと>>1くらい読め

struct pencil{ 
char namae[20]; 
int toshi; 
double taijyuu;};/* ここ */ 

printf("\n 名前="); 
scanf("%s",p[i].namae);/* ここ */
printf("\n 年齢="); 
scanf("%d",&p[i].toshi); 
printf("\n 体重="); 
scanf("%lf",&p[i].taijyuu);/* ここ */



880 :デフォルトの名無しさん:2005/05/23(月) 13:10:53
>>879
ありがとうございます。>>874>>1読んどきます。

881 :584:2005/05/23(月) 17:42:06
以前>>584以降でお世話になったものですが、まだ同じところで詰まっています。
584のファイルの状態で、

fscanf(fp,"%s%s%s%s", str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD);
を実行すると、
str[0]のAAA〜DDDそれぞれに入れるべき文字列が;も含めて全てstr[0].AAAに入ってしまいます。
そしてstr[1]に入れたいファイル2行目の文字列がstr[0].BBBに入っていくという具合です。

助言の通り
fscanf(fp,"%s;%s;%s;%s", str[0].AAA, str[0].BBB, str[0].CCC,str[0].DDD);
としてみますとやはりstr[0].AAAにファイルの1行目が全て入ってしまっています。
そしてこの場合str[0].BBB以下には何も格納されていませんでした。

あと文字列にスペースを含みたい場合があるのですが、
本来;のみで切りたいのですがそのスペースで格納場所が切れてしまうようです。
例えばaa a;bbb;ccc;dddとファイルに入れておくと4行目の実行文だと
str[0].AAAにaaが、str[0].BBBにa;bbb;ccc;dddが入ってしまうことになります。

かなり期限が迫ってきてあせっています…どうすれば正確に格納できるのでしょうか?

882 :デフォルトの名無しさん:2005/05/23(月) 17:58:28
>>881
fscanf(fp, "%[^;];%[^;];%[^;];%[^;]", ...);

883 :デフォルトの名無しさん:2005/05/23(月) 18:00:37
文字列に;を含みたくないときは%[^;]

884 :882:2005/05/23(月) 18:02:58
そうそう、>584のままなら%19[^;]にしたほうがいいかも知れず。

885 :584:2005/05/23(月) 18:07:00
>>882-884
早速のお返事、ありがとうございます!
疑問ばっかりで申し訳ないのですが、文字列指定のsはいらないのでしょうか?
また、スペースで勝手に区切られてしまうことも疑問として残っています。
あとこれからもc言語は使っていく予定ですので>>884の19の意味も教えていただけると幸いです。

886 :デフォルトの名無しさん:2005/05/23(月) 18:14:54
>>885
ここは丸投げスレであって質問スレではない。
ちなみに、「scanf 書式指定」でググるといいと思う。

887 :デフォルトの名無しさん:2005/05/23(月) 19:53:01
>>886
そんなこと言わずに教えてあげればいいじゃないか

888 :809:2005/05/23(月) 20:27:32
結局プログラムはこちらで手直しをしたら動くようになりましたが、
データの処理を正確に行ってくれません。
分割コンパイルの練習だと言われ、関数を細かく区切ってみたのですが、
sub指定の部分の分割方法が少し判らなくなってしまいました。
どのようにすれば良いのかお願いします。
[4] 期限:本日中
手直し版のコードはこれです。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/453.cpp

889 :デフォルトの名無しさん:2005/05/23(月) 20:50:44
>>888
分割コンパイルの例は>>180

890 :368:2005/05/23(月) 22:25:17
>>863
すんなりコンパイルできました。
ありがとうございました。
早くエラーメッセージ読めるようになるように修行します。

891 :デフォルトの名無しさん:2005/05/23(月) 22:30:02
>>830,849 ノーチェック
#include <stdio.h>
double e(int n,double a);
int main(){
int n;
double a;
puts("Input n(as integer)");
scanf("%d",&n);
puts("Input a(as double)");
scanf("%lf",&a);
printf("B=E[%d](%lf)\n",n,a, e(n, a));
return 0;
}
double e(int n,double a){ // 再起版
double before;
if(n == 0) return 1.0;
before = e(n-1,a);
return (a*before/(n+a*before));
}/*
double e(int n,double a){ // ループ版
int i;
double before;
before = 1.0;
for(i = 0; i < n; i++) {
before = a*before/((i+1)+a*before);
}
return before;
} */
>>870 穴埋めだとしても、それは酷い。(アドバイスではなくソースが)

892 :デフォルトの名無しさん:2005/05/23(月) 22:33:45
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
ファイルから読み込んだデータを、
if文を用いて、行数、文字数、単語数をカウントせよ。
文字や単語の区切りはスペース、タブ、改行。
(ASCIIコード表を参考にしなさい。)

[3] 環境 unix
 [3.1] OS: windows2000
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/
[4] 期限:2005年5月24日まで
[5] その他の制限:標準関数は使えません。

if文の組み合わせが分かりません。
ご教授お願いします。


893 :デフォルトの名無しさん:2005/05/23(月) 22:42:44
>>892はネタ?

[3] 環境 unix
 [3.1] OS: windows2000
[5] その他の制限:標準関数は使えません。

894 :デフォルトの名無しさん:2005/05/23(月) 22:44:35
[3] 環境 unix ←―――――┐
 [3.1] OS: windows2000 .←┘

環境の組み合わせが分かりません。
ご教授お願いします。


895 :892 :2005/05/23(月) 22:47:26
ネタじゃないです!
すみません間違えました!
お願いします!

896 :デフォルトの名無しさん:2005/05/23(月) 22:50:49
>>892
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/454.txt

897 :892:2005/05/23(月) 22:53:13
>>896ありがとうございます!!
これで卒業できます!!

898 :892:2005/05/23(月) 22:55:27
>>897
僕じゃありません。
お願いします!

899 :893:2005/05/23(月) 22:56:46
>>895
だったら間違いを訂正しろよ

どうやって標準関数無しでファイルから読み込むんだよ?
Unix なのか? Windows なのか?コンパイラは何だよ?

それにさっき気が付かずにスルーしちまったけど
 [3.3] 言語:C/ 
もおかしい
新しい言語ジャン!

900 :デフォルトの名無しさん:2005/05/23(月) 22:58:00
>>898
僕じゃありません。 
お願いします!(何を?

901 :892:2005/05/23(月) 23:01:47
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
ファイルから読み込んだデータを、
if文を用いて、行数、文字数、単語数をカウントせよ。
文字や単語の区切りはスペース、タブ、改行。
(ASCIIコード表を参考にしなさい。)

[3] 環境
 [3.1] OS:unix
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:2005年5月24日まで
[5] その他の制限:

if文の組み合わせが分かりません。
ご教授お願いします。

何度もすみません。
これでお願いします。


902 :893:2005/05/23(月) 23:05:16
結局>>901はネタか...

標準関数を使えるなら俺でもできると思ったのになぁ…
質問に答えないなら俺も粘着する必要はないわ。

じゃね

903 :892:2005/05/23(月) 23:06:38
>>902
すみません。
標準関数使ってください。

904 :645:2005/05/23(月) 23:23:49
>>901
> 文字や単語の区切りはスペース、タブ、改行。

ということは、文字と単語は同じものを表しているわけだな?

905 :892:2005/05/23(月) 23:27:56
>>904
そうです。
説明足らなくてすみません。

906 :デフォルトの名無しさん:2005/05/23(月) 23:47:26
ダメだこりゃ。

907 :デフォルトの名無しさん:2005/05/23(月) 23:50:28
質問するやつも、すこしは頭つかえよぉ。

908 :デフォルトの名無しさん:2005/05/23(月) 23:51:29
そろそろ次スレの話題をいいかい?
テンプレの変更を提案したいのだが。

>・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
>・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
「後から問題に付け足しする必要が無いよう、最初から全ての条件を書きましょう。」
みたいに纏められんかね?まぁこれは纏めないでも構わないんだが

>[1] 授業単元:
不要じゃね?

>[4] 期限:yyyy年mm月dd日hh:mmまで または 無期限 のいずれか
んで1番のテーマはこれ。「できるだけ早く」とかを禁止にしないか?
人に物を頼む態度とは思えん。締め切りとは別に急いでほしければ
締め切りを偽ればいい(ということに気づかないアホ)だけじゃないか。

909 :デフォルトの名無しさん:2005/05/24(火) 00:08:14
>>901
入力は標準入力から
文字数に関しては、アルファベットと数字だけカウント
文字と空白以外は、無かった事になるので
必要な記号等はisLetter()に付け足してね

#include <stdio.h>
#include <ctype.h>

int isLetter ( int c ) {
  return isalnum ( c ) ; } /* 必要な文字を付け足す */

int isLine ( int c ) {
  return ( c == '\n' ) ; }

int isSpace ( int c ) {
  return ( c == ' ' ) || ( c == '\t' ) || ( c == '\n' ) ; }

int main() {
int c, Line, Word, Letter, Sflag ;
Line = Word = Letter = 0, Sflag = 1 ;
while ( ( c = fgetc ( stdin ) ) != EOF ) {
  if ( isLine ( c ) ) Line ++ ;
  if ( isSpace ( c ) ) Sflag = 1 ;
  if ( isLetter ( c ) ) Wrod += Sflag, Sflag = 0, Letter ++ ; } }
printf ( "Line: %d\nWord: %d\nLetter: %d\n", Line, Word, Letter ) ;
return 0 ; }

910 :デフォルトの名無しさん:2005/05/24(火) 00:11:25
>>905
>人に物を頼む態度とは思えん。
別に構わんと思うけどね。
解きたい奴が勝手に解いてるだけで、頼むも何もないだろ。

911 :892:2005/05/24(火) 00:14:42
>>909
誠にありがとうございます。
感謝します。

912 :デフォルトの名無しさん:2005/05/24(火) 00:14:59
>>911
かな入力のテンキー派?

913 :892:2005/05/24(火) 00:17:16
>>912
違いますが。
なぜですか?

914 :デフォルトの名無しさん:2005/05/24(火) 00:18:25
>>909
問題文があいまいだから・・・なんとも言えませんが
行の先頭にスペースや改行やタブがくること考えなくてよいのかな?

915 :デフォルトの名無しさん:2005/05/24(火) 00:19:59
>>914
自己レスで、
改行・スペース・タブが2連続とか

916 :デフォルトの名無しさん:2005/05/24(火) 00:20:41
[1] 授業単元:プログラム演習
[2] 問題文:1から100までの整数の内、素数をすべて表示し、かつその個数も表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Win(MinGW)
 [3.2] コンパイラ(バージョン):gcc 3.4.2
 [3.3] 言語:C
[4] 期限:5月30日
[5] その他の制限:特になし

917 :892:2005/05/24(火) 00:20:43
すみません。
行の頭にはスペース、改行、タブはありません。
本当何かすみません。

918 :デフォルトの名無しさん:2005/05/24(火) 00:21:50
見てて思ったんだが。

1)質問するときのマナー(2chで言うのもなんだが)
回答してくれる人にチャチャ入れるのは、やめましょう。
回答する人はエスパーではないので、問題文は、全文書きましょう。
初見の人にもわかるよう必要なら補足を入れましょう。

2)こういう質問は別スレでは?
Windowsのプログラム、Unixのプログラム。グラフィック、通信、マルチスレッドなどの処理。
「どういう理由で動いているのですか?」「どうしてそうなるのですか?」
「xxxの処理をするにはどうしたらいいですか?」

3)あれば幸せになるかもしれない情報
使っている教科書と進度。・・・まだ習ってません、やさしく書き直してください。っちゅーのはちっとね。

919 :デフォルトの名無しさん:2005/05/24(火) 00:37:34
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 自分の姓名(例 "Tarou Yamada")を表示せよ。ただし配列a[]を用いてこれを文字列で初期化し、1文字ずつ出力せよ。さらにポインタpを用いて、同様に1文字ずつ出力せよ。
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C言語
[4] 期限:無期限

わからなくて困ってます皆さんお願いします。


920 :デフォルトの名無しさん:2005/05/24(火) 00:38:40
>>916
#include <stdio.h>

int main(int argc, char *argv[])
{
puts("2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97");
puts("25 個");
return 0;
}

921 :デフォルトの名無しさん:2005/05/24(火) 00:41:37
>>919
お前は単位落とせ。
いくらなんでも基本杉だろ。

922 :デフォルトの名無しさん:2005/05/24(火) 00:43:28
1] 授業単元: ポインタ応用
[2] 問題文(含コード&リンク):
1.p="hellow"をmain()関数で行い、関数void disp(char *moji,int kaisu)で5回表示するプログラム(pはポインタ関数で、因数はアドレスと回数とする)
2.要素数100の配列TBLの先頭アドレスと要素数を因数にして、関数void init_data(int *hyo,int kosu)でゼロクリアする。(結果はmain関数で出力)
3.関数void swap(int *a,int *b)で値を入れ替える。結果はmain関数にて出力.
[3] 環境
 [3.1] OS:NT
 [3.2] コンパイラ(バージョン):c++5
 [3.3] 言語:C言語
[4] 期限:2.3日以内

よろしくおねがいします

923 :デフォルトの名無しさん:2005/05/24(火) 00:43:31
>>920
それが現実的だね

924 :デフォルトの名無しさん:2005/05/24(火) 00:45:42
>>919
#include <stdio.h>
int main(int argc, char *argv[])
{
char a[] = "Tarou Yamada";
char *p = a;
while(*p)
putchar(*p++);
putchar('\n');
return 0;
}

925 :デフォルトの名無しさん:2005/05/24(火) 00:46:36
>>922
その問題文はそれで合ってるのか?

926 :デフォルトの名無しさん:2005/05/24(火) 00:47:57
>>919
配列 a からの直接出力が抜けてた。

#include <stdio.h>
int main(int argc, char *argv[])
{
char a[] = "Tarou Yamada";
char *p = a;
int i;
for(i = 0; i < sizeof(a) / sizeof(*a); i++)
putchar(a[i]);
putchar('\n');
while(*p)
putchar(*p++);
putchar('\n');
return 0;
}

927 :デフォルトの名無しさん:2005/05/24(火) 00:48:00
一応次スレ用テンプレ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/455.txt

-----で区切って投稿して下さい。最後のは愚痴なのでのせるかどうかが次スレの>>1に任せます
あと次スレ立てとかも(>>950以降最初の依頼者以外の人とか)テンプレに入れた方がいいかなぁ

928 :デフォルトの名無しさん:2005/05/24(火) 00:50:16
> p="hellow

( ゚д゚)

> [3.2] コンパイラ(バージョン):c++5

( ゚д゚)…

929 :デフォルトの名無しさん:2005/05/24(火) 00:51:40
>>927
> ぼるじょあ

( ゚д゚)・・・

930 :デフォルトの名無しさん:2005/05/24(火) 01:07:46
goo辞書より
>ひきすう 【引き数】
>〔argument,引数とも書く〕
>⇒パラメーター

>いんすう 【因数】
>整式が、幾つかの整式の積の形で表されているとき、その各構成要素をいう。また、整数の約数のこともいう。




931 :デフォルトの名無しさん:2005/05/24(火) 01:12:55
用語にはすべてヒラガナをふってもらいたい。

932 :デフォルトの名無しさん:2005/05/24(火) 01:23:27
わがままだな

933 :922:2005/05/24(火) 01:32:22
>>925
問題文はあってます。hellowって書いてあるのでいいかと思いますw多分ミスタイプの印刷だと思うんですが

コンパイラはどうかけばいいのかわかんないですが ビジュアルスタジオデベロッパーのC++ 5.0だったとおもいます

934 :デフォルトの名無しさん:2005/05/24(火) 01:46:50
[1] 授業単元:C言語実習
[2] 問題文:
キーボードから正の整数nを入力して、1辺の長さがn以下の直角三角形の組を全て求めよ。(三重forループを使うこと。)
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ(バージョン):VC++
 [3.3] 言語:C
[4] 期限:今日中におねがいします。

935 :デフォルトの名無しさん:2005/05/24(火) 01:48:28
>>922
問題文が怪しいので出題者の意に沿っているかどうかは知らない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/456.txt

936 :デフォルトの名無しさん:2005/05/24(火) 01:53:37
>>922
1.

#include <stdio.h>

void disp(char *moji,int kaisu)
{
while(kaisu--)puts(moji);
}

int main(void)
{
char *p = "hellow";
disp(p,5);
return 0;
}

937 :デフォルトの名無しさん:2005/05/24(火) 01:57:18
>>934
#include <stdio.h>

int main( void )
{
int n;
int count1, count2, count3;

printf( "長さ:");
scanf( "%d", &n );

for( count1=1; count1<=n; count1++ )
for( count2=count1; count2<=n; count2++ )
for( count3=count2; count3<=n; count3++ )
if( count3*count3 == count1*count1 + count2*count2 )
printf( "%d %d %d\n", count1, count2, count3 );

return 0;
}

938 :デフォルトの名無しさん:2005/05/24(火) 01:59:42
>>934
>キーボードから正の整数nを入力して、1辺の長さがn以下の直角三角形の組
無数に存在しますが…

939 :デフォルトの名無しさん:2005/05/24(火) 02:00:54
>>922
C++なら問題文の通りのものが作れるんだけどなぁ

#include <cstdio>
struct foo {
  char* m_text;
  char* operator ()() {
    return m_text;
  }
  void operator =(char* text) {
    m_text = text;
  }
} p;
void disp(char *moji,int kaisu) {
  int i;
  if (!moji) return;
  for (i = 0; i < kaisu; i++) std::printf(moji);
}
int main(int argc, char** argv) {
  p = "hellow";
  disp(p(), 5);
  return 0;
}


940 :デフォルトの名無しさん:2005/05/24(火) 02:03:04
まじでポインタ関数にしたのかw

941 :デフォルトの名無しさん:2005/05/24(火) 02:08:12
>>922
2.

#include <stdio.h>

#define N 100

void init_data(int *hyo,int kosu)
{
while(kosu)hyo[--kosu]=0;
}

int main(void)
{
int i,TBL[N];
/* ゼロクリアする前 */
for(i=0;i<N;i++){
printf("%d",TBL[i]);
if(i%10==9)printf("\n");/* 適当に改行 */
}
printf("\n");
init_data(TBL,N);
/* ゼロクリアした後 */
for(i=0;i<N;i++){
printf("%d",TBL[i]);
if(i%10==9)printf("\n");/* 適当に改行 */
}
return 0;
}

942 :デフォルトの名無しさん:2005/05/24(火) 02:11:42
>>922
3.

#include <stdio.h>

void swap(int *a,int *b)
{
int tmp;
tmp = *a;*a = *b;*b = tmp;
}

int main(void)
{
int a=3,b=4;
printf("a=%d b=%d\n",a,b);
swap(&a,&b);
printf("a=%d b=%d\n",a,b);
return 0;
}


943 :934:2005/05/24(火) 02:13:41
>>937
素早い対応ありがとうございます。
countはまだ習っていないのですが、別のことに言い換えるとどんな意味になりますかね?

944 :デフォルトの名無しさん:2005/05/24(火) 02:15:26
( ゚д゚) …

945 :934:2005/05/24(火) 02:28:54
aa 自己解決しますた

あとそれを関数にするとどうなりますかね?
なんか警告がやたら出て結果が出ないんですが・・

946 :デフォルトの名無しさん:2005/05/24(火) 02:34:40
>>934 >>945
関数化を要求されていますか?
警告が出るなら、そのコピペを書きましょうね。

947 :デフォルトの名無しさん:2005/05/24(火) 02:41:05
>>943
1文字変数ばかり使うセンコーはクズと思って間違いない

948 :934:2005/05/24(火) 02:41:50
>>946すいません
関数で表現する単元でした。


949 :934:2005/05/24(火) 02:53:23
C:\Documents and Settings\Owner\デスクトップ\Cpp3.cpp(11) : warning C4700: 値が割り当てられていないローカルな変数 'count3' に対して参照が行われました。
C:\Documents and Settings\Owner\デスクトップ\Cpp3.cpp(11) : warning C4700: 値が割り当てられていないローカルな変数 'count2' に対して参照が行われました。
C:\Documents and Settings\Owner\デスクトップ\Cpp3.cpp(11) : warning C4700: 値が割り当てられていないローカルな変数 'count1' に対して参照が行われました。
C:\Documents and Settings\Owner\デスクトップ\Cpp3.cpp(18) : warning C4700: 値が割り当てられていないローカルな変数 'n' に対して参照が行われました。


950 :デフォルトの名無しさん:2005/05/24(火) 02:56:45
( ゚д゚) < ソンナヴァカナ!

951 :デフォルトの名無しさん:2005/05/24(火) 02:58:53
>>949
自分で改造したプログラムで出た警告じゃないのか?

952 :934:2005/05/24(火) 03:00:53
たびたびすいません。結果は出るのですが警告が出るのでちょとみてもらえませんか?

#include <stdio.h>

void san(int, int, int, int);

int main(void)
{
int n;
int count1, count2, count3;
printf("n -> ");
scanf("%d", &n);
printf("1辺の長さが%d以下の直角三角形の組は\n", n);
san(n, count1, count2, count3);
return 0;
}

void san(int n, int count1, int count2, int count3)
{
for(count1=1; count1<=n; count1++ )
for(count2=count1; count2<=n; count2++ )
for(count3=count2; count3<=n; count3++ )
if(count3*count3 == count1*count1 + count2*count2 )
printf("%d %d %d\n", count1, count2, count3);
}



953 :デフォルトの名無しさん:2005/05/24(火) 03:04:24
>952
sanに渡してるcount1, count2, count3は何のつもり?

954 :934:2005/05/24(火) 03:07:28
>>953
参考になりありがとうございました。
解決しますタ

955 :デフォルトの名無しさん:2005/05/24(火) 11:47:30
課題: 入力した数の2進数表示を「1桁目から逆に表示する」プログラム。
2 --> 0 1 ( 0 1 0 でもよい )
3 --> 1 1 ( 1 1 0 でもよい )
4 --> 0 0 1 ( 0 0 1 0 でもよい )
5 --> 1 0 1 ( 1 0 1 0 でもよい )

おねがいします

956 :デフォルトの名無しさん:2005/05/24(火) 12:08:27
>>955
#include <stdio.h>

int main( void );
{
int val, bin;

scanf( "%d", &val );

while( val ){
(int)1 & val ? putchar( '1' ): putchar( '0' );
val = val >> 1;
}
puts("");
return 0;
}

957 :デフォルトの名無しさん:2005/05/24(火) 12:15:24
最後に0を出すと 0 のときもそのままいけるね

958 :デフォルトの名無しさん:2005/05/24(火) 12:18:04
【質問テンプレ】
[1] 授業単元: プログラミング1
[2] 問題文:
■■ネットワークプログラミング■■

2台のマシン(tokiとken)でソケットを用いた通信を行ってもらいます.
以下に送信側と受信側の動作を説明します.

・送信側
アルファベットのみで構成された文字列を1文字ずつ読み込みます(任意のファ
イルから文字列を読み込んでもよい).
そして,シーケンス番号と共に構造体に格納し,ソケットを用いて受信側に
送信する.
 
・受信側
  受信したデータををAckとして,シーケンス番号と受信した文字を変換した
  小文字なら大文字に,大文字なら小文字に)文字を構造体に格納し,送信側へ
  送信する.

送信側では,受信用プロセスと,送信用プロセスを用意してください.
通信には,UDPを用い,ポート番号は1万+学籍番号の下3桁(10111など)と
 2万+学籍番号の下3桁(20111など)を使ってください.


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:5月26日まで

よろしくお願いします。

959 :デフォルトの名無しさん:2005/05/24(火) 12:18:54
>>956のままだと、"0"入力時表示されんぞ。

960 :デフォルトの名無しさん:2005/05/24(火) 12:32:50
そこで do while の出番だな

961 :デフォルトの名無しさん:2005/05/24(火) 12:37:49

int main()
{
char out[33];
int indx=0,bi=0;
printf("input :");
scanf("%d",&bi);
if(bi==0)
out[indx++]='0';
else
for(int i=0;i<32;++i,bi>>=1)
if(bi & 0x00000001)
out[indx++]='1';
else if( bi & 0xFFFFFFFE)
out[indx++]='0';
out[indx]='\0';
printf("%s\n",out);
return 0;
}



962 :デフォルトの名無しさん:2005/05/24(火) 12:52:04
くどいし冗長

963 :デフォルトの名無しさん:2005/05/24(火) 13:39:11
#include<stdio.h>

void main()
{
int i,j,k;
k=0;
for(i=2;100;i++){
for(j=2;i;j++){
if((i%j)==0){
print(i," ");
k++
}
}
}
print(\n);
print("there are ",k, " prime numbers");
}



>>916
文法はちがってるかも試練
Cなんて5年いじょうしてないし

964 :デフォルトの名無しさん:2005/05/24(火) 13:41:04
>>963
これだけ作るのに半日かかったのか。もうやめとけ。お前はよく頑張った。

965 :デフォルトの名無しさん:2005/05/24(火) 13:44:10
#include<stdio.h>

void main()
{
int i,j,k;
k=0;
for(i=2;100;i++){
for(j=2;i;j++){
if((i%j)==0){
printf("%d ",i);
k++;
}
}
}
printf("\n");
printf("there are %d prime numbers",k);
}

多分こっちかな



966 :デフォルトの名無しさん:2005/05/24(火) 13:45:33
>>964
五分だけど?
アルゴリズム自体は30秒か

何で反日?

967 :デフォルトの名無しさん:2005/05/24(火) 13:48:49
>>252>>477

おねがいします

968 :デフォルトの名無しさん:2005/05/24(火) 13:49:40
>>966
出題が半日前だから、>>964はそう思ったんじゃ?
>>963が間違っているしね。>>965で直ってるけど。

969 :デフォルトの名無しさん:2005/05/24(火) 13:51:47
>>968
なるほど
さすがに5年以上触ってない言語の文法は
覚えられん、、、

一応HPみてなおしてみた
間違ってるだろうと思ったんで

970 :デフォルトの名無しさん:2005/05/24(火) 13:54:19
久しぶり久しぶりって少しウザい
なんでそんな曖昧な状態で解答しようと思ったんだ

971 :デフォルトの名無しさん:2005/05/24(火) 13:59:28

いいじゃん、べつに、>>916
が可哀想だろ

俺も5年ぐらい前におなじことされて傷ついたからな

アルゴリズムが分からないなら
文法少々間違ってても分かるだろ

972 :デフォルトの名無しさん:2005/05/24(火) 14:08:09
間違ったものを、「これが答えです」と質問者に渡すのは問題ではないか

973 :デフォルトの名無しさん:2005/05/24(火) 14:13:17
一応、直したじゃん
それに、「文法は間違ってるかも知れない」と
「これが答えです」は違う。
まあ主論はそんな事よりも、「俺が気にくわない奴である」って
事だろうから、
(まあ俺も>>920のような真似は気にくわないと言う動機だけど)
ごちゃごちゃ言うのはやめておく、サラバ

974 :デフォルトの名無しさん:2005/05/24(火) 14:14:52
>>971
あんな問題ができないままだと、これからも>>916は人に聞き続けることになる
中途半端な助けは相手のためにならない
それに>>965のコードも直しきれてない


まあ漏れもあほな質問して叩かれたことあるけど

975 :デフォルトの名無しさん:2005/05/24(火) 14:26:19
質問です。学生番号、氏名、点数を入力して表示するプログラム
なんですが以下のように作って実行したら
printf("学生番号,氏名,点数=");
scanf("%d,%s,%d",&no,&name, &score);
printf("私の名前は%sです\n",name);
printf("%d,%d\n",no,score);
scoreの値が文字列として認識されてしまうのですが区別して
もらうにはどうすればよいのでしょうか?

976 :デフォルトの名無しさん:2005/05/24(火) 14:29:35
その前にnameが(ry

977 :デフォルトの名無しさん:2005/05/24(火) 14:33:22
>>975
scanf("%d %s %d",&no,&name,&score);

978 :デフォルトの名無しさん:2005/05/24(火) 14:39:56
>>976
nameはchar name[20]と宣言してみたのですが…
>>977
それでやってみましたが駄目でした…。

979 :966=977:2005/05/24(火) 14:46:14
>>978
scanf("%d %s %d",&no,name,&score);
入力するときはエンターで区切ってね

980 :967=977:2005/05/24(火) 14:48:44
名前間違えたorz

>>979
スペースで区切ってもいける

981 :デフォルトの名無しさん:2005/05/24(火) 14:48:57
>>958

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#define IDNUM 100
#define false 0
#define true 1

#define HOST1 "toki"
#define HOST2 "ken"

struct data { int seq; char ch; };
enum role { SENDER = 1, RECEIVER = 2, REFLECTOR = 3 };

in_addr_t get_dstaddr(int role)
{
struct hostent* hent = gethostbyname(role == REFLECTOR ? HOST1 : HOST2);
return hent ? *(in_addr_t*)hent->h_addr_list[0] : 0;
}

void init_sin(struct sockaddr_in* sin, in_addr_t addr, int port)
{
sin->sin_family = AF_INET;
sin->sin_addr.s_addr = addr;
sin->sin_port = htons(port);
}


982 :976=977:2005/05/24(火) 14:49:20
また間違えたo...rz

983 :デフォルトの名無しさん:2005/05/24(火) 14:49:25
>>979
できました!ありがとうございました!!

984 :デフォルトの名無しさん:2005/05/24(火) 14:49:59
(981の続き)

int main(int ac, char** av)
{
int role, sock, value;
struct sockaddr_in sin1, sin2;
struct data data = {0};

role = SENDER;
if (strstr(av[0], "reflector")) role = REFLECTOR;
else if (strstr(av[0], "receiver")) role = RECEIVER;

sock = socket(AF_INET, SOCK_DGRAM, 0);
value = true;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));

init_sin(&sin1, get_dstaddr(role), 10000 * (role/3+1) +IDNUM);
init_sin(&sin2, INADDR_ANY, 10000*(2-role/3) + IDNUM);
if (role & 2)
bind(sock, (struct sockaddr*)&sin2, sizeof(sin2));



985 :デフォルトの名無しさん:2005/05/24(火) 14:51:36
>>975
scanf( "%d,%[^,],%d", &no, name, &score );

カンマ区切りで文字列を取得する時はこうだろ。

986 :デフォルトの名無しさん:2005/05/24(火) 14:51:42
(981,984の続き)

while (true) {
(role&2) ? recv(sock, &data, sizeof(data), 0) : (data.ch = getchar());
if (role == SENDER)
data.seq = htonl(ntohl(data.seq)+1);
else if (role == REFLECTOR)
data.ch = islower(data.ch) ? toupper(data.ch) : tolower(data.ch);
else if (role == RECEIVER)
printf("%d %c\n", ntohl(data.seq), data.ch);
if (role & 1)
sendto(sock, &data, sizeof(data), 0,
(struct sockaddr*)&sin1, sizeof(sin1));
}
return 0;
}

適当にコンパイルして、
実行形式をsender, receiver, reflectorにlnして実行。
sender, seceiverがtoki, reflectorがkenな。

987 :デフォルトの名無しさん:2005/05/24(火) 14:57:01
C/C++の宿題を片付けます 44代目
http://pc8.2ch.net/test/read.cgi/tech/1116914132/

988 :デフォルトの名無しさん:2005/05/24(火) 15:08:35
>>916

#include<stdio.h>

int main(void)
{
int i,j,k,l;
k=0;
l=0;
for(i=2;i<100;i++){
for(j=1;j<i;j++){
if((i%j)!=0){
l++;
}
}
if(l==(i-2)){
printf(" %d",i);
}
l=0;
}
printf("\n");
printf("there are %d prime numbers",k);
return 0;
}

全然違ったわOrz
やはり>>974の言う通り一度コンパイルしてみるべきだな

まあ、一理あるが、教えた場合が効率がよい場合と
ある程度突き放すべき場合とあるが

馬鹿にしてやる気無くさせるのは余り効率として良くないと思う。

989 :デフォルトの名無しさん:2005/05/24(火) 15:11:52
あまったれるな

990 :デフォルトの名無しさん:2005/05/24(火) 15:16:10
まるまる答えてどうなるかなんて、その質問者次第。
そして、そんな事はオレの知った事じゃない。

991 :デフォルトの名無しさん:2005/05/24(火) 15:16:45
すきにしてくれ

992 :デフォルトの名無しさん:2005/05/24(火) 16:29:37
甘ったれてる香具師に手を差し伸べてばかりいると、チョンやチャンコロ
みたいになるだけだぞ。

993 :デフォルトの名無しさん:2005/05/24(火) 16:35:31
甘ったれてる奴に答えを教えて腑抜けにしているだけですが何か?

994 :デフォルトの名無しさん:2005/05/24(火) 16:35:59
脳みそコネコネ

995 :デフォルトの名無しさん:2005/05/24(火) 16:36:37
ウホ。

996 :デフォルトの名無しさん:2005/05/24(火) 16:41:59
お茶うまうま

997 :デフォルトの名無しさん:2005/05/24(火) 16:43:46
埋蔵金埋め埋め

998 :デフォルトの名無しさん:2005/05/24(火) 16:44:03
Yes!MY雑巾。

999 :デフォルトの名無しさん:2005/05/24(火) 16:44:32
ちゃうがな。

1000 :デフォルトの名無しさん:2005/05/24(火) 16:46:15
埋めるなボケ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

342 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)