Gdyby ktoś był tak miły i pokazał mi jak mogę wypisać index największego elementu byłbym wdzięczny. Wiem że istnieje metoda Indexof() ale nie wiem jak jej użyć.
Ten kod nie ma sensu *tab, to wartość pod adresem tab a nie index jeśli już to int index = 0, nie zmienia to faktu błędu kompilacji, której być nie powinno jeśli to są integery, może podaj kod to ci poprawimy, bo cięzko tak stwierdzić bawiąc sie w kalambury.
Wiem, wiem index powinien być 0 Namieszałem trochę, za późno dla mnie
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
private static int[] tab={10,20,1,3,5,6,7,4,20,51};
static void Main(string[] args)
{
int index=0;
for (int i = 1; i < tab.Length; i++)
if (tab[i] > tab[index])
index = i;
Console.WriteLine(index);
}
}
}
Nie zmienia to faktu, że pytający mógłby przepisywać ze zrozumieniem
index=tablica[0];
to jakbyś wpisał
index=1305;
nic dziwnego ze nie moze znaleźc takiego indeksu, swoja droga nigdy nie pisałem w c# ale w javie to by było jakieś bardziej intuicyjne: Array Index Out Of Bounds Exception
Autor tematu musiał źle skopiować kod (nie miał deklaracji zmiennej). W .NET w sytuacji, którą opisujesz, wyrzucany jest wyjątek IndexOutOfRangeException.
Ale co jeszcze chcesz wyjaśniać drobok napisał ci co masz poprawić zamiast index = tablica[0] -> index = 0; Chyba, że chcesz rozwiązać problem z wieloma powtórzeniami, wtedy możesz albo zrobić to w dwóch iteracjach, przejść całość znajdując największy, a następnie drugi raz wypisując te indeksy, które zawierają wartość największy, albo użyć dodatkowej pamięci i zrobić to w jednym przejściu, pesymistycznie potrzeba wtedy 2x rozmiar elementów.
Wybacz matzu nie przeczytałem twojego pierwszego postu. Z wieloma powtórzeniami proponuję zrobić listę index’ów np tak:
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
private static int[] tab={10,51,1,3,5,6,7,4,20,51};
static void Main(string[] args)
{
List index = new List();
index.Add(0);
for (int i = 1; i < tab.Length; i++)
if (tab[i] >= tab[index[index.Count - 1]])
if (tab[i] == tab[index[index.Count - 1]])
index.Add(i);
else
{
index.Clear();
index.Add(i);
}
for(int i=0;i
Console.WriteLine(index[i]);
System.Console.ReadKey();
}
}
}
Niestety z list nigdy nie korzystałem, więc gwarancji poprawności kodu nie dam
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int[] input = new int[] { 1305, 12, -3, 788, 2, 788, -10, 0, 9, -55, 1305 };
List output = new List();
int max = input.Max(); // Funkcja Max zdefiniowana jest w obrębie System.Linq
for (int i = 0; i < input.Length; i++)
if (input[i] == max)
output.Add(i);
foreach (int i in output)
Console.WriteLine(i);
}
}
}