goosyuのプロフィール
- ベストアンサー数
- 36
- ベストアンサー率
- 58%
- お礼率
- 0%
- 登録日2009/07/31
- C言語についてなのですが、
C言語についてなのですが、 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<search.h> int main(void) { int i,j,k,temp,n,count,time,list[65537]; clock_t startTime, endTime; printf("取得する乱数の個数を入力してください\n"); scanf("%d",&n); srand((unsigned)time(NULL)); printf("Before sort\n"); startTime = clock(); for(i = 0; i < n; i++) { list[i] = rand(); /* printf("%d\n", list[i]);*/ } count = 0; for (i = 1; i < n; i++) { for (j = i; j < n-i-1; j++) { count++; if(list[j] < list[j+1]) { temp = list[j]; list[j] = list[j+1]; list[j+1] = temp; } } } endTime = clock(); printf("\nAfter sort\n"); for(k = 0; k < n; k++) { /* printf("%d\n", list[k]);*/ } printf("\n比較回数:%d\n", count); printf("実行時間:%.4f秒\n", (double)(endTime - startTime) / CLOCKS_PER_SEC); return 0; } 上記のソースコードをcygwinで gcc -Wall -o k5-1-2 k5-1-2.c でコンパイルしようとすると k5-1-2.c:関数'main'内 k5-1-2.c:14:error:called object is not a function と表示されます。 いろいろなサイトを参考にして乱数取得用に srand((unsigned)time(NULL));を使うように書かれていたので使っているのですが、何かだめなのでしょうか?自分ではお手上げ状態で。
- ベストアンサー
- C・C++・C#
- hrknko2214
- 回答数1
- 逆ポーランド記法への変換方法を教えてください。
Visual Studio C++ 6.0で逆ポーランド電卓のプログラムを作っていますが、式の変換方法がわからないので教えていただければ助かります。 たとえば (8 + 9 * -8) * 10 だと 8 9 -8 * + 10 * に変換できますが、 -(8 + 9 * -8) * 10 だとどう変換すればよいのかがわかりません。
- 締切済み
- C・C++・C#
- scenery300
- 回答数2
- VISCAプロトコル(RS232C通信)で、やはり長いコマンドを正しく
VISCAプロトコル(RS232C通信)で、やはり長いコマンドを正しく送れない 次のサイトのソースをもとに、SONY EVI-HD1カメラをPCからVC++プログラムで制御しようとしています: http://onishi-lab.jp/programming/rs232c_win.html ただし、以前あった以下の質問を参考に、ソースをいくつか修正しています: http://okwave.jp/qa/q4296092.html 具体的には、下記の変更を加えました: (1)"sprintf"ではなく"memcpy"関数を使うようにする (2)"dcb.fOutxDsrFlow = bSet;"の部分は"bSet = dcb.fOutxDsrFlow;" の誤りと思われるので修正 以前の質問では(1)の修正により解決されたようでしたが、実際に試してみると問題がありました。 これは、前の方が質問の中で報告されている通り、 「短いコマンド(例:カメラを右にパンする、81 01 06 01 10 10 02 03 FF)は動くが、長いコマンド(例:カメラのパンチルト上限を設定、81 01 06 07 00 01 0F 0A 05 00 0F 0E 09 08 FF)になるとコマンド中に00が入ると動かない。また、コマンド中に0がなくても思うような動きをしない」 というものです。 私が試したところ(1)の修正に関係なく、上の問題が発生するようです。 ・なぜ長いコマンドになると問題があるのか? ・なぜ00が入るとコマンド書き込みが上手くいかないのか? など見当がつかず、混乱しております。 もし何か心当たりがありましたら教えていただければ大変助かります。
- C言語のfopenについて教えてください。
C言語のfopenについて教えてください。 ある1つのファイルをr(テキストファイル読み込みモード)でfopenしたとします。 そのファイルをfcloseする前に、同じファイルが再度rモードでfopenされても問題ないのでしょうか? 何を気にしているかと言いますと、あるプログラムであるファイルをrモードでfopenして読み込む処理があるのですが、そのプログラムを呼び出す処理が複数あります。 確率は低いと言えど、もし同時にその処理が実行された場合、rモードでfopenしているファイルにfclose前に再度rモードのfopenがされたらエラーとなってしまうのでしょうか? もし、エラーとなる場合、回避する方法がありますか? また、エラーとならない場合は、fcloseするまで次の処理が待ってしまうのでしょうか? 読み込みモードだから問題ないのかなとも思ったのですが、どなたかご存知だったら教えてください。 よろしくお願いしますm(_ _)m
- ベストアンサー
- C・C++・C#
- okwave_user0
- 回答数3
- int型とchar型について
C言語初心者です。 よろしくお願いします。 ◎1----------------------- #include<stdio.h> int main(void) { int ss[4]="789"; printf("%c\n",ss[0]); return 0; } --------------------------- ◎2----------------------- #include<stdio.h> int main(void) { int *p; p="789"; printf("%c\n",*p); return 0; } --------------------------- ◎1、◎2の2つのプログラムについて疑問があります。 ◎1の「int ss[4]="789";」と◎2の「int *p;」のintの部分は今まで、何の疑問も抱かず、「char」として入力していました。 そこでchar型は1バイトの整数、int型は4バイトの整数ということで容量が違うだけで、intとしても大丈夫だろうと思ったのですが、 ◎1では、「'initializing' : 'char [4]' から 'int [4]' に変換することはできません。」とエラーが出て、◎2では「'char [4]' から 'int *' に変換することはできません。」とエラーが出ます。 intは文字列は扱えないということなのでしょうか? 以上intだと実行できない理由がわかりません。 初歩的なことですいませんが、教えていただけると嬉しいです。