Geometrický průměr v C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Geometrický průměr v C++ – C / C++ – Fórum – Programujte.comGeometrický průměr v C++ – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Jasal
~ Anonymní uživatel
1 příspěvek
12. 5. 2017   #1
-
0
-

Ahoj, potřebuju poradit.
Mám za úkol vytvořit program, ve kterém se má:

  • vypočítat a vypsat geometrický průměr prvků v jednotlivých řádcích matice vedle těchto řádků 
  • nalézt řádek s minimálním průměrem a následně vypsat.

Už jsem opravdu v koncích. Nedokážu přijít jak to naprogramovat a nějak to propojit s celým zbytkem programu (Načtení a vypsání matice). 
Programuju v MS Visual C# - ConsoleApplication. Budu rád za jakoukoli odpověď.
P.S. Je to na konci programu Metoda Najdi. Zatím jsem tam vložil geometrický průměr, po zadání hodnot.

static void Main(string[] args)
        {
            int[,] matice;
            matice = new int[0, 0]; //dekladace nulové matice
            int k, l, prv, novprv;
            string v;
            do // podmínka menu  
            {
                Console.WriteLine("Menu"); //menu
                Console.WriteLine("0. Ukončit program");
                Console.WriteLine("1. Načíst matici");
                Console.WriteLine("2. Vypsat matici");
                Console.WriteLine("3. Úprava prvku matice");
                Console.WriteLine("4. Geometrický průměr");
                Console.WriteLine("Zadejte číslo volby: ");
                v = Console.ReadLine();
                Console.WriteLine();
                switch (v)
                {
                    case "1": //načtení matice
                        matice = NactiMatici();
                        break;
                    case "2": //Vypsání matice:
                        VypisMatice("Matice: ", matice);
                        break;
                    case "3": //Upravit prvek matice (Načte pozici prvku (index řádku a sloupce), vypíše jeho aktuální hodnotu a načte jeho novou hodnotu)
                        Console.Write("Zadejte index řádku matice: ");
                        k = int.Parse(Console.ReadLine()) - 1;
                        Console.Write("Zadejte index sloupce matice: ");
                        l = int.Parse(Console.ReadLine()) - 1;
                        prv = matice[k, l];
                        Console.WriteLine("prvkek matice v {0}. řádku a {1}. sloupci je {2}.", k + 1, l + 1, prv); // vypsání současné hodnoty
                        Console.Write("Zadejte novou hodnotu prvku: "); //nová hodnota prvku na daném místě
                        novprv = int.Parse(Console.ReadLine());
                        matice[k, l] = novprv;
                        break;
                    case "4"://Geometrický průměr
                        Najdi("Geometrický průměr: ", matice);
                        break;
                }
                Console.WriteLine();
            } while (v != "0");
        }



        static int[,] NactiMatici() //načtení matice 
        {
            int m = 0, n = 0;
            int[,] matice = null;
            do // podmíka m<2,20>
            {
                Console.Write("Zadejte počet řádků matice: ");
                m = int.Parse(Console.ReadLine());
            } while (m < 2 || m > 20);
            do // podmínka n<2,10>
            {
                Console.Write("Zadejte počet sloupců matice: ");
                n = int.Parse(Console.ReadLine());
            } while (n < 2 || n > 10);

            matice = new int[m, n];
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    do // podmínka prvek <-100,100>
                    {
                        Console.Write("Zadejte prvek({0},{1}) ", i + 1, j + 1);
                        matice[i, j] = int.Parse(Console.ReadLine());
                    } while (matice[i, j] < -100 || matice[i, j] > 100);
                }
            }
            return matice;
        }


        static void VypisMatice(string nadpis, int[,] matice) //výpis matice
        {
            int m = matice.GetLength(0);
            int n = matice.GetLength(1);

            Console.WriteLine(nadpis);
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write("{0,6}", matice[i, j]);
                }
                Console.WriteLine();
            }
        }

        static void Najdi(string nadpis, int[,] matice) //Geometrický průměr
        {
            int m = matice.GetLength(0);
            int n = matice.GetLength(1);

            int pocet;
            do
            {
                Console.WriteLine("Zadej počet čísel: ");
                pocet = int.Parse(Console.ReadLine());
            } while (pocet < 2 || pocet > 10);
            double[] pole;
            pole = new double[pocet];
            for (int i = 1; i <= pocet; i++)
            {
                Console.Write("Zadej " + i + ". číslo: ");
                pole[i - 1] = double.Parse(Console.ReadLine());
            }
            bool platne = true;
            for (int i = 1; i <= pocet; i++)
            {
                if (pole[i - 1] <= 0)
                {
                    Console.WriteLine("Neplatné hodnoty.");
                    Console.ReadKey();
                    platne = false;
                    break;
                }
            }
            if (platne == true) // geometrický průměr
            {
                double soucin = 1;
                for (int i = 1; i <= pocet; i++)
                {
                    soucin = soucin * pole[i - 1];
                }
                double exponent = pocet;
                exponent = 1 / exponent;
                double vysledek = Math.Pow(soucin, exponent);
                Console.WriteLine("Výsledek: {0:F2}", vysledek);
                Console.ReadKey();
            }
            else
            {

            }
            
        }
Nahlásit jako SPAM
IP: 212.80.67.–
Reklama
Reklama
gna
~ Anonymní uživatel
363 příspěvků
12. 5. 2017   #2
-
0
-

V tom výpisu procházíš jednotlivé řádky a jejich hodnoty. V čem se to tolik liší od toho jednorozměrného pole, se kterým to umíš?

A proč najednou indexuješ od 1 a kontrolujuješ hodnoty až dodatečně? Jsi to od někoho obšlehl, viď? :-)

Nahlásit jako SPAM
IP: 213.211.51.–
Staon0
Návštěvník
15. 5. 2017   #3
-
0
-

#1 Jasal
V čem je problém? Jestliže v jedné funkci umíš matici po řádkách vypsat, tak by neměl být žádný problém v jiné funkci spočítat po řádkách geometrický průměr, ne? Takže skoro mám podezření, že kód asi není tvůj, že?

Nahlásit jako SPAM
IP: 94.142.234.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 69 hostů

Podobná vlákna

Geometrický průměr — založil Blujacker

Průměr — založil Sopta

Aritmetický průměr — založil serveronaut

Aritmetický průměr C++ — založil MickeyMouse

Aritmetický průměr — založil MatrO

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý