回答数
気になる
-
プログラミング
こんばんわ。大学2年生の者です。 この度授業にて成績シミュレータというものを作成しました。 生徒数を任意(ここではn人とす)で入力し、平均点、最高点、最低点を出力するという簡易的なものになっています。 ここで、最高点、最低点はどの生徒だったのか。というのが未だできていない課題です。 生徒は二次配列でa[0][?],a[1][?],a[2][?]のようになっており0,1,2それぞれに教科を振り分け、0~n-1番までの合計n人の成績を格納している形になっています。 ちなみにシミュレータなので得点は乱数で発生させており、for文とif文で最高、最低点を出力しました。 やり方やヒントを教えていただけると幸いです。 長文かつ語彙力不足で機嫌を悪くするよな文章構成になってしまい申し訳ないです。
質問日時: 2021/04/09 16:21 質問者: opoke
解決済
2
0
-
アルディーノをダウンロードすると課金するような画面が出ます。 どうすれば無料で使えるでしょうか? 詳
アルディーノをダウンロードすると課金するような画面が出ます。 どうすれば無料で使えるでしょうか? 詳しい流れを教えてください。
質問日時: 2021/04/09 05:53 質問者: captain06
解決済
2
1
-
ビジュアルスタジオについて質問です。 ツールボックスでボタンなどの部品が出ません。 なにか対処法など
ビジュアルスタジオについて質問です。 ツールボックスでボタンなどの部品が出ません。 なにか対処法などはありますでしょうか?
質問日時: 2021/04/08 08:46 質問者: ポストミリオネア
ベストアンサー
4
0
-
char*型からint型への変換について
プログラミングについての質問です。 プログラミング実行時のコマンドライン引数を参照して、第一引数に数字を入れた際(例:./a.out 7)に、入れた数字をchar*型からint型に変換したいのですがわかりません。 アドバイスお願いします。
質問日時: 2021/04/06 11:16 質問者: HRI37_18
ベストアンサー
5
0
-
C言語やC++言語でビット毎に値を読み込むにはどうしたらいいのでしょうか?
ポインタで1バイトごとに読み込むことに成功しましたが 例えば18bitごとに読み込むにはどうしたらいいのでしょうか?
質問日時: 2021/04/05 04:29 質問者: 門八郎
ベストアンサー
2
0
-
ベストアンサー
1
0
-
c言語について教えてください
二次元配列で、各配列の平均と最大の値を求めたいのですが上手くいきません。 どこをどのように直せば良いのでしょうか? #include <stdio.h> int main(void){ int i; float sum1,sum2,sum3,sum4; float max1,max2,max3,max4; float a[4][3]={{76.51,78.25,76.99},{78.71,78.16,77.12},{79.14,80.59,78.88},{73.31,73.35,74.95}}; for(i=0;i<3;i++){ sum1=a[0][i]+sum1; sum2=a[1][i]+sum2; sum3=a[2][i]+sum3; sum4=a[3][i]+sum4; } max1=a[0][1]; if(max1<a[0][2]){ max1=a[0][2]; } if(max1<a[0][3]){ max1=a[0][3]; } max2=a[1][1]; if(max2<a[1][2]){ max2=a[1][2]; } if(max2<a[1][3]){ max2=a[1][3]; } max3=a[2][1]; if(max3<a[2][2]){ max3=a[2][2]; } if(max3<a[3][3]){ max3=a[3][3]; } max4=a[4][1]; if(max4<a[4][2]){ max4=a[4][2]; } if(max4<a[4][3]){ max4=a[4][3]; } printf("<選手番号1>平均距離:%.2f,最大距離:%.2f\n",sum1/3,max1); printf("<選手番号2>平均距離:%.2f,最大距離:%.2f\n",sum2/3,max2); printf("<選手番号3>平均距離:%.2f,最大距離:%.2f\n",sum3/3,max3); printf("<選手番号4>平均距離:%.2f,最大距離:%.2f\n",sum4/3,max4); return 0; }
質問日時: 2021/03/31 16:00 質問者: C初心者
ベストアンサー
3
0
-
ファイルがオープンできない
8行目のfatalに制御が移行してしまいます。 何が原因でファイルを開けないのでしょうか。 fcntl.hはインクルードしています。 1 // この関数によって現在のプレイヤーのデータがファイルに書き込まれる。 2 // これは主にゲーム終了後にクレジット情報を更新するために用いられる。 3 void update_player_data(){ 4 int fd, i, read_uid; 5 char burned_byte; 6 fd = open(DATAFILE, O_RDWR); 7 if(fd == -1) 8 fatal("update_player_data()内で、ファイルのオープン中にエラーが発生しました。"); 9 read(fd, &read_uid, 4); 10 while(read_uid != player.uid){ 11 for(i=0; i < sizeof(struct user) - 4; i++) 12 read(fd, &burned_byte, 1); 13 read(fd, &read_uid, 4); } 14 write(fd, &(player.credits), 4); 15 write(fd, &(player.highscore), 4); 16 write(fd, &(player.name), 100); 17 close(fd); }
質問日時: 2021/03/30 11:35 質問者: 猫の被食者
ベストアンサー
9
0
-
このコードの処理を説明して頂けませんか?
以下のコードは直前の日曜日の日付を取得してくるのですが、 どういった理論で取得されているのかが疑問です。 DateTime.Now.AddDays( -1 * (7 + (DateTime.Now.DayOfWeek - DayOfWeek.Sunday)) Mod 7 ).Date.Day また、これを"直前"ではなく、"直後"の日曜日の日を取得するように 、変えることもできるのでしょうか。 すみませんが、よろしくお願いします。
質問日時: 2021/03/29 17:22 質問者: hanmakanma
ベストアンサー
2
0
-
C言語でwebに書き込みをする方法ってありますか?
例えば、c言語でGoogle翻訳の、文字を入れるところに、プログラムで書き込む事ってできるか教えて欲しいです、あと、出来れば、例として簡単なソースコードも教えて欲しいです
質問日時: 2021/03/27 13:22 質問者: 天才プログラマーをめざして.....
解決済
8
0
-
テキストエディタの行頭の次が空という正規表現
テキストエディタの行頭の次が空の場合を指定する定義方法を教えて頂けないでしょうか? 行頭というのは調べると ^ と指定することはわかったのですが…。 例えば以下の場合なのですが、 ============= あいうえお か ←ここ さしす たちつてと ←ここ ============= このように、行頭に続いて空を指定する場合には、どのように指定することができますでしょうか? また、逆に空以外の何かが存在する場合…、といった指定方法も可能でありましたら教えて頂けると助かります。これらを指定して置換の指定を行いたいと考えています。 どうぞ、宜しくお願いいたします。
質問日時: 2021/03/22 15:31 質問者: momonga_Q
ベストアンサー
1
0
-
C#からタスクマネージャーの【ファイル→新しいタスクの実行(N)】のダイアログを開きたい。
C#で書いている自作プログラムからタスクマネージャーの【ファイル→新しいタスクの実行(N)】のダイアログを開きたいと考えております。 理由は、 Eding-CNCというソフトを起動させたいのですが、 ① Process.Startを使用しても、Errorが起こり、立ち上がらない。 ② Process.Startで【ファイル名を指定して実行】を起動し、ウインドウハンドル検索後、SendMessageでコマンドを送信( -verb runasを付与 )して起動させようとしても、管理者として起動できない。 ③ 新しいタスクの実行(N)で、「このタスクに管理者特権を付与して作成します。」にチェックを入れて起動すると、きちんと起動する。 からです。 そこで、下記のプログラムを組んだのですが、タスクマネージャーの起動、タスクマネージャーのウインドウハンドル、タスクマネージャーのメニューハンドル( ファイル-インデックス番号 0 )の取得まではできたのですが、 1⃣【ファイル】のサブメニューにある【新しいタスクの実行(N)】を選択して、『新しいタスクの作成ダイアログ』を開く方法 2⃣「このタスクに管理者特権を付与して作成します。」にチェックを入れる方法 がわかりません。 ダイアログさえ開ければ、同じようにEditに起動コマンドを送信し、OK-Buttonにクリック操作をSendMessageで送ってあげれば、立ち上がってくれると考えております。 何卒ご教授願います。 ProcessStartInfo pInfo = new ProcessStartInfo(); pInfo.FileName = "taskmgr"; //pInfo.Verb = "RunAs"; pInfo.UseShellExecute = true; Process.Start(pInfo); System.Threading.Thread.Sleep(100); IntPtr hWnd = FindWindow("TaskManagerWindow", "タスク マネージャー"); if (hWnd != IntPtr.Zero) { //メニューハンドルをゲット int MenuhWnd = GetMenu(hWnd.ToInt32()); if (MenuhWnd != 0) { //サブメニューのハンドルをゲット 第2引数はインデックス番号 IntPtr SubMenuhWnd = GetSubMenu((IntPtr)MenuhWnd, 0); ここから、わかりません。 1⃣【ファイル】のサブメニューにある【新しいタスクの実行(N)】を選択 して、『新しいタスクの作成ダイアログ』を開く } }
質問日時: 2021/03/18 18:41 質問者: ykon-kashi
ベストアンサー
8
0
-
C言語のファイル入出力について教えてください。
ファイルの入出力について勉強しているのですが、何度実行しても出力される物が文字化けしてしまいます。(身長と体重を読み込んで平均を出力します) hw.txtはメモ帳で作成してドキュメントというフォルダに作成してあるのですがそれが間違いなのでしょうか? #include <stdio.h> #include <stdlib.h> int main(void){ FILE *fp; int i; int ninzu=6; char name[100]; double height,weight; double hsum,wsum=0.0; fp=fopen("hw.txt","r"); if(fp==NULL){ printf("ファイルオープンできない\n"); exit(1); } for(i=0;i<ninzu;i++){ fscanf(fp, "%s%lf%lf", name,&height,&weight); hsum+=height; wsum+=weight; printf("%-10s %5.lf %5.lf\n", name, height, weight); } printf("--------------\n"); printf("平均 %5.lf %5.lf\n", hsum/ninzu, wsum/ninzu); fclose(fp); return 0; }
質問日時: 2021/03/16 15:56 質問者: C初心者
ベストアンサー
5
0
-
WindowsAPIプログラムをgccでコンパイルしたら...
C言語でWindowsAPIプログラムを書き、コンパイルしたら文字化けしてしまいました。色々調べたのですが、記事がありませんでした。治す方法を教えてください。ソースコードや環境は以下のとうりです。 OS: Windows 10 コマンドプロンプトの 文字コード: utf-8 ソースコードの 文字コード: utf-8 コンパイラ: MinGWのgcc ソースファイル名: source.c ソースコード: 1 : #include <Windows.h> 2 : 3 : int WINAPI WinMain( 4 : HINSTANCE hInstance, 5 : HINSTANCE hPrevInstance, 6 : LPSTR lpCmdLine, 7 : int nCmdShow 8 : ) 9 : { 10: MessageBox(NULL, TEXT("こんにちは"), TEXT("メッセージ"), MB_OK); 11: return 0; 12: } 13: コンパイル方法: > gcc -w source.c -o hello.exe 実行方法: > hello 誰か教えてください!
質問日時: 2021/03/16 13:42 質問者: Goo_TRiiiiiiii
ベストアンサー
2
2
-
mallocについて書かれてあるC言語本はありますか
C言語のmallocについて学びたいのですが、本の方がいいでしょうか、それともインターネットで学べるでしょうか。ご教示ください。
質問日時: 2021/03/13 21:38 質問者: tomi1972
ベストアンサー
1
0
-
ド・モルガンの法則について(プログラミング,C#)
中学生ですが質問させていただきます 今C#を学んでいるのですが(コードは簡略化) !(x%3!=0 || x%5!=0) というものは (x%3==0 && x%5==0) と同じですよね この場合、!←このマークが||にもかかっている(!により||が&&になっている)と考えていいのでしょうか(適用手順は知っています) 語彙力が無くて申し訳ないのですが、ご回答をいただけると幸いです
質問日時: 2021/03/12 22:42 質問者: あいうえんえん
解決済
2
0
-
C言語とのリンクでSegmentation faultが発生してしまう件
(mainadd.c) #include <stdio.h> void intadd(int, int, int*); void main() { int a,b,c; printf("Enter a,b : "); scanf("%d %d", &a, &b); intadd(a, b, &c); printf("Answer = %d\n", c); } (intadd.s) .file "intadd.s" .text .align 4 .globl intadd .type intadd,@function intadd: pushl %ebp movl %esp, %ebp bpoint1: movl 16(%ebp), %ebx movl 8(%ebp), %edx addl 12(%ebp), %edx movl %edx, (%ebx) bpoint2: # movl %ebp, %esp popl %ebp ret (comfile) break main display/i $pc display/x $ebx display/x $edx display/x $esp display/x $ebp >gcc -m32 -o mainadd mainadd.c intadd.s >gdb -x comfile mainadd として、 a=1 b=2 を入力してデバッグを行うと、Cのprintf("Answer = %d\n", c);の中で、Segmentation faultがおきてしまいます。一応、以下に示すように%ebxが示すアドレス(cのアドレスが入っている)には、0x3(cの値)が正しく入っている様なのですが、何故か以下の箇所でSegmentation faultが起きてしまう理由が分かりかねています。似たようなご経験のある方で、アドバイス頂けると助かります。 (ここから途中からのデバッグ情報です) 0x56556030 in printf@plt () 1: x/i $pc => 0x56556030 <printf@plt>: jmp *0xc(%ebx) 2: /x $ebx = 0xffffd834 3: /x $edx = 0x3 4: /x $esp = 0xffffd81c 5: /x $ebp = 0xffffd848 (gdb) si 0xffffd860 in ?? () 1: x/i $pc => 0xffffd860: add %eax,(%eax) 2: /x $ebx = 0xffffd834 3: /x $edx = 0x3 4: /x $esp = 0xffffd81c 5: /x $ebp = 0xffffd848 (gdb) si 0xffffd862 in ?? () 1: x/i $pc => 0xffffd862: add %al,(%eax) 2: /x $ebx = 0xffffd834 3: /x $edx = 0x3 4: /x $esp = 0xffffd81c 5: /x $ebp = 0xffffd848 (gdb) si 0xffffd864 in ?? () 1: x/i $pc => 0xffffd864: hlt 2: /x $ebx = 0xffffd834 3: /x $edx = 0x3 4: /x $esp = 0xffffd81c 5: /x $ebp = 0xffffd848 (gdb) si Program received signal SIGSEGV, Segmentation fault. 0xffffd864 in ?? () 1: x/i $pc => 0xffffd864: hlt 2: /x $ebx = 0xffffd834 3: /x $edx = 0x3 4: /x $esp = 0xffffd81c 5: /x $ebp = 0xffffd848 (gdb) x/x $ebx 0xffffd834: 0x00000003
質問日時: 2021/03/11 14:23 質問者: tmiyoshi
ベストアンサー
5
0
-
組み込み マイコン 部品をミスミなどで購入し、装置を作ってみたいです。作りたいのは、自動水遣り装置で
組み込み マイコン 部品をミスミなどで購入し、装置を作ってみたいです。作りたいのは、自動水遣り装置です。(水道にセットして指定の時間に水を流して植物に水やり) プログラムも自分で作ってみたいです。マイコンを使い作れますか? 作り方、価格はどのくらいで作れるのかなど、わかれば教えていただけますか。 また、参考になるサイトなどありましたらお願いいたします。 プログラムはC#とVBの経験しかないのですが、必要なら他のも学ぼうと思います。 よろしくお願いいたします。
質問日時: 2021/03/11 07:26 質問者: 0987654321adgjmptw
ベストアンサー
4
0
-
Visual Studio community 2019のエラー
Linuxで動くソフトを作ってたんですが、何故かLinuxでのソケット通信に使うライブラリにエラーが起こってしまいました。どうしたらいいですか?ちなみに、Linuxではエラー無しでコンパイルできたのと拡張子は.cppでした。
質問日時: 2021/03/10 17:54 質問者: ware255
ベストアンサー
2
0
-
アナログ時計の短針(時間用針)のみが正常に動かない
//Visual C#2019でアナログ時計の製作練習をしている初心者です //下記のプログラムで分針、秒針は正常に動作するのですが短針(時間針)のみが正常に動かず、1時、 //3時等の「正時」のみ動きます //どうしても原因が分からず、詳しい方の力をお借りしたいと思います。 //また、改善点が有りましたら具体的に教えてください。(timer1_Tick_1の中にあるInvalidate(); //の挿入位置が正しいか、これを使うことが妥当か?など) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace clock_vc { public partial class Form1 : Form { public Form1() { InitializeComponent(); this.DoubleBuffered = true;//秒針が動く時のチラツキを止める } //各種処理を関数側に渡す private void Form1_Paint(object sender, PaintEventArgs e) { //円盤上に1~12の目盛り表示する memori_hyoji(e); //針を動かす hari_move(e); } //年月日、時刻の表示処理(始まり) private void timer1_Tick_1(object sender, EventArgs e) { Invalidate();//これがないと針が動かないのでここに入れてみたが挿入位置が正しいかどうか分からない) } //円盤上に1~12の目盛り表示する(始まり) void memori_hyoji(PaintEventArgs e) { //円盤上に1~12の目盛り表示する(始まり) Font myfont = new Font("MS P ゴシック", 12); // 文字盤1~12の数字の大きさを12として初期設定 SolidBrush mybrush1 = new SolidBrush(Color.Red); double x3,y3;//文字表示位置の座標 int n; const double pii = 3.1415926535; for (n=1; n <= 12; n++) { x3 = 138 + 110 * Math.Sin((pii / 180) * n * 30); //文字盤1~12の数字のx座標、30°ピッチ y3 = 165 - 110 * Math.Cos((pii / 180) * n * 30); //文字盤1~12の数字のy座標、30°ピッチ e.Graphics.DrawString(n.ToString(), myfont, mybrush1, (int)x3, (int)y3); //文字盤1~12の数字の描画 } } //針を動かす(始まり) void hari_move(PaintEventArgs e) { DateTime dt = DateTime.Now; //時分秒の取り出しと針を動かす double x4, y4;//秒 // 各座標を表す変数 double x5, y5;//分 double x6, y6;//時 int ss, mm, hh;//秒、分、時 const double pi = 3.1415926535; //秒針(始まり) 円盤の中心を(145,175)とする ss = dt.Second; // 秒を取り出す x4 = 145 + 115 * Math.Sin((pi / 180) * (ss * 6)); //秒針先端のx座標・・・1secで6°進む y4 = 175 - 115 * Math.Cos((pi / 180) * (ss * 6));///'秒針先端のy座標//160-115* Pen mypen2 = new Pen(Color.Gray, 2); e.Graphics.DrawLine(mypen2, 145, 175, (int)x4, (int)y4); // 秒針を表示し、動かす145,165 //秒針(終わり) //長針(始まり) mm = dt.Minute; //分を取り出す x5 = 145 + 100 * Math.Sin((pi / 180) * ((mm * 6) + (ss * 6 / 60))); //長針先端のx座標・・・1minで6°進む y5 = 175 - 100 * Math.Cos((pi / 180) * ((mm * 6) + (ss * 6 / 60)));//'長針先端のy座標 Pen mypen3 = new Pen(Color.Black, 8); mypen3.EndCap = LineCap.Triangle; // 針先を三角形にする e.Graphics.DrawLine(mypen3, 145, 175, (int)x5, (int)y5);//長針を動かす //長針(終わり) //短針(始まり) hh=dt.Hour; //時を取り出す x6 = 145 + 75 * Math.Sin((pi / 180) * ((hh * 30) + (mm * (30 / 60)) + ss * (30 / 3600)));// '短針先端のx座標・・・1hrで30°進む y6 = 175 - 75 * Math.Cos((pi / 180) * ((hh * 30) + (mm * (30 / 60)) + ss * (30 / 3600)));// '短針先端のy座標 Pen mypen4 = new Pen(Color.Black, 12); mypen4.EndCap = LineCap.Triangle; //針先を三角形にする e.Graphics.DrawLine(mypen4, 145, 175, (int)x6, (int)y6); //短針(終わり) } //針を動かす(終わり) } }
質問日時: 2021/03/10 15:57 質問者: seto46kun
ベストアンサー
1
0
-
C言語のプログラムにエラーが出ます。
「解きながら学ぶC言語(柴田望洋)」の問題2-3をやっています。「読み込んだ二つの整数値の比率を百分率で表示するプログラムを作成せよ」とのことで、以下のように組みました。 #include <stdio.h> int main(void) { int x, y; puts("二つの整数を入力してください。"); printf("整数x:"); scanf("%d", &x); printf("整数y:"); scanf("%d", &y); printf("xの値はyの%d%%です。\n" 100 * x / y); return 0; } エラーメッセージは10行目に出ています。(%の記号は半角です。)
質問日時: 2021/03/09 21:37 質問者: tomi1972
ベストアンサー
5
0
-
C言語での奇数の和
学校からの課題で1からのnまでの奇数の和を求めて表示せよ。と出されたのですがとちゅうでつまずいてしまったのでどなたか教えてください! できればFor文でお願いします 言語はCです!
質問日時: 2021/03/09 13:39 質問者: とある専門学生
ベストアンサー
1
0
-
アンリアルエンジンをワンツーマンで個人指導してくれる場所はありますか?
アンリアルエンジンをワンツーマンで個人指導してくれる場所はありますか?
質問日時: 2021/03/07 07:16 質問者: captain06
ベストアンサー
2
1
-
C言語 構造体について
typedef struct { double dev[5]; }Deviation; Deviation data[50]; 上のdata[0].dev[0]からdata[50].dev[5]まで、全部を0としたいのですがどうすればできますか? Deviation data[50] = { {{0,0,0,0,0}}, {{0,0,0,0,0}}, : : としていくのは現実的でないので、、、
質問日時: 2021/03/05 21:13 質問者: miyabiishiko
ベストアンサー
1
0
-
C言語 平均点を求める
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <ctype.h> typedef struct { char FamilyName[32]; char FirstName[32]; int Score[5]; }Student; int main(void) { int sum[5]; double ave[5]; int i=0, m=0; Student data[2] = { { "nobi", "nobita", { 25, 10, 40, 0, 15 } }, { "minamoto", "shizuka", { 75, 60, 85, 90, 70 } }, }; for( i = 0; i < 5; i++ ) { sum[i] = data[0].Score[i] + data[1].Score[i]; } ave[0] = sum[0]/2; ave[1] = sum[1]/2; ave[2] = sum[2]/2; ave[3] = sum[3]/2; ave[4] = sum[4]/2; printf("平均点: %2.2f %2.2f %2.2f %2.2f %2.2f\n",ave[0], ave[1], ave[2], ave[3], ave[4]); } 上記は2人の生徒の平均点を求めるプログラムです。 もし2人でなくもっと多くの人数がいる場合は、 for( i = 0; i < 5; i++ ) { sum[i] = data[0].Score[i] + data[1].Score[i]; } の部分をdata[m]としてどうすればよいのでしょうか? 下記で試したところ変な数ができてしまいます、、 for( i = 0; i < 5; i++ ) { for( m = 0; m < 50; m++ ) //50人設定 { sum[i] += data[m].Score[i]; } }
質問日時: 2021/03/05 19:21 質問者: miyabiishiko
ベストアンサー
4
0
-
VisualStudioからVScodeへの移植
C#を1年ほどいじっている経験しかない初心者です。 VisualStudio(v16.4.5)でFormアプリを作成していますが、このソースコードをVScodeへ移植するのは難しいでしょうか? VisualStudioでのアプリは動作しています。アプリの機能はHTTPサーバーと印刷ですがソースコードはネットから拾って来たもので中身はほとんど理解できていません。
質問日時: 2021/03/05 18:08 質問者: yukimesan
ベストアンサー
8
0
-
ベストアンサー
1
0
-
c# Windows Form App テーブルレイアウトパネルの枠線を太線、黒にしたいです。 使っ
c# Windows Form App テーブルレイアウトパネルの枠線を太線、黒にしたいです。 使ったことないのですが、カスタムコントロールを使用する必要があるのでしょうか? よろしくお願いいたします。
質問日時: 2021/03/04 04:37 質問者: 0987654321adgjmptw
ベストアンサー
1
0
-
C言語 構造体の名前欄?を小文字から大文字に変換する方法
typedef struct { char FamilyName[32]; char FirstName[32]; int Score[5]; } Student; void str_toupper(???) { for(i=0;i<50;i++){ //生徒50人いる設定 int m; while (data[i].FirstName[m]) { data[i].FirstName[m] = toupper(data[i].FirstName[m]); m++; } 構造体の名前欄?を小文字から大文字に変換する方法が知りたいです。 文字列を大文字変換する方法はわかるのですが、構造体になるとどうすればよいかわかりません。 こうかなと、上のようにがんばってみましたが、全然できませんでした。
質問日時: 2021/03/04 01:27 質問者: miyabiishiko
ベストアンサー
3
0
-
C言語のif文について教えてください
c言語の勉強をしていて、if文について1つ疑問があります。 それは、if(x<=y<=z)の形(x、zは数です。)で上手く作動しない理由です。 if(x<=y)やif(y<=z)の形では作動するのに、なぜ上手く作動しないのでしょうか? 初歩的な質問ですいません。
質問日時: 2021/03/03 16:43 質問者: C初心者
ベストアンサー
8
0
-
スタック破壊の上手な見つけ方を教えてください
下記のようなコードはスタック破壊します。 void my_substr(char **dst, char *str, size_t oft, size_t len) { *dst = (char *)malloc(len + 1); memcpy(*dst, (str + oft), len); *(dst + len) = '\0'; return; } main()から直接呼んだ程度ならその場でセグメント違反となってくれるのでいいのですが、呼ばれる位置が深いと、(処理系によるかもしれませんが)上位関数のスタック領域を上手に壊してくれて別の箇所で異常動作しているように見えるため、原因特定が困難になる場合があります。 このようなバグを簡単に見つけられるような方法や、最近のLinuxで手軽に使えるツールなどを教えてください。 #サンプルコードそのものに対する突っ込みはご容赦ください、説明のため簡略化しているだけですので
質問日時: 2021/03/02 09:54 質問者: k-841
解決済
3
0
-
C言語 構造体を使って集計する
Yamada Hanako 56 Suzuki Taro 79 : : というような計50人のテスト結果が書いてあるファイルがあったとして(ファイル名tensu.txt) このファイルからデータを読み込んで平均点や偏差値などを求めて別ファイルsyukei.txtに出力したいです。このとき構造体を使って求めたいのですが、まずファイルデータを構造体に入れる?ところから分かりません。ソースコードと一緒に詳しく説明お願いします。
質問日時: 2021/03/01 12:40 質問者: miyabiishiko
ベストアンサー
1
0
-
C言語 構造体
数人分の点数データがあります。構造体には氏名と点数が書いてあります。これを名前順に並べ変えたいのですが、どのようにすればよいのでしょうか?初心者で調べてみてもよくわかりません。
質問日時: 2021/02/28 15:55 質問者: miyabiishiko
解決済
4
0
-
c# のwindowsフォームアプリケーションでフォーム①に配置されたリッチテキストボックスのフォン
c# のwindowsフォームアプリケーションでフォーム①に配置されたリッチテキストボックスのフォント大小や色などを変更するメニュー/機能をToolStripで作成しました。 ここまでは良いのですが、別のフォーム②に配置したリッチテキストにもフォーム①のToolstripを使用したい(使いまわしたい)と思いました。しかし方法がわかりません。Toolstripをユーザーコントロールみたいに共通化されたコントロールとして扱う方法はないでしょうか。ご回答よろしくお願い致します。
質問日時: 2021/02/26 21:43 質問者: monapiii
ベストアンサー
1
0
-
C言語 乱数を階級分け
乱数を使って得た数値50個を階級分けしたいのですが, やりかたがわかりません。どなたか教えていただけたら嬉しいです。 乱数は for(i=0;i<50;i++){ size[i]=rand()%10+rand()%10; } で作成しこれを10刻みで何個ずつあったかわけたいです
質問日時: 2021/02/24 14:12 質問者: drops10
ベストアンサー
2
0
-
c# string型の変数に、ダブルクォーテーション混じりの文字列を入れるには? どう書けばいいです
c# string型の変数に、ダブルクォーテーション混じりの文字列を入れるには? どう書けばいいですか? ""2個重ねるやり方と、¥"エスケープのやり方でエラーになってしまいます。
質問日時: 2021/02/23 13:24 質問者: 0987654321adgjmptw
ベストアンサー
1
0
-
C言語 サイコロ 2つの値を返せない
プログラム超初心者です C言語についてです。 サイコロを振る関数を作り、その関数を二回呼び出し丁半判定をする プログラムが作りたいのですが、毎回二回振ったサイコロの値が同じになってしまいます。 おそらくsaikoro関数の戻り値がsで固定されていることが原因かと思うのですが、解決策がわかりません。以下自作のプログラムです。 int main(){ chohan(); return(0); } int saikoro(){ srand( (unsigned int)time(NULL) ); rand(); int s; s=rand()%6+1; return(s); } void chohan(){ int a,b; a=saikoro(); b=saikoro(); printf("%d\n%d",a,b); }
質問日時: 2021/02/23 13:05 質問者: drops10
ベストアンサー
1
0
-
#include <stdio.h> int main(void) { char str[] = "
#include <stdio.h> int main(void) { char str[] = "0123456789"; printf("%d\n", str[2] + str[4]); } なぜ、配列の書き方が char str[] = "0123456789"の場合は str[2] + str[4]の足し算が50+52で102と10進数で出るのでしょうか? そういうルールなのでしょうか? てっきり答えは6と思っていました。 また、 #include <stdio.h>int main(void) { char str[] = { 1,2,3,4,5 }; printf("%d\n", str[1] + str[3]); } の char str[] = { 1,2,3,4,5 }; とした場合は6と出ます。 char str[] = "0123456789";とchar str[] = { 1,2,3,4,5 };は同じ書き方だと思っていましたが、その文字列を扱う変数によっては、例えば配列などによっては扱いが違うと今更ながらわかりました。
質問日時: 2021/02/22 11:50 質問者: captain06
解決済
4
0
-
sscanfとscanfの違いがよくわからないのですが、簡単に優しく教えて下さい。 お願い致します。
sscanfとscanfの違いがよくわからないのですが、簡単に優しく教えて下さい。 お願い致します。 また、scanfは入力された文字列を読み込みますが、sscanfは文字列を他の変数、例えばaその文字列の先端のアドレスを渡したり、文字の1を数値としてのに変換すると習ったのですがあっていますか? 補足ですいません。 sscanfに関する説明不足と関数atoiについて。 sscanfは1文字を数値、すなわち、文字1を数値1に変換してそのaのアドレスを得て、aに渡すのですよね。 ここまでは理解しました。 ですが、 sscanfは1文字を数値、すなわち、文字1を数値1に変換 に関しては関数atoiと違いがわかりません。 プログラムの書き方によりどっちも使えて、 例えば、文字1(文字コード)を(1の文字コードの)数値49とかではなく、まんま数値の1に出来るのでしょうか?
質問日時: 2021/02/21 19:17 質問者: captain06
ベストアンサー
2
1
-
#include <stdio.h>int main(void) { char str[] = "0
#include <stdio.h>int main(void) { char str[] = "0123456789"; int a, b; sscanf(str + 2, "%1d", &a);//3番目の数字があるアドレスを指定して、1文字だけ数値として読み取る sscanf(str + 5, "%1d", &b);//6番目の数字があるアドレスを指定して、1文字だけ数値として読み取る printf("%d\n", a + b); } のプログラムの%1dってなんですか? また、sscanf(str + 2, "%1d", &a)は3番目の数字があるアドレスを指定して、1文字だけ数値として読み取るのような働きをするのですか? sscanfは文字としての2を数字としての2に変える働きもあるのでしょうか? どこで文字としての2が数字としての2になったのか、どうか詳しく教えて下さい。 本で読んだときはあるアドレスからヌルになるまでを収納すると聞きました。なぜ限定的に1文字だけ数値として扱えるのでしょうか?
質問日時: 2021/02/21 15:33 質問者: captain06
ベストアンサー
7
0
-
#include <stdio.h> int main(void) { char str[] = "
#include <stdio.h> int main(void) { char str[] = "0123456789"; int i = 0; int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; num = atoi(str); //文字としての0ではなく、数値としての0を表示するには? printf("str[i] = '%d'\n", str[4]-48); printf("*(str + i) = '%c'\n", *(str + i)); printf("&str[i] = %p\n", &str[i]); printf("str + i = %p\n", str + i); printf("&*(str + i) = %p\n", &*(str + i)); printf("int型変数numの値は: %d\n", num); i = i + 3; num2 = atoi(str[i]); i = i + 3; num3 = atoi(str[i]); num4 = num2 + num3; printf("int型変数num4の値は: %d\n", num4); } において、2+5をしてら7をnum4で表示したいのですが、なぜか表示されません。 どなたか原因はわかりますでしょうか? あるいはなにが足りないのでしょうか?
質問日時: 2021/02/21 13:32 質問者: captain06
ベストアンサー
2
0
-
苦しんでCを読んでchar型は文字列しか表せないとわかっていますが、 例えばchar str[] =
苦しんでCを読んでchar型は文字列しか表せないとわかっていますが、 例えばchar str[] = "0123456789";を文字としての123456789ではなく数値としての123456789として表示することは可能なのでしょうか? 多分、char型をint型に変えるなどしないといけないのかなとは思っています。
質問日時: 2021/02/21 10:56 質問者: captain06
ベストアンサー
7
0
-
char* p char p &pの違は char *pはポインタでアドレスを指定したり扱う。(その
char* p char p &pの違は char *pはポインタでアドレスを指定したり扱う。(その後はpと置くだけでアドレスを扱える。) char pはただのpという文字や文字列を扱う変数 &pはchar *pで扱われたアドレスをprintfなどで表示するさいに使わられる。 であるため、 また、char* p = strchr(str, '\0');で、なぜ以下のプログラムでchar *pかというと関数strchr(str, '\0');の返り値のアドレスを得るためですね #include <stdio.h>#include <string.h>int main(void) { char str[] = "12345""\0""67890" ; char* p = strchr(str, '\0');//★strchr関数によりchar* pはポインタpとして扱われ、上と同じような処理になる //しかしstrchr関数によりchar* pでありながらポインタのアドレス、ではなくアドレスの指す数値を扱うというのに違和感があります。 //これはstrchr関数がそういうものだからと納得するしかないのでしょうか? printf("|%s|\n", str); printf("|%s|\n", p + 1); *p = '!'; printf("|%s|\n", str); } 合っているでしょうか?
質問日時: 2021/02/19 03:41 質問者: captain06
ベストアンサー
5
0
-
#include <stdio.h> #include <string.h>int main(voi
#include <stdio.h> #include <string.h>int main(void) { char str[] = "12345""\0""67890"; char* p = strchr(str, '\0');//★strchr関数によりchar* pはポインタpとして扱われ、上と同じような処理になる //しかしstrchr関数によりchar* pでありながらポインタのアドレス、ではなくアドレスの指す数値を扱うというのに違和感があります。 //これはstrchr関数がそういうものだからと納得するしかないのでしょうか? printf("|%s|\n", str); printf("|%s|\n", p + 1); *p = '!'; printf("|%s|\n", str); } をcやc++でデバックしたら、char* p = strchr(str, '\0');の部分がcharと*pになると思ったらchar*とpに分かれていました。 理由がわかりません。 どなたかわかる方はいますでしょうか? また、char*型とはポインタ型のcharだとわかりました。しかし、だからなんだという感じで、ポインタ型のcharとはなんなのですが? どうか基礎を固めたいのでどうかよろしくお願い致します。
質問日時: 2021/02/19 01:51 質問者: captain06
ベストアンサー
3
0
-
#include <stdio.h> #include <string.h> int main(vo
#include <stdio.h> #include <string.h> int main(void) { char str[] = "12345""\0""67890", * p;//★ここでpを先頭のアドレスの文字コードを扱う定義にした。 //しかしなぜこのように書けたのか正直わかりません。というのもchar str[]は「文字列の文字コード」のデータを扱う //わけじゃないですか。ってことは* p自体もアドレスではなくアドレスの「先頭の文字コード」のデータを扱うため //これでもうまくいくのかなと自己解釈しています。 p = strchr(str, '\0');//strchrを扱う際はstrの文字列の先端のアドレスが入る。そして、アドレスを+1していき //'\0'を見つけたら、その'\0'のアドレスをポインタpに渡す。 printf("|%s|\n", str);//文字列の最初のアドレスから'\0'となった部分までがstrにとなるので //printfより先頭のアドレスから'\0'までの文字列が入る。そして表示される。 printf("|%s|\n", p + 1);//そのポインタpが(printfのp + 1により)+1されたことで'\0'が今現在の //ポインタの指すアドレスとなり、そのアドレスからnullまでを表示した。 *p = '!';//そして、今現在のポインタが指すアドレスは'\0'になったアドレスであるため、 *p = '!' //により'\0'は'!'に置き換えられた。 printf("|%s|\n", str);//そのため結果が|12345!67890|となる。 } //以下は元のプログラムです。 /*#include <stdio.h> #include <string.h> int main(void) { char str[] = "12345""\0""67890"; char* p = strchr(str, '\0');//★strchr関数によりchar* pはポインタpとして扱われ、上と同じような処理になる //しかしstrchr関数によりchar* pでありながらポインタのアドレス、ではなくアドレスの指す数値を扱うというのに違和感があります。 //これはstrchr関数がそういうものだからと納得するしかないのでしょうか? printf("|%s|\n", str); printf("|%s|\n", p + 1); *p = '!'; printf("|%s|\n", str); }*/ 黒い星が付いている部分が自信がない疑問部分です。リファレンスを読みましたが疑問が残りました。 どうかよろしくお願いします。
質問日時: 2021/02/18 18:01 質問者: captain06
ベストアンサー
1
0
-
#include <stdio.h> #include <string.h>int main(voi
#include <stdio.h> #include <string.h>int main(void) { char str[] = "12345""\0""67890"; char* p = strchr(str, '\0'); printf("|%s|\n", str); printf("|%s|\n", p + 1); *p = '!'; printf("|%s|\n", str); } 上のプログラムの char* p = strchr(str, '\0'); のpに*がついていますが、これはpに掛かっているのではないですよね? 個人的にヌルになる手前から最初の文字列の先頭のアドレスが渡せれば良いと考えたので char p = strchr(str, '\0');で良いとしましたがエラーが起きます。 なぜ今回char*が必要なのでしょうか? strchrのせいでしょうか?なぜstrchrを使うだけ*pになるのか知りたいです。
質問日時: 2021/02/18 15:21 質問者: captain06
ベストアンサー
5
0
-
char * p char *pは何が違うのでしょうか また、#pragma warning(dis
char * p char *pは何が違うのでしょうか また、#pragma warning(disable: 4996) #include <stdio.h> // puts, printf #include <string.h> // strcpy, strtok int main() { const char* str = "abc:123\n,tdef:45,ghi:678."; char buf[1024], * p; strcpy(buf, str); puts("-- \",\\t\\n\" --"); p = strtok(buf, ",\t\n"); while (p) { printf("[%s]\n", p); p = strtok(NULL, ",."); } }について、abc:123\n,.tdef:45,.ghi:678.でないのになぜ、 [abc:123] [tdef:45] [ghi:678] となるのかわかりません。
質問日時: 2021/02/18 13:13 質問者: captain06
ベストアンサー
1
0
-
#pragma warning(disable: 4996) #include <stdio.h>/
#pragma warning(disable: 4996) #include <stdio.h>// puts, printf #include <string.h>// strcpy, strtok int main() { const char* str = "abc:123\n,tdef:45,ghi:678."; char buf[1024], * p; strcpy(buf, str); puts("-- \"\\n\"--"); p = strtok(buf, "\n"); while (p) { printf("[%s]\n", p); p = strtok(NULL, "\n"); } strcpy(buf, str); puts("-- \"\t\"--"); p = strtok(buf, "\t"); while (p) { printf("[%s]\n", p); p = strtok(NULL, "\t"); } strcpy(buf, str); puts("-- \",\"--"); p = strtok(buf, ","); while (p) { printf("[%s]\n", p); p = strtok(NULL, ","); } strcpy(buf, str); puts("-- \",\\t\\n\"--"); p = strtok(buf, ",\t\n"); while (p) { printf("[%s]\n", p); p = strtok(NULL, ",."); } } //puts("-- \"\t\"--");について、なぜ文字列に\tがないのに //[abc:123] //[, tdef:45, ghi : 678.]ではなく、 //[abc:123 //, tdef : 45, ghi : 678.]なのでしょうか? また、strtok(NULL, ",."); }とは何をしているのでしょうか?文字列に",."は含まれていないのになぜこれが必要なのかわかりません。
質問日時: 2021/02/18 09:22 質問者: captain06
ベストアンサー
4
0
-
#include <stdio.h> #include <string.h> int main(vo
#include <stdio.h> #include <string.h> int main(void) { char str[] = "str == NULL ? \"(NULL)\" : str"; char* p, * q; int ch; p = str; for (;;) { for (q = p; !(*q == '?' || *q == ':' || *q == 0); q++); ch = *q; *q = 0; printf("|%s|\n", p); if (ch == 0) break; p = q + 1; } } ``` のコードについてデバッグをして中身を確認したかったため 以下のように置いて ``` ```ここに言語を入力 #include <stdio.h> #include <string.h> int main(void) { char str[] = "str == NULL ? \"(NULL)\" : str"; char *p, *q; int ch; p = str; printf("before loop\n"); printf(" str = |%s|\n", str); printf(" p = |%s|\n", p); for (;;) { printf("loop start\n"); printf("--before inner loop\n"); printf(" str = |%s|\n", str); printf(" p = |%s|\n", p); for (q = p; !(*q == '?' || *q == ':' || *q == 0); q++) ; printf("--after inner loop\n"); printf(" str = |%s|\n", str); printf(" p = |%s|\n", p); printf(" q = |%s|\n", q); ch = *q; *q = 0; printf("--after *q = 0\n"); printf(" str = |%s|\n", str); printf(" p = |%s|\n", p); printf(" q = |%s|\n", q); printf("|%s|\n", p); if (ch == 0) break; p = q + 1; printf("--after p = q + 1\n"); printf(" str = |%s|\n", str); printf(" p = |%s|\n", p); printf(" q = |%s|\n", q); printf("loop end\n\n"); } printf("after loop\n"); printf(" str = |%s|\n", str); printf(" p = |%s|\n", p); printf(" q = |%s|\n", q); } ``` 以下のように出力が出ました。 ``` before loop str = |str == NULL ? "(NULL)" : str| p = |str == NULL ? "(NULL)" : str| loop start --before inner loop str = |str == NULL ? "(NULL)" : str| p = |str == NULL ? "(NULL)" : str| --after inner loop str = |str == NULL ? "(NULL)" : str| p = |str == NULL ? "(NULL)" : str| q = |? "(NULL)" : str| --after *q = 0 str = |str == NULL | p = |str == NULL | q = || |str == NULL | --after p = q + 1 str = |str == NULL | p = | "(NULL)" : str| q = || loop end loop start --before inner loop str = |str == NULL | p = | "(NULL)" : str| --after inner loop str = |str == NULL | p = | "(NULL)" : str| q = |: str| --after *q = 0 str = |str == NULL | p = | "(NULL)" | q = || | "(NULL)" | --after p = q + 1 str = |str == NULL | p = | str| q = || loop end loop start --before inner loop str = |str == NULL | p = | str| --after inner loop str = |str == NULL | p = | str| q = || --after *q = 0 str = |str == NULL | p = | str| q = || | str| after loop str = |str == NULL | p = | str| q = || ``` 0. ただなぜ途中から str の中身が |str == NULL |のみになったのかわかりません。 自分なりに考えたのですが ポインタqがq=0よりforの条件に入る部分の先頭の文字からNULLまでを要は、 |str == NULL ? "(NULL)" : str|の? "(NULL)" : strを消してしまったため、 そして、ポインタP= |str == NULL |が残っている。。。いや自信がないです。なぜstr の中身が |str == NULL |のみになったのでしょうか? またどうやって "(NULL)" : str|は残っていたのでしょうか?
質問日時: 2021/02/16 17:15 質問者: captain06
ベストアンサー
5
0
-
&(*p)の値は、ポインタ先の値へのポインタです。 つまり、ポインタと同じアドレスを示しますが、なぜ
&(*p)の値は、ポインタ先の値へのポインタです。 つまり、ポインタと同じアドレスを示しますが、なぜ*をつける必要があるのですか? また、&*(str+i)もポインタと同じアドレスを示しますが、なぜ*をつける必要があるのですか? 詳しく丁寧に教えてください。
質問日時: 2021/02/16 14:55 質問者: captain06
ベストアンサー
1
0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
最新のコラム/記事
-
マッチングアプリで出会ったカップルは成婚率が高い!?結婚カウンセラーに聞いてみた
パートナーとの出会いの場として、もはや主流となったネット婚活やマッチングアプリ。中でも手軽に登録できるマッチングアプリは、10代から50代と幅広い年代が利用している。一方で、“相手の目的が投資関係の詐欺や...
-
メダロット:第250話「Vol.250※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
メダロット:第249話「Vol.249※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
日本古来の伝統工芸「金継ぎ」で修復した食器は前と同じように使えるの?
大切にしている食器が割れてしまったら、きっと誰もが「元に戻したい」と願うだろう。「教えて!goo」にも「割ってしまったお気に入りの食器を復活できる?」という質問があり、最適な方法について様々な意見が寄せら...
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
逆コンパイルと逆アセンブルの違い...
-
C言語について。
-
これて逆じゃないですか?
-
C言語について。
-
コンソールアプリを作成するのにお...
-
私は
-
C言語 1から20までの逆数の和を求め...
-
Windows Formアプリからコンソール...
-
プログラムの実行時に'<'でリダイレ...
-
パソコン
-
あんまり考えたくないけど
-
10進数からN進数に変換するプログラ...
-
バッチファイルで以下のようなもの...
-
c#のTLS1.2での通信について
-
だいがくの電し書籍で
-
VisualStudio2022でC言語プログラム...
-
VisualStudioでのプログラミングに...
-
C言語って古いですか?
-
ホワイトハッカーを目指そうかと思...
-
【C言語】全角文字の配列を、全角の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラム言語について c言語もコ...
-
C#でログファイルにファイルパスが...
-
Python、プログラミングについて質...
-
バッチファイルで以下のようなもの...
-
プログラミングの課題がわからない...
-
だれがとけるの?
-
0 == False はいいけど
-
CPUが16bitでも32bitOSでコンパイル...
-
なんで
-
c++でテンプレートのコードでわから...
-
プログラマーです。このDB設計だと...
-
c言語のリダイレクトによる円の描...
-
プログラミングでArduinoのc++かc#...
-
大量のデータを読み込んで表示する...
-
応用情報技術者試験の令和元年秋、...
-
複素関数はどこはあんまりやらなく...
-
gccを行ってもexeファイルが生成さ...
-
c言語
-
swift言語の最適化 swift最適化を最...
-
VisualStudio2022でC言語プログラム...
おすすめ情報