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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

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

Q&A

5回答

219閲覧

こちらのプログラムの書き方がわかりません。教えてください。

Kazut0

総合スコア10

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

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

0グッド

1クリップ

投稿2018/11/01 02:04

こちらのプログラムの書き方がわかりません。教えてください。

整数 a, b, c を引数とし,2次方程式 a x^2 + b x + c = 0 の判別式を計算して戻り値する関数 int discriminant( int a, int b, int c ) を 作成せよ. 
さらに,main 関数においてキーボードから a, b, c を受け取り, 「a x^2 + b x + c = 0 の実数解の個数は?個です」のような表示 をするプログラムを作成せよ.ただし,関数 discriminant からの戻り値を用いて実数解の個数を求めること. 

a は 0 でないと仮定してよい.

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

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

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

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

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

dice142

2018/11/01 02:09

まずはできるところまで書いてみましょう。また、C#なのかCなのかわからないので不要なタグは外してください。
guest

回答5

0

学校の課題ですかね。とりあえずこれで。

#include <stdio.h> int discriminant(int a, int b, int c){ return b * b - 4 * a * c; } int main(){ int a, b, c; scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); if(discriminant(a,b,c) > 0){ printf("%dx^2 + %dx + %d = 0 の実数解の個数は2個です\r\n",a,b,c); }else if(discriminant(a,b,c) == 0){ printf("%dx^2 + %dx + %d = 0 の実数解の個数は1個です\r\n",a,b,c); }else{ printf("%dx^2 + %dx + %d = 0 の実数解の個数は0個です\r\n",a,b,c); } }

投稿2018/11/02 14:57

YOshim

総合スコア1085

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

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

0

オーバーフローを考慮すると、単純に

C

1int discriminant( int a, int b, int c ) 2{ 3 return b * b - 4 * a * c; 4}

では駄目そうですね。

投稿2018/11/02 11:39

shsh_

総合スコア113

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

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

0

CなのかC#なのかわからなかったので、中間のC++で書きました。(C++17 + boost 1.68.0)

C++

1#include <boost/multiprecision/cpp_int.hpp> 2#include <iostream> 3 4template <typename T> T discriminant(const T &a, const T &b, const T &c) 5{ 6 return b * b - 4 * a * c; 7} 8 9int main() 10{ 11 boost::multiprecision::cpp_int a, b, c; 12 while (!(std::cin >> a >> b >> c)) { 13 std::cin.clear(); 14 std::cin.ignore(); 15 } 16 auto d = discriminant(a, b, c); 17 auto n = d > 0 ? 2 : d == 0 ? 1 : 0; 18 std::cout << a << u8" x^2 + " << b << u8" x + " << c 19 << u8" = 0 の実数解の個数は " << n << u8" 個です。" 20 << std::endl; 21 return 0; 22}

メモリが許す限り、どんなに大きい数であっても対応しています。

投稿2018/11/01 12:24

raccy

総合スコア21733

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

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

0

テストはしていませんがこれでどうでしょうか.
また, わからない部分は適宜調べてください.

C

1#include <stdio.h> 2#include <string.h> 3#include <stdlib.h> 4#include <math.h> 5 6 7// 標準入力から数値を取得 8int 9get_value_from_stdin(char *msg) { 10 char buf[256]; 11 12 do { 13 char *p; 14 15 if(msg != NULL) printf("%s", msg); 16 17 memset((void *)buf, '\0', sizeof(buf)); 18 fgets((char *)buf, sizeof(buf) - 1, stdin); 19 20 // 改行文字の削除(なくてもいい) 21 if((p = strchr(buf, '\r')) != NULL || (p = strchr(buf, '\n')) != NULL) *p = '\0'; 22 } while(strlen(buf) == 0); 23 24 return (int)strtol((const char *)buf, NULL, 10); 25} 26 27 28// 判定式 29int 30discriminant(int a, int b, int c) { 31 double delta = pow(b, 2.0) - (4.0 * a * c); 32 33 if(delta > 0.0) return 2; 34 else if(delta == 0.0) return 1; 35 36 return 0; 37} 38 39 40int 41main(int argc, char *argv[]) { 42 int a, b, c; 43 44 45 a = get_value_from_stdin("a = "); 46 47 if(a == 0) { 48 // TODO: エラーメッセージなど. 49 return -1; 50 } 51 52 b = get_value_from_stdin("b = "); 53 c = get_value_from_stdin("c = "); 54 55 56 printf("a = %d, b = %d, c = %d\n", a, b, c); 57 printf(" 実数解の個数 = %d\n", discriminant(a, b, c)); 58 59 return 0; 60}

投稿2018/11/01 07:59

Livenga

総合スコア85

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

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

0

投稿2018/11/01 03:46

rururu3

総合スコア5545

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問