Wyznaczenie jednokrotnych elementów należących do tablicy A i B

Wyznaczenie jednokrotnych elementów należących do tablicy A i B
SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 49
0

Cześć.
Czy ktoś mógłby pomóc mi napisać projekt zaliczeniowy na algorytmy? Próbowałem coś napisać w C, ale zatrzymałem się na wypisaniu wspólnych elementów dwóch tablic.. Język programowania jest dowolny, aczkolwiek na uczelni mamy jak na razie tylko programowanie "bloczkowe".
Bardzo proszę o pomoc.

Dane są dwie tablice liczb całkowitych A i B o elementach uporządkowanych niemalejąco. Proszę wyznaczyć liczbę jednokrotnych elementów należących zarówno do tablicy A i B. Np. A={1,2,2,2,3,4,4,4,5,8,10}, B={2,2,4,4,4,4,10,16,20}. Wspólne elementy to {2,2,4,4,4,10} ale tylko trzy występują jednokrotnie. Są to{2,4,10}, więc szukana liczba to 3.

IceHeart
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 312
0

Co to za kierunek i uczelnia co daje tak trudne projekty na zaliczenie ?

LG
  • Rejestracja: dni
  • Ostatnio: dni
0

Proszę wyznaczyć liczbę jednokrotnych elementów należących zarówno do tablicy A i B.

Ale tu nie ma nic o wypisywaniu elementów które są zawarte w obydwóch zbiorach ??

SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 49
0

Nie, jedynie ma policzyć i wypisać: 3

PS: Ja jedynie wypisałem te elementy wspólne do tablicy C. Dalej nie wiem co zrobić, a termin goni :/

LG
  • Rejestracja: dni
  • Ostatnio: dni
0

No ale to po co je wypisałeś skoro to niepotrzebne ?? Zamiast wypisywać w tym swoim kodzie, inkrementuj licznik i na koniec właśnie jego wypisz.

SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 49
0

Ale wtedy wypisze mi wspólne elementy, a nie liczbę jednokrotnych

LG
  • Rejestracja: dni
  • Ostatnio: dni
0

To pamiętaj które już dodałeś do wspólnego podzbioru i ich duplikatów nie dodawaj.

SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 49
0

A jak to zrobić?
Jestem początkujący jeśli chodzi o programowanie.

LG
  • Rejestracja: dni
  • Ostatnio: dni
0

I niby jestes na studiach ;p Leser na moje jesteś, no ale dawaj ten kod co tu naskrobałeś to pomożemy ci odkryć poprawny sposób.

SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 49
0

Poszedłem na studia, aby czegoś się nauczyć. Programowania jeszcze nie miałem, ale uczę się tego sam.

Kopiuj
#include <stdio.h>
#include <stdlib.h>
 
using namespace std;
 
int main( int argc, char * argv[] )
{ int a, b, n, i, j;
 
int tabA[11]={1,2,2,2,3,4,4,4,5,8,10}, tabB[11]={2,2,4,4,4,4,10,16,20}, tabC[11];
 
for( a = 0; a < n; a++ )
{
    for( b = 0; b < n; b++ )
    {
        if( tabA[ a ] == tabB[ b ] )
        {
            tabC[i] = tabA[a];
            a++;
        }
    }
}
 
printf( "Elementy wspolne: %d\n", tabC[n] );
    system( "PAUSE" );
    return 0;
}
LG
  • Rejestracja: dni
  • Ostatnio: dni
0

Wróc - teraz patrze, że ten kod nie ma sensu. Gdzie chodzisz po tablicy C ?? Gdzie inicjalizujesz n ? nieee to za ciężkie chyba na dziś dla mnie.

GregoryI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 238
1
Kopiuj
 #include <stdio.h>
#include <stdlib.h>

using namespace std;

int main( int argc, char * argv[] )
{ 
   //niektóre zmienne nie są zainicjowane (n, i oraz j)
    int a, b, n, i, j;

    //zgaduję, że te tablice są podane w zadaniu i na sprawdzeniu nie będzie wymogu odczytu z wprowadzonych innych danych przez prowadzącego
int tabA[11]={1,2,2,2,3,4,4,4,5,8,10}, tabB[11]={2,2,4,4,4,4,10,16,20}, tabC[11];

//zamiast "a, b, c..." do for() tradycyjnie stosuje się "i, j, k"
//zmienne (a oraz b) można zainicjować w for() na zasadzie int a=0, int b=0;
//!!! zmienna "n" nie jest zainicjowana żadną wartością, więc nie masz działania logicznego ( albo masz... a < coś-nikt-nie-wie-co),
//tak więc albo weź wymiar tablicy jako zmienną albo "11" jeśli wielkość tablicy nie zostanie w przyszłości zmieniona
for( a = 0; a < n; a++ )
{
    //!!! zmienna "n" nie jest zainicjowana żadną wartością, więc nie masz działania logicznego ( albo masz... b < coś-nikt-nie-wie-co)
//tak więc albo weź wymiar tablicy jako zmienną albo "11" jeśli wielkość tablicy nie zostanie w przyszłości zmieniona
    for( b = 0; b < n; b++ )
    {
        if( tabA[ a ] == tabB[ b ] )
        {
            //i także nie jest w żaden sposób określone ( dla pola w tabC o indeksie coś-nikt-nie-wie-co zapisz wartość z tabA[a]
            tabC[i] = tabA[a];
            
            //proszenie się o kłopot, zwiększając wartość "a" z tego miejsca pętla for(b=0 ... ) dalej się wykonuje i może wywalić błędy;
            //w tym miejscu powinno nastąpić przerwanie pętli i przejście do następnego elementu z pętli for(a=0...)
            a++;
        }
    }
}

//n niezainicjowane, tak więc wyskoczy błąd ( tutaj zrób sobie po prostu string ze wszystkimi wartościami z tabC[] - pętla for() zda egzamin do tego, i później dodaj go do printf zamiast tabC[n])
printf( "Elementy wspolne: %d\n", tabC[n] );
    system( "PAUSE" );
    return 0;
}

Tyle uwag. Co do samego zadania nie będę pisać jak rozwiązać, ale po poprawieniu tych rzeczy powinno być łatwiej.
Nie używaj do porównywania niezainicjowanych zmiennych.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.