プログラマー軍団がC/C++の宿題を解決します 34代目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたのお悩み、ご相談下さい。
史上最強のプログラマー軍団の見解は?
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10
2デフォルトの名無しさん:04/11/15 23:59:00
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
28代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html

3デフォルトの名無しさん:04/11/15 23:59:40
4デフォルトの名無しさん:04/11/16 00:01:47
4get
5デフォルトの名無しさん:04/11/16 00:04:57
【注意点追加】
・複雑なAAはスレが荒れたり問題を埋もれさせてしまう原因に
 なりますので、使用を控えてください。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
6デフォルトの名無しさん:04/11/16 00:13:12
>>967
ほい。
#include <stdio.h>
int main(void)
{
int i,j,dat,histo[11];

for (i=0;i<=10;i++)
histo[i]=0;

printf("input point\n");
while (scanf("%d",&dat)!=EOF)
histo[dat/10]++;

for(i=0;i<=10;i++) {
printf("%3d :%3d ",i*10,histo[i]);
for(j=0;j<histo[i];j++)
putchar('*');
putchar('\n');
}
return 0;
}

/*あるいは、
while(histo[i]-- > 0) putchar('*');
とか。*/
7デフォルトの名無しさん:04/11/16 00:16:47
>>1以下、乙!
8デフォルトの名無しさん:04/11/16 01:28:51
スレ違いかもしれないんですけど
C言語からフローチャートを生成するソフトが
あると聞いたのですが誰かご存知の方いらっしゃいませんか?
9デフォルトの名無しさん:04/11/16 02:05:15
>>8 せめて前スレ埋まるまで待ってよ、向こうで答えてんだからさ。
10デフォルトの名無しさん:04/11/16 02:14:57
>>9
すみません。
では前スレへ逝ってきますm(_ _)m
11デフォルトの名無しさん:04/11/16 02:18:45
>>10
もう1000だから来なくていい
12デフォルトの名無しさん:04/11/16 02:26:42
>>11
いつの間にかもう1000になってましたね。
では改めてよろしくお願いします。
13デフォルトの名無しさん:04/11/16 02:29:52
え?もう教えたじゃん。
14デフォルトの名無しさん:04/11/16 02:45:38
>>13
「手続き型のプログラムって局所的にはシーケンスだけど
 大域的にはツリーやグラフじゃん?
 フローチャートってあんま役に立たなくね?」
って事ですか?
15デフォルトの名無しさん:04/11/16 02:49:22
>>8
手で書いた方が良いよ。
レポートにたえられるようなフローチャートは吐かない。
16デフォルトの名無しさん:04/11/16 02:51:09
あ?ソフトそのものを紹介してやったはずだが。
17デフォルトの名無しさん:04/11/16 03:12:51
>>16
ありました!!
どうもありがとうございました。
まだ使い方がよくわからないですが
今から頑張ってみます。
わざわざありがとうございました。
18デフォルトの名無しさん:04/11/16 03:22:16
>>15
そうなんですか!?
それは残念ですたい…
19デフォルトの名無しさん:04/11/16 03:27:19
Cを始めようとして、LSICの試食版をダウンロードして
環境設定したのですが、いざコマンドプロンプトに「lcc」と
入力すると、「C:\WINDOUS\SYSTEM32\AUTOEXEC.NT.システムファイルは
MS-DOS及びMicrosoft Windowsアプリケーションを実行するのに適して
いません。」と表示されてしまい、一歩も前に進めません。
解決方法について検索してみたんですが、こんな初歩のトラブルについて
説明してくれているようなページはありませんでした。
解決方法を教えてください。
宜しくお願いします。m(_ _)m
20デフォルトの名無しさん:04/11/16 03:29:12
>>19
LSI-C使うのはやめとけ。あれは過去の遺産だ。
敢えて言うなら、ペン習字習うのに墨と硯を持ち出すようなもんだ。
21デフォルトの名無しさん:04/11/16 03:32:12
入門ならMinGW Developer Studioとかよさそうじゃない?
22デフォルトの名無しさん:04/11/16 03:36:23
マジですか?んじゃやめます。システム復元で元に戻します。
XP使ってるんですけど、コンパイラってもともと入ってるもんなのですか?
買ったのは二年前なんですが…。
一応、「cl」を入力してやってみたりもしたんですが、
それでも動きませんでした。(ノ_−。)
もう五時間くらいやって死にそうです。
23デフォルトの名無しさん:04/11/16 03:44:56
>>22
XPには元から入ってない。
cl.exeは.NET Framework SDKとかダウンロードすると入ってる。
24デフォルトの名無しさん:04/11/16 03:51:44
どうもです。早速ディベロッパースタジオとNETフレームワークっていうの
ダウンロードしてみました。あっ、正確には後者はダウンロードしてる途中です。
っていうか、なんかさっきから何回も書き込んでるのにエラーって出て
書き込めない…
25デフォルトの名無しさん:04/11/16 03:52:08
あ、書き込めました。
26デフォルトの名無しさん:04/11/16 04:21:43
NET Framework SDKをダウンロードしました。
セットアップをする際にIISを先に取得しろ、って言われたんですが、
これをどこからダウンロードしたらいいのやら。
もう、目がちかちかする。
こんなにパソコンと格闘するの初めてですわ。
すいません、IISのダウンロードの場所を知ってたら教えてください。
宜しくお願いします。
27デフォルトの名無しさん:04/11/16 05:00:32
もちっと落ち着こうぜよ
ドトネトは使ってないから良く知らないが
学生なら時間はあるんだし自分で調べて探した方が得るものが多いと思うぞ

…そういやスレ違いだ罠
28デフォルトの名無しさん:04/11/16 07:12:34
コメントしようと思ったら、言いたい事ほとんど全部 >>27 が言ってくれていた。
29デフォルトの名無しさん:04/11/16 08:11:29
LSI-Cってたびたび出てくるな。
30デフォルトの名無しさん:04/11/16 08:26:57
CPadからの流れだと思われ
31デフォルトの名無しさん:04/11/16 09:24:12
宿題まだー?ちんちん
32法学部生:04/11/16 12:30:43
26です。落ち着きます。
確かに、もっと自分で調べてみたほうがためになりそうなので、
頑張ってみようと思います。なんか昨日は、わけもわからず一人で
テンパってました。どうもありがとうございました。m(__)m
もっとレベルアップしてからやってくるので、そのときまた
宜しくお願いします。では。ノシ
3333代目スレ−(778):04/11/16 13:31:56
779さん。ありガット!
参考になりますた。
遅れてごめん。
34デフォルトの名無しさん:04/11/16 17:00:38
明日までに認識用文法( http://julius.sourceforge.jp/grammar.html )を
作成しなければいけないのですが、どうしても最初の一歩で躓いてしまっています。

test.voca test.grammarを作成した後で、mkdfa.plを使うことで
自動的にtest.dfa, test.term, test.dictが作成されるはずなのですが
実行時に下記エラーが表示されます。

'/mkfa'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。

mkdfa.plと同じディレクトリにmkfa.exeは存在しているのですが
どうしてもこのエラーが出ます。どなたかアドバイス頂ければ助かります。
宜しくお願いします〜〜(;;
35デフォルトの名無しさん:04/11/16 17:04:18
引数として受け取った文字列を逆順にした文字列に変換する関数を作成して、
キーボードから入力した文字列を逆順に表示するプログラムを教えてください。
C言語です。
36デフォルトの名無しさん:04/11/16 17:05:27
/mkfaって出てんだから、/削ればいいんじゃないの?
37デフォルトの名無しさん:04/11/16 17:10:53
>>35
reverse(char *abc) {
int len = strlen(abc);
char *rev = new char[len+1];
for(int ii = 0; ii < len; ii++) rev[ii] = abc[len-ii];
rev[len] = 0;
printf("%s\n", rev);
delete[] rev;
}

コンパイルテストもしてないから、ミスってたらスマン。
38デフォルトの名無しさん:04/11/16 17:11:53
>>35
たしか前スレに出てたな、それ。
39デフォルトの名無しさん:04/11/16 17:15:15
>>36
ありがとうございました。既存のプログラムでマニュアル通りに動作させて
エラーがあると思わなかったのでplファイルを見てませんでしたが、
ソースを変更したら動きました。

本当に有難うございます。
40デフォルトの名無しさん:04/11/16 17:21:12
>>39
オメ。しかしこの程度を解決できないのはちょっと問題。
せっかくエラーが出てんだから、良く嫁と言いたい。
41デフォルトの名無しさん:04/11/16 18:28:00
整数を引数としてうけとり、その数値を三桁ごとにコンマを入れて表示する関数
を書いてください。

1000000 だと 1,000,000 こう表示したいわけです。お願いします。
42デフォルトの名無しさん:04/11/16 18:49:06
>>41
void f(int n)
{
    std::locale old(std::cout.imbue(std::locale("")));
    std::cout << n;
    std::cout.imbue(old);
}
43デフォルトの名無しさん:04/11/16 21:19:33
>>42
それだと2バイト文字にならねぇべさ。

>>41
つーか、2バイト文字で出力せなあかんの?
44デフォルトの名無しさん:04/11/16 21:25:14
>整数を引数としてうけとり
45デフォルトの名無しさん:04/11/16 21:53:46
3名(A,B,C)の4科目(英、国、数、物)の得点を入力し
学生ごと、科目ごとの平均(小数点2位まで),合計を求め
下のような表みたいに(配列)表示させるプログラム
    数、国、数、物  合計 平均
  A
  B
  C
合計
平均

全くわかりません、プログラマーの方お願いします。
46デフォルトの名無しさん:04/11/16 21:56:40
>>45
ちなみにC言語です
47デフォルトの名無しさん:04/11/16 22:34:56
4847:04/11/16 22:35:35
>>46
偶々気が向いた。細かいところは好きにして。
49デフォルトの名無しさん:04/11/16 22:41:56
>47の作業効率は約200行/時間であることが判明しました。
50デフォルトの名無しさん:04/11/16 22:46:04
>>41

#define BASE 1000

void disp(int n)
{
int d = 1;

if (n < 0) {
printf("-");
n = -n;
}

while (n / BASE >= d) { d *= BASE; }

printf("%d", n / d);
n %= d;
d /= BASE;

while (d) {
printf(",%03d", n / d);
n %= d;
d /= BASE;
}

printf("\n");
}
51デフォルトの名無しさん:04/11/16 22:54:26
>>50
改行するって書いてあった?
52デフォルトの名無しさん:04/11/16 23:08:12
stdbool.h なんてあるのか。始めてみた。
53デフォルトの名無しさん:04/11/16 23:41:28
メイン関数で配列a[0]からa[5]に数字をつめて関数に渡す。
関数ではその平均値を計算してメインに戻す。
(実引数は配列名と要素数とする)

っていう問題がとけません。数字を詰める事はできたんですけど、
関数が???
お願いします。
54デフォルトの名無しさん:04/11/16 23:41:49
大阪(西梅田)、新宿(JR駅前)のそれぞれ一等地に
拠点を構えるソフトウェア開発会社
グリーンシステムを応援するHPです。
http://www.geocities.jp/grs_hp/

こちらのスレの住人のかたがたのようなレベルの高いかたに
ピッタリだと思いますので、是非一度ご覧下さい。

55デフォルトの名無しさん:04/11/16 23:43:20
56デフォルトの名無しさん:04/11/16 23:49:14
>>53
平均なんだから実数なんだろうと思ったのでそうした。

#include <stddef.h>
double avg(double *a, size_t n)
{
    double sum = 0.0;
    while (n--) sum += a[n];
    return sum / n;
}
57デフォルトの名無しさん:04/11/16 23:51:44
おいおい、その関数常に0で除算するじゃん
5856:04/11/16 23:52:12
間違い

#include <stddef.h>
double avg(double *a, size_t n)
{
    size_t i = n;
    double sum = 0.0;
    while (i--) sum += a[i];
    return sum / n;
}
59デフォルトの名無しさん:04/11/16 23:52:18
>>53
#include <iostream>

typedef int Ta;
typedef double Tr;
static Tr calcAverage(Ta * array, unsigned num);

int main()
{
Ta array[] = {1, 3, 4, 6, 8, 10, 12,};
Tr average = calcAverage(array, sizeof(array) / sizeof(*array));
std::cout << average << std::endl;
return 0;
}

Tr calcAverage(Ta * array, unsigned num)
{
Ta sum;
for (int ic = 0; ic < num; ++ic) {
sum += array[ic];
}
return (Tr) sum / num;
}
6059:04/11/16 23:54:03
おおう、Ta sum = 0;だぜ。
61デフォルトの名無しさん:04/11/16 23:55:09
double ave(double *tbl, size_t item){ double a=*tbl; int i; for(i=1; i<item; ++i) a+=*(tbl+i); return (item)?(a/item):0; }
62デフォルトの名無しさん:04/11/16 23:59:34
>>61
要素数が0の場合への対応をしてるわりには、要素数0のときでも
配列にアクセスしてるね。まあ、問題はないんだけど。
要素数0のときは素直に先頭でreturnすべきだろうか。
63デフォルトの名無しさん:04/11/17 00:10:51
参考になりました。
ありがとうございました。
64デフォルトの名無しさん:04/11/17 00:11:09
if文の中にfor文って入れられますか?
65デフォルトの名無しさん:04/11/17 00:13:01
>>64
何故試さない
66デフォルトの名無しさん:04/11/17 00:14:25
>>64
入れれる
67デフォルトの名無しさん:04/11/17 00:17:30
>>62
>>58は0のときでも大丈夫みたいだが。
68デフォルトの名無しさん:04/11/17 00:28:51
arigatougozaimasu
69デフォルトの名無しさん:04/11/17 00:31:34
前にもここで教えてもらったんだけど、やっぱ分かんないんで
もう一度おしえてください。
347863000050097003096
347863000100093004095
347863000150092004098
347863000200088003094
347863000250092003096
347863000300061002097
347863000350076003102
347863000400079003103
347863000450063002094
こういう数字の羅列の1桁目と2桁目のみを出力させたいです。
ちなみに数字のデータはtxtデータから読み込ませたいです。
70デフォルトの名無しさん:04/11/17 00:33:49
もう百回かんがえろ
71デフォルトの名無しさん:04/11/17 00:41:36
「ちなみに」って…

fgets()してからsscanf()。
72デフォルトの名無しさん:04/11/17 00:43:14
マージソートを作成するプログラムを教えてください。
73デフォルトの名無しさん:04/11/17 01:08:33
>>69
#include <stdio.h>

int main()
{
    FILE *fp;
    int a;
    int line = 21; // 行数
    char ch[10];
    if(NULL == (fp = fopen("test.txt", "rb"))) return 0;

    while(fgets(ch,3,fp)){
        sscanf(ch,"%d",&a);
        printf("%d\n",a);
        fseek(fp, line, SEEK_CUR);
    }

    return 0;
}
とりあえず動く
74デフォルトの名無しさん:04/11/17 01:16:44
>>70 >>71
とりあえず考えたプログラム載せるんで訂正してください。
#include<stdio.h>
#define MAX 3000
void main(void){
char h[MAX][30];
int i,j,s;
FILE *data,*kekka;
if((data=fopen("data.txt","r"))==NULL){
printf("ファイルオープン失敗。(data.txtがないのでは?)\n");
goto END2;
}
if((kekka=fopen("kekka.txt","w"))==NULL){
printf("ファイル書き込み失敗。(kekka.txtを開いてませんか?)\n");
goto END1;
}
printf("データ数は幾つありますか?(最大3000個まで)\n");
scanf("%d",&s);
if(s>3001){
printf("データ数の上限を超えています。\n");
goto END1;
}
for(i=0;i<s+1;i++){
for(j=18;j<21;j++){
fprintf(kekka,",%c",h[i][j]);
}
}
fprintf(kekka,"\n");
END1:fclose(kekka);
END2:fclose(data);
}
7573:04/11/17 01:20:23
fcloseしてなかった

>>72
マージソートでまず検索しろよ…
>>74
goto使いすぎ…
76デフォルトの名無しさん:04/11/17 01:21:02
>>73
突っ込みどころ満載だなぁ。間違いもあるし。
77デフォルトの名無しさん:04/11/17 01:23:15
>>74
>73より酷い。つーか、少しは指摘されたことに頭使おうや。
78デフォルトの名無しさん:04/11/17 01:23:35
スマソ
せっかくだから教えてください
79デフォルトの名無しさん:04/11/17 01:37:13
>>73
しも1桁と2桁なんですよ。あとしたから7桁、8桁、9桁、10桁のデータ
も出力したいんです。
80デフォルトの名無しさん:04/11/17 01:41:47
いきなり仕様がかわっとるぞ
8173:04/11/17 01:43:13
漏れが悪かったよ…
下からって言ってよ…
82デフォルトの名無しさん:04/11/17 01:44:29
>>73
すみません・・・
83デフォルトの名無しさん:04/11/17 01:54:04
ファイルの後ろから1byteづつ読み込んで改行コード数えればいいだろ
8462:04/11/17 02:05:28
>>67
それは俺が書いたんだが、要素数0なら例外ですw
8573:04/11/17 02:27:29
>>79
#include <stdio.h>

#define MAX 100
#define LINE 21

int main()
{
    FILE *fp;
    int a;
    int keta = 4; //ketaは表示させたい桁数
    int sk = LINE - keta;
    char ch[MAX];
    if(NULL == (fp = fopen("test.txt", "rb"))) return 0;
    fseek(fp, sk, SEEK_SET);

    while(fgets(ch,MAX,fp)){
        sscanf(ch,"%d",&a);
        printf("%d\n",a);
        fseek(fp, sk, SEEK_CUR);
    }

    fclose(fp);

    return 0;
}
とりあえず動くだけでいいですか
もうわからんす…
86デフォルトの名無しさん:04/11/17 02:29:24
宿題をお願いしますm(_ _)m 言語はCかC++。

「abc-0000_IMG 〜 abc-9999_IMG を1行ずつ出力するプログラムを書け。」

例:
abc-0000_IMG
abc-0001_IMG
abc-0002_IMG 
という具合に10000行をテキストに出力して保存して欲しいのです。
テキスト名は任意(適当)に付けてください。お願いします。m(_ _)m

87デフォルトの名無しさん:04/11/17 02:31:31
>>86
あまりレベルの低い事を聞いちゃいかんよ
88デフォルトの名無しさん:04/11/17 02:31:38
>>86
abc-0000_IMG
abc-0001_IMG
...
abc-000f_IMG
abc_0010_IMG
...
abc_9999_IMG
ですね。
89デフォルトの名無しさん:04/11/17 02:33:10
>>87
すいません。レベル低いです;
>>88
10進数でお願いします。
90デフォルトの名無しさん:04/11/17 02:38:20
>>86
#include <stdio.h>
int main(void) {
FILE *fp = fopen("hoge.txt", "wt");
if (!fp) return 3;
fputs("abc-0000_IMG\n", fp);
fputs("abc-0001_IMG\n", fp);
fputs("abc-0002_IMG\n", fp);
     :
fputs("abc-9999_IMG\n", fp);
return 0;
}
91デフォルトの名無しさん:04/11/17 02:40:34
#include <stdio.h>
int main(void) {
FILE *fp = fopen("hoge.txt", "wt");
int i;
if (!fp) return 3; /* error */
for (i = 0; i < 10000; i++) {
fprintf(fp, "abc-%04d_IMG\n", i);
}
fclose(fp);
return 0;
}
9286:04/11/17 02:42:54
>>90>>91
ありがとうございます。m(_ _)m
91さんの方を頂きます。90さんすいません。
夜遅くにどうもすいません。助かります。
9369 79:04/11/17 02:57:58
>>73 >>85さんありがとうございます。でも答え出てこないので、
だれか助けてください。
94デフォルトの名無しさん:04/11/17 03:05:22
>>93
仕様がよくわからんが、
・数字列は、必ず21桁
・出力するのは、18〜21桁きめうち
でいいの?

使い方は、コマンドプロンプトで、
xxx.exe <入力ファイル名 >出力ファイル名

#include<stdio.h>
void main()
{
char s[30];
while(gets(s) != 0){
for(int i = 18; i < 21; i++){
printf("%c,", s[i]);
}
}
printf("\n");
}
95デフォルトの名無しさん:04/11/17 03:19:27
>>93
下2桁と下7~10桁を出力するかも

#include <stdio.h>
#define N 23
int main(int argc, char* argv[])
{
FILE *fp;
char str[N];
int a,b,t;

fp = fopen(argv[1], "r");
while (fgets(str, N, fp)) {
sscanf(str, "%11d%4d%4d%2d",&t,&a,&t,&b);
printf("%04d\t%02d\n",a,b);
}
fclose(fp);

return 0;
}

エラーチェックはシラネ
96デフォルトの名無しさん:04/11/17 03:26:14
>>72
「マージソートを作成する」って何だよ。
merge_sort(a, a + sizeof(a) / sizeof(a[0]));でdoubleの配列aをマージソート。
newとかdeleteとか使ってるから、もしCがよければ自分で書き換えろ。
そのくらい自分でやってもいいだろ。

void merge_sort(double* first, double* last)
{
  if (first == last) return;
  if (first == last - 1) return;
  double* mid = first + (last - first) / 2;
  merge_sort(first, mid);
  merge_sort(mid, last);
  int v1_n = mid - first, v2_n = last - mid;
  double *v1 = new double[v1_n], *v2 = new double[v2_n];
  for (int i = 0; i < v1_n; ++i) *(v1 + i) = *(first + i);
  for (int i = 0; i < v2_n; ++i) *(v2 + i) = *(mid + i);
  int v1_index = 0, v2_index = 0;
  int i = 0;
  for (; v1_index < v1_n && v2_index < v2_n; ++i)
  {
    if (*(v1 + v1_index) < *(v2 + v2_index))
      *(first + i) = *(v1 + v1_index++);
    else
      *(first + i) = *(v2 + v2_index++);
  }
  for (; v1_index < v1_n; ++i) *(first + i) = *(v1 + v1_index++);
  for (; v2_index < v2_n; ++i) *(first + i) = *(v2 + v2_index++);
  delete[] v1;
  delete[] v2;
}
97デフォルトの名無しさん:04/11/17 03:59:59
>>95
fgets(str, N, fp);

fgets(str, sizeof(str), fp);

sscanf(str, "%11d%4d%4d%2d", &t, &a, &t, &b);

sscanf(str, "%*11d%4d%*4d%2d", &a, &b);
98デフォルトの名無しさん:04/11/17 04:03:04
>>97
修正thx
99デフォルトの名無しさん:04/11/17 09:41:14
CLAPAC以外で行列対角化のおすすめライブラリおしえてください
100デフォルトの名無しさん:04/11/17 09:46:13
>>99
CLAPACK
10199:04/11/17 09:53:40
C++のものでも構いません。
とにかく、LAPACK以外でおねがいします。
102デフォルトの名無しさん:04/11/17 10:14:19
>>99
CLAPACK
103デフォルトの名無しさん:04/11/17 10:18:07
>>99
NEWMAT
104デフォルトの名無しさん:04/11/17 17:50:37
Visual C++
50までの素数を見つけるプログラムで、以下のヒントが出ました。
#include <stdio.h>
#define N 51
void main()
{
変数宣言
for (i=2; i<=N-1; i++) {
a[i] = i;
}
max_prime = 2;
while (max_prime*max_prime <= N-1) {
for (j=max_prime+1; j<=N-1; j++) {
a[j]がmax_primeで割り切れるなら、a[j]にゼロを代入する。
}
k = max_prime + 1;
max_primeより大きく、ゼロでない最小のa[k](次の素数である)を見つける。
みつかったa[k]をmax_primeに代入する。
}
ゼロでないa[m]をすべて出力(mは2からN-1まで)

}
105デフォルトの名無しさん:04/11/17 17:50:44
    *
   ***
  *****
 *******
*********

C言語です。↑を表示するプログラムを作成しなさい。
よろしくお願いします。初心者なんでなるべくわかりやすいプログラムでお願いします。
106104:04/11/17 17:51:44
自分は
#include <stdio.h>
#define N 51
void main()
{
int a[N];
int i,j,k,m;
int max_prime;
for (i=2; i<=N-1; i++) {
a[i] = i;
}
max_prime = 2;
while (max_prime*max_prime <= N-1) {
for (j=max_prime+1; j<=N-1; j++) {
while (a[j]%max_prime)
a[j] = 0;
}
k = max_prime + 1;
while((a[k] !=0) && (a[k]> max_prime)) {
k++;

}max_prime = a[k];
}
for (m = 2; m <= N-1; m++) {
printf("a[%d]",m);
}

}
とやったのですがうまくいきません。
お願いします。
107デフォルトの名無しさん:04/11/17 17:53:08
http://www.google.co.jp/search?hl=ja&q=%E5%88%9D%E5%BF%83%E8%80%85%E3%81%A7%E3%81%99&lr=
検索結果 約 210,000 件中 1 - 10 件目 (1.14 秒)
108デフォルトの名無しさん:04/11/17 18:27:57
>>105
int main()
{
 int i,j;
 for(i=0;i<5;i++)
 {
  for(j=4-i;0<j;j--)printf(" ");
  for(j=0;j<1+i*2;j++)printf("*");
  printf("\n");
 }
 return 0;
}
脳内コンパイルなのでうまくいくかシランネ
10969 79:04/11/17 18:28:28
>>94 >>95
ありがとうございます。
数字列は必ず21桁です。
そのしも1桁と2桁です。あとしたから7桁、8桁、9桁、10桁のデータ
も出力したいです。>>95の方の入力はどういうふうにすればいいんですか?
テキスト入力ではないみたいなんで。

110デフォルトの名無しさん:04/11/17 18:36:46
>>109
俺は95ではないが実行ファイルがhoge.exeで
調べたいファイルがmoge.txtだったらコマンドラインで
hoge moge.txt
と入れればokでつ
111デフォルトの名無しさん:04/11/17 19:04:45
*記号を使って、絵を描くという課題が出ました。
数式を使って書くようにという指示が出ているのですが、
野口秀雄の髪の毛・顔の輪郭を数式で表すのって無理でしょうか?
112デフォルトの名無しさん:04/11/17 19:11:40
>>111
不可能じゃないが、人力では非現実的
113デフォルトの名無しさん:04/11/17 19:16:52
>>112
そういえば、似顔絵書くプログラムとかありませんもんね・・・
せっかく描いたのでお礼にどうぞ。
http://para-site.net/up/data/586.jpg
114デフォルトの名無しさん:04/11/17 19:26:56
>>113
そういう画像を取り込んで*で描画するプログラムなら作れそうだがな
115105:04/11/17 19:30:03
>>108
コンパイルできました。ありがとうございました。
116デフォルトの名無しさん:04/11/17 20:59:47
>>106

#include <stdio.h>
#define N 51
void main()
{
int a[N];
int i,j,k,m;
int max_prime;
for (i=2; i<=N-1; i++) {
a[i] = i;
}
max_prime = 2;
while (max_prime*max_prime <= N-1) {
for (j=max_prime+1; j<=N-1; j++) {
if (!(a[j]%max_prime)) /* 割り切れるなら */
a[j] = 0;
}
k = max_prime + 1;
while((a[k] ==0) || (a[k] <= max_prime)) {
k++;
}
max_prime = a[k];
}
for (m = 2; m <= N-1; m++) {
if (a[m] != 0){
printf("%d\n",a[m]);
}
}
}
117デフォルトの名無しさん:04/11/17 21:01:16
何価括弧悪い怪盗馬っ鹿
118105:04/11/17 21:04:46
#include <stdio.h>

void space_star(int,int);

main()
{
space_stsr(4,1);
space_star(3,3);
space_star(2,5);
space_star(1,7);
space_star(0,9);
}

void space_star(int spaces,int stars)
{
int j,i;
for(j=spaces;j>0;j--){
printf(" ");
}
for(i=stars;i>0;i--){
printf("*");
}
printf("\n");

}

>>105の問題です。関数を使ってみたのですがコンパイルできませんでした。
どこがいけないかわかりません。お願いします。
119デフォルトの名無しさん:04/11/17 21:08:33
main関数で一番最初に呼び出す関数がspace_stsrなのだが、それが原因か?
120105:04/11/17 21:11:17
>>119
ありがとうございます!コンパイルできました!
121デフォルトの名無しさん:04/11/17 21:12:19
>>120
なんだってーーーーーー!
122デフォルトの名無しさん:04/11/17 21:36:40
>>111-112
野口秀雄ってだれだ?
123デフォルトの名無しさん:04/11/17 21:38:04
124デフォルトの名無しさん:04/11/17 21:40:33
>>104 >>106 >>116

for (j=max_prime+1; j<=N-1; j++) {
a[j]が0以外のときだけ、a[j]がmax_primeで割り切れるなら、a[j]にゼロを代入する。
}
125デフォルトの名無しさん:04/11/17 22:04:33
>>123
誘導トンです。
見てきます。
126デフォルトの名無しさん:04/11/17 22:23:22
もう、アウト
べき乗法のプログラムお願いします!!!
明日提出
127デフォルトの名無しさん:04/11/17 22:26:24
pow(2,10) じゃダメなんだよね?
128デフォルトの名無しさん:04/11/17 22:38:17
べき乗を求める関数(整数のみ)
int func(int x, int y)
{
int ret = 1;
while(y > 0){
ret *= x;
y--;
}

return(ret);
}
129デフォルトの名無しさん:04/11/17 22:39:00
>>126
こんな感じだったかな…うろ覚え
#include <stdio.h>
#include <math.h>

double ipow(double a, int b)
{
int n=abs(b);
double r=1;
while (n) {
if (n&1) r *= a;
a *= a;
n >>= 1;
}
return (n>=0 ? r : 1/r);
}

double power(double a, double b)
{
if (b == (int)b) return ipow(a,(int)b);
if (a > 0) return exp(b * log(a));
if (a != 0 || b <= 0) return -1;
return 0;
}

int main()
{
printf("%g\n", power(10, 1.5));
printf("%g\n", power(1.5, 2));
return 0;
}
130デフォルトの名無しさん:04/11/17 22:44:42
素数を判定する関数ができません。
誰か教えてください・・・。
131デフォルトの名無しさん:04/11/17 22:46:06
>>130
どんなふうに判定すればいいですかね?
>>130の考えを教えてください
132デフォルトの名無しさん:04/11/17 22:49:02
ごちゃごちゃ言わずに全部オメーラがやればいいんだよ!
133デフォルトの名無しさん:04/11/17 22:52:14
ほれ!
bool isSosuu(int n)
{
for(int i=1;i<n;i++) {
if(!(i%n)) return false ;
}
return true;
}
134デフォルトの名無しさん:04/11/17 22:52:36
正整数を入力してそれが素数かどうかを判定するプログラムです。
int sosuu(int n)
{
int i;
for( i=2; i<n; i++ ){
if( (n%i) == 0 ) return 0;
}
return 1;
と書いたら間違ってました。
135デフォルトの名無しさん:04/11/17 22:53:14
間違えた。
bool isSosuu(int n)
{
for(int i=2;i<n;i++) {
if(!(n%i)) return false ;
}
return true;
}
136デフォルトの名無しさん:04/11/17 22:55:34
>>130
どうでしょう
#define NMIN 3
#define NMAX 30000
int IsPrime(int n)
{
 int i;
 if(n<NMIN||NMAX<n)return -1;//この範囲の計算はしない
 if(n%2)
  for(i=NMIN;n%i;i+=2)
   if(n<i*i) return 1;//素数!
 return 0;//残念…
}
137デフォルトの名無しさん:04/11/17 23:01:50
あれ?
>>134ってまずいの?
138130:04/11/17 23:02:50
>>135 >>136
ありがとうございます。コンパイルしてみます。
139デフォルトの名無しさん:04/11/17 23:02:55
>>137
どうせ最後に中括弧がないとかいうオチでは
140デフォルトの名無しさん:04/11/17 23:03:17
いや、全然まずくないとおもう。
141デフォルトの名無しさん:04/11/17 23:04:23
>>139 ありえる
14269 79:04/11/17 23:14:00
>>111
有難うございます。でも95はコンパイルはできるんですけど、
実行はできないみたいなんですよね。
もはや自分では限界です。だれか助けて。
143デフォルトの名無しさん:04/11/17 23:28:19
144デフォルトの名無しさん:04/11/17 23:31:31
scanfは処理系によってはインチキだかんね。
145デフォルトの名無しさん:04/11/17 23:33:13
すかんふ
146136:04/11/17 23:34:06
補足。
NMAXの値は好き(必要)なだけ増やしてください。
値の大きい素数判定のときに早く計算できると思います。
147デフォルトの名無しさん:04/11/17 23:50:29
すいません、お願いします。

<実行結果>
下底6.50 上底2.80 高さ3.30の台形の面積は15.345です。

doble a =6.5,b=2.8,h=3.3,s;
s=?
printf ?

?のとこよろしくお願いします。


148デフォルトの名無しさん:04/11/17 23:51:49
パロディウスを思い出した。やってくる。
149デフォルトの名無しさん:04/11/17 23:53:28
>>147
実行結果は全角で表示なのか
めんどくさいからやめた
150デフォルトの名無しさん:04/11/17 23:54:26
doble a =6.5,b=2.8,h=3.3,s;
s = daikei_menseki(a, b, h);
printf("下底6.50 上底2.80 高さ3.30の台形の面積は15.345です。 ");
151デフォルトの名無しさん:04/11/18 00:09:49
P2
640 480
255
162153167・・・166


4行目の空間はtab
4行目を読み込んで数値化して編集して書き出したいのですがどうやるのでしょうか
15246:04/11/18 00:10:21
>>47
47さん大変有難うございます!助かりました。
153デフォルトの名無しさん:04/11/18 00:11:38
4行目ミスしました

162 153 167 ・・・ 166
154デフォルトの名無しさん:04/11/18 00:12:07
>>151
何語?
155デフォルトの名無しさん:04/11/18 00:14:06
>>150
ありがとうございます!
156デフォルトの名無しさん:04/11/18 00:17:45
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=331

このプログラムに人口データを昇順にソートする機能を追加してください。
157ランタイムエラー:04/11/18 00:39:31
ランタイムエラーが でます。teeth07-test.dxf というファイルから 3DFACE という 文字を 数えたいのですが。
どうすればいいですか?
158ランタイムエラー:04/11/18 00:41:45
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream.h>

void main()
{

char filename[]="teeth07-test.dxf";
double *coord;
char buf[256];
int count = 0;
int num = 0;
FILE *fp;
159ランタイムエラー:04/11/18 00:42:16
cout <<"1\n";
fp = fopen(filename,"r");//ファイルを開く
if (fp == NULL)
{
cout << "ファイルを作成できません\n";

}else{
cout <<"2\n";
//四角形パッチの数を 数える 四角形パッチの数は文字列"3DFACE"の個数に等しい。
while(1){


if(fgets(buf,sizeof(buf),fp) == NULL)
{//1行分をbufに格納
cout << "4\n";
break;
}
if(strstr(buf,"3DFACE") != NULL)
{
//cout << "5\n";
count++;
}
}
}
160ランタイムエラー:04/11/18 00:43:33
fclose(fp);//ファイルを閉じる

cout<< "count は" << count <<"\n";

cout <<"6\n";
coord = new double [count*4*3];//coordという名前の配列を作る。大きさはcount*4*3



161ランタイムエラー:04/11/18 00:45:17
fp = fopen(filename,"r");

//ファイルの先頭行からENTITIESまで 読み捨てる(読み込んでも何もしない)
while(1){
if(fgets(buf,sizeof(buf),fp)==NULL)
break;
if(strstr(buf,"ENTITIES") !=NULL)
break;
}
162デフォルトの名無しさん:04/11/18 00:52:29
>>154
主語がないのでわかりません
163デフォルトの名無しさん:04/11/18 00:52:37
続きがないのか、連投規制に引っかかったのか
164デフォルトの名無しさん:04/11/18 00:55:24
NULLの時fcloseするとランタイムエラー出るのはいかがなものかと
165デフォルトの名無しさん:04/11/18 01:12:52
>>157
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
int main()
{
  const char filename[] = "teeth07-test.dxf";
  std::ifstream input(filename);
  if (!input)
  {
    std::cout << filename << "は開けませんでした" << std::endl;
    return 1;
  }
  std::string line;
  std::string::size_type pos = 0;
  int count = 0;
  while (pos = 0, std::getline(input, line))
    while ((pos = line.find("3DFACE", pos)) != std::string::npos) ++count, ++pos;
  std::cout << "count = " << count << std::endl;
  double* coord = new double [count * 4 * 3];
  input.close(); input.open(filename);
  while (std::getline(input, line) && line.find("ENTITIES") != std::string::npos)
  if (!input)
  {
    std::cout << "ENTITIESは見つかりませんでした" << std::endl;
    delete[] coord;
    return 1;
  }
  return 0;
}
166デフォルトの名無しさん:04/11/18 02:22:38
[1] 授業単元:コンピュータ演習2
[2] 問題文(含コード&リンク):下記に書きます。
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ(バージョン):bcc32
 [3.3] 言語:C/C++どちらでも可
[4] 期限:2004年11月25日hh:mmまで/無期限 のいずれか
[5] その他の制限:特に無し

問題文です。
連立方程式@2*a*x+b*y=5とAa*x+b*y=3(a=1,b=2)があり、
問1;@、Aの連立方程式の解を求めるプログラムを作成せよ(ガウスの消去法)

問2;@、Aの連立方程式のxの解の値を@、Aのaに代入し、新たにできた
式をそれぞれB、Cとする。同様にB、Cのxの解を求め@、Aのaに代入し、
新たにできた式をD、Eとする。
式Eのyの値を出力するプログラムを作成せよ。
(採点のポイント;@、Aの連立方程式をモジュール化されているかどうか)

よろしくお願いします。
167デフォルトの名無しさん:04/11/18 06:38:45
WinXP + cygwin + gccで動作確認。
ガウスの消去法って確か係数行列を対角成分だけにする奴だよな?
------------------
int main();
void solver(double a1, double a2, double a3, double b1, double b2, double b3, double* x, double* y);
int main()
{
  double a=1, b=2;
  int i;
  double x, y;
  for(i=1;i<4;i++)
  {
    printf("式%d: %f x + %f y = %f\n", 2*i-1, 2*a, b, 5.0f);
    printf("式%d: %f x + %f y = %f\n", 2*i, a, b, 3.0f);
    solver(2.0f*a, b, 5.0f, a, b, 3.0f, &x, &y);
    printf(" (%d)(%d)の連立方程式の解:x= %f, y= %f\n\n", 2*i-1, 2*i, x, y);
    a = x;
    b = y;
  }
  return 0;
}

void solver(double a1, double a2, double a3, double b1, double b2, double b3, double* x, double* y)
{
  //前進消去
  b2 = b2 - b1/a1 * a2;
  (*y) = (b3 - b1/a1 * a3)/b2;
  //後退なんたら
  (*x) = (a3 - a2*(*y))/a1;
}
168166:04/11/18 09:52:08
>167
ありがとうございました。
169デフォルトの名無しさん:04/11/18 17:23:59
ファイルを読み込んで指定された範囲をNOTしてまた書き込むのをおながいします。
170デフォルトの名無しさん:04/11/18 17:38:16
>>169
人にわかるように説明する気はあるのか?
171デフォルトの名無しさん:04/11/18 17:39:29
もういいです。
172デフォルトの名無しさん:04/11/18 18:02:37
印cぅ出<stぢお。h>
173デフォルトの名無しさん:04/11/18 18:09:11
>>170
指定されたファイルの指定された範囲のデーターをNOTで反転したいのです。
例えば40バイト目から10バイトが1111001110だったら0000110001にして保存です。
174デフォルトの名無しさん:04/11/18 18:09:14
印cぅ出<イオstレアm>
175デフォルトの名無しさん:04/11/18 18:17:12
範囲はどうやって指定するんだ?
176デフォルトの名無しさん:04/11/18 18:35:37
C言語なんですが下の実行結果になるように20人分の身長の度数分布表を表示する
プログラムの作り方を教えてください
double data[ ]={ 1.73, 1.68, 1.89, 1.65, 1.60, 1.75, 1.80, 1.75, 1.83, 1.90,
        1.68, 1.77, 1.62, 1.58, 1.53, 1.49, 1.80, 1.72, 1.70, 1.69};

↓実行結果です。

平均身長1.71m
1.3m :
1.4m :*
1.5m :**
1.6m :******
1.7m :******
1.8m :****
1.9m :*
2.0m :
177デフォルトの名無しさん:04/11/18 18:44:27
STEP1."C言語 文法"などのキーワードでぐぐる。
STEP2.検索されたサイトを見て理解する。
STEP3.自分なりに問題の解答になるように覚えたことを応用する。
178デフォルトの名無しさん:04/11/18 18:48:38
がんばろうね。
179デフォルトの名無しさん:04/11/18 18:50:35
>>156お願いします・・・ッ!
180デフォルトの名無しさん:04/11/18 18:50:55
がんばれや
181169=173:04/11/18 18:55:27
>>175
とりあえずは範囲の始めと終わりは定数としてできますでしょうか
182デフォルトの名無しさん:04/11/18 19:21:18
>>169
ファイル中に、'0'や'1'以外のバイトが現れたらどうするんだ?
183デフォルトの名無しさん:04/11/18 19:42:09
>>176
#include <stdio.h>
int main()
{
double data[20]={ 1.73, 1.68, 1.89, 1.65, 1.60, 1.75, 1.80, 1.75, 1.83, 1.90, 1.68, 1.77, 1.62, 1.58, 1.53, 1.49, 1.80, 1.72, 1.70, 1.69 };
double table[8]={ 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0 };
int result[8]={ 0, 0, 0, 0, 0, 0, 0, 0 };
double total = 0; int i,j;

for(i=0; i<20; i++)
 total += data[i];

double average = total / 20;
printf("平均身長%.2fm\n",average);

for(i=0; i<20; i++) {
 for(j=7; j>=0; j--) {
  if(data[i] >= table[j]) {
   result[j]++;
   break;
  }
 }
}
for(i=0; i<8; i++) {
 printf("%.1fm:", table[i]);
 for(j=0; j<result[i]; j++) {
  printf("★");
 }
 printf("\n");
}
return 0;
}
184176:04/11/18 20:55:28
>>183
ありがとうございます。助かりました。
185デフォルトの名無しさん:04/11/18 21:58:48
C言語、ポインタの部分の問題です。

2つの連結リスト(データは文字)を結合するプログラムを書け.このプ
ログラムでは,引数として2つのリストへのポインタを受け取り,二番目のリ
ストを最初のリストに連結する関数concateateを作って使用すること.

どうかお願いします。
186デフォルトの名無しさん:04/11/18 22:12:41
>>185
一連の課題の中の一問じゃないかい?
187デフォルトの名無しさん:04/11/18 22:25:55
乱数100個くらい、小さい順に並べ替える。
より高速にソートするにはどういうやり方がいいの?
188デフォルトの名無しさん:04/11/18 22:29:27
自然数同士の除算を減算の繰り返しで計算するプログラムのコードだれかわかりますか?
余りも考慮して。
189185:04/11/18 22:34:51
>>186
たぶんそうです。
ダイテルさんの教科書の問題だと思うのですが、教授がけちって
問題部分のプリントしか配布しませんでした。
190ijinjyousik:04/11/18 22:36:48
それは今世紀中には解けないと言われてる難問中の難問やん。
1981年に、アメリカのカースマンが、解法が必ず存在することを証明したが、
未だかつて、それを見つけたものはいない。
しかし、このスレの人間なら、その呪縛をとくことができるかもしれない。
君たちには、期待してるよ。
191デフォルトの名無しさん:04/11/18 22:46:13
>>188
void Divide(int x, int y, int *q, int *r)
{
  if (x <= 0 || y <= 0) {
    printf("error\n");
    return;
  }

  *q = 0;
  while (x >= y) {
    x -= y;
    (*q)++;
  }
  *r = x;
}
192カズヲ:04/11/18 22:51:19
<data.txt>ファイルからデータを読み込むプログラムを作成しています。
<data.txt>は以下の4パターンの文字の区切れ方でそれぞれ作成します。
「bbbbb」のデータの区切れが「(スペース)」、「,」、「\n」、「;」の4通りです。

その4パターンとも対応したいのですが、判別する部分がわかりません。
ご教授頂けませんでしょうか?

※4パターンは<data.txt>の中の「bbbbb」の区切れを書き直して作成しています。


<data.txt>
1) aaaaa bbbbb ccccc ddddd

2) aaaaa bbbbb,ccccc ddddd

3) aaaaa bbbbb
ccccc ddddd

4) aaaaa bbbbb; ccccc ddddd
193カズヲ:04/11/18 22:56:37
192の続き

<sample.c>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

void main(){
Member pro;
char data[50];
char name1[8];
char name2[8];
char name3[8];
char name4[8];
char *A;
char *B;
char *C;
FILE *fp;
fp = fopen("data.txt", "r");
if(fp == NULL){
printf("ファイルオープンエラー!!\n");
exit(-1);
}
194カズヲ:04/11/18 22:57:08
193の続き

printf("ファイルオープン!!\n");
while(1){
memset(data, 0x00, sizeof(data));
if(fgets(data, sizeof(data), fp) == NULL){
fclose(fp);
break;
}
strncpy(name1, data, strlen(data)-strlen(strchr(data, " ")));
A = strchr(data, " ");/* ここの部分の" "を変える。 */
strncpy(name2, A+1, strlen(A)-strlen(strchr(A+1, ","))-1);
B = strchr(A+1, ",");
strncpy(name3, B+1, strlen(B)-strlen(strchr(B+1, ","))-1);
C = strchr(B+1, " ");
strncpy(name4, C+1, strlen(C)-strlen(strchr(C+1, ",")));
printf("%-10s %-10 %-10 %\n", name1, name2, name3, name4);
}
}
195デフォルトの名無しさん:04/11/18 23:11:19
明日提出の宿題が分からない…。
お願いします。

以下の実行結果を表示するように身長と標準体重の対応表を表示する
プログラムを作成せよ。なお、表示する身長の範囲(開始値、終了値、増分)は、
整数値として読み込み、標準体重は小数点以下2桁だけを表示すること。
標準体重の求め方は (身長ー100)*0,9

実行結果(の例)

何cmから:150
何cmまで:190
何cmごと:5

150cm: 45.00kg
155cm: 49,50kg

・・・以下省略・・・・
196195:04/11/18 23:15:18
書き忘れてましたが、for文を使って作成せよとの事です。
宜しくお願いします。
197デフォルトの名無しさん:04/11/18 23:16:18
>>195
自分でやれ
198デフォルトの名無しさん:04/11/18 23:27:08
>>195
#include <stdio.h>
#include <stdlib.h>

void main()
{
  char line[128];
  int start, end, inc, i;

  printf("何cmから:");
  start = atoi(gets(line));
  printf("何cmまで:");
  end = atoi(gets(line));
  printf("何cmごと:");
  inc = atoi(gets(line));

  for(i = start; i <= end; i += inc)
    printf("%dcm: %.2fKg\n", i, (i - 100) * 0.9);
}
199デフォルトの名無しさん:04/11/18 23:43:34
C言語の課題で入力した16進数の
下位4ビットをオール1にした値を16進数と
上位4ビットをオール0にした値を表示せよという問題があるのですが
どのようにしてビットをいじればよいのでしょうか?
200デフォルトの名無しさん:04/11/18 23:46:00
>>199
& と |
201デフォルトの名無しさん:04/11/19 00:05:48
>>200
上位はわかったんですが
下位がわかりません。
具体的に教えていただけないでしょうか?
202デフォルトの名無しさん:04/11/19 00:06:18
あ、逆でした。
わからないのは上位のほうです。
203195:04/11/19 00:09:03
>>198
そのソースを参考にしたら出来ましたぁぁぁぁっぁ!
ありがとうございました!
204202:04/11/19 00:12:51
…自己解決しました。
いや、逆立ちして考えたらなぜか閃いた。
単純なことでしたんですね
205デフォルトの名無しさん:04/11/19 00:30:54
123 456 78
というファイルの内容を逆順に表示するにはどうすればいいんでしょうか?
206205:04/11/19 00:32:33
↑整数の個数は決まってないです。
207デフォルトの名無しさん:04/11/19 00:34:07
FILO型スタックを使う
208デフォルトの名無しさん:04/11/19 00:41:29
それって普通のスタックじゃん…
209デフォルトの名無しさん:04/11/19 00:49:40
ワラタ
210デフォルトの名無しさん:04/11/19 01:01:26
FIFO型スタックとかLIFO型スタックとかFILO型スタックって言葉があるんですか
211169=173:04/11/19 02:13:14
>>182
いえ、ビットでおながいします
212デフォルトの名無しさん:04/11/19 02:20:04
>>169=173=181=211
おれは解けたからおまえもがんばれ
213デフォルトの名無しさん:04/11/19 03:04:53
線形リストの中に値を入れていって、それを昇順にソートしてください。
214デフォルトの名無しさん:04/11/19 04:37:23
>>211
>173では、「10バイトが1111001110だったら」と書いているが、
>211ではビットでと書いている。
矛盾しない具体的な説明を希望する。
215デフォルトの名無しさん:04/11/19 04:47:51
>>212
微妙な皮肉にワロタ
216デフォルトの名無しさん:04/11/19 09:27:33
AAA.h と BBB.h という二つのファイルがあります。
AAA.h には
#define DAM 1
BBB.h には
#define DAM 2
と定義されています。
両ヘッダを編集せずに、両方の定義値を使用する方法は
例えば CCC.h に
#define DAM_2 2
として AAA.h と CCC.h をインクルードする以外にありますか?
217デフォルトの名無しさん:04/11/19 09:33:54
変態行為はやめて下さい
218デフォルトの名無しさん:04/11/19 09:48:05
#include "AAA.h"
#define DAM_A DAM
/* 処理A */
#include "BBB.h"
#define DAM_B DAM
/* 処理B */

別にインクルードする場所はファイルの先頭と決まっているわけではないから、
上記/* 処理 */に関数でも好きなだけ置けばいい。
#もちろん、DAM_A,DAM_Bはなくてもいい。
219デフォルトの名無しさん:04/11/19 09:48:48
おおう、undefするの忘れてたよ。
#include "AAA.h"
#define DAM_A DAM
/* 処理A */
#undef DAM
#include "BBB.h"
#define DAM_B DAM
/* 処理B */
#undef DAM
220デフォルトの名無しさん:04/11/19 09:59:23
C言語で
7個の要素からなる配列の任意の位置に
入力されたひとつのデータを挿入するプログラム
のつくりかたをおしえてください

問題は
オーストリアという配列を
「ト」と「り」の間に「ラ」を入れてオーストラリアという配列にしろという問題です
どなたかおしえてくださいよろしくおねがいします

221デフォルトの名無しさん:04/11/19 10:05:24
>>220
ひらがなをカタカナに自動変換するのめんどくさいから
誰かに解いて貰って
222220:04/11/19 10:12:14
すいません「り」じゃなくて「リ」でした
223216:04/11/19 10:17:41
>>218
それで実現出来そうです。
ありがとうございました。
224デフォルトの名無しさん:04/11/19 11:00:51
>>220
7個の要素からなる配列で、どのように「オーストリア」を表現しているのか説明してください。
#charなら7個じゃできない。
225デフォルトの名無しさん:04/11/19 11:02:22
半角カタカナでええんかな
226デフォルトの名無しさん:04/11/19 11:03:41
>>224
220じゃないが、WCHAR型でUNICODEなんじゃないか?
227デフォルトの名無しさん:04/11/19 12:13:46
・・・たしかに問題が悪いなあ。
質問があからさまに初心者用やし、そんな相手に
UNICODEとかシフトJISとか半角とか全角とか
いちいち細かい注文つけへんと思うねん。
課題の要点は、文字列処理よりも「配列の後方転送」とちゃうかな。
解答全部やないけど、これでサンプルとかヒントになるかいな。
<pre/>// string[index] に insert を挿入。
// index以降の要素が後方に移動される。
// ただし挿入位置の妥当性やバッファサイズはチェックしない。
void insert(char *string, int index, char *insert)
{
int i;
int n;
// 重複する領域内でのコピーは、順序に注意すること。
// ここでは後方転送なので、後方から順次コピーする。
n = strlen(insert);
i = strlen(string);
while (i >= index)
{
// 1文字をコピー
string[i + n] = string[i];
// 前方に戻っていく(この順番が大事)
i -= 1;
}
// できた隙間に insert で示される文字列を挿入。
// ただし strcpy のように '\0' はコピーしない。
while (n != 0)
{
n -= 1;
string[index + n] = insert[n];
}
}</pre>
228227:04/11/19 12:20:22
タグ書き間違えた。読みにくいから、もういっぺん貼っとこか。
<pre>
void insert(char *string, int index, char *insert)
{
int i;
int n;
// 重複する領域内でのコピーは、順序に注意すること。
// ここでは後方転送なので、後方から順次コピーする。
n = strlen(insert);
i = strlen(string);
while (i &gt;= index)
{
// 1文字をコピー
string[i + n] = string[i];

// 前方に戻っていく(この順番が大事)
i -= 1;
}
// できた隙間に insert で示される文字列を挿入。
// ただし strcpy のように '\0' はコピーしない。
while (n != 0)
{
n -= 1;
string[index + n] = insert[n];
}
}
</pre>
229205:04/11/19 12:23:20
>>205-206
どなたかお願いします。

実行すると、78 456 123 のように表示されるようにしたいのです。
230デフォルトの名無しさん:04/11/19 12:41:01
↑ファイル読む所とかは自分で作れ。
void hoge( char* in )//in は読み込んだ一行
{
int* arr;
int n = 0;
char* ptr;

ptr = strtok( in, " \t\n" );
if( ! ptr )return;
arr = (int*)malloc( sizeof( int ) );
arr[n] = atoi( ptr );
n++;
while( ( ptr = strtok( NULL, " \t\n" ) ) ) {
arr = (int*)realloc( arr, sizeof( int ) * ( n + 1 ) );
arr[n] = atoi( ptr );
n++;
}
for( ; n > 0; n-- )
printf( "%d ", arr[n-1] );
printf( "\n" );
free( (void*)arr );
}
231デフォルトの名無しさん:04/11/19 12:43:28
#include<stdio.h>
#include<math.h>
void main(void)
{
void henkan(float, float,float *, float *);
float a,b,amp,phase;
printf("Input real part="); scanf("%e",&a);
printf("Input imag part="); scanf("%e",&b);
henkan(a,b,&,&phase);
printf("%e+j%e=|%e|∠%e\n",a,b, amp,phase);
}
void henkan(float x, float y, float *r, float *theta)
{
*r=sqrt(x*x+y*y);
*theta=180.0*atan2(y,x)/3.141592;
}
このプログラムの反対の働きをするプログラム,絶対値|z|と位相角∠zを
キーボードから入れると,実数部と虚数部を表示するポインタを使った
プログラムを作ってください。
又、*theta=180.0*atan2(y,x)/3.141592;の意味がよくわからないので
教えてください。お願いします

232デフォルトの名無しさん:04/11/19 12:45:31
sscanf()を使えないでstrtok()使う馬鹿。
233デフォルトの名無しさん:04/11/19 12:51:05
>>231
どうでもいいが、突っ込みどころだらけなプログラムだな。

float * thetaから判るように、thetaはfloat へのポインタである。
したがって、* theta = 180.0 * atan2(y, x) / 3.141592;の意味は
atan2()関数を引き数y と x で呼び出し、その結果をラジアンから度に変換して
呼び出し元で用意した場所に格納している。
#atan2()関数が何をしているかくらいは自分で調べろ。

プログラム作成の方は、main()の方は同じ要領だから省略。
変換関数は、r とtheta を求める代わりにx とy を求めればいい。
それぞれ、r * cos(theta[rad]), r * sin(theta[rad])で求められる。
234デフォルトの名無しさん:04/11/19 13:05:26
言語:C言語 環境:CUI OS:WindowsXP Pro
ソート:基本選択法を使用

キーボードから「番号、氏名」を複数入力する。
入力した各データは、一旦それぞれに配列に格納して、学籍番号をキーに昇順にソートする。
そして、ソートしたデータのそれぞれをカンマで区切ったレコードにして
csv形式のファイルへ出力するプログラムを考えてます。
どなたか宜しくお願いしますm(_ _)m
235デフォルトの名無しさん:04/11/19 13:10:50
>>234
「配列」じゃないとダメなんでしょうか? ツリーに追加していくほうが楽なんですが。
236234:04/11/19 13:12:44
>>235
すみませんが「配列」でお願いします。
237デフォルトの名無しさん:04/11/19 13:51:57
>>156 やってみた。バブルソートだけど、いいかなあ・・・
Pop *Sort(Pop *top){
Pop dummy_top;//ダミーの先頭を作る
dummy_top.pop = 0;
dummy_top.NextPtr = top;

Pop *p_search = dummy_top.NextPtr;//検索対象
Pop *p_replace = &dummy_top;//置き換え対象(比較対象)の一つ前
while(p_search != NULL){
while(p_replace->NextPtr != p_search){
if(p_replace->NextPtr->pop > p_search->pop){
//置き換える
Pop *search_next = p_search->NextPtr;
Pop *replace_next = p_replace->NextPtr;
Pop *replace_next_next = p_replace->NextPtr->NextPtr;
p_search->NextPtr = replace_next;
p_replace->NextPtr->NextPtr = search_next;//p_replace->NextPtrより先に置き換えること
p_replace->NextPtr = replace_next_next;
//最初に戻して繰り返し
p_search = dummy_top.NextPtr;
p_replace = &dummy_top;
break;
}
p_replace = p_replace->NextPtr;
}
p_search = p_search->NextPtr;
p_replace = &dummy_top;
}
return dummy_top.NextPtr;
}
238721:04/11/19 15:09:09
3点を通る円のプログラミングを作りたいのですが、
どのように式を作ったらよいかどなたか教えてください。
・分かってる点、始点(X1,Y1)中点(X2、Y2)終点(X3,Y3)です。
・(X-X0)^2+(Y-Y0)^2=r^2の式を使って連立方程式を立て中心(X0,Y0)と半径rを求めたいです。
239デフォルトの名無しさん:04/11/19 15:13:38
そこまでわかってるんなら
3つの点代入して、その連立方程式の解を求めればいいんじゃないのか
240238:04/11/19 15:21:06
>>239
そうなんですが、プログラムに直す時にどのようにしたら良いか分からなくて…
241デフォルトの名無しさん:04/11/19 15:33:14
>>237
ソートできてませんでした…。なんでだろう?
242デフォルトの名無しさん:04/11/19 15:39:44
そういえばそうだな…

