Problem jest z komunikacją konsoli, bo jeśli za Console.ReadLine wstawisz jakąś liczbę i uzupełnisz cyframi tablicę, cała reszta działa. System odczytuje je jako brak argumentów. Prawdopodobnie ucieka ci cały kod i wykonuje automatycznie, zamiast poczekać na wprowadzenie danych. Trzeba system zablokować przed wywołaniem danych. Musisz o konsoli dokładniej poczytać w dokumentacji. Tutaj chcę Tobie pokazać o Co mi chodzi
using System;
namespace ca_Spoj_1102
{
class Program
{
static void Main(string[] args)
{
//Console.WriteLine("Ile ma być cyfr: ");
//int iloscTestow = int.Parse(Console.ReadLine()); // system odczytuje tutaj jako brak argumentów, nie wprowadzono danych
int iloscTestow = 7;
int[] liczbyDoSredniej = new int[iloscTestow];
double tymczasowa = 0;
double roznica = 110;
int wartoscNajblizszaSredniej = 0;
//Console.WriteLine("Enter a number: ");
//int x = int.Parse(Console.ReadLine()); // system odczytuje tutaj jako brak argumentów, nie wprowadzono danych
int x = 7;
double sum = 0;
for (int i = 0; i < x; i++ )
{
Console.WriteLine("Ange tal {0}: ", i);
//double number = double.Parse(Console.ReadLine()); system odczytuje tutaj jako brak argumentów, nie wprowadzono danych
double number = i;
liczbyDoSredniej [i] = (int)number;
sum += number;
}
double srednia = 0;
srednia = sum / liczbyDoSredniej[0];
for (int i = 0; i < x; i++)
{
tymczasowa = srednia - liczbyDoSredniej [i];
if (tymczasowa < 0)
{
tymczasowa = tymczasowa * (-1);
}
if (tymczasowa < roznica)
{
roznica = tymczasowa;
wartoscNajblizszaSredniej = liczbyDoSredniej [i];
}
}
Console.WriteLine("wartosc najblizsza sredniej {0}", wartoscNajblizszaSredniej);
Console.ReadLine();
}
}
}
Jeśli chcesz wywołać kod, który będzie generował liczbę najbardziej zbliżoną do liczby średniej arytmetycznej. Możesz skorzystać z tego kodu:
using System;
using System.Collections;
using System.Collections.Generic;
namespace ca_Spoj_1102
{
class Program
{
static void Main(string[] args)
{
int[] liczbyDoSredniej = new int[] {5,8,8,3,6,3,5}; // test
int result = 0;
List<int> terms = new List<int>(); // tablica przechowująca liczby po odjęciu elementów liczbyDoSRedniej przez sredniaAryt
Console.WriteLine ("Wstaw liczbę - z ilu ma się składać średnia"); // opis wejsciowy dla konsoli
Console.Write (" ");
int suma = 0;
for (int i = 0; i < liczbyDoSredniej.Length; i++) {
suma += liczbyDoSredniej [i];
}
int sredniaAryt = suma / liczbyDoSredniej.Length;
Console.WriteLine ("srednia {0} suma - {1}", sredniaAryt, suma); // mala pomoc przy przegladaniu
foreach (int x in liczbyDoSredniej) {
Console.WriteLine ("liczby {0} ", x); // mala pomoc przy przegladaniu
}
for (int k = 0; k < liczbyDoSredniej.Length; k++) {
terms.Add((liczbyDoSredniej [k] > sredniaAryt) ? liczbyDoSredniej [k] - sredniaAryt : sredniaAryt - liczbyDoSredniej [k]); // do tablicy terms wstawia nowe liczby świadczace o różnicy między średnią a elementami tablicy doSredniej
}
int[] terms2 = terms.ToArray(); // konwersja tablicy terms do tablicy terms2
int pomoc = terms2[0]; // zmienna pomostowa
for (int h = 0; h < liczbyDoSredniej.Length; h++) {
result = (terms2 [h] > pomoc) ? pomoc : pomoc = terms2 [h]; // wyciąga najmniejszą liczbę z tablicy terms2
}
foreach (int y in terms2) {
Console.WriteLine ("liczby po odjęciu {0} ", y); // mala pomoc przy przegladnaiu
}
int porownajIndex = Array.IndexOf (terms2, result); // pobiera index wyniku result
Console.WriteLine("wartość najbliższa średniej to {0}[{1}]",liczbyDoSredniej[porownajIndex],porownajIndex); // index z tablicy terms2 przypisuje do tablicy doSredniej by zamiast wartości tablicy terms2, wyciągnąć z doSRedniej
}
}
}