gimmick の回答履歴

全406件中181~200件表示
  • eを小数第200位くらいまで求めたい。

    前回の質問での解説を踏まえて、自分なりにcでプログラム作ってみました。 ――――――――――――――――― #include <stdio.h> #define size 250 void main() { int i, b, k[size], e[size]; k[0]=1; e[0]=1; for(i=1; i<size; i++){ k[i]=0; e[i]=0; } for(b=1; b<size; b++){ for(i=0; i<size; i++){ if(i<size-1) k[i+1] += (k[i] % b) * 10; k[i] /= b; if(e[i]+k[i]>=10){ e[i] = e[i]+k[i]- 10; e[i-1] += 1; } else e[i] += k[i]; } } for(i=0; i<size; i++) printf("%d",e[i]); } ―――――――――――――― ここで表示される値に小数点はつきませんが、それは気にしないでいいです。 この記述でなんか無駄なところはあるでしょうか もっとキレイにかけそうな気がするのですが。。 とくに、1/b!の値をk[]に入れ、それをe[]に順に足していき、ある小数点第x位での和、e[x]とk[x]でその和が10を超える場合、小数点x-1位にくりあがる(つまりk[x-1]に1を足す)という記述をもっと簡単にelseを使わずにできないでしょうか?? e[i-1] += 1; というところも、iの初期値は0なので、下手すると値によってはe[-1]となってしまう可能性があるような気がします、今回はならないみたいですけれども。 なにかもっと簡単にできるところや、訂正すべき箇所があればご指摘ください よろしくおねがいします ちなみに前回の質問はこれです http://oshiete1.goo.ne.jp/kotaeru.php3?q=535756

  • バイナリファイルのサイズを変えたい

    こんにちは。 ここに書いて良い話題かわかりませんが、宜しくお願いします。 中途半端な大きさのバイナリファイルをきりのいいサイズに変更したいとき、便利な方法やツールはありませんか? 例えば、 aaa.bin のサイズが 0x1F34 だったときに、 0x2000 にしたい・・・ときなどです。 それでは宜しくお願いします。

  • 構造体の文字列データをファイルへ書き込む方法は?

    構造体の文字列データをファイルへ書き込む方法として、構造体のデータを一気に書き込まずに、データ毎に書き込むことを勉強としてやってみようとしました。 数字の場合はうまくいったのですが、文字列の場合が分かりません。 ご存知の方、よろしくお願いいたします。 <数字の場合> typedef struct { int m1, m2; } Data; fwrite(&data[i].m1, sizeof(int), 1, fp); fwrite(&data[i].m2, sizeof(int), 1, fp); <文字列の場合> #include <stdio.h> typedef struct { char m1[10], m2[10]; } Data; int main() { static Data data[3] = { { "a1", "b1"}, { "c1", "d1"}, { "e1", "f1"}, }; Data data2[10]; FILE *fp; int i, n; fp = fopen("file.dat", "wb"); if (fp == NULL) return 1; for (i = 0; i < 3; i++) { fwrite(&data[i].m1, sizeof(Data.m1[10]), 1, fp); ← sizeofでエラーが出る fwrite(&data[i].m2, sizeof(Data.m2[10]), 1, fp); } fclose(fp); 以下省略

  • 構造体の文字列データをファイルへ書き込む方法は?

    構造体の文字列データをファイルへ書き込む方法として、構造体のデータを一気に書き込まずに、データ毎に書き込むことを勉強としてやってみようとしました。 数字の場合はうまくいったのですが、文字列の場合が分かりません。 ご存知の方、よろしくお願いいたします。 <数字の場合> typedef struct { int m1, m2; } Data; fwrite(&data[i].m1, sizeof(int), 1, fp); fwrite(&data[i].m2, sizeof(int), 1, fp); <文字列の場合> #include <stdio.h> typedef struct { char m1[10], m2[10]; } Data; int main() { static Data data[3] = { { "a1", "b1"}, { "c1", "d1"}, { "e1", "f1"}, }; Data data2[10]; FILE *fp; int i, n; fp = fopen("file.dat", "wb"); if (fp == NULL) return 1; for (i = 0; i < 3; i++) { fwrite(&data[i].m1, sizeof(Data.m1[10]), 1, fp); ← sizeofでエラーが出る fwrite(&data[i].m2, sizeof(Data.m2[10]), 1, fp); } fclose(fp); 以下省略

  • ポインタでの文字列操作

    C-CGIを今作っていて、猫で分かるプログラミングを見ながら勉強しています。 そこで、http://www.kumei.ne.jp/c_lang/intro/no_82.htm のプログラムの変数 char name[64], address[256], sex[16], onwa[16], inken[16], seikaku[128]; をすべてポインタ型の文字列に置き換えたらエラーが起こってしまいました。 char *name, *address, *sex, *onwa, *inken, *seikaku; こんな感じに。エラーと言いましても、コンパイラが吐き出すエラーではなく、実行すると強制終了をOSから喰らいます。何故でしょうか? 原因と解決方法をどうかご指南ください。

  • ポインタでの文字列操作

    C-CGIを今作っていて、猫で分かるプログラミングを見ながら勉強しています。 そこで、http://www.kumei.ne.jp/c_lang/intro/no_82.htm のプログラムの変数 char name[64], address[256], sex[16], onwa[16], inken[16], seikaku[128]; をすべてポインタ型の文字列に置き換えたらエラーが起こってしまいました。 char *name, *address, *sex, *onwa, *inken, *seikaku; こんな感じに。エラーと言いましても、コンパイラが吐き出すエラーではなく、実行すると強制終了をOSから喰らいます。何故でしょうか? 原因と解決方法をどうかご指南ください。

  • 戻り値と返り値の違い

    タイトルの通りの質問内容です。 僕が調べた限りは「同じ」と言う意見が多数でした。 中には ・参照渡しした引数の関数通過後の結果が戻り値、  関数自体が返すのが返り値 とか ・引数なしの関数で戻るのが戻り値、引数ありの関数で  戻るのが返り値 とかはたまたその逆とか、混沌としています。 気になります。

  • 範囲指定の重複を除いた数の算出方法

    100件の印刷データがあり、 ページ範囲を指定し印刷し、 ページ範囲のFromとToはデータベースに保存します。 このFromとToを元にすでに印刷済みの件数が 何件あるか算出する計算式はあるでしょうか? 1 - 50 1回目の印刷 30 - 50 2回目の印刷 60 - 100 3回目の印刷 の例の場合、90件印刷済みと表示させたいです。 よろしくお願いします。

  • 範囲指定の重複を除いた数の算出方法

    100件の印刷データがあり、 ページ範囲を指定し印刷し、 ページ範囲のFromとToはデータベースに保存します。 このFromとToを元にすでに印刷済みの件数が 何件あるか算出する計算式はあるでしょうか? 1 - 50 1回目の印刷 30 - 50 2回目の印刷 60 - 100 3回目の印刷 の例の場合、90件印刷済みと表示させたいです。 よろしくお願いします。

  • C&C++の勉強方法

    ホームページなどの講座で勉強する方法と、 本などを買う方法はどちらがいいですか?

    • ベストアンサー
    • noname#6521
    • C・C++・C#
    • 回答数3
  • 数字列を3桁ごとにカンマで区切る方法

    すいません、今授業の課題で下のような課題をもらったんです。 数字を読み込み、カンマ編集して出力する。 例) 入力:1000000 出力:1,000,000 注) メイン処理のみで製作すること    ポインタも使わない    入力はscanfで 三桁区切りのカンマは、後ろから入れていくということは分かるのですが、書きかたがいまいちわかりません。どなたか教えてください。お願いします。

  • 日付の計算について

    C言語なのですが static startDate[12] = {"20021201"}; static endDate[12] = {"20030331"}; static chkDate[12] = {"20030101"}; というchar型に変数に日付の内容が入ってる場合、 chkDateは startDate ~ endDateの期間内であるかどうか のチェックをするプルグラムのやり方を悩んでいます。 よろしくお願い致します。

  • sizeofの目的

    ってなんですか? sizeofは型のおおきさをしらべるのに、 使うのですが、それだけですか? お願いします。

  • 置換について

    C言語を勉強中です。質問させてください。 data = "abcwofjiabcajd9abfuabcaoefabc"; という変数があったとします。 変数dataに"abc"が存在したら"xxx"に書き換えたいのですが、 どうのようにすればいいのでしょうか? ------------------------------------ こうしたいです↓。 data = "xxxwofjixxxajd9abfuxxxaoefabc"; ------------------------------------ 宜しくお願い致します。

  • 情報処理試験について

    情報処理試験があと12日後に迫ってきました。 基本情報技術者試験を受けるのですが、 午後問題が致命的な状況です。 模試では20から30%のでき具合です。 この状況で、あと12日で奇跡的に合格をすることは 可能でしょうか? 学習時間は平日は1時間ほどしかとれない状況です。 最後まであきらめずに努力するなど自分次第ではありますが、 致命的な状況から短期間で合格された方がいらしたら、アドバイスをしていただけないでしょうか。 また、試験までの勉強の仕方で 何かアドバイスがありましたら、お願いします。

  • void main(void){...}だとDosWindowが開くので

    わざわざWindowsアプリにして以下のようにするしかないのでしょうか? LONG WINAPI WinProcedure(HWND hW,UINT wM,UINT wP,LONG lP) { //ここに宣言を置く switch(wM) { case WM_CREATE: //ここに処理を置く return 0; default: return(DefWindowProc(hW,wM,wP,lP)); } } WINAPI WinMain(HINSTANCE hI,HINSTANCE,LPSTR,int nCS) { WNDCLASS wc; HWND hW,hPW; MSG ms; wc.lpszClassName ="goo"; wc.lpfnWndProc =(WNDPROC)WinProcedure; wc.hInstance =hI; wc.style =CS_HREDRAW|CS_VREDRAW; wc.cbClsExtra =NULL; wc.cbWndExtra =NULL; wc.hIcon =LoadIcon(NULL,IDI_EXCLAMATION); wc.hCursor =LoadCursor(NULL,IDC_ARROW); wc.hbrBackground =(HBRUSH)(COLOR_WINDOW+1); wc.lpszMenuName =NULL; RegisterClass(&wc); hW=CreateWindow ( "goo", "教えて!goo", WS_OVERLAPPED, 0, 0, 640, 456, NULL, NULL, hI, NULL ); ShowWindow(hW,nCS); UpdateWindow(hW); while(GetMessage(&ms,NULL,NULL,NULL)) { TranslateMessage(&ms); DispatchMessage(&ms); } return (ms.wParam); } もっと簡単にDosWindowが開かないようにする方法はないのでしょうか? もしないとすると上記記述でもっと簡単にできないでしょうか?

  • CreateStatusWindowの第2引き数の書き換え

    ステータスバー HWND CreateStatusWindow( LONG style, // ウィンドウスタイル LPCTSTR lpszText, // 第1区画に表示される文字列 HWND hwndParent, // 親ウィンドウハンドル UINT wID // ステータスバーのID ); の第2引き数の書き換えはどのように行えばよいのでしょうか? 猫でも分かるC++の第59章 ステータスバーを作る その3 http://www.kumei.ne.jp/c_lang/sdk/sdk_59.htm を参考にしているんですが、ステータスバーの文字を、他のウインドウに 隠れてしまっても保持するようにさせる方法が分かりません。 第2引き数の書き換えができればそれは可能になると思います。 上記サイトではSetTimerとSB_SETTEXTを使用して、それと同等の表示効果を実現できていますが、 もっとよい方法(第2引き数の書き換え)などができるのではないかと思いました。

  • c:¥gooは存在するの?

    WIN32_FIND_DATA ffd; HANDLE hf; hf=FindFirstFile("c:\\goo",&ffd); if(hf==INVALID_HANDLE_VALUE)  cout<<"\"c:\\goo\"は存在しません"<<endl; において hf==INVALID_HANDLE_VALUE であればc:¥gooは存在しないとみなして言いのでしょうか? もしc:¥gooが存在することがあればどういうときでしょうか?

  • 構造体の一度のメンバを保持

    自作関数の中で、一部のメンバはいつも同じ値です。 自作関数の中で宣言したローカルな構造体の一部のメンバを一度だけ指定して、以降はその設定が有効になるようにしたいんですが、現在のソースをどのように変更すればいいか教えて下さい。 CHOOSEFONT構造体で、変化のあるメンバは、hwndOwner、hDC、lpLogFont、rgbColors の4つだけです。 自作のFUNCFONT関数が実行されるたびに、その4つのメンバだけを書き換えることによって処理速度をアップさせようとしています。 BOOL FUNCFONT(HWND hWnd, HDC hdc, LOGFONT lt, DWORD coler) { CHOOSEFONT cf = {0}; cf->lStructSize = sizeof(CHOOSEFONT); cf->hwndOwner = hWnd; cf->hDC = hdc; cf->lpLogFont = &lt; cf->Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT; cf->rgbColors = coler; … //処理 return TRUE; } これを、 BOOL FUNCFONT(HWND hWnd, HDC hdc, LOGFONT lt, DWORD coler) { static CHOOSEFONT cf = {sizeof(CHOOSEFONT), NULL, NULL, NULL, 0, CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT}; cf->hwndOwner = hWnd; cf->hDC = hdc; cf->lpLogFont = &lt; cf->rgbColors = coler; … //処理 return TRUE; } このようにしてもいいんですか?

  • 構造体の一度のメンバを保持

    自作関数の中で、一部のメンバはいつも同じ値です。 自作関数の中で宣言したローカルな構造体の一部のメンバを一度だけ指定して、以降はその設定が有効になるようにしたいんですが、現在のソースをどのように変更すればいいか教えて下さい。 CHOOSEFONT構造体で、変化のあるメンバは、hwndOwner、hDC、lpLogFont、rgbColors の4つだけです。 自作のFUNCFONT関数が実行されるたびに、その4つのメンバだけを書き換えることによって処理速度をアップさせようとしています。 BOOL FUNCFONT(HWND hWnd, HDC hdc, LOGFONT lt, DWORD coler) { CHOOSEFONT cf = {0}; cf->lStructSize = sizeof(CHOOSEFONT); cf->hwndOwner = hWnd; cf->hDC = hdc; cf->lpLogFont = &lt; cf->Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT; cf->rgbColors = coler; … //処理 return TRUE; } これを、 BOOL FUNCFONT(HWND hWnd, HDC hdc, LOGFONT lt, DWORD coler) { static CHOOSEFONT cf = {sizeof(CHOOSEFONT), NULL, NULL, NULL, 0, CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT}; cf->hwndOwner = hWnd; cf->hDC = hdc; cf->lpLogFont = &lt; cf->rgbColors = coler; … //処理 return TRUE; } このようにしてもいいんですか?