全2241件中261~280件表示
  • 原因が分かりません!

    C言語の課題です 行列AとBの積Cの結果を表示して、Cの最大値最小値を表示せよというものです。 Cは正しい結果なのですが、最大値と最小値が正しくありません。 なぜこうなるのか原因が不明なので指摘お願いします 期限が7月1日なので早急に解答を寄せてもらえれば嬉しいです #include <stdio.h> int main(void) { int i, j, k; int a[2][2] = { {1,8}, {3,9} }; int b[2][2] = { {4,7}, {2,1} }; int c[2][2] = {0}; int max, min; puts( "matrix A =" ); for(j=0; j<2; j++){ for(k=0; k<2; k++){ printf( "%3d" , a[j][k]); } printf( "\n" ); } puts( "matrix B =" ); for(k=0; k<2; k++){ for(i=0; i<2; i++){ printf( "%3d" , b[k][i]); } printf( "\n" ); } puts( "AとBの積\nmatrix C ="); for(j=0; j<2; j++){ for(i=0; i<2; i++){ for(k=0; k<2; k++) c[j][i] += a[j][k]*b[k][i]; printf( " %3d" , c[j][i]); } printf( "\n" ); } { if( j==0 && i==0 ){ max = c[j][i]; min = c[j][i]; } if( max < c[j][i] ) max = c[j][i]; if( min > c[j][i] ) min = c[j][i]; max = c[0][0]; min = c[0][0]; printf( "行列Cの最大値 : %d\n", max, c[j][i] ); printf( "行列Cの最小値 : %d\n", min, c[j][i] ); } return (0); }

  • int型のポインタ

    int型のようなメモリを大量に使用しないものでも、ポインタで変数宣言しているのをよく見かけますが、 なぜでしょうか? 私はCに慣れていないため、int型くらいのサイズだったら、なるべくならポインタを使わないで書いてもらった方が可読性が良いので、ポインタにするメリットがあまり感じられません。

  • 【なぜポインタを使うのか】

    私は、ポインタのメリット・デメリットを以下のように考えています。 ◆メリット メモリを多く確保しなければならないオブジェクトについて、コピー処理を行うことなく省メモリでインタフェースできる。 ◆デメリット ・関数内でしか使用しない非ポインタのローカル変数に比べ、  アクセス可能な場所が多くなってしまい、色んな箇所から値が変更されうる。(影響範囲の限定がしずらい) ・可読性が低くなる。(若いエンジニアはCの経験者は少なくっていくと思われるため、保守コストが若干割高になる) そのため、よっぽどメモリを多く使うようなオブジェクトでなければ、 (もしくは速度を重視する必要があるプログラムでなければ) 値渡しにしても良いのではと考えています。 しかし、度々目にするソースは、何でもかんでもポインタで処理しているものも多々見受けられます。 特に、int型のようなメモリを大量に使用しないものでも、ポインタで変数宣言しているケースもよく見ます。 なぜなのでしょうか? (熟練のC言語プログラマが、昔ながらの記述を踏襲しているというのはあるのかなと考えていますが)

  • 親クラスのポインタ、クラスを指定しないポインタ

    親クラス A (抽象メソッドX、Yの2つを持つ) と 子クラス B-1 (親はA、抽象メソッドX、Y、Zの3つを持つ) 子クラス B-2 (親はA、抽象メソッドX、Y、Wの3つを持つ) のように、子クラスでポリモーフィズムを実現しているとき、 クラスC   「実行時に、iniファイルに(1)と書かれていたら、B-1のクラスで実体化し、   iniファイルに(2)と書かれていたら、B-2のクラスで実体化する」  というクラスを作りたいです。 //////////////////////////////////////////////////////////////// 質問(1) その際、クラスCは、どうやってもZのメソッドや、Wのメソッドは書けない認識です。 (メソッド名もiniファイルから取るようにすれば別でしょうが。) この認識であっていますでしょうか? 質問(2) 逆に、XとYについては、それぞれ挙動の違う処理を行わせることができる認識です。 (クラスCで、親クラスAのポインタ型の変数を用意しておき、  そのポインタに、DLLのインスタンス化したものをいれておけば、  メソッドXとYについては実行可能という認識です)

  • コンピュータープログラミングの質問です。

    下記の方程式をニュートン法を用いて 解くプログラムをかんがえています。 X2はXの二乗です。 こちらの方法をおしえていただけるとうれしいです。 よろしくおねがいします。  x2-10exp(- x2 )= 0

  • 2次元vectorのerase?

    1行に4つのdouble型の値が書かれているファイルを読み込み、 iを行数として1行ずつphoton[i][0]~photon[i][3]に入れる。 photon[i][0]がある条件を満たしたらphoton[i][1]~photon[i][3]の値を photon[i-1][1]~photon[i-1][3]と photon[i+1][1]~photon[i+1][3]に 分けて加算し、photon[i][0]~photon[i][3]は消す(加算後の[i+1]が[i]に来るようにしたい)という作業をしたいのですが、消し方が良く分かりません。 やり方をご存知の方、回答お願いします。 以下のやり方では消えませんでした。vector<double>(4)のほうをeraseしてないからでしょうか。 ---------- #include <iostream> #include <fstream> #include <string> #include <list> #include <vector> using namespace std; int main(){ string str; ifstream ifs("h2o.csv"); ofstream ofs("h2o.txt"); int i = 0; double sum[3] = {0}; vector< vector<double> > photon(147, vector<double>(4)); double value[4] = {0}; for(;getline(ifs,str); i++){ sscanf(str.c_str(),"%lf,%lf,%lf,%lf", &value[0], &value[1], &value[2], &value[3]); photon[i][0] = value[0]; photon[i][1] = value[1]; photon[i][2] = value[2]; photon[i][3] = value[3]; sum[0] += value[1]; sum[1] += value[2]; sum[2] += value[3]; } for(vector< vector<double> >::iterator it = photon.begin(); it != photon.end(); it++){ if( (*it)[0] > 0.1){ cout << "delete!"; it = photon.erase(it); } cout << (*it)[0] << endl; } }

  • VC2010プログラミング

    formの中に自作のクラスを定義して使用したいのですが、どこに定義すればよいのかわかりません。 #pragma once #include "XXX.h" namespace FileRename { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Form1 の概要 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: ここにコンストラクター コードを追加します // } protected: /// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::Button^ button1; XXX^ instance = gcnew XXX(); protected: private: /// <summary> /// 必要なデザイナー変数です。 /// </summary> System::ComponentModel::Container ^components;   ・   ・   ・ } XXXクラスはこの場所で定義するのは間違いなのでしょうか?

  • VC2010プログラミング

    formの中に自作のクラスを定義して使用したいのですが、どこに定義すればよいのかわかりません。 #pragma once #include "XXX.h" namespace FileRename { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Form1 の概要 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: ここにコンストラクター コードを追加します // } protected: /// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::Button^ button1; XXX^ instance = gcnew XXX(); protected: private: /// <summary> /// 必要なデザイナー変数です。 /// </summary> System::ComponentModel::Container ^components;   ・   ・   ・ } XXXクラスはこの場所で定義するのは間違いなのでしょうか?

  • scanf()の順番

    printf("整数を入力せよ a:"); scanf("%d",&a); ・・・(1) printf("文字を入力せよ b:"); scanf("%c",&b); ・・・(2) として実行すると 例えば整数7を入力してエンターを押すと aにはちゃんと7が入るのですが bの入力を待たずに入力しないままプログラムが流れてしまいます。 (1)と(2)の順番を逆にすると1つずつ入力できるのですが、 なぜそうなるのか意味がわかりません。 あと試しに7yと入力してみたら7がa、yがbにちゃんと入りました。

  • ビルドから除外されたソースのコンパイル

    現在、Visual Studioを使用してある巨大なプロジェクトを開発しています。言語は C++です。 このプロジェクトには、ソースファイル(*.cpp)が全部で1000以上もありま す。百ではありません、千です。 そのため、プロジェクトをビルドするのに30分以上もかかり、開発効率が非常に悪 くなっています。 コンパイル・リンクとも相当の時間がかかっています。実感としては、cpp1ファイ ルにつきコンパイル1秒かかっています。 (なぜそんなに大量のcppが必要なのかというのはここでは置いといてください) そこで、次のような方法でビルド時間を短縮する方法を考案しました。 (1)ある一定数のソースファイルのプロパティで「ビルドから除外」とする。 (2) (1)でビルドから除外したソースファイルを全てインクルードしたソース ファイルを作成し、プロジェクトに追加する。 [1つにまとめたソースファイルのイメージ] #include "src001.cpp" #include "src002.cpp" #include "src003.cpp" ・・・ #include "src999.cpp" ソースファイルを1つにまとめてしまう事による弊害は全て解決したものとします。 以上により、プロジェクト内のソースファイル数を100以下にまで減らし、無事ビ ルド時間が大幅に短縮されました。 と、ここまでは良かったのですが、一つ問題があります。 それは、「ビルドから除外」したソースファイルを単独でコンパイル出来なくなって しまうのです。(ここでは、そういうことをしたいという要望があると思ってくださ い) ソリューションエクスプローラでソースファイルを右クリックし、出てくるメニュー リストの「コンパイル」が無効表示され選択できません。 もちろん、コンパイルコマンド(cl.exe)をコマンドラインから直接叩いてやればい くらでも出来ますが、出来ればIDEから簡単な操作で行いたいのです。 また、チームで開発しているため、コンパイルする時だけソースファイルの設定を変 更するというようなことはしたくないのです。 この問題に対して、何か良い手段はないでしょうか? プロジェクトを複数モジュールに分離して・・・ とか、 プリコンパイル済みヘッダを利用して・・・ とか、 リビルド時間を短縮するためソース間の依存関係を減らして・・・ というような、質問の内容を超える回答はご遠慮ください。 そのようなことは、十分ではないかも知れませんが検討済みです。

  • ビルドから除外されたソースのコンパイル

    現在、Visual Studioを使用してある巨大なプロジェクトを開発しています。言語は C++です。 このプロジェクトには、ソースファイル(*.cpp)が全部で1000以上もありま す。百ではありません、千です。 そのため、プロジェクトをビルドするのに30分以上もかかり、開発効率が非常に悪 くなっています。 コンパイル・リンクとも相当の時間がかかっています。実感としては、cpp1ファイ ルにつきコンパイル1秒かかっています。 (なぜそんなに大量のcppが必要なのかというのはここでは置いといてください) そこで、次のような方法でビルド時間を短縮する方法を考案しました。 (1)ある一定数のソースファイルのプロパティで「ビルドから除外」とする。 (2) (1)でビルドから除外したソースファイルを全てインクルードしたソース ファイルを作成し、プロジェクトに追加する。 [1つにまとめたソースファイルのイメージ] #include "src001.cpp" #include "src002.cpp" #include "src003.cpp" ・・・ #include "src999.cpp" ソースファイルを1つにまとめてしまう事による弊害は全て解決したものとします。 以上により、プロジェクト内のソースファイル数を100以下にまで減らし、無事ビ ルド時間が大幅に短縮されました。 と、ここまでは良かったのですが、一つ問題があります。 それは、「ビルドから除外」したソースファイルを単独でコンパイル出来なくなって しまうのです。(ここでは、そういうことをしたいという要望があると思ってくださ い) ソリューションエクスプローラでソースファイルを右クリックし、出てくるメニュー リストの「コンパイル」が無効表示され選択できません。 もちろん、コンパイルコマンド(cl.exe)をコマンドラインから直接叩いてやればい くらでも出来ますが、出来ればIDEから簡単な操作で行いたいのです。 また、チームで開発しているため、コンパイルする時だけソースファイルの設定を変 更するというようなことはしたくないのです。 この問題に対して、何か良い手段はないでしょうか? プロジェクトを複数モジュールに分離して・・・ とか、 プリコンパイル済みヘッダを利用して・・・ とか、 リビルド時間を短縮するためソース間の依存関係を減らして・・・ というような、質問の内容を超える回答はご遠慮ください。 そのようなことは、十分ではないかも知れませんが検討済みです。

  • SE・プログラマー・エンジニアの人

    こんにちは。 C言語のIDE(総合開発環境)は何を使っていますか? また、企業はその会社ごとによって環境が違うと思いますが、比率的に どの開発環境が一番使われていますか? 私はVisual studioが広範囲から見てかなり使われていると思いますが、 どう思いますか?? また、回答者様たちはどのIDEを使っていますか? ※私はただいま学生でCobolとアセンブラと来てC言語を学んでいます。 良い、開発環境がありましたら教えてください。 または、ソース(URL)などありましたら教えてください。 文章が汚くてすいません。

  • C++のプログラムの作成

    C++のプログラムを書いてみようと思い、 VisualStudio2012をインストールしたところです。 まずは「Hello world」からでよいのですが、 添付の画像の画面に出てくるメニューで、それぞれどのような違いがあるのかを知りたいです。 ・XAML(新しいアプリケーション、グリッドアプリケーション、分割アプリケーション、Direct2Dアプリケーション) ・Windowsストアアプリ(DLL、スタティックライブラリ、単体テストライブラリ) のそれぞれは、どのような違いがあるのでしょうか?

  • C++ 最適なメモリ確保

    画像処理をするために実験的にC++でプログラムを書いています。 malloc関数でBMP画像の画素位置を、画像画素分確保するだけのint型配列を作成するにはどうしたらよいでしょうか。 因みに、入力画像の解像度は640x480です。 一番左下の画素を(x,y)=(0,0)として考えています。 ある条件の画素に該当する画素座標を、下のStackX,StackYにx,y成分ごとに格納していくものです。 //////// int *StackX = (int *)malloc(sizeof(int)*100000); int *StackY = (int *)malloc(sizeof(int)*100000); //////// 上のように書くと、途中でクラッシュしてしまいます。 ですが、大目にメモリをとって //////// int *StackX = (int *)malloc(sizeof(int)*10000000); int *StackY = (int *)malloc(sizeof(int)*10000000); //////// で実行すると、最後まで動いてくれます。

  • C#についての質問です

    現在C#でソフトを開発しています ベースのフォームのボタンを押すと サブのフォームの位置情報を取得したいのですが Console.WriteLineで確認すると X軸とY軸の値が0になってしまします どうしたら位置情報を取得できるのでしょうか? よろしくお願いします。

  • c言語について

    身長と体重を読み込んで平均を表示するプログラムについて、 Aiba 160 59.3 KUrata 16251.6 Masaki 182 76.5 Tanaka 170 60.7 Tsuji 175 83.9 Washio 175 72.9 とういデータがテキストファイル"hw.dat"として保存されていなければならないのですが、保存の仕方が分からず、必ずファイルをオープンできません。 どうか保存の仕方を具体的なプログラムを交えながら教えていただきたいです><

    • ベストアンサー
    • noname#225287
    • C・C++・C#
    • 回答数3
  • ある特定も文字'#'が入力されるまで実行

    C言語である特定の文字#が入力されるまで 入力し、#が入力されたら、合計を出力するプログラム はどのようだと思われますか? #はgetchar()でとるのが最善でしょうか?

  • (char*)について

    ソースを見ている際に、 以下のようなソースがありました。 構造体Aのメンバ char x char y[5+1] の2つがあり、 ある関数のなかで構造体Aのポインタを引数で渡しており、 それをマクロに対して、 (1)マクロB("あいうえお",(char*)A->x, sizeof(A->x,) ) (2)マクロB("かきくけこ",A->y sizeof(A->y) ) という風にわたしていました。 そこで質問なのですが、(1)に対してだけ第2引数に、(char*)が ついていますが、これはどういった意味があるのでしょうか?

  • .Net順番待ち処理キューの作成

    .Netで、キューを作成して、そこに入れると入れた処理を実行し、その処理が終われば次の処理を実行するみたいなことがしたいです。 そのような便利なクラスは、ありませんか? 言語は、CLIでもC#でもいいです。 このクラスを使うべきとか、こんな仕組みを使うべきなどがあればご教授ください。 お願いいたします。

  • プログラミングの『C♯』で作れるソフトについて

     現在、30歳のサラリーマンです。この年になって、プログラミングに興味を持ち、ソフトをつくってみ たいと思いました。そして、ネットの情報より、初心者が始めやすいのは『C♯』だというとある情報を元 に、書籍を買ってみて、パソコンにVisual studioをインストールして、いろいろといじっているのですが、 全体をふと俯瞰してみて、いろいろな書籍を見たのですが、そもそも、『C♯』で、一体どのようなソフト がつくれるのかが、さっぱりわかりません。。参考書を見ても、例の記載がないのです。 どなた様か、『C♯』でどのような事ができるのか、どのようなソフトが作れるのか。 ご教授頂けたら幸いです。よろしくおねがい致します!