unacyo の回答履歴

全103件中61~80件表示
  • C言語で%を使わない余りの出し方

    c言語で%を使わない余りの出し方の問題を出されたのですが、色々考えたのですが全くわかりません まず余りの限界(余りがどこまであるか)がどこまであるか。 そしてwhileかforを使って余りを出す方法を自分で考えたのですが全くできませんでした。 自分の中ではif文でaを余りとして(a==1 && a==2)など考えたりしました。 またこれはポインタも使わずavgr**なども使いません。 さらに発展した問題で if文、switch文、for文、while文を使わないで余りを出すというのが出てきました 情けないのですが、何かアドバイスがあれば教えていただきたいと思います

  • C言語でのカレンダーの表示について質問です

    VisualStudioを使ってC言語でコンソールアプリケーションのカレンダーを作っています。 やりたいことは以下の通りです。 プログラムを起動すると、現在の月を中央に三ヶ月分のカレンダーを表示。 Lキーでカレンダー全体を一ヶ月前に変更 Rキーで一ヶ月後に変更 Dキーで三ヶ月前に変更 Uキーで三ヶ月後に変更 Aキーで一年前に変更 Bキーで一年後に変更 起動時にカレンダー表示するのはできているんですが、Rでカレンダーを進めていくと12月の次が13月、次が0月、その次が1月となってしまい、日付も上手いこと表示されません。 L,D,U,でも同じようになります。 また、A,Bで年を変えると日付が正確に表示されないです。 これらを正しく表示させる方法をご教授いただけますでしょうか。 #include <stdio.h> #include <conio.h> #include <time.h> #define KEY_ESC (0x1b) // エスケープ #define KEY_L (0x6c) // L #define KEY_D (0x64) // D #define KEY_R (0x72) // R #define KEY_U (0x75) // U #define KEY_A (0x61) // A #define KEY_B (0x62) // B time_t timer; // 現在の時刻 struct tm local; // 地方時 int curr_year; // 現在の年 int curr_mon; // 現在の月 int input; // どのキーが入力されたか int calendar[12][6][7]; // 月、最大の週、1週間 int year; // 年 int month; // 月 int day; // 日 int nweek; // その月が何周あるか int nday; // その月が何日まであるか int day_of_week; // その月が何曜日から始まるか void CalendarDisplay(void); void CalendarSet(void); void DayOfWeek(int, int, int); void NumOfDay(int); void KeyOperat(int); int LaepYear(int, int); int Zeller(int, int, int); int main(void) { CalendarDisplay(); while (1) { printf("ESCキーで終了\n\n"); input = _getch(); if(input == KEY_ESC) { break; } else if(input == KEY_L || input == KEY_D || input == KEY_R || input == KEY_U || input == KEY_A || input == KEY_B) { KeyOperat(input); } } return 0; } // カレンダーの表示 void CalendarDisplay(void) { // 現在時刻を取得 timer = time(NULL); // 地方時に変換 localtime_s(&local, &timer); // 現在の年 curr_year = local.tm_year + 1900; // 現在の月 curr_mon = local.tm_mon + 1; CalendarSet(); } // 当月とその±1の月を設定 void CalendarSet(void) { for (month = curr_mon-1; month <= curr_mon+1; month++) { // 12月を超えたら次の年に if(curr_mon > 12) { curr_mon = 1; month = 1; curr_year += 1; } // 1月を超えたら前の年に else if(curr_mon < 1) { curr_mon = 12; month = 12; curr_year -= 1; } // その月が何日まであるか求めて代入 nday = LaepYear(curr_year, month); // その月が何曜日から始まるか day_of_week = Zeller(curr_year, month, 1); nweek = 0; for (day = 1; day <= nday; day++) { calendar[month-1][nweek][day_of_week] = day; //printf("day-> %d ", day); if (++day_of_week == 7) { day_of_week = 0; nweek++; } } } DayOfWeek(month, curr_mon, curr_year); } // 月と曜日の表示 void DayOfWeek(int m, int cur_m, int cur_y) { for (m = cur_m-1; m <= cur_m-1; m++) { printf("%d%6d月%16d%6d月%16d%6d月\n" "日 月 火 水 木 金 土  " "日 月 火 水 木 金 土  " "日 月 火 水 木 金 土\n", cur_y, m, cur_y, m + 1, cur_y, m + 2); NumOfDay(&calendar[m-1]); } } // 日数の表示 void NumOfDay(int calendar[][6][7]) { int max_w = 0, nmon = 0, w = 0; // その月の最大週の間 for (max_w = 0; max_w < 6; max_w++) { // 3ヶ月分表示 for (nmon = 0; nmon < 3; nmon++) { for (w = 0; w < 7; w++) { if (calendar[nmon][max_w][w]) { printf("%2d ", calendar[nmon][max_w][w]); } else { printf(" "); } } printf(" "); } printf("\n"); } } // キー操作でカレンダーの表示を変える void KeyOperat(int input) { do { switch(input) { case KEY_L: curr_mon -= 1; break; case KEY_R: curr_mon += 1; break; case KEY_D: curr_mon -= 3; break; case KEY_U: curr_mon += 3; break; case KEY_A: curr_year -= 1; break; case KEY_B: curr_year += 1; break; default : input = !input; break; } } while(!input); CalendarSet(); } // うるう年の判定 int LaepYear(int y, int m) { const int num_day[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (m == 2 && y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)) { return 29; } return num_day[m - 1]; } // ツェラーの公式から曜日を求める int Zeller(int y, int m, int d) { int dow;   // 1月と2月の場合、それぞれ前年の13月、14月とする if(m == 1 || m == 2) { y--; m = m + 12; } dow = (y + y/4 - y/100 + y/400 + (13*m+8)/5 + d) % 7; return dow; }

  • なぜ、認証を一度するだけで何どもしなくていいのか

    うまく説明できてないかもしれませんが、分かる方がいたら教えてください。 ある環境から外部サイトに、接続するとそのたびにIDとパスを入力する必要があります。一度に あげると1つ1つ認証が必要です。 タブを同時に3つ開けば3つともそれぞれ入力します。 しかし、最初に1つタブを開きIDとパスを入力してからなら、ほかのタブを開いたときに IDとパスの入力をする画面がでてきません。(1つ通すとほかの認証をしなくていいということ。) なぜ最初に一つ入力するとほかのところでは、入力しなくてよくなるのでしょうか? 一時ファイルがどうとか~というふうに聞いたことがありますが、詳しく知りたいと 思い質問しました。

  • LinuxからWindowsのbatファイルを実行

    Windowsサーバ上にbatファイルが置かれていて、 これをLinuxサーバ側からスケジューリング実行することを考えています。 そもそもWindowsサーバなのだからタスクスケジューラを使えば? という案もありますが、 スケジューリング実行を一元管理したいので Windowsサーバ側にはスケジューリングを組む案は避けたいです。 それとなく調べていると 「シェルを使う」という断片的な案は見えてきたのですが 具体的な形が見えてきていない状況です。 思い描いているのは シェルにはWindowsサーバのIPや接続用のユーザ名/パスワード、 batファイルのパス&batファイル名を記述するんだろうなぁ程度です 対応案や参考になるサイトがあればぜひご教授頂きたいです。

  • リトルエンディアン→ビッグエンディアン

    (1)リトルエンディアン typedef struct recvData{  int a;  unsigned char b[16]; unsigned char c[8]; unsigned int d[4]; } recvData_t; recvData_t rData; (2)ビッグエンディアン typedef struct sendData{  int a;  unsigned int b[4]; unsigned int c[2]; unsigned int d[4]; } sendData_t; sendData_t sData; 上記のようなリトルエンディアンの構造体の各メンバのデータを、ビッグエンディアンの構造体の各メンバのデータにそれぞれ格納するには どうしたらよいでしょうか?

  • 描画とサウンドのタイミングがデタラメになります。

    描画とサウンドのタイミングがデタラメになります。 60枚ほどのbitmapを切り替えながら(20コマ/秒程度)フォームに描画し、要所要所で playsound()で.wavの効果音を再生したいのですが、描画が遅れて効果音がめちゃくちゃ なタイミングで鳴ります(0.3秒程度のずれですが)。見ているともうどうしようもなく変 な感じ(6コマもずれてしまうため)ですが、DirectXを使用するとぴったり実行されるでしょうか?よろしくお願いします。

  • MACアドレス変更方法はどちらを使うべき?

    私は技術者ではありませんが質問させて下さい。 自分のWindows XPマシンのMACアドレス変更に挑戦しようと考えています。 調べたところ、下記の二つの方法がとりあえず見つかったのですが、どちらを使うべきなのでしょうか? 違いも含めて教えてもらえると助かります。 http://www.losttechnology.jp/Tips/changemacaddress.html http://www.nda.co.jp/memo/macdo/ 素人感覚ではソフトのインストールなしで出来る前者のほうがよさそうに思えますがどうでしょうか?

  • C# formの2重起動禁止

    子formを呼び出し,もう一度同じformを呼び出せるように現在なっているのですが,これを 子formがすでに開いていたら閉じてから新たに子formを開き直すようにしたいのですが, ネットで調べてもいまいち良く解らないのでご質問させていただきました. どなたかご教示よろしくお願いいたします.

  • C# formの2重起動禁止

    子formを呼び出し,もう一度同じformを呼び出せるように現在なっているのですが,これを 子formがすでに開いていたら閉じてから新たに子formを開き直すようにしたいのですが, ネットで調べてもいまいち良く解らないのでご質問させていただきました. どなたかご教示よろしくお願いいたします.

  • VC++.net iniファイルパス指定の仕方

    VC++2005.netマネージでiniファイルを使いたいと思っています。 iniファイルから変数を読み込む関数GetPrivateProfileInt,GetPrivateProfileStringの引数にはiniファイルの絶対パス(c:\~set.ini)を指定しなければならないようです。 実行ファイルと同じ場所にiniファイルを置きたいのですが、これはどうやって指定するのでしょうか。 私が思いついたコードです。 String ^exepath = gcnew String(System::Windows::Forms::Application::ExecutablePath);//実行ファイルのパスを取得。 char charpath[500]={0}; sprintf(charpath,"%s",exepath->ToString);//string型からchar型へ変換する。 int len = strlen(charpath); charpath[len - ??] = \0;//実行ファイル名を消す char ininame[] = "setting.ini"; strcat(charpath,ininame); これは実行ファイルの絶対パスと実行ファイル名を取得し加工します。 c:\~~\prog\test.exe(string型の文字列) ↓ c:\~~\prog\test.exe(char型の文字列) ↓ c:\~~\prog\ (後ろつまり実行ファイル名の部分を削る) ↓ c:\~~\prog\setting.ini (iniファイル名を後ろに追加する。) ただ、これには問題がありこの変数を引数にしたのでは >'GetPrivateProfileIntW' : 1番目の引数を'const char[10]'から'LPCWSTRに変換できません。 と出ます。 どうすればiniファイルのパスを指定できるのでしょうか。

  • winsockについて

    http://www.katto.comm.waseda.ac.jp/~katto/Class/GazoTokuron/code/socket.html こちらのTCPのサンプルを使ってみたのですがうまくいきません。 クライアントを実行しても、サーバにメッセージが表示されません。 クライアントの dstAddr.sin_addr.s_addr にサーバのグローバルIPを指定したのですが、それであっていいますか?

  • RT58iで2拠点のPPTP接続

    お世話になります。 現在、家と離れとをRT58iとRT57iでPPTPによるVPN接続をしようと考えています。 本部となる家は、RT58i 動的IPアドレスでネットボランチでDDNSを行っています。 ネットワーク体系は(192.168.1.0/24) 離れの部屋は、光ポータブルという3G回線を使ってインターネットをするような機械で、 これのLAN端子とRT57iのWAN端子を接続し、離れのネットワーク(172.16.0.0/24)を構築しています。 現在、 RT58iの方では、PPTPを使用したパスワード認証のリモートアクセスVPNサーバ(Anonymous) の設定になっており、 『接続先に割り当てるIPアドレス』はDHCP参照に指定。 RT57iの方では、『PPTPを使用したネットワーク型 LAN間接続VPN』で種類をPPTPクライアント 接続先をRT58iのDNS名、『経路のアドレス情報』に192.168.1.0 が指定されています。 この状態で、RT57iのGUI上から、接続を押すと、ピポッと言って両者が通信を開始し始め、 キープアライブを設定しているので、切断されることはありませんが、 RT58iのアドレス192168.1.1に対してRT57iのコンソールやPCからping打ってもリクエストタイムアウト RT57iのアドレス172.16.0.1に対してRT58iのコンソールやPCからpingを打ってもリクエストタイムアウト となり、まったく通信が取れません。 光ポータブルはDocomoのプライベートIPアドレスを貰っている(10.*.*.*)ようで、 また、RT57iとの接続がDHCPでの接続の為、ネットボランチを登録することが出来ません。 このような構成の場合、どうするのが一番良いのでしょうか。 ネットワークの環境ですが、 RT58i側(OCN) 192.168.1.1  ⇒ルータ 192.168.1.101 ⇒PC RT57i側(光ポータブル) 172.16.0.1  ⇒ルータ 172.16.0.101 ⇒PC こんな感じです。 トンネルが張れて、切断されることも無いので、ルートの問題かIPアドレスの設定か…。 暗礁に乗り上げています。よろしくお願いします。

  • TCP/IPで受信エラー

    自作Linuxマシン:クライアント、Windows:サーバの組み合わせで、TCP/IPによる大量受信をすると1000回に1回程度 "could not read received packet length error=7"というエラーがでます。実際に受信内容が化けていることも正常なこともあります。 受信側: Linux-2.6.18-at9 Debian。PowerPc 300MHz 100Base 送信側: Vista Ultimate Core-duo 1.2GHz です。 このエラーはGrepした結果、/drivers/net/temac/adaptor.cというデバイスドライバのFifoReceiveHandlerというモジュールが発しているらしいことが分かりました。 受信側プログラム: void* tcpReceiveThread(void* pParam) という受信専用のスレッドを設け、 while(1){ rcvSize = recv(socket, buf, 1024*9, 0); // Blocking Mode  ・・・・データ処理 } で常時待ちます。 Windows側には別のprocess側チャネルで送信要求をだします。 送信側プログラム:  int ok = send(socket_h, buf, 1024*9, 0); これを1回の送信要求に対し2回続けて実行します。 Windows側は同じPortNoでacceptしてあります。 不具合の推定原因: 1.受信側データ処理が重く、2回目の送信データが処理しきれていない。データ処理は1ms程度 2.受信process側の処理が重く、受信スレッドにリソースが回らない。 3.一回の送受信データ1024*9バイトが大きすぎる。あるいは必要な設定を行っていない。 などが考えられます。実行の時間的制約が厳し過ぎるのかもしれません: 受信側マシン全体で13msの間にコアジョブ3msと2個以上のpacket(1024*9)を受信しなければなりません。 ご示唆願えることがあればお願いいたします。

  • ファイルに埋め込まれた画像を*楽に*読む方法

    C++ WindowsAPI でプログラミングしています。 以下の場合においてビットマップハンドルを構成し、BitBltなどで貼り付ける楽な方法が知りたいです。 ファイル内にビットマップ形式の画像ファイルのバイナリデータが丸ごと埋め込まれている、 ファイル画像ファイルデータの前後に何らかのデータが置かれる、かつ、画像ファイルバイナリの 開始位置と終了位置を知ることができる。 自分が調べた限りでは、バイナリを読んでビットマップファイルの各構造体に書き込んで、 CreateDIBitmap を使うのがもっともよさそうなのですが、もっと楽な方法がないものでしょうか?

  • VB6.0でFTPサーバーの画像を直接表示したい

    VB6.0でFTPサーバーにある画像を取得し表示するプログラムがあるのですが、 ダウンロード件数が増えるとレスポンスが極端に悪くなります。 (例:4枚の場合6秒。24枚の場合30秒。) 処理手順は下記のようにしています。  1.FTPサーバーから画像をダウンロードし、PCのハードディスクに保存。  2.保存した画像を画面に表示。  3.DLした画像をPCのハードディスクから削除。 質問なのですが、パソコンに一時的に保存せずに、 FTPサーバーの画像を直接表示する方法はありませんでしょうか?

  • MFCのワーカースレッドとUIスレッドの使い分け

    MFCのスレッドプログラミングに関して質問があります。 MFCにはワーカースレッドとUI(ユーザーインターフェース)スレッドの 2種類のスレッドがあるようですが、何が違って、どのように使い分けするのでしょうか? ワーカースレッドは、このうような処理に、 UIスレッドは、このような処理に、 と言う感じで教えて頂けると助かります。 どいぞ宜しくお願い致します。

  • リセット動作

    HTML、javaScript とも初心者です。 ベース画像に別の画像を上乗せした後、 その箇所の表示をベース画像だけに戻すためにリセット処理すると、 他の部分の表示が消去されてしまいます。 消去されないようにする方法を教えてください。 実際の処理: <form> <input type="button" value="RESET" onclick="rst"> </form> <script type="text/javascript"> function rst() { document.write("<img src='baseimage.png' style='position:absolute;top:100px;left:150px'>"); } </script> これを実行すると、baseimage の表示だけが残り、他の部分が消去されてしまいます。 消去されないようにする方法を教えてください。 よろしくお願いいたします。

  • FTPとは???

    お世話になります。 FTP(File Transfer Protocol)というプロトコルについて 教えてください。 日本語訳をすると、「ファイル転送プロトコル」であることは 暗記しているのですが、実務上、どのような場面で使用 するのかが理解できておりません。 ファイルのアップロードやダウンロードに使うプロトコルであれば Vectorなどでソフトをダウンロードしたり、WindowsUpdateの最中 でも使われているのでしょうか? 企業などで、共有フォルダへファイルをアップロードするには、 Windowsであれば、コピー&ペーストで実現できますが、この場合 にもFTPが使われているのでしょうか? また、単にファイル転送という観点からすると、添付ファイルを E-mailで送受信するときにも、FTPが登場するのでしょうか? 不勉強で大変お恥ずかしいですが、FTPなるもののイメージが 把握できておりません。 FFFTPというソフトを、ホームページを更新する際に使用したことが ありますが、ローカルPCからサーバへファイルを更新する程度 しか作業したことがないため、仕組みがわかりませんでした。 とんちんかんな質問であることは、私自身よく心得ておりますが FTPの考え方をご教示くださいませ。

  • Perlにこのようなことはできるのでしょうか

    質問させていただきます 最近ちょっとcgiに触れているのですが、perlには次のようなことは可能なのでしょうか 可能ならばもう少し勉強して実際にそういった動きをするcgiを作ってみたく思っています 1.テキストボックスにUrlを入力してもらう 2.送信ボタンが押されたらUrlを参照して対象のページの内容を見にゆき、 3.その中を文字列検索して欲しい情報を持ってきて、表示する cgiに「できること」は様々なページに載っていたのですが、「できないこと」はさすがに載っておらず 2.の部分ができるのかできないのかがよくわかっておりません cgiで可能なのかどうか、もし不可能ならばそういった動作を行うのによいのはどんな言語なのか というのをご返答いただければと思います。

  • PICで周波数測定

    PIC(PIC18F47j53)のCCP(4~7)を使って、80KHzの周波数4Chを10msec毎に計測して、USARTで送信しようとしています。 CCPのタイマーはタイマ1を使い、内部のシステムクロック(12MHz)でカウントさせようとしています。 このような処理は可能でしょうか?