tsuduki123 の回答履歴

全96件中81~96件表示
  • データ構造で悩んでます

    以下の構造体があります。 struct Test {   string name;   int no;// 1~100   int age;// 1~100 }; stlのvectorに頻繁に動的に追加、削除されるとします。これをnoやageをキーに効率よく検索する方法を教えてください。 私が思いついたのは、 ・multisetを別に用意する。問題点は追加、削除毎にソートされてしまう。 ・no,age分vectorを用意する。速いけど汎用性が無い。 boostや他のライブラリは無しでお願いします。

    • 締切済み
    • noname#115727
    • C・C++・C#
    • 回答数4
  • 描画のカクカクについて

    描画された画像が移動中たまに(動画を見ながら実行すると多く)カクカクするのですが、どうしたらこのカクカクをなくすことができるでしょうか? 多分ここだろうなと言うところを載せます。 //グローバル変数 static HDC g_hdcOff,g_hdcImg[MAX_IMAGE]; static HBRUSH g_hbrBg = NULL; // 背景用ブラシ static HBITMAP g_hbmImg[IMG_MAX]= {NULL}; // 画像のビットマップ //================================================================================ // オフスクリーンへ画像表示 // idx : 画像データの添え字 // x,y : 表示位置x,y // sx,sy : 画像切り出し位置x,y // w,h : 画像切り出し幅、高さ // src : 転送モード指定。通常はSRCCOPY,SRCPAINT,SRCANDなど //================================================================================ void DrawImg(int idx,int x,int y,int sx,int sy,int w,int h,DWORD src) { BitBlt(g_hdcOff,x,y,w,h,g_hdcImg[idx],sx,sy,src); } //================================================================================ // オフスクリーンへ画像表示。マスク表示→画像表示 // idx : 画像データの添え字 // x,y : 表示位置x,y // sx,sy : 画像切り出し位置x,y // w,h : 画像切り出し幅、高さ // mx,my : マスク切り出し位置x,y //================================================================================ void DrawImgMask(int idx,int x,int y,int sx,int sy,int w,int h,int mx,int my) { BitBlt(g_hdcOff,x,y,w,h,g_hdcImg[idx],mx,my,SRCPAINT); BitBlt(g_hdcOff,x,y,w,h,g_hdcImg[idx],sx,sy,SRCAND); } void Draw() { // 画面消去 HBRUSH oldbr = (HBRUSH)SelectObject(g_hdcOff, g_hbrBg); Rectangle(g_hdcOff, -1, -1, CLIENT_WIDTH+1, CLIENT_HEIGHT+1); SelectObject(g_hdcOff, oldbr); //---------------------------------------------------------- // ↓ここから描画処理 // キー状態の更新 KeyUpdate(); // プレイヤー移動 if (KeyIsHold(KC_LEFT)) { g_Player.x -= PL_VELX; if (g_Player.x < PL_LIMITL) g_Player.x = PL_LIMITL; } if (KeyIsHold(KC_RIGHT)) { g_Player.x += PL_VELX; if (g_Player.x > PL_LIMITR-g_ImgData[g_Player.type].w) g_Player.x = PL_LIMITR-g_ImgData[g_Player.type].w; } // プレイヤーの表示 DrawChr(g_Player.type, g_Player.x, g_Player.y); // ↑ここまで描画処理 //---------------------------------------------------------- // 再描画 InvalidateRect(g_hWnd,0,FALSE); UpdateWindow(g_hWnd); } // キャラクタ描画関数 // type : キャラタイプ(eChrType) // x : 表示位置X // y : 表示位置Y void DrawChr(int type,int x,int y) { DrawImgMask(g_ImgData[type].idx, x,y, g_ImgData[type].sx, g_ImgData[type].sy, g_ImgData[type].w, g_ImgData[type].h, g_ImgData[type].mx, g_ImgData[type].my); } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ・・・ ・・・ ・・・ // メッセージループ while(true) { if (PeekMessage(&msg, NULL, 0,0,PM_REMOVE)) { if (msg.message == WM_QUIT) break; TranslateMessage(&msg); DispatchMessage(&msg); } else { static DWORD before_time; DWORD now_time; DWORD ideal_time=0; static int frame=0; TCHAR buff[100]; DWORD team=0; static long surplus_time=0; now_time=timeGetTime(); if(!before_time) before_time=timeGetTime(); surplus_time=(long)(now_time-before_time); ideal_time=(DWORD)(frame*1000)/60; wsprintf(buff,TEXT("%d %d %d\n"),ideal_time,surplus_time,(long)ideal_time-surplus_time); OutputDebugString(buff); if((long)ideal_time-surplus_time>0) Sleep((long)ideal_time-surplus_time); team=timeGetTime(); team-=before_time; if(team>=1000) { before_time=timeGetTime(); frame=0; } frame++; } Sleep(1); } ・・・ ・・・ ・・・ return (int)msg.wParam; } 環境はVC++2005、C言語とWINAPIっだけです。 説明が足りないのなら補足します。

  • C言語の問題がわかりません。

    C言語の問題がわかりません。 ファイルを読み込んで、文字数と単語数を数えるプログラムなのですが、 例えば、ファイルが 「I was born in Japan  I like baseball」でしたら、 1:I was born in Japan 19文字、5単語 2:I like baseball 15文字、3単語 と表示したいのですが、下記のプログラムのままだと、 1:I was born in Japan 20文字、5単語 2:I like baseball 15文字、3単語 と作った文章の改行の部分を認証してしまいます。 改行の部分を認証しないようにこれを修正するにはどうしたらいいでしょうか? また、もう一つあるのですが、結果の文章を 1:napaJ・・・ 2:・・・ekil I と行ごとに逆に表示したいのですが、どうすれば逆に表示できますでしょうか? #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { FILE *fin; char filename[20]; char data[256], *abc; int a,b,n; printf("ファイル名の入力 :"); scanf("%s", filename); fin=fopen(filename,"r"); if(fin == NULL){ printf("%sがオープンできません!\n",filename); exit(1); } a=0; b=0; n=0; while(fgets(data,256,fin) != NULL) { a=a+1; b=strlen(data); abc = data; *(abc - 2) = '\t'; while (*abc == ' ') {abc++;} while (*abc != '\0') { while (*abc != '\0' && !(*abc == ' ' || *abc == '\t' || *abc == ',' || *abc == '.')){abc++;} n = n+1; while (*abc != '\0' && (*abc == ' ' || *abc == '\t' || *abc == ',' || *abc == '.')) {abc++;} } printf("%d:%s\n",a,data); printf("%d文字、%d単語\n",b,n); n=0; } fclose(fin); return 0; }

  • 文字と数字の判定について

    c言語を学び始めたばかりの者です。 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <ctype.h> main(){ printf("数当てゲームを開始します。\n"); int a,count,n,b; srand((unsigned)time(NULL)); printf("1~10の中から1つ数字を選びます。\n"); a = (rand()%10)+1; printf("選びました\n"); for(count=0;;count++){ printf("その数字はズバリ:"); scanf("%d",&n); //もし数字でなければという文にしたい!! if (?){ printf("数字を入力してください。\n"); continue; } else{ if(n<a){ printf("もっと大きな値です。\n"); printf("%d回間違えました。\n",count+1); continue; } if(n==a){ printf("正解です!!\n"); b=0; exit(0); } if(n>a){ printf("もっと小さな値です。\n"); printf("%d回間違えました。\n",count+1); continue; } } } } というプログラムなのですが数字の判定の仕方が分からなくて最初のifの条件に何をいれればいいのか分からないので分かるかたいましたら教えてもらえないでしょうか?

  • 「たのしいRuby」は読み終わりましたが、コードも読めないしあまり書け

    「たのしいRuby」は読み終わりましたが、コードも読めないしあまり書けません。2冊目に読む本かサイトを探していまいす。どなたかしっている方がいらしたら教えてください。よろしくお願いいたします。

    • ベストアンサー
    • LLR4
    • Ruby
    • 回答数5
  • C言語でファイル読み書きを早くしたい。

    いつも利用させてもらって助かっています。 あるプログラムを作成しているのですが、ファイル入力の部分がネックとなってしまって、全体が使いものにならない状況に陥っています。 たくさんのデータをfread1回で読み込むことにより、読み込み速度はずいぶんと改善されましたが、まだ圧倒的に遅い状況です。システムコールを使いましたが、ほとんど改善されませんでした。 読み込み/書き込みの速度を改善する方法として,SSDメモリを使ったりする方法があると思いますが,プログラムの観点から改善できるところはないでしょうか? 下に、ファイル読み込みの部分だけ記述したコードを添付させて頂いたので、改善できる点があれば、御指摘頂けると助かります。 なお、前提として, (1)データはスタック領域だと不足するので、ヒープ領域に確保 (2)データファイルは改行無しの一連のデータ とします。 ちなみに、環境は OS   : CentOS5.3 memory   : 6GB コンパイラ : gcc です。 よろしくお願いします。 //----------------------------------------------------- //通常バージョン #include <stdio.h> #include <stdlib.h> #define SIZE (512*1024*1024) //500MB int main(void) { unsigned long int i; unsigned char *data; FILE *fp; data = (unsigned char *)malloc(SIZE); if(data == NULL) { printf("メモリが確保できません\n"); exit(EXIT_FAILURE); } fp = fopen("filein.dat", "rb"); fread( data, sizeof( unsigned char), (int)SIZE, fp ); fclose(fp); /* //表示 for( i=0; i<SIZE; i++ ){ printf("%2x", data[i]); } puts(""); */ fp = fopen("fileout.dat", "w"); fwrite( data, sizeof( unsigned char), (int)SIZE, fp); fclose(fp); free(data); return 0; } //----------------------------------------------------- //readシステムコールを使ったバージョン #include <stdio.h> #include <stdlib.h> #define SIZE (512*1024*1024) //500MB int main(void) { unsigned long int i; unsigned char *data; data = (unsigned char *)malloc(SIZE); if(data == NULL) { printf("メモリが確保できません\n"); exit(EXIT_FAILURE); } int fd; fd = open( "filein.dat" ); read( fd, data, sizeof(unsigned char)*SIZE); close(fd); /* //表示 for( i=0; i<SIZE; i++ ){ printf("%2x", data[i]); } puts(""); */ FILE *fp; fp = fopen("fileout.dat", "w"); fwrite( data, sizeof( unsigned char), (int)SIZE, fp); fclose(fp); free(data); return 0; }

  • 「たのしいRuby」は読み終わりましたが、コードも読めないしあまり書け

    「たのしいRuby」は読み終わりましたが、コードも読めないしあまり書けません。2冊目に読む本かサイトを探していまいす。どなたかしっている方がいらしたら教えてください。よろしくお願いいたします。

    • ベストアンサー
    • LLR4
    • Ruby
    • 回答数5
  • VMware Player 3.0 でブリッジ接続する方法を教えてくだ

    VMware Player 3.0 でブリッジ接続する方法を教えてください。 ホストOS: WindowsXP professional sp3 (IP: 192.168.1.11) ゲストOS: CentOS 5.4(IP: 192.168.1.177) 仮想マシン設定 > ハードウェア > ネットワークアダプタ にて ネットワークをブリッジに設定しています。 この状態で、ゲストOSのIPに対し ping を送信してみるとレスポンスがあるのですが ssh できません。ゲストOSを落としてpingを送信した場合レスポンスはないので、IPの衝突 でもないようです。ゲストOSは CentOSを最小構成でインストールし、ファイヤーウォールは http, https, smtp, ssh を許可しています。 また、ダウンロードしてきた VMware-player-3.0.0-203739.exe より vmnetcfg.exe を 取り出して実行し、仮想ネットワークの設定で自動になっていた VMnet0 のブリッジ先を 内臓のネットワークカードに設定してみましたが、結果は同じです。 どのようにできないかというと、ずっと応答を待ち続けているような状態になります。 ゲストOS側で、ifconfig eth0 down/up したり networt restart をしたり、いろいろ 試していたときに一度だけ接続に成功したように見えましたが、下記のようなエラーに なりました。 $ ssh root@192.168.1.177 The authenticity of host '192.168.1.177 (192.168.1.177)' can't be established. RSA key fingerprint is 03:0c:6a:1f:18:01:38:c7:ff:c3:06:f0:3a:62:ee:cf. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.177' (RSA) to the list of known hosts. root@192.168.1.177's password: Read from socket failed: Connection reset by peer 以前に、無償版のVMware 2(Playerではない?)を使用しており、アンインストールして VMware3.0を入れなおししたので、その影響も考え、仮想ネットワークの設定で、一旦、 デフォルトの設定に戻し、ネットワークアダプタ等の再インストールもやってみたのですが やはり結果は同じになります。 正しいブリッジ接続の方法をご教示いただけないでしょうか? よろしくお願いいたします。

  • VMware Player 3.0 でブリッジ接続する方法を教えてくだ

    VMware Player 3.0 でブリッジ接続する方法を教えてください。 ホストOS: WindowsXP professional sp3 (IP: 192.168.1.11) ゲストOS: CentOS 5.4(IP: 192.168.1.177) 仮想マシン設定 > ハードウェア > ネットワークアダプタ にて ネットワークをブリッジに設定しています。 この状態で、ゲストOSのIPに対し ping を送信してみるとレスポンスがあるのですが ssh できません。ゲストOSを落としてpingを送信した場合レスポンスはないので、IPの衝突 でもないようです。ゲストOSは CentOSを最小構成でインストールし、ファイヤーウォールは http, https, smtp, ssh を許可しています。 また、ダウンロードしてきた VMware-player-3.0.0-203739.exe より vmnetcfg.exe を 取り出して実行し、仮想ネットワークの設定で自動になっていた VMnet0 のブリッジ先を 内臓のネットワークカードに設定してみましたが、結果は同じです。 どのようにできないかというと、ずっと応答を待ち続けているような状態になります。 ゲストOS側で、ifconfig eth0 down/up したり networt restart をしたり、いろいろ 試していたときに一度だけ接続に成功したように見えましたが、下記のようなエラーに なりました。 $ ssh root@192.168.1.177 The authenticity of host '192.168.1.177 (192.168.1.177)' can't be established. RSA key fingerprint is 03:0c:6a:1f:18:01:38:c7:ff:c3:06:f0:3a:62:ee:cf. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.177' (RSA) to the list of known hosts. root@192.168.1.177's password: Read from socket failed: Connection reset by peer 以前に、無償版のVMware 2(Playerではない?)を使用しており、アンインストールして VMware3.0を入れなおししたので、その影響も考え、仮想ネットワークの設定で、一旦、 デフォルトの設定に戻し、ネットワークアダプタ等の再インストールもやってみたのですが やはり結果は同じになります。 正しいブリッジ接続の方法をご教示いただけないでしょうか? よろしくお願いいたします。

  • バグを多発してしまいます。

    いつもお世話になっております。 IT業界に勤務して3年目の pinchcock と申します。 現在、私が所属しているプロジェクトは、部長 ― 私(平社員) といった、2人体制の社内システムプロジェクトです。 社内システムの新規機能追加・保守が頻繁にあるわけですが、 開発~試験まで一人でこなす必要があります。 ただ、私の実力不足(主にチェックリストを網羅できない)と スパゲティプログラム(1000行近くのSQL文等)が合い重なって、 改修などすると、別のところでバグを発生させてしまう状況が、 ここ最近多く見られます。 先日も、私が発生させてしまったバグが原因で、 経営陣会議に出席し、バグの説明&謝罪をしました。 とても情けなかったですし、向いていないのかなとも 感じてきております。 そこで、品質管理に関するセミナーに参加しようと 考えているのですが、経験豊富な皆様にもアドバイスを頂きたく 質問させて頂きました。 皆様が開発・保守で気をつけておられる点は どのような点でしょうか? お聞きしたいことは、 (1)新規機能を作成する際に、気をつけるべき点。 (2)改修のときに、気をつけるべき点。 (3)お勧めの品質管理のセミナーor書籍情報 です。 以上、ご教授の程よろしくお願い致します。

  • プログラムの『軽い』と『重い』について

    C++でDirectXを使用したゲームプログラミングしているのですが、 どうもプログラミングの組み方が悪いのか動作が重く、うまく動いてくれません。 そこでいまさらかもしれませんが、プログラミングにおいて『重い』や『軽い』というのはどのような書き方なのでしょうか? 例えば、 「for文やwhile文などのループ系は重い」、 「windowsプログラミングのtimeGetTime関数などの時間を扱う関数は重い」 などはよく耳にするのですが、そういう情報はどこから手に入れるのでしょうか? わかる方いたら教えてください。 よろしくお願いします。

  • プログラマーに依頼したい

    私はプログラミングの知識がなく、ソフトウェアの開発をプログラマーにお願いしたいと思っています。 そこで以下のことを質問です。 1)ソフトウェアの内容を伝える方法 開発の規模や内容によって値段が異なると過去の質問にありました。 そのソフトの内容などをどのように伝えればいいのでしょうか。 プログラマーと口頭やメールなどでやり取りをすればよいのか、 ある程度デザインや設計図的なものを作らなければならないのでしょうか? 基本的なアイデアはほとんど僕の頭の中にあります。 2)ソフトウェアの規模 ソフトはちょっとした会計ソフトです。データベースに接続したりといったことはないと思うのですが、それは小規模といってよいでしょうか? 大まかでよいので相場を教えてください。 3)プログラマーの探し方 とりあえずSOHOビレッジというところで探してみたのですが、プログラミングの請負はないようです。 ほかによいサイトやプログラマーがいたら教えてください。 よろしくお願いします。

  • 基本情報処理技術者試験の問題

    今月18日の基本情報処理技術者試験を受験する学生の者です。 午前問題の過去問やテキストが載ってるサイトでお勧めのものが あれば教えて頂きたいです。また、午後問題のエクセルの表計算に 関する問題が載ってるサイトがありましたらぜひ教えて頂きたいので よろしくおねがいします。

  • ドール(球体関節人形など)の入門者向けガイド

    ドール(球体関節人形など)の入門者向けガイドとなるサイトやコミュニティ、本などありますでしょうか? たまにネットなどで素晴らしいお人形さんを作って(売って?)らっしゃる方々がいるのですが、どういったところに情報があるのか見当もつかず、迷っております。 砂糖菓子のように甘く儚い美しいドールに心惹かれているのですが、ああいったものは作れるんでしょうか?そんな諸々の初歩的なこともわからずにおります・・・

  • 3Dプログラミングでの三角関数とベクトル

    3Dプログラミングで衝突判定の技術紹介を読んでいると しきりにベクトルと、その中に三角関数(sin cos tan)が出てきて困っています。 そこで、個人的見解で構いませんので 「3Dプログラムで必要な三角関数・ベクトルで必ず理解すべき要点(できればその用途)」 というものが有ったら教えて頂ければ・・と思います。 また、お勧めの学習サイト等有りましたら紹介して頂けると嬉しいです。

  • enumの値から定義名を文字列化したい

    C++でenumの値を元に、定義した名前(Fruits_Appleとか)を文字列として取得したいのですが、何か良い方法はないでしょうか? switch文等で分岐させて...という方法もありますが、enumの定義数が多くなるとコードが複雑になるので、シンプルな方法をさがしています。 enum Fruits{ Fruits_Apple, Fruits_Orange, Fruits_End }; void printFruits(Fruits fruits) { // ここで引数fruitsの値に応じて"Fruits_Apple"とか"Fruits_Orange"とかを // 文字列に代入したい std::string fruitsName = "Fruits_Apple"; }