hidebun の回答履歴
- ディレクトリの属性の検出とディレクトリの作成
OSはWinodws xp ですが、 Win32でどうやって指定されてたディレクトリのReadOnlyの属性を検出しますか? また、どうやってReadOnlyのディレクトリを作りますか? 知っている方は教えていただけませんか?
- Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express Editionでerror C2664発生
お世話になります。 Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express EditionでエラーC2664を出してしまい解決法を模索しております。 同様のトラブルを調べてみましたが、例えば「文字セット」を「マルチ バイト文字セットを使用する」にしても改善されませんでした。 void time_sobi(int sobi_time){ long time1,time2 ; time(&time1); time2=time1; while(labs(time1-time2)<sobi_time){ time(&time1); } } 上述の部分で: s\jun\デスクトップ\hight\hight.cpp(112) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>c:\documents and settings\jun\デスクトップ\hight\hight.cpp(115) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 とメッセージが出て、該当する部分はそれぞれ3,6行目のtime(&time1);です。 ご教示くださる方いらっしゃいましたら宜しくお願い致します。
- 締切済み
- C・C++・C#
- cherry_pho
- 回答数3
- 値が変わるのはどうしてでしょうか?
c言語でプログラミングを行い、コンパイルが通って実行した時に エラーが出たので、1行ずつコンパイルしてみました。 /////////////////ソース部分////////////////////////////// a_save[0] = A[0] //(a_save と A は同じ構造体タグ) a_save[1] = A[1] a_save[2] = A[2] ///////////////////////////////////////////////////////// →ここでコンパイルしたときは当然のように a_save[0].a という変数の値は A[0].a の値と同じ8となっています。 ここからもう少し進んで /////////////////ソース部分////////////////////////////// a_save[0] = A[0] //(a_save と A は同じ構造体タグ) a_save[1] = A[1] a_save[2] = A[2] b[0] = B[0] //(b と B は同じ構造体タグ(Aとは別)) b[1] = B[1] b[2] = B[2] ///////////////////////////////////////////////////////// →ここでコンパイルしたときに A[0].a の値は8のままだったの ですが a_save[0].a の値が急に-858993460というような値に なっていました。 これは何故なのでしょうか?メモリか何かが原因なのでしょうか? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- stickright
- 回答数9
- デフォルトコンストラクタが呼ばれる条件について。
VC8のプロジェクトをVC9に移行させていたのですが、 少し気になることがあります。以下のコードはVC8ではちゃんと RAII と表示されていました。 #include <stdio.h> class RAII { public: RAII(){puts("RAIII");} ~RAII(){} }; int main() { RAII raii(); /*RAII()が呼ばれない?*/ } しかし、VC9を入れた直後から上のコードでは引数なしコンストラクタ が呼ばれなくなりました(同時にVC8のアップデートも行ったため そちらのせいかもしれませんが)。 最初は「RAII raii();」という形式は自分の記憶違いか何かだと 思っていましたが、移行後に動かなくなった自作のライブラリ を見てみると、このような宣言形式を用いていました。 もちろん「RAII raii;」と端折るだけで問題は解決するのですが、 何か気持ちが悪いです。 これは一体何が起こったのでしょうか?仕様が変わったのでしょうか? ご存知の方、ご教授お願いします。
- ベストアンサー
- C・C++・C#
- qatatatfds
- 回答数3
- Stack around the variable 'xx' was corrupted
お世話になっております。 異常系に関して質問させてください。 想定内のサイズの文字列の処理では問題なく処理されておりますが、異常系のテストを行おうとして、想定外のサイズの文字列を処理しようとすると以下のメッセージが出力されます。 Stack around the variable 'xx' was corrupted 想定外なのでこのメッセージが出力されるのは良いのですが、ビルドを行い EXE を実行すると、return 0 で戻ってくる場合がある為、一見正常終了しているように見える場合があります。 「try {} catch (...) {}」で囲んでみましたが、Stack around は例外では無い為、catch する事ができません。 Stack around が出ないように組む!が正しいのでしょうが、Stack around が出た場合 return 1 で返却する方法はありますでしょうか? 開発環境は Visual C++ 2008 Express になります。 宜しくお願いします。
- Stack around the variable 'xx' was corrupted
お世話になっております。 異常系に関して質問させてください。 想定内のサイズの文字列の処理では問題なく処理されておりますが、異常系のテストを行おうとして、想定外のサイズの文字列を処理しようとすると以下のメッセージが出力されます。 Stack around the variable 'xx' was corrupted 想定外なのでこのメッセージが出力されるのは良いのですが、ビルドを行い EXE を実行すると、return 0 で戻ってくる場合がある為、一見正常終了しているように見える場合があります。 「try {} catch (...) {}」で囲んでみましたが、Stack around は例外では無い為、catch する事ができません。 Stack around が出ないように組む!が正しいのでしょうが、Stack around が出た場合 return 1 で返却する方法はありますでしょうか? 開発環境は Visual C++ 2008 Express になります。 宜しくお願いします。
- Stack around the variable 'xx' was corrupted
お世話になっております。 異常系に関して質問させてください。 想定内のサイズの文字列の処理では問題なく処理されておりますが、異常系のテストを行おうとして、想定外のサイズの文字列を処理しようとすると以下のメッセージが出力されます。 Stack around the variable 'xx' was corrupted 想定外なのでこのメッセージが出力されるのは良いのですが、ビルドを行い EXE を実行すると、return 0 で戻ってくる場合がある為、一見正常終了しているように見える場合があります。 「try {} catch (...) {}」で囲んでみましたが、Stack around は例外では無い為、catch する事ができません。 Stack around が出ないように組む!が正しいのでしょうが、Stack around が出た場合 return 1 で返却する方法はありますでしょうか? 開発環境は Visual C++ 2008 Express になります。 宜しくお願いします。
- スタックとキューについて
書籍やサイトに書かれている内容は分かる(見た目)のですが、 だから何なのでしょうか? どういったことに応用が効きますか? 難しい事はわからないので具体例を示していただけると助かります。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- hardtechno
- 回答数12
- スタックとキューについて
書籍やサイトに書かれている内容は分かる(見た目)のですが、 だから何なのでしょうか? どういったことに応用が効きますか? 難しい事はわからないので具体例を示していただけると助かります。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- hardtechno
- 回答数12
- スタックとキューについて
書籍やサイトに書かれている内容は分かる(見た目)のですが、 だから何なのでしょうか? どういったことに応用が効きますか? 難しい事はわからないので具体例を示していただけると助かります。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- hardtechno
- 回答数12
- 急にプログラムが正しく動かなくなってしまった
Macのターミナルでcのプログラムを動かしています。 今まで使えていたプログラムが、突然うまく動かなくなりました。 原因が分からないのですが、どなたかアドバイスいただけないでしょうか? プログラムは、 1)ファイル名のリストを読み込んで、 2)読み込んだ名前のバイナリファイルを全て開き 3)それらのファイルからデータを読み込んで処理 というものです。 このプログラムは同じパソコン上でもともと正しく動いていたのですが、あるとき突然、2)の段階で一部のファイルが開けなくなってしまいました。 原因を探るために、ファイルを開いて閉じるだけのプログラムに削ってみましたが、やはり症状は変わりませんでした。 同じプログラムを、別のパソコン(windows+cygwin)にコピーしてみると、ちゃんと動きます。使用中のMacに何か問題があるのかなとおもうのですが、原因が分かりません。 詳しい状況と、開いて閉じるだけの状態に削ったプログラムを以下にのせておきます。どなたか原因が分かる方、ぜひアドバイスをお願いします。 [状況] ・上記2で開きたいバイナリファイルは332個あるのですが、253個しか開けず、それ以降はCannot open (ファイル名)のメッセージが出ます(そういうメッセージを出すようなプログラムにしてあります) ・上記2でfopenの前に、これから開くファイル名を表示させてみると、ファイル名は全て正しく読み込めています。 ・開きたいバイナリデータファイルが壊れていることを想定し、バックアップからコピーし直してみましたが、やはり症状はかわりません。 ・ for (i = 0; i < FILE_NUM; i++) をつかって複数ファイルを開いていますが、最初をi=0とすると1個目から253個目までしかファイルが開けず、最初をi=1とすると、2個目から254個目のファイルまで開けますが、それ以降のファイルはやはり開けません。どういう訳か、253個だけしかファイルが開けないのです。 [プログラム] #include <stdio.h> #include <stdlib.h> #include <string.h> #define FILE_NUM 332 #define DataDir "../N2913S5601W2689E4705" #define FileList "list_BISE3.txt" #define BUFFER 256 main() { char fn[FILE_NUM][BUFFER]; FILE *fp[FILE_NUM], *fi; char buffer[BUFFER]; unsigned short i; char *p; fi = fopen(FileList, "r"); if (!fi) { printf("Cannot Open %s\n",FileList); exit(1); } for (i = 0; i < FILE_NUM; i++) { p = fgets(buffer, BUFFER, fi); if (!p) { break; } p = strchr(buffer,'\n'); if(p != NULL) { *p = '\0'; } sprintf(fn[i], "%s/%s", DataDir, buffer); printf("%s_\n",fn[i]); fp[i] = fopen(fn[i], "rb"); if (!fp[i]) { printf("Cannot Open %s\n", fn[i]); continue; } } fclose(fi); for (i = 0 ; i < FILE_NUM; i++) { fclose(fp[i]); } }
- PING JPEGファイルのExif規格のコメント部を読み込み・書き込みするプログラムソース
以前、表記処理のできるフリーソフトをフリーソフトを教えていただいた者です。 http://oshiete1.goo.ne.jp/qa3911520.html プログラムの中で計算した結果を、画像ファイルのコメント部に書き込むプログラムをC言語で作成しようと思っています。そこで、 int WriteComment(FILE *fd、char *コメント文字列) int ReadComment(FILE *fd、char *コメント文字列) のような関数を内部で使いたいのですが、このような関数ありませんか?あるいは、自作するための参考になるようなお手本となるソースリストありませんか?
- 受信データから必要な部分のみ表示するプログラム
現在C言語を使用して、受信したデータから必要な部分だけを表示するプログラムを作成しております。 以前作成した、GPSからデータを受信するpg1と、必要な部分のみ表示するpg2をあわせることで、受信したデータから必要な部分を抜き出すことができました。 次の段階として、そのプログラムを指定した回数表示が行えるよう変更を試みたのですが、一度表示するとそこで終了してしまう状態から抜け出せません。どの点を改良すれば、回数を指定して表示ができるようになるのでしょうか。よろしくお願いいたします。 このときGPS端末はRS232CでPCに接続GPS端末で受信しています。 受信したNMEAと呼ばれるフォーマットのデータから時刻,緯度,経度に対応する要素を取り出して表示しようとしています。 #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<string.h> #include<termios.h> #include<stdio.h> #include<math.h> #define BAUDRATE B4800 #define MODEMDEVICE "/dev/ttyS0" int main() { int fd, c, res; int utc; char stat; char ns; char ew; char *p; double lat; double lon; struct termios oldtio, newtio; char buf[512]; FILE *fp_gps; while(1){ if((fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ))==-1){ perror(MODEMDEVICE); exit(-1); } tcgetattr(fd, &oldtio); /*シリアルポートの設定を待避*/ bzero(&newtio, sizeof(newtio)); /*新しいポートの設定の構造体をクリア*/ newtio.c_cflag = (BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD);/*ボー:4800*/ newtio.c_iflag = (IGNPAR | ICRNL); newtio.c_oflag = 0; newtio.c_lflag = ICANON; tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&newtio); res = read(fd,buf,512); buf[--res]=0; /* 文字列終端をセット */ if ((p=strtok(buf,","))==NULL) return; if (strcmp(p,"$GPRMC")!=0) return; /*センテンスの先頭は$GPRMCか?*/ if ((p=strtok(NULL,","))==NULL) return; /*utc:世界標準時*/ sscanf(p,"%d",&utc); if ((p=strtok(NULL,","))==NULL) return; /*stat:ステータス*/ stat=p[0]; if ((p=strtok(NULL,","))==NULL) return; /*lat:緯度*/ sscanf(p,"%lf",&lat); if ((p=strtok(NULL,","))==NULL) return; /*ns:南北*/ ns=p[0]; if ((p=strtok(NULL,","))==NULL) return; /*lon:経度*/ sscanf(p,"%lf",&lon); if ((p=strtok(NULL,","))==NULL) return; /*ew:東西*/ ew=p[0]; if (ew==p[0]){ fp_gps = fopen("gdata/gdata.dat","w"); if (fp_gps == NULL){ printf("open fp_gps err\n"); } } /*時刻緯度経度に対応するトークン表示*/ if (stat!='A') return; /*ステータスチェック*/ printf("%02d時%02d分%02d秒(UTC) ",utc/10000+9, (utc%10000)/100, utc%100);/*utc+9時間は日本時間における標準時*/ fprintf(fp_gps,"%02d時%02d分%02d秒(UTC) ",utc/10000+9, (utc%10000)/100, utc%100); if (ns=='N') printf("北緯"); else if (ns=='S') printf("南緯"); printf("%.0lf度%.4lf分",floor(lat/100.0), fmod(lat,100.0)); fprintf(fp_gps,"%.0lf度%.4lf分",floor(lat/100.0), fmod(lat,100.0)); if (ew=='E') printf("東経"); else if (ns=='W') printf("西経"); printf("%.0lf度%.4lf分",floor(lon/100.0), fmod(lon,100.0)); fprintf(fp_gps,"%.0lf度%.4lf分",floor(lon/100.0), fmod(lon,100.0)); printf("\n"); } tcsetattr(fd, TCSANOW, &oldtio); /*退避前の設定に戻す*/ fclose(fp_gps); close(fd); /*ポートを閉じる */ } /*実行結果 ./a.out ./a.out 14時15分48秒(UTC) 北緯34度28.9393分東経136度49.4900分 */実行結果は上記のように出力され、何も表示されないこともあります。ご指摘よろしくお願いいたします。
- 受信データから必要な部分のみ表示するプログラム
現在C言語を使用して、受信したデータから必要な部分だけを表示するプログラムを作成しております。 以前作成した、GPSからデータを受信するpg1と、必要な部分のみ表示するpg2をあわせることで、受信したデータから必要な部分を抜き出すことができました。 次の段階として、そのプログラムを指定した回数表示が行えるよう変更を試みたのですが、一度表示するとそこで終了してしまう状態から抜け出せません。どの点を改良すれば、回数を指定して表示ができるようになるのでしょうか。よろしくお願いいたします。 このときGPS端末はRS232CでPCに接続GPS端末で受信しています。 受信したNMEAと呼ばれるフォーマットのデータから時刻,緯度,経度に対応する要素を取り出して表示しようとしています。 #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<string.h> #include<termios.h> #include<stdio.h> #include<math.h> #define BAUDRATE B4800 #define MODEMDEVICE "/dev/ttyS0" int main() { int fd, c, res; int utc; char stat; char ns; char ew; char *p; double lat; double lon; struct termios oldtio, newtio; char buf[512]; FILE *fp_gps; while(1){ if((fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ))==-1){ perror(MODEMDEVICE); exit(-1); } tcgetattr(fd, &oldtio); /*シリアルポートの設定を待避*/ bzero(&newtio, sizeof(newtio)); /*新しいポートの設定の構造体をクリア*/ newtio.c_cflag = (BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD);/*ボー:4800*/ newtio.c_iflag = (IGNPAR | ICRNL); newtio.c_oflag = 0; newtio.c_lflag = ICANON; tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&newtio); res = read(fd,buf,512); buf[--res]=0; /* 文字列終端をセット */ if ((p=strtok(buf,","))==NULL) return; if (strcmp(p,"$GPRMC")!=0) return; /*センテンスの先頭は$GPRMCか?*/ if ((p=strtok(NULL,","))==NULL) return; /*utc:世界標準時*/ sscanf(p,"%d",&utc); if ((p=strtok(NULL,","))==NULL) return; /*stat:ステータス*/ stat=p[0]; if ((p=strtok(NULL,","))==NULL) return; /*lat:緯度*/ sscanf(p,"%lf",&lat); if ((p=strtok(NULL,","))==NULL) return; /*ns:南北*/ ns=p[0]; if ((p=strtok(NULL,","))==NULL) return; /*lon:経度*/ sscanf(p,"%lf",&lon); if ((p=strtok(NULL,","))==NULL) return; /*ew:東西*/ ew=p[0]; if (ew==p[0]){ fp_gps = fopen("gdata/gdata.dat","w"); if (fp_gps == NULL){ printf("open fp_gps err\n"); } } /*時刻緯度経度に対応するトークン表示*/ if (stat!='A') return; /*ステータスチェック*/ printf("%02d時%02d分%02d秒(UTC) ",utc/10000+9, (utc%10000)/100, utc%100);/*utc+9時間は日本時間における標準時*/ fprintf(fp_gps,"%02d時%02d分%02d秒(UTC) ",utc/10000+9, (utc%10000)/100, utc%100); if (ns=='N') printf("北緯"); else if (ns=='S') printf("南緯"); printf("%.0lf度%.4lf分",floor(lat/100.0), fmod(lat,100.0)); fprintf(fp_gps,"%.0lf度%.4lf分",floor(lat/100.0), fmod(lat,100.0)); if (ew=='E') printf("東経"); else if (ns=='W') printf("西経"); printf("%.0lf度%.4lf分",floor(lon/100.0), fmod(lon,100.0)); fprintf(fp_gps,"%.0lf度%.4lf分",floor(lon/100.0), fmod(lon,100.0)); printf("\n"); } tcsetattr(fd, TCSANOW, &oldtio); /*退避前の設定に戻す*/ fclose(fp_gps); close(fd); /*ポートを閉じる */ } /*実行結果 ./a.out ./a.out 14時15分48秒(UTC) 北緯34度28.9393分東経136度49.4900分 */実行結果は上記のように出力され、何も表示されないこともあります。ご指摘よろしくお願いいたします。
- reallocの使い方について
C言語初心者です。malloc()で確保した領域をrealloc()にて拡張しました。以下、わからないことがあるので教えて下さい。 #include <stdio.h> #include <stdlib.h> int main(){ int *array1; array1=malloc(sizeof(int)*3); for(int i=0; i<3; i++){ *(array1+i)=i; } int *array2=array1; for(int i=0; i<3; i++){ printf("array2[%d]: %d\n", i, array2[i]); } array1=realloc(array1, sizeof(int)*5); for(int i=3; i<5; i++){ array1[i]=i; } for(int i=0; i<5; i++){ printf("array2[%d]: %d\n", i, array2[i]); } } 上記のソースコードでは、私が期待したのは array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[3]: 3 array2[4]: 4 なのですが、実行すると次のように表示されます。 array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[3]: 0 array2[4]: 1 まず最初に、array1という名前のポインタをつくり、malloc関数にて整数3つ分の領域を確保し、整数0、1、2を投入する。次に、array2という名前のポインタをつくり、array1と同じ領域を指すようにする。なので、array2にはデータを投入しなくても参照すると既に0、1、2が入っている。 次に、realloc関数にて領域を2つ追加する。追加された領域には、array1ポインタ経由で実データに整数3、4を投入する。実データが変更されたので、array2ポインタ経由でデータを参照すると、0、1、2、3、4が参照出来る、と思ったのですがそうなっていません。array1ポインタ経由で見ると、きちんと0、1、2、3、4が参照出来るのですが。。 私のreallocの理解に誤りがあれば教えて下さい。宜しくお願いします。
- ベストアンサー
- C・C++・C#
- rio_grande
- 回答数5
- reallocの使い方について
C言語初心者です。malloc()で確保した領域をrealloc()にて拡張しました。以下、わからないことがあるので教えて下さい。 #include <stdio.h> #include <stdlib.h> int main(){ int *array1; array1=malloc(sizeof(int)*3); for(int i=0; i<3; i++){ *(array1+i)=i; } int *array2=array1; for(int i=0; i<3; i++){ printf("array2[%d]: %d\n", i, array2[i]); } array1=realloc(array1, sizeof(int)*5); for(int i=3; i<5; i++){ array1[i]=i; } for(int i=0; i<5; i++){ printf("array2[%d]: %d\n", i, array2[i]); } } 上記のソースコードでは、私が期待したのは array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[3]: 3 array2[4]: 4 なのですが、実行すると次のように表示されます。 array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[0]: 0 array2[1]: 1 array2[2]: 2 array2[3]: 0 array2[4]: 1 まず最初に、array1という名前のポインタをつくり、malloc関数にて整数3つ分の領域を確保し、整数0、1、2を投入する。次に、array2という名前のポインタをつくり、array1と同じ領域を指すようにする。なので、array2にはデータを投入しなくても参照すると既に0、1、2が入っている。 次に、realloc関数にて領域を2つ追加する。追加された領域には、array1ポインタ経由で実データに整数3、4を投入する。実データが変更されたので、array2ポインタ経由でデータを参照すると、0、1、2、3、4が参照出来る、と思ったのですがそうなっていません。array1ポインタ経由で見ると、きちんと0、1、2、3、4が参照出来るのですが。。 私のreallocの理解に誤りがあれば教えて下さい。宜しくお願いします。
- ベストアンサー
- C・C++・C#
- rio_grande
- 回答数5
- MFC モードレスDlgについて
はじめまして質問させてください。 VC++ 2005 MFC で開発しております。 以下に動作仕様を記載いたします。 ・ボタン押下でダイアログをモードレスで作成表示。 ・再度ボタンが押下された場合、表示されていれば無視。 表示されていなければ新規作成。 ・モードレスで作成したDlgはクローズ時に完全にDeleteしたい。 以下のように実装しましたところ、 【クラスA】メイン B* pB; pB = NULL; void A::Onボタンクリック{ if( pB == NULL ){ pB = new B(); pB->Create( ID, this ); } pB.ShowWindow( true ); } 【クラスB】モードレス void B::OnCancel() { //CDialog::OnCancel(); this->DestroyWindow(); } void B::PostNcDestroy() { //CDialog::PostNcDestroy(); delete this; } 2回目以降、クラスAで「pB」がNULLにならずに判定部分ではまっております。 どのような方法が最適かお詳しい方がおられましたらご教授お願い致します。 ちなみにポインタではなくメンバ変数の場合だと if( b.GetSafeHwnd() == NULL ) でうまくいくのですが ポイントはモードレスダイアログの毎回Deleteです。 クラスBでフラグを持つことで解決できますが あまりうまいやりかたではないと思うので質問させて頂きます。 以上になります。 よろしくお願い致します。
- 画像をランダムに表示して名前を入力するクイズソフトの作り方
自分で撮った画像やネットでダウンロードした画像をランダムに表示して、その名前を入力させ、正解不正解を知らせるクイズソフトを制作したいのですが、どのような関数を使えばいいのでしょうか? 画像は大まかなカテゴリ別に分類して、選択した分類の中からランダムに表示したり出来るようにしたいです。 また新しい画像の追加やクイズの編集も、手軽に(たとえば植物カテゴリならエクスプローラの植物フォルダに画像を追加して、ファイルネームがそのまま正解になるみたいな)出来るようにしたいです。 不正解したものだけを出題する復習モードなんかも必要です。 OSはWindows XPで、 開発環境はVisual C++ 2008 Express EditionとTurbo C++をインストールしています。 プログラミング知識は、PHPで一応自分で考えているWEBページや簡単なスクリプトを制作できるかな、というレベルです。 WindowsのAPIとかクライアントのプログラミングは全くわかりません。 アドバイスお願いします。
- 基本情報 平成19年 秋 午後 問10
a,e,fとiの値がちがいまちがっていました。 eの問題ですと i=0の時 80>25で成立 i=1の時 80>60で成立 i=2の時 80>100で不成立 i=1の時 *price=Price_tbl[1]が答えになると思っています。 正解はi=2の時になっています。何故でしょうか?。forループが理解できていないでしょうか?。 forループの右端のiを増やしていくi++は*priceの値を計算した後にiを加算すると思っています。これが間違っているんでしょうか?。