前提・実現したいこと
氏名、年齢を変数として持つ構造体を宣言し、大きさ10の構造体配列を定義。その配列に対して、10人分の氏名と年齢を入力し、年齢が最も高い人の氏名と年齢を表示させたいです。
###追記(2021/11/19 14:12)
みなさんアドバイス等ありがとうございます。
私の能力が産毛が生えるかどうかしかないのと、自己中心的な考えが、みなさんを苛出せているのだろうなと思ってます。
私的には何時間も考えて分からなくなって聞いてるので、100%投げ出してるつもりはないのですが、きっと適当にしてるように見えてしまうのでしょうね。
正直、みなさんからいただいたコードがそんなに理解できてないので、またそれぞれの使い方を学んでから質問等させていただきたいです。的外れな質問をしてしまうかも知れませんが、よろしくお願いします。(下記のコードは変えてません)
該当のソースコード
c
1#include <stdio.h> 2#include <string.h> 3 4typedef struct 5{ 6 char name[256]; 7 int age; 8} Students; 9 10void InputStudents(Students *data); 11void ShowStudents(Students data); 12 13int main(void) 14{ 15 Students data[10]; 16 int i; 17 int max; 18 int age_max; 19 max=0; 20 age_max=0; 21 for(i=0;i<10;i++){InputStudents(&data[i]);} 22 ShowStudents(data[i]); 23 max=0; 24 if (max <= data[i].age) { max = data[i].age; age_max = i; } 25 26 return 0;} 27 28void InputStudents(Students *data) 29{ 30 printf("氏名(空白なしで入力):"); 31 scanf("%s",data->name); 32 printf("年齢:"); 33 scanf("%d",&data->age); 34 printf("\n"); 35} 36 37void ShowStudents(Students data) 38{ 39 printf("最高年齢の生徒:%s,年齢:%d", data[age_max].name,data[age_max].age); 40 41}
> 頭がこんがらがってきました
では、それを解してからまた考えるか、全て初めからやり直しては如何でしょうか。
頭の中でまとめられないのなら、紙に書くなりパソコンやスマホを使うなり、やり方はそれぞれあるのではないでしょうか。
> tabを使わない派なので見にくいかも知れませんが、ご了承ください。
なら空白を使ってインデントつけてください。
あなたの主義主張はどうでも良いですが、人に対して質問しているのに読みづらいPGを敢えて提示するほどの優先されることなのですか?
やり直しまくった結果ですので、これ以上考えられないのです。
読みにくいかどうかは人様々だと考えています。
私のように使わない人もいるでしょうからこのままでいいかと思っております。
その主張が通るのは学生の間だけですよ。
悪いことは言わないので今のうちからインデントする癖を付けておいたほうが良いです。
プログラム言語(Python)によってはインデントしないと思った動作しない言語もあります。
会社に入ってもしPhtyonを使用した案件を与えられた場合、私はインデントしない主義なのでその案件は出来ませんと言えますか?
だめなんですかね、、、
pythonにおいてインデントが大事なのは分かっております。
ですが、c言語はインデントが重要ではないじゃないですか、、、
> やり直しまくった結果ですので、これ以上考えられないのです。
...わからんなー、「これまでに見つかった最高値 より もっと大きい要素を見つけたら 最高値を更新する」
を要素数だけ繰り返すだけなんだが。
単純なこともできないから悩んでいるのです。
「最高値はいくつですか」は解けるのに
「最高値は何番目の要素ですか」は解けない、と?
確かにC言語においては必須ではありませんが、可読性の低いPGを書けばその分だけ{}の数の不一致等の単純ミスをしやすくなります。
自分でインデントを整えるのが苦手という話しであればショートカットキー一つで自動整形してくれる機能を持っているVScode等を利用すると良いかと。
参考ページ
https://reactnative-st.com/2020/08/04/3835/
> だめなんですかね、、、
それはどうなんでしょうかえでもわたしはすうがくがにがてなのでくわしいことわわかりませんにやぷろぐらみんぐはいがいとすきでふね
…とかみたいな文章で説明されてもいいのでしょうか。
私なら『読みづらい』としか思わないし。
でももしかしたら『漢字が苦手で使いたくない。それに句読点もバ○らしくて使いたくない。あと、カタカナもイライラするから使いたくない』っていう主義かもしれませんね。
そうなるとその文章を読ませられる人はどう思うでしょうか。
『漢字のど忘れはわからないでもないが、せめて読み手に配慮しろよ…それがマナーだろ…』的な感覚になりますよね。
プログラミングってのは『決まったものを書けばいい』というのではありません。ロジックを書くのです。
小説やツイートを独自の言語で書くようなものです。
なので、半角スペースでいいのでインデントはいれましょう。適宜に。
> 読みにくいかどうかは人様々だと考えています。
> 私のように使わない人もいるでしょうからこのままでいいかと思っております。
手元に何か殴り書きしたメモがあるとして,
他者と問題を共有する際にそのぐちゃぐちゃのメモ書きをそのままコピーして他者に資料として配って話するのか? っていうのと似てるかな.
ふつーは他者が見やすい/他者に説明しやすい ような資料なりをこしらえるんじゃない?
ご自身だけが見る手元のコードであれば「俺はインデントしない!」とかいくらでも好き勝手に書けばいいよ.
Cの文法的には問題無いし.
でも,他者と話をする際にそれをそのまま持ち込むという姿勢というか思想と言うか,その辺にとっても違和感がある.
IOCCCというCのソースコードの読みにくさ(と美しさ)を競う大会があるのだが、調べてみるといい
むろん彼らは読みにくくする主義というわけではないが、Cというものがどれだけ「文法的に許される範囲で」読みにくくなるかがわかるだろう。だから、「c言語はインデントが重要ではないじゃないですか、、、」とか言ってないで読みやすくする姿勢を見せてほしい。人に読ませたいならね
> 私的には何時間も考えて分からなくなって聞いてるので、100%投げ出してるつもりはないのですが、きっと適当にしてるように見えてしまうのでしょうね。
何時間考えたかは関係ない。
聞かれたことを無視したり口答えしたり、まるで自分が命令を下す上司であるかのように振舞っている。
回答者は作業者ではない。
作業者は自分。
この当然なことを言われて上から目線だと感じるようなら、知らず知らずのうちに回答者を上から見ていることになる。
まず二つの関数を作りなさい。
一つ目はポインタを受け取り、ユーザーからの入力を構造体にして渡されたポインタに入れる関数。
二つ目はポインタを受け取り、そこに格納されている構造体を出力する関数。
それができたら、引数を配列の先頭ポインタとしてその二つを呼び出し、入力されたものが間違いなく出力されることを確かめなさい。
まずはここまで。
それができたら次のステップに進む。
質問が大きすぎて何がわからないのか、どこでつまずいているのかがわからない。
このように順を追って作り、つまずいたところを聞くようにしなさい。
質問文への追記(2021/11/19 14:12)を読んで:
苛立たせるかどうかはこの際どうでもよくて、未完成とはいえ一応これだけコードができていて、たくさんの回答を得ていてなぜ分からないか、閲覧者、回答者ともに不思議に思ってしまっているのではないでしょうか。質問文中のコードは、ご自身で考えて書いたのですよね。ググってそれっぽいのをコピペしただけなのでしょうか。いや、コピペしたとしても理解して消化できているならいいですが、自分でコードの1行1行を説明できますか?
回答7件
あなたの回答
tips
プレビュー
