C・C++・C#

全26063件中1~10件表示
  • C++ listに関する2質問

    C++勉強中初心者でlistに関して2つ質問させてください。(1)C++2つのリスト間の足し算、(2)1つのリスト内の部分和の質問です。 リストを使って、2つのリスト間の足し算をしたいと思っています。 例えば以下のようにlist a={1, 2, 3}とlist b={2, 4, 6} をベクトルのように足して、 結果list c={3, 6, 9}を得たいです。 (1) まだ足し算まで行かない部分のプログラムですが、list aの第一要素は auto itr = a.begin(); で取り出せるものの、 list aの第一要素を保存したまま、別のリストlist bの第一要素を取り出すには どうすればよいのでしょうか? これができないと2つのリストの足し算は難しいと思っています。 (2)1つのリスト内で部分的に足し算をする場合(例えば、10要素あるリストの1番目と2番目、3番目と4番目、5番目と6番目、のように2個ずつ足した結果を得たい)に、例えば、上記 list a={1, 2, 3}で1番目と2番目だけ足したい時に、3番目を消去して全合計、でない方法はありませんか? 1つのリストから2要素を取り出す方法を知りたいです。 1番目ではなく例えば上記 list a={1, 2, 3}の2番目だけ取り出すには、 auto itr = a.begin(); for(int i = 0; i < 2; ++i) ++i; のようにするのだと勉強しましたが、1つのリストから2要素を取り出す方法が分からず伺っています。 基本的な質問ですみませんが、C++の裾野を広げると考えて、初心者を助けてください。 よろしくお願い申し上げます。

  • 配列がずれてしまう

    C言語初心者です。 二次配列を組んだのですが、初期では正常に配列に入ったのですが、 次回のループで入っていた筈の数値がズレてしまいます。 #include <stdio.h> #include <stdlib.h> int main(void) { FILE *fp; // FILE型構造体 char fname[] = "c:\\tmp\\test.txt"; int f1, f2, f3, f4, f5; int i,p,s; int r_table[1100][4]; //ファイル読み込み用構造体 for(i=0;i<1100;i++){ for(p=0;p<4;p++){ r_table[i][p]=0; } } fp = fopen(fname, "r"); // ファイルを開く。失敗するとNULLを返す。 if(fp == NULL) { printf("%s file not open!\n", fname); return -1; } i=0; while(fscanf(fp, "%d %d %d %d %d", &f1, &f2, &f3, &f4, &f5) != EOF) {//数字の格納 r_table[i][0]=f1; r_table[i][1]=f2; r_table[i][2]=f3; r_table[i][3]=f4; r_table[i][4]=f5; printf("%d %d %d %d %d\n", r_table[i][0],r_table[i][1],r_table[i][2],r_table[i][3],r_table[i][4]); i++; } fclose(fp); // ファイルを閉じる printf("\n"); for(s=0;s<10;s++){//数字の抜出 10回ループ printf("%d %d %d %d %d\n", r_table[s][0],r_table[s][1],r_table[s][2],r_table[s][3],r_table[s][4]); } return 0; } 実行結果 9 13 14 19 22 1 14 25 29 31 4 12 15 22 25 3 13 18 19 22 2 8 14 17 26 1 3 4 9 16 2 18 19 28 30 9 10 16 17 28 9 13 14 19 1 1 14 25 29 4 4 12 15 22 3 3 13 18 19 2 2 8 14 17 1 1 3 4 9 2 2 18 19 28 9 9 10 16 17 28 どうやら、r_table[s][4]にr_table[s+1][0]が入ってしまっているように見られます。 どの部分が間違っているのかご教示頂けたらと思います。

  • C++でのcsvファイル読み込みについて

    C++でのcsvファイル読み込みについて質問です. 読み込みcsvファイルの規模は300*1000として,その情報をdouble型の2次元配列に格納したいですが,ネットでいろいろ調べたり自分でコードを作ってみてもabort()has been calledなどいくつかエラーが表示されてしまい先に進めません. csvファイル名をa.csv,格納したい2次元配列をA[300][1000]などとしてサンプルコードを提供してくださいますと幸いです. 質問前に散々調べましたがプログラミング初心者でして今現在の力では対応できませんでした.申し訳ありませんが何卒ご教示お願いします.

  • C#から、C++作成dll内の関数を呼び出す方法

    C#から、C++で作成したdll内の関数を呼び出す方法は、以下の方法で実現できました。(メッセージボックスで "10" が表示されました) [C++側のヘッダファイル] #ifdef CPPDLL_EXPORTS #define CPPDLL_API __declspec(dllexport) #else #define CPPDLL_API __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ CPPDLL_API int fnCppDll(); #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ [C++側のソースファイル] CPPDLL_API int fnCppDll() { return 10; } [C#側] using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsFormsApp1 { public partial class Form1 : Form { [DllImport("CppDll.dll")] public static extern int fnCppDll(); public Form1() { InitializeComponent(); } private void buttonGo_Click(object sender, EventArgs e) { int n = fnCppDll(); MessageBox.Show(n.ToString()); } } } 今回お聞きしたいのは、int型ではなく、C++側で型を定義されたクラスのオブジェクト(の参照)を返す関数を、C#側から呼び出し、それをどうやってC#で受け取るかを教えていただきたいのです。 具体的には以下のように実装してみました。 [C++側のヘッダファイル] #ifdef CPPDLL_EXPORTS #define CPPDLL_API __declspec(dllexport) #else #define CPPDLL_API __declspec(dllimport) #endif class CPPDLL_API CCppDll { public: int data; CCppDll(void); }; #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ CPPDLL_API CCppDll& fnCppDll();// C#が参照渡しということで、参照を返すようにした。 #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ [C++側のソースファイル] CPPDLL_API CCppDll& fnCppDll() { CCppDll* a = new CCppDll(); return *a; } CCppDll::CCppDll() : data(11)// メンバーは 11 で初期化 { } [C#側] using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsFormsApp1 { // ビルドエラーが起きるないように、とりあえず、C++と同じ(ような)クラスを定義 public class CCppDll { public int data; } public partial class Form1 : Form { [DllImport("CppDll.dll")] public static extern CCppDll fnCppDll(); public Form1() { InitializeComponent(); } private void buttonGo_Click(object sender, EventArgs e) { int n; CCppDll cls = fnCppDll();// ※ n = cls.data; MessageBox.Show(n.ToString()); } private void buttonCancel_Click(object sender, EventArgs e) { Close(); } } } 実装しながらも、「これじゃあ、ダメだろうな。いかにもダメだな」と思った通り、上の※の部分で以下の例外が発生しました。 ------- 例外(ここから) ------- マネージド デバッグ アシスタント 'FatalExecutionEngineError' : 'ランタイムの重大なエラーが発生しました。エラーのアドレスは 0xcc9ff5a2、スレッド 0x36c8 です。エラー コードは 0xc0000005 です。これは CLR のバグであるか、またはユーザー コードのアンセーフまたは確認不可能な部分にバグがある可能性があります。このバグの一般的な原因には、スタックが壊れる可能性のある COM-interop または PInvoke のユーザー マーシャリング エラーが含まれています。' ------- 例外(ここまで) ------- 明らかに基本的なことが分かっていないことから起因するエラーと思われますが、具体的にどう実装すれば、正常に動きますか。(メッセージボックスで "11" を表示) よろしくお願いします。

  • UTF-8等のエンコードでテキストファイル書込

    Windowsデスクトップアプリケーション(C++)で簡易的なアプリを作っています。[OK]をクリックするとEditコントロールに入力されたテキストがテキストファイルとして保存されますが、メモ帳で開くと文字化けします。エンコードを変えて再度読み込んだところ、読み込むことができたエンコードはUTF-16 LEでした。 UTF-8等のエンコードで書き込みすることはできるんでしょうか。

  • MeshFilterは何を濾過する?

    unity で「あさって」な質問なのですが、例えば以下のように使われる「MeshFilter」ですが、Filterというと日本語では「濾過(ろか)器」とか「こし器」の意味じゃないですか。 では、MeshFilterは何を濾過しますか?(何を濾過しているイメージですか?) 下の例では、作成したメッシュをsharedMeshプロパティにセットしているだけで、「何かをこしている」感じはしないのですが・・・。 すみません、初心者なもので、概念的なところを教えていただければ、ありがたいです。 よろしくお願いします。 using UnityEngine; [RequireComponent (typeof(MeshRenderer))] [RequireComponent(typeof(MeshFilter))] public class OneTriangle : MonoBehaviour { [SerializeField] private Material mat; void Start() { var mesh = new Mesh(); mesh.vertices = new Vector3[] { new Vector3 (0, 1f), new Vector3 (1f, -1f), new Vector3 (-1f, -1f), }; mesh.triangles = new int[] { 0, 1, 2 }; mesh.colors = new Color[] { Color.white, Color.red, Color.green }; mesh.RecalculateNormals(); var filter = GetComponent<MeshFilter>(); filter.sharedMesh = mesh; var renderer = GetComponent<MeshRenderer>(); renderer.material = mat; } }

  • CASL2の数値から数字への変換

    現在課題の方で文字列2と3を数値での加算結果を出力する。という問題をやっています。 文字列を数値に変換し加算出来たのですが、加算した数値を文字列に戻せませんどうすれば良いですか?問題は↓に書きます。 IN SAI,LEN1 IN NASU,LEN2 LD GR1,SAI ??? ???←空白 自分の答えOR GR1,MASK2 LD GR2,NASU AND GR2,MASK1 ADDA GR1,GR2 ??? ??? ←ここが分からない ST GR1,KAJI OUT KAJI,LEN RET SAI DS 5 LEN1 DS 1 NASU DS 5 LEN2 DS1 KAJI DS 5 LEN DC 1 MASK1 DC #000F MASK2 DC #0030 END 解説お願いします

  • C言語のポインタの問題です。 解答お願いします。

    関数main()の3行目にある代入文 p = func1(q); で変数pに代入される値を求めなさい。 double func1 (double *p){ double s; for( s=0 : *p=-1: p++){ s += *p; } return(s); } int main(){ double p,q[]={-9,-7,-5,-3,-1} p=func1(q); }

  • c言語の問題です。解説と解答をお願いします

    (1) doube a[3][4]で宣言された2次元配列の要素a[y][x]に割り当てられるメモリのアドレス&a[y][x]を数式で表せ。x∈{0,1,2,3},y∈{0,1,2}である。 (2) 下記の宣言文によって複数個の配列要素に初期値を代入した。各配列要素に代入される値を説明しなさい。 char b[]={‘X’,’Y’,’Z’}; char c[]=“xyz”; char *d[]={“ONE”,”TWO”,”THREE”}; int e[3][2]={1,3,5,7,9,11}; お願いします。

  • c言語

    #include<stdio.h> #define N 5 int main(){ double x[] = {1, 3, 4, 5.5, 7}; double y[] = {3, 5, 6, 8, 11}; double a = 0.028; double eta = 0.001; double dEda; int ite, i ; for (ite = 1; ite <= 1000; ++ite){ dEda = 0; for(i = 0; i < N; i++){ dEda = dEda + (a * x[i] - y[i]) * x[i]; } a = if (ite == 1 || ite == 10 || ite == 100) printf("%4d: a = %.8lf\n", ite, a); } printf("%4d: a = %.8lf\n", 1000, a); return 0; } このプログラムの a = の部分にa-(dE/da)*((d^2)E/d(a^2))^-1を代入したいのですがうまくいきません。((d^2)E/d(a^2))の値を格納する変数を用意してちゃんと計算できるようにするにはどうすればよいでしょうか? 補足 dE/da = Σ(ax-y)*x (d^2)E/d(a^2) = Σx^2 という計算になります。