円の方程式を
x^2+y^2+lx+my+n=0
という形で表して(円の方程式をばらしただけ、数Uの教科書参照)
ばらした式に3つの点代入して3元連立1次方程式を解いてlとmとnを求めて
元の式(x-a)^2+.....と係数比較すれば強引に求まるかも

しかし検索したら解法のアルゴリズムとかありそうだなあ…
243235:04/11/19 16:18:20
>>234
できたけどファイルがちょっと大きかった。ここに貼るのは難しい。
しかも今ちょっと忙しい(本業:システムエン死に屋)
捨てアドでも晒してくれたら今日・明日中にでも送りますが。
それまでにだれかがソース貼ってくれるかもしれませんがw
244デフォルトの名無しさん:04/11/19 16:22:57
>>237
すみません、私のミスでした。
ていねいなソースありがとうございました。
245238:04/11/19 16:23:20
>>242
アドバイスありがとうございます。
もう一度挑戦してみます。
246デフォルトの名無しさん:04/11/19 16:23:41
中点てのはなのよ?
(x1,y1)(x3,y3)の中点では、異なる2点を与えたのと同値で
円は一意に定まらない
247デフォルトの名無しさん:04/11/19 16:33:50
>>246
ポカーン
248デフォルトの名無しさん:04/11/19 16:37:40
用語の使い方がおかしい
249238:04/11/19 16:38:09
>>246
中点に特に意味は無いです。
区別をつけたつもりが変な区別のつけ方になってしまいました。
250デフォルトの名無しさん:04/11/19 16:44:08
>>247は数学のできないプログラマー
251242:04/11/19 16:45:04
ということでやってみた
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,k; double cx,cy,r;     double x[3],y[3];
double pivot; double a[3][4]; double erase;
printf("始点?:"); scanf("%lf,%lf", &x[0], &y[0]);
printf("中点?:"); scanf("%lf,%lf", &x[1], &y[1]);
printf("終点?:"); scanf("%lf,%lf", &x[2], &y[2]);
for(i=0; i<3; i++) {
 a[i][0] = x[i]; a[i][1] = y[i]; a[i][2] = 1.0; a[i][3] = -(x[i]*x[i] + y[i]*y[i]);
}
for(i=0; i<3; i++) {                   
  pivot = a[i][i];
  for(j=0; j<4; j++) {
    a[i][j] /= pivot;        
  }
  for(k=0; k<3; k++) {
    erase=a[k][i];                 
    for(j=i; j<4; j++){
      if(k != i) a[k][j] -= erase*a[i][j];
    }
  }
}
cx = a[0][3]/2; cy = a[1][3]/2;
r = sqrt((cx*cx) + (cy*cy) - a[2][3]);
printf("中心:(%lf, %lf)", cx, cy);
printf("半径:%lf", r);
return 0;
}
答えが整数になるような問題じゃないと解けないかも…
252デフォルトの名無しさん:04/11/19 16:48:26
始点、中点、終点って3つの点ってことでいいよな
そもそも円だと始点と終点が同じ…
253デフォルトの名無しさん:04/11/19 16:54:45
0除算チェック入れないと駄目だった…
254デフォルトの名無しさん:04/11/19 17:14:57
中点の符号逆

あと始点のXが0だとだめだから
そのときは格納するときどこかと交換とか他色々
255デフォルトの名無しさん:04/11/19 17:28:48
次の仕様を満足するプログラムを作成しなさい。

1.要素が50ある配列を二つ用意する。(とりあえずa[ ], b[ ]とする)
2.用意した配列a[ ]に数値をランダムに入れる
3.a[ ]の50個のデータのうち最小のものを求めて、b[0]に入れる
4.a[ ]の残りの49個のデータのうち最小のものを求めてb[1]に入れる
5.a[ ]の残りの48個のデータのうち最小のものを求めてb[2]に入れる
以下繰り返し。全部のデータがb[ ]に入ったらおしまい。
ど素人です。よろしくお願いします。
256デフォルトの名無しさん:04/11/19 17:32:53
スレ違いでしたら、スイマセン。
N88BASICのプログラムをC言語に直せ。
という課題がでたのですが、一週間考えてもわかりません。
どうか教えてください。
257デフォルトの名無しさん:04/11/19 17:33:47
Fractional Derivate
SCREEN2 : CONSOLE 0,25,0,0
KMAX=100:XMAX=300
RANDOMIZE
PI=3.14159*2:EK=PI/XMAX*.7
DIM ER(KMAX),EI(KMAX),F(XMAX)
FOR K=1 TO KMAX
GOSUB *GA : ER(K)=MO
GOSUB *GA : EI(K)=MO
NEXT K
*SA
CLS
INPUT "Fractional Derivate(1.0.-2.0)",D
A=5-2*D
FMAX=0 : FMIN=0
FOR K=1 TO KMAX : KA(K)=(EK*K)^(-A/2) : NEXT K
FOR X=0 TO XMAX
F(X)=0
FOR K=1 TO KMAX
KX=EK*K*X
F(X)=F(X)+KA(K)*(ER(K)*COS(KX)-EI(K)*SIN(KX))
NEXT K
IF FMAX<F(X) THEN FMAX=F(X)
IF FMIN>F(X) THEN FMIN=F(X)
NEXT X
RETURN
258デフォルトの名無しさん:04/11/19 17:34:33
WINDOW (0,FMIN*1.2)-(XMAX,FMAX*1.2)
VIEW (0,200)-(XMAX,299)
FB=F(0)
FOR X=1 TO XMAX
LINE (X-1,FB)-(X,F(X))
FB=F(X)
NEXT X
GOTO *SA
*GA
MO=0
FOR GI=1 TO 10
MO=MO+RND-.5
NEXT GI
RETURN
259デフォルトの名無しさん:04/11/19 17:35:23
256〜258までです。
どうかよろしくお願いします。
260デフォルトの名無しさん:04/11/19 17:46:10
>>259
微妙にスレ違い。
で、Fractional Derivateってなんだ。
しかもLINEとかの描画処理が入ってるが、これはどうだろうな・・・。
こんな宿題出すやつの気が知れん。
OSはなんだ。Windowsか?
環境を明記しとけば、暇人が手伝ってくれるかもしれん。
261234:04/11/19 17:52:34
>>243
本当にありがとうございます
捨てあどメ欄に書いておきます
262デフォルトの名無しさん:04/11/19 17:55:50
C#の課題なのですが、DateTimeクラスでの、staticメンバとインスタンスメンバの違いは何か。
どう答えればいいかも
よく分からない小娘ですが、
宜しくお願いします。
263デフォルトの名無しさん:04/11/19 18:00:00
まんこで釣ろうたって、そうはいかん
264デフォルトの名無しさん:04/11/19 19:05:52
>>262
小娘なら小娘の武器を使え。
265デフォルトの名無しさん:04/11/19 19:11:07
>>262
とりあえずおっぱいうp
266デフォルトの名無しさん:04/11/19 19:16:36
>>262は大原ゆき
267(・∀・)イイ!!:04/11/19 19:24:00
この喧騒の街で、一人ぼっちで
プログラミングする(・∀・)イイ!!
268デフォルトの名無しさん:04/11/19 19:55:00
中途半端に小娘というキーワードの武器を使ったことで
さらに破壊的な武器を要求されてまつね

まぁこういう女を主張する香具師はロクに仕事できずに
給料平等にしろなどとのたまうんだろうがな
269デフォルトの名無しさん:04/11/19 19:58:22
>>243
>>1
つーか、メルアド搾取が目的か?
270デフォルトの名無しさん:04/11/19 20:15:20
>>262
臭いオシッコ飲ませろ。
271(・∀・)イイ!!:04/11/19 20:19:04
プログラマ界に蔓延っている男尊女卑(・∀・)イイ!!
272デフォルトの名無しさん:04/11/19 20:34:57
まあ問題はスレ違いってことだけなんだが…
メンバの違いとか言われてもなぁ…

クラスメンバはクラスで一つ
インスタンスメンバはインスタンスごとに一つ

とか?メソッドは違うけど。


つーかC#シラネ
273169=173:04/11/19 21:24:50
>>214
失礼いたしますた
あまりビットとかバイトを理解してませんでした。
これではどうでしょうか?

指定されたファイルの指定された範囲のデーターをNOTで反転
例えば40ビット目から10ビットが1111001110だったら0000110001にして保存です。
274デフォルトの名無しさん:04/11/19 21:27:22
>>271
何がイイんだかわかんねえよカスが!!
天の上にヒトを作らず、
天の下にヒトを作らず、
って言葉しらねえのかw?
だがな、天の下に実はヒトがいたんだよ!!
それが、ここにいる香具師ら、プログラマーなんだよWWWWWW
275デフォルトの名無しさん:04/11/19 21:37:54
女プログラマーに言いたい

ひたすらコピペプログラミングしないで、きちんと清書下さい
なぜか動いてるから変えたくないとか言わないで下さい
殆どありえない場合だから構わないとか言わないで下さい
全然正しくない数式にいつまでもこだわらないで下さい
276デフォルトの名無しさん:04/11/19 21:40:14
>>275
職にしてない者が言って悪いんだけど

そ れ っ て そ の 人 個 人 じ ゃ な い の ?


大半がそうならすまん
277デフォルトの名無しさん:04/11/19 21:40:52
>きちんと清書下さい

pu
278デフォルトの名無しさん:04/11/19 21:44:19
>>276
今のところ、俺の職場にあらわれては消えていった、そしていまいる
女プログラマーの共通項。その数10人以上
279デフォルトの名無しさん:04/11/19 21:46:13
>>278
プログラマだから仕方ないじゃんw
280259:04/11/19 21:48:51
環境はWindowsXPです。
非整数微積分をフーリエ変換を用いて表したものです。
フラクタルの授業の課題で出ました(T_T)
教官曰くC言語で簡単に書けるらしいのですが、全く掛けません。
281デフォルトの名無しさん:04/11/19 21:52:40
>>275
確かにいるね
動いてるんだから他の部分変えたくないって人
ソース見たらごちゃごちゃしすぎて、行き当たりばったりでデバッグの繰り返しで継ぎ足していった感じ
そいつの直すのは根本的にむりぽ
282デフォルトの名無しさん:04/11/19 21:53:50
>N88BASICのプログラムをC言語に直せ。

257と258の途中が抜けてるから無理
283デフォルトの名無しさん:04/11/19 22:08:29
>>275
女じゃないけど、俺だvzo
284259:04/11/19 22:17:38
>282 途中抜けてるんですか??
一応もらったプリントどおりにうつしてあるのですが^^;
285デフォルトの名無しさん:04/11/19 22:17:59
>>281
女か?
286デフォルトの名無しさん:04/11/19 22:18:07
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
287デフォルトの名無しさん:04/11/19 22:27:14
>>285
男でも女でもいる。
でも、女の方が多いように感じる
職場に女がいなくて目につきやすいせいかわからんが
288デフォルトの名無しさん:04/11/19 22:32:04
>>283
早く土方にでも転職しろや
289282:04/11/19 22:35:36
:
NEXT X
RETURN

ここから

ここ

WINDOW (0,FMIN*1.2)-(XMAX,FMAX*1.2)
VIEW (0,200)-(XMAX,299)
:


returnの直後になぜ命令が?
290デフォルトの名無しさん:04/11/19 22:37:00
BLEA女子高等部
http://www.blea.jp/j/index.html
291デフォルトの名無しさん:04/11/19 22:58:44
>>288
肉体労働はいいよ。徹夜とかないからな

>>286
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、

http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。
って何か関係あんの?
292259:04/11/19 23:00:49
>289 確かにそうです。すいません。
確認したところ257の最後のretuenはいらないみたいです。
でも何か間違っている気がします。ややこしくてすいません。
293282:04/11/19 23:18:01
>何か間違っている気がします

*SA
 :
GOTO *SA


...ダメポ
294デフォルトの名無しさん:04/11/19 23:28:42
END無い…
295デフォルトの名無しさん:04/11/19 23:50:55
N88BASICなんてすっかり忘れてるなあ。。。
296デフォルトの名無しさん:04/11/19 23:53:03
How many files (0-15)?
297259:04/11/19 23:59:07
とりあえず教官にメールして聞いてみます。
どうも自分では、よくわかりません(T_T)鬱になります・・・
298デフォルトの名無しさん:04/11/20 00:18:03
299259:04/11/20 00:39:45
>298 いいサイトありがとうございます!
でも残念ながら使えません。。
コマンドプロンプトでも試したのですが、使えませんでした。
300デフォルトの名無しさん:04/11/20 00:42:38
半日見ないと結構延びるねぇ、無駄に。

>>274
>天の上にヒトを作らず、
>天の下にヒトを作らず、
>って言葉しらねえのかw?
「天は人の上に人を作らず、人の下に人を作らず」って言葉なら知ってます。
301デフォルトの名無しさん:04/11/20 00:43:59
どっちみち使えたって、そんな機械変換は見てすぐにばれる
302デフォルトの名無しさん:04/11/20 00:55:59
>>259
そもそもコンパイラは?VC++?BCC?cygwin+XWindow+gcc?
それ次第で描画系コードが変わると思うんだけど。
303デフォルトの名無しさん:04/11/20 01:01:52
>>286
#include <algorithm>
#include <iostream>
#include <list>
#include <string>
struct pred{
  bool operator()(const std::string& x, const std::string& y)
    {return x.length() < y.length();}
};
int main(){
  std::list<std::string> li;
  std::string line;
  while (std::getline(std::cin, line))
    if (!line.empty())
      li.push_back(line.length() > 80 ? line.substr(0, 80) : line);
  li.sort(pred());
  for (std::list<std::string>::const_iterator first = li.begin(), last = li.end(); first != last; ++first)
    std::cout << *first << std::endl;
}
304デフォルトの名無しさん:04/11/20 01:47:42
for文でxをdt=0.01刻みで増やし、テキストファイルに落としたいのですが、
全部が必要ではなく(この場合MAX/dt=10000)、1、501、1001…
というように500刻みにするにはどうすればいいのですか?

double x;
double dt=0.01;
int MIN=0;
int MAX=100;
for(x<MIN;X<=MAX;X+=dt){
 if(xを500刻みで表示させたい。)
 printf("hogehoge");
 }
}
ifの中身を教えてください。お願いします。
305デフォルトの名無しさん:04/11/20 01:51:41
dt変えれば
306デフォルトの名無しさん:04/11/20 01:55:45
500で割った余りが1
307デフォルトの名無しさん:04/11/20 01:57:10
double なのに?
308304:04/11/20 01:59:25
>>305
区間(MIN<x<MAX)をできるだけ細かし、必要なだけ(500個とか300個等)
取り出したいのです。
309デフォルトの名無しさん:04/11/20 01:59:35
キャストでも何でも好きなようにすりゃいいじゃん。
310デフォルトの名無しさん:04/11/20 02:06:15
>>309
考えが浅いですね
311デフォルトの名無しさん:04/11/20 02:16:58
>304

ループ用のixとdtはintで。
あらためてdoubleのxを使え。
312デフォルトの名無しさん:04/11/20 02:34:20
>>310
そうですね
313デフォルトの名無しさん:04/11/20 04:55:47
入力された文字の中にハイフンが入っていたらハイフン以降の文字列を表示
するというプログラムを作成しているのですが
char mozi[100];
gets(mozi);
char *haihun = strchr(mozi, '-');
int len;
if(NULL != haihun){  // ***
len = strlen(haihun);  // ***
}else{  // ***
len = 0;  // ***
}  // ***
printf "一個目のハイフン以降の文字数は%d文字です", len;
cygwin上では正常にコンパイル出来て動くのですがRedHat7.3(gcc-2.96-113)
上ではparse errorが出てしまいます。
***の部分をlen = strlen(haihun);の1行にすればコンパイルは通り動作するものの、
入力文字列にハイフンが含まれていないとNULLをstrlenするためかコアダンプしてしまいます。
見ての通りぴよぴよですが解決をご教授下さいませ。
314デフォルトの名無しさん:04/11/20 05:44:07
「氏名」「国語の点数」「数学の点数」「国語数学の合計点」
をメンバに持った構造体を定義し、vectorを用いて成績表を作成せよ。
10人分入力し、最後に合計点の高い順に整列させ一覧を表示する事とする。

環境はC++のコンソールです。お願いします。
315デフォルトの名無しさん:04/11/20 06:26:44
>>313
C++としてコンパイルしてるのかな?
Cだとシンタックスエラーになるはずなんだが。
それにprintfに括弧がついてないけど。

ソースをコピペしてみて。
316デフォルトの名無しさん:04/11/20 06:32:16
>>313
Cなら変数の宣言は前のほうにもってくるほうがいいと思うけど。

char mozi[100];
char *haihun;
int len;

gets(mozi);
haihun = strchr(mozi, '-'); 以下略
317デフォルトの名無しさん:04/11/20 09:17:25
>>303
ありがとうございます。
318デフォルトの名無しさん:04/11/20 09:18:56
>>273
>>214ではないが、まだ仕様がわからない。

対象のファイルは、バイナリ?テキスト?
バイナリであれば、どこからどこまでを1つの数字と見ていいのか?

「1、2、3」という「数値の」並びがファイルにあるとしたら、どう変更すればいいのか?
2進数だと、「00000001、00000010、00000011」
319259:04/11/20 09:21:14
>302 コンパイラの種類というのがよくわからないのですが、
コンパイルする時は gcc ファイル名 -O ファイル名 です。
初心者で申し訳ありません。できる方どうかよろしくお願いしますm(_ _)m
320デフォルトの名無しさん:04/11/20 09:26:58
>>314
10人分の入力はどうやってやるの?
入力機能を作るの?
321デフォルトの名無しさん:04/11/20 09:41:28
unsigned char a = 0xF2; //反転させたいビット列

unsigned char HANTEN(unsigned char a)
unsigned char b = 0x01;
unsigned char work =0, out =0;
for(int i=0; i<8; i++){
work = a & b;
work << (7 - i);
out = out | work;
b << 1;
}
return out;
}

下位から1bitずつ取り出してその分シフト、orで足し算、と。
取り出したビットがゼロだったら飛ばしてもいいかも
322デフォルトの名無しさん:04/11/20 09:42:16
申し訳ない、321は誤爆デス
323314:04/11/20 09:51:33
>>320
すいません。できればscanfとかcinなどで、
一人目の氏名→一人目の国語の点数→一人目の数学の点数
という感じで順番に手入力し、314の構造体に入れ、順次vectorに追加していく、、、
これを10人分繰り返す、という感じでお願いします。
原始的というか、初歩的な感じで結構です。よろしくお願いします。
324デフォルトの名無しさん:04/11/20 10:18:10
*SAの終了がRETURNで、*SAからRETURNまでは最初はスキップされるから、
*SAまでの初期化のあとに実行されるのは
WINDOW (0,FMIN*1.2)-(XMAX,FMAX*1.2)
から。
なのか?
それにしてもなんでGOTO*SAなんだ?
325デフォルトの名無しさん:04/11/20 10:21:58
326デフォルトの名無しさん:04/11/20 10:24:08
>教官曰くC言語で簡単に書けるらしいのですが、全く掛けません。

この教官バカ。学校変えた方がいい。
327デフォルトの名無しさん:04/11/20 10:24:53
馬鹿大学か
328デフォルトの名無しさん:04/11/20 10:26:03
329デフォルトの名無しさん:04/11/20 10:27:24
>>328
ファラタ
330デフォルトの名無しさん:04/11/20 10:29:15
今時の学校教育は VMware でつか
ttp://bungee.j.dendai.ac.jp/prog2/prep/login_logout.html
331259:04/11/20 10:33:52
そのバカ教官からの返信メールですが、
そのプログラムは多少間違えてるけど、そこは推測してC言語に直すように
だそうです。。
嫌になります。とりあえず今から学校に行ってあがいてきます・・・
332デフォルトの名無しさん:04/11/20 10:34:04
333デフォルトの名無しさん:04/11/20 10:35:35
>>331
そのサンプルはBASICで書いた時の例でしかなくて、
実際には別の問題文かなにかがあるんじゃないのか?
だったら、その問題文の方をここにうpしろ。
334デフォルトの名無しさん:04/11/20 10:37:14
おまえら、まんこにはやさしいねぇ・・・・・・
335デフォルトの名無しさん:04/11/20 10:38:49
>>331
バカ教官が昔書いたプログラムを
自分でCに置き換え出来ないので
学生にやらせようという魂胆だろうと
エスパーしてみる。

336デフォルトの名無しさん:04/11/20 10:46:01
http://bungee.j.dendai.ac.jp/prog2/etc/errata.html

char x[100];
fgets(x, sizeof(x), stdin); ← 修正箇所
x[strlen(x)-1] = '\0'; ← 修正箇所

なにやってんだこれは?w
337デフォルトの名無しさん:04/11/20 10:48:45
改行コード消してんでしょ、多分
338デフォルトの名無しさん:04/11/20 10:52:04
>>325
ぶっちゃけカコイイと思ったの反対の賛成なのだ
339デフォルトの名無しさん:04/11/20 11:40:59
>>314
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
struct student{
std::string name;
int japanese;
int english;
int total;
};
struct pred{bool operator()(const student& x, const student& y){return x.total > y.total;}};
int main(){
std::vector<student> table;
for (int i = 0; i < 10; ++i){
student temp;
std::cout << i + 1 << "番目の名前は?:";
std::cin >> temp.name;
std::cout << i + 1 << "番目の日本語は?:";
std::cin >> temp.japanese;
std::cout << i + 1 << "番目の英語は?:";
std::cin >> temp.english;
temp.total = temp.japanese + temp.english;
table.push_back(temp);
}
std::sort(table.begin(), table.end(), pred());
for (std::vector<student>::const_iterator first = table.begin(), last = table.end(); first != last; ++first)
std::cout << first->name << ' ' << first->japanese << ' ' << first->english << ' ' << first->total << std::endl;
return 0;
}
340デフォルトの名無しさん:04/11/20 13:08:55
> char x[100];
> fgets(x, sizeof(x), stdin); ← 修正箇所
> x[strlen(x)-1] = '\0'; ← 修正箇所

fgets()って必ず最後に'\0'いれてくれんだっけ?
strlen()が正しく動かない時はないのけ?
341デフォルトの名無しさん:04/11/20 13:16:11
fgetsが正常に動作してれば確実に'\0'は入る
342デフォルトの名無しさん:04/11/20 13:51:42
char *fgets(char *s, int size, FILE *stream);
fgets() は size よりも1文字以上少ない文字を stream から読み込み、 s で示されるバッファに書き込む。
読み込みは EOF または改行文字を読み込んだ後終わる。
改行文字は読まれるとバッファに書き込まれる。
'\0' 文字がバッファの中の最後の文字の後に1文字書き込まれる。
343デフォルトの名無しさん:04/11/20 14:42:19
>339

