質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1852閲覧

C#:標準入力から配列に読み込む際の諸エラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/05/01 03:48

初めまして。プログラミング初心者です。やり方が分からずかなり困っています。助けてください。

2つ質問があります。どちらともいくつかのパターンのコードを書いたのですが、どれもエラーが出てしまい、丸2日自力で粘りましたが動きませんでした。また、アドバイスやリファレンスのリンク等をいくつもいただいたのですが、結局分からず、困り果てています。

自分できちんと調べてから解けという意見もごもっともで、重々承知しています。

ただ、今は動かせる自信が欲しいので、お手本となる「サンプルプログラム」を書いていただけると幸いです。
長文で失礼しますが、どうぞよろしくお願いいたします。

1.標準入力:A B(数字)があるとして、A・Bを数値として配列に読み込み、A*Bの値を求めたいです。

int[] array = int.Parse(System.Console.ReadLine());
をはじめいくつかのパターンを試しましたが、
cannot implicitly convert '' to ''等のエラーが出てしまい動かせません。

理想としては、
array[0] * array[1]で計算したいです。(AとBの間にスペースがあるので、私の理解不足ですが、もしかしたらarray[0] * array[2]かもしれません…)

2. 1の質問と似ていますが、標準入力:A1B2C3D4があるとして、それらを文字列として配列に入れ、Aを4に4をAに換えて出力したいです。

こちらも、var array = System.Console.ReadLine();や、
string[] array = System.Console.ReadLine().Split(' ');など
いくつかのパターンを試しましたが、動きませんでした。

配列に入れ、if (array[i] == A){
array[i] = 4; }
等の処理で文字を変換し、

理想としては、
41B2C3DAと表示させたいです。

こちらも私の理解不足かもしれませんが、string[] arrayではなく、var arrayなのでしょうか。

頭が混乱しており、リファレンス等を読んでももうさっぱりわかりません。

お手数ですが、上記2つの問題が解けるお手本のプログラムを書いていただけると本当に助かります。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/05/01 03:52

なぜ人のコードで自信が得られるかわからない。宿題を聞いているだけでしょう。
Zuishin

2020/05/01 03:55 編集

とりあえず、一度に目標のものを作ろうとせず、部品に分割して作るのが正解です。プロもそのように作ります。 まずは標準入力から文字列を読み込み、それを表示するだけのプログラムを作ってコードを掲載してください。それができたら次の課題を出します。私の出す課題を全部解けば宿題もできます。
Zuishin

2020/05/01 04:00

できない時には、わかったふりをせず、正直にできないと言ってください。その場合は、「できませんでした」「わかりませんでした」ではなく、「このようにしたらこうなった」という形にしてください。手も付けられない時には、わからないところを最も小さな問題に分割して具体的に聞いてください。
退会済みユーザー

退会済みユーザー

2020/05/01 04:13

Zuishin様。再びの質問ありがとうございます。 仰る通り、高校の宿題で詰んでいます。 他人のコードで自信が得られる理由は、示された答えを見て自分なりに理解し、使ってみることで理解を深めることが、"私にとって"は最善の学習方法だからです。 ですが、私の質問方法に府の感情を抱かれたのでしたら、そこは素直に謝らせていただきます。 では、正直に言わせていただきますが、できないです。 ですが、それで終わるのは違うと思うので、後ほどこちらに、一度書いたプログラムをエラー内容と共に送らせていただきます。ご指導のほど、どうぞよろしくお願いいたします。
Zuishin

2020/05/01 04:15

https://teratail.com/help/question-tips#questionTips1-1 > teratailを「サポートセンター」だとは思わないでください。 > 作業依頼のような投稿をして、課題や仕事を無償でやってもらえる場ではありません。 > あなたがそのようなつもりで質問しているのだと他のユーザーから誤解されないように、丁寧な質問を心がけましょう。 > 質問の仕方がわからない時は、このページに書かれている事を参考にしてみてください。
Zuishin

2020/05/01 04:16

宿題は自分でやりましょう。できないなら友達か先生に聞きましょう。
退会済みユーザー

退会済みユーザー

2020/05/01 04:33

大変申し訳ございませんでした。心のどこかで回答内容に頼ろうとしていたところがあると思いますし、質問の書き方に関して、こちらに非があることも事実だと思います。 ただ、訳があって、現在プログラミングに関する相談をできる相手がいません。 ですので、気分を害してしまった上でのお願いとなり心苦しいですが、一つ質問をさせていただきます。 標準入力:A B Cとあって、3つの掛け算の結果を求めたいです。 public class system{ public static void Main(){ var num = int.Parse(System.Console.ReadLine()); int[] array = System.Console.ReadLine(); var amari = (array[0] * array[1]) * num; System.Console.WriteLine(amari); } } とすると、エラーでerror CS0029: Cannot implicitly convert type `string' to `int[]'と表示されるのですが、これはB Cをスペースも含めて一つの文字列として読み込んでいるため、int型にならないのでしょうか。それとも、他に原因があるのでしょうか。 よろしくお願いいたします。
Zuishin

2020/05/01 04:35

自分の都合ばかり言って強引だなあ。そりゃ相談できる人いなくなるわ。
退会済みユーザー

退会済みユーザー

2020/05/01 04:40

ごめんなさい。
退会済みユーザー

退会済みユーザー

2020/05/01 05:26

> string[] array = System.Console.ReadLine().Split(' '); ↑ これを考えついて、さらに int.Parse というのがあることも知っていて、どうしてその先に進めないのか謎です。誰かのコードを見てそれらが書いてあったから、意味が分からないまま適当にこねくり回しているということでしょうか? array[0] と array[1] に何か得られるか、それをどうすれば int 型にできるか考えてみました?
guest

回答2

0

ベストアンサー

これでいいの?

C#

1using System; 2 3namespace ConsoleApp1 4{ 5 internal class Program 6 { 7 private static void Main(string[] args) 8 { 9 var line = Console.ReadLine(); 10 var items = line.Split(' '); 11 if (items.Length != 2 || !int.TryParse(items[0], out var a) || !int.TryParse(items[1], out var b)) 12 { 13 Console.Error.WriteLine("数値をスペース区切りで2つ入力してenterを押してください。"); 14 Console.Read(); 15 return; 16 } 17 Console.WriteLine($"a * b = {a * b}"); 18 19 Console.Read(); 20 } 21 } 22}

とりあえず「コードくれ」はガイドライン的にNGなのはコメントで指摘されているとおりなんであんまり書く気はなかったけど、コードあれば理解できる自信がありそうだったんで。

このコードについての質問は受け付けませんので、これ以上は自分で調べてください。

投稿2020/05/01 05:10

編集2020/05/01 05:12
gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/05/01 05:21

> では、正直に言わせていただきますが、できないです。 標準入力からの入力を出力するだけのプログラムが作れない(チャレンジする気もない)ということなので、理解する事はないと思います。
gentaro

2020/05/01 05:22

最善の学習法らしいので、これで無理なら諦めてくれるんじゃないかなと。
guest

0

確かにC#はJavaに比べて、複数入力が難しい(面倒)な気がします。

ヒントにとどめようとしましたが、1はほぼ答え・2はひねりすぎてヒントになっているのか?という状態になってしまいました^^;

cs

1using System; 2 3namespace Questions257823 4{ 5 class Program 6 { 7 static void Main() 8 { 9 //1. のヒント 10 { 11 Console.WriteLine("整数をスペースを空けて2つ入力 例:1 100"); 12 string line = Console.ReadLine(); 13 string[] tokens = line.Split(' '); 14 15 int[] array = new int[2]; 16 array[0] = int.Parse(tokens[0]); 17 array[1] = int.Parse(tokens[1]); 18 //int[] array = line.Split(' ').Select(int.Parse).ToArray(); 19 20 Console.Write(array[0]); 21 Console.Write("足す"); 22 Console.Write(array[1]); 23 Console.Write("は"); 24 Console.Write(array[0] + array[1]); 25 Console.WriteLine("です"); 26 } 27 28 29 //2. のヒント(になっているのか?^^; 30 { 31 Console.WriteLine("「いっぱい」の「い」を「お」に変えるとなんになる?"); 32 string answer = Console.ReadLine(); 33 34 string ippai = "いっぱい"; 35 char[] array = ippai.ToCharArray(); 36 37 for(int i = 0; i < array.Length; i++) 38 { 39 if(array[i] == 'い') 40 { 41 array[i] = 'お'; 42 } 43 } 44 45 string oppao = new string(array); 46 if(answer == oppao) 47 { 48 Console.WriteLine("正解!"); 49 } 50 else 51 { 52 Console.Write(oppao); 53 Console.WriteLine(" ですよ~"); 54 } 55 } 56 } 57 } 58}

投稿2020/05/01 05:08

編集2023/07/21 12:53
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/01 05:41

ご丁寧に回答、本当にありがとうございます。 なるほど…そういう風に書くと動くのですね。すごくスッキリしました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問