Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Nullstellen (Kleinprojekte)

Schreiben Sie ein Programm, dass die Nullstellen einer linearen Funktion oder einer quadratischen Funktion ausgibt.

Lineare Funktion: f(x)=a*x+b

Quadratische Funktion: f(x)=a*x2+b*x+c

Der Nutzer soll vor der Eingabe entscheiden können welchen Funktionstyp er benutzen möchte.

Danach soll der Nutzer die Parameter a, b und c eingeben(c nur bei der quadratischen Funktion) und die Nullstellen sollen daraufhin ausgegeben werden.

Hinweise:

Eine lineare Funktion hat immer eine Nullstelle, außer a=0 und b!=0(Bei a=0 und b=0 gibt es unendlich viele Nullstellen!).

Eine Quadratische Funktion hat zwei, eine oder keine Nullstellen. Es gibt mehrere Möglichkeiten die Nullstellen einer quadratischen Funktion herauszufinden(z.B. pq-Formel, Mitternachtsformel). Achten Sie darauf, dass bei nur einer Nullstelle auch nur eine ausgegeben wird und nicht zweimal die gleiche angezeigt wird.

 

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

4 Lösung(en)

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

float main(){

float a,b,c,x1,x2;
int typ;

printf("\nDieses Programm gibt die Nullstellen einer Funktion aus.\n\n");
printf("[1] a*x+b=0\n[2] a^2*x+b*x+c=0\n\n");
printf("Welche Gleichung?: ");
scanf("%d",&typ);
if(typ != 1 && typ != 2){
  printf("Falsche Eingabe.");
  return 0;
}
printf("\na = ");
scanf("%f",&a);
printf("b = ");
scanf("%f",&b);
if(typ == 2){
printf("c = ");
scanf("%f",&c);
}

if(typ == 1){
  x1 = (-b)/a;
  if(a == 0 && b != 0){
    printf("Die Steigung ist 0. Darum gibt es keine Nullstelle.");
  }
  if(a == 0 && b == 0){
    printf("Es gibt unendlich viele Nullstellen.");
  }else{
    printf("x: %f",x1);
  }
}

if(typ == 2){
  x1 = ((-b) + sqrtf(b*b-4*a*c))/(2*a);
  x2 = ((-b) - sqrtf(b*b-4*a*c))/(2*a);
  if((b*b-4*a*c) < 0 || 2*a == 0){
    printf("Kein Ergebnis.");
  }else{
    if(x1 == x2){
      printf("x: %f\n",x1);
    }else{
      printf("x1: %f\n",x1);
      printf("x2: %f\n",x2);
    }
  }
}
}

                

Lösung von: Fynn Koch (keine)

report  z_nullstellen.
type-pools abap.

data: null type i,
      null2 type i,
      root type i.

selection-screen begin of block b1 with frame title text-f01.
parameters linear as checkbox.
parameters quadr as checkbox.
parameters: a type i obligatory, b type i obligatory, c type i default
0.
selection-screen end of block b1.

start-of-selection.
  case abap_true.
    when linear.
      if quadr = abap_true.
        message 'Bitte für eine Funktion entscheiden!' type 'I'.
        exit.
      endif.
      if a = 0 and b = 0.
        write 'unendlich viele Nullstellen'.
      elseif a = 0 and b <> 0.
        write 'keine Nullstelle'.
      else.
        null = ( 0 - b ) /  a.
        write null.
      endif.
    when quadr.
      if linear = abap_true.
        message 'Bitte für eine Funktion entscheiden!' type 'I'.
        exit.
      endif.
      if a = 0 and b <> 0.
        null = ( 0 - c ) /  b.
        write null.
      elseif a = 0 and b = 0 and c = 0.
        write 'unendlich viele Nullstellen'.
      elseif a = 0 and b = 0 and c <> 0.
        write 'keine Nullstelle'.
      else.
        root = b * b - 4 * a * c.
        if root  < 0.
          write 'keine Nullstelle'.
        else.
          null = ( - b + sqrt( root ) ) / 2 * a.
          null2 = ( - b - sqrt( root ) ) / 2 * a.
          if null = null2.
            write null.
          else.
           write: 'erste Nullstelle: ', null, / , 'zweite Nullstelle: ',
  null2.
          endif.
        endif.
      endif.
    when others.
      message 'Bitte für eine Funktion entscheiden!' type 'I'.
      exit.
  endcase.
                

