S117 の回答履歴

全72件中21~40件表示
  • キーボード

    投稿するカテゴリが間違ってる気もするのですが、プログラミングの最中のみ起こるのでこちらに投稿しますね。 プログラム組んでいるとたまにキーボードがバグります。 いきなり大文字になったり・・はよくあるんですがこちらはCapsLock+Shift で直ります。 直らないのは例えば ; や / など直りません。;を押すと+にしかならなかったり、/を押すと?にしかならなかったりします。 さらにひどいときはTabボタン押すと↓にいったり、 Aボタンを押すと全選択になったりします。 原因わかる方いませんか?

  • 不正な構造体の演算

    ある構造体を戻り値として関数からかえして、変数に代入すると不正な構造体の演算というエラーになります。 これは、どういったことが原因と考えられますか?

  • While()の事でおしえてください

    名前入力関数を作ったのですが、名前の入力を確定してもWhile()から抜け出せません。 「名前を確定しました」の後に、「キャラクターの名前を入力してください」に戻ります。 あと、名前入力関数の中にWhile()を入れてみても駄目でした。 うまく処理を終わらせて、main()関数に戻れるようにするには、どうすればいいでしょうか? #pragma warning(disable : 4996) //warning C4996: 'scanf':を消すため #include <stdio.h> #include <stdlib.h> void show_title(void); //タイトル表示関数の宣言 char make_character(void); //名前入力関数の宣言 int main() { char result='n'; //初期化 show_title(); result=make_character(); while((result!='y')||(result!='Y')){ make_character(); } return 0; } void show_title(void) //タイトル表示関数 { system("cls"); //画面を初期化 system("color b"); //文字を青色にする printf("見習い魔道師の挑戦\n\n"); //タイトル表示 } char make_character(void) //名前入力関数 { char name[30]; //名前用の変数 char confirmation; //Y/N用の変数 main()に戻す値 printf("キャラクターの名前を入力してください:"); scanf("%s",name); printf("キャラクターの名前は%sでよろしいですか?(Y/N)",name); scanf("%*c%c",&confirmation); //一回目のscanf()のEnterをクリアする if((confirmation=='y')||(confirmation=='Y')){ printf("名前を確定しました\n"); return confirmation; //戻り値 } else if((confirmation=='n')||(confirmation=='N')){ printf("名前を変更します\n"); return confirmation; //戻り値 warning C4715:用 } else{ printf("Y/N以外が入力されました\n"); return confirmation; //戻り値 warning C4715:用 } }

  • While()の事でおしえてください

    名前入力関数を作ったのですが、名前の入力を確定してもWhile()から抜け出せません。 「名前を確定しました」の後に、「キャラクターの名前を入力してください」に戻ります。 あと、名前入力関数の中にWhile()を入れてみても駄目でした。 うまく処理を終わらせて、main()関数に戻れるようにするには、どうすればいいでしょうか? #pragma warning(disable : 4996) //warning C4996: 'scanf':を消すため #include <stdio.h> #include <stdlib.h> void show_title(void); //タイトル表示関数の宣言 char make_character(void); //名前入力関数の宣言 int main() { char result='n'; //初期化 show_title(); result=make_character(); while((result!='y')||(result!='Y')){ make_character(); } return 0; } void show_title(void) //タイトル表示関数 { system("cls"); //画面を初期化 system("color b"); //文字を青色にする printf("見習い魔道師の挑戦\n\n"); //タイトル表示 } char make_character(void) //名前入力関数 { char name[30]; //名前用の変数 char confirmation; //Y/N用の変数 main()に戻す値 printf("キャラクターの名前を入力してください:"); scanf("%s",name); printf("キャラクターの名前は%sでよろしいですか?(Y/N)",name); scanf("%*c%c",&confirmation); //一回目のscanf()のEnterをクリアする if((confirmation=='y')||(confirmation=='Y')){ printf("名前を確定しました\n"); return confirmation; //戻り値 } else if((confirmation=='n')||(confirmation=='N')){ printf("名前を変更します\n"); return confirmation; //戻り値 warning C4715:用 } else{ printf("Y/N以外が入力されました\n"); return confirmation; //戻り値 warning C4715:用 } }

  • 関数の実行速度の改善

    http://www.i.u-tokyo.ac.jp/edu/course/m-i/pdf/2007imim.pdf の問題4 (5)についてなのですが、自分で考えてもQは昇順で並んでいるので、Qの全ての要素のアドレスを別の配列に代入し、バイナリサーチをかければ状態によって少しは早くなるかもしれない程度のことしか思い付かず、Qのデータ構造を改良することによってInsertの処理速度を上げる方法が分かりません。 どなたか宜しくお願いします。

  • コンパイルできない C++

    以下エラーでC++のソースがコンパイルできない fatal error C1083: include ファイルを開けません。'gimite/socket.h': No such file or directory ヘッダーファイルには添付のようにgimite/socket.hを追加済みです

    • 締切済み
    • noname#86217
    • C・C++・C#
    • 回答数2
  • visual studio 2005でC言語は学べるのか?

    こんばんは。 プログラミングを学ぼうと考えている素人です。 visual studio 2005 academic editionというソフトでC言語を学ぼうと思ったのですが、中に入っているソフトがCではなく、C#でした。 調べてみると、CとC#は違う様で(具体的に何が違うは分かりませんでしたが)、 C言語が学べるのか不安になって質問しました。 visual studio 2005でもC言語を使用することは可能なのでしょうか? 陳腐な質問ですが、何卒よろしくお願いいたします。

  • visual studio 2005でC言語は学べるのか?

    こんばんは。 プログラミングを学ぼうと考えている素人です。 visual studio 2005 academic editionというソフトでC言語を学ぼうと思ったのですが、中に入っているソフトがCではなく、C#でした。 調べてみると、CとC#は違う様で(具体的に何が違うは分かりませんでしたが)、 C言語が学べるのか不安になって質問しました。 visual studio 2005でもC言語を使用することは可能なのでしょうか? 陳腐な質問ですが、何卒よろしくお願いいたします。

  • reallocでうまくメモリを拡張出来ていない?気がしますが・・・

    OS:WindowsXP SP3 コンパイラ:Visual C++ 2008Express Edition with Service Pack 1 質問なんですが、 ttp://homepage3.nifty.com/mmgames/c_guide/ ↑こちらの練習問題19の3-1なんですが、4人以上のデータを入力して showdata関数で表示させると4人目からのデータが入力したデータと 違います。 (reallocのところが間違っているような気がするのですが?です) どなたかアドバイスお願いします。 他の問題点も良ければアドバイス頂けると幸いです。 *******************以下自分で書いたソース******************** #include <stdio.h> #include <stdlib.h> //構造体 typedef struct { char name[64]; int age; int sex; } stat; //プロトタイプ宣言 int status(stat * ,int *); void showdata(stat *, int); int main() { int cnt, max = 3; //構造体ポインタの宣言 stat *data; //動的配列の宣言 data = (stat *)malloc(sizeof(stat) * max); if ( data == NULL ) { exit(0); } //入力用関数の呼び出し cnt = status(data, &max); //出力用関数の呼び出し showdata(data, cnt); //メモリの開放 free(data); return 0; } int status(stat *data, int *max) { int i = 0; //年齢に-1が入力されるまでループ do { if ( (i + 1) > (*max) ) { *max += 10; data = (stat *)realloc(data, sizeof(stat) * (*max) ); if ( data == NULL ) { exit(0); } } printf("名前入力:"); scanf("%63s", data[i].name); getchar(); fflush(stdin); printf("年齢入力(-1入力で入力終了):"); scanf("%d", &data[i].age); getchar(); //1か2でない場合再入力 do { printf("性別を入力(1.男性 2.女性) <1 or 2>:"); scanf("%d", &data[i].sex); getchar(); if ( (data[i].sex < 1) || (data[i].sex > 2) ) { data[i].sex = 3; printf("1か2で入力してください\n"); } } while ( (data[i].sex) == 3 ); i++; } while ( (data[i-1].age) != -1 ); return i - 1; } void showdata(stat *data, int cnt) { int i; for ( i = 0; i < cnt; i++ ) { printf("\n%d人目のデータ\n", i + 1); printf("名前:%s\n", data[i].name); printf("年齢:%d\n", data[i].age); if ( data[i].sex == 1 ) { printf("性別:男性\n"); } else { printf("性別:女性\n"); } } return; }

  • 構造体の配列について(2)

    前回「構造体の配列について」という質問タイトルで、質問させていただいたのですが、理解が完全ではないため同じようなプログラム内容ではありますが、疑問を書かせていただきます。よろしくお願いします。 ----------------------------------------------------------------------- #include<stdio.h> #include<string.h> struct person{ char name[1];    //// (1) //// int height; int weight; }; int main() { struct person dt[10]; strcpy(dt[0].name,"日本一郎"); strcpy(dt[2].name,"関東次郎"); strcpy(dt[9].name,"関西三郎"); dt[1].weight=99; dt[1].height=168; printf("%s %s %s %d %d \n",dt[0].name,dt[2].name,dt[9].name,dt[1].weight,dt[1].height); return 0; } ----------------------------------------------------------------------- 以上のプログラムの(1)の部分で、文字を1文字しか格納出来ないのに、 strcpy(dt[0].name,"日本一郎"); strcpy(dt[2].name,"関東次郎"); strcpy(dt[9].name,"関西三郎"); としても何故正しく実行できるのかわかりません。 前回いろいろとご回答いただいたのに、しっかりと理解できない者ですが、教えていただければ嬉しいです。

  • 構造体の配列について(2)

    前回「構造体の配列について」という質問タイトルで、質問させていただいたのですが、理解が完全ではないため同じようなプログラム内容ではありますが、疑問を書かせていただきます。よろしくお願いします。 ----------------------------------------------------------------------- #include<stdio.h> #include<string.h> struct person{ char name[1];    //// (1) //// int height; int weight; }; int main() { struct person dt[10]; strcpy(dt[0].name,"日本一郎"); strcpy(dt[2].name,"関東次郎"); strcpy(dt[9].name,"関西三郎"); dt[1].weight=99; dt[1].height=168; printf("%s %s %s %d %d \n",dt[0].name,dt[2].name,dt[9].name,dt[1].weight,dt[1].height); return 0; } ----------------------------------------------------------------------- 以上のプログラムの(1)の部分で、文字を1文字しか格納出来ないのに、 strcpy(dt[0].name,"日本一郎"); strcpy(dt[2].name,"関東次郎"); strcpy(dt[9].name,"関西三郎"); としても何故正しく実行できるのかわかりません。 前回いろいろとご回答いただいたのに、しっかりと理解できない者ですが、教えていただければ嬉しいです。

  • Visual C# 2008 で作成したプログラムソースを2005でいじりたい

    Visual C# 2005 がインストールされている環境で、Visual C# 2008で作成したプログラム(ソース)に手を加えたいのですが、やり方がわかりません。Visual C# 2005のマシンに2008をインストールするというのもひとつの解ですが、Visual C# 2005での解決策を知りたいので質問しています。 ・実行形式は、Visual C# 2005のマシンで正常に動きます。 ・ソースに、2008で追加された機能は使った部分はありません。 上記2点は確認しました。よろしくお願いします。

  • Borland C++ Compiler 5.5の警告について

    Borland C++ Compiler 5.5を使用してコンパイルしているのですが、 下記のソースをコンパイルするとエラーがでます。 #include <stdio.h> ------test.c------ int main(void) { int a; int b=0; b = a; return 0; } 警告 W8004 error.c 6: 'b' に代入した値は使われていない(関数 main )という警告なのですが、初期化をしている変数すべての警告がでてしまい困っています。 この警告だけを表示させない方法等あるのでしょうか?

  • reallocでうまくメモリを拡張出来ていない?気がしますが・・・

    OS:WindowsXP SP3 コンパイラ:Visual C++ 2008Express Edition with Service Pack 1 質問なんですが、 ttp://homepage3.nifty.com/mmgames/c_guide/ ↑こちらの練習問題19の3-1なんですが、4人以上のデータを入力して showdata関数で表示させると4人目からのデータが入力したデータと 違います。 (reallocのところが間違っているような気がするのですが?です) どなたかアドバイスお願いします。 他の問題点も良ければアドバイス頂けると幸いです。 *******************以下自分で書いたソース******************** #include <stdio.h> #include <stdlib.h> //構造体 typedef struct { char name[64]; int age; int sex; } stat; //プロトタイプ宣言 int status(stat * ,int *); void showdata(stat *, int); int main() { int cnt, max = 3; //構造体ポインタの宣言 stat *data; //動的配列の宣言 data = (stat *)malloc(sizeof(stat) * max); if ( data == NULL ) { exit(0); } //入力用関数の呼び出し cnt = status(data, &max); //出力用関数の呼び出し showdata(data, cnt); //メモリの開放 free(data); return 0; } int status(stat *data, int *max) { int i = 0; //年齢に-1が入力されるまでループ do { if ( (i + 1) > (*max) ) { *max += 10; data = (stat *)realloc(data, sizeof(stat) * (*max) ); if ( data == NULL ) { exit(0); } } printf("名前入力:"); scanf("%63s", data[i].name); getchar(); fflush(stdin); printf("年齢入力(-1入力で入力終了):"); scanf("%d", &data[i].age); getchar(); //1か2でない場合再入力 do { printf("性別を入力(1.男性 2.女性) <1 or 2>:"); scanf("%d", &data[i].sex); getchar(); if ( (data[i].sex < 1) || (data[i].sex > 2) ) { data[i].sex = 3; printf("1か2で入力してください\n"); } } while ( (data[i].sex) == 3 ); i++; } while ( (data[i-1].age) != -1 ); return i - 1; } void showdata(stat *data, int cnt) { int i; for ( i = 0; i < cnt; i++ ) { printf("\n%d人目のデータ\n", i + 1); printf("名前:%s\n", data[i].name); printf("年齢:%d\n", data[i].age); if ( data[i].sex == 1 ) { printf("性別:男性\n"); } else { printf("性別:女性\n"); } } return; }

  • 分割ファイルのコンパイルができない

    こんにちは。 mikroCというコンパイラを使い、 以下の2つのファイルをコンパイル 使用と思っていますが、 「init12f683が宣言されていない」、という エラーが出てしまいます。 プログラム的に問題あるでしょうか( コンパイラでは、ひとつのプロジェクト を作成し、両方そこに加えてあります)。 ----init12f683.c(自作関数) void init12f683(){ GPIO=0; CMCON0=0b00000111; ANSEL=0b01110000; TRISIO=0b00010000; } ----picc1.c(main) extern void init12f683(void);*宣言はここと、 void main(){ extern void init12f683(void);*ここで両方試しました。 init12f683(); Delay_ms(1000); while(1){ GPIO.F0=1 ; Delay_ms(1000) ; GPIO.F0=0 ; Delay_ms(1000) ; } } externでの関数の宣言は、mainの外に置く場合と、 中に入れる場合、両方試しています。 問題が、プロジェクトファイルの設定にあるのか、 プログラム的におかしいのか(どこがおかしいのか)、 知りたいです。 何か分かる人がいましたら、 よろしくお願いします。

  • void型ポインタについて

    -------------------------------- #include<stdio.h> void uni_disp(void *p,int typ); int main() { int idt=123456; double ddt=56.789; char ss[]="abcdef"; uni_disp(&idt,'I'); uni_disp(&ddt,'D'); uni_disp(ss,'S'); uni_disp("STRING",'S'); return 0; } void uni_disp(void *p,int typ) { if(typ=='I'){ printf("%d\n",*(int *)p); } else if(typ=='D'){ printf("%f\n",*(double *)p); } else if(typ=='S'){ printf("%s\n",(char *)p); } } ----------------------------------- 以上のプログラム等で、void型ポインタをint型ポインタ、double型ポインタとみなす場合の、「*(int *)p」や「*(double *)p」の表記がどういう仕組みになっているか分かりません。 「*(int)p」などはエラーが出るのですが、やはり表記の意味を理解していないため何故か分かりません。 「*(int *)p」などの表記を分解して教えていただけると嬉しいです。

  • 皆さんの回答のおかげでプログラミングの目的が決まってきたのですが、何言語から入ったほうがいいでしょうか?

    以前質問させていただき、たくさんの回答をいただきました。 本当にありがとうございます。 皆様の詳しい回答のおかげで、プログラミングを学ぶ目的が決まりました。 そこでまた質問なのですが、 ・携帯のゲームを作りたい(携帯用のソフトってありますか?・・・) ・パソコンのソフトを作りたい というのに目標が決まりました。 このことから考えるとjavaということになるらしいのですが、 私は一度javaを少しかじっており、まったくわからなかったわけではないですが、難しいと感じました。 そこでまず、javaを学ぶ前にもっと簡単な言語を完全に習得してからにしたいのですがそんな言語はありますでしょうか? つまりjavaよりも簡単な言語?で、その言語を習得すれば、javaの習得が早くなるというような言語を探しています。 いろいろ調べたところ、C#を習得していると、javaが習得しやすいとか、Cを先にやったほうがいいとかいろいろな意見があり正直混乱しているところです。 また、今のところ将来プログラミング関係のお仕事に就くことは考えていないわけでもないです。 そして、なるべく将来どんな仕事(パソコンを少しでも使う仕事)でも役に立つ言語がいいなぁとおもっています。そうなるとエクセルなどを使うときに役に立つVBAも・・・と思ってしまいます。。。 いちお、高校3年間で2つくらいの言語をしゅうとくできたらなぁーと思っています。そのうちのひとつのはjavaです。 回答よろしくお願いします。

  • C言語で16進数をテキスト出力したい。

    お世話になります。 件名の内容で、参考になるサイトや手法などをご教授願います。 【件名】C言語で16進数をテキスト出力したい。 【環境】OS:WindowsXPsp2 コンパイラ:borlandC 【詳細】 現在、C言語で以下の手順で処理を行うプログラムを作成しております。 手順1:ASCIIコードで記載されたテキストをUTF8コードに変換 手順2:UTF8に変換された1行目の文字列を16進数コードフォーマットをファイル名にして保存 手順2の16進コードフォーマットのファイル名にして保存する作業で fprintf(buff,"%x",UF8); //"buff"保存ファイル名、"UTF8"1行目文字列 を用いて行えるかと思ったのですが、どうやら直接16進数の名称を吐き出すことが不可能なようで、どのように行ったらいいか皆目検討がついておりません。 そこで大変恐縮ですが、参考になる手法や、情報がありますサイト等をお教え頂けると幸甚です。 よろしくお願いいたします。

  • C言語を好きになりたいのでメリットなどを教えてください!

    学校でC言語の授業があることや、私が狙っている国家資格でC言語の問題が出ることなどから、Cを深く学びたいと思います。 春休みなんでちょうど勉強どきなんです。 しかし、C言語がうまくなるとどういうことが起きるのかよくわかりません。 C言語がうまくなると何が作れたりするんでしょうか? C言語は素晴らしいのでなんでも作れる・・・でしょうか?笑 まあとりあえず、要は私にC言語を好きにさせてみてくださいということです。 よろしくお願いいたします!

    • ベストアンサー
    • noname#82438
    • C・C++・C#
    • 回答数10
  • キャスト演算子について

    初心者の初歩的な質問ですが、変数の型を変換するキャスト演算子がありますが本を読んでいて思ったのですが変換した式の型はその後どうなるのでしょう? 例で(前略) ----------------------------   int A =0; /*A=0*/ double B =2; /*B=2.000000*/ A = (int)B; B = 3; ----------------------------- とするとA=2 となりますがこの時のBの型はどうなるのでしょう? キャストを使用すると最初に宣言したdoubleがintになってしまうのか?後で代入した3は最初に宣言したdouble型の「3.000000」?それとも変換したint型「3」? 多分最初のままのような気はしますが。よろしくお願いします。