C# wyszukiwanie normalne bĄbelkowe

0

zadanie

Danymi wejściowymi jest tablica o nazwie Wektor
zawierająca elementy typu int oraz zmienna o nazwie
Szukana, również typu int.
W wyniku działania algorytmu uzyskujemy indeks
pierwszego elementu w tablicy Wektor, którego wartość
jest identyczna z wartością zmiennej Szukana. Jeżeli
tablica Wektor nie zawiera poszukiwanej wartości, jako
wynik działania otrzymujemy wartość -1.

czyli podajemy dany element który szukamy i podaje nam na którym indeksie sie znajduję wyszukiwanie metodą zwykład i bĄbelkowa

może ktoś mi pomóc to ogarnąc napisałem cos takiego ale nie wiem czy dobrze

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Nadawnie tablicy elemtów losowych");
            string Zmienna;
            Random Generator;
            int Ileliczb;
            int Szukana;
            double[] Wektor;
            int i;
            int indeks;
            Generator = new Random();
            Console.WriteLine("Podaj liczbę elementów tablicy:");
            Zmienna = Console.ReadLine();
            Ileliczb = Int32.Parse(Zmienna);
            Wektor = new double[Ileliczb];
            for (i = 0; i < Wektor.Length; i++)//petla zapelniajaca tablice elemtami
            {
                Wektor[i] = Generator.Next(10);
            }
            Array.Sort(Wektor);
            for (i = 0; i < Wektor.Length; i++)//petla zapelniajaca tablice elemtami
            {
                Console.WriteLine(i + ". elemt: " + Wektor[i]);
            }

            Console.WriteLine("Podaj szukana liczbe:");
            Zmienna = Console.ReadLine();
            Szukana = Int32.Parse(Zmienna);

            indeks = Wyszukiwanie(Wektor, Szukana);
            Console.WriteLine("Szukana liczba jest na indeskie: " + indeks);

            //PAUSE
            Console.ReadLine();
        }

        public static int Wyszukiwanie(double[] Tablica, int x)
        {
            int i = 0;
            int wynik = -1;
            while (i < Tablica.Length && wynik == -1)
            {
                if (Tablica[i] == x)
                {
                    wynik = i;
                }
                i++;
            }
            return wynik;
        }
        public static int WyszukiwanieBabelkowe(double[] Tablica, int x)
        {
            int i = 0;
            int j;
            int k;
            int wynik = -1;
            int dlugosc;
            dlugosc = Tablica.Length;
            j = dlugosc;
            while (wynik != -1)
            {
                if (Tablica[i] <= x && Tablica[j] >= x)
                {
                    if (j % 2 != 0)
                    {
                        k = (j - i) / 2 + i;
                    }
                }
                else
                {
                    wynik = -1;
                }
            }

        }
    }
}
0
marcixe12 napisał(a):

Danymi wejściowymi jest tablica o nazwie Wektor
zawierająca elementy typu int oraz zmienna o nazwie
Szukana, również typu int.

Jeśli tak brzmi treść zadania, to dlaczego w Twoim kodzie tablica Wektor jest typu double, a nie int?

czyli podajemy dany element który szukamy i podaje nam na którym indeksie sie znajduję wyszukiwanie metodą zwykład i bĄbelkowa

może ktoś mi pomóc to ogarnąc napisałem cos takiego ale nie wiem czy dobrze

Jak chcesz wiedzieć czy dobrze napisałeś, to wstaw do tablicy Wektor jakieś zmienne nielosowe, tak żebyś wiedział na jakim indeksie występuje dana zmienna i sprawdź czy program zwraca Ci prawidłowe wyniki.

0

tylko mam problem z wyszukiwaniem bąbelkowym bo nie chodzi zwykłe po indeksach wyszukuję

mam taki błąd
**

