全2241件中841~860件表示
  • CQ出版Interface誌12月号のVC++でのTCP/IPサンプルプログラムを動作できない

    Interface誌の12月号にMicrosoft Vistal C++ 2008 Express EdtionでのTCP/IPサーバ、クライアントのサンプルプログラムが下記のURLからダウンロードできるようになっており、 http://www.cqpub.co.jp/interface/download/contents.htm ”第1章 C言語で書くシンプルなWebサーバの製作”の項目 このサイトからダウンロードして、自分のPCでサーバとクライアントを両方CTRL + F5で起動させようとしたところ、サーバプログラムはちゃんと起動するのですが、クライアントを起動することができませんでした。雑誌の中ではちゃんと動くようなのですが、なぜ自分のPCでは動かないのか原因がわかりません。ご存じの方いらっしゃいましたら是非ご教授よろしくお願いいたします。 そのときの症状を映像で取りましたのでyoutubeにアップしておきます。

  • 直接選択法

    Cでアルゴリズムの勉強をしているものです。 以下のプログラムを実行して 9 8 7 6 5 4 3 2 1 10 入力すると 10 2 3 4 5 6 7 8 9 9 と帰ってきます。 習いたてでどこが悪いかわからないのでどなたか教えてください 汗。 ////*直接選択法*//// #include <stdio.h> #define MAXDATA 10 void selection(int a[],int n){ int i,j,t; for(i=0 ; i < n ; i++){ for(j=i+1 ; j<n ; j++){ if(a[j] < a[i]) t = a[i]; a[i] = a[j]; a[j] = t; } } } int main(void) { int k,j,sort[MAXDATA]; for(k=0;k < MAXDATA;k++) {printf("sort[%d]:",k); scanf("%d",&sort[k]);} for(k=0;k < MAXDATA;k++) printf("%3d",sort[k]); puts("ソートしますか? Yes:1 No:0 ///"); scanf("%d",&j); if(j==1){ selection(sort,MAXDATA); for(k=0;k < MAXDATA;k++) printf("%3d",sort[k]); } putchar('\n'); return(0); }

    • Nya-22
    • 回答数2
  • STLのlistとrandを使うと異常終了します

    STLの勉強をしているものです。VisualC++6.0で正常に動作するプログラムをVusialC++2008ExpressEditionで動かしたら異常終了しました。色々調べていくと、乱数値をセットしたlistをマージするときに異常終了するようです。尚、異常終了するのはDebugビルドのときのみで、Releaseビルドのときは正常に動作します。異常終了するプログラムを以下に載せておきます。どなたかご教授お願い申し上げます。 #include<list> #include <time.h> #include <stdlib.h> using namespace std; int main(int argc, char* argv[]){ list<int> lst1, lst2; int i, n; srand(time(NULL)); for( i = 0 ; i < 5 ; i++ ){ n=rand() % 10; lst1.push_back( n ); } for( i = 0 ; i < 5 ; i++ ){ n=rand() % 10; lst2.push_back( n ); } lst1.merge( lst2 ); // リストをマージ ここで異常終了 return 0; }

  • new と malloc によるメモリの動的確保について

    初めて投稿させて頂きます。よろしくお願い致します。 現在、以下のような、2次元配列による動的なメモリの確保を意図して、コードをC/C++にて記述しています。 (コンパイラはMINGW32のg++ 3.4.5) //mallocによるメモリ動的確保 data = (char **)malloc(num * sizeof(char*)); for(i=0; i<rowNum; i++){ data[i] = (char *)malloc(sizeof(char)*256); } //newによるメモリ動的確保 data = new char*[rowNum]; for(i=0; i<rowNum; i++){ data[i] = new char; } C++で書くのならば、 「mallocによるメモリ確保は辞め、newによるメモリ確保をしなさい」 という指摘が、書籍でもwebでもありましたので、 両方書き、両者を比べているのですが、理由がイマイチ分かりません。 10万行ほどのテキストデータで実験させてみたのですが、 mallocによる記述の方が、動作が数秒速いようなのです。 それで、new やmalloc で実際何をやっているのか、コードを見ようと思ったのですが、 newでは、 void* operator new(std::size_t) throw (std::bad_alloc); void* operator new[](std::size_t) throw (std::bad_alloc); void* operator new(std::size_t, const std::nothrow_t&) throw(); void* operator new[](std::size_t, const std::nothrow_t&) throw(); inline void* operator new(std::size_t, void* __p) throw() { return __p; } inline void* operator new[](std::size_t, void* __p) throw() { return __p; } というnewファイルの記述で行き詰まり、 malloc は malloc_allocator.hというファイルで行き詰りました。 以上を踏まえて、 1)そもそも、上記のメモリ動的確保記述はスマートな書き方なのか 2)実際に、newやmallocは、どういった手法でメモリ領域を確保しているのか 以上の2点について、ご教授下さい。よろしくお願い致します。

    • popo83
    • 回答数9
  • new と malloc によるメモリの動的確保について

    初めて投稿させて頂きます。よろしくお願い致します。 現在、以下のような、2次元配列による動的なメモリの確保を意図して、コードをC/C++にて記述しています。 (コンパイラはMINGW32のg++ 3.4.5) //mallocによるメモリ動的確保 data = (char **)malloc(num * sizeof(char*)); for(i=0; i<rowNum; i++){ data[i] = (char *)malloc(sizeof(char)*256); } //newによるメモリ動的確保 data = new char*[rowNum]; for(i=0; i<rowNum; i++){ data[i] = new char; } C++で書くのならば、 「mallocによるメモリ確保は辞め、newによるメモリ確保をしなさい」 という指摘が、書籍でもwebでもありましたので、 両方書き、両者を比べているのですが、理由がイマイチ分かりません。 10万行ほどのテキストデータで実験させてみたのですが、 mallocによる記述の方が、動作が数秒速いようなのです。 それで、new やmalloc で実際何をやっているのか、コードを見ようと思ったのですが、 newでは、 void* operator new(std::size_t) throw (std::bad_alloc); void* operator new[](std::size_t) throw (std::bad_alloc); void* operator new(std::size_t, const std::nothrow_t&) throw(); void* operator new[](std::size_t, const std::nothrow_t&) throw(); inline void* operator new(std::size_t, void* __p) throw() { return __p; } inline void* operator new[](std::size_t, void* __p) throw() { return __p; } というnewファイルの記述で行き詰まり、 malloc は malloc_allocator.hというファイルで行き詰りました。 以上を踏まえて、 1)そもそも、上記のメモリ動的確保記述はスマートな書き方なのか 2)実際に、newやmallocは、どういった手法でメモリ領域を確保しているのか 以上の2点について、ご教授下さい。よろしくお願い致します。

    • popo83
    • 回答数9
  • visual c++ 2008 express editionでアセンブリを参照できるか?

    visual c++ 2008 express editionでアセンブリ言語を参照できますか?できる場合は方法を教えてください。

    • noname#97178
    • 回答数2
  • プログラミング書籍レビューサイト

    最近C++をはじめて大分経ったのですが C++の奥深さに感心させられました. 現在手元には 独習C++ がありますが 内容が入門的で物足りないと感じているので 新しい書籍を探しています. C++の文法というよりも C++での設計が学べる書籍が良いです. お勧めの書籍ありましたら教えて下さい. また お勧めの書籍レビューサイトでもいいです. 今読もうと思ってるのは Accelerated C++ Effective C++ です.

  • プログラム内への他プログラムの導入方法

    前回は不適切な質問を出してしまい、誠に申し訳ありませんでした。 関係者各位様には、この場を借りて謝らせてください。 改めて質問させてください。 あるプログラムAの中に別のプログラムBを組み込みたい(結果を代入できれば十分です)のですが、プログラムBが自分で作ったプログラムでないため、いまいち勝手がつかめません。 プログラムB外で、この結果を使いたい場合、どのようにプログラムを組めばいいか、教えて欲しいです。 よろしければ、今一度皆様の知識をお貸しください。 プログラムB→ #include <stdio.h> #include <math.h> #define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr void four1(float data[], unsigned long nn, int isign); /* test driver for four() */ int main(void) { /* sample data */ /* Note:sample[0] is not used.*/ /* It is due to the implementation of the function four1().*/ float original[]={0, /* not used*/ 0,0, /* 0 + 0i */ 1,0, /* 1 + 0i */ 2,0, /* 2 + 0i */ 3,0}; /* 3 + 0i */ /* fourier-transformed original[] */ float fft[]={0,0,0,1,0,2,0,3,0}; /* inverse-fourier-transformed original[]*/ float invfft[]={0,0,0,1,0,2,0,3,0}; int i; int nn = 4; /* nmber of sample data */ printf("Original data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, original[i], original[i+1]); } four1(fft, nn, 1); /* Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, fft[i], fft[i+1]); } four1(invfft, nn, 1); /* Fourier transform */ four1(invfft, nn, -1); /* Inverse Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, invfft[i]/nn, invfft[i+1]/nn); } four1(fft, nn, 1); /* Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, fft[i], fft[i+1]); } } void four1(float data[], unsigned long nn, int isign) { unsigned long n,mmax,m,j,istep,i; double wtemp,wr,wpr,wpi,wi,theta; float tempr,tempi; n=nn << 1; j=1; for (i=1;i<n;i+=2) { if (j > i) { SWAP(data[j],data[i]); SWAP(data[j+1],data[i+1]); } m=nn; while (m >= 2 && j > m) { j -= m; m >>= 1; } j += m; } mmax=2; while (n > mmax) { istep=mmax << 1; theta=isign*(6.28318530717959/mmax); wtemp=sin(0.5*theta); wpr = -2.0*wtemp*wtemp; wpi=sin(theta); wr=1.0; wi=0.0; for (m=1;m<mmax;m+=2) { for (i=m;i<=n;i+=istep) { j=i+mmax; tempr=wr*data[j]-wi*data[j+1]; tempi=wr*data[j+1]+wi*data[j]; data[j]=data[i]-tempr; data[j+1]=data[i+1]-tempi; data[i] += tempr; data[i+1] += tempi; } wr=(wtemp=wr)*wpr-wi*wpi+wr; wi=wi*wpr+wtemp*wpi+wi; } mmax=istep; } } #undef SWAP

  • 文字を入れ替える

    abcdefacdeeabとあるとします。 abと文字が来るときだけabを++に置き換えたいのです。 aだけ変えるのを考えたのですが bがある場合は+ とbがない場合はaも変えない と言うのが考えつきません。 char *a; int i; fgets=(moji,100,stdin); *a=moji[100]; for( i = 0 ; ; i++ ) { if( *(a+i) == 'a' ) { moji[i]='+'; else { moji[i]=*( a + i ); } if(*( a + i ) == '\0'); break; } 見にくいですがよろしくお願いします。

  • コールバックって何?

    はじめまして、_IXTLと申します。 仕事場でコールバック関数という言葉を聞きました。 呼び出し先にあらかじめ呼び出す関数を覚えさせておく 手法(うろおぼえ)とか…何とか…。 (確か、複数の関数ポインタのテーブルを持たせていたような気がします) Wikipediaなどでも調べましたが、意味が分かりません。 この意味や、メリットなどを詳しく教えて頂けないでしょうか? お願いします。

    • noname#150259
    • 回答数3
  • プログラム内への他プログラムの導入方法

    前回は不適切な質問を出してしまい、誠に申し訳ありませんでした。 関係者各位様には、この場を借りて謝らせてください。 改めて質問させてください。 あるプログラムAの中に別のプログラムBを組み込みたい(結果を代入できれば十分です)のですが、プログラムBが自分で作ったプログラムでないため、いまいち勝手がつかめません。 プログラムB外で、この結果を使いたい場合、どのようにプログラムを組めばいいか、教えて欲しいです。 よろしければ、今一度皆様の知識をお貸しください。 プログラムB→ #include <stdio.h> #include <math.h> #define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr void four1(float data[], unsigned long nn, int isign); /* test driver for four() */ int main(void) { /* sample data */ /* Note:sample[0] is not used.*/ /* It is due to the implementation of the function four1().*/ float original[]={0, /* not used*/ 0,0, /* 0 + 0i */ 1,0, /* 1 + 0i */ 2,0, /* 2 + 0i */ 3,0}; /* 3 + 0i */ /* fourier-transformed original[] */ float fft[]={0,0,0,1,0,2,0,3,0}; /* inverse-fourier-transformed original[]*/ float invfft[]={0,0,0,1,0,2,0,3,0}; int i; int nn = 4; /* nmber of sample data */ printf("Original data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, original[i], original[i+1]); } four1(fft, nn, 1); /* Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, fft[i], fft[i+1]); } four1(invfft, nn, 1); /* Fourier transform */ four1(invfft, nn, -1); /* Inverse Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, invfft[i]/nn, invfft[i+1]/nn); } four1(fft, nn, 1); /* Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, fft[i], fft[i+1]); } } void four1(float data[], unsigned long nn, int isign) { unsigned long n,mmax,m,j,istep,i; double wtemp,wr,wpr,wpi,wi,theta; float tempr,tempi; n=nn << 1; j=1; for (i=1;i<n;i+=2) { if (j > i) { SWAP(data[j],data[i]); SWAP(data[j+1],data[i+1]); } m=nn; while (m >= 2 && j > m) { j -= m; m >>= 1; } j += m; } mmax=2; while (n > mmax) { istep=mmax << 1; theta=isign*(6.28318530717959/mmax); wtemp=sin(0.5*theta); wpr = -2.0*wtemp*wtemp; wpi=sin(theta); wr=1.0; wi=0.0; for (m=1;m<mmax;m+=2) { for (i=m;i<=n;i+=istep) { j=i+mmax; tempr=wr*data[j]-wi*data[j+1]; tempi=wr*data[j+1]+wi*data[j]; data[j]=data[i]-tempr; data[j+1]=data[i+1]-tempi; data[i] += tempr; data[i+1] += tempi; } wr=(wtemp=wr)*wpr-wi*wpi+wr; wi=wi*wpr+wtemp*wpi+wi; } mmax=istep; } } #undef SWAP

  • プログラム内への他プログラムの導入方法

    前回は不適切な質問を出してしまい、誠に申し訳ありませんでした。 関係者各位様には、この場を借りて謝らせてください。 改めて質問させてください。 あるプログラムAの中に別のプログラムBを組み込みたい(結果を代入できれば十分です)のですが、プログラムBが自分で作ったプログラムでないため、いまいち勝手がつかめません。 プログラムB外で、この結果を使いたい場合、どのようにプログラムを組めばいいか、教えて欲しいです。 よろしければ、今一度皆様の知識をお貸しください。 プログラムB→ #include <stdio.h> #include <math.h> #define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr void four1(float data[], unsigned long nn, int isign); /* test driver for four() */ int main(void) { /* sample data */ /* Note:sample[0] is not used.*/ /* It is due to the implementation of the function four1().*/ float original[]={0, /* not used*/ 0,0, /* 0 + 0i */ 1,0, /* 1 + 0i */ 2,0, /* 2 + 0i */ 3,0}; /* 3 + 0i */ /* fourier-transformed original[] */ float fft[]={0,0,0,1,0,2,0,3,0}; /* inverse-fourier-transformed original[]*/ float invfft[]={0,0,0,1,0,2,0,3,0}; int i; int nn = 4; /* nmber of sample data */ printf("Original data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, original[i], original[i+1]); } four1(fft, nn, 1); /* Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, fft[i], fft[i+1]); } four1(invfft, nn, 1); /* Fourier transform */ four1(invfft, nn, -1); /* Inverse Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, invfft[i]/nn, invfft[i+1]/nn); } four1(fft, nn, 1); /* Fourier transform */ printf("Fourier Transformed data:\n"); for (i=1; i<2*nn; i+=2) { printf("%d th datum: %8.5f + %8.5fi \n", (i+1)/2, fft[i], fft[i+1]); } } void four1(float data[], unsigned long nn, int isign) { unsigned long n,mmax,m,j,istep,i; double wtemp,wr,wpr,wpi,wi,theta; float tempr,tempi; n=nn << 1; j=1; for (i=1;i<n;i+=2) { if (j > i) { SWAP(data[j],data[i]); SWAP(data[j+1],data[i+1]); } m=nn; while (m >= 2 && j > m) { j -= m; m >>= 1; } j += m; } mmax=2; while (n > mmax) { istep=mmax << 1; theta=isign*(6.28318530717959/mmax); wtemp=sin(0.5*theta); wpr = -2.0*wtemp*wtemp; wpi=sin(theta); wr=1.0; wi=0.0; for (m=1;m<mmax;m+=2) { for (i=m;i<=n;i+=istep) { j=i+mmax; tempr=wr*data[j]-wi*data[j+1]; tempi=wr*data[j+1]+wi*data[j]; data[j]=data[i]-tempr; data[j+1]=data[i+1]-tempi; data[i] += tempr; data[i+1] += tempi; } wr=(wtemp=wr)*wpr-wi*wpi+wr; wi=wi*wpr+wtemp*wpi+wi; } mmax=istep; } } #undef SWAP

  • プログラミング書籍レビューサイト

    最近C++をはじめて大分経ったのですが C++の奥深さに感心させられました. 現在手元には 独習C++ がありますが 内容が入門的で物足りないと感じているので 新しい書籍を探しています. C++の文法というよりも C++での設計が学べる書籍が良いです. お勧めの書籍ありましたら教えて下さい. また お勧めの書籍レビューサイトでもいいです. 今読もうと思ってるのは Accelerated C++ Effective C++ です.

  • プログラミング書籍レビューサイト

    最近C++をはじめて大分経ったのですが C++の奥深さに感心させられました. 現在手元には 独習C++ がありますが 内容が入門的で物足りないと感じているので 新しい書籍を探しています. C++の文法というよりも C++での設計が学べる書籍が良いです. お勧めの書籍ありましたら教えて下さい. また お勧めの書籍レビューサイトでもいいです. 今読もうと思ってるのは Accelerated C++ Effective C++ です.

  • ->*演算子のオーバーロードについて

    こんにちは。質問させてください。 現在下記のような処理(main関数でやっているような処理)を実現させたいのですが、うまくコンパイルできません。 #include <iostream> class Test { public:   void TestFunc()   {     std::cout << "TestFunc" << std::endl;   } }; class AllowOverLoad { public:   Test* operator ->()   {     return new Test;   } }; int main() {   void ( Test::*lpTestFunc )() = &Test::TestFunc;   AllowOverLoad overload;   ( overload->*lpTestFunc )(); } 主なエラーは error C2296: '->*' : 無効です。左オペランドには型 'AllowOverLoad' が指定されています。 です。 おそらくこの問題を解決するにはAllowOverLoadに->*演算子をオーバーロードしなくてはいけないと思うのですが、->*演算子のオーバーロード方法がいまいちよくわかりません。 いい文献やHPも見つけられなかったので質問させていただきました。 /* 現在、本番のコーディングでは暗黙的なキャストを禁止しているのでAllowOverLoadクラスに暗黙的にTest*型にキャストするような処理はなしの方向で、あくまで->*演算子のオーバーロードということでお願いします。 Microsoft WindowsXP Professional Edition VisualStudio 2008 AcademicEdition */ よろしくお願いします。

    • 0xEF
    • 回答数2
  • [c++]#using "user32.dll"でエラー

    VC++ 2008 Express Editionを使用しています。 ソースコード上に#using "user32.dll"を記述したところ 「 fatal error C1113: #using が 'c:\windows\servicepackfiles\i386\user32.dll' で失敗しました。」というエラーが出てしまいコンパイルできません。#using <mscorlib.dll>を記述した場合はコンパイルできます。 どうしたら#using "user32.dll"を使えるようになりますか?なおuser32.dllはちゃんと存在します。

    • noname#97178
    • 回答数2
  • [c++]#using "user32.dll"でエラー

    VC++ 2008 Express Editionを使用しています。 ソースコード上に#using "user32.dll"を記述したところ 「 fatal error C1113: #using が 'c:\windows\servicepackfiles\i386\user32.dll' で失敗しました。」というエラーが出てしまいコンパイルできません。#using <mscorlib.dll>を記述した場合はコンパイルできます。 どうしたら#using "user32.dll"を使えるようになりますか?なおuser32.dllはちゃんと存在します。

    • noname#97178
    • 回答数2
  • C++で二分法のプログラム

    C++で二分法のプログラムを作るんですが x1-x2が十分小さくなれば(10^-5)終了する 例 cos(x/2)の解を出す これどうやればいいんですか?whileを使うらしいですが。 文法というのは、 if系、while、switch、continue、for、break文くらいしかやってないんですが #include <iostream> #include <cmath> using namespace std; int main() { までは行きますが… 出力はcout 入力はcinでお願いできないでしょうか

    • noname#127615
    • 回答数4
  • C++で二分法のプログラム

    C++で二分法のプログラムを作るんですが x1-x2が十分小さくなれば(10^-5)終了する 例 cos(x/2)の解を出す これどうやればいいんですか?whileを使うらしいですが。 文法というのは、 if系、while、switch、continue、for、break文くらいしかやってないんですが #include <iostream> #include <cmath> using namespace std; int main() { までは行きますが… 出力はcout 入力はcinでお願いできないでしょうか

    • noname#127615
    • 回答数4
  • C++で二分法のプログラム

    C++で二分法のプログラムを作るんですが x1-x2が十分小さくなれば(10^-5)終了する 例 cos(x/2)の解を出す これどうやればいいんですか?whileを使うらしいですが。 文法というのは、 if系、while、switch、continue、for、break文くらいしかやってないんですが #include <iostream> #include <cmath> using namespace std; int main() { までは行きますが… 出力はcout 入力はcinでお願いできないでしょうか

    • noname#127615
    • 回答数4