Lösung von: Name nicht veröffentlicht

/* Kotlin */
import java.lang.NumberFormatException
import kotlin.math.abs
import kotlin.math.sqrt

fun main() {
    var type: Double
    println("1: f(x)=a*x+b")
    println("2: f(x)=a*x²+b*x+c")

    do {
        type = read("Typ auswählen")
    } while (type != 1.0 && type != 2.0)

    var a = read("a")
    var b = read("b")

    if(type == 2.0 && a == 0.0) {
        type = 1.0
        a = b
        b = read("c")
    }

    when(type) {
        1.0 -> {
            if(a == 0.0 && b == 0.0) {
                println("Es gibt unendlich viele Nullstellen!")
                return
            } else if(a == 0.0 && b != 0.0) {
                println("Es gibt keine Nullstellen!")
                return
            }

            val x = -b / a
            println("x = %f".format(x))
        }

        2.0 -> {
            val c = read("c")
            val discriminant = b*b - 4*a*c

            val alpha = -b / (2*a)
            val beta = (sqrt(abs(discriminant))) / (2*a)

            if(discriminant < 0) {
                println("x1 = %f - %fi".format(alpha, beta))
                println("x2 = %f + %fi".format(alpha, beta))
            } else {
                val x1 = alpha - beta
                val x2 = alpha + beta

                if(x1 == x2) {
                    println("x = %f".format(x1))
                } else {
                    println("x1 = %f".format(x1))
                    println("x2 = %f".format(x2))
                }
            }
        }
    }
}

fun read(s: String): Double {
    print("%s: ".format(s))

    return try {
        readLine()!!.toDouble()
    } catch (e: NumberFormatException) {
        println("Fehler: Keine Zahl")
        read(s)
    }
}
                

Lösung von: Linus Götz (Lichtenberg-Gymnasium Cuxhaven)

/* GOLANG */

package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
	"strconv"
)

func readParam(readA bool, readB bool, readC bool) (a float64, b float64, c float64, err error) {
	var read string

	if readA {
		fmt.Print("a=")
		_, err = fmt.Scanf("%s\n", &read)
		a, _ = strconv.ParseFloat(read, 64)
	}

	if readB {
		fmt.Print("b=")
		_, err = fmt.Scanf("%s\n", &read)
		b, _ = strconv.ParseFloat(read, 64)
	}

	if readC {
		fmt.Print("c=")
		_, err = fmt.Scanf("%s\n", &read)
		c, _ = strconv.ParseFloat(read, 64)
	}

	return a, b, c, err
}


func main() {
	reader := bufio.NewReader(os.Stdin)

	fmt.Println("Choose equation type:")
	fmt.Println("Type - 1 - for linear ( f(x) = a*x=b )")
	fmt.Println("Type - 2 - for quadratic ( f(x) = ax^2 + bx + c)")

	equationType, _, err := reader.ReadRune()

	if err != nil { os.Exit(1) }

	switch equationType {
	case '1':
		a, b, _, err := readParam(true, true, false)
		if err != nil {
			fmt.Println(err)
			os.Exit(1)
		}
		if a == 0 {
			if b != 0 {
				fmt.Println("No zero")
			} else {
				fmt.Println("Zero for every x")
			}
			os.Exit(0)
		} else {
			x := -b / a
			fmt.Printf("x = %f\n", x)
		}
		break
	case '2':
		a, b, c, err := readParam(true, true, true)
		if err !=  nil {
			fmt.Println(err)
			os.Exit(1)
		}

		det := math.Pow(b, 2) - 4 * a * c

		if det < 0 {
			fmt.Println("No real solutions")
		} else if det > 0 {
			fmt.Println("Two Solutions in R: ")
			x := (-b + math.Sqrt(math.Pow(b, 2) - 4 * a * c))/ (2 * a)
			fmt.Printf("%f\n", x)
			x = (-b - math.Sqrt(math.Pow(b, 2) - 4 * a * c))/ (2 * a)
			fmt.Printf("%f\n", x)
		} else {
			fmt.Println("One Solution in R: ")
			x := -b / (2*a)
			fmt.Printf("%f\n",x)
		}
	}
}
                

Lösung von: Name nicht veröffentlicht

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 1
Schwierigkeit: Leicht
Webcode: 6abm-k4ys
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen