• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

z tablicy w drugiej tablicy - szukanie watości

Object Storage Arubacloud
0 głosów
92 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez roxy32l Początkujący (470 p.)
Cześć.

Zmagam się z takim zadaniem:

1. Użytkownik podaje ciąg liczb.

2. Użytkownik podaje liczby aby program wypisał na którym miejscu znajdują się w ciągu.

Z uwagi, że użytkownik decyduje o długości ciągu i ilości pytanych liczb, muszą być to tablice.

Czy ktoś może podpowiedzieć jak to rozsądnie zrobić?

Przykład: Ciąg 5, 6, 7, 8 pytane liczby: 6, 8 znajdują się na miejscu: 1 oraz 3 w tablicy

Dzięki!

1 odpowiedź

0 głosów
odpowiedź 4 listopada 2020 przez KopfSzmercen Bywalec (2,870 p.)
Najprostszy sposób: zapisujesz ciąg w jednej tablicy, zapisujesz liczby które chcesz znaleźć w drugiej.

Następnie dla każdego szukanego elementu iterujesz po tablicy i kiedy znajdziesz liczbę wpisujesz indeks do na przykład tablicy liczb do znalezienia (skoro jest już znaleziona to nie będzie już potrzebna) albo możesz zrobić tablicę dwuwymiarową w której A[0] to szukana a A[1] to index i zatrzymujesz pętlę (pod warunkiem,że dany element występuje tylko raz). Robisz to samo, aż znajdziesz ostatni element z tablicy szukanych.

Na sam koniec robisz pętlę dla każdego elementu w wynikach i wypisujesz, możesz dodać tekst.
komentarz 4 listopada 2020 przez roxy32l Początkujący (470 p.)

"każdego szukanego elementu iterujesz po tablicy i kiedy znajdziesz liczbę wpisujesz indeks do na przykład tablicy" - właśnie z tym krokiem mam problem. Próbowałam zrobić pętle w pętli wraz z warunkami: jeżeli jakiś index z pierwszej tablicy jest równy, któremuś z drugiej tablicy to wypisz index. Dla liczb, których nie ma wgl w drugiej tablicy ma napisać, że nie znaleziono.

Problem jest w tym, że informacje o tym, że nie znalazł wypisuje dla każdego indexu, z którym nie jest równy w drugiej tablicy a nie, że nie znalazł wgl.

Czyli: Ciąg 5, 6, 7, 8 pytana liczba: 6

wynikiem było dla 6: nie znaleziono, 6, nie znaleziono, nie znaleziono.

Dołączam kod.

for(int i=0, i<wielkoscTablicyZszukanymi, i++)
    {
        for(int j=0, j<wielkoscTablicyZciagiem, j++)
        {
            if(tablicaZszukanymi[i]==tablicaZciagiem[j])
            {
                znaleziono na indeksie: j;
            }
            else{
                nie znaleziono;
            }
        }
    }

 

komentarz 4 listopada 2020 przez KopfSzmercen Bywalec (2,870 p.)
edycja 4 listopada 2020 przez KopfSzmercen

Wystarczy że nie użyjesz instrukcji else. Nie jest konieczne uzywanie else czy else if po if.

W taki sposób:

If - sprawdzam czy to ta sama liczba - jeśli tak to wpisuje, jeżeli nie to jadę dalej i nie interesuje mnie nic więcej.

Dopiero jak przejdziesz całą tablicę możesz określic czy liczbę znaleziono czy nie.

for(int i=0, i<wielkoscTablicyZszukanymi, i++)
    {
        for(int j=0, j<wielkoscTablicyZciagiem, j++)
        {
            if(tablicaZszukanymi[i]==tablicaZciagiem[j])
            {
                znaleziono na indeksie: j;
                break
            }
        }
            nie znaleniono
    }

 

komentarz 4 listopada 2020 przez roxy32l Początkujący (470 p.)
edycja 6 listopada 2020 przez roxy32l

Hej.

Udało mi się wypisać poprawny numer indeksu, na którym jest dana liczba.

Pozostał problem nie znaleziono. Wciąż jest wyświetlane nawet jeżeli liczba została znaleziona.

Dodałam coś takiego:

bool flaga = false;
    for(int i=0; i<wielkoscTablicyZszukanymi; i++)
    {
        flag = false;
        for(int j=0; j<wielkoscTablicyZciagiem; j++)
        {
            if(tablicaZszukanymi[i]==tablicaZciagiem[j])
            {
                cout << "znaleziono na indeksie: " << j << endl;
                flaga = true;
                break;
            }

        }
        if(!flaga)
        cout << "Nie znaleziono." << endl;
    }

 

Podobne pytania

0 głosów
3 odpowiedzi 506 wizyt
pytanie zadane 9 maja 2019 w Java przez Paweł123 Nałogowiec (33,500 p.)
0 głosów
4 odpowiedzi 566 wizyt
pytanie zadane 24 stycznia 2017 w C i C++ przez vega Użytkownik (510 p.)
0 głosów
1 odpowiedź 547 wizyt
pytanie zadane 3 listopada 2022 w C# przez JoannS Początkujący (250 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...