• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++ バックグランド処理中に入出力できない)

C++バックグランド処理中に入出力できない

___gooの回答

  • ___goo
  • ベストアンサー率50% (2/4)
回答No.4

C++Builderであれば Application->ProcessMessages() でメッセージキューにあるメッセージを処理することで、表示を更新できます。

atmasise
質問者

お礼

回答ありがとうございます。No.1への返信でまとめて返事しています。

関連するQ&A

  • c++での入出力がうまくいきません;

    初心者ですが独習c++でプログラミングについて勉強している者です。 なんとか環境設定もできたと思いきや、うまくコンパイルすることができなくて困っています。具体的には、 #include <iostream> using namespace std; int main() { int i, j; double d; i = 10; j = 20; d = 99.101; cout << "値を表示: "; cout << i << ' ' << j << ' ' << d; return 0; } という値を表示するプログラムではコンパイルもうまくいったのですが、次の #include <iostream> using namespace std; int main() { int i; cout << "値を入力: "; cout >> i; cout << "入力した値: " << i << "\n"; return 0; } という入力のプログラムをコンパイルしようとすると、コマンドプロンプトに演算子が使われたクラス ostream では int型の定義が存在しないとなりコンパイルエラーとなってしまいます。 理由が考えてもわからないので、質問してみました。 どのようにすれば、このエラーを解消できるのか知りたいので、どうかご意見をよろしくお願いします。

  • C言語のプログラミングで困っています

    C言語を勉強しています。まだまだ初心者で分からないことだらけなのですが、今回はファイル入出力の部分が分からず苦戦しています。 『100個の実数が入った2つのテキストファイルから数値を読み込み、  絶対値を求めるなどの計算をする』プログラムを作成しているのですが、 コンパイルし実行すると強制終了してしまいます。 プログラムは、 void main(void) { FILE *fp; double c[50000];   double d[50000];   double e[50000]; int n = 0;   int m = 0;   int i = 0;   char fname[80];   char fname2[80]; printf("ファイル名 : ");    gets(fname); if((fp = fopen(fname, "r")) == NULL){ printf("ファイルがオープンできません\n"); exit(1); } printf("\n"); while (fscanf(fp,"%lf",&c[i])!=EOF){ printf("%3d : %3lf",++n,c[i]); printf("\n"); i++; } printf("\n"); i=0; n=0; printf("ファイル名 : ");    gets(fname2); if((fp = fopen(fname2, "r")) == NULL){ printf("ファイルがオープンできません\n"); exit(1); } printf("\n"); while (fscanf(fp,"%lf",&d[i])!=EOF){ printf("%3d : %3lf",++n,d[i]); printf("\n"); i++; } …(以下計算) のようになっています。 整数のデータで計算を行うと、正常に動くのですが…。 コンパイルしてもエラーが出ないので、どこが悪いのかわからず困っています。 どなたか教えていただけないでしょうか。お願いしますm(_ _)m

  • Visual C++での数値計算のプログラミング

    質問初めてになります。 プログラミングにあまり詳しくない大学院の数理科の学生です。 学校で熱方程式の陽解法のプログラミングのレポートが出されたのですが、困っています。 レポートで詰まっている点は windows Visual C++ Expressionでの陽解法のプログラミングです。 indows Visual C++ Expression2008が良くわからないのでコマンドプロンプトで実行しています。 熱方程式の初期値問題の陽解法のプログラムをなんとか組んでいます。 私が組んだプログラムではLinuxでは通るのですがwindows Visual C++ Expressionでは通りません。 このプログラムをwindows Visual C++ Expression 2008で通すにはどのように直したがいいのか教えて頂きたいと思います。よろしくお願いします。 以下は私なりに組んだプログラミングです。 πの値、u1[N+1]、u2[N+2] の3箇所でエラーがでてると思われます。 #include<stdio.h> #include<stdio.h> #include<math.h> int main(){ int i,k,kmax; int N=10; double dx double dt=0.01; double u1[N+1]; double u2[N+1]; double r=dt/(dx*dx); double T=1.0; kmax=T/dt; u1[0]=0; u1[N]=0; for(i=1;i<=N;i++){   u1[i]=sin(M_PI*i*dx); } for(k=1;k<=kmax;k++){ for(i=1;i<=N-1;i++){ u2[i]=r*u1[i-1]+(1-2*r)*u1[i]+r*u1[i+1]; }   for(i=1;i<=N-1;i++){ u1[i]=u2[i];   }   for(i=0;i<=N;i++){ printf("%f %f %f\n",dt*k,dx*i,u1[i]);   }   printf("\n"); } return 0; }

  • C#で処理中の状況をStatusLabelに表示

    C#で処理中の状況をStatusLabelに表示させたいのですが、どうやらマルチスレッドを使えば良いらしい事は分かったのですが、説明しているページを参考にいろいろやってみたのですがどうもうまくいきません。 例えば次のような場合、10秒後に”9”と表示されて終わってしまうのですが、どの様に書き直せばよろしいでしょうか? すみません、どなたかご存じの方教えていただけないでしょうか。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace test_multithread3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < 10; i++) { toolStripStatusLabel1.Text = i.ToString(); Thread.Sleep(1000); } } } }

  • ファイルの入出力

    学生です。まだ習い始めて間もないのですがよろしくお願いします。 27.000000,207.000000,116.000000 48.000000,90.000000,116.000000 48.000000,90.000000,116.000000       : テキストの中にある上記のカンマ区切りのデータをfscanfで読み込んで違うテキストに同じ数値を出力したいのですがうまく出力できません。 0.000000,0.000000,+NAN 0.000000,0.000000,+NAN 0.000000,0.000000,+NAN      : 数値は上記のように出力されてしまいます。 プログラムは以下の通りです。 main() { FILE *fp; double m[30][3]; int i,j; double e1,e2,e3; fp=fopen("data00.txt","r"); for(i=0;i<30;i++){  fscanf(fp,"%f,%f,%f\n",&e1,&e2,&e3);  m[i][0]=e1;  m[i][1]=e2;  m[i][2]=e3; } fclose(fp); fp=fopen("data01.txt","w"); for(j=0;j<30;j++){  fprintf(fp,"%f,%f,%f\n",m[j][0],m[j][1],m[j][2]); } fclose(fp); getch(); exit(0); } データの読み込みがうまくいってないのだと思いますがわかりません。 間違いがあったならご指摘お願いします。

  • C言語 ?のついた処理内容

    C言語初心者です。 FFTの勉強をしようと先人の作ったC言語プログラムを 参考に処理内容を勉強中ですが、以下の文が どのような処理を行っているのか理解できません。 ご存知の方たいへんおてすうですが、処理内容を ご教授をお願いします。 よろしくお願いします。  w = (flag? M_PI: -M_PI) / (double)n;

  • Visial C++おけるπの使い方

    自宅でCプログラミングの練習をするためVisial C++ 2008を使って プログラムをしています。y<sin(πx)となった時の 割合などを計算するプログラムで                「M_PIが定義されていない識別子です」 とでてきます。所持している本を参考にしてもM_PI=πとして用いる と書いてあり、math.hもインクルードしてるので原因が分からなくて 困ってます。Visial c++ではπの使い方には何か別の使い方がある のでしょうか?よろしくお願いします。 *↓が実際に作ったプログラムです。 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> int main(void){ int i,n,count=0; double x,y,r,error; srand((unsigned)time(NULL)); /*乱数の初期化*/ printf("How many trials?"); scanf("&d",&n); for(i=0;i<n;i++){ x=rand()/(RAND_MAX+1.0); y=rand()/(RAND_MAX+1.0); if(y<sin(M_PI*x)){ count++; } } r=(double)count/n; /*キャスト演算子を使用*/ error=2/M_PI-r; printf("Result is %f (Error: %f)\n",r,error); return 0; }

  • C++ fprintf_sの使い方がわからん

    大学4年の学生で、いま卒業研究のために一からプログラミングの勉強をしています。下のコードの計算結果をエクセルに図として表示したいのですがどうやればいいのかサッパリわかりません。fprintf_sと計算結果ファイル?というものを使うらしいのですが、知っている方ぜひ教えてください!! #define _USE_MATH_DEFINES #include <stdio.h> #include <math.h> #include<stdint.h> int main(void) { char Fk[10]; Fk[0]=0;Fk[1]=1; char Fks[10]; int i; for(i=2;i<10;i++){ Fk[i]=Fk[i-1]+Fk[i-2]; } Fks[0]=Fk[0]; for(i=1;i<10;i++){ Fks[i]=Fks[i-1]+Fk[i]; } for(i=0;i<10;i++){ printf("%d,",Fk[i]); } printf("\n"); for(i=0;i<10;i++){ printf("%d,",Fks[i]); }//フィボナッチ数列を作る printf("\n\n"); int m,n; double rad; rad=0; for(m=0;m<8;m++){ rad+=137.5*m; i=0; double x=0.0;double y=0.0; for(n=0;n<=10;n++){ printf("%f , %f \n",x,y);//ここの計算結果をエクセルに持って行って楽したいんです。 if(n==Fks[i]){rad+=42.5*M_PI/180;i++;} x+=cos(rad); y+=sin(rad); } printf("\n\n"); } }

  • C言語 ファイル処理

    今、c言語のファイル処理の勉強をしているのですが。 あるファイルfp1に 106 106 106 102 177 183 123 125 105 102 101 111 というデータが入っていたとして、 このファイルfp1からこのデータを2次元配列m[i][j]に入れたいんですけど、 一応プログラム書いてみましたがうまくいきません。 for(i=0;i<3;i++){   for(j=0;j<4;j++){     fscanf(fp1,"%d",&x); /*データ読み込み*/  m[i][j]=x;     }   } for(i=0;i<3;i++){   for(j=0;j<4;j++){     printf("%d ",m[i][i]);   }   putchar('\n'); } 変数宣言部、ファイルオープン部などは省略しました。 このプログラムを実行すると。 106 106 106 106 106 106 106 106 106 106 106 106 102 102 102 102 177 177 177 177 183 183 183 183 123 123 123 123 125 125 125 125 105 105 105 105 102 102 102 102 101 101 101 101 111 111 111 111 みたいな感じで表示されます。何ででしょうか? アドバイスお願いします。

  • C言語の課題で悩んでいます

    線形最小2乗法と直接探索法の併用により、あるデータを最小2乗近似によって係数を求めるプログラムを作りました。 プログラムを実行したところ以下の警告が出て悩んでいます。 114行目 互換性のないポインタ型からの引数 1 個の `sweep' を渡しますです 114行目 互換性のないポインタ型からの引数 5 個の `sweep' を渡しますです 分りやすいように114行目のところに@がつけてあります。 どなたかご指摘お願いします。 #include<stdio.h> #include<math.h> #define eps 1.e-5 void sweep(double *,double *,int,int,int *,int); void DSO(double *,double *,int *,double *,double *,int,int); void FUN(double *,double *,double *,int,double *,int *); int main(void) { double a[1],da[1],x[7],y[7]; int i,n,delta[1]; scanf("%d",&n); for(i=0;i<n;++i) scanf("%lf %lf",&x[i],&y[i]); scanf("%lf %lf",&a[0],&da[0]); printf("Iteration b(1) b(2) b(3) a f\n"); DSO(a,da,delta,x,y,1,n); } /*DSO*/ void DSO(double *pa,double *pda,int *pdelta,double *px,double *py,int m,int n) { double ak,akp,akm,f0,fp,fm; int k,j,iteration=0; for(k=0;k<m;++k){ *(pdelta+k)=1; } FUN(pa,px,py,n,&f0,&iteration); do{ j=0; for(k=0;k<m;++k){ ak=*(pa+k); akp=*(pa+k)+*(pda+k); akm=*(pa+k)-*(pda+k); if(*(pdelta+k)==1){ *(pa+k)=akp; FUN(pa,px,py,n,&fp,&iteration); if(f0>fp){ *(pdelta+k)=1; f0=fp; break; } else{ *(pa+k)=akm; FUN(pa,px,py,n,&fm,&iteration); if(f0>fm){ *(pdelta+k)=-1; f0=fm; break; } else{ j++; *(pa+k)=ak; } } } else{ *(pa+k)=akm; FUN(pa,px,py,n,&fm,&iteration); if(f0>fm){ *(pdelta+k)=-1; f0=fm; break; } else{ *(pa+k)=akp; FUN(pa,px,py,n,&fp,&iteration); if(f0>fp){ *(pdelta+k)=1; f0=fp; break; } else{ j++; *(pa+k)=ak; } } } } }while(j!=m); printf("*** SOLVED ***\n"); FUN(pa,px,py,n,&f0,&iteration); return; } /*Function for sum of square errors*/ void FUN(double *pa,double *px,double *py,int n,double *pf,int *pi) { double b[3],c[3][4],iwork[3],t[3],yi; int i,ILL; c[0][0]=n; c[0][1]=0.; c[0][2]=0.; c[0][3]=0.; c[1][1]=0.; c[1][2]=0.; c[1][3]=0.; c[2][2]=0.; c[2][3]=0.; for(i=0;i<n;i++){ c[0][1]+=log10(*(px+i)); c[1][1]+=log10(*(px+i))*log10(*(px+i)); c[0][2]+=pow(log10(*(px+i)),*(pa+0)); c[1][2]+=pow(log10(*(px+i)),*(pa+0)+1.); c[2][2]+=pow(log10(*(px+i)),2.**(pa+0)); c[0][3]+=*(py+i); c[1][3]+=*(py+i)*log10(*(px+i)); c[2][3]+=*(py+i)*pow(log10(*(px+i)),*(pa+0)); } c[1][0]=c[0][1]; c[2][0]=c[0][2]; c[2][1]=c[1][2]; sweep(c,t,3,4,iwork,ILL); @114行目 for(i=0;i<3;++i){ b[i]=c[i][3]; } *pf=0.; for(i=0;i<n;++i){ yi=b[0]+b[1]*log10(*(px+i))+b[2]*pow(log10(*(px+i)),*(pa+0)); *pf+=(*(py+i)-yi)*(*(py+i)-yi); } printf("%6d %12.3e%12.3e%12.3e%7.2f%11.2e\n", *pi,b[0],b[1],b[2],*(pa+0),*pf); ++*pi; return; } /*Gauss-Jordan method*/ void sweep(double *pa,double *pt,int n,int m,int *piwork,int ILL) { double max,w; int i,j,k,iw,p,q; for(i=0;i<n;++i){ max=fabs(*(pa+m*i)); for(j=0;j<n;++j){ if(max<fabs(*(pa+m*i+j)))max=fabs(*(pa+m*i+j)); } for(j=0;j<m;++j) *(pa+m*i+j)=*(pa+m*i+j)/max; } for(j=0;j<n;++j){ max=fabs(*(pa+j)); for(i=0;i<n;++i){ if(max<fabs(*(pa+m*i+j)))max=fabs(*(pa+m*i+j)); } *(pt+j)=max; for(i=0;i<n;++i) *(pa+m*i+j)=*(pa+m*i+j)/max; } for(i=0;i<n;++i){ *(piwork+i)=i; } for(k=0;k<n;++k){ max=fabs(*(pa+m*k+k)); p=k; q=k; for(j=k;j<n;++j){ for(i=k;i<n;++i){ if(max<fabs(*(pa+m*i+j))){ max=fabs(*(pa+m*i+j)); p=i; q=j; } } } if(max<=eps){ ILL=1; printf("MATRIX IS ILL\n"); return; } for(i=0;i<n;++i){ w=*(pa+m*i+k); *(pa+m*i+k)=*(pa+m*i+q); *(pa+m*i+q)=w; } for(j=k;j<m;++j){ w=*(pa+m*k+j); *(pa+m*k+j)=*(pa+m*p+j); *(pa+m*p+j)=w; } i=*(piwork+k); *(piwork+k)=*(piwork+q); *(piwork+q)=i; for(j=k+1;j<m;++j){ *(pa+m*k+j)=*(pa+m*k+j)/(*(pa+m*k+k)); } for(i=0;i<n;++i){ if(i!=k){ for(j=k+1;j<m;++j){ *(pa+m*i+j)=*(pa+m*i+j)-*(pa+m*i+k)*(*(pa+m*k+j)); } } } } for(j=n;j<m;++j){ for(i=0;i<n;++i){ iw=*(piwork+i); *(pa+m*iw+n-1)=*(pa+m*i+j); } for(i=0;i<n;++i){ *(pa+m*i+j)=*(pa+m*i+n-1)/(*(pt+i)); } } return; }