『C・C++・C#』に関する質問・疑問一覧

次へ  ]
26042件中 1~20件目
  • 30~60秒に1回モーターを回したい

    古いH8のマイコンが載った、(Beauto Chaserと呼ばれる)車型のロボットで30秒~60秒に1回ランダムにモーターを前後に回したいです。しかし、思うように動きません。 自分でC言語のコードを書いてHEWとFDTで読み込ませていますが、なぜかいつも32秒±1秒くらいまで待って動き始めます。しかも、プログラム上は前後の動きは30秒~60秒に1回しか無いはずなのに、8回とか10回とか繰り返してから、次の32秒±1秒のルーチンに入るようです。何がおかしいのでしょうか? これが私のコードです: #include<36064s.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <math.h> #include "vs-wrc003.h" void main(void) { const BYTE MainCycle = 60; Init((BYTE)MainCycle);//CPUの初期設定 Mtr_Run(0,0,0,0);//モータを停止 LED(2);//オレンジのLED点灯 //ループ while(1) {//メインループ if(getSW()) {//スイッチが押されたら int r = 30000; while(1) { Mtr_Run(-64,64,0,0);//前に進む Wait(500); Mtr_Run(64,-64,0,0);//後ろに下がる Wait(500); Mtr_Run(0,0,0,0);//モータを停止 srand(r); r = rand() % 30000;//0~29,999の乱数を生成する…はず Wait(30000 + r);//30~60秒待つ…はず } } } } …これを10~20秒に設定すると正確に動きます。 8回くらいテストしましたが、12~20秒の間でランダムに動きました。しかも、前後の動きは必ず1回だけです。 なぜ30~60秒にするとダメなのでしょうか? H8/36064のデータシートは見つけました: http://robot.tamagawa.ac.jp:8080/cyber/H8cpp/rescue/rjj09b0049_h836064.pdf ただ、タイマーが複数あって、どこを見たらいいのか分かりません。404ページもあって上限○秒みたいなのは書いてないんですよね…見つけられてないだけかもしれませんが。 あれこれ試行錯誤する前に質問しようと思い、今、質問しています。 よろしくお願いします。 ※<time.h>が使えないマイコンでの疑似乱数の生成方法については、次回質問します。今回は一応、動いているので気にしません。

    2020/05/30 00:10
  • [WPF]ボタンの中のボタンのMouseDown

    ボタンの中にボタンを配置した場合、中のボタンのMouseDownが取れず、外側のボタンのMouseDownしか発生しません。 XAML: <Canvas x:Name="dCanvas" Background="White">   <Button Canvas.Left="0" Canvas.Top="0" Width="200" Height="50">     <Canvas ClipToBounds="True" Width="200" Height="50">       <Button Content="hogehoge" Canvas.Top="10" Canvas.Left="10"/>     </Canvas>   </Button> </Canvas> CS: foreach (UIElement one in dCanvas.Children) {   one.PreviewMouseDown += (s, ex) =>   {     One_GotFocus(s);     ex.Handled = true;   };   if(one is Button)   {     Button work = one as Button;     if (work!=null)     {       foreach(UIElement two in ((Canvas)work.Content).Children)       {         two.PreviewMouseDown += (s, ex) =>         {           One_GotFocus(s);           ex.Handled = true;         };       }     }   } } XAMLでCkickイベントを書いても来ませんでした。 何か設定しなければいけないことがあるのでしょうか。

    2020/05/29 14:29
  • C#でdiscordのbot開発をしています。

    いまC#でbot開発をしています。 using System; using System.IO; using System.Net.Http; using Newtonsoft.Json.Linq; private void Form1_Load(object sender, EventArgs e) { ////今日の天気予報の取得 string baseUrl = "https://weather.livedoor.com/forecast/webservice/json/v1"; //東京都のID string cityname = "130010";    string todayweather; string url = $"{baseUrl}?city={cityname}"; string json = new HttpClient().GetStringAsync(url).Result; JObject jobj = JObject.Parse(json); todayweather = (string)((jobj["forecasts"][0]["telop"] as JValue).Value);//今日の天気の取得 Console.WriteLine(todayweather); } このプログラムを組み込もうとしています。上で定義したtodayweatherを用いて ほかの場所のifで実行したときに表示したいのですが。このようなエラーが出ます。 場所 Discord.Preconditions.NotNullOrEmpty(String obj, String name, String msg) 場所 Discord.API.DiscordRestApiClient.<CreateMessageAsync>d81.MoveNext() --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 Discord.Rest.ChannelHelper.<SendMessageAsync>d9.MoveNext() --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter1.GetResult() 場所 TestHoge.Program.<CommandRecieved>d__8.MoveNext() 場所 個人情報なんで書けません 178 --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 Discord.EventExtensions.<InvokeAsync>d__11.MoveNext() --- 直前に例外がスローされた場所からのスタック トレースの終わり --- 場所 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 場所 Discord.WebSocket.DiscordSocketClient.<TimeoutWrap>d__131.MoveNext() string型をどのように利用したらうまくできますか? 回答お願いします。

    2020/05/16 22:26
  • Visual Studio C++のデータ入力

    C言語を一から勉強しています。 Visual Studio C++を使ってプログラムを入力していて、デバッグの際にscanfでテストデータを入れたいのですが、入力の方法が分かりません。 どうやったらよいのでしょうか。 Visual Studio 2019で、C++のコンソールアプリケーションというものを使っています。

    2020/05/13 06:46
  • N個の整数の並び替えるアルゴリズム

    N個の整数1,2,3,...Nから任意のM個(M < N )を取り出すのですが、重複はダメという場合、どのようなアルゴリズムがあるでしょうか。重複ありなら、Nまでの一様乱数を発生させて整数化して取り出すことは可能です。今回は重複なしです。重複があったらやり直して重複なしになるまでやり続けるというのはダメだなと思っています。 データ処理言語のRはコマンド1つのようですが。言語はFortranなのですが、アルゴリズムのレベルだとどれでも同じと考えています。よろしくお願いします。

    2020/05/12 01:04
  • 5つの要素を持つ配列から最高点を出力する

    1,5つの要素を持つ配列を受け取り、その最大値を返すint main(int x[])関数を定義してください。max()関数を使い、キーボードから学生の数とテストの点数を入力させ、最高点を出力うするコードを記述してください。 テストの点数を入力してください。 50 49 35 68 75 最高点は75点です、 みたいな感じの例題を作るまとめの練習ですが、ちょっと頭がこんがらがってしまいました。 とりあえず私が、途中まで記述したソースです。 #include<iostream> using namespace std; int max(int x[]); int main() { int tensu[5]; for (int i = 0; 0 < 5; i++) { cout << "テストの点数を入力してください。\n"; cin >> tensu[i]; } return 0; } int max(int x[]) { } 関数を使ってそれでif判定だとは思うのですが、関数を使ってifを使う方法が解りません。 ご教示よろしくお願いします。

    2020/05/09 20:07
  • MacOSでのC#開発環境について

    これからC#の勉強を始めようと思っています。 windowsのVisual studio 2017のコンソールアプリケーションプログラムでformのようなGUI機能を使用出来るものがあると思うのですが、macOSでも可能なのでしょうか…

    2020/05/09 03:48
  • strcpyのエラー

    こんばんは。 困りました、また文字列に関するエラーです。 文字列の例題でsprcpyを使おうとすると必ず出ます。 何やら調べてみるとライブラリの問題だとかコピーする文字列が大きすぎてコピー先のバッファに入らない場合これを通知する方法がないからとか色んなエラーの原因が述べられています。 エラーを出さずにビルド、コンパイルして実行するにはどのような方法が 一番良いのでしょうか? ご教示お願いします・・・。 エラーの詳細 重大度レベルコード説明プロジェクトファイル行抑制状態 エラーC4996'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

    2020/05/08 21:09
  • ポインタによる文字列の出力

    こんにちは、お世話になっています。 この参考書のプログラムの例題のソースを実行しようとしたのですが、 Visual Studioを使っているのですが、警告がなぜか出てしまいます。 プログラム力もそんなにないので何が原因か解りません。 ご教示お願いします。 #include<iostream> using namespace std; int main() { char* str = "Hello"; ←ここでエラー cout << str << '\n'; return 0; } 重大度レベルコード説明プロジェクトファイル行抑制状態 エラー (アクティブ)E0144型 "const char *" の値を使用して型 "char *" のエンティティを初期化することはできません

    2020/05/08 11:42
  • 配列サイズを明示せずサブルーチンに渡す方法

    プログラムのメインの方で2次元、3次元の高次元配列を設定してそれをサブルーチンに引き渡すことを考えています(しょっちゅうやっていることですが)。 この場合、サブルーチン側に汎用性を持たせるためにできるだけ配列のサイズを自動で渡すようにしたいと思っています(メインが変わるとそれに応じて自動対応)。そうしないとサブルーチンが汎用化せず、ケースバイケース(メイン側の配列のサイズが変わる場合それに応じてコードを書き変えなければならない)に応じなければならず、うっかりミスの間違いもおこりそうです。 配列のサイズを決めないサブルーチンの書き方を教えて頂きたいのですが。 なお、今回は配列はデータとして参照するだけで書き換えることはありません。 言語ですが、”サブルーチン”というだけあってFortranです。(Cのカテゴリだと答えを頂けるかなと思っているのですが。他に適当なところも無いようですが)

    2020/05/04 13:33
  • 誤った関数に関する値渡しについて

    こんにちは、まずはソースを記述します。 #include<iostream> using namespace std; //誤ったswap関数の宣言 void swap(int x, int y); int main() { int num1 = 5; int num2 = 10; cout << "変数num1の値は" << num1 << "です。\n"; cout << "変数num2の値は" << num2 << "です。\n"; cout << "変数num1とnum2の値を交換します。\n"; swap(num1, num2); cout << "変数num1の値は" << num1 << "です。\n"; cout << "変数num2の値は" << num2 << "です。\n"; return 0; } //誤ったswap関数の定義 void swap(int x, int y) { int tmp; tmp = x; x = y; y = tmp; } >>関数内で仮引数xとyの値を交換する処理を行っていても、これは変数num1とnum2の値を「コピー」した5と10を交換しているにすぎません。 swap関数内で値を交換しても、呼び出し元の変数であるnum1とnum2に影響を与えることができません。 ・・の文章の中から質問ですが値渡しとはどういうことでしょうか? 参照渡しとはどう違うのでしょうか? ご教示お願いします。

    2020/05/04 13:13
  • Excelを使ったシミュレーション

    大学からの課題なのですが、Excelの経験が浅く、どのように考えたらいいかも分からない状況です(ー ー;) どなたか教えてくれませんか。 スマホゲームのガチャを行う状況を想定してみよう。 お目当てのアイテムが4つあるとする(例えばイメージとして、武器、防具、兜、盾)。 この4つのアイテムはそれぞれ確率1%で当たる(つまり 96%はハズレ)。 また、同じアイテムを重ねる(凸する)ことで強化されるものとする。 ガチャを1回100円とした場合、すべてのお目当てアイテムを5個ずつ引き当てる(すべ て4凸する)ためには予算がどれくらいかかることが予想されるだろうか? ヒント:数学的に厳密に期待値を求めるのは大変で、現実的ではないでしょう。そういう時 は、仮想のガチャをシミュレーションしてみるのが有効。シミュレーションを行うときには、 ランダムで数字を発生させるのがコツです。 例えば Excel であれば、=RANDBETWEEN(1,100)と入力することで、1から100までの 数字をランダムで発生させることができます。そうして、1が出たら武器、2が出たら防 具、・・が当たったとみなす。これで仮想ガチャを作れたのでそのあとは、いろいろと工夫 して考えてみてください。 ※この問題は決まった解き方、答を求めるものではありません。Python などのプログラム 言語を使ってシミュレーションすることもできるでしょう。知識を動員して、いろいろ調べ て、知恵を使って各自が工夫して問題解決を図ることを求めます。

    2020/05/03 22:06
  • コンパイル時のエラーについての質問です。

    プログラミングについての質問です。 ArduinoLeonardoでコンパイル時にエラーが出てしまいました。 以下のメッセージが出てきました。 C:\Users\ZZ0711\AppData\Local\Temp\ccJJkwZc.ltrans0.ltrans.o: In function `main': C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:43: undefined reference to `setup' collect2.exe: error: ld returned 1 exit status 次のフォルダのライブラリsrcを使用中:C:\Program Files (x86)\Arduino\libraries\src (legacy) 次のフォルダのライブラリHIDバージョン1.0を使用中:C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\HID exit status 1 ボードArduino Leonardoに対するコンパイル時にエラーが発生しました。 自力で調べてみましたが何度試しても解決しません。 何とかして書き込みたいです。よろしくお願いします。

    2020/05/02 11:17
  • c++ 各桁の整数値を足すプログラム

    上記の通りの質問です #include <iostream> using namespace std; int main () { int x; int sum = 0; cout << "正の整数値の各桁を足す。\n " ; do{ cout << "正の整数値:"; cin >> x; }while (x <= 0); cout << "足すと"; while (x > 0){ cout << sum += x % 10; x /= 10; } return sum; cout << "です。\n " ; } とまでは書けましたがうまくいきません。 初心者なので簡単かもしれませんがお願いします。 また、sum += x% 10 と書いたときにオペラントと一致する演算子がないとでます。

    2020/05/01 09:13
  • c++ 整数値の各桁を足し合わせるプログラム

    上記の通りの質問です #include <iostream> using namespace std; int main () { int x; int sum = 0; cout << "正の整数値の各桁を足す。\n " ; do{ cout << "正の整数値:"; cin >> x; }while (x <= 0); cout << "足すと"; while (x > 0){ cout << sum += x % 10; x /= 10; return sum; } cout << "です。\n " ; } とまでは書けましたがうまくいきません。 初心者なので簡単かもしれませんがお願いします。

    2020/05/01 08:46
  • C、C++

    SE未経験で勉強中です。 C、Visual studioC++、Windows 10 問題: sキーを入力してから10秒後に、 "10秒経ちました"と表示する。 for、Sleep、scanfを使用。 どのようにかいたらよいのか なんどやってもエラーは出ないものの 10秒経ったら文字が表示されることしかできず、 sキーを押してから10秒後、という処理ができません。 教えていただけたら幸いです。 #include 〈stdio.h〉 #include 〈windows.h〉 int main(void) { printf(“sキーを入力してください。”); Sleep(10000); printf(“10秒経ちました!” ); } ↑ここにどうやったらsキーを押してからこの処理を実行させるのですか?

    2020/04/30 15:02
  • C言語でforとSleepを使う

    SE未経験で勉強中です。 C、Visual studioC++、Windows 10 問題: sキーを入力してから10秒後に、 "10秒経ちました"と表示する。 for、Sleep、scanfを使用。 どのようにかいたらよいのか なんどやってもエラーは出ないものの 10秒経ったら文字が表示されることしかできず、 sキーを押してから10秒後、という処理ができません。 教えていただけたら幸いです。

    2020/04/30 13:52
  • msgが定義されていない

    Visual Studio2019でwindowsアプリケーションでゲームを作っているんですが、 どうやってもmsgが定義されていないが直りません。 #include <windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp); //WinMain関数 int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow) { //ウィンドウクラスの登録 //メインウィンドウの生成 //メッセージループ return (int)msg.wParam; } //ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { //メッセージごとにやりたいことを記述する } return 0; } ご教示お願いします。

    2020/04/26 21:35
  • return *this

    c++言語勉強中のものです。あるクラスのオブジェクトをobj とし、動的確保された メモリ領域pにobj をコピーするときコピーコンストラクターではメンバ関数は strcpy ( p. obj ); で終わるのに対し、代入演算子による代入コピーでは同じく strcpy ( p. obj ); の次に return (* this ); が追加され参考としているweb 資料では その目的は、「これは決まり文句 」で済ませていますが私には return ( *this )が 何故コピーコンストラクタの処理文には無く代入演算子処理文末尾にはあるのかわかりません。上記理由を教えていただければありがたいです。

    2020/04/04 18:42
  • 入力に出現する数字文字をカウントするプログラム

    こんにちは、毎度お世話になります。 #include<iostream> using namespace std; int main(void){ char c; int cnt[10] = {0}; while(cin.get(c)){ if(c >= '0' && c <= '9') cnt[c - '0']++; } for (int = 0; i < 10; i++) cout << i << "の出現回数:" << cnt[i] << '\n'; return(0); } [/code] ここで質問なんですが、このプログラムの中で数字文字をカウントしているのはどこでしょうか? そして while(cin.get(c)){ if(c >= '0' && c <= '9') cnt[c - '0']++; } ここの部分が何を表しているのか解りません。 よろしくお願いします。

    2020/03/11 14:34

ピックアップ