C/C++の宿題やらせてください。7代目。

このエントリーをはてなブックマークに追加
あ、間違えた
Σ| x_i * sin(s) + (y_i - b) * cos(s) |
>>960
新スレお願いします。
954デフォルトの名無しさん:03/06/08 01:33
>>948
for (i = 0; i < N; i++){
wb = wb + pow(h[i] - ave, 2);
}
じゃないの?
10回の独立な計算とか分散の平均値とかよくわからん。
何がしたいのか詳しく説明して。
マクスウェル方程式の導出
をプログラムにして
自然対数をだすプログラムを作成せよ
log
ガンダムのプログラム作って
>>959
学校名か、学部名か、学科名を教えて下さい。
>>960
新スレお願いします。
962デフォルトの名無しさん:03/06/08 06:05
最大25桁(少数も有り)の四則演算をしなければいけないのですが、
桁あふれしないようにするには、一体どうすればいいでしょうか?
d[25]
964959:03/06/08 06:24
>>960
ホワイトファング所属
オペレーションメテオ科
>>962
mail(){long long double x;}
これがコンパイルできるなら long long double を使えば良い。
さもなくば多倍長数を使う。既存なら libmp か libruby など。もしくは自作。
Cを使わなくていいなら bc コマンドなど。
>>944
あんたの main を整理してみたがやっぱりやりたいことが分からん。
数学の試験問題程度に明確に書いてくれ。


(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
山崎渉
文字列を文字数の制限なしに入力するにはどうしたらいいですか?
文字数の制限というのはa[100]なら100文字(99?)までしか入れれないという感じのやつです
どうかよろしくお願いします
>>968
一文字ごとに領域確保と解放を繰り返せ(w
適当な文字数毎にリンクリストに繋いでいくとか。
読んだ端からファイルに格納していくとか。

想定される最大文字数 (メモリーに入るのか否か) と、そのあとどう言うことしたいんだ ?
971968:03/06/08 09:24
すいません、ホント宿題なので・・・
C言語でとりあえず文字列を文字数制限なく読み込めって感じの課題なので、
読み込んだことが分かるようにそのまま表示しようと思っています
>>971
文字の読み込みにはどの関数を使うん?
getchar?
バッファをreallocで伸長しながら読むとか。
>>973
現実的には避けたい方法だな。
975968:03/06/08 09:34
特に指定なしです
最近習ったstrlenとmallocなどを使ってやるのかと思ったのですが、無理でしょうか?
>>975
じゃあ1文字ごとにmallocしてリストとして繋げばいいだろ。
どうも聞いてる限りでは大した課題じゃないっぽいし。
リスト構造の勉強にもなるし、いい機会じゃないか。
文字列を文字数制限なく読み込んで何するんだろ・・
文字数制限なく読み込むけど、
メモリへの格納何もしないプログラム
#include <stdio.h>
int main() {
while( !feof(stdin) )
getchar();
}

読み込みつつ、全部表示するバージョン
#include <stdio.h>
int main() {
while( !feof(stdin) )
putchar( getchar() );
}
文字数制限無しで読み込んで、格納先のアドレスを返す。ちゃんとfreeしてね。
けど多分、VCじゃないとコンパイル通らない。
char* hogealloc(void) {
char*str;
chardummy;/* 先頭1文字の格納先*/

scanf("%c", &dummy);/*stdinと関連付ける*/

if( ( str=(char*)calloc( stdin->_cnt+1, 1 ) ) == NULL ) {
fprintf(stderr, "メモリの確保に失敗しました。\n");
exit(1);
}

strncpy(str, stdin->_base, stdin->_cnt);
fflush(stdin);

return str;
}
980979:03/06/08 12:41
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
です。
>>979
おいおい、構造体FILEの実装に依存したコードかくなよ…
VC++じゃないと通らないというか、
VC++の特定のバージョンじゃないと通らないかも知れんぞ。
982979:03/06/08 12:58
はい、それで無くても全然ダメっぽいです。
stdin->_cntで表現できない程の文字数は格納できないです。
でもそんな事言ってたら、reallocもsize_t型の変数で領域の大きさ指定するしなぁ。

それじゃ逝きます。さよなら!
便乗質問。
 gcc -ansi -pedantic -Wall
でワーニングもエラーも出なかったら、どのコンパイラでも
OKと考えていいですか?
>>983
どのコンパイラでもコンパイルが通ることだけは期待できる。
が、それがちゃんと動くかどうかは別問題。
985r:03/06/08 13:27
>>968 どの処理系でもイケるはず。
#include <stdio.h>
#include <stdlib.h>
#define CELL_SIZE 100
typedef struct cell {
    char data[ CELL_SIZE + 1 ];
    struct cell* next;
}cell_t;
cell_t* CreateCell() { return (cell_t*)calloc( 1, sizeof( cell_t ) ); }
void Cell_Display( const cell_t* cell ) {
    while( cell != 0 ) {
        fputs( cell -> data, stdout );
        cell = cell -> next;
    }
}
void Cell_Clear( cell_t* cell ) {
    cell_t* target;
    while( cell != 0 ) {
        cell = ( target = cell ) -> next;
        free( target );
    }
}
int main(int argc, const char** argv) {
    cell_t *head, *tail;
    FILE* fp = 1 < argc ? fopen( argv[1], "r" ) : stdin;
    tail = head = CreateCell();
    while( !feof( fp ) )
        fgets( ( tail = tail -> next = CreateCell() ) -> data, CELL_SIZE, fp );
    Cell_Display( head );
    Cell_Clear( head );
}
986r:03/06/08 13:46
メモリ確保に失敗するのが恐いときは、
cell_t* CreateCell() {
cell_t* cell = (cell_t*)calloc( 1, sizeof( cell_t ) );
if( cell == 0 ) exit(-1);
return cell;
}
とでも。
# 未チェック。
987デフォルトの名無しさん:03/06/08 14:04
8代目まだ?
>>985
CamelCase と underscore_delimited を混ぜたのは初めて見たかも
>>985
exit の直前に限っては free する必要はない。
>>983
あらゆるコンパイラがANSI Cに完全準拠しているわけじゃないし、ライブラリの問題もあるし。
線形リスとなんぞ使わなくても、これで十分だろ。
#include <stdio.h>
#include <stdlib.h>
int main( int argc, const char** argv ) {
FILE* fp;
char* buf;
size_t size;
if( fp = fopen( argv[1], "rb" ), fp == 0 ) { return -1; }
fseek( fp, 0, SEEK_END );
buf = malloc( ( size = ftell( fp ) ) + 1 );
rewind( fp );
fread( buf, size, 1, fp );
buf[size] = '\0';
printf( "[%s]\n", buf );
}
>>991
うわー、絶対いっしょに仕事したくないタイプ。
>>992
なんで?カンマ演算子とか使ってるから?
めちゃ素直なコードだと漏れは思うよ。
fopen は検査して malloc は検査しないのは分からんが。
main()の戻り値に-1を使うような奴とは仕事したくないと言うなら>>992に同意。
>>978
下の方のプログラムは一文字余分に表示される。
プログラム板だと1000取り合戦も起こらないんですね
C++ >>>>>>> Java
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。