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

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

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

1 :デフォルトの名無しさん:2008/10/01(水) 07:28:51 ?PLT(18888)
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

前スレ
C/C++の宿題を片付けます 115代目
http://pc11.2ch.net/test/read.cgi/tech/1217741118/

2 :デフォルトの名無しさん:2008/10/02(木) 20:58:34
age

3 :kazu:2008/10/02(木) 22:50:19
独学ではじめた者です。
練習問題
・数値を複数回入力し、最後に"END"と入力された後、それぞれに対し
80以上なら"verygood"、80未満で60以上なら"good"、60未満なら"normal"
と表示されるプログラムを作成しなさい。

例) 25(enter押下)
   90(enter押下)
   73(enter押下)
   END (enter押下)


   25 normal
   90 verygood
   73 good

という問題なんですが、
正解が分かりません。


本にはヒントとして
1 文字の入力にはgets()という標準関数を使用する。
2 "END"との比較にはstrcmp()という標準関数を使用する。
3 文字を数値に変換するには、atoi()という標準関数を使用する。
4 繰り返し文(for、while文)とbreak文
と載っていました。
どなたか教えていただけないでしょうか?
よろしくお願いします。


4 :デフォルトの名無しさん:2008/10/02(木) 22:51:59
>>3
マルチ死ね

5 :デフォルトの名無しさん:2008/10/02(木) 22:58:09
6 名前: ◆7W9NT64xD6 Mail: sage 投稿日: 2008/08/04(月) 17:31:05
[1]C言語応用
[2]2chの掲示板のdatファイルを解析して、レスストリーム(後述)に分解し、
フレーム付きのページで、ストリーム単位に閲覧することができるような
HTMLファイルを生成する。Windows/Linux/MacOS共に対応し、コマンドラインで
スレURLを与えれば、カレントディレクトリに、取得した時点のYYYYMMDDHHMMSS形式の
名称のディレクトリを作り、そこにフレーム付きページを生成する。
☆レスストリーム
(1)同一スレの別のレスへのアンカーを含まないレスは単一のストリームに含まれる、その
ストリームの代表レスとなる。
(3)同一スレの別のレスへのアンカーを含むレスは、指しているレスが所属するストリーム
のすべてに含まれる。
※一つのレスが複数のストリームに含まれることはあり得る。
[3] Windows/Linux /MacOS/gcc/C言語が望ましいがC++でも可
[4] 7月中でしたが8月中に変更

6 :デフォルトの名無しさん:2008/10/02(木) 23:00:59
>>3
マルチに答えるのもアレだが


そこまでヒントがあって組めないのはな…
基礎学力の向上がいるだろ。

7 :デフォルトの名無しさん:2008/10/03(金) 00:00:29
1000 名前:デフォルトの名無しさん[sage] 投稿日:2008/10/02(木) 20:26:11
では遠慮なく

1000ならオレ様勝手にレベルアップ

おめ

8 :デフォルトの名無しさん:2008/10/03(金) 00:50:51
>>3
マルチに言うのもなんだが、まずどこで躓いてるのか書かないと答えようがない

9 :デフォルトの名無しさん:2008/10/03(金) 01:11:21
>>3
マルチすんなボケ

10 :デフォルトの名無しさん:2008/10/03(金) 01:13:09
そのマルチ先ですでに回答されてるけどねw

11 :デフォルトの名無しさん:2008/10/03(金) 01:42:30
[1] 授業単元: C
[2] 問題文: 3問あります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm←7748
[3] 環境
 [3.1] OS:WindowsXP
 [3.2]コンパイラ名とバージョン:Visual studio
 [3.3] 言語:C
[4] 期限:本日13:00まで
[5] その他の制限:特になし

よろしくお願い致します

12 :デフォルトの名無しさん:2008/10/03(金) 02:09:13
[1] 授業単元: デジタル信号処理
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7749.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月7日17:00
[5] その他の制限:

"数字を縦に羅列したテキストファイルを作り"とありますが、数字の内容、個数、は自由で結構です。
もしめんどくさければ、配列を使うなどしてプログラム内に元の数字を埋め込んじゃってもかまいません。
ずうずうしい注文ですみません。なんとかお願いできませんでしょうか?


13 :デフォルトの名無しさん:2008/10/03(金) 03:15:23
>>11
このぐらい参考書読んだらすぐ出来るっしょ

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

14 :デフォルトの名無しさん:2008/10/03(金) 10:02:25
>>12
各行ごとに説明ってやる気をなくす問題だなw
いっそう無理矢理数行にして・・

15 :デフォルトの名無しさん:2008/10/03(金) 10:06:38
>>14
4行でいけるなw

#include<〜> /*ヘッダファイルを読み込む*/
void dft(〜){ 1行で } /*フーリエ変換を行う*/
void idft(〜){ 1行で } /*逆フーリエ変換を行う*/
main(){1行で} /*メイン関数*/


16 :デフォルトの名無しさん:2008/10/03(金) 11:11:25
>>14
すみません、全部でなくとも大事なとこにだけ説明を入れてもらえれば大丈夫です。

17 :デフォルトの名無しさん:2008/10/03(金) 16:00:46
>>16
フーリエ変換といってもFFTなのかDFTでいいのか
どちらにしても検索したらソースたくさんあるからググってみれ

18 :デフォルトの名無しさん:2008/10/03(金) 17:47:43
[1] 授業単元:アルゴリズム概論
[2] 問題文:システムを想定せよ
[3] 環境
 [3.1] OS:WindowsXP
 [3.2]コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:明日
[5] その他の制限:特になし

19 :デフォルトの名無しさん:2008/10/03(金) 18:23:50
>>18
あまりにも漠然とし過ぎててワロタwww

20 :デフォルトの名無しさん:2008/10/03(金) 18:42:48
>>18
最近は課題で妄想させるのかw

21 :デフォルトの名無しさん:2008/10/03(金) 20:48:48
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
ファイルからいくつかの0以上の整数を読み込み,小さい整数から順に並び替えて,
その結果をファイルに保存するプログラムを作成せよ.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: ([2008年10月5日24:00まで] または [無期限] のいずれか)
[5] その他の制限: 二分木まで習ってます。
ファイルは入力ファイル、出力ファイルの順にコマンドラインの引数で指定する。
一旦ファイルに記述された並びの通りにリストを作成して,
リストを作成した後にソートを実行すること
入力できる数値データの個数の上限は(メモリが確保できる限り)ない.
数値と数値の区切りにはコンマ(,)を使用せよ。
数値データに数字以外の文字が含まれていた場合,エラーを出力して終了する.

どうかおねがいします。

22 :21:2008/10/03(金) 20:51:33
ごめんなさい、期限は2008年10月5日24:00までです。
無期限ってのを消すの忘れてました。

23 :デフォルトの名無しさん:2008/10/03(金) 21:11:21
>>21
ソートの種類は指定されてないの?

24 :デフォルトの名無しさん:2008/10/03(金) 21:17:00
>>21
リストって一般名詞的な意味じゃなくて
ポインタ使って連結してるあのリストのことでおk?


25 :21:2008/10/03(金) 21:51:13
>>23
とくに指定されてなかったと思います。
>>24
はい、そのリストです。
宜しくお願いします。

26 :デフォルトの名無しさん:2008/10/03(金) 23:04:30
>>18
H/W Express5800/110Ge
O/S Windows Server 2003
M/W Oracle10g 10.2.0
W/S IIS6.0


27 :デフォルトの名無しさん:2008/10/03(金) 23:14:28
>>26
DBMSってミドルウェアに含まれるの?

28 :デフォルトの名無しさん:2008/10/03(金) 23:26:16
>>26
> M/W Oracle10g 10.2.0
MS SQL Server 2005にしようよ。

29 :デフォルトの名無しさん:2008/10/03(金) 23:27:31
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  ★以下の仕様を満たすプログラムをC言語で作成しなさい。
  【仕様】座席予約簡易プログラム
  
  ▽通路を挟んだ5行×5列(1−1〜5−5まで)の座席がある列車の座席を予約・キャンル
   するプログラムを作る。
  ▽メニューは、「予約」「キャンセル」「終了」の3種類とする。
  ▽空き状態を0、予約済み状態を1で表現する。初期の予約状態はランダムにしておく。
  ▽「予約」では、予約状況の一覧を表示し、予約する座席数を入力させる。入力数が空席の数以上
であれば、
「空席が足りません」として、再度入力させる。
  ▽次に希望する座席を入力させる(行‐列の順)。入力されたら確認メッセージ
   (「(座席番号)」を予約しますか?)を表示する。Yesならば予約処理をし、「予約しました」と表
示してメニューに戻る。
   Noならばメニューに戻る。
  ▽すでに予約済みの座席を指定した時は、「(座席番号)は予約済みです」とエラーメッセージを表
示し、再度入力させる。
  ▽入力数が2以上のときは複数選択が可能になるようにする(全ての希望を入力した時点で確認メッ
セージを表示)
  ▽入力数が空席の数と同じときは、すぐに予約確認メッセージを表示する。
  ▽「キャンセル」では、「予約」メニューと同様の機能をもたせる(一覧表示・キャンセルする座席
数の入力・
座席番号の入力・確認メッセージ・エラー処理・複数選択機能)
  ▽「終了」では、プログラム終了する。
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C言語
[4] 期限: 来週中ぐらいまで。
[5] その他の制限:条件判断文、繰り返し文、関数(引数、戻り値)、配列を勉強しました      
   これらを使ってお願いします。

30 :デフォルトの名無しさん:2008/10/03(金) 23:31:30
>>21
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7752.c

エラー出して終了するときメモリ解放すんの忘れてた。
まあいいか・・

31 : ◆3CnrSiNVYE :2008/10/04(土) 12:28:13
[1] 授業単元:プログラミング基礎
[2] 問題文:
ファイルを1つまたは複数指定し、
各ファイルに含まれる行数と文字数を数えて画面に出力するプログラムを作れ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:どちらでも
[4] 期限:2008年10月14日
[5] その他の制限:まだ基礎の段階です

32 :デフォルトの名無しさん:2008/10/04(土) 12:47:39
>>31
#include<stdio.h>

void moji_line_count(const char *filename){
FILE *fp;
int prev='\n', moji, moji_count=0, line_count=0;

if((fp=fopen(filename, "rb"))==NULL) return;
for(;(moji=fgetc(fp))!=EOF;prev=moji,moji_count++) if(moji=='\n') line_count++;
fclose(fp);
if(prev!='\n') line_count++;

printf("File : %s\nCharacter count : %d\nLine count : %d\n\n", filename, moji_count, line_count);
}

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

for(i=1;i<argc;i++) moji_line_count(argv[i]);
return 0;
}

33 :デフォルトの名無しさん:2008/10/04(土) 12:56:52
>>31
#include <stdio.h>
#include <string.h>
void chomp(char *buf)
{
int len = strlen(buf); if (len > 0 && buf[len - 1] == '\n') buf[len - 1] = '\0';
}
int main(int argc, char *argv[])
{
int i, lines, chars; FILE *fin; char buf[512];
for(i = 1; i < argc; i++) {
fin = fopen(argv[i], "r");
if (fin != NULL) {
lines = chars = 0;
while(fgets(buf, 512, fin) != NULL) {
chomp(buf);
chars += strlen(buf);
lines++;
}
fclose(fin);
printf("ファイル\"%s\"の行数は%d、文字数は%d\n", argv[i], lines, chars);
}
else
fprintf(stderr, "ファイル \"%s\"は開けません。\n", argv[i]);
}
return 0;
}


34 :12:2008/10/04(土) 13:03:08
>>17
DFTでお願いします。
一通りググってはみたんですけど、どれも難解で各行説明が難しいです…


35 :デフォルトの名無しさん:2008/10/04(土) 14:34:48
>>29
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int aki;
char zaseki[5][5];
void chomp(char *buf)
{
int len = strlen(buf); if (len > 0 && buf[len - 1] == '\n') buf[len - 1] = '\0';
}
void yoyaku(void)
{
int i, j, n;
char buf[128];
printf("予約状況:\n");
printf(" ");
for(j = 0; j < 5; j++) printf(" %2d", j+1);
printf("\n");
for(i = 0; i < 5; i++)
{
printf(" %2d", i+1);
for(j = 0; j < 5; j++)
if(zaseki[i][j]) printf(" x");
else printf(" .");
printf("\n");
}


36 :デフォルトの名無しさん:2008/10/04(土) 14:35:37
printf("x: 予約済み .: 空き\n\n");
if (!aki) {
printf("空席がありません。\n");
return;
}
do {
printf("予約する座席数: ");
scanf("%d", &n);
if (aki < n) {
printf("空席が足りません。\n");
continue;
}
} while(0);
if(n <= 0) return;
while(n--) {
rewind(stdin);
printf("予約を希望する座席(行-列): ");
scanf("%d-%d", &i, &j);
if(zaseki[i - 1][j - 1] == 1) {
printf("座席「%d-%d」は予約ずみです。\n", i, j);
n++;
continue;
}


37 :デフォルトの名無しさん:2008/10/04(土) 14:36:23
printf("座席「%d-%d」を予約しますか?(YES/NO): ", i, j);
rewind(stdin);
fgets(buf, 128, stdin);
chomp(buf);
if (strcmpi(buf, "YES") == 0) {
zaseki[i - 1][j - 1] = 1;
printf("予約しました。\n");
}
}
}
void cancel(void)
{
int i, j, n;
char buf[128];
printf("予約状況:\n");
printf(" ");
for(j = 0; j < 5; j++) printf(" %2d", j+1);
printf("\n");
for(i = 0; i < 5; i++)
{
printf(" %2d", i+1);
for(j = 0; j < 5; j++)
if(zaseki[i][j]) printf(" x");
else printf(" .");
printf("\n");
}


38 :デフォルトの名無しさん:2008/10/04(土) 14:37:25
printf("x: 予約済み .: 空き\n\n");
if (aki == 5 * 5) {
printf("予約済みの席はありません。\n");
return;
}
do {
printf("キャンセルする座席数: ");
scanf("%d", &n);
if (5*5 - aki < n) {
printf("予約済みの席が足りません。\n\n");
continue;
}
}while(0);
if(n <= 0) return;
while(n--)
{
rewind(stdin);
printf("キャンセルを希望する座席(行-列): ");
scanf("%d-%d", &i, &j);
if(zaseki[i - 1][j - 1] == 0) {
printf("座席「%d-%d」は予約されていません。\n", i, j);
n++;
continue;
}

39 :デフォルトの名無しさん:2008/10/04(土) 14:38:02
printf("座席「%d-%d」をキャンセルしますか?(YES/NO): ", i, j);
rewind(stdin);
fgets(buf, 128, stdin);
chomp(buf);
if (strcmpi(buf, "YES") == 0) {
zaseki[i - 1][j - 1] = 0;
printf("予約しました。\n");
}
}
}
int main(void)
{
int i, j, m;
aki = 5 * 5;
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++) {
zaseki[i][j] = rand() & 1;
if(zaseki[i][j]) aki--;
}
do {
printf("\n\nメニュー(1.予約 2.キャンセル 3.終了): ");
scanf("%d", &m);
switch(m){
case 1: yoyaku(); break;
case 2: cancel(); break;
case 3: return 0;
}
} while(1);
}

40 :デフォルトの名無しさん:2008/10/04(土) 14:52:43
printf("x: 予約済み .: 空き\n\n");
if (aki == 5 * 5) {
printf("予約済みの席はありません。\n");
return;
}
do {
printf("キャンセルする座席数: ");
scanf("%d", &n);
if (5*5 - aki < n) {
printf("予約済みの席が足りません。\n\n");
continue;
}
}while(0);
if(n <= 0) return;
while(n--)
{
rewind(stdin);
printf("キャンセルを希望する座席(行-列): ");
scanf("%d-%d", &i, &j);
if(zaseki[i - 1][j - 1] == 0) {
printf("座席「%d-%d」は予約されていません。\n", i, j);
n++;
continue;
}

41 :デフォルトの名無しさん:2008/10/04(土) 14:53:42
if((fp=fopen(filename, "rb"))==NULL) return;
for(;(moji=fgetc(fp))!=EOF;prev=moji,moji_count++) if(moji=='\n') line_count++;
fclose(fp);
if(prev!='\n') line_count++;

printf("File : %s\nCharacter count : %d\nLine count : %d\n\n", filename, moji_count, line_count);
}
rewind(stdin);
fgets(buf, 128, stdin);
chomp(buf);
if (strcmpi(buf, "YES") == 0) {
zaseki[i - 1][j - 1] = 1;
printf("予約しました。\n");
}
}
}
void cancel(void)

42 :デフォルトの名無しさん:2008/10/04(土) 14:54:45
うざす

43 :デフォルトの名無しさん:2008/10/04(土) 15:16:13
>>35
>>36
>>37
>>38
>>39
>>40
ありがとうございます。本当に助かりました。

44 :デフォルトの名無しさん:2008/10/04(土) 15:24:52
>>35-41
長ぇwww
うpろだに上げろよw

45 :21:2008/10/04(土) 15:37:15
>30
早速作って戴いて
ありがとうございます。実行のとき、
./kadai3-2 s aって入力すると不正な文字ですぅって
でるんですが、どこがおかしいですか?
ファイルは入力ファイル、
出力ファイルの順にコマンドラインの引数で指定していると
思うんですが。


46 :デフォルトの名無しさん:2008/10/04(土) 15:42:58
>>45
おそらくスペースか改行文字かタブ文字が原因

47 :デフォルトの名無しさん:2008/10/04(土) 15:46:09
>>45
数字と,以外受け付けない
スペースも改行も入れられないよ

48 :21:2008/10/04(土) 15:49:59
>>46
ん、ん?
スペース入れずにどうやって入力するのですか?

49 :デフォルトの名無しさん:2008/10/04(土) 15:50:40
>>48
よみこむ中身の方だよ

50 :21:2008/10/04(土) 15:55:25
>>49
えっと読み込むファイルsの中身は
1,2,3,4,5,6,7
としたんですが、どこかおかしいですか?

51 :デフォルトの名無しさん:2008/10/04(土) 16:00:22
>>50
最後に改行してるんじゃね?

52 :21:2008/10/04(土) 16:04:19
>>51
確かめてみたんですが、とくに最後に改行
とかはされていませんでした。

53 :デフォルトの名無しさん:2008/10/04(土) 16:23:22
>>30

54 :デフォルトの名無しさん:2008/10/04(土) 16:25:04
ファイルがないときもスコンスコン落ちるし、まあ、大雑把なつくりなんでしょう。
改造するほうがいいよ。

55 :21:2008/10/04(土) 16:51:48
改造か・・・。
できる気がしないけどちょくらやってみる。
でもこれ再提出の上に期限大分オーバー
しちゃってるんだよなぁ。
はぁ。

56 :デフォルトの名無しさん:2008/10/04(土) 17:02:56
かなりの初心者です…。質問があります。
入力された数値を二乗して返す、というプログラムなのですが、↓のようにしました。


printf("Enter a floating number > ");
while( scanf("%f",&data) != EOF ){
 printf("%lf^2 = %lf\n",data,SQUARE(data));
 printf("Enter the next value > ");
}


「SQUARE」は二乗するための関数です。
実行してみると、dataの中には何も数値は入っていませんでした(data = 0.000)。
「while文の条件の中で一度scanfを行っているからdataには入力された数値が入っているんじゃないの??」と
思ったのですが、そうはいっていないようです。ループに入っていることは確認できました。
自分のスキルでは解決できないので、力を貸して下さい…(泣)

57 :デフォルトの名無しさん:2008/10/04(土) 17:06:43
変数はdoubleか?
それならまず%fと%lfを入れ替えてみようか

58 :デフォルトの名無しさん:2008/10/04(土) 17:17:14
書き忘れてました、double型です。
それで、%f → %lfにしてみたら…大丈夫でした(^^
同時に、勉強の必要性を強く感じました…

ただ、このループはCtrl + Dで終了するはずらしいのですが、それを入力するとなぜか無限ループ開始…(^^;
これについてはどうでしょうか??

59 :デフォルトの名無しさん:2008/10/04(土) 17:18:38
windowsならCtrl+Z

60 :デフォルトの名無しさん:2008/10/04(土) 17:23:27
あ、なるほど。学校のPCはLinuxだったからそうなっていたのですね。
確かにCtrl + Zで無事に終了できました。

初心者のばかばかしい質問に答えて下さり、ありがとうございましたm(_ _)m

61 :デフォルトの名無しさん:2008/10/04(土) 18:33:59
>>55 = 21
課題だから最低限の実装でいいかなと思ってたんですみません。
一応少しマシな実装に直しておきました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7753.c

62 :デフォルトの名無しさん:2008/10/04(土) 20:20:14
三平方の定理の斜辺を求めるプログラムなのですが、
関数をcalcuteとして、a^2 + b^2 = c^2のaとbを入力させて渡そうとしているのですが、コンパイル時にエラーが起こります。
なぜかわかるでしょうか?
以下が関数main、
int main(double *argv[])
{
printf("%f", calcute(argv[1], argv[2]));
return 0;
}
以下がエラーの内容です。
pyt.c:6: error: incompatible type for argument 1 of `calcute'
pyt.c:6: error: incompatible type for argument 2 of `calcute'

63 :デフォルトの名無しさん:2008/10/04(土) 20:22:23
>>62
int main(double *argv[])
なんだこのふざけた引数は

64 :デフォルトの名無しさん:2008/10/04(土) 20:24:11
>>63
小数の内容を入力したいのですが・・・

65 :デフォルトの名無しさん:2008/10/04(土) 20:28:06
>>64

int main(int argc,char *argv[])
{
double a,b;
sscanf(argv[1],"%f",&a);
sscanf(argv[2],"%f",&b);
以下略

66 :デフォルトの名無しさん:2008/10/04(土) 20:28:56
>>65
勉強不足でした。どうもありがとうございます。

67 :デフォルトの名無しさん:2008/10/04(土) 20:35:41
>>65
sscanf(argv[1],"%lf",&a);
sscanf(argv[2],"%lf",&b);

68 : ◆3CnrSiNVYE :2008/10/04(土) 20:43:03
>>32
>>33
ありがとうございます。

ところでこれでファイルを指定するにはどうすればよいのでしょうか?
学校のコンパイラはgccなのですが家ではvisualC++2008を使っているのですが…

69 :デフォルトの名無しさん:2008/10/04(土) 20:58:43
>>68
横スレですまんが、>>33のソースは間違っているので使わない方がいいよ。
>>32は正しくできている(ちなみに私も作っていろいろなファイルで結果を取りますた)。

VS C++2008なら、コンパイルなりビルドなりしてコマンドプロンプトだったかな(Windowsしらねぇ)からコマンドライン引数としてファイルを渡せばいいと思う。VS C++のIDEくらいなら、引数を指定して実行とかってメニューがあるかもしれない。

70 :65:2008/10/04(土) 21:03:46
>>67
floatじゃなくてdoubleだから%lfだね。
スマソ

71 :デフォルトの名無しさん:2008/10/04(土) 21:14:14
>>68
ちょっと調べてみたよ。

プロジェクト(P) -> プロパティ(P)でプロジェクトのプロパティを開く。
構成プロパティ -> デバッグ -> コマンド引数にファイル名を書けば良いと思う。

72 :31 ◆3CnrSiNVYE :2008/10/04(土) 21:26:24
>>69
>>71
申し訳ありません。ちょっとよくわかりませんでした。
>>71を参考にして適当なテキストファイルのフルパスをコマンド引数に書いてみたのですが、
Ctrl+F5(ビルド)しても「何かキーを押してください」と出て終了してしまいます。

http://soudan1.biglobe.ne.jp/qa4255056.html
ここを参考にしてみたのですが、よくわかりません

73 :31 ◆3CnrSiNVYE :2008/10/04(土) 21:42:41
なんか宿題の本筋からずれてますね。
visualC++のスレで聞いてきます。

74 :デフォルトの名無しさん:2008/10/04(土) 23:21:18
1] 授業単元:C++
[2] 問題文(含コード&リンク):八の字を描け。問題→http://www.dotup.org/uploda/www.dotup.org3603.zip.html
自分でやってみたのですが、出発地点から円を描く事しかできませんでした。
この画像で黄色のところが出発地点で、緑の所が執着地点です→http://www.dotup.org/uploda/www.dotup.org3605.zip.html
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005又はVisual Studio 2008
 [3.3] 言語:C++
[4] 期限: ([2008年10月6日午前5:00まで
[5] その他の制限:何か説明不足な点がありましたら言って下さい。どうかお願いします。

75 :デフォルトの名無しさん:2008/10/05(日) 01:19:04
C言語って懐かしいな

76 :デフォルトの名無しさん:2008/10/05(日) 02:55:53
やったことないからよくわかんないけど、-270度まで回転するのがまずいんでないの?
-90度回転させて、中心点を左の円のものにして+90度からプラス方向に360度回転させて、
元の中心を使って-90度から-270度まで回転させればいくんでない?
やり方は知らないんだけど。

77 :デフォルトの名無しさん:2008/10/05(日) 09:19:23
半円を4つ描くと思えばいい

78 :デフォルトの名無しさん:2008/10/05(日) 09:36:52
twintail.jpからel.hなくなってるじゃん
コンパイルできないからうpれよ

79 :デフォルトの名無しさん:2008/10/05(日) 11:25:26
C と C++ とC# と、後なんか。 何がどう違うの? 簡単な表にしてZIPでくれ。

80 :デフォルトの名無しさん:2008/10/05(日) 11:29:00
>>79
失せろ

81 :デフォルトの名無しさん:2008/10/05(日) 11:30:17
>>80 「わかりません」ってハッキリ言えwww

82 :デフォルトの名無しさん:2008/10/05(日) 11:47:12
>>79
どういう視点で違いを知りたい?

83 :デフォルトの名無しさん:2008/10/05(日) 13:15:48
みなさん童貞ですか?

84 :デフォルトの名無しさん:2008/10/05(日) 14:09:03
>>18
ワロタwwww

85 :74 ◆5/7mhL.nO6 :2008/10/05(日) 14:53:36
>>78
elってこれですか?
http://www.dotup.org/uploda/www.dotup.org4202.zip.html

86 :デフォルトの名無しさん:2008/10/05(日) 16:52:12
AGE

87 :デフォルトの名無しさん:2008/10/05(日) 20:01:02
>>12>>16>>34です
どうか助けてもらえませんか…

88 :74 ◆5/7mhL.nO6 :2008/10/05(日) 21:16:20
誰か>>74をお願いいたします。

89 :デフォルトの名無しさん:2008/10/05(日) 21:16:49
>>87
今から始める。のんびりまってて。

90 :デフォルトの名無しさん:2008/10/05(日) 21:28:25
>>87
ttp://www.nigauri.sakura.ne.jp/src/up5626.txt

BCC Developerで拡張子を.cppとして作成。
コメントはほとんどなし。
間違ってたらすまない。
まぁ、参考程度にしてもいいし、ゴミ箱直行でもいいし。

91 :デフォルトの名無しさん:2008/10/05(日) 21:29:00
>>89
いくらでも待ちます。ハチ公のように。
本当にありがとうございます。

92 :デフォルトの名無しさん:2008/10/05(日) 21:31:49
二度と戻らぬ主人を待ち続けるハチ公であつた。

93 :90:2008/10/05(日) 21:32:38
あ、>>89さんゴメン。かぶった。
プログラム>>89のほうがいいかもしれないよ。俺あんまりこのスレきたことないから

94 :デフォルトの名無しさん:2008/10/05(日) 21:33:39
>>90
ありがとうございます。参考にさせてもらいます。
C初めて間もないので、とても為になります。

95 :デフォルトの名無しさん:2008/10/05(日) 21:44:25
>>93
大丈夫、実はやってない。

96 :デフォルトの名無しさん:2008/10/05(日) 22:08:56
>>95
マジですか?…
わかりました。では>>90さんのを元に、各行の説明付けに励みたいと思います。
>>90さんありがとうございました。

97 :74 ◆5/7mhL.nO6 :2008/10/05(日) 22:18:48
>>74の「八の字」の描き方もお願いします。
円はできたのですが、八の字はどのようにやったら良いかわかりません。

98 :デフォルトの名無しさん:2008/10/05(日) 22:22:58
円を二個くっつければ八の字にならないか?

99 :デフォルトの名無しさん:2008/10/05(日) 22:53:16
○○

でも八の字といえば八の字だよな

100 :デフォルトの名無しさん:2008/10/05(日) 23:01:11
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):英文文書整形プログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7754.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 10月8日
[5] その他の制限:特にありません

よろしくお願いします

101 :デフォルトの名無しさん:2008/10/06(月) 00:10:49
>>99


こっちじゃね?

102 :デフォルトの名無しさん:2008/10/06(月) 00:13:13
>>100
そこだけ見るとゼペット爺さんなんか痛い子

103 :デフォルトの名無しさん:2008/10/06(月) 00:18:39
>>100
51文字目にカンマやピリオドがあったらどうする?

1.直前の単語ごと次の行へ
2.カンマやピリオドが行の先頭にあっても構わない
3.行の後ろにこっそりつける

104 :デフォルトの名無しさん:2008/10/06(月) 00:29:53
>>103
ピリオドや?などは単語の一部という扱いでいいと思います
ですので「1」で大丈夫です

105 :デフォルトの名無しさん:2008/10/06(月) 03:10:26
>>97
>>76は?もう期限近いけどさ。

106 :デフォルトの名無しさん:2008/10/06(月) 04:35:00
>>97
眠れないので作ってみた
void teki_01_dp(void)
{
static float n = 0;
static float inc = 0.1;

for (cnt = 0; cnt < 17; cnt++) {
if (init_fl[cnt] != 0) {
/* 出現済みの敵の場合 */
/* 次の座標を計算 */
#if 0
spx[cnt] += spxg[cnt];
spy[cnt] += spyg[cnt];

zx[cnt] += FrameTime * spx[cnt];
zy[cnt] += FrameTime * spy[cnt];
#else
zx[cnt] += cos(n * PI / 180) * FrameTime * 100;
zy[cnt] += sin(n * PI / 180) * FrameTime * 100;
n += inc;
if (n >= 180.0) {
inc = -0.1;
} else if (n <= -180.0) {
inc = 0.1;
}
#endif
}
}
}
速度とかは超適当す。

107 :74 ◆5/7mhL.nO6 :2008/10/06(月) 07:10:44
>>105
期限は今週中なら一応大丈夫です。

>>106
これはどこのソースに書き込みましたか?

108 :106:2008/10/06(月) 07:40:39
>>107
うpろだの内容はそのままビルドできんかったので
1.zako_01.cppを新規に作成
2.zako.cppをコピペ
3.teki_reqをtei_01_reqに変更
4.teki_dpをteki_01_dpに変更
5.読みにくかったので全面書き替え!!
5.teki_01_dpに>>106のを書いた
6.teki_01_reqは固定位置出現にした

最終動きのイメージを今見たんだがハチの字の方向が違うかもしれん
そこはまぁ適当によろしこ
ちなみにPIは3.141592にdefineしてある

109 :106:2008/10/06(月) 07:41:46
書き忘れた
もう仕事に行く時間なので
夜になるまで応答できないかも

110 :74 ◆5/7mhL.nO6 :2008/10/06(月) 08:11:20
>>109
ありがとうございます。
やってみるので、夜になったらまた見てもらえますか?
それまで自分でやってみます。

111 :21:2008/10/06(月) 11:27:20
>>61
よし動いた。
・・・あれ肝心のソートがされてないorz
誰か13時までに原因を教えてください。

112 :デフォルトの名無しさん:2008/10/06(月) 12:01:51
1] 授業単元:C++
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7745.txt
・「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。

【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)上記以外については自由に作成してよい。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C++
[4] 期限: ([2008年10月8日


113 :デフォルトの名無しさん:2008/10/06(月) 17:59:06
>>112
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7755.cpp

問題文のリンクを元に作ったけども
正直カレンダークラスに year と month ないほうが綺麗になると思う

114 :デフォルトの名無しさん:2008/10/06(月) 18:40:58
[1] 授業単元:プログラミング演習
[2] n*3がたの行列Aと3*mの行列Bの積を計算する
プログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc バージョン5.5
 [3.3] 言語:C
[4] 期限: 10月9日
[5] その他の制限:特にありません

よろしくお願いします。素人でもわかりやすい作りに
していただければ幸いです。



115 :デフォルトの名無しさん:2008/10/06(月) 18:40:59
>>113
そんなに無理矢理三項演算子使わなくても…

116 :デフォルトの名無しさん:2008/10/06(月) 18:53:21
>>115
使わないと分かりにくいかなと思って使ったんだけども・・・
取っても結果同じだから、違和感あるなら取ってね

117 :デフォルトの名無しさん:2008/10/06(月) 19:22:49
#include<stdio.h>
#define n 2
#define m 4
int main(){
int A[n][3] ={{1,2,3}, {4,5,6}};
int B[3][m] ={{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
int C[n][m],i,j,k,t;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
for(t=0,k=0;k<3;k++){ t += A[i][k]*B[k][j]; }
C[i][j] = t;
}
}
//A
for(i=0;i<n;i++){
for(j=0;j<3;j++){ printf("%3d",A[i][j]); }
printf("\n");
}
//B
for(i=0;i<3;i++){
for(j=0;j<m;j++){ printf("%3d",B[i][j]); }
printf("\n");
}
//C
for(i=0;i<n;i++){
for(j=0;j<m;j++){ printf("%3d",C[i][j]); }
printf("\n");
}

}

118 :74 ◆5/7mhL.nO6 :2008/10/07(火) 00:33:44
>>108のように書いたのですが、

このようなエラーはどう対処したら宜しいのでしょうか?

..\zako_01.cpp(52) : warning C4305: '初期化中' : 'double' から 'float' へ切り詰めます。
..\zako_01.cpp(66) : error C2065: 'PI' : 定義されていない識別子です。
..\zako_01.cpp(70) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。
..\zako_01.cpp(72) : warning C4305: '=' : 'double' から 'float' へ切り詰めます。

119 :デフォルトの名無しさん:2008/10/07(火) 00:42:13
#define PI 3

120 :デフォルトの名無しさん:2008/10/07(火) 00:55:07
笑ったけど本気にしたらかわいそうだ

>>118
#define PI 3.141592

warningってのは警告だから無視すればいい

121 :デフォルトの名無しさん:2008/10/07(火) 01:35:20
[1] C言語演習
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7756.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7757.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7758.txt
[3] C
[4] 今週の水曜日

よろしくお願いします。

122 :デフォルトの名無しさん:2008/10/07(火) 02:49:18
>>118
> >>108のように書いたのですが、

>>108
> ちなみにPIは3.141592にdefineしてある

はぁ。

123 :74 ◆5/7mhL.nO6 :2008/10/07(火) 04:23:57
>>119
>>120
>>122
すみません見落としていました…

とりあえず、>>106を参考に作りました。
http://www.dotup.org/uploda/www.dotup.org6018.zip.html

するとこのようなエラーが出るのですが…ファイルを見て確認してみて下さい。
zako_01.obj : error LNK2005: "float * zy" (?zy@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "int * init_fl" (?init_fl@@3PAHA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spy" (?spy@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spx" (?spx@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spyg" (?spyg@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * zx" (?zx@@3PAMA) は既に zako.obj で定義されています。
zako_01.obj : error LNK2005: "float * spxg" (?spxg@@3PAMA) は既に zako.obj で定義されています。

124 :74 ◆5/7mhL.nO6 :2008/10/07(火) 06:01:05
>>123のエラーは全て自己解決しました。

普通にコンパイルできるのにちゃんと表示されないのですが…
http://www.dotup.org/uploda/www.dotup.org6039.zip.html

>>108のようにやったのに表示されません…

125 :106:2008/10/07(火) 07:40:12
すまん。もともとあった内容は省略して書いてた。
----- こっから
//アニメーション-----------------------------
timer_a[cnt]+=FrameTime;
if(timer_a[cnt]>0.1){
timer_a[cnt]=0;
no_a[cnt]++;
if(no_a[cnt]>9) no_a[cnt]=0;//アニメーションのループ
}
//敵の表示
elDraw::Layer((int)zx_a[cnt],(int)zy_a[cnt],tkBMP[cnt],40*no_a[cnt],0,40*no_a[cnt]+40,40);
// SHOW2((int)zx[cnt],(int)zy[cnt]-5,"no= %d",cnt);

}//リクエスト if end
}//for end

if(out_cnt==17){//17個全て消えたか?
for(cnt=0;cnt<17;cnt++){
init_fl_a[cnt]=0;

}
---- ここまで
をkadai_d_dpの最後に追加してみそ。

分かってるとは思うが
//敵の表示
elDraw::Layer((int)zx_a[cnt],(int)zy_a[cnt],tkBMP[cnt],40*no_a[cnt],0,40*no_a[cnt]+40,40);
のコールでビットマップを描画してるので
これ消したら当然何も出ない罠

126 :デフォルトの名無しさん:2008/10/07(火) 07:58:09
>>124
表示してないからあたりまえ
#define PI 3.141592F
void teki_01_dp(void)
{
static int no[17];//アニメ用
static float timer[17];//アニメ用
static float n = 0.0F;
static float inc = 0.1F;
int cnt;
for (cnt = 0; cnt < 17; cnt++) {
if (init_fl_01[cnt] != 0) {
zx_01[cnt] += cos(n * PI / 180) * FrameTime * 100;
zy_01[cnt] += sin(n * PI / 180) * FrameTime * 100;
n += inc;
if (n >= 180.0) {
inc = -0.1F;
} else if (n <= -180.0) {
inc = 0.1F;
}
timer[cnt]+=FrameTime;
if(timer[cnt]>0.1){
timer[cnt]=0;
no[cnt]++;
if(no[cnt]>9) no[cnt]=0;//アニメーションのループ
}
elDraw::Layer((int)zx_01[cnt],(int)zy_01[cnt],tkBMP[cnt],40*no[cnt],0,40*no[cnt]+40,40);
}
}
}

127 :74 ◆5/7mhL.nO6 :2008/10/07(火) 08:04:53
>>125
>>126
できました!ありがとうございます!
これを元に波線の軌道もやってみますので、分からなくなったら再び質問します。

128 :112:2008/10/07(火) 10:41:20
>>113
デバックしましたけど何も表示されませんでした。

129 :デフォルトの名無しさん:2008/10/07(火) 11:03:35
>>128
デバック???
「修正してやったぜ」って意味か?
失礼な奴だな

知らない言葉は調べたほうがいいぜ

130 :デフォルトの名無しさん:2008/10/07(火) 12:27:22
デバッグ実行のことじゃね

131 :デフォルトの名無しさん:2008/10/07(火) 12:39:16
VSが「デバッグ開始」て書いてあるから間違って覚えたんだろ

132 :デフォルトの名無しさん:2008/10/07(火) 12:41:45
>>128
コマンドライン引数が無いときの処理が無いからな


133 :デフォルトの名無しさん:2008/10/07(火) 13:10:31
>>121
2番目の問題だけ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7759.txt

134 :21:2008/10/07(火) 16:58:43
誰か61のプログラムでソートされない原因を
教えてください。
お願いします


135 :デフォルトの名無しさん:2008/10/07(火) 17:07:23
>>134
やってみたらソートされたが、どんなデータを与えたの?

136 :21:2008/10/07(火) 17:12:27
>>135
./kadai3-2 s sa
と入力しました。./kadai3-2が実行プログラムで
Sが読み込ませるプログラムでsa

137 :21:2008/10/07(火) 17:14:56
すいません途切れました。
saが出力させるファイルで
sの中身は1,2,3,4,5,6,7,という
数字が記録されています。
実行するとsaの中身は
1,2,3,4,5,6,7となっていて
ソートされてないのです。


138 :デフォルトの名無しさん:2008/10/07(火) 17:20:01
>>137
落ち着けよ
意味がわからんよ

139 :デフォルトの名無しさん:2008/10/07(火) 17:24:26
>>137
見事にソートされているように見えるんだが。。
たとえばsを 3,6,1,5,2,7,4 という内容にしてみたら。

ソートの意味がわかっていないのか、それとも>>21の思っているソートがこちらに伝わっていないのか。

140 :21:2008/10/07(火) 17:35:18
あっ、あぁ、ほんとだ。
ごめんなさい。
いつのまにか俺のなかで
ソートの種類が勝手に順番を逆にするソート
にすり変わってたorz
思い込みってやだな。
お手数かけました。
心よりお詫び申し上げます。





141 :デフォルトの名無しさん:2008/10/07(火) 17:54:06
[1] 初級プログラミング
[2]
#include <stdio.h>
int main(void){

int a,b,c,d,e,f,g,h,i,j,k,l,m;//a〜m(13個,数は固定)には整数0か1が毎回ランダムに入るとしてください
a=1;b=0;c=0;d=1;e=0:f=1;g=1;h=1;i=1;j=0;k=1;l=1;m=0;//例

printf("%d",a); printf("%d",b); printf("%d",c); printf("%d",d);
printf("%d",e); printf("%d",f); printf("%d",g); printf("%d",h);
printf("%d",i); printf("%d",j); printf("%d",k); printf("%d",l);
printf("%d",m);
printf("\n");

//表示 1001011110110
/*以下に13ビットの値を16進数に変換するプログラムを記述せよ*/

printf("%d",?); printf("%d",?); printf("%d",?); printf("%d",?);
printf("\n");
return 0;
}
abcdefghijklmが
1001011110110 の時は 12f6 と表示 aが4桁めb〜eが3桁めf〜iが2桁めj〜mが1桁めとなるようにする
[3] 環境
[3.1] OS:linux [3.2] gcc3.4 [3.3] c
[4] 期限: 10/8
[5] その他の制限:なし



142 :デフォルトの名無しさん:2008/10/07(火) 18:01:51
>>141
?を埋める形じゃないとだめ?

143 :デフォルトの名無しさん:2008/10/07(火) 18:05:07
というわけでもないと思うので、こうしてみたよ。
printf("%d",a); printf("%x", b*8+c*4+d*2+e); printf("%x", f*8+g*4+h*2+i); printf("%x", j*8+k*4+l*2+m);
もしくは
printf("%d",a); printf("%x", b<<3|c<<2|d<<1|e); printf("%x", f<<3|g<<2|h<<1|i); printf("%x", j<<3|k<<2|l<<1|m);

144 :141:2008/10/07(火) 18:06:39
>>142
?は自分がこんな感じかなと勝手に考えて書いたものですので
無視してもらっても大丈夫です。

145 :141:2008/10/07(火) 18:20:49
>>142,143
ありがとうございます。出来ました。

146 :デフォルトの名無しさん:2008/10/07(火) 20:51:46
ソース
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7760.txt
データ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7761.txt

テキスト形式のデータを読み込んで,マージソートをして
ナップサック問題をとくソートなんだが

item数 n = 100 重量制限 B = 2000
データは item p[i] w[i]の順に並んでるよ

ここにいてるできる奴ならもっと短くできるよね

B5に収まるくらいの美しいソートおしえてたもれ

<stdio.h><stdlib.h><math.h>くらいだけで
シンプルにできる人、たのんます

あっしのノー味噌ではうつくしくできないので.

147 :146:2008/10/07(火) 20:58:31

×美しいソート
○美しいソース
です;

頭んなか、ソートだらけか….

148 :デフォルトの名無しさん:2008/10/07(火) 21:15:30
>>1くらい読め

149 :デフォルトの名無しさん:2008/10/07(火) 21:15:47
>>146
qsort を使うとか

150 :146:2008/10/07(火) 21:28:19
>>148
宿題を解いて,もっと短くできるから
やってみろって言われたんです;
テンプレどおりに書かなかったのはすみません。

>>149
マージソートで、数十行くらいで作れるらしいです。
それをやれといわれました;
教科書通りにやるのはできるんですが
短くするとなると、なかなか凡人クラスの頭のキレでは難しくて.


151 :デフォルトの名無しさん:2008/10/07(火) 21:37:13
つstdlib.h

152 :デフォルトの名無しさん:2008/10/07(火) 22:46:55
まず、このソースが何をしていて、どの辺で苦労して、どのあたりが改善できそうであるかを言ってみて。

153 :デフォルトの名無しさん:2008/10/07(火) 23:05:45
1] 授業単元: 基礎プログラミング
[2] ニュートンラプソン法を用いてnのルート、及び逆数の関数を作成せよ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 10/8 24:00

154 :デフォルトの名無しさん:2008/10/08(水) 02:34:55
>>153
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7762.txt

155 :デフォルトの名無しさん:2008/10/08(水) 02:40:07
ありゃageになってたすまぬ

156 :デフォルトの名無しさん:2008/10/08(水) 04:21:05
ttp://ja.wikipedia.org/wiki/%E7%B4%A0%E6%95%B0
> 2008年8月、史上最大の素数探求のための分散コンピューティング・プロジェクトである
> GIMPSによって、その時点で史上最大とされる素数が発見された。これは知られている中で
> 46番目のメルセンヌ素数、243112609 - 1 であり、十進記数法で表記したときの桁数は
> 1297万8189桁に及ぶ。
上記の史上最大とされる素数を求めるプログラムきぼんぬ

157 :デフォルトの名無しさん:2008/10/08(水) 09:32:16
>>156
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7764.c


158 :157:2008/10/08(水) 09:51:30
2^nの1桁目は0にならないから最後1引くのにループはいらなかった

159 :157:2008/10/08(水) 09:54:31
#define END_POINT 243112609

#define END_POINT 43112609
の間違いだな(>>156のをそのままコピペしてしまった)

160 :デフォルトの名無しさん:2008/10/08(水) 11:22:20
>>156
#include <stdio.h>
#define MER_P 43112609
int main(void)
{
int i;
printf("(2^%d) - 1 =\n", END_POINT);
for (i = 0; i < MER_P; i++)
{
printf("1");
}
printf("\n(2進数)\n");
return 0;
}


161 :デフォルトの名無しさん:2008/10/08(水) 11:23:22
間違えた
#include <stdio.h>
#define MER_P 43112609
int main(void)
{
int i;
printf("(2^%d) - 1 =\n", MER_P);
for (i = 0; i < MER_P; i++)
{
printf("1");
}
printf("\n(2進数)\n");
return 0;
}


162 :デフォルトの名無しさん:2008/10/08(水) 13:13:55
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
すごろくプログラムを作成しなさい。ただし,下記の条件を満たすものとする。
・すごろくのコマとしてユーザクラスを作成しなさい。
・すごろくのコマを移動させる場所としてマスクラスを作成しなさい。
・main関数でユーザクラスの実体(2つ以上)とマスクラスの実体(5つ以上)を生成しなさい。
・ここで,マスには,「スタート」「ゴール」「1つ進む」「1つ戻る」「2つ進む」「2つ戻る」「スタートへ戻る」「何もしない」の条件があるとする。
・さらに,ユーザは初期状態で「スタート」とし「ゴール」になったら終了とする。
・乱数でサイコロ(1つ)の数字を出しすごろくを行い,片方がゴールしたら終了とする(ちょうどゴールにとまらなくてもよい)。なお,すごろくをプレイしている状況は表示すること。
・あとはすごろくとして成り立っていればどのようにプログラミングしてもよい(他のクラスが必要な場合は追加してもよい)。


[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VisualStudio
 [3.3] 言語:C++
[4] 期限: ([2008年10月16日

163 :デフォルトの名無しさん:2008/10/08(水) 22:33:18
[1] 授業単元:C言語入門
[2]
#include <stdio.h>

int add(int x, int y)
{
return x+y;
}

int main()
{
int a, b, c;
}
printf("calc a + b\n");
printf("input a b\n");
scanf("%d%d", &a, &b);
c = add(a,b);
printf("result: %d + %d = %d\n", a, b, c);
return 0;
}

void accum(int *x, int y)
{
*x = *x + y;
}
このポインタを使って上の関数addを用いずに同じ動作をするプログラムを作れ。

お願いします(__)

164 :デフォルトの名無しさん:2008/10/08(水) 22:38:31
>163
問題は正確に

165 :デフォルトの名無しさん:2008/10/08(水) 22:40:21
#include <stdio.h>
void accum(int *x, int y)
{
*x = *x + y;
}
int main()
{
int a, b;
printf("calc a + b\n");
printf("input a b\n");
scanf("%d %d", &a, &b);
printf("result: %d + %d", a, b);
>>163

accum(&a, b);
printf(" = %d\n", a);
return 0;
}



166 :デフォルトの名無しさん:2008/10/08(水) 23:12:03
すみません。
VC++をいじってるんですが、double型の値を画面に表示させると
「0.000000」といった感じで小数部が6桁表示されてしまいます。
この小数部の表示桁数を制限したいのですが、何か良い関数など
があれば教えて下さい。
よろしくお願い致します。

167 :デフォルトの名無しさん:2008/10/08(水) 23:16:43
printf("%5.2lf",12.34);
ってやったらどうだろう

168 :デフォルトの名無しさん:2008/10/08(水) 23:27:28
それは間違いだ
いやc99ならいける
というレスが続きそうな気がするので先に言っておこう

169 :デフォルトの名無しさん:2008/10/08(水) 23:29:23
>>168
C99なら…それでもC99ならきっとなんとかしてくれる…

170 :お願いします:2008/10/08(水) 23:58:33
【質問テンプレ】
[1] 授業単元: アルゴリズムデータ構造2
[2] 問題文(含コード&リンク): 52枚のトランプを5人に配るシミュレーション
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: コマンドプロンプト バージョンはすいません分からないです。
 [3.3] 言語: C言語
[4] 期限: 10月13日(月)まで
[5] その他の制限: 配列でswap関数を使って作ってもらいたいです。

171 :お願いします:2008/10/09(木) 00:16:55
>>170 アップローダの使い方がいまいち分からなかったので
ソースを貼ります このプログラムを書き換えてください。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i;
char *card[]={"Club","Diamond","Heaart","Spade"};
char *numb[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
srand(time(NULL));
i=rand()%52;
printf("%s%s\n",card[i/13],numb[i%13]);
return 0;
}

172 :デフォルトの名無しさん:2008/10/09(木) 00:37:56
>>171
こんなんでおk?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int*a,int*b){int c = *a;*a=*b;*b = c;}
int main(void)
{
&nbsp; &nbsp; int i,n;
&nbsp; &nbsp; char *card[]={"Club","Diamond","Heaart","Spade"};
&nbsp; &nbsp; char *numb[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
&nbsp; &nbsp; int cards[52];
&nbsp; &nbsp; for(i=0;i<52;++i)
&nbsp; &nbsp; &nbsp; &nbsp; cards[i] = i;
&nbsp; &nbsp; srand(time(NULL));
&nbsp; &nbsp; //カードをシャッフルする
&nbsp; &nbsp; for(i=0;i<52;++i)
&nbsp; &nbsp; &nbsp; &nbsp; swap(cards+i,cards+rand()%(52-i)+i);
&nbsp; &nbsp; for(i=0;i<52;++i)
&nbsp; &nbsp; &nbsp; &nbsp; printf("%cさん %s%s\n","ABCDE"[i%5],card[cards[i]/13],numb[cards[i]%13]);
&nbsp; &nbsp; return 0;
}


173 :デフォルトの名無しさん:2008/10/09(木) 00:39:59
ぎゃあ表示がバグってる。
たぶん空白だけだと思うけど念のためにもう一度。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void swap(int*a,int*b){int c = *a;*a=*b;*b = c;}
int main(void)
{
    int i,n;
    char *card[]={"Club","Diamond","Heaart","Spade"};
    char *numb[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    int cards[52];
    for(i=0;i<52;++i)
        cards[i] = i;
    srand(time(NULL));
    //カードをシャッフルする
    for(i=0;i<52;++i)
        swap(cards+i,cards+rand()%(52-i)+i);
    for(i=0;i<52;++i)
        printf("%cさん %s%s\n","ABCDE"[i%5],card[cards[i]/13],numb[cards[i]%13]);
    return 0;
}

174 :デフォルトの名無しさん:2008/10/09(木) 04:00:50
1から指定した数までを足し算で計算するプログラム教えてくれ。

175 :デフォルトの名無しさん:2008/10/09(木) 04:06:52
#include <stdio.h>
int main()
{
int a;
scanf("%d", &a);
printf("%d", a * (1 + a) / 2);
return 0;
}

176 :デフォルトの名無しさん:2008/10/09(木) 15:08:33
[1] 授業単元:ランダムウォークと配列
[2] 問題文(含コード&リンク): 左右に動く点がありそれが連続で右に動いた回数をカウントし出力
一連続は**回 二連続は++回
[3] 環境
 [3.1] OS:WinXP
 [3.2] コンパイラ名とバージョン:Visual Basic 2005
 [3.3] 言語: C++
[4] 期限: 無期限

よろしくお願いします

177 :176:2008/10/09(木) 15:14:43
失敬
開発環境はMicrosoft Visual Studio 2005です

178 :デフォルトの名無しさん:2008/10/09(木) 17:20:26
>>176
#include <iostream>
#include <cstdlib>
int main()
{
int i, j, n, r1 = 0, r2 = 0, state = 0;

std::cout << "繰り返し回数 = ";
std::cin >> n;

for (i = 0; i < n; i++) {
j = std::rand() % 2; // 0で左、1で右
if (j == 1) // 右へ動いた
switch (state) {
case 0: // 左へ動いた直後か右へ二回動いた直後
r1++;
state = 1;
break;
case 1:// 右へ一回動いた直後
r1--;
r2++;
state = 0;
break;
default:
break;
}
else
state = 0;
}
std::cout << "一連続は" << r1 << "回 " << "二連続は" << r2 << "回" << std::endl;
}

179 :デフォルトの名無しさん:2008/10/09(木) 17:21:39
>>176
情報が足りなさすぎるということに気づけないレベルなんだなあ。
単位落としちゃえよ。

180 :デフォルトの名無しさん:2008/10/09(木) 19:56:21
>>179


181 :デフォルトの名無しさん:2008/10/09(木) 22:31:09
[1] 授業単元: C言語
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7765.txt
TCPサーバー http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7766.txt
TCPクライアント http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7766.txt
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:Visual stdio2005
 [3.3] 言語:C
[4] 期限:10月10日(金)まで
[5] その他の制限:問題文に記述

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

182 :デフォルトの名無しさん:2008/10/09(木) 22:33:32
すみません

TCPクライアント http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7767.txt

でした


183 :デフォルトの名無しさん:2008/10/09(木) 23:33:58
あと30分で終わらせとか(><

184 :デフォルトの名無しさん:2008/10/10(金) 00:10:16
[1] 授業単元: C++
[2] 問題文: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7768.txt
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:Visual stdio2005
 [3.3] 言語:C
[4] 期限:10月11日(土)まで
[5] 問題文が英語ですいません。期限が短いのですがお願い致します。

185 :デフォルトの名無しさん:2008/10/10(金) 00:26:53
[1] 授業単元:C言語
[2] 問題文:a(n+1)=3a(n)+4b(n)
b(n+1)=2a(n)+3b(n)
  の漸化式で1.4142135を算出するプログラム
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月10日 朝7時まで
[5] その他の制限:特になし

手計算だと5回目に算出できましたが、プログラムに仕方がわかりません;

186 :デフォルトの名無しさん:2008/10/10(金) 00:32:14
>>185
つ数学板

Cの課題とは言えない

187 :デフォルトの名無しさん:2008/10/10(金) 00:33:31
>>185
せめてnはいくつから始めるのかだけでも言え
それがないと漸化式が解けん

188 :デフォルトの名無しさん:2008/10/10(金) 00:36:49
>>186
 数学板行ったらCにいけゆわれました;

>>187
 すみません、nは0からです;

189 :デフォルトの名無しさん:2008/10/10(金) 00:44:22
>>184
#include <iostream>
using namespace std;
int main() {
    for (;;) {
        string name;
        int credit_standing, amount_owed, minimum_payment;
        cin >> name >> credit_standing >> amount_owed;
        if (cin.eof()) break;
        if (credit_standing > 6)
            minimum_payment = (amount_owed <= 20) ? amount_owed
                            : (amount_owed <= 100) ? 10
                            : 0.1 * amount_owed;
        else
            minimum_payment = amount_owed;
        cout << name << " with credit standing " << credit_standing
             << " must pay " << minimum_payment << endl;
    }
    return 0;
}

190 :デフォルトの名無しさん:2008/10/10(金) 00:58:56
>>185
a(0)とb(0)の初期値は?

191 :デフォルトの名無しさん:2008/10/10(金) 00:59:43
>>184 なんだCだったか
#include <stdio.h>
int main() {
    char name[32];
    int credit_standing, amount_owed, minimum_payment;
    while (scanf("%31s %d %d", name, &credit_standing, &amount_owed) == 3) {
        if (credit_standing > 6)
            minimum_payment = (amount_owed <= 20) ? amount_owed
                            : (amount_owed <= 100) ? 10
                            : 0.1 * amount_owed;
        else
            minimum_payment = amount_owed;
        printf("%s with credit standing %d must pay %d\n",
               name, credit_standing, minimum_payment);
    }
    return 0;
}

192 :デフォルトの名無しさん:2008/10/10(金) 01:06:07
>>190
a(0)=7
b(0)=5 です。


193 :デフォルトの名無しさん:2008/10/10(金) 01:11:24
>>192
#include <stdio.h>
double fa(double a_n, double b_n)
{
return 3 * a_n + 4 * b_n;
}
double fb(double a_n, double b_n)
{
return 2 * a_n + 3 * b_n;
}
int main()
{
double an = 7, bn = 5;
double tmp;
int i;
for (i = 0; i < 10; ++i) {
tmp = fa(an, bn);
bn = fb(an, bn);
an = tmp;
}
printf("%.10f\n", an / bn);
return 0;
}


194 :デフォルトの名無しさん:2008/10/10(金) 01:21:24
>>193
 ありがとうございます!!助かりました!!

195 :デフォルトの名無しさん:2008/10/10(金) 01:21:40
>>185 素直に再帰したいけどこれじゃダメなのかな
#include <stdio.h>
int a(int); int b(int);
int a(int n) {
    if (n == 0) return 7;
    else return 3 * a(n-1) + 4 * b(n-1);
}
int b(int n) {
    if (n == 0) return 5;
    else return 2 * a(n-1) + 3 * b(n-1);
}
int main() {
    printf("%.10lf\n", (double)a(10) / b(10));
    return 0;
}

196 :デフォルトの名無しさん:2008/10/10(金) 01:36:07
>>195
 いえいえ全然ダメじゃないです!本当にありがとうございます!

197 :デフォルトの名無しさん:2008/10/10(金) 01:39:40
>>189
ありがとうございました。
ちなみに各customerのコードはどのように入力すればいいのですか?
初心者ですいません。

>>191
すみません、言語はC++でした。
書き間違えてしまいました。
お手数おかけしました。


198 :181:2008/10/10(金) 01:52:36
>>183
すいません言葉足らずでした
改めて貼り直します

[1] 授業単元: C言語
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7765.txt
TCPサーバー http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7766.txt
TCPクライアント http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7767.txt
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:Visual stdio2005
 [3.3] 言語:C
[4] 期限:10月10日(金)13:00まで
[5] その他の制限:問題文に記述

引き続きよろしくお願いいたします

199 :デフォルトの名無しさん:2008/10/10(金) 06:56:37
>>198
TCPサーバー:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7769.txt
TCPクライアント:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7770.txt


200 :デフォルトの名無しさん:2008/10/10(金) 12:03:51
>>199
ありがとうございました

201 :デフォルトの名無しさん:2008/10/10(金) 12:16:32
なぜうp先は関西2ちゃんねらーなんですか

202 :デフォルトの名無しさん:2008/10/10(金) 15:52:19
[1] 授業単元: c言語
[2] 問題文(含コード&リンク): ペイントソフトを作る
[3] 環境
 [3.1] OS: windowsXP
 [3.2] コンパイラ名とバージョン: Visual studio .NET 2003
 [3.3] 言語: c,c++
[4] 期限: 2週間後の火曜まで
[5] その他の制限: MFCを使用しない

線の描画などはできましたが、ペンの太さや色の変更、 操作のやり直しなどが分かりません
どなたかよろしくお願いします

203 :デフォルトの名無しさん:2008/10/10(金) 16:39:02
>>202
単線だけでいいんじゃないの
機能つけるときりがないよ
アンドゥとか特に無理

204 :デフォルトの名無しさん:2008/10/10(金) 17:14:13
>>203
返事ありがとうございます
やはり、アンドゥ機能などは難しいのですかね?
今までc言語はやった事があったのですが
それに比べるとVC++は色々ややこし過ぎて困っています。

画面を左右に分けて、描画とパレットのように分けて作ろうと思っているのですが
雛形みたいなのはあるのでしょうか?

205 :デフォルトの名無しさん:2008/10/10(金) 19:34:20
1] 授業単元:C++
[2] 問題文:ファイルから波形を読み込み、FFTした結果をテキスト出力する
プログラムを作成せよ。

波形のデータは以下のようなものです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7771.txt

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C++
[4] 期限: [無制限]
[5] その他の制限:まだCの勉強が浅く、色々と検索してみましたがどうもバタフライ演算の
やり方が難しく分かりません。。何か説明不足があれば聞いてください。
FFTで詰まってしまい困っています。どうか、よろしくお願いしますm(_ _)m


206 :デフォルトの名無しさん:2008/10/10(金) 19:35:12
>>204
宿題できてんじゃん。
色・ふとさ固定、undoできないなどの機能制限がたくさんあるが、それは立派なペイントソフトだよ。

さらに機能追加をしたいのであれば必要に応じてデバイスコンテキストに関する質問その他を
やってけば?宿題スレじゃなく。


207 :デフォルトの名無しさん:2008/10/11(土) 01:02:05
どなたか>>100お願いできませんか

208 :デフォルトの名無しさん:2008/10/11(土) 02:44:59
>>207
鬱になったので、途中から手を抜いてしまった。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7772.zip
PerlでもRubyでも好きなの使った方がラクダと思うけどキリンか。

209 :デフォルトの名無しさん:2008/10/11(土) 02:57:37
>>204
汚いけど、これじゃだめ??


http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7773.zip

210 :デフォルトの名無しさん:2008/10/11(土) 02:59:33
>>204じゃなくて>>207でした(´・ω・`)

211 :デフォルトの名無しさん:2008/10/11(土) 08:13:31
>>202
線じゃなくて、点を打つようにすると太さ変えるのも楽になる
お絵かきチャットでは、線と線を結んでる場合が多いけど
ローカルで使えるペイントソフトはたいてい点を打って点を繋いでると思われる
点をつなげるのは、結構めんどい

アンドゥは、やり方がいくつかある
画像として管理するか
数値データとして管理するか、かな。
突貫でいいなら画像として管理するのを作ったほうが楽かもしれない
どちらが得意かによる

212 : ◆ZnBI2EKkq. :2008/10/11(土) 12:00:32
[1] 授業単元:情報処理A
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7774.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Cygwin gcc 3.4.4
 [3.3] 言語:C
[4] 期限:2008年10月17日 16:00まで
[5] その他の制限:scanf関数は禁止、再帰呼び出しを用いること、エラー処理を入れること

今もやっているのですが、とても期限までに終わる気がしません。。。
誰か助けてください。


213 :デフォルトの名無しさん:2008/10/11(土) 15:35:33
[1] 授業単元:c++ builder
[2] 加算平均を求めよ
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン: c++ builder5
 [3.3] 言語: どちらでも可
[4] 期限:2008年10月13日まで

テキスト1には   テキスト2には   テキスト3には
   8         3        4
   5         4        7
   7         9        9
   8         8        5 
   9         3        4
   9         8        9

という形で与えられており、これをOpendialogで読み込んで加算平均しMemo1に

5.33333
8.33333

5.33333
8.66666

のように計算したものを出したいのですがどのようにすればよいでしょうか?
全然わからなくて何度か自分なりにつくっているのですが、うまくいきません。
どなたか助けてもらえませんか
読み込みはなんとかできそうですが加算平均の配列の計算のプログラムの作り方が
どうしてもわかりません。
よろしくお願いします。

214 :デフォルトの名無しさん:2008/10/11(土) 16:00:03
>>213 Opendialog っていうのが分からなかった
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define NUMBER_OF_FILES 3
int main(void){
FILE *fp_in[NUMBER_OF_FILES], *fp_out;
char *filename_in[NUMBER_OF_FILES]={"テキスト1", "テキスト2", "テキスト3"}, *filename_out="Memo1";
double value[NUMBER_OF_FILES], sum;
int i;
for(i=0;i<NUMBER_OF_FILES;i++){
if((fp_in[i]=fopen(filename_in[i], "r"))==NULL){
fprintf(stderr, "\nError: %s cannot open.\n", filename_in[i]);
exit(1);
}
}
if((fp_out=fopen(filename_out, "w"))==NULL){
fprintf(stderr, "\nError: %s cannot open.\n", filename_out);
exit(2);
}
while(1){
for(i=0,sum=0.0;i<NUMBER_OF_FILES;i++){
if(fscanf(fp_in[i], "%lf", &value[i])!=1) break;
sum+=value[i];
}
if(i<NUMBER_OF_FILES) break;
fprintf(fp_out, "%g\n", floor(sum/NUMBER_OF_FILES*100000)/100000);
}
for(i=0;i<NUMBER_OF_FILES;i++) fclose(fp_in[i]);
fclose(fp_out);
return 0;
}

215 :デフォルトの名無しさん:2008/10/11(土) 16:01:28
>>212
マージャン知らないと不利な課題だな。

216 :デフォルトの名無しさん:2008/10/11(土) 16:07:36
>>212
http://www5f.biglobe.ne.jp/~kenmo/program/majang/yaku/yaku.html

参考になるかも?

217 :デフォルトの名無しさん:2008/10/11(土) 16:49:40
>>207 >>100
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7776.zip
一応動くようにしてみた。コマンドライン引数は、すべて実装しているわけではない。
後は好きなようにしてくれ。

218 :デフォルトの名無しさん:2008/10/11(土) 17:14:43
>>207 >>100
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7777.zip
>>217 の細かい修正とエラー処理追加しておいた。荒れそうなので、これくらいにしておく(鬱)。

219 :デフォルトの名無しさん:2008/10/11(土) 20:58:59
>>218ありがとうございます。
>>209ファイル入力、標準出力はうまくいきました。
標準入出力、ファイル入出力を成功させるにはどうしたらいいでしょうか。


220 :デフォルトの名無しさん:2008/10/11(土) 21:08:15
[1] 授業単元: 測量学
[2] 問題文:"度"形式から"度分秒"形式への変換
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: コマンドプロンプト バージョンはすいません分からないです。
 [3.3] 言語: C言語
[4] 期限: 10月13日(月)まで
[5] その他の制限: 簡単な関数のみでお願いします。

(例)
35.2361 → 35°14′9.96″
変換式は、まず
35.2361の小数点部分の0.2361×60=14.166
この結果の整数部分の14が分になります。
そして、14.166の小数点部分の0.166×60=9.96
この結果の9.96が秒になります。
初期値35.2361も出力値35°14′9.96″も文字列です。
初期値が35.2361ではなく、何が初期値でも通用するようにしてください。
また、初期値の小数点以下が2361と4桁と決まっているわけでもありません。

221 :デフォルトの名無しさん:2008/10/11(土) 21:46:26
>>220
http://pc11.2ch.net/test/read.cgi/tech/1221144557/312-315

222 :デフォルトの名無しさん:2008/10/11(土) 22:01:49
>>220
#include<stdio.h>
#include<math.h>

void convert(char *dms, const char *deg)
{
double x, d, m;
sscanf(deg, "%lf", &x);
x = fabs(modf(x, &d) * 60);
x = modf(x, &m) * 60;
sprintf(dms, "%g°%g′%g″", d, m, x);
}

int main()
{
static const char deg[] = "-35.2361";
char dms[100];
convert(dms, deg);
printf("%s\n", dms);
return 0;
}

223 :213:2008/10/11(土) 22:03:42
>>214
即レスありがとうございます。大変感謝しています;;
Opendialogはc++builder5のダイアログでファイルを開くというコマンドを示しています
わざわざプログラムを書いていただいたのですが、これをc++builderに
置き換えていくことができませんでした。すいません;;
自分でも今まで書いていたのですが、Memo1には-2と一行書き出されるだけでした;
多分読み込んだ配列の計算としての基本的な計算とプログラムが間違っていると思うのですが、
自分ではどこが間違っているのかわかりませんでした。。
どなたかよければ教えていただけないでしょうか。よろしくお願いします><

224 :213:2008/10/11(土) 22:08:40
void __fastcall TForm1::Button1Click(TObject *Sender) ファイルを開いてテキスト1を読み込む
{
OpenDialog1->Execute();

Fname1 = OpenDialog1->FileName;

Edit1->Text = Fname1;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender) テキスト2を読み込む
{
OpenDialog1->Execute();

Fname2 = OpenDialog1->FileName;

Edit2->Text = Fname2;
}

225 :213:2008/10/11(土) 22:09:10
void __fastcall TForm1::Button3Click(TObject *Sender) テキスト3を読み込む
{
OpenDialog1->Execute();

Fname3 = OpenDialog1->FileName;

Edit3->Text = Fname3;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender) 3つのテキストを加算平均してMemo1に書き出す
{
AnsiString kasan;
char Fname1[5],Fname2[5],Fname3[5];

for(m=0;m<=5;m++);
{
kasan = (Fname1[m] + Fname2[m] + Fname3[m])/3;
}

Memo1->Lines->Add(kasan);



226 :213:2008/10/11(土) 22:10:31
長文失礼しました。。
こんな感じです。


227 :デフォルトの名無しさん:2008/10/12(日) 03:30:31
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Dialogs.hpp>
#include <fstream>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE 管理のコンポーネント
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TButton *Button1;
TButton *Button2;
TButton *Button3;
TButton *Button4;
TOpenDialog *OpenDialog1;
TMemo *Memo1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
private: // ユーザー宣言
AnsiString Fname1;
AnsiString Fname2;
AnsiString Fname3;

228 :デフォルトの名無しさん:2008/10/12(日) 03:31:35
public: // ユーザー宣言
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

これがUnit1.hね

それからUnit1.cpp

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->Execute();
Fname1 = OpenDialog1->FileName;
Edit1->Text = Fname1;
}

229 :デフォルトの名無しさん:2008/10/12(日) 03:32:24
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
OpenDialog1->Execute();
Fname2 = OpenDialog1->FileName;
Edit2->Text = Fname2;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
OpenDialog1->Execute();
Fname3 = OpenDialog1->FileName;
Edit3->Text = Fname3;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
std::ifstream ifs[3];

ifs[0].open(Fname1.c_str());
ifs[1].open(Fname2.c_str());
ifs[2].open(Fname3.c_str());
for (int i = 0; i < 6; i++) {
double sum, t1, t2, t3;

ifs[0] >> t1;
ifs[1] >> t2;
ifs[2] >> t3;
sum = (t1 + t2 + t3) / 3;
Memo1->Lines->Add(AnsiString(sum));
}
}

230 :213:2008/10/12(日) 03:59:24
>>227>>228>>229
ありがとうございました!
おかげで正しく算出することができました><

231 :デフォルトの名無しさん:2008/10/12(日) 04:15:13
[1] 授業単元:アルゴリズム
[2] 引数nに対して、1/nの小数表示を逆配列と動的配列を用いた形でプログラムせよ
  http://kk.kake.info.waseda.ac.jp/ads08/Cbasics/one-n-th.html
[3] 環境
 [3.1] OS: Windows
 [3.2] cygwin gcc 3.4
 [3.3] 言語: C
[4] 期限: [2008年10月12日00:00まで]
[5] 特になし

全然わかりません……どなたか助けて頂けると幸いです……

232 :デフォルトの名無しさん:2008/10/12(日) 13:29:10
>>231
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7778.c

233 :デフォルトの名無しさん:2008/10/12(日) 14:05:25
>>232
動きました!
あぁ…なんといっていいやら……ありがとうございます!!
これからプログラムの挙動について考えてみたいと思います


234 :デフォルトの名無しさん:2008/10/12(日) 20:21:40
てs

235 :デフォルトの名無しさん:2008/10/12(日) 21:59:38
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):任意の長さの文字列(英字のみ)データをファイルから読み込み(ファイル名をキーボードから入力して読み込ませる)、辞書順に並べ替えて最終結果のみを表示するプログラムを作成せよ。
ただし、データは改行で区切られており、文字列の最大長を64文字、データの最大個数を1000個(1000行)とする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc (バージョン不明です)
 [3.3] 言語: C言語
[4] 期限: 2008年10月14日23:59まで
[5] その他の制限: バブルソートの基本らしいのですが…str〜、getsなど使用する関数や、とりあえず、配列とポインタを使わないといけないんだろう、など断片的なものにしか自信が、持てずプログラムを組んでみたものの実行できません…orz
助けてください…。


236 :デフォルトの名無しさん:2008/10/12(日) 22:05:11
>>235
問題文には含んでないけど
結局バブルソートは自分で書かなきゃだめなのか?
平たくいえばqsortとstrcmp使っていいか?


237 :デフォルトの名無しさん:2008/10/12(日) 22:15:10
>>236
qsortという関数はまだ習っていないのでなるべく控えたいのですが、strcmpは自分がプログラムを組んでみた時にも使用しましたので使っていただいて大丈夫です。
早速ありがとうございます。

238 :デフォルトの名無しさん:2008/10/12(日) 22:31:36
>>235
#include<stdio.h>
#include<string.h>
#define WORD_NUM_MAX 1000
#define WORD_LEN_MAX 64
int main(void){
char word[WORD_NUM_MAX][WORD_LEN_MAX+1+1], tmp[WORD_LEN_MAX+1], *p;
char filename[256];
int i, j, word_num;
FILE *fp;
printf("Input filename : ");
scanf("%255[^\n]", filename);
if((fp=fopen(filename, "r"))==NULL) return 1;
for(word_num=0;word_num<WORD_NUM_MAX;word_num++){
if(fgets(word[word_num], sizeof(word[0]), fp)==NULL) break;
if((p=strchr(word[word_num], '\n'))!=NULL) *p='\0';
}
fclose(fp);
for(i=0;i<word_num;i++){
for(j=0;j+1<word_num-i;j++){
if(strcmp(word[j], word[j+1])>0){
strcpy(tmp, word[j]);
strcpy(word[j], word[j+1]);
strcpy(word[j+1], tmp);
}
}
}
for(i=0;i<word_num;i++) puts(word[i]);
return 0;
}

239 :デフォルトの名無しさん:2008/10/12(日) 23:21:54
[1] 授業単元:c++ builder
[2] 3科目4人分の得点と科目ごと、個人ごとの平均点を配列を使って作れって
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン: c++ builder5
 [3.3] 言語: どちらでも可
[4] 期限:2008年10月13日まで



240 :デフォルトの名無しさん:2008/10/12(日) 23:57:56
>>239
とりあえずgccでは動いた。

#include <stdio.h>

int main(int argc, char *argv[]) {
int score[4][3] = {{90,73,82},{60,50,55},{71,59,80},{95,88,80}};
int i,j;

double personAvg[4];
double classAvg[3];

printf("人別平均\n");

for(i=0; i<4; i++) {
for(j=0; j<3; j++) {
personAvg[i] += score[i][j];
}
personAvg[i] /= 3;
printf("%f\n", personAvg[i]);
}

printf("科目別平均\n");

for(j=0; j<3; j++) {
for(i=0; i<4; i++) {
classAvg[j] += score[i][j];
}
classAvg[j] /= 4;
printf("%f\n", classAvg[j]);
}
}

241 :デフォルトの名無しさん:2008/10/13(月) 00:07:50
>240
ありがとうございました・・・

世の中すてたもんじゃないっておもいました・・
本当に困ってたので・・・

242 :デフォルトの名無しさん:2008/10/13(月) 00:17:33
>>241
妙な授業単元に問題文
ついでに抜けてる部分を修正できると思えない人間
言葉からにじみ出てくる、「俺は悪くないよ」オーラ
世の中ろくなもんじゃないよ

243 :デフォルトの名無しさん:2008/10/13(月) 00:28:25
それは本当の優しさなのだろうか。



244 :デフォルトの名無しさん:2008/10/13(月) 00:53:39
下記の問題をやっていただける方いませんか?よろしくお願いします
[1]
情報処理
[2]
ある自然数nがある。
このnを和に分解するすべての場合を列挙しなさい。
なお、以下の例のように順列でも組み合わせでもかまわない。

n = 4
1 1 1 1
1 1 2
1 2 1
1 3
2 1 1
2 2
3 1

n = 4
1 1 1 1
1 1 2
1 3
2 2
3 1

[3]
 [3.1] Linux
 [3.2] gcc4.0
 [3.3] C言語
[4]
10月15日23:59
[5] 再帰について習いました

245 :デフォルトの名無しさん:2008/10/13(月) 01:18:06
>>244
#include<stdio.h>
#define N_MAX 100
int g_result[N_MAX];
void bar(int result_num, int n){
int i;
if(n<=0){
for(i=0;i<result_num;i++) printf(" %d", g_result[i]);
printf("\n");
return;
}
for(i=1;i<=n;i++){
g_result[result_num]=i;
bar(result_num+1, n-i);
}
}

void foo(int n){
int i;
if(n>N_MAX) return;
for(i=1;i<=n-1;i++){
g_result[0]=i;
bar(1, n-i);
}
}
int main(void){
int n=4;
printf("n = %d\n", n);
foo(n);
return 0;
}

246 :デフォルトの名無しさん:2008/10/13(月) 02:55:57
じゃあ僕は組み合わせで。

#include<stdio.h>
#include<string.h>
int partition(int n,int m,char *exp);
int main(void){
int i,n,c;
do{
printf("nを入力してください。 n=");
scanf("%d",&n);
c=0;
for(i=n;i>0;i--) c += partition(n,i,"");
printf("Total:%d\n",c);
}while(n != 0);
return 0;
}
int partition(int n,int m,char *exp){
int i,c=0;
char ex[100]="";
if(n==m){
printf("%s%d\n",exp,m);
return 1;
}
if(m==0) return 0;
if(n>m){
sprintf(ex,"%s%d+",exp,m);
for(i=m;i>0;i--) c += partition(n-m,i,ex);
return c;
}
return 0;
}

247 :デフォルトの名無しさん:2008/10/13(月) 02:57:17
>>245
どうもありがとうございました。

248 :デフォルトの名無しさん:2008/10/13(月) 02:58:05
>>246
こちらもどうもありがとうございました。

>>245,246
ソースを理解していきたいです。

249 :デフォルトの名無しさん:2008/10/13(月) 11:00:03
どなたか >>205 お願いできませんでしょうか・・

250 :デフォルトの名無しさん:2008/10/13(月) 12:54:17
[1] 授業単元: C
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7781.txt
[3] 環境
 [3.1] OS: WindowsXP 
[3.2] コンパイラ名とバージョン:VB2008
 [3.3] 言語: C++
[4] 期限: 10/14まで
[5] その他の制限: 特になし。

どなたか、お願いします。

251 :デフォルトの名無しさん:2008/10/13(月) 14:09:18
>>249
ネットでぱくれ

252 :デフォルトの名無しさん:2008/10/13(月) 14:34:26
2次方程式ax^2+bx+cの根を計算するプログラムをかきなさい。

という問題です。
//二次方程式の根を計算するプログラム
#include <stdio.h>
void main () {
double a, b, c, d;
printf("3つの数字を入力してください");
scanf("%d %d %d", &a ,&b ,&c);
d = b*b-4*a*c;
printf("二次方程式の根は%d\n",d);
}

のように書いたのですがすべて答えが同じになってしまいます
お願いします。

253 :デフォルトの名無しさん:2008/10/13(月) 14:36:35
%d →%f

254 :デフォルトの名無しさん:2008/10/13(月) 14:38:04
>>252
> 2次方程式ax^2+bx+cの根を計算するプログラムをかきなさい。
>
> という問題です。
> //二次方程式の根を計算するプログラム
> #include <stdio.h>
> void main () {
> double a, b, c, d;
> printf("3つの数字を入力してください");
> scanf("%d %d %d", &a ,&b ,&c);
> d = b*b-4*a*c;
> printf("二次方程式の根は%d\n",d);
> }
>
> のように書いたのですがすべて答えが同じになってしまいます
> お願いします。

> scanf("%d %d %d", &a ,&b ,&c);
scanf("%lf %lf %lf", &a ,&b ,&c);

> printf("二次方程式の根は%d\n",d);
printf("二次方程式の根は%f\n",d);


255 :235:2008/10/13(月) 16:30:13
>>238
お礼が遅れてすいません、ありがとうございます。
…しかしながら…自分の説明不足のせいで大変申し訳ないのですが、
問題文中の「辞書順」=「大文字小文字も区別する」ということなのです…。
つまり、
A<a<B<b<C<c<D<d<・・・・・・・・・・・・・<X<x<Y<y<Z<z
このように並べ替えたいのです。
>>238さんのプログラムを参考に自分でももう少し考えてみますが、あまり自信がないので手助けしていただけたら幸いです…。

大変申し訳ないです。

256 :デフォルトの名無しさん:2008/10/13(月) 17:26:45
>>253
>>254
ありがとうございます。

どうやら自分が勘違いしてたようで根は二次方程式の解そのものみたいです。
少し自分でも書きなおしてみましたが教科書には
a=0の場合は1次方程式,b=0かどうかをチェックする必要がある。
二次方程式は判別式の符号をチェックする必要があるとかいてありそれがよくわかりません。
よろしくおねがいします。

#include <stdio.h>
#include <math.h>
void main () {
double a, b, c, d;
printf("3つの数字を入力してください");
scanf("%lf %lf %lf", &a ,&b ,&c);
d = sqrt(b*b-4*a*c);
printf("二次方程式の根は%lf,%lf\n",-b+d/2*a,-b+d/2*a);
}



257 :デフォルトの名無しさん:2008/10/13(月) 17:38:24
>>256
判別式が負だったらどうすればいいの
解なしと表示するのか虚数まで表示するのか


258 :デフォルトの名無しさん:2008/10/13(月) 17:59:25
>>257
虚数表示でいいと思います。

259 :デフォルトの名無しさん:2008/10/13(月) 19:37:42
>>235>>255
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7782.c
main()はあまりいじってない。もっとクールな比較関数を誰か頼む。

260 :デフォルトの名無しさん:2008/10/13(月) 19:49:40
それなんてstrcasecmp

261 :デフォルトの名無しさん:2008/10/13(月) 19:51:29
こうするだけでよくね?

#include<stdio.h>
#include<string.h>
#define WORD_NUM_MAX 1000
#define WORD_LEN_MAX 64
int main(void){
char word[WORD_NUM_MAX][WORD_LEN_MAX+1+1], tmp[WORD_LEN_MAX+1], *p;
char filename[256];
int i, j, word_num;
int icmp;
FILE *fp;
printf("Input filename : ");
scanf("%255[^\n]", filename);
if((fp=fopen(filename, "r"))==NULL) return 1;
for(word_num=0;word_num<WORD_NUM_MAX;word_num++){
if(fgets(word[word_num], sizeof(word[0]), fp)==NULL) break;
if((p=strchr(word[word_num], '\n'))!=NULL) *p='\0';
}
fclose(fp);
for(i=0;i<word_num;i++){
for(j=0;j+1<word_num-i;j++){
if((icmp = stricmp(word[j], word[j+1])) == 0 && strcmp(word[j], word[j+1])>0 || icmp >0){
strcpy(tmp, word[j]); strcpy(word[j], word[j+1]); strcpy(word[j+1], tmp);
}
}
}
for(i=0;i<word_num;i++) puts(word[i]);
return 0;
}

262 :259:2008/10/13(月) 20:19:53
>>260>>261
strcasecmp()もstricmp()も
A<a<B<b<C<c<D<d<・・・・・・・・・・・・・<X<x<Y<y<Z<zの順にならないと思うのだが。
strcasecmp()は、実際にthe The The the the みたいになってうまくいかなかった。
stricmp()も、比較前に文字列を小文字にするから、同じだろう。

263 :デフォルトの名無しさん:2008/10/13(月) 20:40:25
小文字で比較して一緒だったら、大文字も考慮して比較すればいいと思ったけど、だめなのかなぁ。

264 :259:2008/10/13(月) 21:07:41
if ( ((icmp = stricmp(word[j], word[j+1])) == 0 && strcmp(word[j], word[j+1])>0) || icmp >0 )
たしかに、論理的にもこれでいけますね。
stricmp()なかったので、作ってやってみました。

265 :デフォルトの名無しさん:2008/10/13(月) 21:56:11
>>250

の、すごろくをどなたかお願いします。

266 :デフォルトの名無しさん:2008/10/13(月) 21:57:22
>>261
The book // 1番目
the apple // 3番目
tHe earth // 2番目

これを並べ替えると

the apple // 3番目
The book // 1番目
tHe earth // 2番目

こうなったよ

267 :デフォルトの名無しさん:2008/10/13(月) 22:17:21
>>258#include <stdio.h>
#include <math.h>
int main() {
  double a, b, c, d, x;
  printf("a^2 * x + b * x + c = 0となるa, b, cを入力してください\n");
  scanf("%lf %lf %lf", &a ,&b, &c);
  if (a == 0) {
    puts("2次方程式ではありません");
    return 1;
  }
  b /= a;
  if (c == 0) {
    printf("x = %g, 0\n", -b);
  } else {
    c /= a;
    b /= 2; /* x^2 + 2b'x + c = 0の形へ */
    d = b * b - c; /* 判別式 */
    if (d > 0) {
      if (b > 0) {
        x = -b - sqrt(d);
      } else {
        x = -b + sqrt(d);
      }
      printf("x = %g, %g\n", x, c / x);
    } else if (d < 0) {
      printf("x = %g ± %gi\n", -b, sqrt(-d));
    } else {
      printf("x = %g\n", -b);
    }
  }
  return 0;
}

268 :デフォルトの名無しさん:2008/10/13(月) 22:18:01
C言語による最新アルゴリズム事典には、解の公式をそのまま使うと、
|b| ≒ √(b^2 - 4ac)のとき桁落ちを起こすから、桁落ちしないほうだけ公式で求めて、
残りは解と係数の関係(解α, βとしてαβ = c / a)で求めろって書いてあるからそうした。

269 :259:2008/10/13(月) 22:56:37
>>266 のおっしゃる通りでした。
一瞬、そのテストケースもあったのか、と思ったが、
>>[2] 問題文(含コード&リンク):任意の長さの文字列(英字のみ)データ(>>235)
だから、スペースが入る文字列はテストケースとしては、条件外になる。
しかし、指摘通り今回の問題では、>>261では、スペースをのぞいてひとつの文字列に見せかけて食わせたとき、大文字優先の原則に従っていなくなりますね。

私は、単語だけと思っていたけど、英字だけの文字列だったのね。
これ以上出ると荒れそうなので、私が出るのは止めておくが、誰か>>259よりクールな比較関数頼む。

270 :デフォルトの名無しさん:2008/10/13(月) 23:12:12
>>250
>>265

ほい、
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7783.txt

でも、VB2008じゃないんで…
VC6なんて、iostreamとかの .h とかは自分の環境に合わせてくれ
それと、ゴール出来ない双六が出来る可能性もあると言えばある

271 :デフォルトの名無しさん:2008/10/13(月) 23:44:10
てか、strcmpだけで正しく辞書順になるんじゃね?頭こんがらがってきた\(^o^)/

272 :デフォルトの名無しさん:2008/10/13(月) 23:55:22
>>271
いやasciiコードだとして英字が
A-Zがならんでその次にa-zになるじゃん

273 :デフォルトの名無しさん:2008/10/14(火) 00:22:14
でも、strcmpの戻り値は辞書式で比較した値でしょ??
http://msdn.microsoft.com/ja-jp/library/e0z9k731(VS.80).aspx
難しく考えなくていいんじゃない??

274 :デフォルトの名無しさん:2008/10/14(火) 00:47:53
Order by case insensitive dictionary order,dictionary order.

Are you OK?

275 :デフォルトの名無しさん:2008/10/14(火) 00:58:30
>>235
>>238 にこれを追加して strcmp を mystrcmp に変更すれば希望通りになる筈
int mystrcmp(const unsigned char *a, const unsigned char *b){
static int table[256], is_table_initialized=0;
int i;

if(!is_table_initialized){
for(i=0;i<256;i++) table[i]=i*2;
for(i=0;i<26;i++) table['a'+i]=table['A'+i]+1;
is_table_initialized=1;
}
for(;*a!='\0';a++,b++) if(*a!=*b) break;
return table[*a]-table[*b];
}

276 :デフォルトの名無しさん:2008/10/14(火) 02:04:40
>>273
「辞書式順序」 (dictionary order)というのは英和辞典なんかの並び順のことじゃないぞ。
きちんとした定義を持った数学用語。
http://ja.wikipedia.org/wiki/%E8%BE%9E%E6%9B%B8%E5%BC%8F%E9%A0%86%E5%BA%8F
1文字目が同じなら2文字目の大小で比較し、
2文字目も同じなら3文字目の大小で比較し、……という順序付けのこと。
>>275なんかももちろん辞書式順序。

strcmpは各文字の大小比較を単純に文字コードの値で比較しており、
それだと>>273の言うとおりなので、>>255の要求には沿わないわけ。

277 :デフォルトの名無しさん:2008/10/14(火) 13:19:06
どなたか>>162の問題をお願いできないでしょうか?

278 :デフォルトの名無しさん:2008/10/14(火) 13:23:04
>>277
このスレを「すごろく」で検索

279 :デフォルトの名無しさん:2008/10/14(火) 15:00:10
[1] 授業単元:プログラミング言語
[2] 問題文:直角三角形の直行する2辺の長さ、a、bともに正の整数(n≧0)が与えられた時、斜辺の長さcをプリントするプログラムを書き、数例に対して実行せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:2008年10月15日まで
[5] その他の制限:floatを使えと指示されました。


習い始めたばかりでまったくと言っていいほどわかりません。呆れるほど簡単な問題かもしれませんが、よろしくお願いします!

280 :デフォルトの名無しさん:2008/10/14(火) 15:08:38
>>279
俺にも出来そうな問題がきた
#include <stdio.h>
#include <math.h>

int main(void)
{
int a, b;
float c;
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
c = (float)sqrt(a * a + b * b);
printf("\n答え %f\n", c);
return 0;
}
>数例に対して実行せよ。
の意味がわからないので入力値で計算させた

281 :デフォルトの名無しさん:2008/10/14(火) 15:22:09
>>280
ありがとうございます!

もう一つお聞きしてもよろしいですか?
書いていただいたプログラムをこのままコピーしてコンパイルして実行したら未定義のシンボルsqrtとか重大なエラーとか出てきてしまったんですが、
この場合はどうすればよろしいのでしょうか?

282 :デフォルトの名無しさん:2008/10/14(火) 15:23:58
>>281
gcc -lm hoge.c
かな

283 :デフォルトの名無しさん:2008/10/14(火) 15:29:34
>>282
できました!!本当にありがとうございます!!!
こんな見ず知らずの勉強不足クソ野郎にもかかわらず、ご親切に教えていただきまして大変感謝しております。

ありがとうございました!

284 :デフォルトの名無しさん:2008/10/14(火) 15:39:34
sqrtくらい実装した方がいい

285 :デフォルトの名無しさん:2008/10/14(火) 15:47:42
たとえばroot(n,c) cのn乗根の作り方

x=n√cとおくとx^n=cとなる。f(x)=x^n-cという関数の根を求めればいい
一般に、f(x)の根はニュートン法で計算できる。

点aでfに接する直線の方程式は、y = f'(a)(x-a) + f(a)
これがy=0としてxについてとくと、x = a + f(a)/f'(a)
この値を新たにaとしておいて、同様の操作をすると収束すれば解が求まる。

286 :デフォルトの名無しさん:2008/10/14(火) 15:56:34
コンパイルは通してないがおおかたこんな通りだろう

float pow(int n, float c){
int k; float a=1;
for( k=0; k<n; k++)a*=c;
return a; }

float root(int n, float c){
int k; float a=c;
for( k=0; k<50; k++) a += (pow(n,a)-c)/(n*pow(n-1,a));
return a; }

287 :デフォルトの名無しさん:2008/10/14(火) 16:03:24
#include <stdio.h>

float pow(int n, float c){
int k; float a=1;
for( k=0; k<n; k++)a*=c;
return a; }

float root(int n, float c){
int k; float a=c;
for( k=0; k<50; k++) a -= (pow(n,a)-c)/(n*pow(n-1,a));
return a; }

float sqr(float c){ return root(2,c); }



int main(){
printf("√2 =%f\n",sqr(2));
printf("√3 =%f\n",sqr(3));
}

288 :デフォルトの名無しさん:2008/10/14(火) 16:06:45
微分、積分して関数で返すライブラリってある?

289 :デフォルトの名無しさん:2008/10/14(火) 16:44:57
こっちの方が速い
#include <stdio.h>

#define GOSA 0.00001
double pow(int n, double c){
int k; double a=1;
for( k=0; k<n; k++) a*=c;
return a; }


float root(int n, float c){
double x=c,y,z;
while(1){
y=pow(n-1,x); z=x*y;
if(z>c-GOSA && z<c+GOSA)break;
x -= (z-c)/(n*y);
printf("root( %d , %.1f )の計算経過 %f\n",n,c,x);
}
return x; }

float sqr(float c){ return root(2,c); }



int main(){
printf("√2 =%f\n\n",sqr(2));
printf("√3 =%f\n\n",sqr(3));
}

290 :デフォルトの名無しさん:2008/10/14(火) 16:52:47
これでいいか

#define GOSA 0.00001
float sqr(float c){
double x=c,y;
while(1){
y=x*x;
if(y>c-GOSA)if(y<c+GOSA)break;
x -= (y-c)/(2*x);
printf("sqr( %.1f )の計算経過 %f\n",c,x);
}
return x; }

291 :デフォルトの名無しさん:2008/10/14(火) 17:04:40
みなさまに質問があります。若干スレチになるかもしれんが、一つ力を貸してくれないだろうか…

292 :デフォルトの名無しさん:2008/10/14(火) 17:09:06
質問ならもっとふさわしいスレがあるだろう
ここは宿題をやってもらうスレ

293 :デフォルトの名無しさん:2008/10/14(火) 17:09:39
標準ライブラリ速いな どうやったら速度を抜けるだろうか?


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

#define GOSA 0.0001
float sqr(float c){
double x=c,y;
while(1){
y=x*x;
if(y>c-GOSA)if(y<c+GOSA)break;
x -= (y-c)/(2*x);}
return x; }


int main(){
double sum;
int n,cl;
sum=0; cl=clock(); for(n=0;n<1000000;n++)sum+=sqr(1000);
cl=clock()-cl; printf("time=%d sum=%f\n",cl,sum);
sum=0; cl=clock(); for(n=0;n<1000000;n++)sum+=sqrt(1000);
cl=clock()-cl; printf("time=%d sum=%f\n",cl,sum);
}

294 :デフォルトの名無しさん:2008/10/14(火) 17:09:52
>>292

そうだな。すまん。

295 :デフォルトの名無しさん:2008/10/14(火) 19:18:31
ソースみればいいだろ標準の

296 :デフォルトの名無しさん:2008/10/14(火) 19:55:39
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7784.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] Linux
 [3.3] 言語: C
[4] 期限: 明日の朝
[5] その他の制限:出来るだけ簡単に

意味不明なんでお願いします。

297 :デフォルトの名無しさん:2008/10/14(火) 20:59:43
#include <stdio.h>
int main(void)
{
FILE *fp;
int m, p1, p2, s1 = 0, s2 = 0;
char *member[] = {"", "会","特","非"};

if((fp=fopen("data03.dat", "r"))==NULL) return 0;

printf("種別  購入金額(円) 支払い金額(円)\n");
while(fscanf(fp, "%d%d", &m, &p1)==2) {
switch(m) {
case 1: p2 = p1 * 9 / 10;
break;
case 2: p2 = p1 * 7 / 10;
break;
case 3: p2 = p1 < 15000 ? p1 : p1 - 1000;
break;
}
printf(" %s %15d%15d\n", member[m], p1, p2);
s1 += p1, s2 += p2;
}

printf("---------------------------------------\n");
printf("合計%15d%15d\n", s1, s2);

return 0;
}

298 :デフォルトの名無しさん:2008/10/14(火) 21:08:06
>>296
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7785.txt

299 :デフォルトの名無しさん:2008/10/14(火) 22:36:32
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7786.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] Linux
 [3.3] 言語: C
[4] 期限: 明日の昼
[5] その他の制限:出来るだけ簡単に

300 :デフォルトの名無しさん:2008/10/14(火) 22:42:31
>>296 == >>299 ?

301 :デフォルトの名無しさん:2008/10/14(火) 23:03:00
>>299 手ごわかったぜ
#include<stdio.h>
int nabeatu(int num){
if(num%3==0) return 1;
for(;num>0;num/=10) if(num%10==3) return 1;
return 0;
}
int main(void){
int i, n=100, nabeatu_count=0, stop_flag=0;
printf("自然数を入力してください。\n");
scanf("%d", &n);
for(i=1;i<=n;i++){
if(nabeatu(i)){
nabeatu_count++;
if(nabeatu_count>10 && n-i>30){
static int is_first=1;
if(is_first){
printf("〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜\n"
" すいません、打つの大変なので中略します><\n"
"〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜\n");
}
is_first=0;
stop_flag=1;
}else{
if(!stop_flag) printf(" %5d%.*s", i, !(nabeatu_count%5), "\n");
if(nabeatu_count%5==0) stop_flag=0;
}
}
}
return 0;
}

302 :デフォルトの名無しさん:2008/10/14(火) 23:15:36
成績をつけるプログラムを教えてほしいです。

80点以上100点以内 A
65点以上80点未満  B
50点以上65点未満  C
0点以上50点未満   D

それ以外の整数に対しては「ありえない」と出す



303 :デフォルトの名無しさん:2008/10/14(火) 23:18:00
>>302
if elseでも並べておけば?

304 :デフォルトの名無しさん:2008/10/14(火) 23:19:28
>>303
A・B・C・Dに分けれたのですが、101など100を超える場合を組み込めません

305 :デフォルトの名無しさん:2008/10/14(火) 23:22:00
if
else if
else if
else if
else ありえない

306 :デフォルトの名無しさん:2008/10/14(火) 23:22:47
#include <stdio.h>
int main(void) {
int score;
scanf("%d",&score);
if(80<=score&&score<=100) printf("A\n");
else if(65<=score&&score<80) printf("B\n");
else if(50<=score&&score<65) printf("C\n");
else if(0<=score&&score<50) printf("D\n");
else printf("ありえない\n");
return 0;
}

307 :デフォルトの名無しさん:2008/10/14(火) 23:22:53
[1] 授業単元:データ構造
[2] 再帰的二分探索
入力の引数をint x(求める値)、int v[]、int n(要素数)の三つを用いて
ループを使用せずに関数の再帰呼び出しを使うこと。
外部変数で値の受渡しはしてはいけない。
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] C
[4] 期限: 10月15日16:00まで
[5] 探索する配列はソート済みのものと考えてよい。

308 :デフォルトの名無しさん:2008/10/14(火) 23:26:38
>>306
できました。
ありがとうございました。

309 :298:2008/10/14(火) 23:43:34
>>301
友達になれそうだなw

310 :デフォルトの名無しさん:2008/10/15(水) 00:01:48
質問です
ある整数が格納されている配列seisuu[4]がある。
その配列の添え字に対応して優先度が格納される配列priority[4]を考える。
整数が小さいほど優先度は高くする。優先度は最高が4最低が0。
格納されている整数が0の場合は優先度は0。
格納されている数字は同じ場合もある。
というのを考えているのですが、
for(i=0 ; i<4 ; i++){
  priority[i] = 1; /* 初期化 */
}
for(i=0 ; i<4 ; i++){
  if(seisuu[i] == 0){
    priority[i] = 0; /* 整数が0なら優先度も0 */
  }else{ /* 整数が0以外のものを発見 */
    for(j=i+1 ; j<4 ; j++){ /* 発見した次の配列から数字のある配列を探索 */
      if(seisuu[j] != 0){ /* 0以外の配列を発見 */
        if(seisuu[i] < seisuu[j]){ /* 最初の方が小さいなら */
          priority[i]++; /* 最初の方の優先度をアップ */
        }else if(seisuu[i] > seisuu[j]){ /* 発見した方が小さいなら */
          priority[j] = priority[i]+1; /* 発見した方の優先度を最初の方の優先度+1 */
        }else{ /* 整数が同じなら */
          priority[i] = priority[j]; /* 優先度を同一とする */
        }
      }
    }
  }
}
このように考えてみたのですが、何か違うような気がします。
指摘等宜しくお願いします。

311 :デフォルトの名無しさん:2008/10/15(水) 00:05:25
5 3 2 3 と入っていたら 2 1 0 1 としたいということ?

312 :デフォルトの名無しさん:2008/10/15(水) 00:20:04
>>311
レスありがとうございます
整数 :5 3 2 3だと
優先度:1 2 3 2
としたいです

313 :デフォルトの名無しさん:2008/10/15(水) 00:40:31
>>312
要素数が4個固定ならガチで見てもいいと思うけど、
増減ありなら、構造体にでも詰めて、ソートしてからの方がいいように思う。

314 :デフォルトの名無しさん:2008/10/15(水) 00:45:00
>>307
int *func(int x, int v[], int n){
int c;

c=n/2;
if(n<=0) return NULL;
if(x<v[c]) return func(x, &v[0], c);
if(x>v[c]) return func(x, &v[c+1], n-c-1);
return &v[c];
}

315 :デフォルトの名無しさん:2008/10/15(水) 01:24:52
>>300 YES
>>301 ちょwこれはwwマジすかww これを参考に考えて見ますwあざす^^

316 :デフォルトの名無しさん:2008/10/15(水) 01:33:31
1] 授業単元: 関数
[2] 問題文(含コード&リンク): 3次元のfloat型の配列 a[3]、b[3]、c[3]を頂点の座標とする三角形ABCを考える。
1.ベクトルの長さを計算する関数を作れ、ただし関数の宣言は以下のようになるようにせよ。
float Vnagasa(float *x);
2.ベクトルの差 z=y−xを計算する関数を作れ。ただし関数の宣言は以下のようになるようにせよ。
void Vhiku(float *x, float *y, float *z);
3.ベクトルの外積z=x×yを計算する関数を作れ。ただし関数の宣言は以下のようになるようにせよ。
void Vgaiseki(float *x, float *y, float *z);
4.上記1,2,3を用いて、ベクトルx、y、zを頂点とする三角形の面積を計算する関数を作れ。
float Vmenseki(float *x, float *y, float *z);
5.1,2,3,4に関してそれぞれ正しく動作しているかどうか確認するプログラムを作れ。
6.ベクトルx、y、z及び原点からなる三角錐の表面積を計算するプログラムを作れ。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 2008年10月20日16:00まで
[5] その他の制限: 自分で関数の宣言をしなくてはならない

4番からがうまく出来ません
お願いします


317 :デフォルトの名無しさん:2008/10/15(水) 02:53:16
[1]C言語初級
[2]次のコードを並べ替えて動作するものにせよ。また
動作仕様を簡潔に述べよ。(コンパイル可能なコードと
動作仕様署を提出)
for(k=0,j=1;j<=i/2;j++)
k+=j;
int main(int argc,char **argv){
if(i%j==0)
int i=1,j,k,l,c=0;
for(l=0,j=1;j<=k/2;j++)
if(( i==l )&&(i<k)){
}
}
}
l+=j;
#include <stdio.h>
return 0;
c++;
if( k % j==0 )
while(c<=10){
printf("(%d,%d)¥n",i,k);
i++;
[3] Solaris/Gnu C++/C
[4]10/31正午まで

急ぎませんがよろしく御願いします。この手の問題
苦手中の苦手です。


318 :デフォルトの名無しさん:2008/10/15(水) 03:09:27
/*
for(k=0,j=1;j<=i2;j++)
k+=j;
if(i%j==0)
int i=1,j,k,l,c=0;
for(l=0,j=1;j<=k2;j++)
if(( i==l )&&(i<k)){
}
}
l+=j;
#include <stdio.h>
c++;
if( k % j==0 )
while(c<=10){
printf("(%d,%d)¥n",i,k);
i++;
int argc,char argv
*/
int main(){
return 0;
}

なにもせずに終了するプログラム

319 :デフォルトの名無しさん:2008/10/15(水) 03:38:14
>>316
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7787.txt

6番は正しいか単体テストはしてない、答えが分るテストデータは自分で用意してくれ

320 :デフォルトの名無しさん:2008/10/15(水) 08:33:14
>>317
#include <stdio.h>

int main(int argc,char **argv){
int i=1,j,k,l,c=0;
while(c<=10){
for(k=0,j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
for(l=0,j=1;j<=k/2;j++)
if( k % j==0 )
l+=j;
if(( i==l )&&(i<k)){
printf("(%d,%d)\n",i,k);
i++;
}
c++;
}
return 0;
}
/*何も表示しないプログラム*/

321 :デフォルトの名無しさん:2008/10/15(水) 10:48:31
うわあ。並べ替え分からんなあと思いながらやってたら>>320と全く同じでワロタw

322 :デフォルトの名無しさん:2008/10/15(水) 12:24:48
[1] 授業単元:マルチタスクプログラミング

[2] 問題文(含コード&リンク):
funcA 1〜5を表示する
funcB A〜Eを表示する

メインにてスレッドを生成し、生成したスレッドにfuncBを走らせる。
メインスレッドはfuncAを走らせる。

そのうえで表示結果が
「1A2B3C4D5E」となるようマルチタスクプログラムを作成せよ。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:VisualStudio2005
 [3.3] 言語:C++

[4] 期限:10/17(金)

[5] その他の制限:特に無し

イベントのやり取りでスレッドを制御せよとのことなのですがサンプルを提示して
頂けると助かります。スレッド等イメージをまだ把握しておらず…
申し訳ないですが宜しくお願いします。

323 :デフォルトの名無しさん:2008/10/15(水) 13:26:06
並べ替え問題はこうだと思う。
友愛数を求めるアルゴリズム。
http://ja.wikipedia.org/wiki/%E5%8F%8B%E6%84%9B%E6%95%B0

#include <stdio.h>
int main(int argc,char **argv){
int i=1,j,k,l,c=0;
while(c<=100000){
for(k=0,j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
for(l=0,j=1;j<=k/2;j++)
if( k % j==0 )
l+=j;
if(( i==l )&&(i<k)){
printf("(%d,%d)\n",i,k);
}
i++;
c++;
}
return 0;
}


324 :デフォルトの名無しさん:2008/10/15(水) 13:39:56
まちがった。こうだ〜!
友愛数を小さい方から10個見つけるプログラム。

#include <stdio.h>
int main(int argc,char **argv){
int i=1,j,k,l,c=0;
while(c<=10){
for(k=0,j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
for(l=0,j=1;j<=k/2;j++)
if( k % j==0 )
l+=j;
if(( i==l )&&(i<k)){
c++;
printf("(%d,%d)\n",i,k);
}
i++;
}
return 0;
}


325 :320:2008/10/15(水) 13:44:18
>>323
なるほど
forには{ }がなくてifには { }があるので2文以上入るんだろうなと思ったんだよ
/* 友愛数を10個表示するプログラム */
#include <stdio.h>
int main(int argc,char **argv){
int i=1,j,k,l,c=0;
while(c<=10){
for(k=0,j=1;j<=i/2;j++)
if(i%j==0)
k+=j;
for(l=0,j=1;j<=k/2;j++)
if( k % j==0 )
l+=j;
if(( i==l )&&(i<k)){
printf("(%d,%d)\n",i,k);
c++;
}
i++;
}
return 0;
}

326 :デフォルトの名無しさん:2008/10/15(水) 14:15:14
>>322
後始末無視して簡単に書いてみた
#include<windows.h>
#include<stdio.h>
HANDLE eventA,eventB;
DWORD func(HANDLE self,HANDLE other,const char*str){
    while(*str)
        WaitForSingleObject(self,INFINITE) , putchar(*str++) , SetEvent(other);
    return 0;
}
DWORD WINAPI funcA(LPVOID p){return func(eventA,eventB,"12345");}
DWORD WINAPI funcB(LPVOID p){return func(eventB,eventA,"ABCDE");}
int main(){
    eventA = CreateEvent(0,0,1,0);
    eventB = CreateEvent(0,0,0,0);
    HANDLE f[] = {CreateThread(NULL,0,funcA,0,0,0),CreateThread(NULL,0,funcB,0,0,0)};
    WaitForMultipleObjects(2,f,1,INFINITE);
    printf("\n");
}


327 :デフォルトの名無しさん:2008/10/15(水) 14:23:45
>>326
ホント面倒かけて申し訳ない。

なにやってるか全くわからないけどとりあえず張り付けてデバッグします
ありがとう

328 :デフォルトの名無しさん:2008/10/15(水) 16:26:42
[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):
このアーカイブにはいってるprog.cのファイルの逆の処理をする
プログラムを作ってほしいのですが。プログラムの説明はソースの一番上にかいてあります。
http://www1.axfc.net/uploader/He/so/147917
パスはsageです。知りたいところがあれば聞いてください
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 10/16 の12時くらい

329 :デフォルトの名無しさん:2008/10/15(水) 16:34:57
/ディレクトリ以下ファイルを強制的に全部消去し、消去した
ファイルのサイズの平均を求めるプログラムの逆の動作って
どうやって定義するのでしょうか?

330 :デフォルトの名無しさん:2008/10/15(水) 16:35:43
できない

331 :デフォルトの名無しさん:2008/10/15(水) 17:04:22
>>328
ソースファイルだけあげればよかったのに。
a.outとかバックアップとかいらないしそもそもgzファイルじゃなくてtgzだろとか

332 :デフォルトの名無しさん:2008/10/15(水) 17:28:25
いや確認用に


333 :デフォルトの名無しさん:2008/10/15(水) 17:47:08
どこの馬の骨が作ったともしれないバイナリを実行するぐらいなら自分でコンパイルするだろ。
スレ的にも。

334 :デフォルトの名無しさん:2008/10/15(水) 18:19:19
>>332
ふてくされるなよ

335 :デフォルトの名無しさん:2008/10/15(水) 19:37:00
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7788.txt

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

よろしくお願いします

336 :デフォルトの名無しさん:2008/10/15(水) 20:03:36
>>335
if(*(s+i)==' '){
これを!とか,とかでも通るようなor条件をバカみたいに作ればいいと思うよ。

337 :デフォルトの名無しさん:2008/10/15(水) 20:09:51
だよな。
そんなこともわからずにプログラムかいてるのか

338 :sage:2008/10/15(水) 20:35:06
[1]プログラミング及び演習
[2]標準入力から読み込んで標準出力へ書き出すプログラムのいろいろ
#include <stdio.h>
#define MAX 128
int main(void)
{
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) fputs(buf, stdout); /* function */
return 0;
}
を参考に行番号を付加するプログラムを自作してみて下さい.
例えば,こんな感じで出力されれば OK です.
1: #include <stdio.h>
2:
3: int main(void)
4: {
5: int c;
6:
7: while ((c = getchar()) != EOF) putchar(c);
8:
9: return 0;
10: }
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ:VisualStudio2005
 [3.3] 言語:
[4]期限: 10/21
[5]簡潔でも構わないので解説があると助かります
よろしくお願い致します

339 :デフォルトの名無しさん:2008/10/15(水) 21:01:14
>>337
自分のできる範囲でバカみたいにかいた上で、これはもうちょっと
どうにかならんのかねって疑問がわき、そこでやっとASCIIコード体系なりis系関数なりを知って
感激しつつ改善するに至るんだが、いきなり結果を得ても何も理解できないし苦痛だよね。

340 :デフォルトの名無しさん:2008/10/15(水) 21:02:19
自分の学籍番号,氏名をキーボードから入力し,
画面に表示するプログラムを文字型配列を用いて作成せよ

341 :デフォルトの名無しさん:2008/10/15(水) 21:05:33
>>338
int i = 0;
while (fgets(buf, MAX, stdin) != NULL) printf("%d: %s", i++, buf);

342 :338:2008/10/15(水) 21:30:57
>>341
回答ありがとうございます。
試してみたのですが
エラー E2342 numcpy.c 6: パラメータ '__s' は signed char * 型として定義されてい
るので int は渡せない(関数 main )
と出てしまいました。
また自分の説明不足なのですが、まだ明解C言語入門編第8章という
初歩的なところまでしか学習しておらず、%sという表現が理解できません。
御手数おかけして大変申し訳ないのですが、もう少し簡単な回答を頂けないでしょうか?


343 :デフォルトの名無しさん:2008/10/15(水) 21:56:16
>>342
>>341じゃないけど。
numcpy.cを全部貼ってみて。

while (fgets(buf, MAX, stdin) != NULL) {fprintf(stdout, "%d: ", i++); fputs(buf, stdout);}
これなら?

8章まで進んでたらprintfぐらい出てきてそうなもんだけどな。

344 :デフォルトの名無しさん:2008/10/15(水) 21:57:03
>>338
#include <stdio.h>
int main(void) {
int buf,i=1;
do{ printf("%d:",i++);
while ( (buf=getchar()) != '\n' && buf!= EOF) ;
}while(buf!=EOF);
return 0; }

345 :デフォルトの名無しさん:2008/10/15(水) 22:10:26
>>344
寝てこい

346 :デフォルトの名無しさん:2008/10/15(水) 22:12:08
>>345
お前がまともなソースを書いてから意見しろよ、クズがw

347 :デフォルトの名無しさん:2008/10/15(水) 22:14:56
>>346
まともなソースかどうか知らんが回答はしてる。
直近だと>>343になってしまうけどな。

348 :デフォルトの名無しさん:2008/10/15(水) 22:19:20
>>346
あんまりカリカリすんなよw
どの宿題待ち?

349 :338:2008/10/15(水) 22:21:56
>>343 >>344
回答ありがとうございます。
#include <stdio.h>
#define MAX 128
int main(void)
{
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) fputs(buf, stdout); /* function */
return 0;
}
と343を参考に
#include <stdio.h>
#define MAX 128
int main(void)
{
int i;
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) {fprintf(stdout, "%d: ", i++); fputs(buf, stdout);}
return 0;
}
としてみましたが、
2147344384:
2147344385:
2147344386:
2147344387:
となってしまいました。
自分なりに考えてみたのですが、どこが間違っているのでしょうか?

350 :デフォルトの名無しさん:2008/10/15(水) 22:22:57
そんなエラー
あれが間違ってるにきまってんじゃん。
そういうエラーに遭遇したことないのか

351 :デフォルトの名無しさん:2008/10/15(水) 22:24:06
>>349
int i=0; のところを参考にし忘れてる

352 :デフォルトの名無しさん:2008/10/15(水) 22:27:51
その変数がからかどうかを確認するのは
一番最初じゃね?

353 :338:2008/10/15(水) 22:30:45
>>351
ご指摘ありがとうございます
#include <stdio.h>
#define MAX 128
int main(void)
{
int i=0;
char buf[MAX];
while (fgets(buf, MAX, stdin) != NULL) {fprintf(stdout, "%d: ", i++); fputs(buf, stdout);}
return 0;
}
0:
1:
2:
3:
4:
となりました。ただ、問題には
例えば,こんな感じで出力されれば OK です.
1: #include <stdio.h>
2:
3: int main(void)
4: {
5: int c;
6:
7: while ((c = getchar()) != EOF) putchar(c);
8:
9: return 0;
10: }
とあるのですが、これで正解ということでいいんでしょうか?
何度も質問してしまい、申し訳ありません。

354 :デフォルトの名無しさん:2008/10/15(水) 22:33:20
>>353
numcpy.exe < numcpy.c
とかコマンドプロンプトで。

1から開始したいという要望が出ると思うけどそこは自分なりに考えて。

355 :デフォルトの名無しさん:2008/10/15(水) 22:35:55
>>353 >>338
#include <stdio.h>
#include <string.h>
#define MAX 128
int main(void) {
char buf[MAX];
int i=1,ch;
FILE *tmp=tmpfile();
if(tmp==NULL) {perror(""); return 1;}
while (fgets(buf, MAX, stdin) != NULL) fwrite(buf,strlen(buf),1,tmp); /* function */
rewind(tmp);
do{
printf("%d: ",i++);
while((ch=fgetc(tmp))!='\n' && ch!=EOF) putchar(ch);
puts("");
}while( ch != EOF );
return 0; }


356 :デフォルトの名無しさん:2008/10/15(水) 22:38:53
なっ、なぬっ!?リダイレクトを使うとな?ならば先にそう言うでおじゃるよ。

357 :338:2008/10/15(水) 22:39:21
>>354
なるほど、そういうことだったんですね。

>1から開始したいという要望が出ると思うけどそこは自分なりに考えて。
はい。ここまで教えて頂けたので後は自力でなんとかしたいと思います。
色々と本当にありがとうございました。

>>355
回答ありがとうございます。
こちらも参考にさせて頂きますね。


358 :デフォルトの名無しさん:2008/10/16(木) 00:00:56
>>328
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7790.c
気が向いたので、なんとなく作ってみた。

359 :328:2008/10/16(木) 00:11:00
>>358
ありがとう。


360 :デフォルトの名無しさん:2008/10/16(木) 00:23:58
>>358
俺が作ったのも同じバイナリを吐くんだけど、元のバイナリと内容が異なる

361 :358:2008/10/16(木) 00:37:46
>>360
それをまたテキストも戻して、diffしてバイナリにする元のテキストと同じだから気にしなかった。
コンパイラやそのバージョンによっても、生成される機械語が違うからそんなもんだと思う。
最初にできたときにはdiffが違うのが気になって確認した。
しかし、float(0x3E624825)とfloat(0x3E62480F)が同じ値になっていたので、上げたんだけど。

362 :328:2008/10/16(木) 01:23:45
まあ試験的に数値が多いテキストでもバイナリにしようとおもうんだけど
この例では13個x()個てデータだったけど
30個x()個なかんじのデータだったらサイズもかえないといけないのかな?

とおもったけどそうでもなさそうですね。


363 :デフォルトの名無しさん:2008/10/16(木) 01:59:56
>>361
> コンパイラやそのバージョンによっても、生成される機械語が違うからそんなもんだと思う。
うーん、実行ファイルについてではなくて。
> しかし、float(0x3E624825)とfloat(0x3E62480F)が同じ値になっていたので、上げたんだけど。
なるほど。

にしても元のバイナリに戻せないのでは意味がないように思うんだなあ。何で変わっちゃうんだろ。

364 :デフォルトの名無しさん:2008/10/16(木) 02:48:17
問題文:2つの円の位置関係(交わる(交点)、含まれる、離れている)

これを求めるにはどんな感じで書けば良いでしょうか?

365 :デフォルトの名無しさん:2008/10/16(木) 02:52:49
数学じゃん!
2円の半径と中心間の距離を考える!

366 :デフォルトの名無しさん:2008/10/16(木) 02:52:53
>>364
中心座標間の距離 - ( 円1の半径 + 円2の半径 )
の符号を調べる

367 :デフォルトの名無しさん:2008/10/16(木) 02:58:03
数学的な考え方は解るのですが、
先週C++を始めたばかりで書き方がなかなか解りません;;
初歩的ですみません。

368 :358:2008/10/16(木) 03:03:52
>>363
0 01111100 11000100100100000100101 (0x3E624825)
0 01111100 11000100100100000001111 (0x3E62480F)
s [- e -] [--- m ---]

(-1)^s × 2^(e-127) × (1 + m/(2^23)) (Sign, Exponent, Mantissaはそれぞれ、十進数)
(-1)^(0)*2^(124-127)*(1+6440997/(2^23)) = 0.220978335
(-1)^(0)*2^(124-127)*(1+6440975/(2^23)) = 0.220978007

となるから、floatの精度のため値としては同じになったみたい。
16進表記で変わった理由は、機械語とそれに伴うFPU命令の違いからじゃないかな(実際はどうか知らん)。
エロい人後は頼んだ。


369 :デフォルトの名無しさん:2008/10/16(木) 03:24:27
>>368
質問者でもない者に対して丁寧に細かくありがとう><
エンディアンそっちのけでバイナリデータ見てた俺のバカ!

370 :デフォルトの名無しさん:2008/10/16(木) 03:32:57
まっ、麻呂のクソースはいらんかえぇ〜〜?

371 :デフォルトの名無しさん:2008/10/16(木) 07:20:45
>>361
テキストにした時点で精度が落ちてるから元には戻せないよ


372 :デフォルトの名無しさん:2008/10/16(木) 08:49:22
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 英文を入力すると、単語に分割して出力するプログラムを書く。
ただし、ピリオドとカンマは出力しないようにすること。
(実行例)
英文を入力してください:
There is , a textbook.

---
There
is
s
textbook
---

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 来週の木曜日
[5] その他の制限: 出来ればプログラミング下手な自分にもわかるように解説を付けてくれると助かります。
よろしくお願いします。


373 :デフォルトの名無しさん:2008/10/16(木) 09:40:15
>>372
#include <stdio.h>
#include <string.h>
int main(void){
char buf[256];
char *p;
printf("英文を入力してください:(255文字まで)\n");
fgets(buf, 256, stdin);
p = buf;
p = strtok(buf, " ,.\n");
while (p)
{
printf("%s\n", p);
p = strtok(NULL, " ,.\n");
}
return 0;
}


374 :デフォルトの名無しさん:2008/10/16(木) 10:04:36
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
まず大きな正方形のエリアがあり
その大きな正方形の中に小さな正方形のエリアがある。
次に大きな正方形の線上で2点を取る。(一方は左下に固定)
左下の固定点と入力した大きな正方形の線上の二点を線で結び
その直線が中の小さい正方形に重なるか重ならないかを判定する

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10月中
[5] その他の制限:特になし

考えてみたけどさっぱりわかりません
正方形の大きさは変えられると助かります
よろしくお願いします。



375 :デフォルトの名無しさん:2008/10/16(木) 11:21:02
数学知識に遥かにウェイトがある問題に言語の技巧の問題を
組み合わせた課題を出す教師は...

376 :デフォルトの名無しさん:2008/10/16(木) 11:29:00
一般化すれば、
平面座標内に正方形と直線があり
交わりがあるかどうかを調べる

377 :デフォルトの名無しさん:2008/10/16(木) 11:33:00
>>374
(数学の解)
まず直線の傾きとy切片を求め直線の式を作れ
y = ax + b
次に小さい正方形のx座標を代入してその値とy座標の値を比較
a * x1 + b - y1
a * x2 + b - y2
a * x3 + b - y3
a * x4 + b - y4
4つの正負が同じなら重ならない
1個でも負号が違えば重なる
0は適当にどちらかに決めて処理

Cでプログラム

378 :デフォルトの名無しさん:2008/10/16(木) 11:34:54
より一般化すれば、凸多角形の共通部分や、
多角形ポリゴン同士の衝突判定をしたいのですが。。。
だ。

Spaghetti Source - 凸多角形の共通部分
http://www.prefield.com/algorithm/geometry/convex_intersect.html

多角形ポリゴン同士の衝突判定をしたいのですが。。。 - 教えて!goo
http://oshiete1.goo.ne.jp/qa675246.html

379 :374:2008/10/16(木) 11:42:23
ありがとうございます
書き忘れて申し訳ないのですが二次元で大丈夫です
>>377さん
左下を原点とすれば切片0は可能ですよね?

Cの知識がなさすぎて組めないorz

380 :デフォルトの名無しさん:2008/10/16(木) 13:32:11
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
bmp画像の各ピクセルごとの数値を読み込み、
二次元配列として表示するプログラムを作成せよ

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:10月中
[5] その他の制限:特になし

まったく見当がつきません。
よろしくお願いします

381 :デフォルトの名無しさん:2008/10/16(木) 13:34:45
[1] 授業単元:c++builder
[2] 問題文(含コード&リンク):下に提示
[3] 環境
 [3.1] OS:windows xp
 [3.2] C++ builder5
 [3.3] 言語:C++ builder
[4] 期限: 10/17まで


Memo1には Memo2には Memo3には Memo4には
5    4     5     2
 6    3     2     6
 5    1     8     4
 6    4     6     6
と出してあるのですがこの4つのMemoの列に対応させて足し算したものを
 Memo5に
 16
 17
 18
 22

と出したいのですがどのようにすればいいんでしょうか。
builderに関してほとんど手探り状態なのでどなたかわかる方よろしくお願いします。



382 :デフォルトの名無しさん:2008/10/16(木) 13:58:13
見当つかないんだったらフォーマットくらい調べろよ できるかもしれないじゃんか

383 :デフォルトの名無しさん:2008/10/16(木) 15:10:05
C++で2分法のf(x)=X*X-2
プログラムよろしくお願いします。

384 :デフォルトの名無しさん:2008/10/16(木) 15:19:35
>>379
合ってるかどうかは知らない
あと、くそーすだがあしからず
#include <stdio.h>

int main(void)
{
double x, y, a, tmp;
int i;
//大きな正方形の座標(左下、右下、左上、右上)
double large_x[4] = {0.0, 10.0, 0.0, 10.0};
double large_y[4] = {0.0, 0.0, 10.0, 10.0};
//小さな正方形の座標(左下、右下、左上、右上)
double small_x[4] = {5.0, 7.0, 5.0, 7.0};
double small_y[4] = {1.0, 1.0, 3.0, 3.0};

printf("大きな正方形の線上の点");
scanf("%lf %lf", &x, &y);

a = y / x;

tmp = a * small_x[0] - small_y[0];
for(i=1; i<4; i++){
if( tmp * (a * small_x[i] - small_y[i]) <= 0.0 )
break;
}

if(tmp > 0.0) printf("重ならない\n");
else printf("重なる\n");

return 0;
}

385 :デフォルトの名無しさん:2008/10/16(木) 15:19:42
#include <stdio.h>

#define GOSA 0.0001
float sqr(float c){
double x=c,y;
while(1){
y=x*x;
if(y>c-GOSA)if(y<c+GOSA)break;
x -= (y-c)/(2*x);}
return x; }



386 :デフォルトの名無しさん:2008/10/16(木) 15:19:46
[1] 授業単元:情報処理演習2
[2] 問題:1.大きさ5の配列の各要素に整数データを読み込みながら順次格納して、全要素を逆に並びかえて、その配列の0番から順に内容を表示するプログラムをつくりなさい
2.正整数を順次配列に読み込んで、三番目に大きな数(全て大きい数なら、左から三番目の数)を出力するプログラムを作れ。尚、0を読み込むと終了すること
ただし、必ず3個以上を読み込むと仮定してもよい
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限
16日の23:59分まで


お願いします

387 :デフォルトの名無しさん:2008/10/16(木) 15:20:40
>>385
X*X=cを解くプログラムね

388 :デフォルトの名無しさん:2008/10/16(木) 15:50:49
>>386
(1)
#include<stdio.h>
int main(){
    int a[5],i,left,right;
    for(i=0;i<5;++i)scanf("%d",a+i);
    for(left=0,right=5-1;left<right;++left,--right)
        i = a[left] , a[left] = a[right] ,a[right] = i;
    for(i=0;i<5;++i)printf("%d\n",a[i]);
}
(2)
#include<stdio.h>
#include<stdlib.h>
int compare(const void*a,const void*b){
    int c=*(int*)a,d=*(int*)b;
    return (c>d) - (c<d);
}
int main(){
    int a[4]={-1,-1,-1,-1};
    while(scanf("%d",a),*a != 0)qsort(a,sizeof a/sizeof*a,sizeof*a,compare);
    printf("%d\n",a[1]);
}

389 :386:2008/10/16(木) 17:00:07
すいません!
osなんですが、Linuxとunix系OSを間違えて書いてました……
正しくは
OS:unix系のOSかwindowsです
申し訳ありません……


390 :デフォルトの名無しさん:2008/10/16(木) 18:45:15
[1] 授業単元:
[2] 問題文(含コード&リンク):
以下のようなデータが大量に格納されているファイルがある.
[ダウンロード http://www.vox.tutkie.tut.ac.jp/~katurada/test.list ]
このファイルを読み込み,数値(キー)と英単語(データ)をセットにして
1データとして2分木へ格納し、数値(キー)にある値を指定して検索を行えば、
その数値(キー)に対応する英単語(データ)を検索できるプログラムを作成せよ。
ふたつめ
上記で使用したtest.list を読み込み,数値(キー)と英単語(データ)をセットにして
1データとしてリストへ格納し、数値(キー)にある値を指定して検索を行えば、
その数値(キー)に対応する英単語(データ)を検索できるプログラムを作成せよ。
そして、上記の木構造による実装との検索時間を比較せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2008年10月19日24:00まで]


391 :390:2008/10/16(木) 18:46:22
5] その他の制限:
1. 格納できるデータ量は(メモリの許す限り)上限はない.
2. 対応する英単語が見付からない場合は、その旨を表示すること。
3. データは,「数値,英単語\n」(\nは改行)で定義されるものとする.
4. データが格納されたファイルは、プログラムの引数で指定できるようにせよ。
5. データは2分木に格納せよ。
6. 数値(キー)に重複はない。
7. 数値(キー)は8桁以内である。もしファイルに9桁以上の数値が入っていた場合はエラーを出力して終了せよ。
8. 数値(キー)に数字以外の文字(アルファベットなど)が含まれていた場合は,エラーを出力して終了せよ.
9. 検索時の入力にも9桁以上の数値や数字以外の文字が入力された場合はエラーを出力して終了せよ.
10. 英単語は25文字以内である。もしファイルに25文字以上の英単語が入っていた場合はエラーを出力して終了せよ。
ふたつめ
 # リストによる実装において、データの挿入は数値(キー)によるソートは行わず、単純にファイルに出現した順番にリストに追加していって下さい。
# リストによる実装での検索も、単純にリストの先頭から比較していくような単純なアプローチで結構です。
# 1回の検索では検索時間の差がないでしょうから、10000回くらい繰り返して下さい。なお、test.list のデータ数は130万個あります。

よろしくお願いします。

392 :374:2008/10/16(木) 18:46:38
>>384
ありがとうございます
ヒントにしてもうちょい考えてみます

393 :デフォルトの名無しさん:2008/10/16(木) 21:26:24
>>373
ありがとうございました。
これを参考に、自分なりにもう少し頑張ってみます



394 :デフォルトの名無しさん:2008/10/16(木) 22:02:18
>>380
bmpのフォーマットは?

395 :デフォルトの名無しさん:2008/10/16(木) 23:06:39
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
UDPサーバhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7791.txt
UDPクライアントhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7792.txt
問題文(2問あります)http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7793.txt
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] Visual stdio2005
 [3.3] 言語:C
[4] 期限:10月17日午後13:00まで
[5] その他の制限:特になし

よろしくお願いします

396 :デフォルトの名無しさん:2008/10/17(金) 00:43:47
[1] 授業単元:プログラミング技術
[2] 問題:30000以下の数字を入力して、「○時間、○分、○秒」と出力するプログラムを作りなさい。
<時間を分にして、分は秒にして、秒は分の答えの余り>
[3] 環境
 [3.1] OS:Windows XP
 [3.2] Ultla C
 [3.3] 言語:C
[4] 期限
特にありません

よろしくお願いします。

397 :デフォルトの名無しさん:2008/10/17(金) 01:17:09
>>396
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
printf("%2d時間%02d分%02d秒", x / 3600, x % 3600 / 60 , x % 3600 % 60);
return 0;
}


398 :デフォルトの名無しさん:2008/10/17(金) 01:28:59

[1] 授業単元:C
[2] 問題:n=1
4973/n*2で始まり、4973/n*2の計算の答えが1になるまでnを増やしていき
1になったところで今まで出した数字を全部足した答えを出すプログラム。
少数は切り捨て。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限 [10/17/07:00まで]

   2     4     8         4096
(4973/n*2)+(4973/n*2)+(4973/n*2)+・・・・(4973/n*2)
 2486  + 1243  +  621  +・・・・  1   =4965
手計算だと最後のnは2048になって答えが4965になったのですが。
プログラムについてはさっぱりなので助けてください。。。

399 :デフォルトの名無しさん:2008/10/17(金) 01:36:21
>>398
あ、n*2じゃなくて、2^nです。

400 :デフォルトの名無しさん:2008/10/17(金) 01:41:42
こんなでいい?
#include<stdio.h>

int main(){
int sum,ex;

for(sum=0,ex=2; 4973/ex >= 1; ex*=2){
sum += 4973/ex;
}
printf("%d\n",sum);
return 0;
}

401 :デフォルトの名無しさん:2008/10/17(金) 01:50:56
include <stdio.h>
int main()
{
int n, sum = 0;
for (n = 1; 4973 / (1 << (n - 1)) != 1; ++n) {
sum += 4973 / (1 << (n - 1));
}
sum += 1;
printf("%d : %d", n, sum);
return 0;
}


402 :401:2008/10/17(金) 01:51:44
すいません間違えました

403 :デフォルトの名無しさん:2008/10/17(金) 01:54:33
そんなすっきりなプログラムが!!

ありがとうございます!!

404 :デフォルトの名無しさん:2008/10/17(金) 01:56:50
>>402
ぇ?答えの4956もでましたけど・・・

405 :404:2008/10/17(金) 01:58:31
あ、>>400の方と>>401の方を読み間違えた自分が恥ずかしい…

406 :デフォルトの名無しさん:2008/10/17(金) 03:26:13
>>392
if( tmp * (a * small_x[i] - small_y[i]) <= 0.0 )

if( (tmp *= (a * small_x[i] - small_y[i])) <= 0.0 )
な気がする

407 :デフォルトの名無しさん:2008/10/17(金) 04:04:02
>>380

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7794.txt

全BMPフォーマット対応は面倒だから、条件付き、
良く読んで理解して使用のこと

408 :デフォルトの名無しさん:2008/10/17(金) 04:51:51
>>407 ん〜〜〜

409 :デフォルトの名無しさん:2008/10/17(金) 07:23:29
[1]授業 c
[2] 問題: 1単語を入力し、その単語のスペルを判定する。その判定を Ctrl-D を入力するまで続ける。判定は、ファイル ``eng.txt'' にその単語が存在する場合に限り、スペルが正しいと判定する。
[3] 環境
 [3.1] OS:linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限 10/19 16:00

関数は何を使ってもいいです。
何日も考えたのですがぜんぜんわかりませんでした。
どなたかお願いします

410 :395:2008/10/17(金) 07:26:17
すみません
問題文2問あるといっておいて4問ありました
B1とB2のみで構いません

多少遅れても大丈夫なので引き続きよろしくお願いいたします

411 :デフォルトの名無しさん:2008/10/17(金) 07:40:04
>>395
UDPサーバ:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7797.txt
UDPクライアント:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7798.txt

412 :410:2008/10/17(金) 07:48:20
>>410ちょっと訂正
UDPサーバ:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7799.txt
UDPクライアント:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7798.txt

413 :396:2008/10/17(金) 07:59:31
>>397
ありがとうございました

414 :デフォルトの名無しさん:2008/10/17(金) 08:29:04
400と401の両方とも、条件部とループ内部で同じ計算をしてるのが無駄

415 :デフォルトの名無しさん:2008/10/17(金) 10:31:23
>>412
ありがとうございました

416 :デフォルトの名無しさん:2008/10/17(金) 11:13:35
>>411
そんなの最適化されるんじゃないの?

417 :デフォルトの名無しさん:2008/10/17(金) 11:15:12
>>411じゃなくて>>414

418 :デフォルトの名無しさん:2008/10/17(金) 15:40:59
>>409
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7801.c

419 :デフォルトの名無しさん:2008/10/17(金) 15:51:15
[1]C言語実習
[2]問題文

以下のコードは、2つのプログラム(同一動作)のコードを
まとめたものです。(各ソースにおいて、行の順番は変えていません)
このコードを2つのプログラムに分解して、それぞれコンパイルが
通り、同一の動作をするようにして下さい。
また処理内容についても簡単にコメントして下さい。
コード
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7802.c[3] Linux/Gnu-C4.0/C
[4]無制限だそうです。難問だそうです。よろしくお願い致します。

420 :デフォルトの名無しさん:2008/10/17(金) 15:55:13
>>416
よく知らないんだが、どのコンパイラでどのオプションつけるとこれが最適化されるの?

421 :デフォルトの名無しさん:2008/10/17(金) 16:14:39
>>419
#include <stdio.h>
int is_prime(int p){
int i;
if(p<=1)
return 0;
if((p==2)||(p==3))
return 1;
if((p%2==0)||(p%3==0))
return 0;
for(i=3;i*i<=p;i+=2)
if(p % i==0)
return 0;
return 1;
}
int main(void){
int i,c=0;
for(i=1;i<=1000000;i++){
if(is_prime(i))
c++;
if(i%100==0)
printf("%d %d\n",i,c);
}
return 0;
}
素数の個数を求めるプログラム
残りはエラトステネスの篩だな


422 :デフォルトの名無しさん:2008/10/17(金) 17:57:37
>>420
僕もよく知らない、ってかよく知らないのに突っ込まないでください><
基本的に、共通部分式の削除が行われるんじゃないですか?

423 :デフォルトの名無しさん:2008/10/17(金) 18:25:25
418さんありがとうございました
感謝です

424 :デフォルトの名無しさん:2008/10/17(金) 20:01:06
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク): BMI値を判定するプログラムを作成する
               入力:身長t(m),体重w(kg)
出力:判定結果{やせ,標準,肥満}
               身長をt(m),体重をw(kg)としたとき,
               BMI=w/tの二乗
               
               BMI値が18.5未満⇒やせ
               BMI値が18.5以上かつ25.0未満⇒標準
               BMI値が25.0以上⇒肥満

               #include <stdio.h>
int main(void) {
float t, w;
printf("t = "); scanf("%f", &t);
printf("w = "); scanf("%f", &w);
????????????????????????????????←この部分が解りません。
               }
[3] 環境 Visual C++
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
 [3.3] 言語: C言語
[4] 期限: 2008年10月20日(月)までお願いします。
[5] その他の制限: main関数,文末記号,エスケープシーケンス,printf関数,条件分岐(if文,if-else文)は習いました。
  お願い致します。

425 :デフォルトの名無しさん:2008/10/17(金) 20:06:21
int main(void) {
    float t, w, bmi;
    printf("t = "); scanf("%f", &t);
    printf("w = "); scanf("%f", &w);
    bmi = w / t / t;
    if (bmi < 18.5) printf("やせ\n");
    else if (bmi < 25.0) printf("標準\n");
    else printf("肥満\n");
    return 0;
}

426 :デフォルトの名無しさん:2008/10/17(金) 20:55:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7788.txt

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

すいません。なかなかうまくいきませんよろしくお願いします

427 :デフォルトの名無しさん:2008/10/17(金) 21:03:49
いくつかレスをもらっても何も進歩してないことにがっかりした

428 :デフォルトの名無しさん:2008/10/17(金) 21:29:19
>>426
ちゃんとみてないけど、
if(*(s+i)==' '){
の行を
if(*(s+i)==' ' || *(s+i)=='?' || *(s+i)=='!' …){
ってやっていけばいいんじゃね

429 :デフォルトの名無しさん:2008/10/17(金) 21:52:12
ということを>>336-337が。

430 :デフォルトの名無しさん:2008/10/17(金) 22:13:26
>>426
#include<stdio.h>
#include<string.h>
#define MAX 256
int main(void){
int len=0, max=0, moji;
char s[MAX+1], l[MAX+1]="";
while((moji=getchar())!=EOF){
if(strchr(" \t\n?!.,()", moji) || len>=MAX){
if(len>max){
strcpy(l, s);
max=len;
}
len=0;
}else{
s[len++]=moji;
s[len]='\0';
}
}
printf("The longest word is \"%s\"\n", l);
return 0;
}

431 :デフォルトの名無しさん:2008/10/17(金) 23:41:45
個人的にはif elseよりswitchの方が好きだ。

432 :デフォルトの名無しさん:2008/10/18(土) 00:09:20
個人的にはふさわしい方を使うのが好きだ。

433 :デフォルトの名無しさん:2008/10/18(土) 00:15:54
>>390
二分木の方だけやってみた
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7805.txt

434 :デフォルトの名無しさん:2008/10/18(土) 10:37:12


[1] 授業単元:先輩の課題
[2] 問題文(含コード&リンク):
5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7



みたいなtxtファイルがあるとします。

これを行ごとに呼んで double data[4]に順番にいれて、関数にわたす。
そして次の行をまた同じ配列data[4]にいれて、関数に渡すっていう処理するプログラムを書け

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限: なし

435 :デフォルトの名無しさん:2008/10/18(土) 12:18:31
>>434
意味不明
文章を見直せ

436 :デフォルトの名無しさん:2008/10/18(土) 12:25:05
[1] 授業単元:先輩の課題
[2] 問題文(含コード&リンク):
5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7



みたいなtxtファイルがあるとします。

これを行ごとに呼んで double data[4]に順番にいれて、関数にわたす。
そして次の行をまた同じ配列data[4]にいれて、関数に渡すっていう処理を
ファイルの終わりまで繰り返すプログラムを書け

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C
[4] 期限: 今日
[5] その他の制限: なし

これでわかりますかね。すいません

437 :デフォルトの名無しさん:2008/10/18(土) 12:33:08
>>436
#include <stdlib.h>
#include <stdio.h>
void f(double *d)
{
}
int main(int argc, char *argv[])
{
FILE *fp;
double data[4];
if (argc != 2) return 1;
if (!(fp = fopen(argv[1], "r"))) {
return 1;
}

while (fscanf(fp, " %lf %lf %lf %lf",
&data[0], &data[1], &data[2], &data[3]) == 4) {
f(data);
}
return 0;
}


438 :デフォルトの名無しさん:2008/10/18(土) 12:34:52
>>437
ありがとうございます。
列が100ぐらいあるときは%lfを百個打つのはめんどくさいんですが・・・
なんとかなりませんか?

439 :デフォルトの名無しさん:2008/10/18(土) 12:44:10
>>438
Ctrl+Vを99回押すだけだろ

440 :デフォルトの名無しさん:2008/10/18(土) 12:44:49
>>439
そうなんですが・・・ソースが汚いのかなぁとおもいまして・・・

441 :デフォルトの名無しさん:2008/10/18(土) 12:45:04
9回コピーして10個まとめたのをあと9回コピー

442 :デフォルトの名無しさん:2008/10/18(土) 12:51:09
>>440
見た目の問題かい
ループで回したらいいじゃん
while (!feof(fp))
{
for (i = 0; i < 100; i++)
{
if (fscanf(fp, "%lf", &data[i]) != 1)
{
printf("error");
return 0;
}
}
f(data);
}


443 :デフォルトの名無しさん:2008/10/18(土) 12:58:08
>>442
どうもありがとうございました

444 :デフォルトの名無しさん:2008/10/18(土) 13:01:02
もうひとつ質問させていただきます。

入力ファイルの途中に

5.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7

52.3 121.1 123.0 56.8
45.3 121.1 123.0 56.8
4.6 21.4 9.2 6.7

改行で空いてる行があったとしても正常に動きますか?ためしたところ問題ないようにみえましたが・・・

445 :デフォルトの名無しさん:2008/10/18(土) 13:02:07
>>444
正常の定義は?
エラーを出して止まるのが正常なのか
書式を無視するのが正常なのか

446 :デフォルトの名無しさん:2008/10/18(土) 13:07:44
>>445
空白の行を無視して次の行から配列に代入する処理というのが正常です

447 :デフォルトの名無しさん:2008/10/18(土) 19:03:24
[1]授業 c言語
[2] 問題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7807.txt
[3] 環境
 [3.1] OS:linux
 [3.2] gcc
 [3.3] 言語:C
[4] 期限 10/20

448 :デフォルトの名無しさん:2008/10/18(土) 19:56:05
&s[i].id
s[i].name
&s[i].score[j]

449 :デフォルトの名無しさん:2008/10/18(土) 22:10:12
[1] 授業単元:プログラミング基礎
[2] 問題文
体重と身長をキーボードから入力し、BMIを計算して出力するプログラムを書け。
BMIの計算はユーザ定義の関数を用いて行い、データの型にはdoubleを用いよ。
ただし、BMIの計算式は以下の通り。
BMI=体重(kg)/身長(m)^2   例:65kg/(1.70m * 1.70m) =22.49

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月21日まで
[5] その他の制限: かなり初歩の段階みたいです。

よろしくお願いします。

450 :デフォルトの名無しさん:2008/10/18(土) 22:27:55
>>449
>>424-425

451 :デフォルトの名無しさん:2008/10/18(土) 22:31:24
>>449
#include<stdio.h>
double bmi(double weight, double height)
{
return weight / (height * height);
}
int main()
{
double weight, height;
printf("体重(kg)?");
scanf("%lf", &weight);
printf("身長(m)?");
scanf("%lf", &height);
printf("BMI=%g\n", bmi(weight, height));
return 0;
}

452 :デフォルトの名無しさん:2008/10/18(土) 22:56:20
>>450>>451
すいません。説明不足でしたがelseやifなんかはまだ習ってないくらい初歩なので
>>424-425はよくわからないんです。
お早いレスで助かりました。ありがとうございます。

453 :デフォルトの名無しさん:2008/10/19(日) 02:08:14
>>425
こんなに早くやって下さり、本当に有難う御座いました。
助かりました。

454 :デフォルトの名無しさん:2008/10/19(日) 05:04:55
>>453
elseやifについてどう思うかを>>452に伝えてやってくれまいか

455 :デフォルトの名無しさん:2008/10/19(日) 13:54:08
[1] 授業単元:プログラミング
[2] 問題文:
"A>B"と入力すると"AはBより大きい"のように、不等式を文章に変換するプログラムを作成せよ。また、入力データと実行結果は以下の通りとし、変換された文章をテキストファイルに順番に出力すること。

実行結果
データ1:A>B
データ2:B<C
データ3:A<C
○○○.txtに出力しました

○○○.txt
AはBより大きい
BはCより小さい
AはCより小さい

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/21
[5] その他の制限:可能な限り初歩的なものでお願いします

456 :デフォルトの名無しさん:2008/10/19(日) 14:38:08
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fpr, *fpw;
char s1[1000], s2[1000], c;
if (argc != 3) { fprintf(stderr, "引数にこでたのむ\n"); return 1; }
if (!(fpr = fopen(argv[1], "r"))) {fprintf(stderr, "ファイルが\n"); return 1; }
if (!(fpw = fopen(argv[2], "w"))) {fprintf(stderr, "ファイルが\n"); return 1; }
while (fscanf(fpr, " %[^<> ] %c%s", s1, &c, s2) == 3) {
switch (c) {
case '<':
fprintf(fpw,"%sは%sより小さい\n", s1, s2);
break;
case '>':
fprintf(fpw,"%sは%sより大きい\n", s1, s2);
break;
default:
fprintf(stderr, "なかみが\n"); return 1;
}
}
fclose(fpr);
fclose(fpw);
return 0;
}


457 :デフォルトの名無しさん:2008/10/19(日) 15:42:56
[1]授業 c言語
[2] 問題:
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7807.txt
[3] 環境
 3.1 OS:linux
 3.2 gcc
 3.3 言語:C
[4] 期限 10/20
 
  すいません、よろしくお願いします。

458 :デフォルトの名無しさん:2008/10/19(日) 15:48:02
>>447
>>448


459 :デフォルトの名無しさん:2008/10/19(日) 16:04:58
>>457
まず、リスト@はmain関数の外で定義な。中でもいいけど、個人的には外の方が分かりやすい。
 
で、○○○は上から順に
&s[i].id
s[i].name
&s[i].score[j]

あんまり偉そうなこといいたくないが、これって構造体の基本問題だろ??
できるだけ自分で解けるようにしないと後々、辛い目にあうぞ。

460 :457:2008/10/19(日) 17:07:53
>>459
ウザいです。
偉そうな口を聞いて欲しくないです。

461 :デフォルトの名無しさん:2008/10/19(日) 17:20:54
>>460
本当のことだろーが
構造体の基礎の基礎も出来てないやつが喚くな餓鬼め

462 :457:2008/10/19(日) 17:23:18
>>461
スレ違いです。出て行ってください。

463 :457:2008/10/19(日) 17:25:13
そういうのは止めてください
>>458
どうもすいませんでした
>>459
ありがとうございます


464 :デフォルトの名無しさん:2008/10/19(日) 18:22:51
>>457
>>1
> なりすましを防ぐため、トリップを使ってください。

465 :デフォルトの名無しさん:2008/10/19(日) 19:44:19
ワロタ

466 : ◆iTaRIJflUs :2008/10/20(月) 00:09:33
[1] 授業単元:C言語プログラミング
[2] 問題文
<その1>
以下のようなプログラムを作成しなさい.

2×10の2次元配列を定義し、1行目の配列([0][0〜9])に1から10までの数字を格
納し、2行目の配列([1][0〜9])に2の倍数を2から20まで格納し、配列に格納した
数字を画面出力するプログラム。


<その2>
以下のようなプログラムを作りなさい

10人の学生の成績が以下のようになっている。
int score[]={90,28,35,80,72,55,76,90,96,42}
このとき、0から9までの学生の偏差値を計算せよ。

[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月21日朝9時まで
[5] その他の制限: まだまだ初歩の段階です。

どなたかお願いします。

467 :デフォルトの名無しさん:2008/10/20(月) 01:52:12
>>466
int num[2][10];
int i, j;
for( i = 0; i < 2; i++ ) {
 for( j = 0; j < 10; j++ ) {
  num[i][j] = (j + 1) * (i + 1); /* (1〜10) × ( 1 or 2) */
  printf( "%2d ", num[i][j]);
 }
 printf("\n");
}


468 :デフォルトの名無しさん:2008/10/20(月) 02:14:52
>>466 その2
#include <stdio.h>
#include <math.h>

int main(void)
{
int score[]={90, 28, 35, 80, 72, 55, 76, 90, 96, 42};
int i, n = sizeof(score) / sizeof(score[0]);
double sum = 0., sqsum = 0., mean;

for (i = 0; i < n; i++) {
sum += score[i];
sqsum += score[i] * score[i];
}
mean = sum / n;

printf("標準偏差 = %f\n", sqrt(fabs(sqsum / n - mean * mean)));

return 0;
}

469 :デフォルトの名無しさん:2008/10/20(月) 08:39:37
[1] 授業単元:プログラミング
[2] 問題文:x=1y=2 が関数swapをもちいてx=2、y=1となる。関数swapを呼び出す前後のx,yのアドレスを表示し、アドレスが渡されていることをしめせ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:visual2005 c
 [3.3] 言語:C
[4] 期限:10/23
お願いします



470 :デフォルトの名無しさん:2008/10/20(月) 08:44:26
【質問テンプレ】
[1] 授業単元: C++
[2] 問題文(含コード&リンク):
前もって用意された暗号化された文のテキストファイルと暗号化されていない文のテキストファイルがあります。
暗号化されたテキストファイルの始めの3文字はXXXとなっています。
プログラムは最初の3文字をよんで、XXXだったらそのファイルを解読して新たなファイルに保存、
XXXじゃなかったらそのファイルを暗号化して新たなファイルに保存しなさい。
尚、テキストファイルが1000文字以上だったらexitすること。
(暗号はa→c,b→dのようなshift2です。)
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: Dev-C++
 [3.3] 言語: C++
[4] 期限: 今日中
どうやってファイルの最初の3文字を判断するのかがまず分かりません..。
どなたか教えて下さい。

471 :デフォルトの名無しさん:2008/10/20(月) 11:33:38
[1] 授業単元:プログラミングC++
[2] 問題文:学籍番号、名前、姓、が記入されたリストを入力し、これを名前、姓、学籍番号の順に出力するC++ プログラムを書き、正しく動くことを確かめよ。
動作確認のためには、「実行ファイル < データリスト」のようにデータファイルを作り、コマンドラインでリダイレクションによりデータ入力せよ。
s10000001 Taro Aizu
s10000002 Jiro Aizu
s10000003 Nuri Aizu
s10000004 Taro Kin
s10000005 Atami Bandai
s10000006 Kogen Bandai
s10000007 Choucreme Hirota
s10000008 Kitakata Ramen
s10000009 Beko Aka
s10000010 Jo Tsuruga
[3] 環境
 [3.1] OS: unix
 [3.2] コンパイラ名とバージョン:g++
 [3.3] 言語:C++
[4] 期限: 2008年10月23日00:00まで
[5] その他の制限:特になし

472 :デフォルトの名無しさん:2008/10/20(月) 12:15:46
>>471の補足ですが、ループを使うのが条件です

473 :デフォルトの名無しさん:2008/10/20(月) 14:10:40
>>470
1000文字未満だったらfreadでchar[1000]に読み込んではじめの三文字見ればよくね?

474 :デフォルトの名無しさん:2008/10/20(月) 18:10:38
授業単元: C
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7810.txt 
条件は関数 void sort3 の引数は3つの int 型の値であるが,これをポインタ変数を受け取る関数に書き換える.交換の作業はすべて関数内で処理し,main 関数では交換作業を行わないものとする

[3] 環境
 [3.1] OS: Windows/Linux
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2008年10月23日まで




475 :デフォルトの名無しさん:2008/10/20(月) 18:33:20
[1] 授業単元:プログラミング
[2] 問題文:
Newton--Raphson法を用いて
X*X*X-7X*X+16X-10=0
の解を求めよ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/24
[5] その他の制限:初心者です。なるべく基本的な構造でお願いします。

476 :デフォルトの名無しさん:2008/10/20(月) 18:48:16
>>474
void sort3(int *x, int *y, int *z)
{
int tmp;

if (*y < *x) { tmp = *x; *x = *y; *y = tmp; }
if (*z < *y) { tmp = *y; *y = *z; *z = tmp; }
if (*y < *x) { tmp = *x; *x = *y; *y = tmp; }
}

477 :デフォルトの名無しさん:2008/10/20(月) 19:07:40
#define GOSA 0.00001
#define F(X) (X*X*X-7*X*X+16*X-10)
#define dF(X) (3*X*X-14*X+16)

int main(){
double x=10,y;

while(1){
printf("計算経過 %f\n",x);
y=F(x);
if(y>-GOSA)if(y<GOSA)break;
x -= y/dF(x); }
}

478 :デフォルトの名無しさん:2008/10/20(月) 19:22:25
#define GOSA 0.00001
#define F(X) (X*X*X-7*X*X+16*X-10)
#define dF(X) (3*X*X-14*X+16)

int main(){
double x=10,y;
do{
x -= y/dF(x);
printf("計算経過 %f\n",x);
y=F(x);
}while(y<-GOSA || y>GOSA);
}

479 :デフォルトの名無しさん:2008/10/20(月) 23:25:55
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7806.txt
[3] 環境
 [3.1] OS: Windows)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:無期限
[5] その他の制限:関数・配列は習いましたが、ポインタは知りません。

自分で書いてみたのですが、例えば15を打つと
「素数ではありません」「素数ではありません」「素数です」とでてしまいます。

480 :デフォルトの名無しさん:2008/10/20(月) 23:36:28
else{
for(i=3;i<=no;i+=2){
if ((no%i)==0){
puts("素数ではありません");
break;
}
else{
puts("素数です");
break;
}
}
}


481 :デフォルトの名無しさん:2008/10/20(月) 23:57:28
>>479

int main(){
unsigned long int i ;
unsigned long no = 0;
printf("1から%luまで入力可能です\n", ULONG_MAX);
do {
printf("正の整数:");
scanf("%lu", &no);
if (no <= 0) {
puts("0以外、正の整数を入力してください") ;
} while(no <= 0) ;

if (no == 2) {
puts("素数です");
}
else if (no == 1 || no%2 == 0) {
puts("素数ではありません");
}
else {
for ( i = 3; i * i <= no; i += 2) {
if (no % i == 0) {
puts("素数ではありません");
return 0;
}
}
puts("素数です");
}
return 0;
}


482 :デフォルトの名無しさん:2008/10/21(火) 00:06:50
>>480 481
ありがとうございます!


483 :デフォルトの名無しさん:2008/10/21(火) 02:39:36
>>469
エスパーするとこうかな?関数swapを自分で書いて、呼び出す側とその関数内それぞれでアドレスを表示。

#include <stdio.h>
/* aの指すデータとbの指すデータを交換する */
void swap( int *a, int *b) {
int temp = *a;

printf( "swap() : &a = %p, &b = %p\n", a, b);

*a = *b;
*b = temp;
}

int main(void) {
int x = 1, y = 2;

printf( "main() : x = %d, y = %d, &x = %p, &y = %p\n", x, y, &x, &y);
swap( &x, &y);
printf( "main() : x = %d, y = %d, &x = %p, &y = %p\n", x, y, &x, &y);

return 0;
}


484 :デフォルトの名無しさん:2008/10/21(火) 08:16:08
>>483
俺は
int* temp = a;
a = b;
b = temp;
かと思った


485 :デフォルトの名無しさん:2008/10/21(火) 12:43:13
>>473
ありがとうございました。調べてみます。

486 :デフォルトの名無しさん:2008/10/21(火) 12:53:22
>>476
それでコンパイルすると3つ目の整数を入力してから入力した整数が小さい順に出力されるようにしたいんだけどそれだとエラー起きてしまうのですが・・・

487 : ◆3VUXqvbfSY :2008/10/21(火) 13:04:05
【質問テンプレ】
[1] 授業単元:計算機プログラミングII
[2] 問題文(含コード&リンク):
  単精度実数型配列(float)を宣言する。その配列にn個のデータを入力する。その配
  列名をポインタとして用いて,入力したn個のデータの最大値と最小値を求め,その
  結果とそれら値が何番目に入力されたかを出力するプログラムを作成せよ。
  ただし,複数回の異なる場合について実行してみること。データ入力の際,値が昇順
  または降順にならないようにすること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
    (注) gcc -Wall -ansi -std=c89 -pedantic ファイル名.c のようにしてコンパイル
 [3.3] 言語:C
[4] 期限:2008年10月23日10:30まで
[5] その他の制限:ポインタを習い始めたばかり,for文やif文,関数,配列,文字列の基礎は学習済み

おねがいします。

488 :デフォルトの名無しさん:2008/10/21(火) 14:14:37
>>486
関数のプロトタイプ宣言
void sort3(int *x, int *y, int *z);

呼び出し
sort3(&n1, &n2, &n3);

489 :デフォルトの名無しさん:2008/10/21(火) 17:19:27
>>487
どうやって入力するのかわからなかったけど、
とりあえず標準入力から一行ずつ float の値を一つ読み込こんでいくようにしておいた

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

490 :デフォルトの名無しさん:2008/10/21(火) 18:11:11
簡単なゲームを作っているのですが、今まで使っていたアイコンは32×32だったので、それを16×16のサイズにしようと思い、そのサイズの画像を取り込んだら、32×32のサイズに拡大されて表示されてしまうのですがどうしたらよいのでしょう?
アイコンファイルってサイズ指定するとこないですよね?

491 : ◆3VUXqvbfSY :2008/10/21(火) 18:30:43
【質問テンプレ】
[1] 授業単元:計算機プログラミングII
  対象:学部2年次
[2] 問題文(含コード&リンク):問題2( /2問)
  次に示す手順により,入力されたデータのデータの総和を求めるプログラムを作成せよ。
  (1) 適当な要素数の倍精度実数型配列(double)を宣言する。
  (2) 上記(1)で宣言された配列の先頭アドレスをポインタ変数に代入する。ポインタ
    変数を利用して上記(1)で宣言した配列に対して,キーボードから実数データを
    入力する。ただし,Ctrl-Dが入力されたら,データの入力を終了する。
  (3) ポインタ変数を利用して,参照アドレスを移動しながら入力されたデータの
    総和を計算する。
  (4) 入力したデータおよびそれらの総和を表形式で出力せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
    (注) gcc -Wall -ansi -std=c89 -pedantic ファイル名.c のようにしてコンパイル
 [3.3] 言語:C
[4] 期限:2008年10月23日10:30まで
[5] その他の制限:ポインタを習い始めたばかり,for文やif文,関数,配列,文字列の基礎は学習済み

お願いします。

492 :デフォルトの名無しさん:2008/10/21(火) 19:03:53
>>491
いいオプションがついてるな。
ってことはいい先生って事だ。たぶん。

493 :デフォルトの名無しさん:2008/10/21(火) 19:13:49
2枚の画像を読み込んで、それを引き算をして、その引き算した画像を出力するプログラムをお願いします。

494 :デフォルトの名無しさん:2008/10/21(火) 19:35:27
[1] 授業単元:データー構造とアルゴリズム設計
[2] 入力された文字を,リストを用いて順次格納する.’−’が入力された時に文字の入力を終
了し,それまでに格納された全ての文字を表示するプログラム
(例)
a ←入力
b ←入力
c ←入力
− ←入力
c ←出力
b ←出力
a ←出力

[3] 環境
 [3.1] OS:Linux ver3.1
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 来週まで
[5] その他の制限:特にありません


495 :デフォルトの名無しさん:2008/10/21(火) 19:38:47
もう1つ
[1] 授業単元:データー構造とアルゴリズム設計
[2] 入力された小文字のアルファベットを,リストを用いて順次格納する.’−’が入力された
時に文字の入力を終了し,それまでに格納された全ての文字を表示するプログラムを作成
せよ.ただし,リストに格納する際,リストの最後に追加するようにせよ.
(例)
a ←入力
b ←入力
c ←入力
− ←入力
a ←出力
b ←出力
c ←出力

[3] 環境
 [3.1] OS:Linux ver3.1
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 来週まで
[5] その他の制限:特にありません



496 :デフォルトの名無しさん:2008/10/21(火) 19:39:23
お願いします。

497 :デフォルトの名無しさん:2008/10/21(火) 20:56:21
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
 @ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
 また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
 この作業をファイルの最後の2097152個目の値までやりなさい。

 ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
 ヒント:malloc関数

 ※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 http://kissho4.xii.jp/50/src/5yoshi7327.txt.html
 DLKey:data


 A 求めた最大値を2次元配列でpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を出力させ、2行目からは次の1024個中から求めた最大値を出力させなさい。
 同様に3行目、4行目、・・・と順次最大値を出力させなさい。
   例:peak.txt
     472 234 800 578 ・・・・
     677 347 554 532 ・・・・
     843 637 347 551 ・・・・
     ・
     ・
     ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: LSI−86
 [3.3] 言語: C
[4] 期限: 2008年10月23日午後3時
[5] その他の制限: 特になし

よろしくお願いします。

498 :デフォルトの名無しさん:2008/10/21(火) 22:04:04
よくわからないけど平均値どこ行ったの?

499 :358:2008/10/21(火) 23:39:49
>>494,495
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7813.zip
参考程度にしてくれ

>>497
ロダ死亡
LSIのは、むかし試食版とか使ったことあるけど、もうしらねぇ。
http://www1.axfc.net/uploader/Ne/so/34790.zip
参考程度にしてくれ
DLkey : foo

500 :デフォルトの名無しさん:2008/10/22(水) 00:02:22
ちょっと修正、勘違いしていた、気がしないでもない。
ついでに、全ソースもつけといたので、環境に合わせてコンパイルとリンクしてくれ
ロダ生きてたみたい
http://kissho1.xii.jp/7/src/7jyou16166.zip.html
DLkey : foo
ってか、358ってなんだ、前のがそのまんまだった。

501 :デフォルトの名無しさん:2008/10/22(水) 01:44:49
[1] 授業単元: プログラミング実習2
[2] 問題文(含コード&リンク):カレンダー風の出力
 下に示すようなカレンダー風の出力を行うプログラムをwhile文を使って作成してください。
              ・1〜31までの範囲とします。
              ・printf関数で表示幅をそろえます。(右揃え)
                  
              1  2  3  4  5  6  7
              8  9 10 11 12 13 14
             15 16 17 18 19 20 21
             22 23 24 25 26 27 28
             29 30 31
[3] 環境 Visual C++
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: C++コンパイラ,リンカ
[3.3] 言語: C言語
[4] 期限: 2008年10月23日(木)までお願いします。
[5] その他の制限: 逐次処理(順次処理)、条件分岐(選択処理)if,if-else,switch、
            繰り返し(反復処理)while,do-while,for、演算子の複合演算子(+=,-=,*=,/=,%=)
            インクリメント(++)デクリメント(--)は習いました。
お願いします。

502 :デフォルトの名無しさん:2008/10/22(水) 02:23:57
>>498
平均値は最大値を求めるだけに使うので、出力とかはしなくていいんです。
↓(手書きで申し訳ないですけど・・・)イメージ的には↓
http://kissho.xii.jp/1/src/1jyou52627.bmp.html
DLkey:foo

>>499
>>500
ありがとうございます。早速、明日学校でコンパイルしてみます。
本当に助かりました。 

503 :デフォルトの名無しさん:2008/10/22(水) 03:55:43
>>502
圧縮するという事を学ぼう。
テキストはzipに、bmpは形式を変更。

504 :デフォルトの名無しさん:2008/10/22(水) 06:21:16
>>501

#include <stdio.h>
int main(void)
{
int i=1;
while(i!=32){
printf("%2d ",i);
if(!(i%7))
printf("\n");
i++;
}
return 0;
}

505 ::デフォルトの名無しさん :2008/10/22(水) 11:35:56
>>501
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7816.txt

506 :デフォルトの名無しさん:2008/10/22(水) 11:47:05
オブジェクト形式マクロを用いたNUMBER人の点数を配列tensuに
読込み,秀(90〜100点),優(80〜89点),良(70〜79点),可(60
〜69点),不可(0〜59点),判定不能(0未満あるいは100点より
上)の人数を,それぞれ変数a,b,c,d,e,fに格納・表示し,更に最高
点,最低点,合計点,平均点を表示するプログラムを作成せよ.た
だし,最高点,最低点,合計点,平均点の計算において,判定不能
の点数は除外すること.
なおNUMBERの値は10とし,平均点は小数点以下第2位まで表示
すること.
という問題誰か教えてください。

507 :デフォルトの名無しさん:2008/10/22(水) 11:48:05
[1] 授業単元:
[2] 問題文(含コード&リンク):

5.6 29.2 ・・・・25.2
2.7 ・・・



-1.0 mozi
6.7 ・・・・
という様に数値データが書かれたファイルを読み込む。各行に100個の正の実数が書かれている。
これを1次元配列data[100]に順番に入れて、表示する。

これをファイルの終わりまで行う。

-1.0から始まる行があるが、その行は読み飛ばし、次の行から処理を行うようにすること



[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C
[4] 期限:今日
[5] その他の制限: なし

508 :デフォルトの名無しさん:2008/10/22(水) 11:55:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):文字列を入力すると,英小文字を大文字に変換して出力するプログラムをポイン
タを用いてつくりなさい。但し,ライブラリ関数toupper を用いないこと。また,文字
列の入力には,ライブラリ関数であるgets 関数を用いること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:08年10月23日23:00まで

よろしくお願いします。

509 :デフォルトの名無しさん:2008/10/22(水) 12:47:36
[2]
・dx/dt = t という式についてx(t=0)=0として,x(t) をt=0 から1 まで求めるEuler法のプログラムを作れ.
時間刻み(h)をどの程度小さくすると,真値(解析解:x=0.5*t*t)にどの程度近づくかを調べよ.
・FitzHugh-Nagumo方程式の解軌跡を求めるプログラムを作成せよ.
・作成したプログラムを使って、興奮性を示すx,yの初期値を一組探しグラフで結果を示せ.
初期値も自由に設定して良いが、うまくパラメータが見つからない場合は、a=0.7, b=0.8, c=20, z=1.0 を使用すること.
dx/dt=c(x-x^3)/(3+y+z)
dy/dt=(a-x-by)/c


[3] 環境
 [3.1] Windows
 [3.2] コマンドプロンプト
 [3.3] C
[4] 明日17時
[5] わからないのを3つ載せましたが、1つでも構わないのでなんとかお願いします。

510 ::デフォルトの名無しさん :2008/10/22(水) 13:08:58
>>508
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7817.txt

511 :デフォルトの名無しさん:2008/10/22(水) 13:52:57
>>510

ありがとうございました!

512 :デフォルトの名無しさん:2008/10/22(水) 14:32:51
わざわざ文字列の長さを求めなくてもAllCharactersToUpperのfor文の条件をstr[i]!='\0'にすればいいと思う。

513 :デフォルトの名無しさん:2008/10/22(水) 14:50:28
>>509
Cじゃないけどエクセルで作ってみたw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7818.zip

514 ::デフォルトの名無しさん :2008/10/22(水) 15:14:32
>>507
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7819.txt

515 :デフォルトの名無しさん:2008/10/22(水) 15:41:27
2つの画像を読み込んで、1つ目の画像から2つ目の画像を引き算をした画像を作りたいんですが
どのような感じで作ればいいでしょう?

516 :デフォルトの名無しさん:2008/10/22(水) 15:55:18
2つの画像を読み込んで、1つ目の画像から2つ目の画像を引き算するような感じで
作ればいいと思います

517 ::デフォルトの名無しさん :2008/10/22(水) 16:21:40
>>507
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7820.txt

518 :デフォルトの名無しさん:2008/10/22(水) 16:25:34
>>514
最初の1行しか読まれないんですが・・・

519 ::デフォルトの名無しさん :2008/10/22(水) 16:30:51
>>518
>>517で試してみて

520 :デフォルトの名無しさん:2008/10/22(水) 16:32:18
>>519
3つめでしょうか?

521 :デフォルトの名無しさん:2008/10/22(水) 16:36:01
>>518
プログラムざっとみたけど1行目しか読んでない

522 :デフォルトの名無しさん:2008/10/22(水) 16:42:31
>>519
3つめでやったら、コンパイルは通るんですが、バッファーオーバーランでとまります・・・

523 :デフォルトの名無しさん:2008/10/22(水) 16:50:24
do-while間のi初期化忘れてるな

524 :523:2008/10/22(水) 16:53:21
投稿者が見てるか分からんが

i=0;          ←追加
do{
(略)
}while(dp = strtok(NULL,gDlim));

これで動くように一見見える

525 :デフォルトの名無しさん:2008/10/22(水) 16:54:36
>>524
動きました。がやはり1行目しか読まれないみたいです

526 :523:2008/10/22(水) 17:01:18
char *dp,*p,*gDlim = " \n\r";

char *dp,*p,*gDlim = " ";

これもミスっぽいな

527 :デフォルトの名無しさん:2008/10/22(水) 17:17:20
>>504-505
お二人とも本当に有難う御座いました。
助かりました。

528 ::デフォルトの名無しさん :2008/10/22(水) 17:25:24
>>525
読み込むファイルアップしてみ

529 :デフォルトの名無しさん:2008/10/22(水) 17:29:51
fgets後にstrtokで" \r\n"渡してるからじゃん?
これだと行頭しか処理されないよ。

530 :デフォルトの名無しさん:2008/10/22(水) 17:31:44
strtokとか使う必要あんの?普通にfscanfのほうがよくね?とか無責任に言ってみる

531 :517:2008/10/22(水) 17:39:35
行頭に-1.0がある行は無視するという条件だから
行中に-1.0があっても読み込むためにstrtokを使った
ちなみにfscanfつかったソースは#if 0〜#endif
の間に残してある

532 :デフォルトの名無しさん:2008/10/22(水) 17:42:21
>>529
そうなんですか?やはり1行目しか読まれません

533 :デフォルトの名無しさん:2008/10/22(水) 17:47:15
あと1行1列が2回表示されます・・・

534 :デフォルトの名無しさん :2008/10/22(水) 17:53:07
>>533
だから読み込むファイルアップしてみ




535 :デフォルトの名無しさん:2008/10/22(水) 17:57:21
>>534
見落としてました。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7821.txt
これです。横に100個って書いたんですが、12個のファイルしかなかったです。
先ほど頂いたソースは100のところを12に書き換えました。

536 :デフォルトの名無しさん:2008/10/22(水) 17:59:29
>>534
俺も適当にddata.txt作ってみたけど1列目が2回出たなあ

537 :デフォルトの名無しさん:2008/10/22(水) 18:03:30
実数が100個並ぶのにバッファは512かあ。

538 :デフォルトの名無しさん:2008/10/22(水) 18:15:03
>>535
なんかこれでいいかわかんないけどつくってみた

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
FILE* fp;
char buf[1024],*cp;
double data[100];
int i,cnt;
if((fp = fopen("in.txt","r")) == NULL) return 1;
while(fgets(buf,sizeof(buf),fp) != NULL){
if(strnicmp("-1.0",buf,strlen("-1.0")) == 0) continue;
cp = buf; cnt = 0;
while((cp = strtok(cp," \t\r\n")) != NULL){
data[cnt++] = atof(cp); cp = NULL;
}
for(i=0;i<cnt;i++) printf("%f\n",data[i]);
}
fclose(fp);
}

539 :デフォルトの名無しさん:2008/10/22(水) 18:19:14
return 0;
わすれちゃった。

540 :デフォルトの名無しさん:2008/10/22(水) 18:42:16
>>538
うまくうごきました。ありがとうございます。

541 :デフォルトの名無しさん:2008/10/22(水) 19:01:36
[1] 授業単元:C
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7823.txt
問1.このプログラムではxの零乗が3x{0}と表示されるため3と出力されるようにする
問2.このプログラムでは入力の逆順に単項式が出力されるためそれを入力した順番に単項式が出力するようにする
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: お任せ
 [3.3] 言語: C
[4] 期限: 2008年10月24日hh:mmまで



542 :デフォルトの名無しさん:2008/10/22(水) 19:25:10
画像を読み込み、引き算したプログラムを自分なりに作ったんですが

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#define XL 900
#define YL 900

int main(int argc, char**argv)
{
FILE *fp1, *fp2, *fp3;
int i;
float opx, px1, px2;

fp1 = open("argv[1]", "rb");
fp2 = open("argv[2]", "rb");
fp3 = open("argv[3]", "wb");

for(i=0; i<XL*YL; i++){

fread(&px1,sizeof(float),1,fp1);
fread(&px2.sizeof(float),1,fp2);
opx = px1-px2;
write(&opx,sizeof(float),1,fp3);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
コンパイルが通らず、エラーがでてしまいます;
アドバイスを頂けるとうれしいです

543 :デフォルトの名無しさん:2008/10/22(水) 19:26:15
380
>>407
遅くなりましたが、回答ありがとうございました!!
もっと自分で学習せないかんですね・・・

544 :デフォルトの名無しさん:2008/10/22(水) 19:27:58
fread(&px1,sizeof(float),1,fp1);
fread(&px2.sizeof(float),1,fp2);
write(&opx,sizeof(float),1,fp3);
&いるっけ?

545 :デフォルトの名無しさん:2008/10/22(水) 19:28:47
ごめん、いるわw
勘違いでした

546 :デフォルトの名無しさん:2008/10/22(水) 19:47:51
×fp1 = open("argv[1]", "rb");
○fp1 = open(argv[1], "rb");

×fread(&px2.sizeof(float),1,fp2);
○fread(&px2.sizeof(float),1,fp2);
        ^

547 :デフォルトの名無しさん:2008/10/22(水) 19:48:27
ああ、まちがえた。
×fread(&px2.sizeof(float),1,fp2);
○fread(&px2,sizeof(float),1,fp2);
        ^

548 :デフォルトの名無しさん:2008/10/22(水) 20:11:32
483 484 お二人ともありがとうございました。質問の内容がわかりにくくてすいません。
ありがとうございました

549 :デフォルトの名無しさん:2008/10/22(水) 20:26:48
>>541
問1
最後のfor内を次のようにする

printf("%+d", pwork->coef);
if(pwork->degree_of_x)
printf("x^{%d}", pwork->degree_of_x);

問2
printf("Input the coefficient: ");の前にpmx->next = poly;を入れる
poly = pmx;の後ろのpmx->next = poly;を消す

550 :デフォルトの名無しさん:2008/10/22(水) 21:22:28
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
 @ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
 また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
 この作業をファイルの最後の2097152個目の値までやりなさい。
 ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
 ヒント:malloc関数

 ※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 http://kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data
 
 A 求めた最大値を2次元配列でpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を出力させ、2行目からは次の1024個中から求めた最大値を出力させなさい。
 同様に3行目、4行目、・・・と順次最大値を出力させなさい。
 例:peak.txt →  472 234 800 578 ・・・・
           677 347 554 532 ・・・・
           843 637 347 551 ・・・・
           ・
           ・
           ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: LSI−86
 [3.3] 言語: C
[4] 期限: 2008年10月23日午後3時
[5] その他の制限: 特になし

>>500 gccでコンパイルしてみたんですが、うまくいきませんでした。
エラー表示 → main.c:56: undefined reference to`_nao_DList_t_ctor'

よろしくお願いします。


551 :デフォルトの名無しさん:2008/10/22(水) 21:25:05
>>497>>550 問題文修正しました
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
 @ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と平均値から突飛している値=最大値を求めなさい。最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
 また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。
 この作業をファイルの最後の2097152個目の値までやりなさい。
 ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
 ヒント:malloc関数

 ※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 http://kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data
 
 A 求めた最大値を2次元配列でpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を出力させ、2行目からは次の1024個中から求めた最大値を出力させなさい。
 同様に3行目、4行目、・・・と順次最大値を出力させなさい。
 例:peak.txt →  472 234 800 578 ・・・・
           677 347 554 532 ・・・・
           843 637 347 551 ・・・・
           ・
           ・
           ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc または LSI−86
 [3.3] 言語: C
[4] 期限: 2008年10月23日午後3時
[5] その他の制限: 特になし

>>500 gccでコンパイルしてみたんですが、うまくいきませんでした。
エラー表示 → main.c:56: undefined reference to`_nao_DList_t_ctor'

よろしくお願いします。

552 :デフォルトの名無しさん:2008/10/22(水) 21:31:09
[1] 授業単元: C++
[2] 問題文(含コード&リンク):

標準入力から山の名前とその標高を入力し、標高の高い順にソートして、山の名前を表示するプログラムを作れ。

STLのpairを使うこと。 


[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 明日
[5] その他の制限: 特になし


553 :デフォルトの名無しさん:2008/10/22(水) 21:44:28
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):

void desc_array(int n, int *array)
{
int i;
for (i = n-1; i >= 0; i--)
array[i] = i;
}

降順にソートされた配列を作成したいが、上の関数では昇順に配列が作成されてしまうので誤りである。
そこで上の関数を正しい形に修正し、ディスプレイに表示し実際に降順となっていることを確かめられるプログラムを作れ。
(降順というのはたとえば、a[0] = 0, a[1] = -1, a[2]= -2, ..., a[n-1] = -(n-1)となっていればいい。)

[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月23日
[5] その他の制限:無し

お願いします。


554 :デフォルトの名無しさん:2008/10/22(水) 21:56:59
>>551
あれ、だめだったのか。
Terminalから、makeするだけでいいはずなんだけどconfigure作ってなかったからかもしれないなぁ。
READMEファイルでも読んで、ダメだったらどうしよう。
http://kissho1.xii.jp/7/src/7jyou16183.zip.html
DLkey : foo
処理の効率化とかヘッダファイルに使いかたとか書いといたので、うまくいかなかったらソース自体変更してみてね。

555 :デフォルトの名無しさん:2008/10/22(水) 22:17:30
>>553
array[i] = i;

array[i] = -i;

556 :デフォルトの名無しさん:2008/10/22(水) 22:20:37
>>554
:set backupdir=/tmp
とでもするといいよ。ってemacsでも~作るんだったらそっちはわかんね><

557 :デフォルトの名無しさん:2008/10/22(水) 22:29:17
>>552
こんなん?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7824.txt

558 :デフォルトの名無しさん:2008/10/22(水) 22:49:48
>>556
ありがたく追加させていただきました。
基本viを使っています。たまにvimになったり、geditになったりもしますが、emacsは使いません。
でも、S式っていいよね、とか言ってみるてst。

559 :デフォルトの名無しさん:2008/10/22(水) 23:22:08
>>551
これでいい?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7827.txt

560 :デフォルトの名無しさん:2008/10/22(水) 23:31:34
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):x^3-7x^2+16x-10=0 の解をニュートン法を用いて求めるプログラムを作りなさい。
[3] 環境 OS: Windows
[4] 期限: 2008.10.24

お願いします。


561 :デフォルトの名無しさん:2008/10/22(水) 23:47:43
>>560
はい。
#include<stdio.h>
#include<math.h>
#define EPS 0.0001
//x^3-7x^2+16x-10
double f(double x){ return x*(x*(x-7)+16)-10; }
//3x^2-14x+16
double df(double x){ return x*(3*x-14)+16; }

int main(){
double x,next=0;
do{
x=next;
next = x - f(x)/df(x);
}while(fabs(next-x) > EPS*fabs(x));
printf("%f\n",next);
}

562 :デフォルトの名無しさん:2008/10/22(水) 23:51:22
[1] 授業単元: C
[2] 問題文(含コード&リンク):
プログラムの冒頭で
#define YEAR 2005
#define MONTH 12
#define DATE 24
#define HOUR 00
#define MIN 00
#define SEC 00
#define STEP 20
と定義して、STEP秒毎の西暦、月、日、時、分、秒を99STEP分出力する関数を作成せよ。
「出力例」
01:2005/12/24/00:00:00
02:2005/12/24/00:00:20
03:2005/12/24/00:00:40
04:2005/12/24/00:01:00
    ・
    ・
    ・
99:
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: borland c++5.5
 [3.3] 言語: C
[4] 期限: ([2008年10月24日まで]
[5] その他の制限: なし

以上よろしくお願いします。

563 :デフォルトの名無しさん:2008/10/23(木) 00:04:47
>>555
ありがとう。作成した配列をディスプレイに表示する所が分からないのですが、
printf内にどうやってdesc_arrayで作成したarray[i] = iの部分を書けばいいのでしょうか?

564 :デフォルトの名無しさん:2008/10/23(木) 00:06:39
printf("array[%d] = %d,i,srray[i])

565 :デフォルトの名無しさん:2008/10/23(木) 00:11:11
>>561
ありがとうございます。

566 :デフォルトの名無しさん:2008/10/23(木) 00:19:41
すいません>>560ですが
コンパイルしようとすると
bccは内部コマンド、外部コマンド
操作可能なプログラムコマンドまたはバッチファイルとして認識しません。
と出るんですが、どうすればいいのですか??

567 :デフォルトの名無しさん:2008/10/23(木) 00:25:41
bcc32じゃないの? つーかそもそもコンパイラはいってるの?

568 :デフォルトの名無しさん:2008/10/23(木) 00:26:32
宿題以前だろ…

569 :デフォルトの名無しさん:2008/10/23(木) 00:38:00
>>567>>568
すいませんでした・・・
解決しました。

570 :デフォルトの名無しさん:2008/10/23(木) 00:40:20
>>562
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7829.c

571 :デフォルトの名無しさん:2008/10/23(木) 00:42:54
>>562
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define YEAR 2005
#define MONTH 12
#define DATE 24
#define HOUR 00
#define MIN 00
#define SEC 00
#define STEP 160000
int main(){
int i;
char buf[1024];
struct tm date;
time_t now;
date.tm_year = YEAR - 1900;
date.tm_mon = MONTH - 1;
date.tm_mday = DATE;
date.tm_hour = HOUR;
date.tm_min = MIN;
date.tm_sec = SEC;
for(i=1;i<=99;i++){
if((now = mktime(&date)) == -1) return 1;
strftime(buf,sizeof(buf),"%Y/%m/%d/%X",&date);
printf("%02d:%s\n",i,buf);
date.tm_sec += STEP;
}
}

572 :デフォルトの名無しさん:2008/10/23(木) 01:17:36
[1] 授業単元:C
[2] 問題文(含コード&リンク):3つの整数を入力し,それらを比較して,大,中,小を判定しなさい.
3つの整数が同じ値の場合,あるいは2つの整数が同じ値の場合でも
正確に判定ができるように対応すること.
全ての条件を場合分けするプログラムは不可とする.
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 10月30日13:00
[5] その他の制限: 特になし

お願いします

573 :デフォルトの名無しさん:2008/10/23(木) 01:18:46
下記のように出力するプログラムをprintf,getsを用いて作成せよ.

./a.exe

学籍番号は? XXXXXXXXX
名前は? AAAA BBBB

学籍番号: XXXXXXXXX
名前 :AAAA BBBB

574 :573:2008/10/23(木) 01:21:05
>>573の続き
↓じゃ出力のAAAAが出ないのですがどうしたらいいですか?

#include<stdio.h>

int main()
{
char st1[80];
char st2[80];

printf("学籍番号は?");
scanf("%s",st1);

gets(st2);

printf("名前は?");
scanf("%s",st2);

gets(st2);

printf("学籍番号:%s\n",st1);
printf(" 名前 :%s\n",st2);
}

575 :デフォルトの名無しさん:2008/10/23(木) 01:23:25
>>574
scanfいらない

576 :573:2008/10/23(木) 01:25:35
>>573の補足

学籍番号は? XXXXXXXXX      補足→ XXXXXXXXXはキーボードで打ちます
名前は? AAAA BBBB        補足→ AAAA BBBBはキーボードで打ちます

577 :573:2008/10/23(木) 01:27:02
>>575
即レスありです。

両方ともいらないですか?

578 :デフォルトの名無しさん:2008/10/23(木) 01:35:17
>>577
両方いらないです。

579 :573:2008/10/23(木) 01:41:48
名前はちゃんと出ましたが学籍番号がちゃんと出ません><

580 :デフォルトの名無しさん:2008/10/23(木) 02:02:51
>>579
記載ミスだと思ってスルーしてましたが
1つめのgetsの引数は st1 にしていますよね?

581 :デフォルトの名無しさん :2008/10/23(木) 02:03:35
>>574
#include<stdio.h>

int main()
{
char st1[80];
char st2[80];

printf("学籍番号は?");
gets(st1);

printf("名前は?");
gets(st2);

printf("学籍番号:%s\n",st1);
printf(" 名前 :%s\n",st2);

return 0;
}


582 :デフォルトの名無しさん:2008/10/23(木) 04:59:48
>>572
#include<stdio.h>
int main(void){
int a, b, c, flag = 0;
printf("Input Number (a,b,c) : ");
scanf("%d,%d,%d", &a, &b, &c);
if(a >= b) flag |= 0x01;
if(b >= c) flag |= 0x02;
if(c >= a) flag |= 0x04;
printf("大中小\n");
switch(flag){
case 0x01: printf("%2d%2d%2d\n", a, c, b); break;
case 0x02: printf("%2d%2d%2d\n", b, a, c); break;
case 0x03: printf("%2d%2d%2d\n", a, b, c); break;
case 0x04: printf("%2d%2d%2d\n", c, b, a); break;
case 0x05: printf("%2d%2d%2d\n", c, a, b); break;
default: printf("%2d%2d%2d\n", b, c, a);
}
return 0;
}

583 :573:2008/10/23(木) 08:21:48
>>581
ありがとうございます。

584 :デフォルトの名無しさん:2008/10/23(木) 09:54:51
>>564
#include<stdio.h>

void desc_array(int n, int *array)
{
int i;
for (i = n-1; i >= 0; i--)
array[i] = -i;

}

int main()
{
int n,i;
int *array;
n =8;
desc_array(n,array);

printf("array[%d] = %d",i,array[i]);
return 0;
}

mainの中のどこが違うんでしょうか?セグメントエラーを吐きます。

585 :デフォルトの名無しさん:2008/10/23(木) 10:00:08
>>554
>>556
ありがとうございました。うまくコンパイルすることができました。
本当に助かりました。m(__)m

>>559
シンプルでわかりやすいプログラムありがとございます。
まだちゃんと解読してないんですけど、peak.txtの出力した最大値が
1024個中5個だけってことなんでしょうか? 一応、求めた平均値より突飛して高い値(最大値とする)
をpeak.txtに出力したいんですけど・・・最大値の数は特に指定はないです。

586 :デフォルトの名無しさん:2008/10/23(木) 10:11:17
>>584
main() 無効なアドレスをさしている変数 array
たぶんやりたいのは、
#include <stdlib.h>を、#include <stdio.h>のしたあたりに追加。
n = 8;の後に、array = (int *)malloc(sizeof(int) * n);
if ( array == NULL ) {
fprintf(stderr, "Error : Bad alloc !\n");
exit(8);
}
その後、desc_array(n, array);
で、arrayを使わなくなったら、free(array);

587 :デフォルトの名無しさん:2008/10/23(木) 10:17:06
MCIでデータ1データ2データ3を同時に鳴らした時、
コールバックでどのデータが終了したか
どうやって判断したらいいですか?

588 :デフォルトの名無しさん:2008/10/23(木) 10:47:44
[1] 授業単元: 情報工学演習
[2] 問題文(含コード&リンク):
数独のような問題を解くプログラムと、ポーカーでの強さを判定するプログラム
詳細は下のテキストファイルに書いてあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7830.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月24日13時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
main関数は必ずテキストファイルに書いてあるもののままにしてください。
それ以外の部分もなるべくそのままでお願いします。
また、なるべく理解したうえで少し自分なりに手直したいので、
どんな手順で判定を行っているのかなど、軽く説明していただけると助かります。

できれば今日中にお願いします。急なお願いで申し訳ありません。

589 :デフォルトの名無しさん:2008/10/23(木) 10:49:54
>>584
int *array;

int array[8];
にしたらいい


590 :デフォルトの名無しさん:2008/10/23(木) 11:37:57
>>584
そもそも i に値がはいってないな。

591 :デフォルトの名無しさん:2008/10/23(木) 12:22:37
>>585
なんか5個だと思い込んでたw
てか最大値って言葉わかりにくいー極大値とか外れ値とかそんな感じ??
飛び抜けて大きな値って平均値の何倍かとかで調べたいんですか?
よくわかんないので標準偏差の何倍かで調べるようにしてみました。
てかこのまえupした画像で考えると、グラフで飛び出した点を求めなきゃいけないとするといったん並べ替えるのはよくないのだろうか・・・??
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7831.txt

592 :デフォルトの名無しさん:2008/10/23(木) 12:56:53
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ユーザから2から100までのいずれかの整数を受け取り、1からその数までの総和を計算する
プログラムをfor文を使って書け。利用者が範囲外の数値を入力した場合、「値が範囲内にありません」
などのエラー表示を行え。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名 gcc
 [3.3] 言語: C
[4] 期限: 2008/10/25
[5] その他の制限:まだ初めて日が浅く、習ったのはif else文やforループくらいまでです。

よろしくお願いします。

593 :デフォルトの名無しさん:2008/10/23(木) 13:03:19
1] 授業単元:c++ builder
[3] 環境
 [3.1] OS:Widows XP
 [3.3] 言語:C++
[4] 期限:2008/10/24
[5] その他の制限:Cの基本言語程度

Memo1に60行の配列の乱数を出したのですが、そのMemo1にある60行の乱数の平均の数を
Edit1に出すプログラムがどうしてもできません。
どなたか教えていただけないでしょうか。よろしくおねがいします。

594 :デフォルトの名無しさん:2008/10/23(木) 13:19:31
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):100 個の整数型配列を宣言して,各要素に2〜200 の偶数値を格納し,配列要素の
総和を求めて出力するプログラムをつくりなさい。ただし,配列への値の格納,総和の
計算ともポインタを用いて実行すること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:08年10月24日24:00まで

どうかお願いします。

595 :デフォルトの名無しさん:2008/10/23(木) 13:55:57
>>588 問2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7832.txt
これでいい?
問題文にあった3つの動作例でしかチェックしてない。

596 :デフォルトの名無しさん:2008/10/23(木) 14:07:55
[1] 授業単元:プログラム・C言語
[2] 問題文(含コード&リンク):
以下のようなプログラムを作成しなさい

まず標準入力から、姓と名をそれぞれ別のchar配列型変数で受取る。
次に別の空のchar配列型変数に名と姓の間にスペースを挿入して格納し、表示するプログラム。
※ヒント 
空のchar配列型変数に「名」を入れる時はstrcpy()、スペースと「姓」を追加する時はstrcat()を使う
とよい。

実行例
./a
family name? sato
first name? zin

zin sato

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名 gcc
 [3.3] 言語: C
[4] 期限: 2008/10/25
[5] その他の制限:まだ序の口レベルです。 #include <stdlib.h>のみでお願いします。

何卒よろしくお願いします。

597 :デフォルトの名無しさん:2008/10/23(木) 14:19:28
>>592
#include <stdio.h>

int main(void)
{
int n, i, sum=0;

printf("値を入力してください\n");
scanf("%d", &n);

if(n < 2 || n > 100)
{
printf("値が範囲内にありません\n");
}
else
{
for(i=1; i<=n; i++)
{
sum += i;
}
printf("総和 = %d\n", sum);
}

return 0;
}

598 :デフォルトの名無しさん:2008/10/23(木) 14:22:11
>>596
#include <stdio.h>
#include <string.h>

int main()
{
char family_name[16], first_name[16], name[32];

printf("family name? ");
gets(family_name);
printf("first_name? ");
gets(first_name);

strcpy(name, first_name);
strcat(name, " ");
strcat(name, family_name);

printf("%s", name);

return 0;
}

599 :デフォルトの名無しさん:2008/10/23(木) 14:29:38
>>594
#include <stdio.h>

void Set(int *buf)
{
int i;

for(i = 0; i < 100; i++)
buf[i] = (i+1)*2;
}

int Sum(int *buf)
{
int i, sum = 0;

for(i = 0; i < 100; i++)
sum += buf[i];

return sum;
}

int main()
{
int buf[100];

Set(buf);

printf("%d", Sum(buf));

return 0;
}

600 :デフォルトの名無しさん:2008/10/23(木) 14:40:52
>>595
返答ありがとうございます。

無理でしたら構いませんが、なるべく関数poker_hand内で全ての動作を
記述している形がよいので、できればその形に組みなおしていただきたいのですが
とりあえず参考にしつつ自分でも作ってみておきます。
問1に関してもできればnumber_place内で全て記述している形でお願いします。
無茶な要求をしてしまって申し訳ありません。

601 :デフォルトの名無しさん:2008/10/23(木) 14:59:44
[1] 授業単元:CG(C言語使用)
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7835.zip
OpenGLによるCGを用いたプログラムを、自由に設計する課題を作成。
条件として、「アニメーションが行えること」、「キーボード入力によって何らかの
操作が行えること」、「シェーディングやテクスチャマッピングを適切に使用できること」
です。前者2つとシェーディングは何とか理解出来ますが、テクスチャマッピングが
思うように設計できません。どなたか専門知識をお持ちの方、私が添付したプログラムのどの
辺にどのような関数をセットすればよいかなど、いわゆる作成方法についてご指導
お願いします。なお、テクスチャマッピングは壁を設計する予定です。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Borland C++(bcc32)
 [3.3] 言語:C
[4] 期限:2008年10月23日22時半

なお、期限については今日中としますが、今日中に良い意見が集まらなければ明日も
募集する予定です。宜しくお願いします。

602 :デフォルトの名無しさん:2008/10/23(木) 15:02:17
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7833.lzh

↑↑の画像の一番明るい場所を、
画像の中心を(0,0)とした座標として表示するプログラムを
つくりなさい。また、その明度の値も表示するようにしなさい。
例に示した画像はjpeg形式ですが、非圧縮bmp(白黒)
の場合でも可能です。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:今月中
[5] その他の制限:なし

よろしくお願いします。

603 :デフォルトの名無しさん:2008/10/23(木) 15:08:51
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):

文字列を入力し、その文字列が外部のテキストファイルに存在すれば、OK!と表示するプログラムを作れ

外部テキストは

apple
egg




のように10万個ほどの単語が書かれている。

効率的に探せるならば、C++のSTL等を用いてよい


[3] 環境
 [3.1] OS: Xp
 [3.2] VC 6.0
 [3.3] 言語: C++
 [4] 期限:明日
[5] その他の制限:


お願いします

604 :592:2008/10/23(木) 15:12:26
>>597
早いレスで助かります。
どうもありがとうございました。

605 :デフォルトの名無しさん:2008/10/23(木) 15:22:15
>>600
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7836.txt
もうやだ。こんなプログラム見たくねえorz

606 :デフォルトの名無しさん:2008/10/23(木) 15:33:58
ただのストレートでも 10 → A いけるんだとしった
ロイヤルの時だけだと思ってたわ

607 :デフォルトの名無しさん:2008/10/23(木) 15:36:11
>>582
ありがとうございます

608 :デフォルトの名無しさん:2008/10/23(木) 15:38:37
>>588
問1
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7837.txt

合ってるといいなw

609 :デフォルトの名無しさん:2008/10/23(木) 16:03:17
>>603
こんなでいい?
#include<iostream>
#include<fstream>
#include<string>
#include<set>
using namespace std;
typedef set<string> Dictionary;
int main(){
string word;
Dictionary dict;
ifstream ifs("in.txt");
if(!ifs.is_open()) return 1;
while(!ifs.eof()){
ifs >> word;
dict.insert(word);
}
ifs.close();
while(1){
cout << "Search:";
cin >> word;
if(dict.find(word) != dict.end()) cout << "OK!" << endl;
else cout << "Not found." << endl;
}
}

610 :デフォルトの名無しさん:2008/10/23(木) 16:09:27
>>599

丁寧な回答ありがとうです!




611 :デフォルトの名無しさん:2008/10/23(木) 17:50:21
[1] 授業単元:文字列の探索
[2] 問題文(含コード&リンク):
(1)ファイルの先頭からテキストを1行ずつ(1行の文字数は999文字以下とする)読み込み、
  何行目の何文字目に検索文字列の先頭が存在するか出力する。
(2)探索文字列中に同じ文字が複数含まれる場合について検索方法を改良する。

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

[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc (ver不明です)
 [3.3] 言語: C言語
[4] 期限: 2008年10月27日23:59まで
[5] その他の制限:問題文中のプログラムの「//ここにボイヤームーア法」の場所を補ってプログラムを組む感じです。
どうかお願いします。。

612 :デフォルトの名無しさん:2008/10/23(木) 19:16:59
>>602
libjpeg 使っていいんだったら
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7840.txt

613 :デフォルトの名無しさん:2008/10/23(木) 19:37:45
>>598

あなたのお陰で非常に助かりました。
ありがとうございます。

614 :デフォルトの名無しさん:2008/10/23(木) 19:41:20
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文:次の関数のゼロ点を求めるプログラミングをせよ。
        f(x) = x^4-10x^3+ 35x^2-50^x+24
        探索区間はx = 0から5(数学的表現では、x = [0; 5))であり
        実数解が4個あることを留意せよ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月24日1300まで
[5] その他の制限:2分法を使って組んでいただけませんか。

615 :デフォルトの名無しさん:2008/10/23(木) 20:49:21
>>614
#include <stdio.h>
#include <math.h>
double f( double x )
{
return pow(x,4) -10 * pow(x,3) + 35 * pow(x,2) - pow(50,x) + 24;
}
int main()
{
double x = 1.0;
printf( "f(%lf) = %lf\n", x, f(x) );
return 0;
}

616 :614:2008/10/23(木) 20:54:54
>>615
おい
ふざけんな

617 :デフォルトの名無しさん:2008/10/23(木) 21:09:28
【質問テンプレ】
[1] 授業単元:仕事
[2] 問題文(含コード&リンク):
"00 00 01 bd 80 80 ...."
とスペースや改行も含めた
テキストファイルから
0x00 0x00 0x01 のバイト列に
変換するコードをください

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C/C++どちらでも可
[4] 期限: 2008/10/24 10:00
[5] その他の制限:特に無しです

よろおね

618 :デフォルトの名無しさん:2008/10/23(木) 21:11:04
>>614
実数解が1個しか無いんだが。。。
#include <stdio.h>
#include <math.h>
#define DELTA 1e-4

double f(double x) { return pow(x, 4) - 10*pow(x, 3) + 35*pow(x, 2) - pow(50, x) + 24; }
int main(int argc, char *argv[])
{
double left = 0.0, right = 5.0, mid = 2.5;
if (f(left) * f(right) > 0) {
return 1;
}
while (fabs(f(mid)) > DELTA) {
mid = (left + right) / 2;
if (f(left) * f(mid) < 0)
right = mid;
else
left = mid;
}
printf("x = %f\n", mid);
return 0;
}

619 :614:2008/10/23(木) 21:16:10
すいません関数が間違っていました
f(x)=x^4-10*x^3+35*x^2-50*x+24

620 :デフォルトの名無しさん:2008/10/23(木) 21:27:33
[1] 授業単元:文字列
[2] 問題文(含コード&リンク):

mozi1_mozi2_mozi3のように_で区切られた文字列を標準入力から入力し、stringに格納する。

char *list1[5] = {"test","test2","test3","test4","test5"} と *list2[3] = {"hoge",hoge2","hoge3"} の文字列へのポインタの配列
がある。

mozi1はlist1の文字列と比較し、一致するものがあればその添え字を表示し、
mozi2はlist2の文字列と比較して、同様の動作をするプログラムを作れ。

mozi1がtest2であれば1を表示
mozi2がhoge3であれば2を表示する。一致するものがなければその旨を表示すること



[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: 2008年10月25日
[5] その他の制限

お願いします。

621 :615:2008/10/23(木) 21:43:09
>>619
>>616

622 :デフォルトの名無しさん:2008/10/23(木) 21:55:07
>>611
質問が
BM法ってリスト2つ使った奴じゃないと駄目?
それとも簡略版でいいのかしら

623 :デフォルトの名無しさん:2008/10/23(木) 22:49:19
1] 授業単元: C++
[2] 問題文: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7841.txt
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Visual stdio2005
 [3.3] 言語:C++
[4] 期限:10月 24日(土)まで

期限が短いですがお願い致します。


624 :デフォルトの名無しさん:2008/10/23(木) 22:53:58
ここってGUIも受け付けてもらえますか?

625 :デフォルトの名無しさん:2008/10/23(木) 22:56:54
受け付けてもらえます

626 :611:2008/10/23(木) 22:57:38
>>622
ありがとうございます。
講義内でも問題文に書かれた以上のことは言われなかったのですが、簡略版で大丈夫です。
とりあえず、「力まかせの探索」でなければ大丈夫とのことでした。

627 :デフォルトの名無しさん:2008/10/23(木) 22:58:21
[1] 授業単元: 信号解析
[2] 問題文(含コード&リンク):

一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル
Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、

τdx/dt = -dV/dx + ξ(t)
< ξ(t)ξ(t') > = A * б (t - t')
< ξ(t) > = 0 …@

で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル
V (x; t) は、時間と共に周期的にその形を変える:

V(x,t) = Vo(x) - f(t)x
= -1/2*ax^2 + 1/4*bx^4 - hxcos(wt)

で与えられる。
a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。
t = 0 において、玉はx = 10 にあるとする。
τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。
@式を時間発展させて、玉の位置と周期的な外力f(t)に比例する量である10cos(ωt)をグラフに表せ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月24日23:59まで
[5] その他の制限: 特になし

 よろしくお願いします

628 :デフォルトの名無しさん:2008/10/23(木) 23:00:13
>>624
では書きます。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ファイルを開く・保存のコモンダイアログを使い、選択されたファイルをテキストに書き出すプログラムを作れ。
ファイルは複数選択される場合もある。
express版の場合、外部のリソースエディタは用いてかまわない。


出力されるファイル
test.bmp
data.wav
data2.wav




[3] 環境 
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual studio 2008
 [3.3] 言語: C or C++
[4] 期限: 2008年10月26日
[5] その他の制限

629 :デフォルトの名無しさん:2008/10/23(木) 23:02:11
>>627 問題文修正しました
[1] 授業単元: 信号解析
[2] 問題文(含コード&リンク):

一定周期を持つ弱い外力f(t) とガウス分布するノイズξ(t) を受けながら、ポテンシャル
Vo(x) 中を動く玉の運動は、玉の座標をx(t) として、

τdx/dt = -dV/dx + ξ(t)
< ξ(t)ξ(t') > = Aб(t - t')
< ξ(t) > = 0 …@

で記述される。ここで、A はノイズの強さ、τ は系の時定数である。また、全ポテンシャル
V (x; t) は、時間と共に周期的にその形を変える:

V(x,t) = Vo(x) - f(t)x
= -1/2*ax^2 + 1/4*bx^4 - hxcos(wt)

で与えられる。
a = 1.0 * 10^(-3)、b = 1.0 * 10^(-5)、 h = 2 * 10^(-3)とする。
t = 0 において、玉はx = 10 にあるとする。
τ = 1.0 * 10^(-4)、ノイズの分散 A = 7.0*10^(-4)、ω = 2π/10とする。
@式を時間発展させて、玉の位置と周期的な外力 f(t) に比例する量である 10cos(ωt) をグラフに表せ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月24日23:59まで
[5] その他の制限: 特になし

 よろしくお願いします

630 :デフォルトの名無しさん:2008/10/23(木) 23:03:31
この分野では、Sunday のアルゴリズムが究極では?


表 : 実行結果

: 時間 (秒) : 比較回数
-------------------------------
力任せ : 0.133 : 149,938
BM 法 : 0.046 : 30,168
BMH 法 : 0.041 : 29,728
quick : 0.033 : 25,094

http://www.geocities.jp/m_hiroi/light/pyalgo11.html

631 :デフォルトの名無しさん:2008/10/24(金) 00:41:06
名前を変えるほど改良されてる訳でもない気がしないでもない

632 :デフォルトの名無しさん:2008/10/24(金) 01:09:30
Quick Search algorithm http://www-igm.univ-mlv.fr/%7Elecroq/string/node19.html

The C code
void preQsBc(char *x, int m, int qsBc[]) {
int i;

for (i = 0; i < ASIZE; ++i)
qsBc[i] = m + 1;
for (i = 0; i < m; ++i)
qsBc[x[i]] = m - i;
}


void QS(char *x, int m, char *y, int n) {
int j, qsBc[ASIZE];

/* Preprocessing */
preQsBc(x, m, qsBc);

/* Searching */
j = 0;
while (j <= n - m) {
if (memcmp(x, y + j, m) == 0)
OUTPUT(j);
j += qsBc[y[j + m]]; /* shift */
}
}



633 :デフォルトの名無しさん:2008/10/24(金) 01:11:48
[1] 授業単元:C
[2] 問題文: (1)1〜50までの整数の中から異なるいくつかをえらんび、
掛け合わせても一の位が0にならないようにする。選ぶことができる整数は40個。
上の文をプログラムで出力せよ。

(2)1〜50までの全てを掛け合わせると末尾の0を数えるプログラムを書け。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: 10月24日8:00
[5] その他の制限:特になし

(1)は2の倍数、5の倍数が少なくとも1個ずつ入ったときにだけ1の位が0になる
ので2の倍数と5の倍数が同居しないように計算します。

634 :デフォルトの名無しさん:2008/10/24(金) 02:25:39
>>633
(2)
#include <stdio.h>

int main(void)
{
int i, c1 = 0, c2 = 0;

for(i=1; i<=50; i++) {
int temp = i;
for(; !(temp%2); c1++) temp /= 2;
for(; !(temp%5); c2++) temp /= 5;
}

printf("%d", c1 < c2 ? c1 : c2);

return 0;
}

635 :デフォルトの名無しさん:2008/10/24(金) 02:55:22
>>634
あたまいいなあ

636 :デフォルトの名無しさん:2008/10/24(金) 03:09:59
(2)は50を5^nで割った商を足してけばいいと思う
int cnt=0,t;
for(t=5;50/t;t*=5){
cnt+=50/t;
}
printf("%d\n",cnt);

637 :デフォルトの名無しさん:2008/10/24(金) 03:12:31
理由は素因数として2より5の方が少ないから。
数字を並べてみて1~50までに因数の5がいくつあるか数えるには?

638 :デフォルトの名無しさん:2008/10/24(金) 03:36:40
理由はもっともだが>>636にはハテナがたくさんだ

639 :デフォルトの名無しさん:2008/10/24(金) 04:41:46
>>623
期限は10月24日(金)の11:00でした。
書き間違えてすみません。
よろしくお願いします。

640 :639:2008/10/24(金) 06:35:26
期限はアメリカ東海岸時間(EST)の10月24日(金)の11:00です
日本時間だと10月25日の11:00になります。
再再度訂正すみません

641 :デフォルトの名無しさん:2008/10/24(金) 06:43:17
すいません、C/C++以外の課題を聞けるスレってあります?

642 :デフォルトの名無しさん:2008/10/24(金) 06:59:49
[1] 授業単元: C
[2] 問題文:
2つの固有値から2×2の行列を求めるプログラムを作りなさい。
固有値は整数のみとする。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2]コンパイラ名とバージョン:Visual studio
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:特になし

643 :デフォルトの名無しさん:2008/10/24(金) 11:03:10
620をお願いします

644 :デフォルトの名無しさん:2008/10/24(金) 11:44:17
[1] 授業単元:C言語 (ポインタ)

[2] 問題文(含コード&リンク):出力例のように キーボードから0〜9 の数字d と,正の整数n を読み込み,n 以下の整数x で,
x とx の2 乗の10 進数表示の両方にd を含むものをすべて出力するプログラムをつくりなさい。
ただし,次のプロトタイプ宣言で示すように,整数x とd を仮引数として,
x とx の2 乗の10 進数表示の両方にd を含む場合に1,そうでない場合に0 を返す
関数hit_digit を作成しなさい。
int hit_digit(int x, int d);
▼出力例
0〜9 の数字d を入力して下さい:7
正の整数n を入力して下さい:100

[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:08年10月25日24:00まで
[5] その他の制限:C言語の基本的な関数のみでお願いします。


645 :デフォルトの名無しさん:2008/10/24(金) 12:04:13
>>639
和訳くらいしたらどうなの・・・

646 :602:2008/10/24(金) 12:33:22
>>612
回答ありがとうございます!
助かりました。



647 :デフォルトの名無しさん:2008/10/24(金) 12:41:56
>>644
#include <stdio.h>
int hit_digit(int x,int d);
int main(void) {
int d,n,x;
printf("0〜9 の数字d を入力して下さい:");
scanf("%d",&d);
printf("正の整数n を入力して下さい:");
scanf("%d",&n);
for(x=0;x<=n;x++) if(hit_digit(x,d)) printf("%d\n",x);
return 0;
}
int hit_digit(int x,int d) {
int y,z;
y=x;
z=x*x;
for(;y;y/=10) if(y%10==d) for(;z;z/=10) if(z%10==d) return 1;
return 0;
}


648 :デフォルトの名無しさん:2008/10/24(金) 13:34:34
>>591
レス返信遅くなりました。
最大値というよりは極大値という感じですね。
飛び抜けて大きな値ってのは (平均値+5*ρ) 以上の値のことを指し示すのですが
ρってのが平均値の標準偏差です(たぶん)。

グラフで飛び出した点を求めたら、並べ替えなくていいそうです。

てかコンパイル通したら、peak.txtが出力されませんでした。今、プログラム解読中です(汗)


649 :デフォルトの名無しさん:2008/10/24(金) 14:39:57
[1] 授業単元: C言語
[2] 問題文:縦軸「|」横軸「-」グラフ「*」
を使って±√xのグラフを書け
[3] 環境
 [3.1] OS:mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 10月26日
[5] その他の制限: 基本的な関数のみでお願いします

650 :デフォルトの名無しさん:2008/10/24(金) 15:36:43
>>649
#include <stdio.h>
int main()
{
int x, y;
for (y = -4; y < 5; y++)
{
putchar('|');
for (x = 0; x < y * y; x++)
{
putchar(' ');
}
putchar('*');
putchar('\n');
}
return 0;
}


651 :デフォルトの名無しさん:2008/10/24(金) 15:37:15
横軸忘れた

652 :デフォルトの名無しさん:2008/10/24(金) 16:05:49
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
  トランプを切る方法の1つとして、トランプを2つにわけて両手でぱらぱらと切る方法がある。
  今、トランプは、ジョーカーを除いた52枚とする。もし、切り方のうまい人がいて、トランプ
  を正しく半分(26枚)にして、かつ交互に1枚ずつ切れるとする。
  この方法では、何回か行うと元に戻ることが知られている。さて、何回で元に戻るでしょうか。
  これを計算するプログラムを作成してください。

  与えられたヒント
  52個の要素をもつ配列P,Qを用意します。最初は、Pi←i+1(i=0,2,3,…,51)とデータをセットします。
  そして、Q2i←Pi(i=0,1,2,…,25)およびQ 2(i-26)+1←Pi(i=26,27,…,51)を行う。もし、Qの要素が
  1,2,3,…,52になっていたら終了であるが、そうでなければ、P←Qを行い、同じ手順を繰り返す。

[3] 環境
 [3.1] OS: Windows (cygwin使用)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 10月27日18:00時まで
[5] その他の制限: for文かwhile文でお願いします

653 :デフォルトの名無しさん:2008/10/24(金) 16:27:02
株式会社損害保険ジャパン
http://qb5.2ch.net/test/read.cgi/saku2ch/1185507477/


1 名前:新甚 博史 広報室 室長代理 [HShinjin@sompo-japan.co.jp] :2007/07/27(金) 12:38 HOST:ZP144243.ppp.dion.ne.jp<8080><3128><8000><1080>
対象区分:[法人/団体]管理人裁定待ち
削除対象アドレス:
http://www2.2ch.net/2ch.html

654 :デフォルトの名無しさん:2008/10/24(金) 16:29:57
>>652
8回で戻ったけどあってる?

655 :デフォルトの名無しさん:2008/10/24(金) 16:35:11
>>649
縦軸と横軸ってxyグラフ?実数と複素数?
±√abs(x)、もしくはx>=0 でxyグラフならできる。
実数と複素数でもできるけど、グラフの意味合いが違ってくるからなー。
その場合 x>0 Im=0の軸だけにプロット、 x<0 Re=0の軸だけにプロットになっちゃう。

656 :デフォルトの名無しさん:2008/10/24(金) 16:54:14
>>652
311,875,200

657 :デフォルトの名無しさん:2008/10/24(金) 17:01:32
>>650
ありがとうございました
横軸は自分で入れてみます
>>655
xyグラフです。
abs関数って絶対値を返すんでしたっけ・・・

658 :デフォルトの名無しさん:2008/10/24(金) 17:02:19
>>652
#include <stdio.h>
int main(void)
{
int P[52], Q[52];
int i, c, x;

for(i=0; i<52; i++)
P[i] = i+1;

c=0;
while(1) {
for(i=0; i<26; i++)
Q[2*i] = P[i];
for(i=26; i<52; i++)
Q[2*(i-26)+1] = P[i];
c++;

for(i=x=0; i<52; i++)
if(Q[i] != i+1)
x=1;

if(x!=0)
for(i=0; i<52; i++)
P[i] = Q[i];
else
break;
}
printf("%d times looped.\n", c);
}
本当は終了条件判断後の代入と最初の代入だとかを一緒にすべきだよな。でもここでは文意どおりに…。

659 :デフォルトの名無しさん:2008/10/24(金) 17:02:24
>>652
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7843.c

660 :デフォルトの名無しさん:2008/10/24(金) 17:24:05
>>649
#include <stdio.h>
#include <math.h>

#define START_X -30
#define START_Y -10
#define WIDTH 60
#define HEIGHT 20

int main(void)
{
int x,y,p;
int max_width = START_X + WIDTH;
int max_height = START_Y + HEIGHT;

for(y = max_height; y > START_Y; y--) {
putchar(y?'|':'0');
for(x = START_X; x < max_width; x++) {
p = (int) sqrt(fabs(x));
putchar((p == abs(y))?'*':' ');
}
putchar('\n');
}

putchar('+');
for(x = START_X; x < max_width; x++) {
putchar(x?'-':'0');
}
putchar('\n');
return 0;
}
y=±sqrt(abs(x))のグラフを書きます。 START_X=0で使ってくれ。

661 :デフォルトの名無しさん:2008/10/24(金) 17:42:34
1] 授業単元:情報処理V
[2] 問題文:JPEGファイルを読んでブロック(マーカ単位)で表示するプログラム(16進)
[3] 環境
 [3.1] OS:Windows(cygwin使用)
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
 [4] 期限: 10月30日16:30まで
[5] その他の制限:基本的な関数のみでお願いします。

662 :デフォルトの名無しさん:2008/10/24(金) 18:53:17
>>647

丁寧な回答ありがとうございました!

663 :デフォルトの名無しさん:2008/10/24(金) 20:49:17
>>551 のつづきです。

[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):

@とAは>>551

B (平均値+5*ρ)以上の値を最大値(極大値)とするように変更させなさい。ρを標準偏差とする。

C @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
  Bで求めた各々の最大値(極大値)の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに
   出力できるように変更させなさい。
    例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
            [38]3.4255342 [72]3.214283 [98]2.434924390・・・・
             ・
             ・
             ・

[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月26日23:59まで
[5] その他の制限: 特になし

よろしくお願いします。


664 :デフォルトの名無しさん:2008/10/24(金) 22:44:49
[1] 授業単元:if文
[2] 問題文:3つの整数を入力し,それらを比較して,大,中,小を判定しなさい.
       3つの整数が同じ値の場合,あるいは2つの整数が同じ値の場合でも
       正確に判定ができるように対応すること.
       全ての条件を場合分けするプログラムは不可とする.
       できるだけ少ない条件分けで対応できるよう工夫すること。

例 9 5 2   →   大:9  中:5  小:2
例 6 6 6   →   大:6,6,6  3つの数は等しい
例 6 6 3   →   大:6,6  小:3
例 6 6 9   →   大:9  小:6,6

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 10/30 13時
[5] その他の制限: 特になし

よろしくお願いします

665 : ◆O2tO.pRmks :2008/10/25(土) 00:55:24
[1] 授業単元:配列
[2] 問題文:配列a[10] = {53,68,9,55,42,70,43,66,97,84}の要素の最大値・最小値・平均値を調べ、結果を表示するプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] gcc
 [3.3] 言語:C
[4] 期限:2008年10月25日まで
[5] その他の制限:特になし

666 :デフォルトの名無しさん:2008/10/25(土) 01:05:55
>>665
#include <stdio.h>

int main(){
int a[10] = {53, 68, 9, 55, 42, 70, 43, 66, 97, 84};
int max, min, i;
float ave = 0.0;

max = a[0];
min = a[0];
for(i = 1; i < 10; i++){
if(max < a[i])
max = a[i];
if(min > a[i])
min = a[i];
ave += (float)a[i];
}
ave /= 10.0;

printf("最大値: %d\n", max);
printf("最小値: %d\n", min);
printf("平均値: %.1f\n", ave);
}


667 :デフォルトの名無しさん:2008/10/25(土) 01:24:51
>>664
#include<stdio.h>
#include<stdlib.h>
void main(void)
{
int num[3],w,cnt,i;
for(cnt=0;cnt<3;cnt++)
scanf("%d",&num[cnt]);
for(cnt=0;cnt<2;cnt++)
{
for(i=cnt+1;i<3;i++)
{
if(num[cnt]<num[i])
{
w=num[cnt];
num[cnt]=num[i];
num[i]=w;
}
}
}

668 :デフォルトの名無しさん:2008/10/25(土) 01:25:26
>>664

printf("大:%d",num[0]);
if(num[0]==num[1])
printf(",%d",num[1]);
else
{
if(num[1]==num[2])
{
printf(" 小:%d,%d",num[1],num[2]);
exit(0);
}
else
printf(" 中:%d",num[1]);
}
if(num[0]==num[2])
printf(",%d 3つの数は等しい",num[2]);
else
printf(" 小:%d",num[2]);
}
gcc知らない…

669 :デフォルトの名無しさん:2008/10/25(土) 01:37:48
>>664

#include <stdio.h>

int main(){
int i, j, tmp;
int count = 0;
int a[3];

scanf("%d%d%d", &a[0], &a[1], &a[2]);

/* 降順にソート */
for(i = 0; i < 3; i++){
for(j = i + 1; j < 3; j++){
if(a[i] < a[j]){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}

670 :デフォルトの名無しさん:2008/10/25(土) 01:38:17
>>664 続き


/* 1個目と2個目を比較して値が違ったら「大」が決定 */
if(a[0] != a[1]){
printf("大: %d ", a[0]);
/* 2個目と3個目を比較して「中・小」を決定 */
if(a[1] != a[2])
printf("中: %d 小: %d\n", a[1], a[2]);
else
printf("小: %d, %d\n", a[1], a[2]);
}
/* 1個目と2個目が一緒なら2個目と3個目を比較して「大・小」を決定 */
else{
if(a[1] != a[2])
printf("大: %d, %d 小: %d\n", a[0], a[1], a[2]);
else
printf("大: %d, %d, %d 3つの数は等しい\n", a[0], a[1], a[2]);
}

return 0;
}


671 :669-670:2008/10/25(土) 01:40:07
>>667-668で既に回答出てたな・・

672 :デフォルトの名無しさん:2008/10/25(土) 01:45:44
>>671
俺のは手抜きです^^;

673 :デフォルトの名無しさん:2008/10/25(土) 01:52:31
>>672
結局同じようなことやってるからあまり変わらないっしょー

674 :デフォルトの名無しさん:2008/10/25(土) 02:09:28
>>663
結局1番と2番は日本語の意味が理解できなかった。
2番は1番の意味がわかればできるけど1番は何回読んでもわからない・・・
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define isOuter(val,ave,sd) ((val)> (ave) + 5*(var))
int main(){
FILE *fp,*fout;
char buf[1024],*cp;
double data[1024],ave,sum=0,sum2=0,var,sd;
int cnt=0,i,k=0;
if((fp = fopen("data.txt", "r")) == NULL) return 1;
if((fout = fopen("peak.txt", "w")) == NULL) return 1;
while((cp = fgets(buf,sizeof(buf),fp)) != NULL){
while((cp = strtok(cp," \t\r\n")) != NULL){
data[cnt] = atof(cp); sum += data[cnt]; sum2 += data[cnt]*data[cnt];
if(++cnt == 1024){
ave = sum / 1024.0; var = sum2 / 1024.0 - ave*ave; sd = sqrt(var);
for(i=0;i<1024;i++) if(isOuter(data[i] , ave, sd)) fprintf(fout,"[%d]%f ", i+1,data[i]);
fprintf(fout,"\n");
cnt = sum = sum2 = 0;
}
cp = NULL;
}
}
fclose(fp); fclose(fout);
}

675 :デフォルトの名無しさん:2008/10/25(土) 04:36:38
>>620

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7845.txt

676 :675:2008/10/25(土) 04:44:02
>>620
>>675

ミスった、スマン
一つ前の古いのをUPしてしまった…
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7846.txt

677 :デフォルトの名無しさん:2008/10/25(土) 05:36:07
[1] 授業単元:趣味プログラム
[2] 問題文(含コード&リンク):
http://sony.squares.net/dat.txt
[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:最新版Cygwinのgcc
 [3.3] 言語:C
[4] 期限: [無期限]
[5] その他の制限:リンク先に記載。

重複を取り除きながらの挿入ソートでは10分経っても終わりませんでした。O(n^2) = O(366051^2)
重複を取り除きながらでも早いソートを実現したいです。お願いします。

678 :デフォルトの名無しさん:2008/10/25(土) 06:28:59
>>677
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7847.c
条件Xってのがいまいち不明だったので手抜きで、最後に入ってる場所だけ分かる。

679 :デフォルトの名無しさん:2008/10/25(土) 06:43:50
>>677
あれ、条件2ってどういうこと?
最大値が分かれば1から順に並べればいいってこと、、、なのか?
ソートっていってるからそうじゃないような気がするんだが。

680 :デフォルトの名無しさん:2008/10/25(土) 09:50:58
値の範囲がわかってるなら、nが現れた行番号をその配列のn番目に入れればいいから、ソートする必要ない気がする

681 :デフォルトの名無しさん:2008/10/25(土) 13:10:37
>>678
ありがとうございます。参考にさせて貰います。
>>679-680
すいません、本来のプログラムでは未ソート時点では最大値や点の数が分かっていませんでした。

682 :デフォルトの名無しさん:2008/10/25(土) 14:21:22
それが分かってないなら>>678
は使えないな、まさしく>>680
の手法だから


一旦二分木に移していく感じでならO(nlogn)でソートできるんじゃないかな
c++のsetで試したからcのソース無いけど

683 :デフォルトの名無しさん:2008/10/25(土) 15:00:23
Quickソートでいいんじゃない?

684 :デフォルトの名無しさん:2008/10/25(土) 15:25:56
クイックソートしてから重複除いても>>677でやったのよりそっちのほうが速いよね

685 :初心者:2008/10/25(土) 15:26:11
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  ★下記の仕様を満たすプログラムをC言語で作成しなさい
  【仕様】 表計算ソフト簡易プログラム

  ▽ Excelのように2次元配列で10人分の3教科の素点表示する。なお、素点は100点満点でランダムに作るものとする。
  ▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から順に)を表示する。なお平均は少数第1位までの表示とする。
  ▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の行を作り、各行についてそれぞれ求めて表示する。

   (表示例:空欄にはそれぞれ計算結果が入ることになる)

番号| 国語 数学 英語    |合計    |平均     |順位
1 |  75   35   40     |       |       |
2 |  69  75   82       |       |       |
        (中    略)
10 |   57  48   36      |       |       |
---------------------------------------------------
合計 |
平均 |
最高 |
最低 |

[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: 分かりません
 [3.3] 言語: C言語
[4] 期限: 来週中ぐらい
[5] その他の制限: 繰り返し、条件処理、配列を勉強しました。
         これらを使ってお願いします。
         初心者なので初心者でも分かるようなプログラムを
         お願いします。

686 :デフォルトの名無しさん:2008/10/25(土) 22:03:03
>>685
こんな感じでいいのか?

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7849.txt

687 :686:2008/10/25(土) 22:07:11
あ、変な改行いれちまった。
79行目の最後の「\」と改行を消して80行目とつなげてくれ

688 :611:2008/10/25(土) 22:32:12
提示したプラグラムを補う感じで、>>611お願いいたします。。

689 :デフォルトの名無しさん:2008/10/25(土) 22:43:40
やだ

690 :デフォルトの名無しさん:2008/10/25(土) 22:49:55
[1]C
[2]http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7850.txt
[3]C言語
[4]来週の水曜
[5](2)はライブラリ関数のqsortを使うようお願いします
よろしくお願いします。

691 :デフォルトの名無しさん:2008/10/26(日) 01:50:39
C言語で長門がやってたみたいにゲームの改造とかできますか?

692 :デフォルトの名無しさん:2008/10/26(日) 02:23:02
>>690
答え合ってるか分からん。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7852.txt

693 :デフォルトの名無しさん:2008/10/26(日) 02:36:10
>>674
まず@番目の問題は、二次元配列で出力されている値のファイルを読み込むこと。
その値を1024個を一つのくくりとする。つまり1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。
この1024個の値の平均値と平均値から飛び出している値=最大値(極大値)を求める。
最初の1024個の最大値(極大値)を求めたら、次の1024個の最大値(極大値)を求める。
次の1024個とは1個目[206][0],2個目[206],[1],・・・,1024個目[411][3]とする。これをファイルの最後の値まで繰り返し行う。

こんな感じです。わかりやすく説明したつもりなんですけど・・・どうでしょうか?

プログラムよろしくお願いします。

694 :デフォルトの名無しさん:2008/10/26(日) 02:59:59
>>693
>1個目[0][1],2個目[0][2],・・・1024個目[205][3]とする。
なんで1024が[205][3]なの?

1024個ごとに平均値と最大値を出力すればいいのか?

695 :デフォルトの名無しさん:2008/10/26(日) 03:00:12
>>691
長門裕之がゲームの改造をしていたのは知らなかったがプログラミング言語Cを用いてゲームの改造ならできるよ

696 :デフォルトの名無しさん:2008/10/26(日) 03:02:33
>>694
209921行だからじゃない?

697 :デフォルトの名無しさん:2008/10/26(日) 03:04:49
だけど「209921行5列」なのに「2097152個」ってなんかへんじゃね?


698 :デフォルトの名無しさん:2008/10/26(日) 03:14:14
やっぱ理解できんわ

699 :デフォルトの名無しさん:2008/10/26(日) 03:36:28
実際にデータを見ると209920行なわけだが。。。

700 :デフォルトの名無しさん:2008/10/26(日) 03:38:18
>>694
> 1024個ごとに平均値と最大値を出力すればいいのか?
そう書いてある

701 :デフォルトの名無しさん:2008/10/26(日) 03:43:30
>>693は出題者だったか。
であれば、array[206][5]という2次元配列に読ませる必要があるのかどうかを知りたい。
別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ?

それと、「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、
じゃあ最初の課題では極大値の判定はどうやってやればいい?

702 :デフォルトの名無しさん:2008/10/26(日) 05:09:52
>>611 >>688
簡易ボイヤームーア法で良ければこれで
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7853.txt

完全版はアルゴリズムが理解できん

703 :デフォルトの名無しさん:2008/10/26(日) 05:18:45
http://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%A4%E3%83%A4%E3%83%BC-%E3%83%A0%E3%83%BC%E3%82%A2%E6%96%87%E5%AD%97%E5%88%97%E6%A4%9C%E7%B4%A2%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
ボイヤームーア

704 :デフォルトの名無しさん:2008/10/26(日) 08:49:35
友達からC++のプログラムもらって家でコンパイルしたら
strcpy_s()関数が使えません、という警告が出て、コンパイルが成功しませんでした。
調べてみたらstrcpy_sはstrcpyの拡張版らしくて、うちのコンパイラが若干古いので、strcpy_sは使えないみたいなんです。
それでプログラムのstrcpy_sをすべてstrcpyに置き換えたら、またエラーが出ました。
strcpy_sは引数の数が三個で、strcpyは二個なんで、その警告が出ました。
strcpy_sを、strcpyと同様の動作をさせる関数として定義すればうまくいくと思ったのですが、どのような関数を定義すればよいでしょうか。



705 :デフォルトの名無しさん:2008/10/26(日) 08:53:42
>>704
例えば
void strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource) {
strcpy(strDestination, strSource);
}

マクロでもいいと思うけど、というか、他にもいろいろ問題出てこないの?って気がしなくもない。

706 :デフォルトの名無しさん:2008/10/26(日) 08:55:15
>>704
って糞マルチかよ。スレチだけどいいかと思って答えた俺のバカー

707 :デフォルトの名無しさん:2008/10/26(日) 08:58:18
>>706
マルチだからといって無碍に切り捨てるのも問題かと。

708 :デフォルトの名無しさん:2008/10/26(日) 09:02:56
マルチだと分かっていて回答するならふさわしいスレで回答できるじゃん。
今回はここかな。
http://pc11.2ch.net/test/read.cgi/tech/1224057986/499

宿題スレおよび以下はスレチでしょ
http://pc11.2ch.net/test/read.cgi/tech/1224000127/681

709 :デフォルトの名無しさん:2008/10/26(日) 09:53:26
>>708
御意

710 :デフォルトの名無しさん:2008/10/26(日) 11:48:59
コンソールからファイルを引数として渡すと、そのファイルのパーミッションと
ディレクトリ種別などを取得するようにしたいです。→(例drwxr-xr-x)
以下のコードで、st_modeを8進数で表示してみたところ
#include <stdio.h>
#include <sys/stat.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
struct stat abc;
if(stat(argv[1], &abc)==-1){
perror("stat");
exit(EXIT_SUCCESS);
}
printf("%o\n", abc.st_mode);
}
パーミッション644のファイルが「100644」と表示されます。
これを100644の代わりに-rw-r--r--と表示するように実装するにはどのように
書けばよいか教えて下さい。宜しくお願いします。

711 :デフォルトの名無しさん:2008/10/26(日) 12:07:41
abc.st_mode | 0777
って文字列にすんのかよ。

printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-');
printf("%c" (abc.st_mode & S_IRUSR) ? 's' : 'r');
printf("%c" (abc.st_mode & S_IWUSR) ? 's' : 'r');
printf("%c" (abc.st_mode & S_IXUSR) ? 's' : 'r');
以下略

712 :デフォルトの名無しさん:2008/10/26(日) 12:08:33
なんかひどいコピペミスをしたようだ。。。

printf("%c" (abc.st_mode & S_ISVTX) ? 's' : '-');
printf("%c" (abc.st_mode & S_IRUSR) ? 'r' : '-');
printf("%c" (abc.st_mode & S_IWUSR) ? 'w' : '-');
printf("%c" (abc.st_mode & S_IXUSR) ? 'x' : '-');
以下略

713 :デフォルトの名無しさん:2008/10/26(日) 12:17:48
printfよりもputcharがよくね?

714 :デフォルトの名無しさん:2008/10/26(日) 12:31:30
そだね。putcharの方がよかた。
っていうかカンマも抜けてるし何このグダグダ感orz

715 :デフォルトの名無しさん:2008/10/26(日) 12:32:45
('ー')

716 :デフォルトの名無しさん:2008/10/26(日) 12:41:28
>>712
出来ました。ありがとうございます。
ちなみにディレクトリがdでなく-になってしまうのですがまだ他に
何か必要でしょうか?

717 :デフォルトの名無しさん:2008/10/26(日) 12:52:23
横から口だし失礼

ボイヤームーアってどのくらい速いんですか?
ソートの種類で例えるとどのソートに匹敵する実用的なアルゴリズムなんでしょうか?




718 :デフォルトの名無しさん:2008/10/26(日) 12:54:30
>>717
http://www.google.co.jp/

719 :デフォルトの名無しさん:2008/10/26(日) 12:59:00
setuidbit, setgidbit, stickybitなどを考慮するともっとひどいコードに。

720 :デフォルトの名無しさん:2008/10/26(日) 13:10:37
Visual Studio使ってる人ってVisual C++ Express Edition ?

721 :デフォルトの名無しさん:2008/10/26(日) 13:10:49
>>719
なるほど。あんまし大変になりそうであればとりあえずこんな感じで十分
なのでいいです。ありがとうございました。

722 :デフォルトの名無しさん:2008/10/26(日) 14:02:41
[1] 授業単元:構造体
[2] 問題文:1,名簿ファイルを読み込み、生年月日の順に並べる、苗字の順に並べる、名前の順に並べる、mail addressの順に並べるプログラムを作れ。ただし、文字列の大小を比較する関数として、strcmpを用いよ。
#include <string.h>
int strcmp(char str1, char str2);
------------------------
str1>str2 → 0より小さな整数 ,str1==str2 → 0 ,str1<str2 → 0より大きい整数
関数 void SortData1(struct person *person, int *index, int n); /* 生年月日の順番に並べる */
関数 void SortData2(struct person *person, int *index, int n); /* 名の順番に並べる */
関数 void SortData3(struct person *person, int *index, int n); /* 姓の順番に並べる */
関数 void SortData4(struct person *person, int *index, int n); /* mail-addressの順番に並べる */ をそれぞれ作り、 結果を表示せよ。
2,県の郵便番号のリスト(メンバーの数約5000個)を配列の大きさだけを変えて、これを郵便番号順、読み仮名順に並べ替えるプログラムを作れ。
[3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C
[4] 期限:2008年10月27日16:00まで
[5] その他の制限:1の関数の宣言は以下のようにする。
関数 void ReadData(struct person *person, int *index, int *n);
関数 void PrintData(struct person *person, int *index, int n);
関数ReadData、PrintDataでは、
while(scanf(“%d %s %s %s %s”,&person[i].birth, person[i].first_name,
person[i],last_name, person[i].mail_addr, person[i].thema)!=EOF){
index[i]=i;
i++; }
-------------------------------------------------------------
for(i=0;i<n;i++){
printf(“%d %s %s %s %s\n”,person[index[i]].birth, person[index[i]].first_name,
person[index[i]].last_name, person[index[i]].mail_addr,person[index[i]].thema); }
とりあえず、問題1の並び替えがうまく出来ませんorz
お願いします。


723 :デフォルトの名無しさん:2008/10/26(日) 14:09:02
[1] 授業単元:プログラミング
[2] 問題文:
Newton--Raphson法を用いて
X*X*X-7X*X+16X-10=0
の解を求めよ。

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/24
[5] その他の制限:初心者です。なるべく基本的な構造でお願いします。

>>474
以前お願いしたのですがうまくいきません。どなたか問題点を指摘
していただきたいです。また初歩的な30行程度のプログラムにしたいと
思っています。


724 : ◆1xFXRhO/iQ :2008/10/26(日) 14:26:39
[1] 授業単元:離散数学
[2] 問題文(含コード&リンク):
重みつき無向グラフを隣接行列で表現し、縮約を行うプログラムを実装せよ。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月30日まで
[5] その他の制限: 期限が近めですが、なんとか、宜しくお願いします。

725 :デフォルトの名無しさん:2008/10/26(日) 14:29:14
>>723
#include <stdio.h>
#include <math.h>

#define EPS0 1.0e-5

double fnc(double x);
double dfnc(double x);

main()
{
double x0, x1;
x0 = 0;
x1 = 10;
while(fabs(x1 - x0) > EPS0)
{
x0 = x1;
x1 = x0 - fnc(x0)/dfnc(x0);
}
printf("x = %lf\n", x1);
}

double fnc(double x)
{
return x*x*x - 7*x*x + 16*x - 10;
}

double dfnc(double x)
{
return 3*x*x - 14*x + 16;
}


726 :デフォルトの名無しさん:2008/10/26(日) 14:36:19
>>725
ありがとうございます。ものすごく早い回答がいただけて
とてもうれしいです。早速じっこうしてみましたが「関数の
値を返すべき」という警告がでるのでぜひ解除して
いただきたいです。本当にお願いします。

727 :デフォルトの名無しさん:2008/10/26(日) 14:38:31
>>726
main()の最後に return 0; を付ければいい

728 :デフォルトの名無しさん:2008/10/26(日) 14:42:17

CodeGear C++ 5.92 for Win32 Copyright (c) 1993, 2007 Code
kadai5z.c:
警告 W8070 kadai5z.c 20: 関数は値を返すべき(関数 main )
警告 W8066 kadai5z.c 30: 実行されないコード(関数 dfnc )
エラー E2378 kadai5z.c 31: Return文に ; がない(関数 dfnc
*** コンパイル中に 1 個のエラーが発生しました ***

このような表示になります。

729 :デフォルトの名無しさん:2008/10/26(日) 14:49:47
縮約のアルゴリズムってこんな感じ?面倒だから実装はしないけど


縮約関数:
 func(G, v, w)

意味:
  グラフGに於ける点(v,w)で結ばれる辺を縮約する

仕様:
 グラフGに於ける点wを削除し、点wに接続する全有向辺を点vに接続し直す(有向辺を追加する)
 ただし、重複している場合は追加しない


(点wを削除するためには、新規にグラフG’を作成?)

730 :デフォルトの名無しさん:2008/10/26(日) 14:51:18
辺v,wの削除も

731 :デフォルトの名無しさん:2008/10/26(日) 14:51:36
hairanai

732 :デフォルトの名無しさん:2008/10/26(日) 14:52:48
無向グラフだ

733 :デフォルトの名無しさん:2008/10/26(日) 15:29:11
[1] 授業単元:プログラミング
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7855.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:途中まで作成はしたのですが上手くいきません。
         よろしくお願いします。


734 :デフォルトの名無しさん:2008/10/26(日) 15:40:32
>>733
#include<stdio.h>
#define N 100

main()
{
int t;
double a, x[N+1];

printf("成長パラメーターの入力");
scanf("%lf", &a);
x[0] = 0.5;
for (t=0;t<=N-1;t++)
{
x[t+1] = a * x[t] * (1.0 - x[t]);
}
for (t=0;t<=N;t++)
printf("t=%dのとき人口は%lgです。\n",t,x[t]);
return 0;
}


735 :724 ◆1xFXRhO/iQ :2008/10/26(日) 15:42:27
>>729
はい、ただ重複している場合は追加しないのではなく、
重みを足す事になっています。
 
なんとか、実装して頂けると嬉しいです。。

736 :デフォルトの名無しさん:2008/10/26(日) 16:07:21
>>735
やってみる

737 :724 ◆1xFXRhO/iQ :2008/10/26(日) 16:21:56
>>736
ありがとうございます!


738 :デフォルトの名無しさん:2008/10/26(日) 16:38:30
[1] 授業単元:プログラミング
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7856.txt
[3] 環境
 [3.1] OS:MacOSX→Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/28
[5] その他の制限: 初心者ながらいろんなところでヘルプを得ながら必死に
書き上げたのですが、実はMacOSX上でしか動作しないことがわかりました。
Linux上でコンパイルするとエラーになってしまいもはやデバッグのしようが
わかりません。Linux上での動作が条件なので書き直したいのですが、どなたか
助けてください。

739 :デフォルトの名無しさん:2008/10/26(日) 16:47:47
>>738
NetBSDでも動作するよ。

740 :デフォルトの名無しさん:2008/10/26(日) 16:48:10
>>738
linuxでも動いた。
コンパイルするシステムのヘッダファイルとかそういうの次第。

741 :デフォルトの名無しさん:2008/10/26(日) 16:56:58
[1] 授業単元: アルゴリズムとデータ構造
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7857.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年10月27日10:00


742 :デフォルトの名無しさん:2008/10/26(日) 16:59:28
[1] 授業単元:C言語 「分野:ポインタ演習」

[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=7744
の7858.txtです。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:08年10月27日24:00まで
[5] その他の制限:お手数ですが、C言語の基本的な関数のみでお願いします。


743 :デフォルトの名無しさん:2008/10/26(日) 16:59:33
>>737
出来た。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7860.txt


744 :デフォルトの名無しさん:2008/10/26(日) 17:10:49
>>742
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
double horner(double x, double *a, int n);
main()
{
int i, n;
double x, *a;
printf("Horner の方法で多項式を計算します!\n");
printf("次数n を入力して下さい:");
scanf("%d", &n);
a = (double*)malloc(sizeof(double) * (n + 1));
printf("実数係数を順に入力して下さい:\n");
for(i = n; i >= 0; i--){
printf("a[%d] = ", i);
scanf("%lf", &a[i]);
}
printf("x の値を入力して下さい:");
scanf("%lf", &x);
printf("多項式の値 = %lg\n", horner(x, a, n));
free(a);
return 0;
}
double horner(double x, double *a, int n)
{
if (n == 0) return a[0];
return x * horner(x, a + 1, n - 1) + a[0];
}


745 :724 ◆1xFXRhO/iQ :2008/10/26(日) 17:27:55
>>743
こんなに早く出来るなんて、思ってませんでした。。
本当にありがとうございました!

746 :デフォルトの名無しさん:2008/10/26(日) 17:45:25
>>739>>740
そうですか。確認有り難うございました。ある特定のLinuxの環境での実行が条件
なので、とにかくそこの環境でコンパイルしたいのですが、以下のエラーって
どう変えればいいかとかわかったりしますでしょうか?エラーになる環境がないと
難しいかも知れませんが。。(エラーになるLinuxの環境が何のディストリビューション
かもわからず、すみません。Linuxクラスタだとか聞きましたが)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7861.txt

747 :デフォルトの名無しさん:2008/10/26(日) 17:49:18
>>746
#include <unistd.h>


748 :デフォルトの名無しさん:2008/10/26(日) 17:54:21
鼻血が止まらん

749 :デフォルトの名無しさん:2008/10/26(日) 17:54:44
すまん。誤爆だ。

750 :デフォルトの名無しさん:2008/10/26(日) 17:57:50
>>747
ありがとうございます。追加しましたが、どうやらエラーは変わらないようです

751 :デフォルトの名無しさん:2008/10/26(日) 18:11:45
>>750
ディストロがわからないのはつらいね。
#include <sys/types.h>
では?


752 :デフォルトの名無しさん:2008/10/26(日) 18:15:28
自分が今使ってるOSがなんだか分からんの?

753 :デフォルトの名無しさん:2008/10/26(日) 18:27:04
>>751
有り難うございました。半分くらい減りました。残るエラーはこちらです↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7862.txt
>>752
すみません、自分の管理している環境じゃないもので、テルネットして実行しています。
uname -aは打てますが、これが有益な情報かどうか不明です。。
(ちなみに打ったところ最後がi686 GNU/Linuxとなってました。)

754 :デフォルトの名無しさん:2008/10/26(日) 18:55:06
>>753
その uname -a 結果ください。

755 :デフォルトの名無しさん:2008/10/26(日) 19:04:56
>>754
Linux XXXX 2.6.18-6-686-bigmem #1 SMP MM DD hh:mm:ss 2008 i686 GNU/Linux
と出ました。
それとぐぐって出て来たヘッダファイル(fcntl.hとか)を適当に追加しましたが駄目でした。
S_IFMT, S_IFBLKとかって何に定義されてるんでしょうか

756 :デフォルトの名無しさん:2008/10/26(日) 19:06:19
すみません。Debian。ですかね。

757 :デフォルトの名無しさん:2008/10/26(日) 19:09:50
>>734
ありがとうございました!

758 :デフォルトの名無しさん:2008/10/26(日) 19:17:16
[1] 授業単元:プログラミング
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7863.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:式の部分が上手くいきません。
         よろしくお願いします。

759 :デフォルトの名無しさん:2008/10/26(日) 19:38:23
こうやって見ると数式のプログラムばかりだね
理学部やならいいけど、工学部情報学科ならば実務とはかけ離れてるのも大概にしろと

760 :デフォルトの名無しさん:2008/10/26(日) 19:38:56
プログラム演習は数式遊びの場じゃない

761 :デフォルトの名無しさん:2008/10/26(日) 19:40:09
東大のプログラムの授業なんかは
ユニックスのパイプコマンドを作成しろとか
サーバー通信なんちゃらの実務的なのが多い


762 :デフォルトの名無しさん:2008/10/26(日) 20:03:15
>>761
東大じゃありませんが、1990年ごろの情報系学部演習ですでに、
ごく簡単なシェル/パイプを実装, (fork() +exec*()+pipe())
をやっていました。シグナルとかセマフォとかも。無論、当時の私には極悪・試行錯誤の連続で泊り込む勢いでした。
バークレーソケットは3年次後半でしました。

それはそうと、ロジスティック方程式を解いて(がんばれば高校数学でできます。)解析解に代入する、とかはどうでしょう。やっぱりだめですか。
http://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E6%96%B9%E7%A8%8B%E5%BC%8F
数値解析部門は、それはそれで習得しなければならないと思います。

763 :デフォルトの名無しさん:2008/10/26(日) 20:17:24
MATLBAでやったら全部一発

764 :デフォルトの名無しさん:2008/10/26(日) 20:34:52
>>755
私の環境は WindowsXP/cygwin なんですが、エラーはでませんでした。(警告によるとキャストが必要なものはありましたが、まあ問題ない)
さて、S_* などは、私の環境では sys/stat.h にあるのですが、(実体は /usr/include/sys/stat.h) >>755さんの環境でも、
インクルードファイルをみつけているようですね。(インクルードパスがちがっておれば、みつけられない、ってでてくると思います。)
すると、暗黙の #define が unix(posix) 用になっていないのかもしれません。

gcc -v ソース.c 2> mes.txt

として、mes.txt の内容をください。
2>
がうまくいかないのであれば、その旨書き込んでください。

765 :デフォルトの名無しさん:2008/10/26(日) 20:56:37
>>764
レス有り難うございます。mes.txtをアップ致しました。
thread modelというのはposixになっているようですが。。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7864.txt

766 :デフォルトの名無しさん:2008/10/26(日) 21:27:10
>>765
では、
gcc -Dunix -v ソース.c 2> mes2.txt
の結果をください。
/usr/include/sys/stat.h の内容もください。

そ れ と、

このソースファイルをコンパイルしたいな、と思った動機を教えてください。というか白状してください。(笑)
もし演習の課題ならば、コンパイルできない、という事態に陥らないよう、教官がいろいろ陰で配慮してくださるはず。
うまくいかないのは、課題を出した教官が怠慢だったのか、ということもあるかもしれませんが、
私の見るところ、自主的に今ある環境で自分のやりたいことをやってみた、という気がします。
その意気やよし!
最後まで付き合います。ただし今日は徹夜を覚悟してください。

767 :デフォルトの名無しさん:2008/10/26(日) 21:40:07
[1] 授業単元:データ構造とアルゴリズム演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7865.txt
[3] 環境
 [3.1] OS:UNIX
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 10月28日まで
[5] その他の制限: 特になし

よろしくお願いします

768 :デフォルトの名無しさん:2008/10/26(日) 21:50:29
>>766
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7866.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7867.txt
アップ致しました。本当に課題です。文系なのに間違って海外の理系の学校に
来てしまい毎日半端ない宿題に追われているところです。なので、自主的に、
といいたいところですが今はとにかくコンパイルすることしか頭にありません。。
助けばかり乞うのは自分のためによくないのですが最近はあまりに半端ない分量の
ため依存率が高くなってきました。

769 :デフォルトの名無しさん:2008/10/26(日) 22:06:22
>>768
なんだか、教官が手抜きなんですねぇ。それは大変。

では、
gcc -v -D__USE_BSD -v ソース.c 2> mes3.txt
として mes3.txt の内容をください。
あと、コンパイルできたかどうか、コンパイルできたのなら実行結果
(おそらくは ./a.out . > mes4.txt
として mes4.txt に結果が入ると思います。)
を教えて下さい。

あるいは教官に「コンパイルできないよ!」と主張してください。(そちらは昼ですか?)
30分後にのぞきます。

770 :デフォルトの名無しさん:2008/10/26(日) 22:11:05
>>767
1-1:
struct cell *cell2 = cell1->next;
struct cell *cell3 = cell2->next;
printf("%d\n%d\n%d\n", cell1->element, cell2->element, cell3->element);

1-2:
struct cell *c;
for (c = cell1; c != NULL; c = c->next) {
printf("%d\n", c->element);
}

771 :デフォルトの名無しさん:2008/10/26(日) 22:18:55
>>769
原因が判明しました。怒らないで下さい。いつもメイクファイルを使用しているのですが、
常にgccのオプションは-Wall -std=c99としています。先程たまたま-std=c99を取ったらコンパイル
出来てしまいました!(なんでMacの環境だと同じメイクファイルでエラーにならないんだろう。。)
なぜかの原因究明はもう辞めて寝ます。徹夜したところなので。。ちなみに教官にMac OSXの環境で
つくったからこれで勘弁して!って言ったら駄目だと言われました。厳しい世の中ですね。
色々とサポート有り難うございました。
以上

772 :デフォルトの名無しさん:2008/10/26(日) 22:19:20
2-1:
void append(struct cell **cell1, int e)
{
struct cell *cell2 = (*cell1)->next;
(*cell1)->next = malloc(sizeof(struct cell));
(*cell1)->next->element = e;
(*cell1)->next->next = cell2;
}

2-2:
void prepend(struct cell **cell1, int e)
{
struct cell *cell0 = malloc(sizeof(struct cell));
cell0->element = e;
cell0->next = *cell1;
*cell1 = cell0;
}

使い方:
append(&cell1, /* 新しい element */)
prepend(&cell1, /* 新しい element */)

773 :デフォルトの名無しさん:2008/10/26(日) 22:45:12
>>771
んー、それはそれで謎なんですが‥‥‥。
-std=c99
は、直近のCの規格でコンパイルする、ということでしかないので、今回は特に影響がないはず。
c99とすると、でインクルードするヘッダがかわるのでしょうか?c++ 風に <iostream> と.h がない書き方にしないといけないのでしょうか?よくわかりません。
このあたりは識者からのコメントをお待ちいたします。

実行結果を教えてくださるとありがたいです。ともあれ、おやすみなさい。

774 :デフォルトの名無しさん:2008/10/26(日) 23:03:46
gccの場合、-std使うとたしかそれに合わせて標準のヘッダの中身も
変化する(#ifdefなどを使って)から、その影響はあると思う。

775 :デフォルトの名無しさん:2008/10/26(日) 23:06:18
[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:inux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

776 :デフォルトの名無しさん:2008/10/26(日) 23:10:01
>>666
遅れましたが、ありがとうございました。

777 : ◆ojvIN3PEqY :2008/10/26(日) 23:31:37
[1] 授業単元:プログラミング
[2] 問題文:ビットマップディスプレイの原理を用いて、入力した整数(0〜1000000)を、ビットマップ式に表示するプログラムをつくれ。

357111
*** *** *** * * *
* * * * * *
*** *** * * * *
* * * * * *
*** *** * * * *

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2008年10月27日まで
[5] その他の制限:配列の基礎まで習いました。
お願いいたします


778 : ◆ojvIN3PEqY :2008/10/26(日) 23:33:36
例がおかしくなってしまったので無視してください(*_*)

779 :デフォルトの名無しさん:2008/10/26(日) 23:40:11
[1] 授業単元:ハードウェア設計
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7844.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限: 10月28日まで
[5] その他の制限: 特になし
よろしくお願いします。

780 :775:2008/10/26(日) 23:43:32
問題文に間違いがあったので修正します。

[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:inux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

781 :デフォルトの名無しさん:2008/10/26(日) 23:44:21
>>777
#include <stdio.h>
#include <stdlib.h>

int
main()
{
char s[81];
int i = 357111;
sprintf(s, "banner %d", i);
return system(s);
}


782 :デフォルトの名無しさん:2008/10/26(日) 23:48:42
>>774
んー、では 64bit がらみですか?それとも <sys/stat.h> の内容が変わったのか?

ちょっと調べてみましたが、最近は stat(2) 返り値の st_mode の判別方法として、
if (S_ISBLK(infobuf.st_mode))
printf("block device.\n");
というマクロが定義されているようですね。
私は、
if ((infobuf.st_mode & S_IFMT) == S_IFBLK)
printf("block device.\n");
しかしらなかったのですが。

ひきつづき識者のコメントをいただけたら、と思います。

783 :デフォルトの名無しさん:2008/10/27(月) 00:09:30
基本情報スレからきました

784 :デフォルトの名無しさん:2008/10/27(月) 00:17:26
>>777
#include<stdio.h>
#include<string.h> // memset
#define WIDTH (4*7)
#define HEIGHT (5)
void numset(char screen[HEIGHT][WIDTH], int x, int y, int num){
static const char font[][4*10+1]={ // 0123456789 の順に 3x5 で文字+数字間と末尾に一文字空白入れる
"*** * *** *** * * *** *** *** *** *** ",
"* * * * * * * * * * * * * * ",
"* * * *** *** *** *** *** * *** *** ",
"* * * * * * * * * * * * * ",
"*** * *** *** * *** *** * *** *** ",
};
int ix, iy;
for(iy=0;iy<5;iy++)
for(ix=0;ix<4;ix++) screen[y+iy][x+ix]=font[iy][num*4+ix];
}
void display_number(long value){
char screen[HEIGHT][WIDTH];
long div, x, y=0;
if(value<0 || value>1000000) return;
memset(screen, '\0', sizeof(screen));
for(div=1;value/div>=10;div*=10);
for(x=0;div>0;div/=10,x+=4) numset(screen, x, y, (value/div)%10);
for(y=0;y<HEIGHT;y++) printf("%s\n", screen[y]);
}
int main(int argc, char *argv[]){
int num=123456;
if(argc==2) sscanf(argv[1], "%d", &num);
display_number(num);
return 0;
}

785 :デフォルトの名無しさん:2008/10/27(月) 00:37:21
>>782
ヘッダ見ればいいんじゃ、とおもうんだけど。。。

786 :デフォルトの名無しさん:2008/10/27(月) 00:50:25
円周率3より悲惨な事実w

572 名前:名無し検定1級さん 投稿日:2008/10/27(月) 00:48:29
と思ったけど、今の大学3年以下のゆとり教育課程では
方程式を高校で初めて学ぶんだったねw
ありえんwww
複素数無くなったしw

787 :デフォルトの名無しさん:2008/10/27(月) 00:53:46
二次方程式 / 複素数平面 じゃないかね

788 :デフォルトの名無しさん:2008/10/27(月) 00:54:39
>>779
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7869.txt

問題2についてはなんか違う気もするけど仕様を満たせばいいかな。

gccでコンパイルできるかなぁ

789 :デフォルトの名無しさん:2008/10/27(月) 00:58:40
1,
1,2,
3,2,1,
1,2,3,4,
5,4,3,2,1,
.
.
.
これらの規則的な数字を配列のvd[1〜100]に順番に入れていきたいんですけどどうしたらいいでしょう。
あとその反対の
1,
2,1,
1,2,3,
4,3,2,1,
1,2,3,4,5,
.
.
.
をvm[1〜100]に順番に入れたいのですが、
ループさせてうまく配列に入れられないでしょうか。
わかるかた教えてください。
お願いします。

790 :デフォルトの名無しさん:2008/10/27(月) 01:07:17
[1] 授業単元:構造体
[2] 問題文:1,名簿ファイルを読み込み、生年月日の順に並べる、苗字の順に並べる、名前の順に並べる、mail addressの順に並べるプログラムを作れ。ただし、文字列の大小を比較する関数として、strcmpを用いよ。
#include <string.h>
int strcmp(char str1, char str2);
------------------------
str1>str2 → 0より小さな整数 ,str1==str2 → 0 ,str1<str2 → 0より大きい整数
関数 void SortData1(struct person *person, int *index, int n); /* 生年月日の順番に並べる */
関数 void SortData2(struct person *person, int *index, int n); /* 名の順番に並べる */
関数 void SortData3(struct person *person, int *index, int n); /* 姓の順番に並べる */
関数 void SortData4(struct person *person, int *index, int n); /* mail-addressの順番に並べる */ をそれぞれ作り、 結果を表示せよ。
2,県の郵便番号のリスト(メンバーの数約5000個)を配列の大きさだけを変えて、これを郵便番号順、読み仮名順に並べ替えるプログラムを作れ。
[3] 環境 [3.1] OS:Linux [3.2] コンパイラ名とバージョン:gcc [3.3] 言語:C
[4] 期限:2008年10月27日16:00まで
[5] その他の制限:1の関数の宣言は以下のようにする。
関数 void ReadData(struct person *person, int *index, int *n);
関数 void PrintData(struct person *person, int *index, int n);
関数ReadData、PrintDataでは、
while(scanf(“%d %s %s %s %s”,&person[i].birth, person[i].first_name,
person[i],last_name, person[i].mail_addr, person[i].thema)!=EOF){
index[i]=i;
i++; }
-------------------------------------------------------------
for(i=0;i<n;i++){
printf(“%d %s %s %s %s\n”,person[index[i]].birth, person[index[i]].first_name,
person[index[i]].last_name, person[index[i]].mail_addr,person[index[i]].thema); }
とりあえず、問題1の並び替えがうまく出来ませんorz
お願いします。


791 :デフォルトの名無しさん:2008/10/27(月) 01:08:57
>>787
もちろん一次のこと
さらに複素数も無限級数もやらなくなった


792 :デフォルトの名無しさん:2008/10/27(月) 01:09:34
IT業界だけじゃないけど、これから日本のエンジニアは大変なことになる
大量に採用するなら今年までにしとけ
再来年からはヤバイ奴らが入社してくるぞww

793 :デフォルトの名無しさん:2008/10/27(月) 01:10:28
>>790
名簿ファイル下さい

794 :デフォルトの名無しさん:2008/10/27(月) 01:13:49
>>791
んじゃ中学で何習うのorz

795 :デフォルトの名無しさん:2008/10/27(月) 01:24:26
>>793
名簿ファイルはリアルに教授の名前載ってるから、あげるの無理なんです
すみません

796 :デフォルトの名無しさん:2008/10/27(月) 01:25:49
>>795
せめて構造体の中身教えてな
themaには何が入ってるんだ?
研究テーマか何かか?

797 :775:2008/10/27(月) 01:26:48
>>780をお願いします。

798 :デフォルトの名無しさん:2008/10/27(月) 01:37:20
>>796
名簿はこんな感じ
19670712 namae a aaaaaa@xxx.aaaaaa.ac.jp Uchu
19790102 namae b bbbbbb@xxx.bbbbbb.ac.jp Kotaidenshi
19300303 namae c cccccc@xxx.cccccc.ac.jp Uchu
----------------------------------------------------
themaには研究テーマが入ってます

宜しくお願いします


799 :デフォルトの名無しさん:2008/10/27(月) 02:27:33
[1] 授業単元:プログラミング
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7863.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:何度もすいません・・・
         式がやはりネックです

800 :デフォルトの名無しさん:2008/10/27(月) 02:38:23
>>701
>別に1024個区切りで平均なり飛び出してる値なりが分かればいいんでしょ?
そういうことです。

>「(平均値+5*ρ)以上の値を最大値(極大値)とするように変更」という課題があるけれど、 じゃあ最初の課題では極大値の判定はどうやってやればいい?
平均値以上の値を最大値(極大値)としなきゃいけないんですOTL


801 :デフォルトの名無しさん:2008/10/27(月) 03:00:37
>>790
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7870.txt

とりあえず、1番だけ。
2番は問題の意味がよくわからない。
もっと詳しく書いてくれ。
必要なデータとかあればそれもよろしく。

今日はもう寝る。

802 :デフォルトの名無しさん:2008/10/27(月) 03:17:59
>>663 問題修正
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
@ 5行209921列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と(平均値+5*ρ)以上の値を最大値(極大値)を求めなさい。ρを標準偏差とする。
最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。この作業をファイルの最後の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 http://kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data

A 求めた最大値をpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を表示させ、2行目からは次の1024個中から求めた最大値を表示させなさい。

B @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
  @で求めた各々の最大値の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに出力できるように変更させなさい。
    例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
            [38]3.4255342 [72]3.214283 [98]2.434924390・・・・
             ・
             ・
             ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月27日午後5時
[5] その他の制限: 特になし

よろしくお願いします。

803 :デフォルトの名無しさん:2008/10/27(月) 03:20:10
>>802 補足説明
 
まず@番目の問題は、二次元配列で出力されている値のファイルを読み込むこと。
その値を1024個を一つのくくりとする。つまり1個目[0][0],2個目[0][1],・・・,5個目[0][4],6個目[1][0],・・・,1024個目[205][3]とする。このとき個数=周波数の値でもある。
この1024個の値の平均値と最大値(極大値)を求める。
最初の1024個の最大値(極大値)を求めたら、次の1024個の最大値(極大値)を求める。
次の1024個とは1個目[206][0],2個目[206],[1],・・・,1024個目[411][3]とする。これをファイルの最後の値まで繰り返し行う。

よろしくお願いします。

804 :デフォルトの名無しさん:2008/10/27(月) 03:57:31
[1] 授業単元:配列
[2] 問題文:10人分の2科目の試験得点(100点満点)を2次元配列に初期化しておく。2次元配列vの宣言と初期化は以下のとおり

int v[2][10]={{55,67,45,78,89,91,73,50,80,69}
{44,59,87,92,60,51,77,89,64,53}};

この10人分の科目別得点の平均を求めなさい。ただし、2科目の科目別平均は次の1次元配列に格納する。
 double mean[2]

doubleという型名で配列の名前がmean

《実行結果》
科目1の平均=69.700000
科目2の平均=67.600000


[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C
[4] 期限:10/27 午後1時
[5] その他の制限:出来るだけ短く

どうかよろしくお願いします



805 :デフォルトの名無しさん:2008/10/27(月) 03:57:47
>>785
そう、だから >>768 で sys/stat.h を貼ってもらって、それをみたんですが、
くだんの#define は
#if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN
の下で定義されていました。
mac osx = darwin ≒ FreeBSD+mach? であっても、
-std=c99 とすると、この上のどれも #define されず、
それでいて-std= を指定しなければ、この上のどれかが #define される
ということ、かつ >>774 より-std で#define の内容がかわる、ということですから、そんなことがあっても不思議でない、ということです。
単にそれだけですが。

806 :デフォルトの名無しさん:2008/10/27(月) 04:19:58
>>805
失礼。認識間違いしていました。
>>768の環境では__USE_BSD も __USE_MISC も __USE_XOPEN もどれも #define されないようですね。
でも手元のVine Linux 4.2 では __USE_BSD と __USE_MISC が #define されています。(#error で確認)
したがって >>768 の環境に問題があるのでしょうか。debian な人にお願いするしかないですね。




807 :デフォルトの名無しさん:2008/10/27(月) 04:24:18
>>806
手元の Vine Linux 4.2 で -std=c99 をコンパイルすると、>>768 と同じ現象が再現しました。
じゃ、いったいなにが #define されているのでしょうか‥‥‥。

808 :デフォルトの名無しさん:2008/10/27(月) 08:13:30
【質問テンプレ】
[1] 構造体:
[2] 英文なので翻訳します。
この宿題の中で、僕はFieldとScreenという2つのクラスを持っています。
Screen というクラスはField というクラスを80個持ちます。
で、問題はここからなのですが
教授は「Screenが無制限にFieldを持つようにプログラムを作れば、ボーナス点をやる」
とか言いだしたのでどうやるか教えてください。

[3] 環境
 [3.1] うぃんどーず
 [3.2] ぼーらんど 
[3.3] C++
[4] 一週間後
[5] 制限:new とか使う感じです。

809 :デフォルトの名無しさん:2008/10/27(月) 08:13:42
>>801

ありがとうございます
問題2は
郵便番号 区(漢字で) 町(カタカナで) 町(漢字で)
の順に並んだ名簿のファイルを読み込んで並び変えます

810 :デフォルトの名無しさん:2008/10/27(月) 08:21:13
>>808
[3] 環境
 [3.1] うぃんどーず
 [3.2] ぼーらんど 

Windowsもborlandも読めないだろうと馬鹿にしてるんだな


811 :デフォルトの名無しさん:2008/10/27(月) 08:28:46
>>810
いやwwwwwそういうわけじゃないです。。。
教えてくださいお願いします!

812 :デフォルトの名無しさん:2008/10/27(月) 08:56:43
>>808
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7871.txt

std::vectorを使ったがnew/deleteでも同じようにいけるはず
誰かに任せた

813 :デフォルトの名無しさん:2008/10/27(月) 08:57:50
#include <iterator>
#include <functional>

は不要なので削除して下さい

814 :デフォルトの名無しさん:2008/10/27(月) 08:59:31
>>789
int i, j, k, flag, vm[100];

for(i=1,k=0,flag=1; flag; i++) {
for(j=1; j<2*i-1 && flag; j++) {
vm[k++] = j;
if(k==100) flag = 0;
}
for(; j>0 && flag; j--) {
vm[k++] = j;
if(k==100) flag = 0;
}
}

下の場合は
for(j=1; j<2*i&& flag ; j++) {

815 :デフォルトの名無しさん:2008/10/27(月) 09:07:36
>>812
ありがとうございます。
でもnew/delete使う感じでお願いしたいんです。
vectorが何のこっちゃ分かりません。すみません・・・

816 :デフォルトの名無しさん:2008/10/27(月) 09:09:19
[1] 授業単元: 配列
[2] 問題文(含コード&リンク)
身長について処理をするプログラムの作成

最大20とする整数nをキーボードから入力する。
次に、n人分の実数(身長)をキーボードから入力しその平均身長をもとめ、
さらにそのそれぞれの人の身長と、平均身長との差を一人一行ずつ出力しなさい。
小数点以下は無視していい。
例)
n=3の場合
170.0 0.0
165.0 -5.0
175.0 5.0

[3] Windows
VC 6.0
言語:C++
[4] 期限:今日中
[5] その他の制限:特になし

c言語を侮っていてさぼり気味だったつけがまわり、気がついたら全くわからなくなってました。
ヒントだけでもいいのでどうかお願いします。

817 :デフォルトの名無しさん:2008/10/27(月) 09:20:11
>>815
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7872.txt

わかるかな?これ以上簡単に書けんよ

818 :デフォルトの名無しさん:2008/10/27(月) 09:24:37
>>817
ありがとうございます!

819 :デフォルトの名無しさん:2008/10/27(月) 09:49:54
[1] 授業単元: プログラミング基礎
[2] 問題文: ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7873.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 10月27日 21:00まで

よろしくお願いします

820 :デフォルトの名無しさん:2008/10/27(月) 10:20:56
http://pc11.2ch.net/test/read.cgi/gamedev/1217601153/
Syntax Error. しかしらないキチガイが現れました

821 :デフォルトの名無しさん:2008/10/27(月) 10:26:09
>>816
#include <stdio.h>

int main(void)
{
int i, n;
int sincho[20];
int sum, heikin;
printf("n? ");
scanf("%d", &n);
if (n >= 20) {
printf("nが大きすぎます。\n");
return 1;
}
for(i = 0; i < n; i++)
{
printf("%d人目の身長: ", i+1);
scanf("%d", &sincho[i]);
}
sum = sincho[0];
for(i = 1; i < n; i++)
{
sum += sincho[i];
}
heikin = sum / n;
for(i = 0; i < n; i++)
{
printf("%d %d\n", sincho[i], sincho[i] - heikin);
}
return 0;
}


822 :デフォルトの名無しさん:2008/10/27(月) 10:31:06
>>816

#include <stdio.h>
int main(int argc, char *argv[])
{
double height[20], sum, avg;
int n, i;

printf("n の値を入力してください: ");
scanf("%d%*[^\n]", &n);
if (n > 20) {
puts("大きすぎます");
return 1;
}
sum = 0.0;
for (i = 0; i < n; i++) {
printf("身長を入力してください: ");
scanf("%lf%*[^\n]", &height[i]);
sum += height[i];
}
avg = sum / n;
for (i = 0; i < n; i++) {
printf("%.1f %.1f\n", height[i], height[i] - avg);
}
return 0;
}

823 :デフォルトの名無しさん:2008/10/27(月) 10:32:36
>>819
#include<stdio.h>
int main(void){
char str[100],big[100];
int i,k;
printf("文字列を入力して下さい:");
scanf("%s",str);
k=0;
for(i=0; str[i]!='\0'; i++){
switch(str[i]){
case 'a':
case 'i':
case 'u':
case 'e':
case 'o':continue;
default:{big[k]=str[i]-32;
k++;
}
}
}
big[k]='\0';
printf("入力:%s\n",str);
printf("出力:%s\n",big);
}

824 :デフォルトの名無しさん:2008/10/27(月) 10:34:06
忘れた
return 0;

825 :デフォルトの名無しさん:2008/10/27(月) 10:35:03
#include <stdio.h>
int main(void){
char str[100],big[100];
int i, j;
printf("文字列を入力して下さい:");
scanf("%s",str);
for(i=0, j=0; str[i]!='\0'; i++){
if (str[i]>='a' && str[i]<='z'){
big[j]=str[i]-('a'-'A');
if (big[j] == 'A' || big[j] == 'I' ||
big[j] == 'U' || big[j] == 'E' ||
big[j] == 'O')
{
;
}else j++;
}else if (str[i] == 'A' || str[i] == 'I' ||
str[i] == 'U' || str[i] == 'E' ||
str[i] == 'O')
{
;
}else {
big[j] = str[i];
j++;
}
}
big[j]='\0';
printf("入力:%s\n",str);
printf("出力:%s\n",big);
return 0;
}

826 :デフォルトの名無しさん:2008/10/27(月) 11:38:02
>>788さん
ありがとうございます!
大変助かりました!

827 :デフォルトの名無しさん:2008/10/27(月) 12:27:23
>>820 = ID:FJ+86jwr ?
数字も読めないのか

828 :デフォルトの名無しさん:2008/10/27(月) 12:30:57
[1] 授業単元:プログラミング
[2] 問題文:な簡単な単語検索を行うプログラムを作成
せよ.
1. 3 つの単語を入力し,これを検索対象のデータと
する.
2. 検索したい単語を入力すると,それが覚えた単語
の中に含まれていれば“YES!”,含まれていなけ
れば“NO!”と出力する.
3. −1 が入力されるまで,繰り返し検索できるように
する.
条件
3 つの単語は,2 次元配列str1[3][100] に格納する.
(str1 には99 文字までの単語を3 つ格納できる)
実行例
$ ./q2-4
Input 3 words:
<-- "aaa"
<-- "bbbb"
<-- "ccccc"
Search word: <-- "aaa"
YES!
Search word: <-- "dd"
NO!
Search word: <-- "-1"
$ (終了)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:10月30日 木曜日
[5] その他の制限: 標準関数strcmp(str *, str *) を使うということです
よろしくお願いします

829 :デフォルトの名無しさん:2008/10/27(月) 12:50:45
>>828
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7874.txt

830 :デフォルトの名無しさん:2008/10/27(月) 13:20:59
>>820
どう見てもキチガイはID:FJ+86jwrだな

831 :デフォルトの名無しさん:2008/10/27(月) 13:54:18
>>790
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7875.c

2番も1番と同じ要領でやってみた。

832 :デフォルトの名無しさん:2008/10/27(月) 14:15:40
>>802 問題文修正しました。
>>663 問題修正
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
@ 209921行5列の2次元配列のファイルを読み込みなさい。ファイルの値を1024個で区切り1024個中の値の平均値と(平均値+5*ρ)以上の値を最大値(極大値)を求めなさい。ρを標準偏差とする。
最大値をmax1、max2、max3、・・・・として最大値は1個とは限らないこととする。
また1024個の最大値を求め終わったら、次の1024個の最大値を求めなさい。この作業をファイルの最後の値までやりなさい。
ただし、ファイルのサイズは17.2MBととし十分なメモリ領域を確保すること。
ヒント:malloc関数
※ファイル↓(17MBもあるのでDLするのに時間がかかるかもしれません。お手数かけます。)
 http://kissho6.xii.jp/14/src/1yon14506.zip.html
 DLKey:data

A 求めた最大値をpeak.txtに出力しなさい。1行目を最初の1024個中で求めた最大値を表示させ、2行目からは次の1024個中から求めた最大値を表示させなさい。

B @で読み込んだファイルの数値は周波数1,2,3,…,1024の時の値である。1024個で区切ったのはそのためである。
  @で求めた各々の最大値の周波数を [周波数]最大値 となるようにAで出力したpeak.txtに出力できるように変更させなさい。
    例:peak.txt→ [67]3.214283 [84]2.4930390 [148]5.3485704 ・・・・
            [38]3.4255342 [72]3.214283 [98]2.434924390・・・・
             ・
             ・
             ・
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月28日午後1時
[5] その他の制限: 特になし

よろしくお願いします。


833 :デフォルトの名無しさん:2008/10/27(月) 15:17:14
>>744

ありがとうございました!

834 :デフォルトの名無しさん:2008/10/27(月) 15:17:14
>>832
@とAまでは↓もうプログラムはあります。
http://kissho1.xii.jp/7/src/7jyou16183.zip.html
DLkey : foo
あとはB番目の問題をやるだけです。

プログラムよろしくお願いします。

835 :デフォルトの名無しさん:2008/10/27(月) 15:54:45
>>832
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7877.c
peak.txtが例の通りにならないんだが、これでいいのだろうか。

>>834を読んでなかった…。

836 :デフォルトの名無しさん:2008/10/27(月) 16:08:27
3と4はもう答え書いたのに(´・ω・`)

837 :デフォルトの名無しさん:2008/10/27(月) 16:09:06
[1] 授業単元:プログラミング
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7863.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:10/27
[5] その他の制限:

838 :デフォルトの名無しさん:2008/10/27(月) 16:12:59
>>835
ありがとうございます。
しかし、peak.txtが出力されませんでした。どうしてなんだろう?
コンパイルはgccですよね? 

839 :デフォルトの名無しさん:2008/10/27(月) 16:17:46
>>836
コンパイルはとおったのですが、peak.txtが出力できませんでした。
かなり格闘したのですが、手に負えなくて・・・OTL


840 :デフォルトの名無しさん:2008/10/27(月) 16:20:25
>>835
fprintf(fpout, "[%d]%lf ", j + 1, a[j]);
は正しくは
fprintf(fpout, "[%d]%f ", j + 1, a[j]);



841 :デフォルトの名無しさん:2008/10/27(月) 16:22:01
>>840
そうだった^^;

842 :デフォルトの名無しさん:2008/10/27(月) 16:28:46
>>836
というか、旧Bが現@なんだよねたぶん。

843 :デフォルトの名無しさん:2008/10/27(月) 16:41:51
>>842
はい、そうです。なんか旧@と旧Bの問題が重複(分かりにくい)ということだったので
旧Bの問題文を現@の問題文に含みました。

よろしくお願いします。

844 :デフォルトの名無しさん:2008/10/27(月) 16:52:32
>>838
peak.txtのファイルすらできないってこと??

845 :デフォルトの名無しさん:2008/10/27(月) 17:05:02
>>844
はい、そうです。ファイルができませんOTL
gccのオプションは -o だけでいいのですか?

846 :デフォルトの名無しさん:2008/10/27(月) 17:09:16
まさかコンパイルしただけでファイルが出来るとか思ってないよな

847 :デフォルトの名無しさん:2008/10/27(月) 17:10:11
>>845
gcc hoge.c -o hoge.exe
ってな感じにコンパイルして実行すれば良いと思うけど。。。
コンパイルは通るんだよね?

848 :デフォルトの名無しさん:2008/10/27(月) 17:20:14
>>846
あ・・・できると思ってました><
どうすればファイルを作成することが出来るのでしょうか?

>>847
コンパイルは通ります。フォルダの中にpeak.txtが出来てないだけです。

849 :デフォルトの名無しさん:2008/10/27(月) 17:23:00
>>848
実行しろよ
Linuxなら
./a.out


850 :デフォルトの名無しさん:2008/10/27(月) 17:23:06
>>848
コンパイルしてできた実行ファイルを実行する。
同じフォルダにdata.txtを置いておくこと。

851 :デフォルトの名無しさん:2008/10/27(月) 17:24:26
ひどいな・・・
赤ちゃんかよ・・

852 :デフォルトの名無しさん:2008/10/27(月) 17:40:17
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): f(x)=1/(2+sinx+cosx) の積分を[π,-π]の範囲でSimpsonの1/3公式で求め、分割数と誤差を表示させよ。
               
[3] 環境
 [3.1] OS:Windows
 [3.2] 言語:C言語
 
[4] 期限: 2008.10.29

お願いします。

853 :デフォルトの名無しさん:2008/10/27(月) 17:40:26
目が点になるっていうのはこういう事か

854 :デフォルトの名無しさん:2008/10/27(月) 17:48:32
>>852
誤差って、真値は?

855 :デフォルトの名無しさん:2008/10/27(月) 18:02:09
>>549>>551
すみませんでした。ちと、ボケてましたwww
うまく出力できました。
ありがとうございました。

856 :デフォルトの名無しさん:2008/10/27(月) 18:06:50
>>854
あっ、すいません
√2×πです。

857 :デフォルトの名無しさん:2008/10/27(月) 18:12:03
[1] 授業単元:C
[2] 問題文(含コード&リンク):課題1:2次元平面上の点を表す構造体 Point 型を定義して,その点に関する計算を行うプログラムを作成したい.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,原点からの距離を求める関数 length_vectorを作成する.
構造体 Point型を使用して,平面の点を表示する関数 print_vを作成する.

2:2次元平面上の点を表す構造体 Point 型と構造体配列を定義して,座標平面上の2点に関する計算を行うプログラムを作成したい.
構造体 Point型は,double型の X座標と Y座標のメンバをもつ.
構造体 Point型を使用して,要素2つの構造体配列 arrayを定義する.
構造体配列 arrayに,平面の点を代入する関数 input_pointを作成する.
構造体配列 arrayに格納されている2点の長さを求める関数 length_vector2を作成する.
二乗の計算には pow ,ルートの計算には sqrtを使用
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7879.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 任意
 [3.3] 言語: C
[4] 期限: ([2008年10月28日17:00まで]
??????の部分を問題文に従ってうめていただけると助かります

858 :デフォルトの名無しさん:2008/10/27(月) 18:19:44
>>856
#include <stdio.h>
#include <math.h>

double f(double x)
{
return 1. / (2. + sin(x) + cos(x));
}

int main(void)
{
int k, n;
double h, a = -M_PI, b = M_PI, fo, fe, sum;

while (1) {
printf("分割数 N (0 = END) = ");
scanf("%d", &n);
if (n == 0)
break;

h = (b - a) / (2. * n);
fo = fe = 0.;
for (k = 1; k <= 2 * n - 3; k += 2) {
fo += f(a + h * k);
fe += f(a + h * (k + 1));
}
sum = (f(a) + f(b) + 4. * (fo + f(b - h)) + 2 * fe) * h / 3.;

printf("分割数 = %d, 誤差 = %.10g\n", n, sum - sqrt(2.) * M_PI);
}
return 0;
}

859 :デフォルトの名無しさん:2008/10/27(月) 18:20:47
うーん積み残し誤差も考慮しないといけんかな・・・・

860 :775:2008/10/27(月) 19:16:14
お願いします。

[1] 授業単元:Cプロギラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:inux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

861 :デフォルトの名無しさん:2008/10/27(月) 21:35:39
>>549
二つ目のですが整数を入力すると入力した逆の単項式が出てしまうので入力した順に出力されるようにして欲しいのですがそれだと変化しないのですが・・・

862 :デフォルトの名無しさん:2008/10/27(月) 21:49:46
>>861
双方向リストにするか、再帰を使うか。

863 :デフォルトの名無しさん:2008/10/27(月) 22:00:12
>>821>>822
お二人とも丁寧に有り難う御座います。ホントに助かりました。


864 :デフォルトの名無しさん:2008/10/27(月) 22:09:35
[1] プログラミング入門言語
[2] 五人分の点数(0〜100点まで)を入力し、点数の高い順に並べ替えさせるプログラム
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] C
[4] 期限:制限なし

初心者なので困ってます><お願いします!!

865 :デフォルトの名無しさん:2008/10/27(月) 22:19:29
#include<stdio.h>
int main(void){
int score[5], temp, i, j;

for(i=0;i<5;i++){ //点数入力
printf("%d人目の点数: ", i+1);
scanf("%d", &score[i]);
}
for(i=0;i<5;i++){ //並べ替え
for(j=4;j>i;j--)
if(score[i] < score[j]){
temp = score[j];
score[j] = score[i];
score[i] = temp;
}
}
for(i=0;i<5;i++)
printf("%d ", score[i]);
putchar('\n');

return 0;
}

866 :865:2008/10/27(月) 22:22:22
馬鹿みたいにタブ使ったから空白作れてないな。しくじった。
 #include<stdio.h>
int main(void){
int score[5], temp, i, j;

for(i=0;i<5;i++){ //点数入力
printf("%d人目の点数: ", i+1);
scanf("%d", &score[i]);
}
for(i=0;i<5;i++){ //並べ替え
for(j=4;j>i;j--)
if(score[i] < score[j]){
temp = score[j];
score[j] = score[i];
score[i] = temp;
}
}
for(i=0;i<5;i++)
printf("%d ", score[i]);
putchar('\n');

return 0;
}


867 :デフォルトの名無しさん:2008/10/27(月) 22:47:26
>>831
有難う御座います


868 :デフォルトの名無しさん:2008/10/27(月) 22:53:22
>>866
早速の回答ありがとうございます!!

もう一問わからないのが><
どなたかお願いします><

[1] プログラミング入門言語
[2] 3人分の3教科の素点を表示する。素点は100点満点でランダムに作る。
  またその時、
  ・3教科の合計・平均点を計算し、それぞれ素点の右の列に表示する。
  ・合計点の高い学生から順に表示する。
  ・平均点は小数第一までの表示とする。 
[3] 環境
 [3.1] OS: Windows
 [3.2] gcc
 [3.3] C
[4] 期限:なし。


869 :デフォルトの名無しさん:2008/10/27(月) 23:36:38
OSはlinux
期限はとくになし

素数を数えて落ち着くプログラム
おながいします。

870 :デフォルトの名無しさん:2008/10/28(火) 00:49:26
>>858
ありがとうございます。
すいませんが、積分範囲は自分で入力するようにしたいんですよ・・・言葉足らずで申し訳ありません。
一応自分で考えたんですけどうまく出力されません・・・間違っている場所の指摘お願いします。



871 :デフォルトの名無しさん:2008/10/28(火) 00:50:16
>>858
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main(void)
{
FILE *fo;
double a, b;
int n, i;
double h, s, x;
double fa, fb, fx;
double sinx, cosx, sina, cosa, sinb, cosb;
if((fo = fopen("ans7.txt", "w")) == NULL){
printf("Do not open file\n");
exit(1);
}


872 :デフォルトの名無しさん:2008/10/28(火) 00:50:53
つづき・・・
printf("積分区間a,bを入力してください.\n");
scanf("%lf%lf",&a, &b);
printf("分割数nを入力してください.\n");
scanf("%d",&n);
fx = 1/(2+sinx+cosx);
fa = 1/(2+sina+cosa);
fb = 1/(2+sinb+cosb);
h = (b-a)/n;
s = fa+fb;
x=a;
i=1;
x=x+h;
if(i%2 == 0){
s = s+2*fx;}
else{
s = s+4*fx;}
i = i+1;
while(i>n){
s = h/3*s;}
printf("分割数nは%d回です。\n", n);
printf("誤差は%lfです。\n", s);
fprintf(fo, "分割数nは%d回です。\n", n);
fprintf(fo, "誤差は%lfです。\n",s);
fclose(fo);

}

お願いします。

873 :デフォルトの名無しさん:2008/10/28(火) 01:14:31
>>870
修正点が多すぎるので>>858を修正しました。
あとは適当にいじって下さい。

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

874 :デフォルトの名無しさん:2008/10/28(火) 01:26:51
>>868
構造体使わないようにと思って。。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7882.c

875 :デフォルトの名無しさん:2008/10/28(火) 02:27:04
フィボナッチ数列を・・・43024項まで求めるプログラムが出来た。
この調子で、8月に発見されたメルセンヌ素数をはじき出す
プログラムを作るぜ。戯言すまそ。

876 :しろうと:2008/10/28(火) 10:04:34
初心者です。シグナルハンドリングについて勉強しているとこです。
kill -9 [pid]
ってkillがpidを殺すコマンドで-9は深く考えた事無かったけどこれって
実はkill自体はシグナルを単に送るだけで、-9にkillみたいな意味があるって
認識を改めた。ここまで正しいですか?

877 :デフォルトの名無しさん:2008/10/28(火) 10:12:36
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7883.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月29日まで

よろしくお願いします。

878 :デフォルトの名無しさん:2008/10/28(火) 10:15:54
どなたか857の解答期限迫ってきてるんでお願いします
問題が見づらいようなら言ってください 

879 :デフォルトの名無しさん:2008/10/28(火) 11:04:05
>>857
課題1
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* (x,y)-平面の点を座標で表す構造体 */
struct Point{
double x, y;
};

/* 原点からの長さを求める関数 */
double length_vector(struct Point *p){
return sqrt(pow(p->x, 2) + pow(p->y, 2));
}

/* 平面の点を表示する関数 */
void print_v(struct Point *p){
printf("(%f, %f)\n", p->x, p->y);
}

880 :デフォルトの名無しさん:2008/10/28(火) 11:04:38
>>857 続き
int main(void)
{
struct Point p;

printf("Input Point X: ");
scanf("%lf", &p.x);
printf("Input Point Y: ");
scanf("%lf", &p.y);

print_v(&p); /* print_vを使用して,座標の表示 */
printf("The length of vector: %f\n", length_vector(&p) );

return 0;
}

881 :デフォルトの名無しさん:2008/10/28(火) 11:16:47
[1] 授業単元:データの可視化
[2] 問題文:
1: 三角関数 sin x、cos xは、テイラー展開により、
xの多項式に展開できる。2m+1次までの展開を計算する関数、
を作れ、関数の宣言は、
float MySin(float x, int m)とせよ。

2:上記MySinを使って、次数を増やすにつれて、三角関数に近づくこと示せ。
xの範囲を-πからπまでとし、π/100毎にm=0, 1, 2, 3に対して計算せよ。

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

お願いします

882 :デフォルトの名無しさん:2008/10/28(火) 11:17:04
>>857
課題2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/* (x,y)-平面の点を座標で表す構造体 */
struct Point{
double x, y;
};

/* 要素を代入する関数 */
void input_point(struct Point data[], int i)
{
printf("Input Point p[%d].x: ", i);
scanf("%lf", &data[i].x);
printf("Input Point p[%d].y: ", i);
scanf("%lf", &data[i].y);
}

/* 長さを求める関数 */
double length_vector2(struct Point data[]){
return sqrt(pow(data[0].x - data[1].x, 2.0) + pow(data[0].y - data[1].y, 2.0));
}

883 :デフォルトの名無しさん:2008/10/28(火) 11:17:47
>>857 続き
int main(void)
{
struct Point p[2]; /* 構造体配列の定義 */
int i;

for (i = 0; i < 2; i++)
{
input_point(p, i); /* 座標点の入力 */
}

printf("The length of vector: %lf \n", length_vector2(p) );

return 0;
}

884 :デフォルトの名無しさん:2008/10/28(火) 12:00:28
>>881
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7884.c
こゆこと?

885 :デフォルトの名無しさん:2008/10/28(火) 13:12:20
>>873
ありがとうございました♪
もっと勉強します。。。

886 :しろうと:2008/10/28(火) 13:20:49
signal(SIGINT, func1);
でコンパイルするとpassing argument 2 of 'signal' from incompatible pointer type
という警告が出ます。どう書けばいいですか?(gcc)

887 :デフォルトの名無しさん:2008/10/28(火) 14:02:49
>>886
void func1(int sig)
{
//処理
}


888 :しろうと:2008/10/28(火) 14:13:08
>>887
有り難うございました。void func1(void)で定義してました。sigという整数
型の引数が渡って来てるんですね。


889 :しろうと:2008/10/28(火) 14:14:58
訂正
sigという整数型の引数が渡って来てるんですね。
→整数型の引数が渡って来てるんですね。

890 :デフォルトの名無しさん:2008/10/28(火) 15:07:15
C言語をやっている人はアルゴリズムも学習しているイメージがあるので
ここで聞かせて頂きます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7885.txt
上記は疑似コードで書かれていますが、アルゴリズム1もアルゴリズム2も
配列の中から最小値を探し出す処理をしているそうですが、アルゴリズム1の
02行目では配列をどうやってtempにぶちこめるのでしょうか?

891 :デフォルトの名無しさん:2008/10/28(火) 15:58:48
アルゴリズムスレか擬似コードスレへ行ってください

892 :デフォルトの名無しさん:2008/10/28(火) 16:00:44
>>889
signal( )に渡した第1引数がそのまま渡される。


893 :デフォルトの名無しさん:2008/10/28(火) 16:01:55
>>890
関数を再帰呼び出ししている
1 #include <stdio.h>
2
3 int algo1(int ary[], int x)
4 {
5 if ( x == 0 ) return ary[0];
6 else {
7 int temp = algo1(ary, x-1);
8 if ( temp <= ary[x] ) return temp;
9 else return ary[x];
10 }
11 }
12
13
14 int main(void)
15 {
16 int a[] = {4, 3, 2, 1, 5, 7, 8, 9, 6, };
17
18 printf("min == %d\n", algo1(a, sizeof(a)/sizeof(a[0])-1));
ここの要素数引く1するのが糞だけど
19
20 return 0;
21 }
アルゴリズム2は、たぶん2分検索とかじゃないか

894 :892:2008/10/28(火) 16:03:11
いや言い方が変だな
まあシグナルが引数に渡されるということで

895 :デフォルトの名無しさん:2008/10/28(火) 16:31:56
[1] 授業単元:C
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7823.txt
これを実行して整数を入力すると入力した逆の単項式が出力されるので入力した順番に出力させよ
ちなみに係数も乗も0にするとプログラムは終了されます
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: お任せ
 [3.3] 言語: C


896 :デフォルトの名無しさん:2008/10/28(火) 17:05:12
問題:
・普通の日付をユリウス日に変換して
ユリウスに○日後を足し算して
・ユリウス日から日付を求める

言語:C/C++
期限:今日中
制限:無し

おねがいしまう

897 :775:2008/10/28(火) 17:08:19
お願いします。本当にさっぱりわからないので…
誤字修正しました

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gc
 [3.3] 言語:C
[4] 期限: ([2008年11月6日まで]

898 :デフォルトの名無しさん:2008/10/28(火) 17:37:04
[1] 授業単元: C言語
[2] 問題文: 1変数関数 f(x)=0.5*(x-2)*(x-2) の値が最小となる点を求めるプログラムを作成せよ。
[3] 環境
 [3.1] OS: mac
 [3.2] コンパイラ:gcc
 [3.3] 言語: C
[4] 期限: 10月30日まで
[5] その他の制限:基本的な関数のみでお願いします

899 :デフォルトの名無しさん:2008/10/28(火) 17:49:21
どれもレベル高いなぁ('`A)
もう一回勉強しなおそう

900 :デフォルトの名無しさん:2008/10/28(火) 20:16:48
>>896
自己解決しました

901 :デフォルトの名無しさん:2008/10/28(火) 21:05:38
>>893
くそみそ?

902 :デフォルトの名無しさん:2008/10/28(火) 23:46:59
>>898
それx=2のときのf(2)=0が最小値なんだけど

903 :デフォルトの名無しさん:2008/10/28(火) 23:48:50
>>898
すごい馬鹿みたいな総当りでいいか?

904 :デフォルトの名無しさん:2008/10/28(火) 23:51:09
>>898
f(x)を微分したf'(x)の変曲点を求めるとかな

905 :デフォルトの名無しさん:2008/10/28(火) 23:52:23
いやf'(x)=0をニュートン法か二分法で解いた方がいいな

906 :デフォルトの名無しさん:2008/10/29(水) 00:39:08
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ある文字列を入力、その後また文字列を入力し、最初に入力した文字列に後で入力した文字列が含まれていれば1、含まれていなければ0と表示するプログラムを作成。
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] C
[4] 期限: 2008/10/29 12:00まで
[5] その他の制限: 自作の関数を使うかstrcmp関数を使う。ポインタ変数を使う。#include<stdio.h>・#include<string.h>のみ使用。

                    

907 :デフォルトの名無しさん:2008/10/29(水) 00:42:26
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): 大文字の文字列を小文字に変換するプログラム。文字列を入力する際に1文字でも大文字以外の文字が入っていれば、エラーを表示しもう1度入力を促すようにする(continue文で)
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] C
[4] 期限: 2008/10/29 12:00まで
[5] その他の制限: 自作の関数を使う。ポインタ変数を使う。#include<stdio.h>のみ使用。

905・906ともどもよろしくおねがいします。

908 :デフォルトの名無しさん:2008/10/29(水) 00:53:58
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):正または負の八桁以内の整数を入力し、次の変換法則にしたがって
文字列に変換して、結果を出力するプログラム
*変換規則
各桁の数を半角の数字に変換し、文字型配列に右詰め(最下位桁の数字を配列要素[11])
で格納し、3桁ごとに","を挿入して、最上位桁の文字の前に'+'または'-'の符号を付加する。
符号を格納した配列要素より左の要素には空白が格納されている。また、配列要素[11]には
ヌル文字が格納されている。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc55
 [3.3] 言語: C
[5]ポインタはまだ習っていないです

どうやるかさっぱり分かりません・・・
特に3桁ごとに、を挿入したり最後に+や-を付ける所で思考が止まりました
長くて読みにくいと思いますがどうかよろしくお願いします。

909 :775:2008/10/29(水) 01:01:47
お願いします。本当にさっぱりわからないので…
誤字修正しました

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

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

910 :デフォルトの名無しさん:2008/10/29(水) 01:29:16
>>898は、多少一般化して、任意の一変数多項式関数の最小値にしたらいいだろう

911 :デフォルトの名無しさん:2008/10/29(水) 01:42:04

[1] 授業単元: プログラミング基礎
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7886.txt
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 10月30日 23:59まで

よろしくおねがいします



912 :デフォルトの名無しさん:2008/10/29(水) 02:10:44
>>911
割れるだけ割る。 素因数分解。 ユークリッドの互除法。 などがある。
ソースはユークリッドの互除法。 
3つの数の最大公約数は、2つずつの最大公約数を求めて、2つの最大公約数を求めればいいだろう

913 :デフォルトの名無しさん:2008/10/29(水) 02:14:38
3つのはこれでいいのでは?
int gcd3(x, y, z){
return gcd( gcd(x,y), gcd(y,z));
}


914 :デフォルトの名無しさん:2008/10/29(水) 02:50:51
int gcd3(x, y, z){
return gcd( gcd(x,y), z);
}
で十分じゃない?


915 :デフォルトの名無しさん:2008/10/29(水) 13:35:50
>>906,907
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7887.txt
と思ったらタイムオーバー

916 :デフォルトの名無しさん:2008/10/29(水) 14:34:52
「入力された任意桁数(30桁以下)の整数に対し、各位の値を、配列を用意してそれに1つづつ格納する」のはどのようにするとスマートでしょうか・・・??

917 :デフォルトの名無しさん:2008/10/29(水) 14:48:03
>>916
スマートとか考えると後で意味不明のコーディングになる
forループでいいだろ

918 :デフォルトの名無しさん:2008/10/29(水) 14:56:40
自分でやってみましたが、powを使うとよく分からないことに・・・(泣)

言い方を変えて、<math.h>を極力使わないようにしたいです・・・

919 :デフォルトの名無しさん:2008/10/29(水) 15:05:09
for(i=0; i<30; i++){
arr[i] = n%10;
n /= 10;
}

920 :デフォルトの名無しさん:2008/10/29(水) 15:17:13
こんなに小さいプログラムでいいんですね(^^;

3時間かけて諦めた自分は何なんだろうorz

921 :デフォルトの名無しさん:2008/10/29(水) 15:21:05
30桁だから文字列だろ
#include <stdio.h>
int main(void)
{
char num[] = "123456789012345678901234567890";
int arr[30];
int i;
int c = strlen(num);
for (i = 0; i < c; i++)
{
arr[c - i - 1] = num[i] - '0';
}
for (i = 0; i < c; i++)
{
printf("%d ", arr[i]);
}
return 0;
}


922 :デフォルトの名無しさん:2008/10/29(水) 15:23:21
>>921
はいエラー

923 :デフォルトの名無しさん:2008/10/29(水) 15:26:07
いちいちstring.h使わんでも
forで0になるまで回せばいいじゃん。
>>919だと任意桁数ってのに合わないからね

924 :916:2008/10/29(水) 16:01:52
>>921
やはり>>916 の書き方が悪かったです…。
任意桁数の整数は、入力されたものを使うことになります。


925 :デフォルトの名無しさん:2008/10/29(水) 18:08:16
>>908
http://www.jitec.jp/1_04hanni_sukiru/mondai_kaitou_2008h20_2/2008h20a_fe_pm_qs.pdf
これの問6とほぼ一緒な感じか?
a,b,cに入るのは
a: /= 10
b: i % 3
c: i < j; i++, j--

正の整数に+をつけるなら、
if(minus != 0){
str[j++] = '-';
}
この付近に少しコードを付け足せばできると思う。

926 :デフォルトの名無しさん:2008/10/29(水) 18:21:20
>>925
すまん、勘違いした。
右詰めにするのか…。

927 :デフォルトの名無しさん:2008/10/29(水) 18:41:54
[1] 授業単元: プログラミング演習
[2] 問題文:1から50までの整数のうち,素数であるものを全て書き出すプログラムを,for文を用いて作成.
  出力結果は次のように横に並ぶようにする.

1 3 5 7 11 13 17 19 23 29 ・・・・

[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 11月4日 16:00まで
[5] その他の制限:2重ループを用いる。nの素数判断は,2〜n-1までの数で順にわり算して,全ての数で割り切れなければnは素数。
            for文までしか習ってないのでそのあたりを考慮して頂けたらありがたいです。よろしくお願いします。

928 :デフォルトの名無しさん:2008/10/29(水) 18:47:04
>>927
#include <stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 50; ++i) {
for (j = 2; j <= i; ++j) {
if (j == i) {
printf("%d ", i);
} else if (i % j == 0) {
break;
}
}
}
putchar('\n');
return 0;
}


929 :928:2008/10/29(水) 18:49:28

int main()
{
int i, j;
for (i = 1; i <= 50; ++i) {
for (j = 2; j <= i - 1; ++j) {
if (i % j == 0) {
break;
}
}
if (j == i) {
printf("%d ", i);
}
}
putchar('\n');
return 0;
}

すいませんこっちのほうがま真っ当です

930 :デフォルトの名無しさん:2008/10/29(水) 19:09:55
[1] 授業単元: プログラミング基礎
[2] 問題文:




(以下の問題は、 算数にチャレンジ!! の中の 第559回問題 からの引用。)
1〜10の数が書かれたカードが1枚ずつ、全部で10枚あります。

今、これらのカードを並べ、隣り合った数の差を左から次々に加えていくことにします。例えば、

2,5,6,8,1,4,3,9,7,10
と並べたならば、
3+1+2+7+3+1+6+2+3=28
ということになります。
では、この計算結果が最も大きくなるようにカードを並べると、結果はいくらになるでしょうか。(問題終)

元の問題は算数の問題なので論理で答えを出すものだが、ここではプログラムを書いてその最大値を求めて欲しい。

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

よろしくおねがいします

931 :デフォルトの名無しさん:2008/10/29(水) 19:15:13
大きい数字が中心で1や2は端がいいな

932 :デフォルトの名無しさん:2008/10/29(水) 19:53:24
一般化して100個でも出来るのがいいな

933 :デフォルトの名無しさん:2008/10/29(水) 20:12:11
プログラムって総当たりってこと?
結構時間かかりそうとおもったけど、10桁くらいなら余裕か…。

934 :デフォルトの名無しさん:2008/10/29(水) 20:19:50
>>933
おそらく総当りだと思います

935 :デフォルトの名無しさん:2008/10/29(水) 21:09:12
>>930
100個は無理。
#include<stdio.h>
#include<string.h>
#define M 10
unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;}
void retuprt(unsigned int *x){for(int n=0;n<M;n++)printf("%d ",x[n]);}
unsigned int sanowa(unsigned int *x){unsigned int s=0,n; for(n=0;n<M-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]>x[n+1];return s;}

main(){
unsigned int i,j,k;
unsigned int orgnum[M],num[M],jretu[M];
for(i=0; i<M; i++) orgnum[i]=i+1;
int max=0; unsigned int maxretu[M];
for(k=0;k<kaijyo(M);k++){
memcpy(num,orgnum,4*M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
i=sanowa(jretu);
if(max<i){max=i;memcpy(maxretu,jretu,4*M);}
}
retuprt(maxretu); printf(" max=%d\n",max);
}

936 :デフォルトの名無しさん:2008/10/29(水) 21:14:43
最大値を与える列を求める

#include<stdio.h>
#include<string.h>
#define M 10
void retuprt(unsigned int *x){for(int n=0;n<M;n++)printf("%d ",x[n]);}
unsigned int sanowa(unsigned int *x){unsigned int s=0,n; for(n=0;n<M-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]>x[n+1];return s;}
main(){
unsigned int i,j,k;
unsigned int orgnum[M],num[M],jretu[M];
for(i=0; i<M; i++) orgnum[i]=i+1;
for(k=0;k<3628800;k++){
memcpy(num,orgnum,4*M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
if(sanowa(jretu)==29){retuprt(jretu);printf("\n");}
}}

937 :デフォルトの名無しさん:2008/10/29(水) 21:18:07
プ

[4] 期限: 10月14日まで

938 :935:2008/10/29(水) 21:21:55
間違えた

939 :デフォルトの名無しさん:2008/10/29(水) 21:23:28
改めて>>877の問2)からどなたかお願いします。

問2)連結リストの先頭の次に、セルを一つ追加する関数を作成する。セルのelement
メンバの値は0 でよい。
つまり、cell1 → cell2 → cell3 → NULL
であるときに、この関数を1 回呼ぶと、
cell1 → (新しいセル) → cell2 → cell3 → NULL となるようにすればいい。

問3)連結リストの先頭の前に、セルを一つ追加する関数を作成せよ。セルのelement
メンバの値は0 でよい。
つまり、cell1 → cell2 → cell3 → NULL
であるときに、この関数を1 回呼ぶと、
(新しいセル) → cell1 → cell2 → cell3 → NULL となるようにすればいい。

自分なりに問2を進めてみたのですがvoid add_cell_secondをどう書いたらいいのでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7888.txt

940 :デフォルトの名無しさん:2008/10/29(水) 21:24:28
これって解が214176個もあるぞ。 問題として解答するなら30にならないことも示す必要あるな。

941 :940:2008/10/29(水) 21:37:08
まちがえた

942 :940:2008/10/29(水) 21:40:22
11まではなんとかもとまるが

#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;

unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;}
void retuprt(vector<unsigned char> &x){for(int n=0;n<x.size();n++)printf("%d ",x[n]);}
unsigned int sanowa(vector<unsigned char> &x){unsigned int s=0,n; for(n=0;n<x.size()-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];return s;}

main(){
unsigned int M,K;
unsigned int i,j,k;
vector<unsigned char> orgnum,num,jretu;
for(M=2; M<20; M++) {
orgnum.resize(M),num.resize(M),jretu.resize(M);
for(i=0; i<M; i++) orgnum[i]=i+1;
int max=0;K=kaijyo(M);
for(k=0;k<K;k++){
memcpy(&num[0],&orgnum[0],M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
i=sanowa(jretu);
if(max<i)max=i;
}
printf("M=%d max=%d\n",M,max);
}}

943 :930:2008/10/29(水) 21:42:17
>>935-936
ありがとうございました

944 :デフォルトの名無しさん:2008/10/29(水) 21:42:45
>>939
func(cell1)で次と前に新しいのを挿入する。
それぞれ先頭が帰ってくるが、こういうのでいいんだろうか。

struct cell *insert_next(struct cell *target)
{
struct cell *c1;
c1=(struct cell *) calloc(1, sizeof(struct cell));
c1->next=target->next;
target->next=c1;

return target;
}

struct cell *insert_prev(struct cell *target)
{
struct cell *c1;
c1=(struct cell *) calloc(1, sizeof(struct cell));
c1->next=target;

return c1;
}

945 :デフォルトの名無しさん:2008/10/29(水) 21:46:33
>>775です。

さっぱりわからないので少しだけでもお願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

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

946 :デフォルトの名無しさん:2008/10/29(水) 21:47:57
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;

unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;}
void retuprt(vector<unsigned char> &x){printf("( ");for(int n=0;n<x.size();n++)printf("%d ",x[n]);printf(")");}
unsigned int sanowa(vector<unsigned char> &x){unsigned int s=0,n; for(n=0;n<x.size()-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];return s;}

main(){
unsigned int M,K;
unsigned int i,j,k;
vector<unsigned char> orgnum,num,jretu,maxretu;
for(M=2; M<20; M++) {
orgnum.resize(M);num.resize(M);jretu.resize(M);maxretu.resize(M);
for(i=0; i<M; i++) orgnum[i]=i+1;
int max=0;K=kaijyo(M);
for(k=0;k<K;k++){
memcpy(&num[0],&orgnum[0],M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
i=sanowa(jretu);
if(max<i){max=i;memcpy(&maxretu[0],&jretu[0],M);}
}
printf("\nM=%d max=%d ",M,max); retuprt(maxretu);
}}

947 :デフォルトの名無しさん:2008/10/29(水) 21:49:43
>>943

>>935は間違えているので、このように変更するように
x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];

948 :775 ◆00BY157eo6 :2008/10/29(水) 22:06:50
>>775です。

さっぱりわからないので少しだけでもお願いします。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_auxに含まれる補助関数を使ってください。

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

トリップつけました。

949 :デフォルトの名無しさん:2008/10/29(水) 22:08:19
>>929
ありがとうございました

950 :デフォルトの名無しさん:2008/10/29(水) 22:09:28
>>948
まずはテキストでうp

951 :デフォルトの名無しさん:2008/10/29(水) 22:10:10
>>944
ありがとう。そのinsert_nextとprevとfunc(cell1)を>>939のどこに入れたらいいんでしょうか?


952 :775 ◆00BY157eo6 :2008/10/29(水) 22:17:02
>>950
テキストでファイル内容をうpしました。
ただ、できれば直接ファイルを参照して欲しいのですが…

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイル(内容は)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7890.txt
を参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_aux(内容は)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7889.txt
に含まれる補助関数を使ってください。

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

953 :デフォルトの名無しさん:2008/10/29(水) 22:34:57
>>952
もう一度行列を復習してから書き込んでくれ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7890.txt
の行列って正方行列じゃないだろ

954 :775 ◆00BY157eo6 :2008/10/29(水) 22:42:52
>>953
あ、そうですね…

すいませんでした
一度ひっこみます

955 :775 ◆00BY157eo6 :2008/10/29(水) 22:50:53
修正しました。

[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
のmatrix2.datファイル(内容は下のtxtにまとめました)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7892.txt

を参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。

AX=I(Iは単位行列)となることをしめしてください、

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7868.zip
に含まれるmat_aux(内容は)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7889.txt
に含まれる補助関数を使ってください。

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

956 :デフォルトの名無しさん:2008/10/30(木) 00:08:44
>>930
面白い問題なので俺もやってみた。コマンドライン引数で要素数指定。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7894.txt

N=10 Max=49( 1152件) time 0:00.62
N=11 Max=59(11520件) time 0:06.03
N=12 Max=71(28800件) time 1:13.19
N=13 おわらねぇ……てか落ちた!

CPU Q6600 2.4GHz
OS Win Vista Ulti 32bit


957 :デフォルトの名無しさん:2008/10/30(木) 00:11:19
なんか atexit する場所がへんだった。

958 :デフォルトの名無しさん:2008/10/30(木) 00:40:43
N=2n+1のときの解はたぶん、

n+2, n, 2n+1, n-1, 2n, n-2, 2n-1, n-3,…,n+3, 1, n+1
だな。
N=2nのときも似たようなもん。証明は知らない。

959 :デフォルトの名無しさん:2008/10/30(木) 00:44:30
N=2n+3とすると
n+3, n+1, N, n, N-1, n-1, N-2, n-2,…,n+4, 1, n+2
となり簡明か

960 :デフォルトの名無しさん:2008/10/30(木) 01:01:09
N=2nのときmaxは、2*n*n-1
N=2n+1のときmaxは、2*n*n+2n-1
だな。証明は知らない。

961 :デフォルトの名無しさん:2008/10/30(木) 01:36:04
>>930
面白い問題なのでオレも考えてみた。
で、解くためのアルゴリズムを見つけた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7895.txt
是非とも等角フォントで。

差の表を用いて考えれば
全部の数列の差を試さなくてすむし、一発で出来る

962 :930:2008/10/30(木) 01:44:42
>>961
絵はどうでもいいからCで書けよカス

963 :デフォルトの名無しさん:2008/10/30(木) 01:56:47
>>962
偽者だというのは分かるが、お前がキモイ・・・

964 :デフォルトの名無しさん:2008/10/30(木) 02:31:32
>>961
ほへえ。
で、カードの並びはそこからなんとかわかるもんなのかな。むりかな。

965 :デフォルトの名無しさん:2008/10/30(木) 02:42:54
>>964
分かる。
マークされたところ同士を結んでいけばいい。

n = 7なら
7-1, 6-1, 7-2, 5-2, 6-3, 4-3
がその場所だから、
この通りに結べばいい。

966 :デフォルトの名無しさん:2008/10/30(木) 02:46:46
過不足無く選べていて、最大になっていることは?

967 :デフォルトの名無しさん:2008/10/30(木) 02:47:33
>>964
もっと正確には、
下の一番端のところから
碁石広いのアルゴリズムで辿っていけば
並びかたが分かる。

碁石広いについてはココあたりを参考に
ttp://www.torito.jp/puzzles/111.shtml

968 :デフォルトの名無しさん:2008/10/30(木) 03:29:37
>>965
意味が分からないorz

969 :デフォルトの名無しさん:2008/10/30(木) 03:37:03
srand(0)とsrand(1)って同じなのですか?
forで種を0から9まで変えて乱数を生成しているのですが、
0と1の結果が同じになってしまいます。
これに関するドキュメントはどこかにないでしょうか?


970 :デフォルトの名無しさん:2008/10/30(木) 03:51:36
うちでは違うので環境を書いてください

971 :デフォルトの名無しさん:2008/10/30(木) 04:03:10
とつげき東北のハードウェア乱数生成ルーチンを種にすれば?

972 :デフォルトの名無しさん:2008/10/30(木) 07:13:41
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): http://uploaders.ddo.jp/upload/1mb/src/1up5036.txt
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名 gcc
 [3.3] 言語: C
[4] 期限: 10月31日 1300時まで
[5] その他の制限: 特になし



973 :デフォルトの名無しさん:2008/10/30(木) 07:25:06
巡回セールスマン問題

974 :デフォルトの名無しさん:2008/10/30(木) 07:50:36 ?PLT(24065)
次スレ立てました
C/C++の宿題を片付けます 117代目
http://pc11.2ch.net/test/read.cgi/tech/1225320579/

975 :デフォルトの名無しさん:2008/10/30(木) 09:27:40
>>972
最初のループでp[n]が未定義値を使ってるみたいなんだが大丈夫なの。

976 :デフォルトの名無しさん:2008/10/30(木) 10:33:22
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):

<1>
以下のようなプログラムを作成しなさい.

整数aと整数bと整数cを受け取り,三つの合計を返す関数を作り,この関数を使って手入力された3つ
の整数の合計を表示するプログラムを作成しなさい.関数名は任意,return型はint,第1〜3引数型
はintとする.

実行例
$ ./a
? 1
? 3
? 6
10

<2>
以下のようなプログラムを作成しなさい.

文字列を反転する関数 void reverse(char a[]) を作る。
mainでchar str[]="abcd"; を宣言し、reverse(str);を実行後、
strが"dcba"になっていることを確かめよ。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名 Cygwin
 [3.3] 言語:C
[4] 期限: 10月31日 17時まで
[5] その他の制限: まだまだ序の口のほうです。

お手数をおかけしますが、どうか宜しくお願いします。

977 :デフォルトの名無しさん:2008/10/30(木) 13:23:46
1.
#include <stdio.h>
int sum(int a, int b, int c) { return a + b + c; }
int main() {
int a[3], i;
for (i = 0; i < 3; ++i) {
printf("? ");
scanf("%d", &a[i]);
}
printf("%d\n", sum(a[0], a[1], a [2]));
return 0;
}
2.
#include <stdio.h>
#include <string.h>
void reverse(char *a) {
int len = strlen(a), i;
char tmp;
for (i = 0; i < len / 2; ++i) {
tmp = a[i];
a[i] = a[len - 1 - i];
a[len - 1 - i] = tmp;
}
}
int main() {
char str [] = "abcd";
printf("%s\n", str);
reverse(str);
printf("%s\n", str);
return 0;
}

978 :デフォルトの名無しさん:2008/10/30(木) 14:05:10
問題文>>685で、>>686のプログラムを作ってもらったのですが、一元配列の場合も作ってほしいです。

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

979 :デフォルトの名無しさん:2008/10/30(木) 14:11:11
宿題でコンパイラ製作をだされました。ちんこちんこ。

980 :685:2008/10/30(木) 17:10:00
とっとと教えんかいブタ共

981 :デフォルトの名無しさん:2008/10/30(木) 17:59:55
C言語
問題文
入力された式を積分するプログラム


お願いします

982 :デフォルトの名無しさん:2008/10/30(木) 19:12:28
gettimeofday()がwindowsで使えず
このままでは宿題ができません。
解決法お願いします。

983 :デフォルトの名無しさん:2008/10/30(木) 19:18:21
>>981
多項式の微積分ならかんたんだが。 

984 :デフォルトの名無しさん:2008/10/30(木) 19:31:58
>>983
あらかじめ文字を決めておいて、係数と指数だけ入力させる形が良いんでしょうか?

985 :685:2008/10/30(木) 19:32:02
はやくしてくれ時間がない

986 :デフォルトの名無しさん:2008/10/30(木) 20:08:50
>>980 >>985
反応するのもなんだが、偽者だってバレバレで鬱陶しい。通報済みだから
少し待ってろ。

987 :デフォルトの名無しさん:2008/10/30(木) 20:10:38
>>986
ありがとうございます
待ってます

988 :685:2008/10/30(木) 20:50:35
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
  ★下記の仕様を満たすプログラムをC言語で作成しなさい
  【仕様】 表計算ソフト簡易プログラム
▽ Excelのように2次元配列で10人分の3教科の素点表示する。なお、素点は100点満点でランダムに作るものとする。
  ▽ その右の列に個人別の3教科の合計・平均・順位(合計点の高い学生から順に)を表示する。なお平均は少数第1位までの表示とする。
  ▽ 10人分の得点データの下の行に、合計・平均・最高点・最低点の行を作り、各行についてそれぞれ求めて表示する。
(表示例:空欄にはそれぞれ計算結果が入ることになる)

番号| 国語 数学 英語    |合計    |平均     |順位

1 |  75   35   40     |       |       |
    
2 |  69  75   82       |       |       |
        (中    略)
10 |   57  48   36      |       |       |
---------------------------------------------------
合計 |

平均 |

最高 |

最低 |
[3] 環境
 [3.1] OS: Windows xp
 [3.2] コンパイラ名とバージョン: 分かりません
 [3.3] 言語: C言語
[4] 期限: 来週中ぐらい
[5] その他の制限: 繰り返し、条件処理、配列を勉強しました。これらを使ってお願いします。
         初心者なので初心者でも分かるようなプログラムをお願いします。

989 :988:2008/10/30(木) 20:53:35
おそくなりました。
一元配列でお願いします。

990 :デフォルトの名無しさん:2008/10/30(木) 21:35:40
>> http://pc11.2ch.net/test/read.cgi/tech/1225320579/5
#include<stdio.h>

#define DATA_NUM_MAX 100

int main(void){
int data[DATA_NUM_MAX], data_num=0;
int i, index_max, index_min;

printf("何個の整数値を入力しますか:");
scanf("%d", &data_num);
if(data_num<=0) return 1;
if(data_num>DATA_NUM_MAX) data_num=DATA_NUM_MAX;

for(i=0;i<data_num;i++) scanf("%d", &data[i]);

index_max=index_min=0;
for(i=1;i<data_num;i++){
if(data[i]>data[index_max]) index_max=i;
if(data[i]<data[index_min]) index_min=i;
}
printf("一番大きい値は配列data[%d]に格納されている%d です。\n", index_max, data[index_max]);
printf("一番小さい値は配列data[%d]に格納されている%d です。\n", index_min, data[index_min]);

return 0;
}

991 :デフォルトの名無しさん:2008/10/30(木) 21:44:15
>> http://pc11.2ch.net/test/read.cgi/tech/1225320579/7
#include<stdio.h>

#define DATA_NUM_MAX 100

int main(void){
int data[DATA_NUM_MAX], data_num=0;
int i, j, temp;

printf("何個の整数値を入力しますか:");
scanf("%d", &data_num);
if(data_num<=0) return 1;
if(data_num>DATA_NUM_MAX) data_num=DATA_NUM_MAX;

for(i=0;i<data_num;i++) scanf("%d", &data[i]);

for(i=0;i<data_num;i++){
for(j=0;j+1<data_num-i;j++){
if(data[j]>data[j+1]){
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
printf("これらを小さい順に並びかえると\n");
for(i=0;i<data_num;i++) printf("%d ", data[i]);
printf("です。\n");

return 0;
}


992 :デフォルトの名無しさん:2008/10/30(木) 21:53:54
>>981
double sekibun(double (*f)(double), double x1, double x2, long div){
double delta, result=0.0;
long i;

if(x1>x2){double temp;temp=x1;x1=x2;x2=temp;}
delta=(x2-x1)/div;
for(i=0;i<div;i++) result+=f(x1+i*delta);
result*=delta;
return result;
}

993 :デフォルトの名無しさん:2008/10/30(木) 21:57:15
>>911
int gcd(int a, int b){
int c;
while((c=a%b)) a=b,b=c;
return b;
}

994 :デフォルトの名無しさん:2008/10/31(金) 00:47:22
[1] 授業単元: 信号処理
[2] 問題文(含コード&リンク):
>>832の問題の続き 
@ 前回完成させたのプログラムを変更させなさい。
プログラム→http://kissho6.xii.jp/14/src/1yon14691.c.html
        DLKey:foo

 data[cnt] < ave以下のとき
 関数powを使って、分散の計算をして標準偏差を求めるように変更させなさい。


[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年10月31日午後1時
[5] その他の制限: 特になし

よろしくお願いします。

995 :デフォルトの名無しさん:2008/10/31(金) 00:56:38
>>994
なんのつもりだ?

996 :デフォルトの名無しさん:2008/10/31(金) 09:20:09
嫌がらせとしか思えない・・・

997 :デフォルトの名無しさん:2008/10/31(金) 16:35:00
>>995 >>956
すみません。嫌がらせではなくて、、
先生が口頭で課題だすもんで、次の授業では課題をしょっちゅう訂正して
だしてくるもんで。。。困ってます。
ちゃんと書けばよかったのですが・・・ごめんなさい。



998 :デフォルトの名無しさん:2008/10/31(金) 18:58:53


999 :デフォルトの名無しさん:2008/10/31(金) 19:24:43
>>997

いやそういう意味じゃなくて
テンプレにロダがあるんだし
それにDLするのにパス付けるのは
めんどいと思う

つまり
専用ローダーに上げて パスをつけない
ってすれば?

課題追加はプログラム系だったら良くあることだし
ここの住人が>>997のことを疑問に思ってるのは
ロダとパスのことだろ

1000 :デフォルトの名無しさん:2008/10/31(金) 19:29:35
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

379 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)