「日本語」ってあーた(w

>「国語の点数」「数学の点数」「国語数学の合計点」
微妙に問題と違ってますけど。
残念!
344339:04/11/20 14:51:12
悪かったな、どうせ俺は日本人だよ。国語と言えば日本語しか
思いつかないようなやつだよ。
345(・∀・)good!!:04/11/20 15:05:00
I'm just a Japanese.(・∀・)good!!
346デフォルトの名無しさん:04/11/20 15:11:49
>344

ってゆーか、数学嫌いなんだろ(w
347314:04/11/20 15:24:13
>>344
STL使った事なかったんですが助かりました。
ありがとうございました。

ところでvectorって普通の構造体配列のように
たとえばhoge[2].japanese=60;みたく
あとから簡単に特定の要素番号とメンバを指定して値を入れなおすのって
できないんでしょうか。
348デフォルトの名無しさん:04/11/20 15:26:01
>>347
できるに決まってるやん。出来なかったら糞だし誰も使わないよ。
349314:04/11/20 16:25:32
あ、普通にできました。イテレーターがどうとかでそんなものを使わないと
できないのかと思ってました。
350デフォルトの名無しさん:04/11/20 16:30:36
351デフォルトの名無しさん:04/11/20 17:19:09
ttp://bungee.j.dendai.ac.jp/prog2/exe/08/
課題B教えて!
おながいすます!
352デフォルトの名無しさん:04/11/20 17:30:51
353デフォルトの名無しさん:04/11/20 17:37:41
ttp://bungee.j.dendai.ac.jp/prog2/exe/08/
うるせえ!
はや教えろやキモオタ!!

354デフォルトの名無しさん:04/11/20 17:41:43
常識のない人間がいるようですね。
355デフォルトの名無しさん:04/11/20 17:44:04
ttp://bungee.j.dendai.ac.jp/prog2/exe/08/
早くしろ!
間にあわねー
356デフォルトの名無しさん:04/11/20 17:45:53
>>355
提出期限は11月29日だろ?
まだまだじゃねーか。
357デフォルトの名無しさん:04/11/20 17:46:24
>>355
> 本課題の提出期限は、祭日を挟むので再来週の11月29日(月)午後8:00 とする。

まだまだ余裕じゃん。
358デフォルトの名無しさん:04/11/20 17:48:31
ttp://bungee.j.dendai.ac.jp/prog2/exe/08/
おれはtex打つのが苦手なんだよ!
359デフォルトの名無しさん:04/11/20 17:49:56
本人が書き込んでるんだろうか
360デフォルトの名無しさん:04/11/20 17:50:30
んなわけねえだろ
361デフォルトの名無しさん:04/11/20 17:51:37
ttp://bungee.j.dendai.ac.jp/prog2/exe/08/
どっちだっていいじゃねーか!
はや教えろ
362デフォルトの名無しさん:04/11/20 17:55:09
本人はどこへ行ったんだろう
363デフォルトの名無しさん:04/11/20 18:03:37
できた。

#include <stdio.h>
#include <stdlib.h>
#define MAX 100
(こぴぺがたるいので以下略)

以上。
364その1:04/11/20 18:09:38
#include <stdio.h>
#include <stdlib.h>
#define MAX 100

typedef struct {
    int number[MAX]; /* 各桁の数字 */
    int figure; /* 桁数 */
} MPI;

// 関数のプロトタイプ宣言
MPI *getInteger(int);
int compareInteger(MPI *, MPI *);

int main() {
    MPI *a, *b;
    int result;

    // aの入力
    printf("aの値: ");
    a = getInteger(MAX);
    if ( !a )
        return -1;

    // bの入力
    printf("bの値: ");
    b = getInteger(MAX);
    if ( !b )
        return -1;
365その2:04/11/20 18:10:15

    // aとbの比較
    result = compareInteger(a, b);

    // 結果の出力
    if ( result > 0 ) {
        printf("aの方が大きい\n");
    } else if ( result < 0 ) {
        printf("bの方が大きい\n");
    } else {
        printf("aとbは等しい\n");
    }
    free(a); a = NULL;
    free(b); b = NULL;
    return 0;
}
366その3:04/11/20 18:12:05

    a = (MPI *)malloc(sizeof(MPI));
    if(!a)return NULL;

    // 標準入力 からmax+1個の文字を読み込む
    fgets(ch, max+2, stdin);

    // 受けとった文字を先頭から調べて、数字以外のときはエラーとする
    for ( i = 0; i < max; i++ )
        if ( '0' <= ch[i] && ch[i] <= '9' ) {
            continue;
        } else if ( ch[i] == '\n' ) {
            break;
        } else {
            printf("数字以外が入力されました\n");
            free(a);
            return NULL;
        }
367その4:04/11/20 18:13:08

    // max+1の長さ文字列を受け取ったとき、改行で終わってないときはエラーとする
    if ( i == max ) {
        if ( '0' <= ch[i] && ch[i] <= '9' ) {
            printf("入力が長すぎます\n");
        free(a);
            return NULL;
        } else if ( ch[max] != '\n' ) {
            printf("数字以外が入力されました\n");
            free(a);
            return NULL;
        }
    }

    // 各桁の文字を数に置き換えて逆順に配列に格納し、数を表現する
    a->figure = i;
    for ( i = 0; i < a->figure; i++ )
        a->number[i] = ch[a->figure - i -1] - '0';

    // 0から数字が始まっているときは、桁数を減らす
    for ( i = a->figure - 1; i > 0; i-- ) {
        if (a->number[i] == 0) {
            a->figure--;
        } else {
            break;
        }
    }

    return a;
}
368その5:04/11/20 18:13:53

int compareInteger(MPI *a, MPI *b) {
    int i;

    if ( a->figure < b->figure ) return -1;
    if ( a->figure > b->figure ) return 1;

    for ( i = a->figure -1; i >= 0; i--) {
        if ( a->number[i] < b->number[i] ) return -1;
        else if ( a->number[i] > b->number[i] ) return 1;
        else {
            continue;
        }
    }

    return 0;
}
369デフォルトの名無しさん:04/11/20 18:41:51
325 350 351はおいらですが、他違いますです
370デフォルトの名無しさん:04/11/20 18:46:07
ageてる時点でんなの誰でも気づいてるっちゅーの
371デフォルトの名無しさん:04/11/20 18:46:51
ポインターの宿題でクラス内関数です。
C++でVB6使ってます。

プログラム内容は銀行の入金と出金を個別にファイルから入力しそれをポインタを使ってメモリに保存していくものです。
他の関数(入金と出金)を呼び出す必要があると思いますがそれは省略してくれてOKです。

この関数の役割はそのポインタと配列を使ってメモリ内にストア
していくものです。説明不足でしたら申し訳ありませんがよろしくおねがいします。
void CCheckbook::InsertTransaction(char type,float amount)
{
//InsertTransaction will insert a pointer to a newly
//created Transaction into an unsorted list (array) of pointers to Transactions.

//Dynamically create a new Transaction and store its pointer in the
//transactions array at the correct index.

//Populate the new Transaction with the passed in type and amount.

//Increment a member variable to get ready for the next insert.
}
372デフォルトの名無しさん:04/11/20 18:48:48
質問の仕方すら分からないような低脳は素直に単位落としといた方が
お前のためにも周りの為にもなる。
373デフォルトの名無しさん:04/11/20 18:52:19
だって友達いないし、今回だけ人助けだと思って助けておくれよ
周りは友達のコピーしまくりらしいけど、俺はそんな友達いないだんよ
単位落としたくないよ・・・
374デフォルトの名無しさん:04/11/20 18:54:13
辞めればいいじゃん
375デフォルトの名無しさん:04/11/20 18:55:57
ファイル名も分からんし、クラスのメンバも分からん。
その状態で俺が作った所で頓珍漢で無駄だらけのプログラムになる事必至。

だから作らん。
>>373
コピーされてる大元は自分で作った奴だろ?
オマエも自分で作れ。
376デフォルトの名無しさん:04/11/20 19:03:56
>>355見て思ったんだが、構造体の名前を全て大文字で書くのは如何な物か?
377デフォルトの名無しさん:04/11/20 19:04:50
俺もtypedefするときは全部大文字で書くよ
378デフォルトの名無しさん:04/11/20 19:10:20
>>377
マジで?そっちのが一般的なの?
379デフォルトの名無しさん:04/11/20 19:11:34
[1] 授業単元:IT入門
[2] 問題文:n×n行列Aが与えられたとき逆行列A^-1を計算するプログラムを作成しなさい。
[3] 環境
 [3.1] OS:リナックス
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:11月26日

お願いします
380デフォルトの名無しさん:04/11/20 19:11:45
俺も大文字
381371:04/11/20 19:12:16
クラスです。
ファイルには「D, 234.25」「W, 25.13」といった感じで表現されており、
「D」の場合そのあとの数を入金し、「W」のときに出金します。
そこで挿入した数値を上記の「void InsertTransaction(char,float);」にて
ポインタで処理するわけです。

class CCheckbook
{
public:
CCheckbook(ofstream &);
~CCheckbook();
CCheckbook( const CCheckbook& otherCheckbook);

void Deposit(float); //入金の関数
void Withdrawal(float); //出金の関数
void ReadTransactions(ifstream &);
void InsertTransaction(char,float); //この関数
float GetBalance() const;
void PrintTransactions() const;
void PrintDeposits() const;
void PrintWithdrawals() const;
bool IsFull() const;
void SortTransactions();

private:
Transaction * transactions[MAX_TRANS];
int numOfTransactions;
float balance;
ofstream & outfile;
};
382デフォルトの名無しさん:04/11/20 19:13:48
>>379
Lapack使え。
383デフォルトの名無しさん:04/11/20 19:15:55
逆行列の計算って宿題でやるレベルなの?
384デフォルトの名無しさん:04/11/20 19:19:43
>>376
漏れは一文字目のみ大文字かな。
全部大文字はマクロ定義ぐらい。
385デフォルトの名無しさん:04/11/20 19:22:25
>>380
うそーん・・・
>>384
だよな!!俺もだ。
ちょっと安心した。これからもこれで行く。
386デフォルトの名無しさん:04/11/20 19:22:40
#include<stdio.h>
#include<math.h>
#define M 0.0001
double f1(double x)
{
       return(exp(x)-1.0/x);
}
double f2(double x)
{
       return(exp(x)+1.0/pow(x,2));

int main(void)
{
       double x1=1.0,x2;
       do{
          x2=x1;
          x1-=(f1(x1)/f2(x1));
       }while(fabs(x2-x1)<M);
       printf("x=%f\n",x1);
       return(0);
}

ニュートン・ラフソン法でexp(x)-(1..0/x)を解く問題なのですが
なぜか1回しかループしません。だから答えが出ないんです。
教えてくんでゴメンナサイ、教えてください。
387デフォルトの名無しさん:04/11/20 19:25:01
>>381
ポインタとか言ってるけど引数にポインタねーじゃねーか。
グローバルか?変数名わかんねーよ。
それとファイル名もわかんねーよ。
388デフォルトの名無しさん:04/11/20 19:32:31
>>378
一般的かはしらん。
とりあえず、MSのPlatform SDKでは大文字になってる。

他のソースの構造体も見てみる
389デフォルトの名無しさん:04/11/20 19:33:25
>>386
while ループを勉強するといいと思う
390デフォルトの名無しさん:04/11/20 19:37:19
391デフォルトの名無しさん:04/11/20 19:39:16
>>385
安心しろ、漏れもだ
392デフォルトの名無しさん:04/11/20 19:39:56
>>386
whileは条件式が真の時にループする(偽になったら止まる)
本当は閾値以下になったらループを止めたいんだろうから
fabs(x2-x1) > M を式とすべき
あとどうでもいいけど、
数値計算やるならfabsとか使わないほうがいい
393デフォルトの名無しさん:04/11/20 19:40:38
難しいことはわからんが、Mの横の比較演算子が逆なんちゃうかと…直感レス
394デフォルトの名無しさん:04/11/20 19:43:38
>>392
ニュートン・ラフソン法って何?
って聞いていい?
395デフォルトの名無しさん:04/11/20 19:44:16
>>386
int main(void){
double x1,x2;
x1=1.0;
x2=x1-f1(x1)/f2(x1);
while(fabs(x1-x2)>M){
x1=x2;
x2=x1-f1(x1)/f2(x1);
}
return(0);
}
ほいよ
396デフォルトの名無しさん:04/11/20 19:48:09
>>392
宿題程度なんだし、わざわざ関数マクロ作らないでもヨカロ
397デフォルトの名無しさん:04/11/20 19:50:07
>>392
> あとどうでもいいけど、
> 数値計算やるならfabsとか使わないほうがいい

横から失礼。
これはどうしてですか?
398デフォルトの名無しさん:04/11/20 19:53:25
ニュートン法といっしょ
399デフォルトの名無しさん:04/11/20 19:55:40
>>397
遅くなるからでしょ?

細かい事言ったら[ ]とか->とかも止めた方がいいと思う。
最適化オプションつければ関係無いけど、
コンパイラの方にもバグあるからねぇ。

数値計算限定の話じゃないかな。
400デフォルトの名無しさん:04/11/20 19:56:23
abs( )系は二乗して平方根とってるから
401386:04/11/20 20:00:41
どうも有難うございます。
嬉しくて涙が出そうです。
私、馬鹿なんで細かい事は分からないんですけど理解できるようがんばります。
402デフォルトの名無しさん:04/11/20 20:01:32
>>400
まじですかそれ。しらんかった。
ほんまかどうか調べてみよう。。。
403デフォルトの名無しさん:04/11/20 20:05:27
>>400
符号ビットをクリアするだけだと思っていたんだけど。
404デフォルトの名無しさん:04/11/20 20:05:54
嘘に決まってるだろ
405デフォルトの名無しさん:04/11/20 20:06:56
>>404
がー、ほんきにしちゃったよ。
406デフォルトの名無しさん:04/11/20 20:09:22
abs() は符号ビットをクリアしているだけだね (VC6 で)。

int Func1(void)
{
    return abs(-1);
}

7:    int Func1(void)
8:    {
00401000   or          eax,0FFFFFFFFh
00401003   cdq
00401004   xor         eax,edx
00401006   sub         eax,edx
9:        return abs(-1);
10:   }
00401008   ret
407デフォルトの名無しさん:04/11/20 20:10:59
fabs() は fabs 命令になるだけだね (VC6 で)。

double Func2(void)
{
    return fabs(-1.0);
}

12:   double Func2(void)
13:   {
00401010   fld         qword ptr [__real@8@bfff8000000000000000 (004070c0)]
00401016   fabs
14:       return fabs(-1.0);
15:   }
00401018   ret
408デフォルトの名無しさん:04/11/20 20:11:55
だったら、どうして fabs() を使ったらあかんの?
誰か本当のこと教えてください。m(_ _)m
409デフォルトの名無しさん:04/11/20 20:13:23
CPUにバグがあるから
410デフォルトの名無しさん:04/11/20 20:15:46
>>388
MSが基準と思うな
大文字小文字はマクロ・関数・変数・クラス(構造体)など区別すべき

一般的、と謳うのは避けておくが
全て大文字:マクロ
クラス(構造体):単語の頭文字は大文字、その他小文字
は大抵お決まり
関数・変数はわりと好みが分かれるが、全て大文字はまずないだろう
411デフォルトの名無しさん:04/11/20 20:17:01
>>409
またまた〜。ほんまですか?
412392:04/11/20 20:38:29
あー、ごめん
fabs()は遅いってあたまがあったんだけど…
もうしわけない 知ったかぶりでした
413デフォルトの名無しさん:04/11/20 20:47:44
>>410
一つ例挙げただけなのに「基準と思うな」って言われても困る。

typedef struct (A){
} (B);

(B)はstruct (A)に置き換えられるようなもんだから、
って理由で全部大文字で書いてる。俺は。

ちなみに、(A)の所は全部大文字ではない。
414デフォルトの名無しさん:04/11/20 20:47:45
>>412
遅いのはdoubleとかfloatをintにキャストする時じゃなかった?
415デフォルトの名無しさん:04/11/20 20:52:29
>>414
VC6 では __ftol() 関数が呼び出されるね。
たしかに遅くなりそう。

__ftol:
004010A0   push        ebp
004010A1   mov         ebp,esp
004010A3   add         esp,0FFFFFFF4h
004010A6   wait
004010A7   fnstcw      word ptr [ebp-2]
004010AA   wait
004010AB   mov         ax,word ptr [ebp-2]
004010AF   or          ah,0Ch
004010B2   mov         word ptr [ebp-4],ax
004010B6   fldcw       word ptr [ebp-4]
004010B9   fistp       qword ptr [ebp-0Ch]
004010BC   fldcw       word ptr [ebp-2]
004010BF   mov         eax,dword ptr [ebp-0Ch]
004010C2   mov         edx,dword ptr [ebp-8]
004010C5   leave
004010C6   ret
416デフォルトの名無しさん:04/11/20 20:52:37
>>413
その他との区別をどうしてるか知らんが
くれぐれも他人に渡すソースは可読性の低いものにするなよ?
417デフォルトの名無しさん:04/11/20 20:57:29
>>416
君のしてる区別方法を見せて貰いたい。
418313:04/11/20 21:00:59
315さん、316 さんありがとうございました。
予想されたとおり、cgwinではC++、Linux上ではCでコンパイルしておりました。
コンパイルしている言語が違うことに微塵も気づく気配が無いほどぴよぴよでした。
本買って勉強してきます。
419デフォルトの名無しさん:04/11/20 21:01:38
俺は416じゃないが、
typedef struct (A) {
} (B);

は、例えばHogeなら
(A) : Hoge_
(B) : Hoge
てなように内部実装ぽく書いてる
420デフォルトの名無しさん:04/11/20 21:03:35
>>418
とりあえず拡張子かえれば?
421デフォルトの名無しさん:04/11/20 21:04:39
>>257
ソースが正しいと仮定すると、
*SA
は只のラベルだから
NEXT K
に続いて
CLS
が実行される。
そして、
RETURN
で戻り先がなくてアボーン。
422デフォルトの名無しさん:04/11/20 21:07:10
>>421
ネタだったらしいよ
423デフォルトの名無しさん:04/11/20 21:54:43
>>286
ここできいてることを教授に報告しておいたよ
424デフォルトの名無しさん:04/11/20 22:34:54
>>417
君の反応からして今まで読みやすいソースを意識してなかった香具師に見える
指摘されて逆切れ、みたいな

違ったら悪いが
425デフォルトの名無しさん:04/11/20 22:39:07
プログラマー軍団って、何かいいね。
強そうで。
426(・∀・)イイ!!:04/11/20 22:52:35
プログラマー軍団が解決(・∀・)イイ!!
全然コード書いてないのに、ここに居座って優越感に浸る(・∀・)イイ!!
427259:04/11/20 23:14:55
>421 おっしゃるとおりです。
色々試してみましたが、上手くうごきません。
問題は非整数ブラウン運動の例です。諦めそうです。。
428デフォルトの名無しさん:04/11/20 23:16:23
>>427
期限いつまでだっけ?
429259:04/11/20 23:34:43
24日までです(T_T)連休がつぶれそうです。。。
430デフォルトの名無しさん:04/11/20 23:38:30
Win95時代に、時勢に逆らってMS-DOS&マシン語にしがみついていた
つわもの集団。
新日本プログラミングを知ってる人はいるのか?
431デフォルトの名無しさん:04/11/21 00:27:29
新日本プロレスリングなら知ってる
432デフォルトの名無しさん:04/11/21 00:38:26
時代は大阪プロレスです
433デフォルトの名無しさん:04/11/21 00:53:41
>>429
>421以前に、kaって配列が使われているのに宣言されていないからエラーになると思われ。
元のプログラムが未完成品なのか、全文伝わっていないのか。
どっちみち、0から書いたほうが早そうな。
434デフォルトの名無しさん:04/11/21 01:01:53
「VisualBasicゲームプログラミングの応用50例」の人?
435デフォルトの名無しさん:04/11/21 01:22:25
>全文伝わっていないのか

はげしくどうい
436デフォルトの名無しさん:04/11/21 01:58:35
>>429
試しにやってみた
http://49uper.com:8080/html/img-s/23984.zip

ネタにちかい…
忠実に再現することを念頭におきますた
一応動く…
437234:04/11/21 03:53:19
>>235
忙しい中本当にありがとうございます。
438デフォルトの名無しさん:04/11/21 06:45:20
>>430
>新日本プログラミングを知ってる人はいるのか?

俺にはPCマガジンの燃える闘魂、マシン語秘伝の書の中の人
日高総帥の文章は個性的なので、かなり印象に残ってるなぁ…
439デフォルトの名無しさん:04/11/21 07:35:17
>>436
漏れは ga() はこれだけでいいと思った

int ga()
{
  return ((rand() % 11) - 5);
}
440259:04/11/21 10:45:31
>436さん,439さん
本当にありがとうございます。今すぐ試すことができないのですが、残念ですが。
急いで試しに行きたいと思います。
本当に本当にありがとうございます!!!
441デフォルトの名無しさん:04/11/21 11:50:48
というかあれだとrand()を先にdoubleにキャストしないと駄目じゃん…
442デフォルトの名無しさん:04/11/21 12:24:26
正しいソースがあるならテストランできるんだけどな。
#さっきPC-9801DAの電源入れたらMS-DOS版N88Basicがちゃんと動いた。
尤も、Webに繋ぐためにはPC(Win端末)とシリアル(RS-232c)で転送しないとならないけど。
443デフォルトの名無しさん:04/11/21 12:51:18
うちにもDAあるんだがHDDに溜まってる過去のデータを
転送しようとおもっても9600bpsじゃ時間掛かりすぎてorz
444デフォルトの名無しさん:04/11/21 12:56:35
エミュで何とかしよう、と思ったら、ROM-BASICしか使えないorz
445デフォルトの名無しさん:04/11/21 12:57:37
3点を通る円を作りたいのですが、
どのようにをプログラムを作ったらよいかどなたか教えてください。
・分かってる点、始点(X1,Y1)中点(X2、Y2)終点(X3,Y3)です。
円弧は円のみではなく始点から始まって終点まで描画する円弧も作成できるようにしたいです。
・(X-X0)^2+(Y-Y0)^2=r^2の式を使って連立方程式を立て中心(X0,Y0)と半径rを求めたいです。

446デフォルトの名無しさん:04/11/21 12:59:12
>>445
3点がわかっているのだから解は一意に決まるんじゃないの?
手計算で連立方程式も簡単にとけるでしょ。
それとも連立方程式をプログラムで解かないといけないの?
447デフォルトの名無しさん:04/11/21 13:01:39
238==445?
448デフォルトの名無しさん:04/11/21 13:14:47
<<446
三点の値は自由に変えられるようにしたいです。

<<447
はい。またアドバイスがいただけたらと…
449デフォルトの名無しさん:04/11/21 13:16:13
もう何回も答えは出てるだろが
450デフォルトの名無しさん:04/11/21 13:22:38
>>448
だから、三点の座標を(x1,y1),(x2,y2),(x3,y3)として連立方程式を解けばいいじゃないか。
君、この程度の数式もとけないの?
451デフォルトの名無しさん:04/11/21 13:36:20
452デフォルトの名無しさん:04/11/21 13:42:32
>>451 ありがとうございます。
453デフォルトの名無しさん:04/11/21 14:42:36
>>259
オリジナルのBASICプログラムは無駄なコードだらけなので整理した。
/*
  Fractional Derivate
*/

#include  <windows.h>

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

#define  KMAX  100
#define  XMAX  300

#define  MAXBUF  256
#define  PI  3.14159265358979323846

double  ga()
{
  double  r = 0.0;
  int  i;

  for(i = 0; i < 10; i++){
    r += ((double)rand() / RAND_MAX) - 0.5;
  }

  return  r;
}
454デフォルトの名無しさん:04/11/21 14:42:58
int  main(void)
{
  double  ek = PI * 2.0 * 0.7 / XMAX;
  double  a = 2.5 - 1.0;
  double  fmax = 0.0;
  double  fmin = 0.0;
  double  f[XMAX];
  int  x, k;

  srand((unsigned)time(NULL));

  for(x = 0; x < XMAX; x++){
    f[x] = 0.0;
    for(k = 0; k < KMAX; k++){
      double  rk = k + 1.0;
      double  kx = ek * rk * x;
      f[x] += pow((ek * rk), -a) * (ga() * cos(kx) - ga() * sin(kx));
    }
    if(fmax < f[x])
      fmax = f[x];
    if(fmin > f[x])
      fmin = f[x];
  }
455デフォルトの名無しさん:04/11/21 14:44:10
  {
  int  x0 = 100;
  int  y0 = 200;
  double  w = 200.0 / (fmax - fmin);

  HWND  hWnd = NULL;
  HDC  hDC = GetDC(hWnd);
  RECT  r = {100, 100, 400, 300};
  HBRUSH  hbr = (HBRUSH)GetStockObject(GRAY_BRUSH);
  HPEN  hpen = (HPEN)GetStockObject(BLACK_PEN);
  SelectObject(hDC, hpen);

  FillRect(hDC, &r, hbr);

  MoveToEx(hDC, x0 + 0, y0 + 0, NULL);
  for(x = 0; x < XMAX; x++){
    char  s[256];
    sprintf(s, "%24.18f, %24.18f", f[x], f[x] * yw);
    TextOut(hDC, 500, 20 * x, s, strlen(s));
    LineTo(hDC, x0 + x + 1, y0 + (int)(f[x] * yw));
  }

  ReleaseDC(hWnd, hDC);
  }

  return  0;
}

まあ、かなり手抜きなんだが、 >>436 よりはマトモに動く。
456デフォルトの名無しさん:04/11/21 14:51:19
double w = 200.0 / (fmax - fmin);

double yw = 200.0 / (fmax - fmin);

直してくれ。スマソ
457235:04/11/21 16:13:33
もう見てないかもしれませんが

>>437
説明を見落としてました
前に送ったのはクイックソートでした
もういっぺん送ります


あふぉな漏れですみませんorz
吊ってきます・・・
458デフォルトの名無しさん:04/11/21 17:30:31
c++で以下の条件でのプログラムを書く問題です。よろしくお願いします。
○ クラス名:
- bank_account
○ データメンバ:
- name (char 配列,名前)
- personal_code (int 型,暗証番号)
- balance (int 型,残金)
○ メンバ関数:
- init_account(char *name0, int code0, int pay0) (void 型)
口座の初期化を行う.名前,暗証番号,最初の入金を入力する.
- pay_in(int pay) (void 型)
口座に入金する.
- withdraw(int draw) (void 型)
口座からお金を引き出す.ただし暗証番号を入力させて,正しい場合のみ引き出す.
- show_balance() (void 型)
残高照会.名前と残高を表示する.残高がマイナスの場合は加えて”赤字です.」と表示す
る.
- is_correct_code(int code) (bool 型)
暗証番号を調べる.正しければtrue を返し,間違っていればfalse を返す.
※ 必要なら口座の初期化を行うコンストラクタも作成すること.
○ main 関数
下記の流れで処理を行う.
1. 名前,暗証番号,最初の入金を入力し,bank_account クラスの初期化を行う.
2. while ループに入る.
次のように表示して,番号を入力する.
終了の番号(0)が入力されるまでループを繰り返す.
cout << "番号を入力してください." << endl;
cout << "(1:入金,2:引き出し,3:残高照会,0:終了):";
3. (ループの中で)switch 文で入力された番号をもとに処理を分岐させ,それぞれの処理を行う.
ただし,お金を引き出す場合は暗証番号の入力を求めて,暗証番号が正しい場合のみ
引き出すこと.
459デフォルトの名無しさん:04/11/21 17:38:37
そこまでわかっていて何故書けないんだろう…
460458:04/11/21 17:51:14
>>459
愚か者ですまんです。
お察しください。
461デフォルトの名無しさん:04/11/21 18:26:08
#include <iostream>
using namespace std;
class bank_account {
private:
    char *name; int personal_code; int balance;
public:
    ~bank_account(){};
    void init_account(char *name0, int code0, int pay0);
    void pay_in(int pay);
    void withdraw(int draw);
    void show_balance();
    bool is_correct_code(int code);
};
void bank_account::init_account(char *name0, int code0, int pay0) {
    name = name0; personal_code = code0; balance = pay0;
}
void bank_account::pay_in(int pay) {
    balance += pay;
}
void bank_account::withdraw(int draw) {
    balance -= draw;
}
void bank_account::show_balance() {
    cout << "名前:" << name << endl;
    cout << "残高:" << balance << endl;
    if(balance < 0) cout << "赤字です" << endl;
}
bool bank_account::is_correct_code(int code) {
    if(personal_code == code) return true;
    return false;
}
462続き:04/11/21 18:30:20
int main()
{
  int number; int pay,draw,code;
  bank_account ba;
  ba.init_account("暇人", 459, 1000);

  while(1) {
    cout << "番号を入力してください." << endl; cout << "(1:入金,2:引き出し,3:残高照会,0:終了):";
    cin >> number;
    switch(number) {
          case 1:
        cout << "金額?:"; cin >> pay;
        ba.pay_in(pay);
        break;
      case 2:
     cout << "暗証番号?:"; cin >> code;
     if(ba.is_correct_code(code)) {
       cout << "OK" << endl; cout << "金額?:"; cin >> draw;
       ba.withdraw(draw);
     } else { cout << "Error" << endl; }
     break;
      case 3:
        ba.show_balance();
     break;
      case 0:
     return 0;
    } 
  }
}
463C言語/コンパイラ:gcc:04/11/21 18:58:36
ノートから構成されるリスト構造を用いて
名前と電話番号を入力して名前が文字コード順になるように名前と電話番号を
出力するプログラムなのですが、肝心DisplayList以外の関数が出来ません。
どうかよろしくお願いします。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct _node {
  char name[20];
  char phone[12];
  struct _node *next;
}Node;
Node *CreateNode(Node*),*InsertNode(Node*,Node*);
void DisplayList(Node*),FreeList(Node*);
int main(void)
{
  Node *p=NULL,q;
    while(1){
      printf("名前:"); scanf("%s",q.name);
      if(strcmp(q.name,"end")==0) break;
        printf("電話番号"); scanf("%s",q.phone);
        p=InsertNode(p,CreateNode(&q));
      }
      DisplayList(p);
      FreeList(p);
      return;
}
Node CreateNode(Node*){}//ノードの作成(ヒープ領域の確保及び値の設定)
Node *InsertNode(Node*,Node*){}//ノードの挿入
void DisplayList(Node*){}
void FreeList(Node*){}//リスト全体のヒープ領域の開放
464デフォルトの名無しさん:04/11/21 19:49:57
>>463
Node* CreateNode(Node* src){
Node* ret = (Node*)malloc(sizeof(Node));
memcpy(ret, src, sizeof(Node));ret->next = NULL;
return ret;
}
Node* InsertNode(Node* dest, Node* src){
Node* temp;
if (dest == NULL){dest = (Node*)malloc(sizeof(Node));memcpy(dest, src, sizeof(Node));}
else if (dest->next == NULL){dest->next = (Node*)malloc(sizeof(Node));memcpy(dest->next, src, sizeof(Node));}
else if (!(strcmp(dest->next->name, src->name) < 0)){temp = (Node*)malloc(sizeof(Node));memcpy(temp, src, sizeof(Node));temp->next = dest->next;dest->next = temp;}
else /* strcmp(dest->next->name, src->name) < 0 */InsertNode(dest->next, src);
return dest;
}
void DisplayList(Node* root){Node* cur = root;while (cur != NULL){printf("name:%20s phone:%12s\n", cur->name, cur->phone);cur = cur->next;}}
void FreeList(Node* ptr){if (ptr->next != NULL) FreeList(ptr->next);free(ptr);}
465463:04/11/21 20:37:38
>>464
ありがとうございました。とっても助かりました。
がんばります。
466デフォルトの名無しさん:04/11/21 21:10:12
ノートから構成されるリスト構造を用いて
ノートから構成されるリスト構造を用いて
ノートから構成されるリスト構造を用いて
467デフォルトの名無しさん:04/11/21 21:37:31
[head] - [ノート1] - [ノート2] - [ノート3] - [NULL]
468デフォルトの名無しさん:04/11/21 21:41:04
短縮

Node* InsertNode(Node* dest, Node* src){
if (dest == NULL){dest = src;}
else if (dest->next == NULL){dest->next = src;}
else if (!(strcmp(dest->next->name, src->name) < 0)){src->next = dest->next;dest->next = src;}
else InsertNode(dest->next, src);
return dest;
}

間違ってたらスマソ
469デフォルトの名無しさん:04/11/21 21:44:33
大学ノートか?バインダーか?
470デフォルトの名無しさん:04/11/21 21:46:33
ノードの間違い


だと釣られてみるテスト
471デフォルトの名無しさん:04/11/21 21:46:38
デスノート万歳!
472デフォルトの名無しさん:04/11/21 21:47:10
あれ面白いか?くだらない。
473デフォルトの名無しさん:04/11/21 21:51:10
DEATH NOTEって書いた大学ノート持った女子見かけたよ。


某県立高校にて。
474464:04/11/21 22:31:45
>>468
そっちが正しい。
475デフォルトの名無しさん:04/11/21 22:32:54
1.キーボードから入力された10真数を、2真数として出力するプログラムをつくりなさい。
2進数への変換は、商が0になるまで10進数を2で割り、余りを逆の順番で並べる方法を
用いる。ただし、入力は正の整数であって、最大値は16383(すべてが1である14桁の2進数)
とする。

2.キーボードから入力した文字列の中の、英大文字、英小文字、数字、その他(記号など)の
個数を出力するプログラムを、ポインタを使ってつくりなさい。

3.キーボードから和暦(英文字に続く数字)を入力したとき、西暦年を出力するプログラムを
プログラムを作りなさい。ただし、明治はmまたはM、大正はtまたはT、
昭和はs、またはS、平成はhまたはHとし、数字は必ず2けたで入力するものとする。
たとえば、平成7年の場合は、H07またはH07と入力すること。

どなたかお願いしますm(__)m
476デフォルトの名無しさん:04/11/21 22:34:41
自分で一切やろうとしないで全部ここにやらせようという考えかw
477デフォルトの名無しさん:04/11/21 22:36:35
ここってそういうスレじゃないんですかm(__)m
478デフォルトの名無しさん:04/11/21 22:40:19
>>477
自分でやって駄目だったらって位置付けだと思う。
それってC言語の初歩の初歩じゃん。
自分でやった方がいいと思うし、自分で出来るレベルの問題だよ。
>>475
1.解いたよ

#include <stdio.h>
void main(void){
int i, j, k;
int kazu;
char ss[20];
scanf("%d", kazu);
i=0;
j=0;
label0:
if(kazu==0)goto label1;
if(kazu&1){ss[i]='0';}else{ss[i]='1';}
kazu = kazu - (kazu/2);
j++;
goto label0;
label1:
label2:
if(j==-1)goto label3;
putchar(ss[i]);
j = j-1;goto label2;
}label3:
}
やべ、下のほうにある
putchar(ss[i]);
は、
putchar(ss[j]);
でお願い。

問題解かしてもらってる立場の分際で
バグ作っちゃったりしてほんとにごめんなさい。
481デフォルトの名無しさん:04/11/21 22:49:29
>>480
あなた問題欲しいの?
ならf2cをVC6.0で使えるようにして、ついでに公開してよ。
482デフォルトの名無しさん:04/11/21 22:53:28
この課題、難しすぎて解けません!!
どなたか難問に挑戦してくださいますか?
課題:標準入力からテキストファイルを読み込み、 行を短い順に出力しなさい。 但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い 出力し、空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力 した出力と、ttp://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに依存 しなければなりません。 勝手な上限を設けてはいけません。
>>475さん
問2もできました。
どうぞ

void main(void){
int i;
char *p;
char ss[80];
i=0;
scanf("%s", ss);
p=ss;
label0:
if(*p==0)goto label1;
i++;p++;
goto label0;
label1:
printf("%d個文字があったよ\n", i);}
484デフォルトの名無しさん:04/11/21 22:55:12
何回もおんなじ物投下すんなぼけ
485482:04/11/21 22:55:13
実行例

入力
あいうえお
あい
あいう

出力
あい
あいう
あいうえお
>>481

int main(void)
{
label0:
goto label0;
/*ここまでこれるかは知らんけど*/
return 0;
}
487482:04/11/21 23:04:46
ヒント
C++ で行の取得をするには std::istream のメンバ関数である getline メソッ ドを使います。 これは getline(文字配列のポインタ, 文字数, 区切り文字)で呼びます。
ここで、区切り文字が来る前に文字数-1 文字だけ読み込んでしまった時、 std::ios:failbit が ON になってしまいます。
この場合 clear() メソッドでこのビットを OFF にする必要があります。 但し、この clear() メソッドは std::ios:eofbit も OFF にしてしまうので、 注意して使う必要があります。
以下は標準入力から各行を高々 80 文字だけ読み込み出力するプログラムです。
488482:04/11/21 23:05:41

#include <iostream>
using std::cin;
using std::cout;
using std::endl;
main(){
char buffer[81];
while(!cin.eof()){
cin.getline(buffer,sizeof(buffer));
cout << buffer << endl;
while((!cin.eof())&&cin.fail()){
cin.clear();
cin.ignore(80,'\n');
}
}
}
これを元にお願いします。


goto推奨委員会に入りたい君は名前欄に
goto推奨委員会#goto
と入力。
490デフォルトの名無しさん:04/11/21 23:14:52
int main()
{
  goto main;
  return 0;
}

for VC++
491デフォルトの名無しさん:04/11/21 23:18:50
492デフォルトの名無しさん:04/11/21 23:18:51
>>490
?なにこれ?
493482:04/11/21 23:29:59
>>491さん
問題といてもらったのは嬉しいんですが・・・
m、s、t、h、Hの時にうまくいきません。
もう少しがんばってください。
あと、もうちょっと簡単に解いてください
494259:04/11/21 23:30:05
>453さん
返信がおくれてすいません。
プログラム本当にありがとうございます。
今回色々な人に助けられて、無事に課題を終えることができました。
皆様本当にありがとうございますm(_ _)m
495デフォルトの名無しさん:04/11/21 23:38:07
496デフォルトの名無しさん:04/11/21 23:40:42
構造体の配列について質問です。
構造体の配列を使って以下のように出力するとします

出席番号 名前 点数1 ・・・ 点数N 平均点 評価

メンバには上の全てをくわえ、平均点は点数1〜Nで計算、評価は平均点で考えるとします。
このとき平均点は0を入れて初期化が適当ですが、評価のところには何を入れればよいのでしょうか。
どなたかご教授願います。
497デフォルトの名無しさん:04/11/21 23:51:41
「評価は表示等に使われる前に必ず平均点から算出されている」
が保証されているなら、何を入れていてもいい気がする。

もし未評価状態でも表示したいなら、「未評価」な状態を一個定義してそれを設定する
498496:04/11/21 23:53:11
今はこんな感じになっています。後は評価が出力されれば課題終了です。
#include<stdio.h>
struct data{int no;
char name[50];
int tensu[2];
double avg;
char gj[5];};
void main(void)
{int i;
char h[5];
struct data ch[]={{101,"名無しさん",{42,12},0,h[0]},
{403,"名無し君",{6,5},0,h[1]},
{404,"名無しちゃん",{60,23},0,h[2]},};
for(i=0;i<3;i++){ch[i].avg=(float)(ch[i].tensu[0]+ch[i].tensu[1])/2;}
printf("番号   氏名    教科1   教科2    平均点  評価\n");
for(i=0;i<4;i++){if(ch[i].avg<=100&&81<=ch[i].avg){h[i]='A';}
              else if(ch[i].avg<=80&&61<=ch[i].avg){h[i]='B';}
              else if(ch[i].avg<=60&&41<=ch[i].avg){h[i]='C';}
else{h[i]='D';}
printf("%d     %s  %d  %d  %d  %.1f  %c\n",ch[i].no,ch[i].name,ch[i].tensu[0],ch[i].tensu[1],ch[i].avg,gaku[i].gj);}
}
499303:04/11/22 00:26:09
>>482
俺のは無視か(-_-#)
500デフォルトの名無しさん:04/11/22 00:28:03
こちら側も選ぶ権利はある
501デフォルトの名無しさん:04/11/22 00:31:01
ワラタ
502デフォルトの名無しさん:04/11/22 00:32:25
後からチョロチョロと情報小出しにしておいて文句言うなよ。
>>1より
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
503デフォルトの名無しさん:04/11/22 00:35:34
質問。

後になって解答につけたしをするのはOKですか?
504デフォルトの名無しさん:04/11/22 00:51:07
>>503
答えてもらえる確率が下がるだけです.
505デフォルトの名無しさん:04/11/22 00:54:36
なんで解答側が答えて"もらう"んだろう....
506デフォルトの名無しさん:04/11/22 01:08:26
質問者がわのことだろ、何いってんだ。
507デフォルトの名無しさん:04/11/22 01:11:31
何だ、質問者が解答に対して何か付け加えると勘違いしたのか。
正直スマンカッタ
508デフォルトの名無しさん:04/11/22 02:27:21
初心者です。
index10.txt、index20.txt、hello30.txt、hogehoge.txtが生成されないの
はなぜですか?お願いします。
#include <iostream.h>

int main() {
int i;
for (i <= 0; i <= 5; i++){
switch ( i ){
case 1:
freopen("index10.txt", "w", stdout);
printf("Hello, World!");
fclose(stdout);
break;
case 2:
freopen("index20.txt", "w", stdout);
printf("Sage, World!");
fclose(stdout);
break;
case 3:
freopen("hello30.txt", "w", stdout);
printf("Hoge, World!");
fclose(stdout);
break;
default:
freopen("hogehoge.txt", "w", stdout);
printf("mogemoge, World!");
fclose(stdout);
break;
}
}
}
509デフォルトの名無しさん:04/11/22 02:29:53
>>508
初心者です。ではなくて
ネタです。だよな?
510デフォルトの名無しさん:04/11/22 02:30:28
stdout
511デフォルトの名無しさん:04/11/22 03:17:44
freopen, fclose, printfを使っておきながらiostream.hとは何事か。
512マイク ◆yrBrqfF1Ew :04/11/22 04:15:44
.hは過去の遺物だ。
513デフォルトの名無しさん:04/11/22 06:38:05
イオ → イオラ → イオストリーム
514デフォルトの名無しさん:04/11/22 07:55:39
タワラ
515デフォルトの名無しさん:04/11/22 08:48:57
ポインターの利点ってアドレスにある値を直接操作できるってことでええんですかね?
配列の時にP+1とかって利用できるのが利点なのは後付けなきがするのですが。
516デフォルトの名無しさん:04/11/22 08:49:06
オイ→オラオラ→シュトロハイム
517デフォルトの名無しさん:04/11/22 08:54:44
>>515
それであってると思うよ。でも、
配列の機能がポインタの機能の後付みたいな物でないか?
518デフォルトの名無しさん:04/11/22 09:26:20
すみません
前回こちらに来ましたが、説明不足で答えて頂けなかったので
cpp全体をファイルをうぷしてまいりました

しかし!英語での出題となっております
読める方、、いるのかどうかわかりませんが、よろしくおねがいいたします
拡張子をcppに変更してお使いくださいまし

ttp://f37.aaa.livedoor.jp/~kisiseal/upseal/img/090.lzh

入力用ファイル

ttp://f37.aaa.livedoor.jp/~kisiseal/upseal/img/091.lzh
519デフォルトの名無しさん:04/11/22 09:28:59
>>517
サンクス
やっぱり値操作がメインですよね
二行目は多分同じことを言ってるかも?
520gakusei:04/11/22 10:01:29
http://www.iis.u-tokyo.ac.jp/~susaki/c/func1.html
ここなんですけど、事情があって授業を長期間休んでしまったせいで
全く分かりません。
もし宜しければ何方かお願いしますm(_ _)m
問題は1〜5番です

別のスレにも出現していますが勘弁してください^^;
単位が本当にヤバクテ(x_x)
521デフォルトの名無しさん:04/11/22 10:07:29
>>518
開けね
つーか>読める方、、いるのかどうかわかりませんが なめすぎ
今のご時世、英会話とまで行かなくともせめて読めなきゃやってられんぞ

>>520
ほとんどが、正常に動作するか確認せよ。と書かれているが…
522デフォルトの名無しさん:04/11/22 10:16:18
>520
マルチヤメレ
いろんなスレの人に迷惑がかかるだろがヴォケ

1はそのまま実行するだけ。
2は****の部分をheightにして実行。
3も2と同様に。
4は最初の****のところにheightを、次の****のところにheight,weight,bmi,sweightをいれる。
5は実行するだけ。


…もしかして釣りか?
523518:04/11/22 10:19:00
http://f37.aaa.livedoor.jp/~kisiseal/upseal/upload.php

ここの90番91番です
お手数かけてもうしわけありません。

>>521
了解です;
もっと英語勉強しまする

よろしくおねがいしますm(_ _)m
524デフォルトの名無しさん:04/11/22 10:20:54
>>520
と、とうだいせいdうぇうか?
525gakusei:04/11/22 10:21:02
>>522
有難うございますm(_ _)m
ネタじゃないです^^;
526デフォルトの名無しさん:04/11/22 10:23:19
>>522の補足
5はscanfの行を while( scanf(略) != EOF ){ に変更して最後にも } をつける
527gakusei:04/11/22 10:24:43
有難うございます^^
感謝しますm(_ _)m
528522:04/11/22 10:27:27
>526
補足サンクスコ
529デフォルトの名無しさん:04/11/22 10:27:33
520 名前:gakusei[] 投稿日:04/11/22 10:01:29
http://www.iis.u-tokyo.ac.jp/~susaki/c/func1.html
ここなんですけど、事情があって授業を長期間休んでしまったせいで
全く分かりません。
もし宜しければ何方かお願いしますm(_ _)m
問題は1〜5番です

別のスレにも出現していますが勘弁してください^^;
単位が本当にヤバクテ(x_x)
530デフォルトの名無しさん:04/11/22 10:30:32
またまんこの丸投げか
531デフォルトの名無しさん:04/11/22 10:32:44
520は怖くて試せなかった。きっとデ・・・
532デフォルトの名無しさん:04/11/22 10:33:55
>518
これホントに宿題か?
533デフォルトの名無しさん:04/11/22 10:37:13
>526
普通にwhile(1){ … }でいいと思うんだが
534518:04/11/22 11:10:12
宿題ですよー。
いくつかのソースは入力済みです。

InsertTransaction関数だけでもなんとか教えて頂けませんでしょうか・・・
535デフォルトの名無しさん:04/11/22 11:28:30
バカ東大生
536デフォルトの名無しさん:04/11/22 11:35:54
しーーっ!
537デフォルトの名無しさん:04/11/22 11:40:13
東大生で女で入院か・・・・・・ネタで(ry
538デフォルトの名無しさん:04/11/22 11:57:18
>>533
問題文は Ctrl+C ではなくCtrl+D を指定してるんだぞ?
539デフォルトの名無しさん:04/11/22 13:43:18
バッファがあふれても知らんけど…。
int main(void) {
    double height, weight, bmi, sweight;
    char buf[256];
    while (printf("身長(m)と体重(kg)を入力してください "), fgets(buf, sizeof(buf), stdin)) {
      if (sscanf(buf, "%lf%lf", &height, &weight) != 2)
          continue;
      /* BMIの計算 */
      bmi = bmi_cal(height, weight);
      /* 標準体重の計算 */
      sweight = std_weight(height);
      /* 肥満度の判定 */
      message(height, weight, bmi, sweight);
  }
  return 0;
}
540デフォルトの名無しさん:04/11/22 14:57:16
C言語についての課題です。
「50単語程度からなる英文(複数のセンテンスでも可)をファイルから読み込み、その文章中に出現する単語とその頻度を画面表示するプログラムを作成すること。」です。
実行結果が以下のようになるようにお願いします。
ファイルの内容例
Put your hand on a hot stove for a minute, and it seems like an hour.
Sit with a pretty girl for an hour, and it seems like a minute.
That's relativity.
実行結果
Put[1] your[1]hand[1]
on[1]a[4]stove[1]
for[1]minute[2] and[2]
it[2]seems[2] like[2]
an[2]hour[2]Sit[1]
with[1]pretty[1] girl[1]
for[1]That’s[1]relativity[1]
541デフォルトの名無しさん:04/11/22 15:06:31
>>540
That と that は同一として扱うのか?
542デフォルトの名無しさん:04/11/22 15:09:11
>>540
hotが消えたりforが二回数えられたり、難しすぎて漏れにはわかんないや。
543デフォルトの名無しさん:04/11/22 15:21:25
>>541
 別みたいです。
>>542
 すいません。hotが消えてるのと、forを2回数えてるのはミスです^^;
544デフォルトの名無しさん:04/11/22 16:18:40
C++言語の課題です
D=v^2sin2θ+Aw(vsinθ)^2
上の式において、D,v,A,wは定数として値を与えられる。このときのθを求める問題です
よろしくお願いします
545デフォルトの名無しさん:04/11/22 16:19:16
宿題です。やってみましたが、どうもうまくいきません。誰か教えてください。

以下のような動作をするプログラムを、ビット演算子利用して作成しなさい。
まずキーボードからアルファベット1文字読み込む。
ただし、アルファベット以外の文字が入力された場合は、アルファベットが入力されるまで入力を繰り返す。
そのようにしてキーボードから入力されたアルファベットが大文字なら小文字へ、小文字なら大文字へ変換し、
表示するプログラムを作成しなさい。ただし、変換する部分の処理には必ずビット演算子を使用すること。

注意)
・必ず、入力された文字がアルファベットであるかどうかを判断して、アルファベットが1文字入力されるまで、入力を繰り返すこと。

・C言語には大文字に変換する標準関数toupperや小文字に変換する標準関数が用意されているが、それらを使用してはならない。
546545:04/11/22 16:24:11
C言語の課題です。よろしくお願いします。
547デフォルトの名無しさん:04/11/22 16:35:39
環境依存ながら手抜くなら 0x20 でビット差とるか、引き算もしくは足し算で
全ての環境でうまいことやりたいのならテーブルで書くしかない
548デフォルトの名無しさん:04/11/22 16:43:30
課題 1-1
次の条件を満たす関数 dispArray() を作りなさい。

入力は整数型のポインタ
入力されたポインタに対して、順に格納されている正の整数を 10 個ずつ表示する。
入力に -1 が入っていたら終了する
例えば整数型の配列 a[] が 1 から 15 まで順に入っていて、最後に -1 が入っている時、dispArray(a) は次のような出力をする。

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15


課題 1-2
次の条件を満たす関数 rotate() を作りなさい。

入力は整数型のポインタ
入力データはポインタから順に正の整数が並び、最後に -1 の値で終了する
この関数は入力されたポインタに対して、最初の正の整数値を一番後ろ (-1 の手前)に移動し、残りのデータは一つずつ前にずらす。
例えば 1, 2, 3, -1 という配列の先頭番地を rotate() に与えると 2, 3, 1, -1 となります。
549デフォルトの名無しさん:04/11/22 16:46:16
課題 1-3
課題 1-1, 1-2 で作成した dispArray(), rotate() に対して次のプログラムを動かし結果を報告しなさい。

#include <stdio.h>
dispArray(int *p);
rotate(int *p);
#define N 99
main(){
int *a[5];
int b[]={-1};
int c[]={1,-1};
int d[]={1,2,3,-1};
int e[N+1];
int i,j;
for(i=0;i<N;i++){
e[i]=i;
}
e[N]=-1;
a[0]=b; a[1]=c; a[2]=d; a[3]=e; a[4]=NULL;
for(i=0;a[i]!=NULL;i++){
dispArray(a[i]);
for(j=0;j</* 3 桁*/; j++){
rotate(a[i]);
}
dispArray(a[i]);
}
}


プログラム音痴です。。。
せめて、課題2のヒントだけでも欲しいです。。・゚・(ノД`)・゚・。
550デフォルトの名無しさん:04/11/22 16:47:15
>>5 のテンプレに従ってないものは無視します
551デフォルトの名無しさん:04/11/22 16:54:12
>>545
ASCIIコード限定なら・・・

#include <stdio.h>
#include <ctype.h>

int main()
{
int c;

do{
c = getchar();
}while(!isalpha(c));

if(islower(c))
c = c ^ 0x20;
else if(isupper(c))
c = c | 0x20;

putchar(c);

return 0;
}
552デフォルトの名無しさん:04/11/22 16:55:00
スレ汚しごめんなさい・・・

やっぱ他力本願は駄目ってことなんだろうと思うので
自力でがんばる事にします。


気を悪くされたかた、失礼しました。。。
553デフォルトの名無しさん:04/11/22 16:57:33
>>552
このスレで珍しく見込みがありそうな質問者ハッケン
ガンガレ
554デフォルトの名無しさん:04/11/22 16:59:36
がんばってみます!

ソースが書き終わったら
添削だけお願いしようかと思うので
その時はまたよろしくお願いします。
555545:04/11/22 17:17:54
>551
ありがとうございました。すごく参考になりました。m(-_-)m
556デフォルトの名無しさん:04/11/22 17:27:57
おいおい>>555よ、はやまるな。
>>551の場合分けは必要ないぞ。
c = c^0x20でビットは反転される。
557デフォルトの名無しさん:04/11/22 17:28:20
549 == 552
かもしれないのでヒントを
rotateに渡す添え字間違ってる…
558デフォルトの名無しさん:04/11/22 18:25:04
>>556
たぶん islower isupper isalpha も使っちゃいけないんだと E.S.P. してみる。
559デフォルトの名無しさん:04/11/22 18:29:37
>558
実はそれ習ってなくてよくわかりません・・・
560545:04/11/22 18:30:55
559は私です。名前入れるの忘れてました。
561デフォルトの名無しさん:04/11/22 18:40:56
>>545
#include <stdio.h>

typedef enum { false, true } bool;

bool isAlpha(int c)
{ return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z'); }

char implicit_cast(int c)
{ return c; }

int main(void)
{
    int c;

    do {
        c = getchar();
    } while (!isAlpha(c));

    printf("%c", implicit_cast(c ^ 0x20));

    return 0;
}
562545:04/11/22 18:47:42
>561
ありがとうございました。おかげさまで何とか完成することができました。
次にやるときは自力でできるようにがんばりたいと思います。お世話になりました。
563デフォルトの名無しさん:04/11/22 18:50:03
enumは分かるのか・・
564545:04/11/22 19:04:36
>563
enumはわかりませんでした。561さんのを参考にして、
自分の分かるやつを見ながらいろいろやっていたら、何とか作れました。
重ね重ねありがとうございました。
565デフォルトの名無しさん:04/11/22 22:35:01
これがうまく動きませんです・・・
よろしこおながいします

#include <zaisan>

int main(void)
{
  person 俺, akemi;

  int zaisan(3000000);

  kekkon(俺, akemi);

  for(;;) {
    zaisan -= akemi;

    if (zaisan <= 0)
      heartbreak;
  }
  free(俺);

  return 田舎;
}
//--------------------構成: 俺 - Win32 Debug--------------------
//コンパイル中...
//俺.cpp
//俺.cpp : fatal error C1083: インクルード ファイルがオープンできません。'zaisan': No such file or directory
//cl.exe の実行エラー
//
//俺.obj - エラー 1、警告 0
566デフォルトの名無しさん:04/11/22 22:37:23
free(>>565);
567デフォルトの名無しさん:04/11/22 23:30:20
>>565
BonusSDKをインストールしてみたら?
568デフォルトの名無しさん:04/11/23 00:09:57
>>565
/* zaisan.h        */
#include <stdio.h>
typedef int person;
#define inaka 0
#define jisatu -1
#define free(x) { printf("実家に帰ろう…\n"); (x) += 100000;}
#define heartbreak { printf("破局\n"); break; }
void kekkon(person &m, person &f) {
 m = 1000; f = 1000000; printf("結婚\n");
}

#include "zaisan.h"
#include <stdio.h>

int main(void)
{
  person ore,akemi;  int zaisan = 3000000; int day = 0; int ps;
  kekkon(ore, akemi);
  for(;;) {
    zaisan -= akemi;
    zaisan += ore;
    printf("%d日目\n",day);
    day++;

    if (zaisan <= 0)
      heartbreak;
  }
  free(ore);     
  return inaka;
}
569デフォルトの名無しさん:04/11/23 00:23:19
ワロタw
570デフォルトの名無しさん:04/11/23 04:20:50
C++導入しようぜ

#define MIKON 0
#define KIKON 1

class person{
private:
    char name[32];
    unsigned int nenshu;
    unsigned int married;
    int zaisan;
public:
    person(char* n, int z) { strcpy(name, n); zaisan = z; }
    ~person(void) { std::cout << "さようなら";}
    void kekkon() { married = KIKON; }
    void rikon(unsigned int isharyou);
    void getjob(unsined int s) { nenshu = s; }
    void mushoku() { nenshu = 0; }
    void zaisanhendou(int zh) { zaisan += zh; }    
}

void person::rikon(unsigned int isharyou){
    if(married==1){
        married = MIKON;
        zaisan -= isharyou;
}
571デフォルトの名無しさん:04/11/23 04:27:28
明美が高すぎる件について
572デフォルトの名無しさん:04/11/23 04:44:56
女は結局金金カネカネだからな。。。
573デフォルトの名無しさん:04/11/23 04:50:34
女は時間と金がかかる
Girls require time and money(女 = 時間 x 金)
時は金なり
Time is money(時間 = 金)
⇒女 = 金 x 金
574デフォルトの名無しさん:04/11/23 04:56:28
^2じゃ効かねーよ
575sa:04/11/23 11:33:03
この問題を解いてもらえませんか?標準入力からテキストファイルを読み込み、
行を短い順に出力しなさい。 但し、行は最大 80 文字とし、 80 文字以上の
行は先頭 80 文字だけの行として取扱い 出力し、空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに依存
しなければなりません。 勝手な上限を設けてはいけません。
576デフォルトの名無しさん:04/11/23 12:04:39
なんやえらい宿題たまってるなあ。
暇やからどれかやってみてもええけど、どれがまだなんかわからんわ。
それともテンプレ無視はまとめて強制退去処分(>>550サンショー)になるんかいな。

ここの常駐者やないけど、ちょっと言わしてもらいま。
勉強の助けになるんならやってもええけど、
解答出しても、それ見て勉強するなんてありえへんやつばっかりちゃうかいな。
ろくに解答も実行結果も確認せんと、そのまま提出してるだけちゃうかと思うわ。
>>553>>552の意見はもっともやな。
そもそもテンプレ(>>5)しっかり読んで、細かいこともしっかり書かなあかんで。
やる気ないのバレバレやと、だれも宿題やってくれへんでー。

なんや感じ悪いこと書いてスレに水差したみたで、えらいすんまへん。
577デフォルトの名無しさん:04/11/23 12:08:10
>>576
このスレは宿題に答える隔離スレ
件のテンプレもスレタイどうこうで暴れてたバカが作った物
578576:04/11/23 12:24:08
>>577
さよですか。質問テンプレの内容は便利そうに見えたんやけど、
外野の補欠でっさかい、いらんことは言わんときますわ。すんまへん。
579デフォルトの名無しさん:04/11/23 12:59:50
質問テンプレどうこうより、変に省略せず全文を書いて欲しいのと、
長いソースは>>1のアップローダ使って欲しい。
580デフォルトの名無しさん:04/11/23 13:16:57
581sa:04/11/23 14:18:43
>>580
どういうことですか?
582デフォルトの名無しさん:04/11/23 14:27:17
c言語。初心者です。

プログラム実行中、常にcsvファイルへのアクセスがあります。
csvファイルは
氏名(半角カナ),住所(Shift_JIS),電話1(半角数字),電話2,メアド1(半角英数記号),メアド2
で、保証されているのは氏名のみ。1行の長さは任意。
maxは1000行程度。

アクセスの種類は検索、更新。
更新時は該当行への検索結果を表示後、更新という処理の流れなので
i/oを削減するために、csvファイルに対する検索用の簡単なindexテーブルを
RAMに保有することにしました。

indexテーブルの目的は、更新対象のcsvファイル内の位置を特定するためと、
検索時にはファイルへのアクセスはせず、検索結果としてテーブルの氏名のみ表示。
ややこしいハッシュテーブル等は使用しません。

indexテーブル、プログラム実行時の初回作成と、
csvファイル更新時のタイミング。テーブルに保有するのは
「氏名」と「csvファイル内での位置」
としたとき、「csvファイル内での位置」は単純に行位置を保有するor
ftell等でその行の先頭のオフセットを取得する
のどちらがスマート&高速?

行位置だと更新時に目的行までfreadで読む。
オフセットだと一発アクセス可能?

583デフォルトの名無しさん:04/11/23 14:27:54
>581
過去ログ嫁
584sa:04/11/23 14:30:53
どうやったら見れるんですか?
585デフォルトの名無しさん:04/11/23 14:31:02
>582
高々1000行、全部メモリでやれ
586デフォルトの名無しさん:04/11/23 14:31:12
×indexテーブル、プログラム実行時の初回作成と、
○indexテーブルはプログラム実行時の初回作成と、
587sa:04/11/23 14:39:55
>>583
初心者なんで教えてください。
588デフォルトの名無しさん:04/11/23 14:43:37
float n[5]に適当な数値が入っているとして、
これを一定の刻みに整頓するプログラムを作成せよ。

例:「1.3, 1.6, 2.8, 1.0, 0.1」という数列を
0.5刻みで整頓させ「1.5, 1.5, 3.0, 1.0, 0.0」とする。

Cのコンソールで5つの数値と区切り幅を入力させる感じでお願いします。
区切りに吸着しさえすればよいです。
589デフォルトの名無しさん:04/11/23 14:53:06
587 名前: sa [[email protected]] 投稿日: 04/11/23 14:39:55
>>583
初心者なんで教えてください

アフォか
590デフォルトの名無しさん:04/11/23 14:55:38
>>589
なんてこと言うんですか!
私は初心者ですよ?!
初心者は大事にしないとけませんにょ!
591デフォルトの名無しさん:04/11/23 15:05:43
>>590
こちらへどうぞ

PC初心者
http://pc6.2ch.net/pcqa/
592デフォルトの名無しさん:04/11/23 15:06:13
>>588
#include <stdio.h>
#define N 5
int main()
{
float n[N], d;
int i, k;

for (i=0; i<N; i++) {
printf("n[%d]=",i);
scanf("%f", &n[i]);
}
printf("d=");
scanf("%f", &d);

for (i=0; i<N; i++) {
k = (int)(n[i]/d);
if ((int)(n[i]/d*10)%10 >= 5) k++;
printf("%f ",d*k);
}
return 0;
}
593デフォルトの名無しさん:04/11/23 15:45:40
初心者には単位はあげられません
594gakusei:04/11/23 16:13:45
>>539
有難うございましたm(_ _)m
595デフォルトの名無しさん:04/11/23 16:22:01
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
596デフォルトの名無しさん:04/11/23 16:23:28
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
597デフォルトの名無しさん:04/11/23 16:26:51
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
598デフォルトの名無しさん:04/11/23 16:30:24
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
599デフォルトの名無しさん:04/11/23 16:32:00
#include<stdio.h>
int main()
{
int n,i,sum;
/*キーボードから整数nを読み込み8,10,16進数で表示する*/
/*1からnまでの総和を求める*/
scanf("%d",&n);
printf("%6o\n",n);/*6文字幅で8進数として表示*/
printf("%6d\n",n);/*6文字幅で10進数として表示*/
printf("%6x\n",n);/*6文字幅で16進数として表示*/
for (i = 1, sum = 0; i <= n; i++){
sum+=1;
}
printf("1 - %-3d, sum = %6d\n", n, sum); /*総和を表示*/
return 0;
}

CのプログラムをC++で書き換えるというのが問題です。
#include <iostream>
using namespace std;
int main()
{
くらいまでしか分かりません・・。よろしくお願いします。
600デフォルトの名無しさん:04/11/23 16:35:56
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。
601デフォルトの名無しさん:04/11/23 16:47:59
課題
入力ファイル(テキストファイル)の中の文字、空白、タブ(水平)
改行数を調べて結果を表示するプログラムを作れ。

エスケープシーケンス(\n 改行)?を利用するみたいなんですが
よくわかりません。あと、テキストをプログラムに入力する際の
リダイレクトの使い方がよくわかりません。
言語はCです。よろしくお願いします。
602デフォルトの名無しさん:04/11/23 16:48:46
帰ってくれ
603デフォルトの名無しさん:04/11/23 16:49:45
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

できれば、夜の7時までにお願いします。その後遊びに行きたいので。
604デフォルトの名無しさん:04/11/23 16:50:31
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

できれば、夜の7時までにお願いします。その後遊びに行きたいので。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
605デフォルトの名無しさん:04/11/23 16:59:35
ばか
606デフォルトの名無しさん:04/11/23 16:59:50
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

できれば、夜の7時までにお願いします。その後遊びに行きたいので。
607デフォルトの名無しさん:04/11/23 17:00:20
質問者はトリップつけろよー
608デフォルトの名無しさん:04/11/23 17:00:44
バカ!バカ!まんこ!!
609デフォルトの名無しさん:04/11/23 17:03:08
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

お前ら早く答え教えろよ!いい加減に教えないと頃すぞ!!
610デフォルトの名無しさん:04/11/23 17:20:19
サイン波やコサイン波を用いて、
ルビンの壷
ttp://www.geocities.co.jp/HeartLand-Himawari/6563/rubin.gif
を書きたいのですが、この曲線を出す数式ってわかりますか?
(黒い部分は空白にして、白い部分を*で埋めます)

いまはここまでしかできません。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=134&fi=no
611デフォルトの名無しさん:04/11/23 17:33:03
declaration of `R' as multidimensional array must have
bounds for all dimensions except the first

612デフォルトの名無しさん:04/11/23 17:34:14
declaration of `R' as multidimensional array must have
bounds for all dimensions except the first

というエラーメッセージが出ました。これって
どういうことですか?教えてください。
613デフォルトの名無しさん:04/11/23 17:35:36
declaration of `R' as multidimensional array must have
bounds for all dimensions except the firstって事です。
614デフォルトの名無しさん:04/11/23 17:36:40
declaration of `R' as multidimensional array

must have bounds for all dimensions except the first
って事です。
615デフォルトの名無しさん:04/11/23 17:37:39
a[][N]はいいけどa[][]はだめって事だろ。
616デフォルトの名無しさん:04/11/23 17:51:16
文字列long_stringを宣言し、キーボードから入力した短い文字列が
long_string内に現れているかを判定するプログラムなんですが以下の
プログラムでは最も先頭の要素しか探索できません。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=135
複数回出現する場合にはその全てを表示するようにしたいのですが。
ご教授お願いします。
617デフォルトの名無しさん:04/11/23 17:52:33
関西学園さんこんにちは
618599:04/11/23 17:57:23
どなたかお願い・・
619デフォルトの名無しさん:04/11/23 17:59:31
>>599,618
はいよ。
#include <iostream>
#include <stdio.h>

using namespace std;
int main()
{
int n,i,sum;
/*キーボードから整数nを読み込み8,10,16進数で表示する*/
/*1からnまでの総和を求める*/
scanf("%d",&n);
printf("%6o\n",n);/*6文字幅で8進数として表示*/
printf("%6d\n",n);/*6文字幅で10進数として表示*/
printf("%6x\n",n);/*6文字幅で16進数として表示*/
for (i = 1, sum = 0; i <= n; i++) sum++;
printf("1 - %-3d, sum = %6d\n", n, sum); /*総和を表示*/
return 0;
}
620デフォルトの名無しさん:04/11/23 18:00:50
>>599
C++でもその元のソースは問題なく使えると思うのだが、何を持ってC++に書き換えたと判断するんだ?
#出力の整形にprintf()系を使うなということなのかな?
だとしたら私はパスだ。
621デフォルトの名無しさん:04/11/23 18:04:25
>>619
馬鹿野郎


- for (i = 1, sum = 0; i <= n; i++) sum++;
- printf("1 - %-3d, sum = %6d\n", n, sum); /*総和を表示*/
+ printf("1 - %-3d, sum = %6d\n", n, n * (n + 1) / 2); /*総和を表示*/

だろ。
622デフォルトの名無しさん:04/11/23 18:04:56
課題
『標準入力からテキストファイルを読み込み、行を短い順に出力しなさい。
但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い出力し、
空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力した出力と、
http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、
最後の 5 行を示しなさい。

なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。勝手な上限を設けてはいけません。』

CとC++のどちらでも構いません。よろしくお願いします。

夜の7時までにお願いします。今コンパ中なんで、帰ったらできてるようにな。
623デフォルトの名無しさん:04/11/23 18:19:36
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int n,i,sum;
    cin >> n;
    cout << setw(6) << oct << n << endl;
    cout << setw(6) << dec << n << endl;
    cout << setw(6) << hex << n << endl;
    for(i=1, sum=0; i<=n; i++) {
        sum += 1;
    }

    cout << dec << "1 - " << setw(3) << left << n << ", sum =" << setw(6) << right << sum << endl;
    return 0;
}

使いづらい…
setwは直後のものしか反映されなかったはず
624デフォルトの名無しさん:04/11/23 18:21:01
質問です。

基本クラスAから導出されたクラスB,Cがあります。それぞれがファイルなどへの書き込みと
読み出し命令を持っています。

class A{
A()
virtual bool Save();
virtual bool Load();
};
class B : public A{
B();
virtual bool Save();
virtual bool Load();
};
class C : public A{
C();
virtual bool Save();
virtual bool Load();
};
625624:04/11/23 18:21:29
ここで、基本クラスの保存の場合は
A*DimPoint[10];
//この10個のポインタには保存する前には何かのデータがあるはずです。
DimPoint[0]->Save();
DimPoint[1]->Save();


DimPoint[9]->Save();
とするだけですが、読み込みの場合、DimPoint[]がNULLであることが多いので、
DimPoint[0]=new B; //あるいはnew C
DimPoint[0]->Load();
などとしなければならず、これから読み込むデータ型によってnewする
クラスを切り替える必要があり、オブジェクト指向的ではありません。
もっとスマートな方法はないでしょうか?
これは、画面に図形を描画するときなど、図形データの保存はスマートなの
ですが、読み込みが汚くなります。
626デフォルトの名無しさん:04/11/23 18:27:22
>624

それこそOOPで解決してる問題な希ガス
627デフォルトの名無しさん:04/11/23 18:29:39
>>625
そこでFactoryMethodですよ。
628599:04/11/23 19:01:12
>>623
すごいです。ありがとうございました。
629デフォルトの名無しさん:04/11/23 19:13:38
AbstractFactoryだろ?
630デフォルトの名無しさん:04/11/23 19:24:40
>>616
パッと見ただけだが、それはC99で書かねばならないのか?
631デフォルトの名無しさん:04/11/23 19:25:37
>>540
この問題がスルーされてるんで、誰か挑戦してください。
632デフォルトの名無しさん:04/11/23 19:26:15
FactoryMethodでいいんじゃない
633デフォルトの名無しさん:04/11/23 19:27:03
>>631
半年前も見たぞ。腐れ産業大かどっかの宿題だった
634616:04/11/23 19:27:58
どなたかお願いします
635610:04/11/23 19:32:04
>>610
なんですけど、やっぱりDNAの螺旋にします。
サイン波(コサイン波)の数式って、文字で表すとどういう風になるのでしょうか?
636デフォルトの名無しさん:04/11/23 19:32:29
>>633
 申し訳ないですけど、答えを載せてもらえませんか?
637デフォルトの名無しさん:04/11/23 19:34:08
そーいや、>>540の例文ってアインシュタインがどっかのパーティーで無知なオバサンに
相対性理論は何かを説明してくれって頼まれた時の返事だっけな。
638デフォルトの名無しさん:04/11/23 19:34:40
>>635
そりゃsin(x)
639デフォルトの名無しさん:04/11/23 19:34:49
AbstractFactoryはFactoryMethodより一段階抽象化が深く、>>625のような
単純な階層ではなくてもっと複合的な継承がなされている場合に有効。

但し組み合わせに制限があると設計が硬直化するので、FactoryMethodより
も柔軟性に欠けるし変更が面倒くさい。
640デフォルトの名無しさん:04/11/23 19:43:16
>>616
配列って定数でしかサイズ指定できないだろ
どうやって動かしたんだ?
641デフォルトの名無しさん:04/11/23 19:50:51
>>640
C99では許可されている
642デフォルトの名無しさん:04/11/23 19:58:41
VC7だと通らない…
643デフォルトの名無しさん:04/11/23 20:02:58
C99に対応してないコンパイラで通らなくてもおかしくありません
644デフォルトの名無しさん:04/11/23 20:18:22
>>633
過去ログを調べてみたんですが、それらしきものは見当たらなかったんですが・・・・。
どなたかわかる方いましたらお願いします。
645デフォルトの名無しさん:04/11/23 20:27:59
>>616
int show_flag = 0;
while (long_string2[m] != '\0')
{
  if(long_string2[m] == key[n]) {
    while(long_string2[m] == key[n]) {
      m++;
      n++;
    }
    if(key[n] == '\0') {
            show_flag = 1;
      printf( "%d文字目から%d文字目までに出現している。\n", m - n + 1, m );
    }
  } else {
    m++;
    n = 0;
  }
}
if(show_flag ==0) printf( "含まれていない。\n" );
646デフォルトの名無しさん:04/11/23 20:41:35
質問
char buf[80];
short num;
fgets(buf,sizeof(buf)-1,stdin);
num=(short)atoi(buf);
の fgets関数とatoi関数の使用法をおしえてください
647デフォルトの名無しさん:04/11/23 20:42:16
manpage-fgets
manpage-atoi
でぐぐれ。以上
648デフォルトの名無しさん:04/11/23 20:43:05
649デフォルトの名無しさん:04/11/23 20:45:08
printfの下にm--;とn=0;を追加
650デフォルトの名無しさん:04/11/23 20:57:22
int m = 0;
int n = 0;
int show_flag = 0;
while ( long_string2[ m ] != '\0'){
 n = 0;
 if ( long_string2[ m ] != key[ n ] )
  ++m;
 else
 {
  do{
   ++m;
   ++n;
  }while ( long_string2[ m ]!='\0' && key[ n ]!='\0' && long_string2[ m ]==key[ n ] );
  if ( key[ n ] == '\0' ){
   printf( "%d文字目から%d文字目までに出現している。", m - n + 1, m );
   show_flag = 1;
  }
 }
}
if(show_flag)
 printf( "含まれていない。\n" );


あんまし違わないね...
651デフォルトの名無しさん:04/11/23 21:08:26
>あんまし違わないね...

っつーか微妙にまちがっとる
>if(show_flag)
> printf( "含まれていない。\n" );
652デフォルトの名無しさん:04/11/23 21:40:28
言語C 環境CUI

課題でテキストエディタを作ることになりましたが、どういう風に書いたらいいか悩んでます。
プログラムの動作例は以下のように考えています。

 ・キーボードから文章を入力する。
 ・「99」を押したら入力終了。
 ・その後、出力ファイル名を指定して.txt形式に出力する。

とりあえず入力する文字は100文字程度で、考えています。    
どなたか、よろしくお願いしますm(_ _)m。
653デフォルトの名無しさん:04/11/23 21:41:38
>>650
ブッシュ逝ってヨシ
654デフォルトの名無しさん:04/11/23 22:55:06
655デフォルトの名無しさん:04/11/23 23:30:28
>>654
コンパイル時のエラーは出なかったんですけど、実行されませんでした。
どうやれば実行結果が得られるのか、詳しく教えていただきたいです。
お願いします。
656デフォルトの名無しさん:04/11/23 23:31:09
>>655
コマンドライン引数
657デフォルトの名無しさん:04/11/23 23:45:57
>>655
ヤフーで検索してみましたけど、いまいちよくわかりませんでした。
658616:04/11/24 00:39:14
>>645
>>649
ありがとうございました
659610:04/11/24 00:40:09
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=134&fi=no

return((int)((sin(pai/2.0+((double)y)/6.0)+1.0)*13.0));
ってなにを計算してるんでしょうか?
660デフォルトの名無しさん:04/11/24 00:42:59
最近は円周率が2.14になっているのか…
661デフォルトの名無しさん:04/11/24 00:51:38
すいません、手に負えないのでお願いします。

@ ラプラス方程式を解くプログラムを作れ。
A @を用いて長方形領域 0≦x≦2、0≦y≦1の上でラプラス方程式を解け、
  ただし境界条件(周上の関数値)はデータとして読み込むものとする。
B 適当なxおよびyの値の組{(x1,y1),(x2,y2),...,(xm,ym)}(例えば,y=ax^3+bx^2+cx+d+ノイズ)
  に対してべき多項式モデルf=Xcを当てはめた結果をグラフ表示せよ。なお、べき次数n
  およびデータ点数mを様々に変化させよ。
662デフォルトの名無しさん:04/11/24 00:52:11
>>661
手に負えません。
663デフォルトの名無しさん:04/11/24 00:53:09
すいません、手に負えないのでお願いします。

@ ラプラス方程式を解くプログラムを作れ。
A @を用いて長方形領域 0≦x≦2、0≦y≦1の上でラプラス方程式を解け、
  ただし境界条件(周上の関数値)はデータとして読み込むものとする。
B 適当なxおよびyの値の組{(x1,y1),(x2,y2),...,(xm,ym)}(例えば,y=ax^3+bx^2+cx+d+ノイズ)
  に対してべき多項式モデルf=Xcを当てはめた結果をグラフ表示せよ。なお、べき次数n
  およびデータ点数mを様々に変化させよ。

手に負える人だけ解答して下さい。>>662はすっこんでろ!!!!
664610:04/11/24 01:00:30
>>660
そこは図形の形を変えるためにいじったところです
665661:04/11/24 01:02:29
>663
俺じゃないが他にも同じ宿題で悩んでる人がいるのか。
666デフォルトの名無しさん:04/11/24 01:34:29
Cの宿題です。
循環リスト(末尾ノードに先頭ノードを指すポインタを与えたもの)で、
a〜hのどのアルファベットからスタートしても、アルファベット順で1周するような順序
を実現してください。(例:cからなら、c,d,e,f,g,h,a,bの順)


667デフォルトの名無しさん:04/11/24 01:54:01
C++の宿題なんですがよろしくお願いします。
問題1. 実数のキューおよびスタックのクラスを、配列および連結リストで作成せよ。
(整数でなく実数。それぞれを作成するので4つ)
問題2. 実数のスタックを用いて逆ポーランド式計算機を作れ。余裕があれば単語分割するクラス
(TokenReader)を改良してキューを利用した形にしてみよ。

よろしくお願いしますm(_ _)m
668デフォルトの名無しさん:04/11/24 02:22:42
採点側もここらへんのスレはチェックしてるから
丸写しはしないようにね

丸写し見つけたら本当に理解しているか
それとなく試してみて
理解してなければできてないものとして減点するから

プログラミング演習を採点してるTAより
669デフォルトの名無しさん:04/11/24 02:29:30
Cです。
次に示される関数を利用して、f2(2)を求めなさい。
f2(x) int x; {return(2*x*x+3*x-4);}
670デフォルトの名無しさん:04/11/24 02:37:01
求めるも何もf2(2)で求まるわけだが。
671デフォルトの名無しさん:04/11/24 02:38:47
>>669
指導者は高齢か?
f2(x) int x; なんて書き方古いぞ
672デフォルトの名無しさん:04/11/24 02:42:23
>>670
関数の使い方忘れたみたいで何度やってもエラー出るんです。
>>671
確か93年くらいの問題集からの問題だった気がします。
スマートな書き方でお願いします。
673デフォルトの名無しさん:04/11/24 02:45:48
There are tons of web pages, google it for yourself, you lamer.
674デフォルトの名無しさん:04/11/24 02:46:49
lamer->moronだと煽り率20%UP!!
675デフォルトの名無しさん:04/11/24 02:49:22
>>672
#include <stdio.h>

int f2(int x)
{
  return( 2*x*x + 3*x - 4 );
}

int main()
{
 printf("%d", f2(2));

 return 0;
}
676デフォルトの名無しさん:04/11/24 02:56:19
>>675
ありがとう。これで残りの問題も解けそう。
677デフォルトの名無しさん:04/11/24 03:05:14
>>610 == >>635 == >>664
「フーリエ変換」でぐぐりなさい。
678デフォルトの名無しさん:04/11/24 05:27:01
質問です。
『二つの円O1,O2それぞれの半径をr1,r2(可変)とする。r1-r2の領域
を黒く塗りつぶすプログラムを作りなさい。ただし、全体領域を100行
100列であるものとする。』
という内容ですが、C言語で教えていただけないでしょうか。どうか
お願いします。
679デフォルトの名無しさん:04/11/24 07:08:02
>>678
腹ごなしに書いてみた。全体領域の定義がよくわからないからそこれへんは適当に直してくれ。
#include <stdio.h>
#include <stdlib.h>
#define SCREEN_W 100
#define SCREEN_H 100

int check_black( double x, double y, double r1, double r2)
{
 const double f = x * x + y * y;
 return (r1 >= r2) ? ((r1 * r1) >= f) && (f >= (r2 * r2))
         : ((r2 * r2) >= f) && (f >= (r1 * r1));
}
680デフォルトの名無しさん:04/11/24 07:08:43
*記号を使ってDOS窓に斜めに線を描きたいのですが、まったくわかりません。
681679:04/11/24 07:08:45
続き。

int main( void)
{
 const double r1 = 20, r2 = 40; /* 半径はこちら */
 const int xhalf = SCREEN_W / 2, yhalf = SCREEN_H / 2;
 int x, y;

 if( (r1 < 0) || (r2 < 0) || (SCREEN_W < 0) || (SCREEN_H < 0) ) {
  printf( "error: parameters (r1,r2,SCREEN_W,SCREEN_H) must be positive.\n");
  exit( EXIT_FAILURE);
 }

 for( y = yhalf; y >= -yhalf; --y ) {
  for( x = xhalf; x >= -xhalf; --x ) {
   printf( "%c ", check_black( (double)x, (double)y, r1, r2) ? '*' : '-');
  }
  printf( "\n");
 }

 return EXIT_SUCCESS;
}
682デフォルトの名無しさん:04/11/24 07:41:26
>>680
#include <stdio.h>
int main(void)
{
int i, j;
for(i = 0; i < 20; i++) {
for(j = 0; j < i; j++) printf(" ");
printf("*\n");
}
return 0;
}
683678:04/11/24 07:45:04
>>679
考えてくれてありがとうございます。
return (r1 >= r2) ? ((r1 * r1) >= f) && (f >= (r2 * r2))
         : ((r2 * r2) >= f) && (f >= (r1 * r1));
この行でエラーが大量に出るのですが、?がまずいのでしょうか?
684デフォルトの名無しさん:04/11/24 07:48:13
>>682
ありがとうございます。
685652:04/11/24 08:15:33
すみませんどなたかた>>652
お願いします。
686デフォルトの名無しさん:04/11/24 08:44:08
>>685
> 「99」を押したら入力終了。
の意味が分からない
9 を2回押したらすぐに終了?
99でその行が終わっていて改行したら終了?

687デフォルトの名無しさん:04/11/24 08:54:26
>>683
エラーの内容は?
688デフォルトの名無しさん:04/11/24 09:08:12
>>687

error C2061: 構文エラー : シンタックスエラーを起こしました。>>683の脳では理解できません。

だろw
689デフォルトの名無しさん:04/11/24 09:11:41
ワロタ
690652:04/11/24 09:16:46
>>686
下手な説明で申し訳ございません。
文章を入力し終わり、Enterキーを押し改行してから
9を2回押し、Enterキーを押してから終了ということです。
691デフォルトの名無しさん:04/11/24 09:33:09
類の要員函數を静的にせずに呼び返し函數の引数として
与えるにはどうしたらいいの?
692デフォルトの名無しさん:04/11/24 09:35:02
ふざけた質問分だな
メンバ関数のポインタ、とかで調べろ
693691:04/11/24 09:41:58
>>692

「要員函數の指示子」でググったところ
何もヒットしませんでした

何が悪いんでしょう?
694デフォルトの名無しさん:04/11/24 09:49:35
お前の頭
695デフォルトの名無しさん:04/11/24 09:56:05
>>686 入力サイズは決め打ちです
#include <stdio.h>
#include <string.h>
#define M 1000
#define N 256
#define FILE_NAME_SIZE 256
int main(void)
{
char buf[M][N], file[FILE_NAME_SIZE];
FILE* fp;
int i, j;
for (i = 0; i < M; i++) {
fgets(buf[i], N, stdin);
if (strcmp("99\n", buf[i]) == 0) { break; }
}
fgets(file, FILE_NAME_SIZE, stdin);
file[strlen(file) - 1] = '\0';
fp = fopen(file, "w");
for (j = 0; j < i; j++) { fprintf(fp, "%s", buf[j]); }
fclose(fp);
return 0;
}
696695:04/11/24 09:57:44
697652=690:04/11/24 10:07:53
>>695
どうもありがとうございます。
698678:04/11/24 10:11:26
>>687
C:\Program Files\Microsoft Visual Studio\MyProjects\en\en.cpp(15) : error C2018: 文字 '0x81' は認識できません。
C:\Program Files\Microsoft Visual Studio\MyProjects\en\en.cpp(15) : error C2018: 文字 '0x40' は認識できません。
このエラーが数行にまたがって大量に出るのですがどのようにしたら
いいでしょうか?
699デフォルトの名無しさん:04/11/24 10:16:11
認識できない文字を消せばいい
つ−か、マルチバイトの空白を消せ
700デフォルトの名無しさん:04/11/24 10:36:37
>>698
コピペしただろ。
701678:04/11/24 11:02:16
>>699-700
すいません、情けないエラーでした。。
一つだけお聞きしたいのですが、
(r1 >= r2) ? ((r1 * r1) >= f) && (f >= (r2 * r2))
         : ((r2 * r2) >= f) && (f >= (r1 * r1));
の部分だけ説明願えませんか?
702デフォルトの名無しさん:04/11/24 11:05:28
よくわかってないのが単純にコピペしないように
かつレスを見やすくするために
2バイト空白まぜるのは常
703デフォルトの名無しさん:04/11/24 11:07:10
それは、以前はtab文字が使えなかったから
704デフォルトの名無しさん:04/11/24 11:37:57
>>701
円の方程式x^2+y^2=r^2を使って円O1,O2の範囲内かどうか調べてるだけ。
f=x^2+y^2 とおいて r^2 以上なら円の外部分 以下なら内部分ってことで。
705678:04/11/24 12:13:47
>>701
了解しました。どうもありがとうございました。
706todokuro :04/11/24 13:19:58
i need some cool c programs for my presentation tomorrow.
if any one can help me, please give me some idea or program
that i can get good grade.
i can read japanese but cant write.
onegaishimasu
707デフォルトの名無しさん:04/11/24 13:25:34
>>706
その発表で求められてるレベルが分からないので何とも言えない。
708デフォルトの名無しさん:04/11/24 13:27:40
>>706
int strlen(const char* s)
{
 int i=0;
 while(s[i])i++;
 return i;
}
709デフォルトの名無しさん:04/11/24 13:34:46
>>706
int main()
{
 printf("Hello World!\n");
}

This is a super program.
710todokuro:04/11/24 13:35:50



ha
711デフォルトの名無しさん:04/11/24 13:36:35
hi
712デフォルトの名無しさん:04/11/24 13:44:22
>>706
int strcmp(char*l,char*r){return*l==*r?(*l?0:strcmp(++l,++r)):(*l>*r)*2-1;}
713デフォルトの名無しさん:04/11/24 13:45:26
>>706
正方向で符号化するハフマンなんかいいと思う
714todokuro:04/11/24 14:00:17
thank you people. i'll try my best.
i just quit this shit and will go outside to buy ganja.
bye-bye thank you all!
715todokuro:04/11/24 14:09:13
oh i got last question. Is it able to make same
intresting game program by c?
Last time i saw the matrix movie program that was typed by c
716706:04/11/24 15:44:06
>>713さま
そのようにしてみようとおもいます。
ありがとうございました。
717デフォルトの名無しさん:04/11/24 16:07:51
>>666
これが聞きたいんかいな
{
    struct list
    {
        struct list *next;
        char data[1024 * 1024 * 1024];
    };
    struct list *head;
    struct list **chain;
    int index;

    chain = &head;
    for (index = 0; index < 1024; index++)
    {
        *chain = (struct list *)malloc(sizeof(struct list));
        if (*chain == NULL)
        {
            // error processing
            exit(1024);
        }
        chain = &((*chain)->next);
    }
    *chain = head;
}
細かいとこは自分で書きなはれ。
718パスカル:04/11/24 16:16:13
スレ違いなんすけど、誰かこの問題できますか??
ちなみにパスカル言語っす。

This program will require the student to build a singly-linked list.
The definitions to be used are:

TYPE
LISTPTR = ^LIST;
LIST = RECORD
KEY:CHAR;
LINK:LISTPTR
END;

719パスカル:04/11/24 16:16:48
The records to be linked will be placed into ascending order based
on the KEY field and duplicates are not allowed. If the insertion
of a duplicate is attempted, a message should be output to the
printer indicating the value of the KEY that was provided and the
fact that it was a duplicate and insertion was disallowed. After
the entire list has been built, it shoud be output ot the pirnter.

The program will be executed three times; the following data will
be used;

QWERTYUIOPASDFGHJKLZXCVBNM
PLANYOURWORKANDWORKYOURPLAN
720デフォルトの名無しさん:04/11/24 16:19:53
>>540
この問題なんですけど、構造体を使わずに、ポインタと配列で作っていただけませんか?
どなたか挑戦お願いします。
721デフォルトの名無しさん:04/11/24 16:39:33
二日間何やってたんだよ
722デフォルトの名無しさん:04/11/24 16:40:31
>>718-719
スレタイが見えんのか?
723デフォルトの名無しさん:04/11/24 16:44:06
>>667
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=268&fi=no
TokenReaderについて何も情報を提示していないから問題2はしていない。
724デフォルトの名無しさん:04/11/24 18:28:56
今時Pascalなんかやらせる学校は辞めていいよ
725デフォルトの名無しさん:04/11/24 18:51:44
>>724
でた、低学歴!
726デフォルトの名無しさん:04/11/24 20:14:28
727667:04/11/24 20:16:55
>>723
実数スタックと実数キューのサンプルテンプレートと実行結果のサンプル及び逆ポーランド式計算機(TokenReader含む)の
サンプルテンプレートが追って出されたので張っておきます。申し訳ありません。
実数スタックhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=137
実数キューhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=138
計算機http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=139
上2つはこのサンプルテンプレから配列の場合と連結リストの場合に合わせて書き換えなければならない・・・です。

後になって問題につけたしをするのはやめましょう、と注意書きがあるのにすいません。
どうかお願いします。ちなみにC++です。

問題1. 実数のキューおよびスタックのクラスを、配列および連結リストで作成せよ。
(整数でなく実数。それぞれを作成するので4つ)
問題2. 実数のスタックを用いて逆ポーランド式計算機を作れ。余裕があれば単語分割するクラス
(TokenReader)を改良してキューを利用した形にしてみよ。
728デフォルトの名無しさん:04/11/24 20:27:50
fgets()というか EOFがらみの質問ですが、

if( fgets(buf,MAXLEN,stdin) ) {
printf("==%s==\n",buf);
}

これを実行し、キーボードから abc<RET> と入力すると(<RET>は改行)
==abc
==
と出力されます。これは理解出来る。次に abc<CTRL-D><CTRL-D> と入力すると
==abc==
と出力されます。なぜ <CTRL-D>が2個必要なのか、という質問なのですが。
ちなみに、abc<CTRL-D>de<RET> と入力すると
==abcde
==
と出力されます。
文字列を何も入力せずいきなり <CTRL-D>をたたくとなにも出力されません
( if( fgets() ) が false になる)。この場合は <CTRL-D> 1個で済みます。
(Linux での話です。DOS だと <CTRL-Z> が2回必要なのでしょうか。確認していません)
729デフォルトの名無しさん:04/11/24 20:42:44
>>728
Ctrl+Dが行頭でしか有効じゃないからじゃねぇの?
730728:04/11/24 21:39:04
>Ctrl+Dが行頭でしか有効じゃないからじゃねぇの?

行頭かどうかが重要、というのはご指摘の通りのようです。
行頭以外の CTRL-D がどう扱われているのか、なんか複雑なのですが、
動作から推測するに
(1)行頭の CTRL-D は EOF と解釈される
(2)いったん文字入力を始めると"行の途中" という状態になる。
(3)行の途中 状態を終了するのは RETだけ
  (CTRL-M とか CTRL-J とか。stty の状態によるでしょうが)。
(4)行の途中の CTRL-D は無視される。ただし直後に CTRL-D が続くと EOF になる。
こういうこと??

CTRL-D 1個で常に EOF にしたいとすれば、fgets() はだめで fgetc() を使うしかない?
731デフォルトの名無しさん:04/11/24 22:47:59
>なぜ <CTRL-D>が2個必要なのか
1個で大丈夫では?

char *fgets(char *s, int size, FILE *stream);
fgets() は成功すると s を返し、ファイルの終り(あるいはエラー)の場合 NULL を返す。

何文字かに続けてCTRL-Dなら、NULLにならないのは当然だろ?
Ctrl-D の扱いは端末のお話になってくるので UNIX の本とか読んでみたり.
733デフォルトの名無しさん:04/11/24 23:28:23
feof使ってもダメ?
734デフォルトの名無しさん:04/11/24 23:28:51
ごめん、見なかったことにして
735デフォルトの名無しさん:04/11/25 00:39:29
main()の中にあるodeint(y, N, MIN, MAX, eps, dist, 0.0, f, rkqs);
は積分をする関数で、積分区間MIN(#define MIN 0.0)からMAX(#define MAX 10.0)
までの途中計算を出力せずに、MAXの時の値を返す関数です。
これを途中計算も出力するようにするにはどうすればいいのですか?

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=141&fi=no
736お願いします:04/11/25 00:40:47
#include<iostream>
using namespace std;
class vector{
private:
double x;
double y;
public:
vector(){x=0.0;y=0.0;}
vector(double a,double b){x=a;y=b;}
vector add(vector p,vector q);
void print(void);
double getx(void){return x;}
double gety(void){return y;}
};
void vector::print(void){
cout<<"(x,y)=("<<x<<","<<y<<")"<<endl;
}
vector vector::add(vector p,vector q){
vector temp(0,0);
temp.x=(p.x)+(q.x);
temp.y=(p.y)+(q.y);
return temp;
}
ヘッダファイルをこう書いて・・・
737728:04/11/25 00:41:25
>何文字かに続けてCTRL-Dなら、NULLにならないのは当然だろ?

はい。man fgets によれば、fgets() が NULL を返すのは、エラーか、
一文字も読まずにEOFになった場合。文字を読んだ後 EOF になっても NULL を
返さないのはマニュアルどおりです。質問は、EOF にするのになぜ Ctrl-D が
2回要るか、ということでした。

>Ctrl-D の扱いは端末のお話になってくるので UNIX の本とか読んでみたり.

本を読んだわけではありませんが、ネットで少し調べると、どうも端末のバッファリングが
関係しているようでした。

abc と入力したあと、ctrl-D や RET を押す前なら、backspace で修正等が出来る。
ctrl-D を押すと、現在のバッファの内容が送られ、バッファは空になる。
バッファが空の時に ctrl-D を押すと、EOF になる。
バッファが空なのは、行頭か、ctrl-D を押した直後。
どうもこういうことらしいです。(私の理解が正しければ)
738736(続:04/11/25 00:43:16
#include<iostream>
#include"basic2.h"

int main()
{
vector p=vector(1.0,0.0);
vector q=vector(0.0,1.0);

p.print();
q.print();
cout<<add(p,q)<<endl;

return 0;
}

.cppファイルをこう記述して、コンパイルしたのですが、
「.cpp 11: 未定義の関数 'add' を呼び出した」
と、出ます。いったい何がだめなのでしょうか?
739デフォルトの名無しさん:04/11/25 00:43:33
Cと直接の関係がないのですが・・・

いま、Cで数値計算のプログラムを作り、WinXpのコマンドプロンプトから実行しています。
ところが繰り返し回数を大きく設定しすぎてしまったため、
今表示されている結果を保持したままプログラムを終了したいのですが

強制終了の方法を教えてもらえませんでしょうか・・・
740デフォルトの名無しさん:04/11/25 00:46:24
>今表示されている結果を保持
キャプチャ&タスク終了
741デフォルトの名無しさん:04/11/25 00:47:10
>>736
なんかめちゃくちゃだな…
それをやりたいなら
vector add(vector p, vector q)をフレンド関数にするか、
staticにしてvector::addで呼び出す

>>739
CTRL+Cすればプロンプトに戻るかもしれない。
戻らないで消えるかもしれない。
742デフォルトの名無しさん:04/11/25 00:50:37
すんません。三行三列と三行二列の行列の積を求める書き方教えてください。
めんどくさかったら軽いヒントでもいいんで
ちなみに初期数値は与えられてます。forを使うみたいですがいまいち・・・

違うスレに間違って書いてしまったんで、ここに書き直します。マルチになってしまって申し訳ないです。
どうかお願いします。
743デフォルトの名無しさん:04/11/25 00:55:38
>740それが面倒だったので・・・
>741ありがとうです、無事停止しました!助かりました
744736:04/11/25 00:58:10
ありがとうございます、friend関数を使って、なんとかできました。

あと、他にも、pとqの加算の方法ってありますか(friend関数を使わずに)?
もうしわけありませんが、staticに関しては、当方まったくわかりません・・・
745742:04/11/25 01:01:48
#include<stdio.h>

int main(void)
{
int A[3][3]={{2,5,10},{4,7,8},{8,2,3}};
int B[3][2]={{10,25},{20,15},{5,10}};
int C[3][2];

int i,j,k;

for(i = 0; i<3; i++){
for(j = 0; j<2; j++){
C[i][j] = 0;
for(k = 0; k<3; k++){
C[i][j] = C[i][j] + A[i][k] * B[k][j];
}
}
}

printf("%d\n",C[i][j]);

return 0;
}
>>737
canonical 入力のときは
EOF をタイプすると読み取りを待たされてるバイトをすぐに入力に渡す.
読み取りを待たされていないバイトが無いときは0を渡す.

だと思ったけど UNIX 系の人に聞いた方がいいよ
747742:04/11/25 01:06:18
上のやつのどこを変えたらいいんでしょうか?
ここの人からすれば初歩だろうに、情けない
748742:04/11/25 01:27:10
もう一時間半近くやってるんで誰か救いの手を差し伸べてください
749デフォルトの名無しさん:04/11/25 01:33:44
>>736
EffectiveC++を一読することをお勧めしておく。
つーか、complexの実装でも見てみたら?

>>742
どう巧くいかないのか書いたらこちらも検討してみる気になるが。
750デフォルトの名無しさん:04/11/25 01:34:42
>744
>あと、他にも、pとqの加算の方法ってありますか(friend関数を使わずに)?

あたりまえですが、メンバ関数 add を定義して
   p.add(q)
で p と q の和がえられるようにはできますよね。でも friend を使う方が普通では。
もちろん、add などという関数名ではなく、operator + を使うわけですが。
そうすれば r = p + q; などとかけます。さらに凝れば p += q; なんかも可能にする
ことが出来ます。
ベクトルクラスは、たいがいの C++ の解説本に例があると思いますよ。
751デフォルトの名無しさん:04/11/25 01:34:54
って書いてたら変なもん見つけた。

>printf("%d\n",C[i][j]);

このとき、i と j はいくつでしょう。そしてC[i][j]は合法でしょうか。
752デフォルトの名無しさん:04/11/25 01:40:24
/ a b \ / e \ / ae + bg \
\ c d / \ g / = \ ce + dg /

[質問]3行3列×3行2列って?

/ a b c \ / j k \ / \
| d e f | | l m | = | |
\ g h i / \ n o / \ /
753742:04/11/25 01:43:13
>>749
まず計算結果が単なる整数で出てくる。
しかもどういう計算が行われた出たのかわからん数値が。
行列の形で表示できない。
forのところでも聞きたいのですが、うまくわからないとこを説明できないです。
模範解答があって初めて自分の間違いに気づきそうな気がします。
754デフォルトの名無しさん:04/11/25 01:44:00
755742:04/11/25 01:48:37
>>752
aj+bl+cn ak+bm+co
dj+el+fn dk+em+fo
gj+hl+in gk+hm+io
756デフォルトの名無しさん:04/11/25 01:57:17
>>755
一件落着オメ。

さあ次いきましょ、次。
757デフォルトの名無しさん:04/11/25 01:57:36
>>755
めんどくせぇから
C[0][0] = A[0][0] * B[0][0]+A[0][1]B[1][0]+A[0][2] * B[2][0];
C[0][1] = A[0][0] * B[0][1]+A[0][1]B[1][1]+A[0][2] * B[2][1];
C[1][0] = A[1][0] * B[0][0]+A[1][1]B[1][0]+A[1][2] * B[2][0];
C[1][1] = A[1][0] * B[0][1]+A[1][1]B[1][1]+A[1][2] * B[2][1];
C[2][0] = A[2][0] * B[0][0]+A[2][1]B[1][0]+A[2][2] * B[2][0];
C[2][1] = A[2][0] * B[0][1]+A[2][1]B[1][1]+A[2][2] * B[2][1];
とでもして、
printf("%d %d\n%d %d\n%d %d\n", C[0][0], C[0][1], C[1][1], C[2][0], C[2][1]);
とでもしておけ。
面倒なループなんて考えずに済むぞ。
758デフォルトの名無しさん:04/11/25 01:58:56
いけね、sedで変換してたら真ん中の掛け算を'*'にするの忘れてたw
759デフォルトの名無しさん:04/11/25 02:00:29
for(i = 0; i<3; i++){
for(j = 0; j<2; j++){
C[i][j] = 0;
for(k = 0; k<3; k++){
C[i][j] = C[i][j] + A[i][k] * B[k][j];
}
printf("%d\n",C[i][j]);
}
}

ってことなのでは?
760742:04/11/25 02:01:10
いやこんな高校生でも知ってる計算式はいいんですよ。
forを使って繰り返し計算させるにはどうしたらいいのかを知りたいんです。
もし仮に100行200列とかなってもforで組めるなら時間かからないでしょ?
三行三列とかだから手打ちで各要素を計算してもいいけど要素が増えたらできないじゃないですか!
その組み方で間違いと思われる箇所を指摘して欲しいんです。
私の聞き方悪いですか?
761742:04/11/25 02:03:29
さっきのは756さんにです。
759さん参考に頑張ってみます
762デフォルトの名無しさん:04/11/25 02:08:18
>751をスルーしておいて随分偉そうだな。
763デフォルトの名無しさん:04/11/25 02:08:22
hoge(double a, double b);
のbをfor(0<b<1000)のようにしたいのですが、どうすればいいのですか?
764デフォルトの名無しさん:04/11/25 02:09:27
いや、>754もか。そんなことだから>757にからかわれるんだ。
765デフォルトの名無しさん:04/11/25 02:09:41
刻み幅は?
766デフォルトの名無しさん:04/11/25 02:14:02
while (1) {
 if (b <= 0.0 || b >= 1000.0) break;
 hoge(a, b);
 /* 必要なら、ここでbの値に何らかの操作を加える */
}

みたいな?
767742:04/11/25 02:16:33
>>751
iとjはforによって変動する値すべてに当てはまるんじゃないんですか?
C++の授業まだ4回しか受けてないんで、自信ないです
768デフォルトの名無しさん:04/11/25 02:20:04
あー、開き盲になってるのかな。>745に貼ったソースをよく見てみろ。
>751の指摘した行はループの外にあるのが見えてこないか?
769763:04/11/25 02:31:33
>>刻み幅は?
bの刻み幅は10です。
770742:04/11/25 02:31:50
>>768
printfの位置が{}の外に出てるということですか?
たぶんそう言いたいのだと思うけど、何でこの位置だとダメかはわからんです。
あと759さんのおかげで正しい値は出ました。しかし
170 225
220 285
135 260
というように行列式っぽく出力するにはどうしたらいいんでしょうか?
エスケープ記号?とかいうのは\nしかわからないのですが、この際に使える書き方あればお願いします
771デフォルトの名無しさん:04/11/25 02:37:33
>768
for(b=0; b<=1000; b=b+10)
 hoge(a, b);
772771:04/11/25 02:38:19
間違えた 769 アテネ
773デフォルトの名無しさん:04/11/25 02:43:01
for(i = 0; i<3; i++){
for(j = 0; j<2; j++){
C[i][j] = 0;
for(k = 0; k<3; k++){
C[i][j] = C[i][j] + A[i][k] * B[k][j];
}
printf("%d ",C[i][j]);
}
printf("\n");
}
774デフォルトの名無しさん:04/11/25 02:46:53
>>770
>何でこの位置だとダメかはわからんです。

これがわからないで単位をとろうというのは、なんぼなんでも無理。
素直に留年したら?
775デフォルトの名無しさん:04/11/25 02:48:30
for文が分からなくてもgoto使えばループは書けるけど(以下省略します
776742:04/11/25 02:49:56
>>773
C[i][j] = C[i][j] + A[i][k] * B[k][j];
}
printf("%d\f",C[i][j]);
}
printf("\n");
}
ってしたら
170 225
220 285
135 260
ってできました。
ありがとう

他の人もありがとでした。
777デフォルトの名無しさん:04/11/25 02:50:40
\f って何だ?
778デフォルトの名無しさん:04/11/25 02:52:24
>>777
改ページだったと思う。
779デフォルトの名無しさん:04/11/25 03:23:21
>>776
マニアック杉
780デフォルトの名無しさん:04/11/25 08:52:24
すいませんがどうか>>727の問題を解いてください。
よろしくお願いしますm(_ _)m
781デフォルトの名無しさん:04/11/25 09:27:29
質問者は口の聞き方がひでーな
782デフォルトの名無しさん:04/11/25 13:26:32
線形探索と二分探索のプログラムを作っていますがわかりません。
ここまで自力で作りましたが合っているかわかりません。
よろしくお願いします。
/*tansaku.c*/
#include <stdio.h>

#define ARRAYI1_MAX sizeof(array1)
#define ARRAYI2_MAX sizeof(array2)

int binary_search(int*,int,int);
int liner_search(int*,int,int);

void main(void)
{
int array1[]={2,3,5,8,12,20,32,52};
int araay2[]={22,34,65,66,12,33,43,5,1};
int result,key;
printf("探す文字を入力して下さい。\n");
sacnf("%d",&key);
result=liner_search(array1,ARRAI1_MAX,key);

     if(result<0)
       {printf("見つかりませんでした\n");}
else
      {printf("%d番目に見つかりました\n",result);}
}
783782続き:04/11/25 13:27:08
//線形探索
int liner_search(int*array,int num_array,int key)
{

}

//二分探索
int binary_search(int*array,int num_array,int key)
{

}
784デフォルトの名無しさん:04/11/25 14:08:59
>>782-783
そこまで書けるならなんで線形探索が書けないんだ?
二分探索はともかく。
785デフォルトの名無しさん:04/11/25 15:41:22
質問する側の言葉遣いがひどいですね…
>>742
はじめのレスからひどい聞き方。
>>747->>748としつこい。>>753とおバカな質問。>>760とずいぶん偉そう。
>>767>>770と開き直る。最後のレスの>>776もどうも…
こんな糞みたいな奴の質問にも答えてあげるこのスレの人はいい人過ぎ。
786782:04/11/25 15:41:37
>>784
ここまでは分かるですけど・・・
//線形探索
int liner_search(int*array,int num_array,int key)
{
int i=0;
for(i=0;i<result;i++)
}
787782:04/11/25 15:53:41
頼んでいる身分で言いにくいですけど、二分探索については解説も書いてもらえたら嬉しいです。
788デフォルトの名無しさん:04/11/25 15:56:47
789デフォルトの名無しさん:04/11/25 16:01:11
>>785
このスレに(・∀・)イイ!!人など一人もいませんよ。
本来、宿題の丸投げに答えること自体悪いこととされてるんだからね。
(・∀・)イイ!!も悪いもどうでもいいんですよ。
別に、みんな助けてあげようとかそういう気持ちでやってるわけじゃないんだから。
ただ自分が作りたいから作ってるんだからね。そりゃ言葉使い悪いやつに答えたく
ないやつもいるだろうが、答える奴を非難するのは的外れですね。
790デフォルトの名無しさん:04/11/25 16:03:22
そんなにコード書きたかったらもっとやりがいのある物作ればいいのに・・・
791デフォルトの名無しさん:04/11/25 16:14:37
お前は何を求めてこんなスレ覗いてるんだw
792デフォルトの名無しさん:04/11/25 16:15:11
>>790
やりがいのある宿題をくれ
793デフォルトの名無しさん:04/11/25 16:17:48
>>792
NumberPlace自動解答。簡単だYo!
794(・∀・)イイ!!:04/11/25 16:20:55
答えたきゃ答えれば(・∀・)イイ!!
答えなくなければ答えなきゃ(・∀・)イイ!!
自分本位な理想主義者(・A・)イクナイ!!
795デフォルトの名無しさん:04/11/25 16:23:26
>>792
f2cをVCで使えるようにしてくれ。

3次元の立体があって、表面が三角形の集合であらわされてる。
ファイルに全ての三角形の頂点座標と法線ベクトルが与えられてる。
法線の方向は、三角形の頂点を半時計周りに与えて求めてる。
この3次元の立体を、四面体or六面体or三角形の集合で表してくれ。
(要するに表面のみのメッシュを、内部までメッシュ化してくれ)

よろしくお願いします。
フリーで公開すれば、ある程度の需要は見込めるかもよ。
796デフォルトの名無しさん:04/11/25 16:25:32
なんだ、この恩着せがましい阿呆は
797デフォルトの名無しさん:04/11/25 16:26:56
>>792
DirectShowにて、音の高さを変えないで再生速度を
変えるフィルタを作ってください☆彡
798デフォルトの名無しさん:04/11/25 16:27:14
>>791
質問者に回答する人を減らすため。
こんな低レベルな宿題を他人に丸投げなんてふざけすぎ。
(・∀・)イイ!!
てめーうるせーんだよ。お前、前スレの常識人だろ?
そんなもんはっきりいって一目瞭然。隠そうとしても無駄なんだよ。
お前の考え方を押し付けるのは止めろや。
俺は常識とかそういうの嫌いだからさ。
お前みたいな常識のない常識人は見てると腹が立つんだけど?
今後(・∀・)イイ!!とかほざきやがったら、まじでぼこすぞ?
800デフォルトの名無しさん:04/11/25 16:30:48
>>798
無駄

基本的に、答えてる人は困ってる人を助けようと思ってやってるのではなく
ボケ防止、自己満足、好奇心などでやってるからむしろ解答者が餌をもらってる感じ


(・∀・)イイ!!
801デフォルトの名無しさん:04/11/25 16:35:06
>>800
宿題を他人にやらせるのは良くない。ボケ防止を求めるなら、算数ドリルでもやっておけ。
自己満足?ずいぶんレベルの低い事で満足出来るんだなおい。
好奇心?ずいぶんレベルの低い物に好奇心持てるんだなおい。

ここに出てきてる宿題なんぞC/C++の文法を理解するための宿題だろ?
こんなもんで自己満足できたり、こんなもんに好奇心もてる奴は文法の本でも買うか、そういう初心者サイトでも見てろ。
802デフォルトの名無しさん:04/11/25 16:38:27
どうした、自分の宿題がスルーされてトサカにきてんのか?
803デフォルトの名無しさん:04/11/25 16:39:45
>>799
(・∀・)イイ!!は考え方の押し付けではなく、むしろ解放をしているのだと思うが。
>>789=(・∀・)イイ!!としての話だが。
それをわかっていないお前は相当なドキュソだと言える。
それに常識が嫌いと言ったり常識のない常識人が嫌いと言ったり
どうも、話に一貫性がないな。頼むからもう荒らすのは止めような。

>>785=>>790=>>795?=>>792?=>>799=>>800
かな?
804デフォルトの名無しさん:04/11/25 16:40:23
>>801ずいぶん視野の狭い椰子ですね^^
805デフォルトの名無しさん:04/11/25 16:40:48
なぜ宿題をやるのかって?そこに宿題があるからさ。
ただの暇つぶし。
806803:04/11/25 16:40:57
まちがえ>>785=>>790=>>795?=>>792?=>>799=>>801
807792:04/11/25 16:41:28
>>803
なんでそう妄想するかね。
俺はここ300レスぐらい何も書いてなかったよ。
808デフォルトの名無しさん:04/11/25 16:41:28
>>802
俺の宿題?>>795の事?
あれはやりがいのある事やりたいって有志がいたから出した宿題だ。
そんなパッパッと終わるような簡単な宿題はやりがいがあるとは言わないだろ。
恐らく>>792さんは今プログラムの設計中かコーディング中だ。
809803:04/11/25 16:43:11
まちがえ
>>785=>>790=>>795?=>>798?=>>799=>>801
810デフォルトの名無しさん:04/11/25 16:44:18
>>803君がそれらが同一人物だと思った根拠が是非知りたい

ちなみに漏れは>>800&&!(785=>>790=>>795?=>>792?=>>799)
811デフォルトの名無しさん:04/11/25 16:44:37
>>803
全然外れてるぞ。
>>790=>>795=>>801=俺
>>804
そうか。
常識外れの事をしてる奴等を邪魔して、
邪魔した奴はそれを理解出来なくて視野が狭い奴。

視野うんぬんを語る前にオマエは常識外れだ。
ボケ防止訓練の前にまず小学校の授業を受けさせてもらえ。
812デフォルトの名無しさん:04/11/25 16:46:57
と、自称常識人が申しております
813デフォルトの名無しさん:04/11/25 16:48:57
(・∀・)イイ!!さんよお?
ここまでスレが荒れたのはお前の責任だぞ?
どう落とし前つけてくれるんだプゲラ
達観したような顔しやがって、気にいらねえな。
結局これがお前の残した結果なんだよ。お前のやり方じゃ、
スレの治安は悪くなる一方なんだよ糞顔が!!!藁藁藁
814デフォルトの名無しさん:04/11/25 16:49:45
過去やった宿題の回答の間違いに気づいた。
・・ま、過去は振り返らないことにしよう。
815デフォルトの名無しさん:04/11/25 16:50:34
ネタはマ板でやってくれんかね。
816デフォルトの名無しさん:04/11/25 16:50:34
お前らこのスレの初心者だな。
>>789 = >>794 = >>799は確かだぞw
817デフォルトの名無しさん:04/11/25 16:54:10
つ[宿題]
818816:04/11/25 17:02:20
一応根拠を言っとくと
まず、常識人はある程度もっともらしいことを、突然述べ始める。
で、最近いなくなったと思ったら、今度は(・∀・)イイ!!という名前で書きこむやつが最近出てきて
今回近い時間帯に>>789=>>794と二つの書きこみがあったので、まずこれを確信。
さらに、常識人は書いたあとに、必ず自分のレスにケチをつけたりするよくわからない自演をするのが
定番だった。俺のような論理的思考ができるやつにとっては、正直自明だった。
819 (・∀・):04/11/25 17:03:40
(・∀・)
820デフォルトの名無しさん:04/11/25 17:05:10
また宿題切れて
スレが禁断症状におちいってるな・・・
821デフォルトの名無しさん:04/11/25 17:07:53
>>814
よくあるよくある。
822デフォルトの名無しさん:04/11/25 17:12:05
>>818
ネタふりした785とか801、811はどうなんだ?
823デフォルトの名無しさん:04/11/25 17:26:58
#include <windows.h>がエラーになります。
コンパイラはgccなのですが、どうすればよろしいでしょうか??
824デフォルトの名無しさん:04/11/25 17:28:55
-mwindows
825デフォルトの名無しさん:04/11/25 17:33:32
宿題がないと左手がティムポを握ってしまいます。
どうにかしてください。
826818:04/11/25 17:35:42
>>822
それはきっと全部おまいでしょう。
そのレス番はおまい本人だから、当然おまいは正解を初めから知っている。
その上で漏れを試して、漏れがまちがえたときに、それを打ち明けて
漏れをはめようとしている。
そうはいかない。漏れをあんまなめんじゃねーぜ?
827デフォルトの名無しさん:04/11/25 17:36:49
俺の予想だと
>>818=(・∀・)イイ!!なんだが。
828デフォルトの名無しさん:04/11/25 17:37:46
ネタ振り:ネタを提示する
829723:04/11/25 17:46:23
>>780
俺のを参考にすれば簡単に出来るはず。
830デフォルトの名無しさん:04/11/25 17:47:34
>>540
上記の問題なんですけど、学校で構造体を習っていないので使用してはいけないみたいなんです。
ポインタと配列を使って、どうにかして解いてもらえないでしょうか?
ほんとわからなくて困ってます。ここの掲示板だけが救いなので、お願いします。
831823:04/11/25 17:48:09
>824 #include <windows.h>を#include <mwindows.h>または、#include <-mwindows.h>
に変更しても、no such file or directory になってしまいます。
832デフォルトの名無しさん:04/11/25 17:52:13
>>831
MinGWを入れなおせ(-> http://mingw.org/ )
833デフォルトの名無しさん:04/11/25 17:52:25
>>831
君プログラマに向いてないよ。
834823:04/11/25 18:09:12
>832 初心者で本当にスイマセンが、
MinGWとは何でしょうか?サイトに行ったのですがわかりません。
835785:04/11/25 18:13:57
俺のせいで荒れてる…orz
ネタフリしてごめんなさい。
836デフォルトの名無しさん:04/11/25 18:17:36
>>834
ここに来る以前の問題だから教授/講師にでも聞いてくれ
837デフォルトの名無しさん:04/11/25 18:23:37
>>835
何言ってる!!荒らしてたのはおまいだろ(・∀・)ニヤニヤ
838785:04/11/25 18:28:41
いまさら何を言っても自作自演と思われるだろうな…
839デフォルトの名無しさん:04/11/25 18:31:27
荒れて悪かったと思うなら、一言謝ってもう出てくるな。それが最善。
840デフォルトの名無しさん:04/11/25 18:33:10
名無しで出てこれば出てきてもわからない罠
841デフォルトの名無しさん:04/11/25 18:36:22
それが名無しのいいとこさ。コテならいつまでも過去の行動に粘着されるからな。
842デフォルトの名無しさん:04/11/25 18:38:43
宿題といてくれれば電波だろうが、犯罪者だろうが
誰だっていいです。プンプン
843デフォルトの名無しさん:04/11/25 20:04:33
間違うような素人でも良いんだろうか
844デフォルトの名無しさん:04/11/25 20:06:26
間違っていても本人がわからずに適当にやって提出するよりはマシ、ということで
間違っていたところで文句を言われる筋合いは無い。
845デフォルトの名無しさん:04/11/25 20:29:23
漏れはコードに常にウイルスをしこんでいまつ。
846デフォルトの名無しさん:04/11/25 20:29:55
つか、玄人w の843が答えるなり指摘するなりすりゃいい
847デフォルトの名無しさん:04/11/25 20:33:32
>>846
AならばBが成り立つとしたらAでないならばBでもない が成り立つ人?
ロジックがおかしいです。どうしましょう…
848デフォルトの名無しさん:04/11/25 20:35:07
>>847
それでも9課の雑用ロボには使ってもらえるよ
849デフォルトの名無しさん:04/11/25 20:39:25
>>846
ただの揚げ足取りですが...
850デフォルトの名無しさん:04/11/25 22:52:50
次スレ

C老人がボケ防止にC/C++の宿題を解決します 35代目
851デフォルトの名無しさん:04/11/25 22:55:34
A ∩ B が成り立つとしたら
Aでない ∪ Bでもない が成り立たないんです
852デフォルトの名無しさん:04/11/25 22:58:05
There you go. You are always so right. It is all a big show. It is all about you.
↑の文章を打つと、↓のような実行結果が出てくるプログラムを作りなさい。
There[1]You[1]go[1]
you[2]are[1] always[1]
so[1]right[1]It[2]
is[2]all[2]a[1]
big[1]show[1]about[1]

難しいことはよくわからないので、ポインタを使っておねがいします。
853デフォルトの名無しさん:04/11/25 23:02:51
              ,,;:-‐''"⌒ ̄";;;;;;;⌒ ̄"ヾ、
              ='-‐''"/,::´ /::::::::::::::::ヽ :::`ヾ
              ァ'´.,:´/.::::::/i:: :::::. :; :::丶 ::::::ヾ、
             / / ::/.:  { l ヽ_,,,_`、 .:`、ヽ:::::::ヽ`
              {::/ァ' .i..:/i.::{::{.ヾ~::i:ヾ丶::::::.::::i:::::::::}
          、_ノ'.{ .::::{-{‐{:;iヾ{ '"T ヾ il.|'.:::.::}::::::::ト、
              l.:il :lヽi'"ヽ`、ヽ .l,'゚i!'〉リi}::i:::::l:::ノ::ハヽ、_
麻衣子は        {:| i .} } {'゚}.   ┴-' i}:ノl::::}::i:::::. l`ー"
 お風呂入るから   {、.ヾ-i ー´、    〃 ノ:::ノ::ノ::}:: ::. }
  ちょっと待っててね   ノト " っ   、_,;-':.:'/:::::::l: : l
                {:l:::`i::..、   ._.,.;:イシ:::/::ノ   l、
                iんV´iノノ` ツi iリノツ-‐''"  :: : ヽ 、
             _,-.r‐i {,-ト .i_,,ノ-‐-―/ : : :::ノ :::::.  } `、
            ( l ./ /~   /     .ノ/:::::/:  ::::::: : :l
           (.._,,iツvV   .,'     ,'::{:::;:::::   :::::::: :::i
          `ー7/::::{. '"~/     {;;;li/::::l::::::  :::::::::::::{
            {:l(ァ'  ,, '      l::;;|l/:::{i::::: : ::: :::: ::::l
            リァ' .,  ´       /メ{ {l:::/ {:::l:. :  :  ::::|
           /, ´      ノ // l {iメ {:::|i:: :    :::l
          /./       /::'/:/  {:i:|イ{ i::l::  i    ::}
          i' ´      /::::::/::/    l .:|::::|:l:::l : l :   ::l
          {      , イ´  /::;/  .ィ´:| }::::l:i::::i:i:. .| : :.  ::l
            i、__,, ィ i::::l  /:,:::l //l::::l .}::::li:::::l l::::} i: i  :::l
854デフォルトの名無しさん:04/11/25 23:06:05
>>852
You[1]
you[2]
これは大文字小文字は区別してそれぞれ数えるってことでいいよね?
「.」はどうなるの?
855デフォルトの名無しさん:04/11/25 23:07:22
>>852
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* from = "There you go. You are always so right. It is all a big show. It is all about you.\n";
char* to = "There[1]You[1]go[1]\nyou[2]are[1] always[1]\nso[1]right[1]It[2]\nis[2]all[2]a[1]\nbig[1]show[1]about[1]";

int main(void) {
 char* buf;
 buf = malloc(4096);
 printf("文章を入力してください。");
 fgets(buf, 4095, stdin);
 if (strcmp(buf, from)) {
  printf("出力: %s\n", to);
 } else {
  printf("出力:\n");
 }
 return 0;
}

動作確認はしてない。
856855:04/11/25 23:08:18
あー、メモリ開放忘れてた。
- }
- return 0;
+ }
+ free(buf);
+ return 0;
857855:04/11/25 23:09:32
間違い発見
- if (strcmp(buf, from)) {
+ if (!strcmp(buf, from)) {
858デフォルトの名無しさん:04/11/25 23:12:33
char* to = "There[1]You[1]go[1]\nyou[2]are[1] always[1]\nso[1]right[1]It[2]\nis[2]all[2]a[1]\nbig[1]show[1]about[1]";
ここなんですけど、文章を打つだけで出てきた単語の回数が数えられるように改造してもらえんませんか?
859デフォルトの名無しさん:04/11/25 23:15:41
>>854
 別でお願いします。
 「.」は飛ばして読み込むようにしてください。
860デフォルトの名無しさん:04/11/25 23:16:18
>>829
問題1は参考にしてうまくできました。どうも有難う御座います。
問題2の単語分割するクラス(TokenReader)を改良してキューを利用した形にして求める
という問題がいまだわからないのですがどうすれば良いのかわかりません。
一応
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=142&fi=no
ここまで作成してのですが援護よろしくお願いします。
861デフォルトの名無しさん:04/11/25 23:27:22
double MIN = 0.0;
double MAX = 10.0;
double dt = 0.01;
euler(MIN, MAX, dt) //積分結果の最後の値を返す
0から10.0まで積分計算をし、積分結果の最後の値を返す関数eulerがあるのですが、
途中の計算過程も出力するようにするにはどうすればいいのですか?
862デフォルトの名無しさん:04/11/25 23:29:25
>>861
int i;
double slice = MAX / 100;
for (i = 1; i < 100; i++);
    euler(MIN, slice * i , dt);
euler(MIN, MAX, dt);
863デフォルトの名無しさん:04/11/25 23:33:41
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=143

void output(double *a, int L,int n)
{
int i,j;

for(i=0;i<n;i++){
for(j=0;j<n+1;j++){
printf("%8.3lf",a[(i)*(L+1)+j]);
}
printf("\n");
}
printf("\n");
}
の部分で構文エラーが出てしまいます。
どこで間違えてるんでしょうか?
864デフォルトの名無しさん:04/11/25 23:36:46
ipivot=gauss(*a,x,L,n,eps,isw);

a
865482:04/11/26 00:07:55
>>852
[]に加算されるルールがわからないから誰も作ってくれないと思うよ
866デフォルトの名無しさん:04/11/26 00:16:52
>>865
 同じ単語が2回出てきた場合は単語の後に[2]となり、一回しか出てこなかったら単語の後に[1]
 が付くようにお願いしたいです。
867デフォルトの名無しさん:04/11/26 00:18:48
>>865
単語を分割してリンクリストに格納、ソートして隣同士コンペアすりゃ楽に出来るだろ。
さっさとやれ。
868デフォルトの名無しさん:04/11/26 00:20:31
各マイクロ操作後のAの値をそれぞれ求めよ。
(1)初期状態 A=1101,B=0110
(2)初期状態 A=0110,B=1101
(3)初期状態 A=0110,B=0110

よろしくお願いします。
869デフォルトの名無しさん:04/11/26 00:22:40
浮動小数をASCII文字列に変換する関数
int dtoc(double, int, char*)
と言う関数を作ってください。
引数
 double 変換する対象
 int   出力する小数点以下の文字数
 char* doubleをASCII文字列で、小数点以下の桁数はint指定
戻り値
 int   char*に格納された文字数

char*は'\0'終端で。
870デフォルトの名無しさん:04/11/26 00:26:26
>>860
あと少しだ。おそらくその問題の意味は、
「init()で分割した単語を順にキューに格納し(enqueue()を使う)、
getToken()で順にその単語を出していく(peek()とdequeue()を使う)
ようにせよ」
と言うことであると思われる。まずすべきことは、実数のキューを
文字列のキューに書き換えること(これに際してデータは動的な
メモリの確保を行って文字列の長さに制限を加えない方がよいと
思われるが)、現在getToken()で逐次行っている処理をinit()で
すべて済ませてしまうことだ。
ガンガレ、終わればかなりの力になるぞ。
871デフォルトの名無しさん:04/11/26 00:28:38
>>869
ASCII文字列とやらのフォーマットは?
そのメモリはどうやって確保する?(malloc?new?)
872デフォルトの名無しさん:04/11/26 00:30:56
>>871
sprintf関数の代わりに使えればOKです。
873デフォルトの名無しさん:04/11/26 00:36:53
>>865
ほれ。

int main()
{
system("awk '{for (i = 1; i <= NF; ++i) {print $i;}}'|sort|uniq -c|awk '{print $2\"[\"$1\"]\";}'");
return 0;
}
874デフォルトの名無しさん:04/11/26 00:39:50
There you go.
You are always so right.
It is all a big show.
It is all about you.
↑の文章を打つと、↓のような実行結果が出てくるプログラムを作りなさい。
There[1]You[1]go[1]
you[2]are[1] always[1]
so[1]right[1]It[2]
is[2]all[2]a[1]
big[1]show[1]about[1]

You より you が後ろなのはなぜ?
875デフォルトの名無しさん:04/11/26 00:40:58
俺も思ったけど深く考えない事に下
876デフォルトの名無しさん:04/11/26 01:08:34
>>874>>875
順番的に、
There[1]→You[1]→go[1]→
you[2]→are[1]→always[1]→
so[1]→right[1]→It[2]→
is[2]all[2]a[1]→
big[1]show[1]about[1]
という感じです。わかりにくくてすいません。
877デフォルトの名無しさん:04/11/26 01:10:37
つまり、出現順か。
878874:04/11/26 01:12:13
だから、You より you が後ろなのはなぜかと聞いている。
youが先なら作れるが、Youが先だとすると作れない。
879デフォルトの名無しさん:04/11/26 01:21:50
ほんとすいません。
There[1]→you[2]→go[1]→
You[1]→are[1]→always[1]→
so[1]→right[1]→It[2]→
is[2]all[2]a[1]→
big[1]show[1]about[1]
の順番でお願いします。
880デフォルトの名無しさん:04/11/26 01:38:29
基準の一貫性へのこのこだわり、プログラマ軍団恐るべしと
言うところか。
881デフォルトの名無しさん:04/11/26 01:58:36
C言語の配列で、ある条件にあう要素の個数を求めるにはどうすればいいですか?
例)x[]={3,5,6,4,1}のうち3より大きい要素は何個?みたいな。
882デフォルトの名無しさん:04/11/26 01:59:21
>>881
数えればいいんですよ
883デフォルトの名無しさん:04/11/26 02:01:32
もっと大きな数字とか別な条件とかになった場合のことで教えてください・・m(__)m
884デフォルトの名無しさん:04/11/26 02:03:56
>>883
大きな数字を数えればいいんですよ
885デフォルトの名無しさん:04/11/26 02:06:44
他どなたかいませんか〜??
886デフォルトの名無しさん:04/11/26 02:09:03
コンピュータの中にエスパーでも飼わない限り、比較無しで篩い分けなんて無理だと分からないのかな
887デフォルトの名無しさん:04/11/26 02:09:05
>>881
unsigned arrcnt(int n, int *arr, int (*pf)(int, int))
{
    unsigned ret = 0;
    int i;
    for (i = 0; i < n; ++i)
        if (pf(arr[i], 3)) ++ret;
    return ret;
}

int isover3(int x)
{
    return (x > 3)? 1: 0;
}

int main()
{
    :
    cnt = arrcnt(5, x, isover3);
    :
}
888デフォルトの名無しさん:04/11/26 02:10:39
ちょっと間違えているが、察して。
889デフォルトの名無しさん:04/11/26 02:14:44
いちおう直し床
- unsigned arrcnt(int n, int *arr, int (*pf)(int, int))
+ unsigned arrcnt(int n, int *arr, int (*pf)(int))
-         if (pf(arr[i], 3)) ++ret;
+         if (pf(arr[i])) ++ret;
890デフォルトの名無しさん:04/11/26 02:14:59
 x[]={a,b,c,d,e}
c=0;
for(i=0;i<n;i++)
{
if(a[i] > 3)
{
c++;
}
}

printでcってのは?
891デフォルトの名無しさん:04/11/26 02:16:25
x[i]やった
テキトーでスマソ
892667:04/11/26 02:24:08
>>860
終わればかなりの力になるぞと言われ(`・ω・´)となったけれど
だんだん(´・ω・`)に・・・。“まずすべきこと”について大ヒントをください…。
893デフォルトの名無しさん:04/11/26 02:25:34
>>860じゃなkて>>870だった…。欝だしのう
894デフォルトの名無しさん:04/11/26 02:58:56
>>892
>まずすべきこと

寝ろ。こんな時間に頭の整理しろったって無理だろ。
895デフォルトの名無しさん:04/11/26 03:41:28
ずうずうしいお願いですがぁ…
課題の解答教えてください!!
できればVCで作ってもらえるとありがたいです。
よろしくです。

課題概要↓
ttp://www2.tokyo-ct.ac.jp/~sugi/2004/3J/numa/chap5%20InterP.pdf
パスワード↓
3Jnuma
896868:04/11/26 03:43:41
アキュムレータの問題なのですが、教えて頂けないでしょうか・・?
897デフォルトの名無しさん:04/11/26 03:50:04
>>896
問題は全文掲載しましょう。

>>895
学校名丸出しで、pdf読むのに手間掛けさせてまでやらせるのか?
虫が良すぎ。
#でもきっと誰かやる。
898デフォルトの名無しさん:04/11/26 05:06:51
>>895
ずうずうしすぎて笑った。
ニュートン法もラグランジェもやり方書いてあるじゃん。
式をプログラムに放り込むだけだろ。
899868:04/11/26 05:57:46
>>897
すみません。
これは実験の最後の問題なんですが、
http://cage4418.fc2web.com/image.jpg
こんな感じで、他にOR,排他的論理和,(右シフト、左シフト)などがあるんですが
良かったら教えて頂けませんか?スレ違いすみません・・。
900デフォルトの名無しさん:04/11/26 06:37:30
>>899
そのIMEの使い方はおかしい(笑)
901デフォルトの名無しさん:04/11/26 07:00:16
なんかもうネタにしか思えないな…(笑
902デフォルトの名無しさん:04/11/26 07:46:27
次スレ

老人がボケ防止にC/C++の宿題を解決します 35代目
http://pc5.2ch.net/test/read.cgi/tech/1065535118/
903デフォルトの名無しさん:04/11/26 08:06:11
答える人減りそうな予感
904デフォルトの名無しさん:04/11/26 09:02:38
>>895
さては・・・
不正アクセスさせて2chネラ逮捕させようって気だな
905デフォルトの名無しさん:04/11/26 09:05:49
怖くてpw入力する気になれん
いくら>>895が許可したっつっても
管理者次第だしな・・・
906デフォルトの名無しさん:04/11/26 09:21:47
>>899
こういうこと?

>(1)初期状態 A=1101,B=0110
>(2)初期状態 A=0110,B=1101
>(3)初期状態 A=0110,B=0110
  and  or xor shift r shift l
(1) 0100 1111 1011 0110 1010
(2) 0100 1111 1011 0011 1100
(3) 0110 0110 0000 0011 1100
907デフォルトの名無しさん:04/11/26 09:22:54
>>904>>905
東京高専の杉浦教官には垂れ込んだから大丈夫。
908デフォルトの名無しさん:04/11/26 09:24:02
>>902の次スレはほんとの次スレ?
いろんな連中が入り乱れてる「次スレ」で、なんか意味わからんちん。
909デフォルトの名無しさん:04/11/26 09:26:40
>>908
「次スレ」にそれ以上のものを求められても…
910デフォルトの名無しさん:04/11/26 09:32:07
>>895>>904>>905>>907
今みたらもう開けなくなっていた
911デフォルトの名無しさん:04/11/26 09:41:02
マジレスすると、>>902は「次スレ」と言うスレタイのネタスレ。
912899:04/11/26 09:46:52
>>906
ありがとうございマス
自分で単純にand,or,eor(xor?)だけやったんですが一緒でした。
右シフト、左シフト参考にさせてもらいます。ありがとうございました。
913デフォルトの名無しさん:04/11/26 09:52:34
>>895探しが東京高専で行われると・・・
914北斗づくし:04/11/26 10:50:56
スロットのプログラムを作りたいのですが、乱数の抽出方法がわかりません。
どなたかお教えください。
915デフォルトの名無しさん:04/11/26 10:53:32
rand()
916北斗づくし:04/11/26 11:07:39
初心者なので申し訳ありませんが、rand()の具体的な使い方と
具体例を教えてもらえませんか?
917デフォルトの名無しさん:04/11/26 11:08:12
以下、乱数の品質だの剰余は駄目だのとお決まりネタが続きます。
918デフォルトの名無しさん:04/11/26 11:08:14
死ね
919デフォルトの名無しさん:04/11/26 13:00:14
>>916
乱数を使ってπの近似値を求める例(間違ってても知らない)
つか俺も初心者、ぐぐったら一杯でてくるだろうに…
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i, n, count = 0;
double x, y;

scanf("%d",&n);
srand((unsigned)time(NULL));
for (i = 0; i<=n; i++)
{
x = (double)(rand() / (RAND_MAX + 1.0));
y = (double)(rand() / (RAND_MAX + 1.0));
if((x * x + y * y) < 1.0)
count++;
}
printf("π=%lf\n",((double) count)/((double) i)*4.0);
return 0;
}
920デフォルトの名無しさん:04/11/26 13:14:50
足し算か引き算をコマンドライン引数で選択したいのですが、
やり方が分かりません。お願いします。
main(){
 foo(double x, double y);
  //足し算か引き算をコマンドライン引数で選択したい。
}
foo(double x, double y){
 AA = x + y;
 BB = x - y;
}
921デフォルトの名無しさん:04/11/26 13:31:41
mainに引数つけろ
922デフォルトの名無しさん:04/11/26 13:32:33
>>920
int main(int argc, char *argv[])
923デフォルトの名無しさん:04/11/26 14:01:28
なんやろな。
詳しく読んでへんけど、>>879>>654で答えが出たんちゃうの。
924デフォルトの名無しさん:04/11/26 14:06:26
同じ学校の低脳が聞きに来たのか荒らしなのか
925デフォルトの名無しさん:04/11/26 14:48:11
>>920
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv)
{
int num1, num2;
int result;
if (argc < 4) {
fprintf(stderr, "Usage: %s <num1> <num2> <operator>\n", argv[0]);
exit(EXIT_FAILURE);
}
num1 = atoi(argv[1]);
num2 = atoi(argv[2]);
switch (argv[3][0]) {
case '-':
result = sub(num1, num2);
break;
cae '+':
result = add(num1, num2);
break;
default:
fprintf(stderr, "Unknown operator.\n");
exit(EXIT_FAILURE);
break;
}
printf("%d\n", result);
return EXIT_SUCCESS;
}
926デフォルトの名無しさん:04/11/26 14:49:19
あ、肝心なもん忘れた。
int sub(int num1, int num2)
{
return num1 - num2;
}
int add(int num1, int num2)
{
return num1 + num2;
}
927デフォルトの名無しさん:04/11/26 15:54:39
cae '+':
928デフォルトの名無しさん:04/11/26 17:58:35
勉強とバイトの両立はかなり大変だが、全く刺激のない生活はひからびていて嫌なんだ
私のバイトは、進学塾、予備校講師に家庭教師
この仕事は本当にやりがいがある。
生徒のために頑張っている、という意識が勉強との両立ができる状態に運んでいる。
そんな意識が無かったら、やっていないだろう。
本当に大変だ。睡眠時間も少ないし、体力、精神力勝負。
他人のために頑張る、というのは重い荷を背負うことなんだ。
中途半端じゃだめだ。生徒のために頑張ろう、という強い意識がなければ生徒の学力も伸びなやむだろう。
そんな強い意識があるからこそ、生徒も僕についていく。
その生徒の態度が私を支えているのだ。
929デフォルトの名無しさん:04/11/26 18:03:17
すれ違い
930784:04/11/26 18:56:33
>>786
分かってないし。
こんなカンジ。
動作確認してないので間違いがあってもしらん。

int liner_search(int*array, int num_array, int key)
{
 int i=0;
 for(i=0; i<num_array && array[i]!=key ;i++);
 return i==num_array ? -1 : i;
}
931デフォルトの名無しさん:04/11/26 19:07:07
すみませんお願いします。

自分の名前をローマ字表記で文字型の配列として設定。
(例)char str[ ] {};
小文字は大文字として扱い、英大文字データを13文字分ずらしたデータに変換して(Aの時はN、Bの時はO)表示する。

言語はCです。
よろしくお願いします。
932デフォルトの名無しさん:04/11/26 20:05:21
基底クラスでpublicで宣言されているメソッドを派生クラスでpublicにしたくない場合
どうすればよいのでしょうか。

環境:VC++.NET
933デフォルトの名無しさん:04/11/26 20:06:44
private override
934デフォルトの名無しさん:04/11/26 20:16:56
>>931
#include <stdio.h>
#include <string.h>

int main(void)
{
int i;
char str[] = {'n', 'u', 'l', 'l', 'p', 'o', '\0'};
printf("%s -> ", str);
for(i = 0; i < strlen(str); i++){
  str[i] += 13;
}
printf("%s\n", str);
return 0;
}
935デフォルトの名無しさん:04/11/26 20:27:04
積分区間がMIN<x<MAXである積分の最後の値を返す関数
euler(MIN,MAX,dt)があり、xはdtずつ変化(x+=dt)する。
double MIN = 0.0;
double MAX = 100.0;
double dt = 0.01;
euler(MIN, MAX, dt) //積分結果の最後の値を返す
0から100.0まで積分計算をし、xの値が0番目、100番目、200番目…900番目、
1000番目というように積分区間の間の任意の値を表示するにはどうしたら
いいのですか? お願いします。
936デフォルトの名無しさん:04/11/26 20:30:33
積分ループの中に任意の回数ループしたら変数に格納する部分を作って、それを表示すればよろし。
937デフォルトの名無しさん:04/11/26 20:55:36
double型の指数部と仮数部がそれぞれ何ビットで
構成されているかを調べるプログラムを作りなさい。

という問題があるのですが、どうすればいいのか分かりません。
教えてください。
938デフォルトの名無しさん:04/11/26 21:08:38
>>937
いい問題だなぁ。
はてさて、どう解こうか。
939デフォルトの名無しさん:04/11/26 21:13:31
>>933

overrideはC#の構文でC++にはないのではないでしょうか?
940デフォルトの名無しさん:04/11/26 21:21:20
>>937
DBL_MANT_DIG
DBL_MAX_EXP
DBL_MIN_EXP
あたりで。
941デフォルトの名無しさん:04/11/26 21:56:34
>>934

ありがとうございます。
すみませんが#include <string.h>を使わないやり方で教えてもらえないでしょうか??
942デフォルトの名無しさん:04/11/26 22:06:39
長さはstringインクルードしないと・・・・
943デフォルトの名無しさん:04/11/26 22:13:10
>>942
おまい>>934か?
for (i = 0; str[i]; i++)
なり何なり普通は思いつくだろ
944デフォルトの名無しさん:04/11/26 22:18:10
>>941

#include <stdio.h>

int main(void)
{
int i;
char str[] = {'n', 'u', 'l', 'l', 'p', 'o', '\0'};
printf("%s -> ", str);
for(i = 0; i < strlen(str); i++){
str[i] += 13;
}
printf("%s\n", str);
return 0;
}

945デフォルトの名無しさん:04/11/26 22:18:11
>>939
class Hoge
{
public:
 void Foo();
};

class Bar : public Hoge
{
private:
 void Foo();
};
946デフォルトの名無しさん:04/11/26 22:21:32
>>944
ガッ
947デフォルトの名無しさん:04/11/26 22:22:28
小文字大文字としてないやん。
948デフォルトの名無しさん:04/11/26 22:51:52
#include <stdio.h>

int main(void)
{
int i;
char str[] = {'n', 'u', 'l', 'l', 'p', 'o', '\0'};
printf("%s -> ", str);
for(i = 0; str[i]; i++){
str[i] += (str[i] & 0x20) ? -19 : 13;
}
printf("%s\n", str);
return 0;
}
949デフォルトの名無しさん:04/11/26 23:33:44
float と double の値について標準入力から入力し、
その内部表現を
「符号, n * (2 ^ e)」
という形で表示するプログラムを作って下さい。
950デフォルトの名無しさん:04/11/26 23:35:45
???
951デフォルトの名無しさん:04/11/26 23:43:27
>>945
ありがとうございます。
同じように書いているのですが上手くいかず基底クラスのメソッドが
見えてしまいます。__gcのせいでしょうか。

__gc public class Hoge
{
public:
 void Foo();
};

__gc public class Bar : public Hoge
{
private:
 void Foo();
};
952949:04/11/26 23:48:24
早く答えろオタク共
953949:04/11/26 23:53:40
もういいよwww
おまえらみたいなクズに教えてもらおうと思った俺が馬鹿だったw
954デフォルトの名無しさん:04/11/26 23:55:05
>>949
#include <stdio.h>
#include <math.h>
int main()
{
  double d;
  float f;
  int e;

  puts("double");
  scanf("%lf", &d);
  putchar(d >= 0 ? '+' : '-');
  d = frexp(fabs(d), &e);
  printf(", %g * (2 ^ %d)\n\n", d, e);

  puts("float");
  scanf("%f", &f);
  putchar(f >= 0 ? '+' : '-');
  f = frexpf(fabsf(f), &e);
  printf(", %g * (2 ^ %d)\n", f, e);
  return 0;
}
 &160;
956デフォルトの名無しさん:04/11/27 00:04:10

eって対数に出てくるやつかと思ったよ
957デフォルトの名無しさん:04/11/27 01:12:40
>>949
frexp()使えばいいんじゃねーの?
958949:04/11/27 01:48:49
>>952-953 は私じゃありません
実はこの問題の一つ前に
浮動小数点数(float, double)の2進内部表現を
4bit毎に区切って表示しなさい
という問題がありました。
それは出来たんですけど・・・
959949:04/11/27 01:50:01
>>954 さんありがとうございます。
明日学校で試してみます。
960デフォルトの名無しさん:04/11/27 02:16:00
>>958-959
frexp()使ってもいいのか?その実装方法についての問題じゃないのかな?
961デフォルトの名無しさん:04/11/27 02:22:34
>784
int liner_search(int*array, int num_array, int key)
{
 int i,bk=array[num_array-1];
 array[num_array-1]=key;
 for(i=0; array[i]!=key;i++);
 array[num_array-1]=bk;
 return array[i]!=key ? -1 : i;
}
962デフォルトの名無しさん:04/11/27 02:38:11
>>923

>540
ファイルの内容例
Put your hand on a hot stove for a minute, and it seems like an hour.
Sit with a pretty girl for an hour, and it seems like a minute.
That's relativity.
実行結果
Put[1] your[1]hand[1]
on[1]a[4]stove[1]
for[1]minute[2] and[2]
it[2]seems[2] like[2]
an[2]hour[2]Sit[1]
with[1]pretty[1] girl[1]
for[1]That’s[1]relativity[1]

>654 の実行結果
Put[1] your[1] hand[1]
on[1] a[4] hot[1]
stove[1] for[2] minute[2]
and[2] it[2] seems[2]
like[2] an[2] hour[2]
Sit[1] with[1] pretty[1]
girl[1] That's[1] relativity[1]

...微妙に違うなw (540の方が間違っとる希ガス)
963デフォルトの名無しさん:04/11/27 08:20:33
X = -tanA / (B * cos(C + X/2))
(入力値:A、B、C  出力値:X  A,B,C,Xはラジアン値)
で、C言語でXの値を求めたいのですがー
cosの中にXがあるためソースがつくれません。
どなたかご親切な方分かりますでしょうか
964デフォルトの名無しさん:04/11/27 08:43:11
>>944>>948

ありがとうございました。m(__)m
早速試してみます。
965963:04/11/27 09:39:24
できれば今日中に
966デフォルトの名無しさん:04/11/27 09:51:30
>>963
問題は全文掲載するよろし。
初期値を与えれば収束するなら、収束する様子を見ながら何度でも呼べばいいと思うが。
967デフォルトの名無しさん:04/11/27 10:04:52
>>963
B * X * cos(X / 2 + C) + tan(A) = 0
この式から適当にグラフを描いてみたけど、解が無数に出来るね。
問題ではもっと条件があったんじゃないの?
968デフォルトの名無しさん:04/11/27 10:06:29
>>963
移項すると、
X * cos(C + (X / 2)) = - tan(A) / B
となるから、
Y = - tan(A) / B (式1) ・・・ 一定
Y = X * cos(C + (X / 2)) (式2)
これらの交点を求めれば良い。
969963:04/11/27 10:41:42
よくわからない
970963:04/11/27 11:26:48
>>966
>>967
すみません条件抜けてました。
解は無数に出ると思いますが、
-Pi/2 <= X <= Pi/2
の範囲内の解で良いです。

>>968
やっぱグラフの交点を求めるしかないんでしょうかー
式のみでできれば行きたいのですがー。
971デフォルトの名無しさん:04/11/27 12:10:00
http://www.autorace.or.jp/senshu/prof/frameset_kawa.html

本スマップのこいつでも見てろ
972デフォルトの名無しさん:04/11/27 13:29:03
>本

スマップの本物?
973デフォルトの名無しさん:04/11/27 13:53:50
974デフォルトの名無しさん:04/11/27 13:54:59
あれ、名前変わった?森じゃなかったっけ
975デフォルトの名無しさん:04/11/27 13:58:21
元SMAPって森かつゆきとかいう名前じゃなかったっけ?
976デフォルトの名無しさん:04/11/27 14:14:05
>>970
よくわからんけど非線形方程式の解法で検索してみては
ってここ宿題スレだっけ…
977デフォルトの名無しさん:04/11/27 14:24:04
こっちだろ。て言うかスレ違い。
http://www.autorace.or.jp/cgi-bin/senshu.cgi?race_p=kawa&sen_no=5808
978デフォルトの名無しさん:04/11/27 14:24:05
>>974
多分、森且行のページを開いたがフレームを使っているためにアドレス欄のアドレスが変わらず、それをコピペしてしまったんだと思う。
http://www.autorace.or.jp/cgi-bin/senshu.cgi?race_p=kawa&sen_no=5808
979デフォルトの名無しさん:04/11/27 14:36:46
そいつ、スタッフとか並べて蹴りとか暴力振るいまくってたんだろ?
なんか確かにそんな顔してるよ。
980デフォルトの名無しさん:04/11/27 14:41:18
とりあえず落ち着いてマイヤヒー見ようぜ
http://csx.jp/%7Edamemushi/il/maiyahi.html
981デフォルトの名無しさん:04/11/27 16:33:48
>>976
スレタイをよく見ろ。
982デフォルトの名無しさん
10個の配列を用意し、過去10日分の最高気温のデータを設定します
この時、前日の最高気温からの変化量を算出して表示させるCプログラムを作成しなさい。
また、前日より気温が高くなったら+、低くなったら-、変化無しの場合は (空白)を表示するCプログラムを作成しなさい。