Wątek przeniesiony 2014-10-28 14:30 z C# i .NET przez ŁF.

Gdzie są błędy?

0

Witam,

Muszę stworzyć kalkulator konsolowy w csharp.
Napisałem taki o to program ktory liczy średnią geometryczną
ale mam bląd " cannot implicitly convert type double to float"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            int n;
            float a;
            int i;
            float S = 0.0f;
            float SredniaArytmetyczna;
            ConsoleKeyInfo WyborFunkcji;
            Console.WriteLine("\n\t Moje menu (wybierz jedna z podanych funkcjonalnosci naciscajac \n\t odpowiedny clawisz!,:");
            Console.WriteLine("\n\t\t A. oblicz seme oraz iloczyn yjemnych liczb nieparzystych");
            Console.WriteLine("\n\t\t B. oblicz seme sredniej harmonicznej");
            Console.WriteLine("\n\t\t C. oblicz seme sredniej geometrycznej");
            Console.WriteLine("\n\t\t D. oblicz seme sredniej kwadratpowej");
            Console.WriteLine("\n\t\t E. oblicz seme srednied potegowej");
            Console.WriteLine("\n\t\t Zakonczenie dzialania programu");
            Console.Write("\n\t Twoj wybor : ");
            WyborFunkcji = Console.ReadKey();
            if (WyborFunkcji.Key == ConsoleKey.A) { }
            else
                if (WyborFunkcji.Key == ConsoleKey.B)
                {
                    do
                    {
                        Console.Write("\n\tPodaj ilosc liczb n:");
                        while (!int.TryParse(Console.ReadLine(), out n))
                        {
                            Console.WriteLine("\n\tERROR: wystapily niedozwolone znaki u napisie n!");
                            Console.WriteLine("\n\tNacisnij dowolny klawisz dla kontunacji...");
                            Console.ReadKey();

                        }
                        if (n <= 0)
                        {
                            Console.WriteLine("\n\t ERROR: losc liczb n musi specialniac warunek: n>0!");
                            Console.WriteLine("\n\tNacisnij dowolny klawisz dla kontynacji ...");
                            Console.ReadKey();
                        }
                    } while (n <= 0);
                    i = 0;
                    do
                    {
                        i = i + 1;
                        Console.Write("\n\tPodaj kolejna liczbe (dla obliczenia sredniej geometrycznej): ");

                        while (!float.TryParse(Console.ReadLine(), out a))
                        {
                            Console.WriteLine("\n\t ERROR wystapily niedozwolone znaki w Zapisanie liczby dla obliczenia sredniej geometrycznej ): liczba musi byc  typu float ");
                            Console.WriteLine("\n\t Nacisnij dowolny klawisz dla contynacji...");
                            Console.ReadKey();
                            Console.Write("\n\t Podaj kolejna liczbe dla obliczenia sredniej geometrycznej):");
                        }
                        S = S *a;
                    } while (i < n);

                        SredniaArytmetyczna =n*Math .Sqrt(S) ;
                        Console.WriteLine("\n\t Sredia geometryczna n wczytanych liczb = {0,6:F}", SredniaArytmetyczna);
                    Console.WriteLine("n=\n\tNacisnij dowolny klawis dla kontynuacji ...");
                    Console.ReadKey();
                }
        }
    }
}

kto wie jak to naprawić?foo

0
 SredniaArytmetyczna =n*Math .Sqrt(S) ;

n jest typu int, S jest typu float, brak konwersji typu.

0

musię być konwersja n na typ float lub S na typ int,tak?

EroSanin napisał(a):
SredniaArytmetyczna =n*Math .Sqrt(S) ;

n jest typu int, S jest typu float, brak konwersji typu.

0

Taka mała uwaga - to nie jest C, nie trzeba deklarować wszystkich zmiennych na początku funkcji. Lepiej je deklarować tam, gdzie są potrzebne, wtedy trudniej się pogubić.

0
Kotsuyba napisał(a):

musię być konwersja n na typ float lub S na typ int,tak?

Nie, musi być konwersja tego calego wyrażenia po prawej na float (teraz jest double)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0