Error 1 'ConsoleApplication1.Program.Wyszukiwanie(int[], int)': not all code paths return a value C:\Users\admin\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs 47 27 ConsoleApplication1
**

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Nadawnie tablicy elemtów losowych");
            string Zmienna;
            Random Generator;
            int Ileliczb;
            int Szukana;
            int[] Wektor;
            int i;
            int indeks;
            Generator = new Random();
            Console.WriteLine("Podaj liczbę elementów tablicy:");
            Zmienna = Console.ReadLine();
            Ileliczb = Int32.Parse(Zmienna);
            Wektor = new int [Ileliczb];
            for (i = 0; i < Wektor.Length; i++)//petla zapelniajaca tablice elemtami
            {
                Wektor[i] = Generator.Next(10);
            }
            Array.Sort(Wektor);
            for (i = 0; i < Wektor.Length; i++)//petla zapelniajaca tablice elemtami
            {
                Console.WriteLine(i + ". elemt: " + Wektor[i]);
            }

            Console.WriteLine("Podaj szukana liczbe:");
            Zmienna = Console.ReadLine();
            Szukana = Int32.Parse(Zmienna);

            indeks = Wyszukiwanie(Wektor, Szukana);
            Console.WriteLine("Szukana liczba jest na indeskie: " + indeks);

            //PAUSE
            Console.ReadLine();
        }

        public static int Wyszukiwanie(int[] Tablica, int x)
        {
            int i = 0;
            int wynik = -1;
            while (i < Tablica.Length && wynik == -1)
            {
                if (Tablica[i] == x)
                {
                    wynik = i;
                }
                i++;
            }
            return wynik;
        }
        public static int WyszukiwanieBabelkowe(int[] Tablica, int x)
        {
            int i = 0;
            int j;
            int k;
            int wynik = -1;
            int dlugosc;
            dlugosc = Tablica.Length;
            j = dlugosc;
            while (wynik != -1)
            {
                if (Tablica[i] <= x && Tablica[j] >= x)
                {
                    if (j % 2 != 0)
                    {
                        k = (j - i) / 2 + i;
                    }
                }
                else
                {
                    wynik = -1;
                }
            }

        }
    }
}
0

Jeżeli metoda jest w taki sposób zdefiniowana:

public static int WyszukiwanieBabelkowe(int[] Tablica, int x)

to musi zwracać jakąś wartość typu int. U Ciebie nic nie zwraca i stąd jest ten błąd.
Albo dodaj return na koniec tej metody, albo zmień jej definicję, tak żeby zwracała void, zamiast int.

0

oki juz poprawione jeszcze jak bys mi pomógł to wyświetlić

0

Nie możesz użyć Console.WriteLine do wyświetlenia?

0
  1. Co to jest "wyszukiwanie bąbelkowe"? Może binarne?
  2. Funkcja WyszukiwanieBabelkowe() ma zły warunek while - nigdy nie wykona żadnego kroku pętli
  3. A ogólnie funkcja ta wygląda na <ort>nie dokończoną</ort> - bo np. wartość k w ogóle nie jest używana
0

zle napisałem druga część zadania polega na tym ze daną tablicę ma sortować pózniej dzieli na pół sprawdza w której części znajduje się podany element i znów tą połowę dzieli na pół i aż znajdzie szukaną liczbę

i właśnie mam problem żeby to dokończyć

0

Zatem:

  • funkcja Wyszukiwanie to wyszukiwanie sekwencyjne
  • funkcja WyszukiwanieBabelkowe powinna zawierać sortowanie bąbelkowe i wyszukiwanie binarne
0

pomożesz mi to poprawić bo nie mam żadnych pomysłów

0

Nie znam C#, chociaż to jest tak proste, że można to zrobić w każdym normalnym języku z marszu.
Ale wierzę że Ci się uda...

Moja rada:

  1. zamień WyszukiwanieBabelkowe na:
public static int WyszukiwanieBabelkowe(int[] Tablica, int x)
{
  SortujBabelkowo(Tablica);
  return SzukajBinarnie(Tablica, x);
}
  1. zaimplementuj SortujBabelkowo
private static void SortujBabelkowo(int[] Tablica)
{
//...
}
  1. przenieś starą zawartość WyszukiwanieBabelkowe do SzukajBinarnie
private static int SzukajBinarnie(int[] Tablica, int x)
{
  //...
}
  1. dokończ implementację SzukajBinarnie

BTW ktoś Ci zrobił niedźwiedzią przysługę dając kod w którym brakuje najważniejszej części...

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