Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
mám příklad na rozbor známek, kdy jde o zadání počtu předmětů, známky z každého předmětu a poté se zobrazí rozbor: průměr, počet známek určitých známek (1 - tolikrát, 2 - tolikrát...), a jestli prospěl s vyznamenáním - průměr <=1,5; žádná 3,4,5, prospěl - "to ostatní", neprospěl - alespoň jedna 5, neklasifikován - alespoň jedna 0) a nejhorší a nejlepší známka
prosím o napravení a doplnění, děkuji moc
Console.Write("Zadej počet známek: ");
int pocet = Convert.ToInt32(Console.ReadLine());
int[] zn = new int[pocet];
for (int i = 0; i < pocet; i++)
{
do
{
Console.WriteLine("Zadej známku z předmětu " + Convert.ToString(i + 1) + ":");
if (zn[i] < 0 || zn[i] > 5)
{
Console.Write("Špatně, zadej znovu.");
}
} while (zn[i] < 0 || zn[i] > 5);
}
int max = 0;
int maxi = 0;
int min = 6;
int mini = 0;
bool nula = false;
double a = 0;
for (int i = 0; i < pocet; i++)
{
if (zn[i] > max)
{
max = zn[i];
maxi = i + 1;
}
if (zn[i] < min && zn[i] != 0)
{
min = zn[i];
mini = i + 1;
}
Console.ReadLine();
Offline
Zdravím,
tak jsem to sesmolil teď kompletně, snad všechny Tvé požadavky mám (i když sem některým úplně nerozuměl):
using System;
using System.Linq;
namespace Znamky
{
class Program
{
static void Main(string[] args)
{
float prumer = 0.0f;
float soucet = 0.0f;
Console.Write("Zadej počet známek: ");
int pocet = Convert.ToInt32(Console.ReadLine());
int[] zn = new int[pocet];
for (int i = 0; i < pocet; i++)
{
znovu:
Console.Write("Zadej známku z předmětu " + Convert.ToString(i + 1) + ": ");
int znamka = Convert.ToInt32(Console.ReadLine());
if (znamka <= 0 || znamka > 5)
{
Console.Write("Špatně, zadej znovu.");
goto znovu;
}
zn[i] = znamka;
soucet += znamka;
}
prumer = soucet / pocet;
Console.Write("\nPocet znamek: {0}", pocet);
Console.Write("\nPrůměr: {0} ", prumer);
if (prumer < 1.5)
{
Console.Write("\nProspěl s vyznamenáním.");
}
else if (!zn.Contains(5))
{
Console.Write("\nProspěl.");
}
else
{
Console.Write("\nNeprospěl.");
}
Console.Write("\nNejlepší známka: {0} ", zn.Min());
Console.Write("\nNejhorší známka: {0} ", zn.Max());
Console.Write("\nPocet znamek 1: {0}", zn.Count(pom => pom.Equals(1) == true));
Console.Write("\nPocet znamek 2: {0}", zn.Count(pom => pom.Equals(2) == true));
Console.Write("\nPocet znamek 3: {0}", zn.Count(pom => pom.Equals(3) == true));
Console.Write("\nPocet znamek 4: {0}", zn.Count(pom => pom.Equals(4) == true));
Console.Write("\nPocet znamek 5: {0}", zn.Count(pom => pom.Equals(5) == true));
Console.ReadKey();
}
}
}Jinak použití návěští a goto se budeme raději vyhýbat (jde to řešit klidně i whilem), ale chci naznačit i jiné možné techniky. Jinak pro určení počet známek v poli používám docela novou technologii LINQ. Zbytečný by určitě byl příkaz IF, který by měl moc řádků. ;-) Avšak, pokud jsi někde ve výukovém školním kurzu/předmětu, tak si to předělej do ifů...
Offline