Quantcast
Channel: OKWAVE 閲覧数の多い質問(C・C++・C#/250)【本日】
Viewing all 50953 articles
Browse latest View live

迷路を脱出する経路探索プログラムをC言語で作成するには?

$
0
0
迷路を脱出する経路を探索するプログラムを作成したいのですが、 何をすればいいのかまったくわかりません、 サンプルプログラムや解決ヒント等、 データの提供お願いします。 かなりこまってます。

ソケット通信でチャットプログラム(unix c言語)

$
0
0
c言語のソケット通信でチャットプログラムを作り中です 仕様:あるクライアントからメッセージがサーバに送信された時点でサーバは接続されたいる全てのクライアントにメッセージを送信する。 以下のようにクライアントからの接続(accept)がある度に、その返り値であるファイルディスクリプタにに対するreadと全クライアントに対するwriteの処理を行うchild関数をforkで起動します。これだとforkが起動した時点での全てのファイルディスクリプタ(接続されている全クライアント)の情報をchild関数に渡せますが、それ以降増え続けていくファイルディスクリプタの情報をchild関数に渡せないので、最初の方に接続したクライアントからのメッセージをそれ以降接続した他のクライアントに送信できないという状態です。 main() {   socket()   bind()   listen()     while(1){       accept()       if(fork()==0) {        child()       }     } } child() {   select()   if(FD_ISSET()) {     read()     write()   } } ※forkやソケット通信に関してかなり初心者なので、ソースや説明分が意味不明かもしれませんがよろしくお願いします。

迷路探索プログラムを作るにはどうしたらいいですか??><;

$
0
0
Borland C++っていうので、プログラムを書いて、4*4マスの小さい迷路で走らせるんですが、C言語がまったくわからないので困っています。 Borlandでプログラムを作って、コマンドプロンプトを使ってネットにあった迷路のソフトを使って走らせるんですが、パソコン自体使い慣れていないのでどうしたらいいのかわかりません。左手拡張法と求心法とトレモー法のどれかを作って、掲載してもらえないでしょうか?非常に困っているのでお願いします。

C言語初心者の質問失礼します。

$
0
0
C言語初心者の質問失礼します。 プログラムを作って、cygwinでコンパイラしたのですが、以下のようなエラーメッセージが出てしまいました。 expected declaration or statement at end of input どのような意味なのか教えてください。 ばかみたいな質問でごめんなさい…。

なぜダメですか? IntPtr hMem = ~

$
0
0
なぜダメですか? IntPtr hMem = GetHdevmode(); プリンタの設定値を変更したと思い、まずはDEVMODE構造体の読込みに行きました IntPtr hMem = GetHdevmode(); ところが 'IntPtr' : 定義されていない識別子です。 'GetHdevmode': 識別子が見つかりませんでした とのシンタックスエラーが出ます 名前空間の影響と考え System.IntPtr hMem = System.Drawing.Printing.GetHdevmode(); としましたら 'System' : 式の中で名前空間の識別子が正しく使用されていません。 とのエラーとなりました このシンタックスエラーが取れずに難儀しております ご存知の方には初歩的なエラーなのだと思いますが、当方初心者なので苦労しております ぜひご指導をお願い致します なおWindows7 と Framework 4.0のC++ を使用しております

ハンドルされていない例外が発生しました

$
0
0
C言語の勉強をしていますが、初心者なものでなかなか思うようにできません。 Visual Studioを使って「lfit5」というプログラムを作っています。下にプログラムのmainを載せています。 int _tmain(int argc, _TCHAR* argv[]) { int ma=2; int mfit=2; int ndata=4; float m; float s=0.0; float *n; float **covar; float *chisq=&s; void (*funcs)(float x[], float *afunc, int ma); float x[4]={1,2,3,4}; float y[4]={0,5,15,24}; float sig[4]={1,1,1,1}; float a[2]; int ia[2]; char buf; //chisq=0; n=&m; covar=&n; funcs=orgfuncs; lfit(x, y, sig, ndata, a, ia, ma, covar, chisq, funcs); buf=getchar(); buf=getchar(); return 0; } ビルドはできたのですが、実行すると lfit5.exe の 0x004127f4 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xccccccd0 に書き込み中にアクセス違反が発生しました。 というエラーメッセージが出ます。 最初は「coverが初期化されていない」というエラーが出ていて、 n=&m; covar=&n; 等 を加えることで初期化のエラーは消えたのですが、次に上記のようなエラーメッセージが出始めました。 専門用語等解らないことも多いのですが、どうすればよういか解らず、御教授頂きたいです。 どうか宜しくお願い致します。

C言語 代入演算子の意味をおしえてください

$
0
0
今、C言語を勉強しているものですが、代入演算子でわからないことがあるのでおしえてください。 *=, %=, -= などはわかるのですが、 <<=, >>=, &=, ^=, |= の意味がわかりません。 どなかか教えてください。よろしくお願いします。

OpenCVを使った画像の切り抜き

$
0
0
添付画像のように、サイズ(X,Y)の画像があったとします。 その画像のある座標(X',Y')とサイズを指定してできた短形領域を、IplImageとして保存するにはどうすればいいのでしょうか? OpenCVを使ってるのですが、そういった関数はなかったでしょうか? よろしくお願いします。

fatal error LNK1120: 外部参照 1 が未解決です

$
0
0
またわからないことが・・・ 教えて下さい。 以下をVC++2005でコンパイルすると、 MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。 C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。 と警告がでて通りません。 何のことでしょうか。 #include<stdio.h> #include<process.h> struct meibo{   char name[20];   char tel[20];   char address[20]; }; void message( void ); void input( FILE *fp, int cnt , struct meibo *a, int *end ); void main( void ) {   struct meibo a[20];   FILE *fp;   int cnt, end;   if( (fp=fopen( "meibo.dat", "w" ) ) == NULL ){     printf( "Can not open the meibo.dat.\n" );     exit( 1 );   }   message();   fprintf( fp, "番号, 名前, TEL, 住所\n" );   fflush( fp );   cnt = 0;   end = 0;   while( end == 0 ){     input( fp, cnt, &a[cnt], &end );     cnt++;     fflush( fp );     if( cnt == 20 ){       printf( "人数が一杯です.終了します.\n" );       end = 1;     }   }   fclose( fp ); } void message( void ) {   printf( "名前, TEL, 住所, endを入力してください.\n" );   printf( "継続の時はend=0," );   printf( "中止の時は,end=1と入力してください.\n" ); } void input( FILE *fp, int cnt, struct meibo *a, int *end ) {   printf( "名前-->" );   scanf( "%s", a->name );   printf( "TEL -->" );   scanf( "%s", a->tel );   printf( "住所-->" );   scanf( "%s", a->address );   printf( "Exit? Continue:0 Exit:1 -->" );   scanf( "%d", end );   printf( "\n" );   fprintf( fp, "%2d, %s, %s, %s\n",     cnt+1, a->name, a->tel, a->address ); }

バブルソート:ポインタで並び替えについて。

$
0
0
今C言語の研修中で、バブルソートのプログラムをくんでいます。 それで、以下のように配列で入れ替えではなく、ポインタで入れ替えをしたいのですが、  dt+i = dt+i+1;  dt+i+1 = dt2; で、  invalid lvalue in assignment というエラーが出てしまいます。 書き方がまちがっているんでしょうか? 参考書やHPも探してみたのですが、探し方が悪いのかどうにもわかりません。 研修中なので、調べるのも勉強だとは思うのですが、お手上げで・・・・・・ 情けないですが、教えていただけると嬉しいです。 /** ソート処理 **/ static int SORT_PROC(void) {   int i,m;   syouhin_typ *dt2;   /** バブルソートでソート処理 **/   for(m=0; m<i_cnt-1; m++){     for(i=0; i<i_cnt-1;i++){       if(strncmp((dt+i)->code,(dt+i+1)->code,sizeof(dt->code)) >= 0){          dt2 = dt+i;          dt+i = dt+i+1;          dt+i+1 = dt2;       }     }   } } ちなみにdtはグローバル変数で、 typedef struct{   char code[5]; /** 商品コード **/   char uriage[5]; /** 売上数 **/ }syouhin_typ; /** グローバル変数 **/ syouhin_typ *dt; /** 商品 **/ としてあります。

c言語 標準体重計算のプログラミング

$
0
0
標準体重計算のプログラミングを作成しています。身長(m)×身長(m)×22 での計算方法を採用していますが初心者なので全くでくません。全くなっていませんがここにのせます。 どなたか正しいプログラミングを教えてください #include <stdio.h> //標準体重の計算 int main (int argc, const char * argv[]) { int height; int weight; double x; double y; printf("あなたの標準体重を計算します\n\n"); printf("あなたの身長(cm)、体重(kg)を入力してください\n"); scanf("%d %d",&height,&weight); x=height/100; y=x*x*22; printf("これが標準体重です\n"); printf(" %y \n");

C++でMySQLにアクセスするプログラム

$
0
0
C++でMySQLにアクセスするプログラムを作成中なのですが、エラーが解決できずに困っています。 MySQLは別マシン上に構築済みです。 ◆環境◆ Windows 8.1 Enterprise 評価版 64bit VS Express 2013 for Windows Desktop ◆構築手順◆ mysql-connector-c++-noinstall-1.1.4-win32.zip を http://dev.mysql.com/downloads/connector/cpp/ からダウンロードして、C:\MySQL\に展開。 C:\MySQL\lib\mysqlcppconn.dllをプロジェクトのdebugフォルダに配備。 mysql-5.6.21-win32.zip を http://sourceforge.net/projects/mysql.mirror/files/MySQL%205.6.21/ からダウンロードして 展開したフォルダの、lib\libmysql.lib を C:\MySQL\libに配備。 また同様に、lib\libmysql.dllをプロジェクトのdebugフォルダに配備。 ◆プロジェクトのプロパティ◆  Win32構成にしたいと思っています。 構成 Debug プラットフォーム アクティブ(Win32) 構成プロパティ→C/C++→全般→追加のインクルードディレクトリに「C:\MySQL\include;」を追加 構成プロパティ→リンカー→全般→追加のライブラリディレクトリに「C:\MySQL\lib;」を追加 構成プロパティ→リンカー→入力→追加の依存ファイルに「mysqlcppconn-static.lib;libmysql.lib;」を追加 ◆プログラム◆ #include <iostream> #include <string> #include <sstream> #include <windows.h> #include "mysql_connection.h" #include "mysql_driver.h" #include <cppconn/driver.h> #include <cppconn/connection.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include "ComPtr.h" using namespace std; void main(int argc, char **argv) { try { sql::mysql::MySQL_Driver *driver; sql::Connection *con; driver = sql::mysql::get_driver_instance(); con = driver->connect("tcp://xxxx.jp:3306", "xxxx", "xxxx"); delete con; } catch ( std::exception& ex ) { cout << ex.what() << std::endl; } } ◆エラーメッセージ◆ 1>------ すべてのリビルド開始: プロジェクト:TestMySQL, 構成:Debug Win32 ------ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(388,5): warning MSB8028: The intermediate directory (Debug\) contains files shared from another project (TestMySQL.vcxproj, TestMySQL.vcxproj). This can lead to incorrect clean and rebuild behavior. 1> main.cpp 1>c:\mysql\include\cppconn\sqlstring.h(39): warning C4251: 'sql::SQLString::realStr' : class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' は __export キーワードを使って class 'sql::SQLString' にエクスポートしてください。 1>c:\mysql\include\mysql_connection.h(165): warning C4251: 'sql::mysql::MySQL_Connection::proxy' : class 'boost::shared_ptr<sql::mysql::NativeAPI::NativeConnectionWrapper>' は __export キーワードを使って class 'sql::mysql::MySQL_Connection' にエクスポートしてください。 1>c:\mysql\include\mysql_connection.h(169): warning C4251: 'sql::mysql::MySQL_Connection::service' : class 'boost::scoped_ptr<sql::mysql::MySQL_Statement>' は __export キーワードを使って class 'sql::mysql::MySQL_Connection' にエクスポートしてください。 1>c:\mysql\include\mysql_driver.h(52): warning C4251: 'sql::mysql::MySQL_Driver::proxy' : class 'boost::scoped_ptr<sql::mysql::NativeAPI::NativeDriverWrapper>' は __export キーワードを使って class 'sql::mysql::MySQL_Driver' にエクスポートしてください。 1>main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: __thiscall sql::SQLString::~SQLString(void)" (__imp_??1SQLString@sql@@QAE@XZ) が関数 _main で参照されました。 1>main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: __thiscall sql::SQLString::SQLString(char const * const)" (__imp_??0SQLString@sql@@QAE@QBD@Z) が関数 _main で参照されました。 1>main.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_driver_instance(void)" (__imp_?get_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ) が関数 _main で参照されました。 未解決の外部シンボル~の解決方法が分かりません。 includeした、mysqlヘッダーを何か編集しなければならないのでしょうか? それとも何か根本的に間違っている部分があるのでしょうか? C++にもVisual Studioにも慣れておらず、困っています。 何方かお知恵を頂ける方、よろしくお願いします。

マンセル⇔XYZ,RGB変換式或いは対応表

$
0
0
現在、リニアRGB、sRGB、Lab、XYZ、マンセルの表色系の 相互変換ソフトを制作しております。 マンセル以外の表色系については変換は成功いたしました。 しかし、マンセルとの変換については未だ成功しておりません。 マンセル⇔XYZ、RGB、Labの変換方法をご存知の方はお教えください。 できれば変換式の方が好ましいのですが、対応表でも構いません。 対応表の場合は、 マンセルにおける色差と他表色系の色差を埋める補間式も ご教授くだされば幸いです。

_TCHAR*での引数の読み込み

$
0
0
VC++2010での、通常の #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { return 0; } のウィザードを使って、arvg[1]やargv[2]に引数を与えて、本体内で通常のCで使う printf("%s\n", argv[1]); や fopen(argv[1], "r"); を使いたいのですが、引数の型が_TCHAR*になっているため文字がそのまま使えません。 int main(int argc, char *argv[]) で使えば問題なく使えるのですが、デフォルトのウィザードを使った時の使い方を知っておきたいのです。 御経験のある方、御教示お願い致します。

多重定義が起きている?--lnk2005エラー:VC++

$
0
0
今つまずいている問題は、VC++2008環境下で、以下のような構造になっているプログラムにおいて、多重定義?されているのでコンパイルが通らないというものです。 ソースコードを載せることは大きすぎてできないので、問題となる部分の記述のみ抽出して書きます。 -------define.h---------- ・・・・(module.h内の関数に使われる型の定義など) --------------------------- -------module.h---------- #include "define.h" void mod_1(void){・・・} void mod_2(void){・・・} --------------------------- このように、2つのヘッダーファイルがあり、define.hをインクルードしてmodule.hを使うという構造です。 (一般的ではないようですが、module.h内にmod_1やmod_2の実体を書き込んでいます。) その中で、以下のようなcppソースファイルがあります。 -------Main.cpp---------- #include "module.h"   (他のMain.cpp内の関数の都合上、Main.cppでもmodule.hをインクルードしています。関係あるかもしれないと思い書きました。) int main(){ M(); N(); } ------------------------ -------M.cpp---------- #include "module.h" void M(void){ mod_1(); mod_2(); } ---------------------- -------N.cpp---------- #include "module.h" void N(void){ mod_1(); mod_2(); } ---------------------- とすると、コンパイルの結果は次のようになります。 1>N.obj : error LNK2005: "void __cdecl mod_1(void)" (?mod_1@@YAXXZ) は既に M.obj で定義されています。 1>N.obj : error LNK2005: "void __cdecl mod_2(void)" (?mod_2@@YAXXZ) は既に M.obj で定義されています。 多重定義や多重インクルードは起こしていないと思っていますが、M.cppとN.cpp内の定義が衝突する理由がわかりません。どなたか理由が思いつく方、教えていただけたら幸いです。お願いいたします!! ◆◆◆   ◆◆◆   ◆◆◆   ◆◆◆   ◆◆◆ ちなみに、たとえばMやNとまったく同じ「A.cpp」を作り、このように書いたとします。 -------A.cpp---------- #include "module.h" void A(void){ mod_1(); mod_2(); } ---------------------- そしてmain関数の中に、MやNと同様に『A();』を付け加えたとします。 すると、実行結果はこのようになります。 1>M.obj : error LNK2005: "void __cdecl mod_1(void)" (?mod_1@@YAXXZ) は既に A.obj で定義されています。 1>M.obj : error LNK2005: "void __cdecl mod_2(void)" (?mod_2@@YAXXZ) は既に A.obj で定義されています。 1>N.obj : error LNK2005: "void __cdecl mod_1(void)" (?mod_1@@YAXXZ) は既に A.obj で定義されています。 1>N.obj : error LNK2005: "void __cdecl mod_2(void)" (?mod_2@@YAXXZ) は既に A.obj で定義されています。 VC++はファイル名のアルファベット順にコンパイルするようですが、どちらにせよmain関数内で呼び出されていること以外何の関わりも無いはずのA、M、Nの中での出来事が、衝突する理由が、調べども思い当たりません。 お願いいたします。

fatal error C1083: include ファイルを開けません というエラーが出ます

$
0
0
初心者です。ソースは以下の通りです。 #include "stdafx.h" #include <cv.h> #include <highgui.h> #pragma comment(lib,"cv.lib") #pragma comment(lib,"cxcore.lib") #pragma comment(lib,"highgui.lib") int _tmain(int argc, _TCHAR* argv[]) { Ip1Image* img; //画像変数宣言 cvNamedWindow("画像表示"); // 表示ウィンドウの作成 img = cvLoadImage("Image.jpg"); //画像ファイルの読み込み if(img == NULL){ //ファイルが読み込めない場合 printf("ファイルが読み込めません。\n"); cvWaitKey(0); //キー入力待機 return -1; } cvShowImage("画像表示", img); //表示ウィンドウに画像を表示 cvWaitKey(0); //キー入力待機 cvDestroyWindow("画像表示"); //表示ウィンドウの破棄 cvReleaseImage(&img); //画像領域の解放 return 0; } 以上のソースをビルドすると、以下のようなエラーが出てしまって、うまくコンパイルすることができません。 1>------ ビルド開始: プロジェクト: ImageDisplay, 構成: Debug Win32 ------ 1>コンパイルしています... 1>ImageDisplay.cpp 1>c:\users\g031f096\documents\visual studio 2008\projects\imagedisplay\imagedisplay\imagedisplay.cpp(5) : fatal error C1083: include ファイルを開けません。'cv.h': No such file or directory 1>ビルドログは "file://c:\Users\g031f096\Documents\Visual Studio 2008\Projects\ImageDisplay\ImageDisplay\Debug\BuildLog.htm" に保存されました。 1>ImageDisplay - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== どのようにすれば通るのでしょうか?よろしくお願いします。開発環境は Visual C++ 2008 Express Editionです。

ポリゴン 球体を三角形パッチで表現する理由

$
0
0
タイトルの通りですが、球体をあえて三角形パッチで表現する理由はなんでしょうか?

CStringをwchar_tに変換したい

$
0
0
CStringをwchar_tに変換したく思い、ネットで探したところ、 http://msdn2.microsoft.com/ja-jp/library/ms235631(VS.80).aspx のページを見つけたので、下記のプログラムを組んで実行してみましたがエラーになって しまいます。 【プログラム】 CString orig("Hello, World!"); // Convert to a char* const size_t newsize = 100; // Convert to a wchar_t* // You must first convert to a char * for this to work. size_t origsize = strlen(orig) + 1; size_t convertedChars = 0; wchar_t wcstring[newsize]; mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE); 【エラー】 error C2664: 'strlen' : 1 番目の引数を 'CString' から 'const char *' に変換できません。 error C2664: 'mbstowcs_s' : 4 番目の引数を 'CString' から 'const char *' に変換できません。 &CStrinをconst char *でキャストしてもうまくいきません。 どこがおかしいのでしょうか? 【環境】 WindowsXP+VC++2005

DataGridViewのチェックボックスのON、OFFの判定方法

$
0
0
お世話になります。ご協力お願いします。 環境:VS2008 .Net FrameWork3.5 言語:C# 質問内容:ボタンを押下したら、DataGridViewの列に設定したチェックボックスのON,OFFを判定して処理を行いたい。 現状以下の方法で実現は出来ていますが、とても回りくどい方法になっています。 正しい処理を教えて頂けないでしょうか。 1.DataGridViewにて、列にチェックボックスを設けている。 2.truevaluesプロパティにtrueをセットしている。 ボタンを押下したらチェックボックスのON、OFFを判定する為に、DataGridViewの行を ループさせて判定させています。 for(int i=0;i < DataGridView.Count;i++){ ___if((string)DataGridView.Rows[i].Columns[0].values == "true") ___{ ______処理 ___} } お願い致します。

C言語 ポインタ変数について

$
0
0
ポインタ変数の値とアドレスの表示の仕方がよくわからないため、教えていただけますでしょうか。 --------------------------------------------------------------------- #include <stdio.h> int main() {    char* animal[] = {"dog", "cat", "hamster", "mouse"};    int i;    for(i=0; i<4; i++) {      printf("%p animal[%d] : %s, アドレス : %p\n",      animal+i, i, animal[i], *(animal+i));    }    return 0; } --------------------------------------------------------------------- このプログラムを実行すると 0022FF40 animal[0] : dog, アドレス : 00403000 0022FF44 animal[1] : cat, アドレス : 00403004 0022FF48 animal[2] : hamster, アドレス : 00403008 0022FF4C animal[3] : mouse, アドレス : 00403010 となるのですが、なぜanimal[i]のところに配列の要素(dog, cat,・・・)が表示されるのかがわかりません。 char* animal[] = {"dog", "cat", "hamster", "mouse"};の行では、 animal[0] = "dog" なら animal[0]には"dog"の先頭アドレス(00403000)が代入されているのではないのでしょうか。
Viewing all 50953 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>