Cześć,
mam do napisania program, który będzie posiadał takie funkcje:
- Read( int T[], int len) – wczytuje do tablicy zbiór o liczbie elementów len,
- Write(int T[], int len) – wypisuje elementy zbioru po 10 elementów w linii
- Find(int T[], int len, int x) – zwraca 1 gdy x występuje w zbiorze T[]
- Sum(int A[], int nA, int B[], int nB) - wyznacza sumę zbiorów (A∪B)
- Product(int A[], int nA, int B[], int nB) - wyznacza część wspólną zbiorów (A∩B)
- Difference(int A[], int nA, int B[], int nB) - wyznacza różnicę zbiorów (A\B)
- Inclusion (int A[], int nA, int B[], int nB) – zwraca 1 gdy A ⊂B
- Equality (int A[], int nA, int B[], int nB) - zwraca 1 gdy zbiory A i B są równe
No i fajnie, pierwsze trzy funkcje mam, ogarniam, ale jak zrobić resztę? Po wczytaniu dwóch zbiorów ich sumę mogę na chłopski rozum wypisać tak, że po prostu wypiszę oba, no i działa, ale tylko w momencie kiedy elementy się nie powtarzają. A jakiego ifa (bo podejrzewam, że tu trzeba użyć funkcji if) trzeba wstawić, żeby program sprawdził czy się elementy nie powtarzają i wypisał te unikatowe?
I jak zrobić resztę? Proszę o jakieś naprowadzenie :)
Oto mój wybrakowany fragment kodu:
#include <stdio.h>
#include <stdlib.h>
#define LENGHT 150 // zdefiniowana dlugosc //
void wczytaj(int tab[], int len) // wczytywanie //
{
int i;
for (i = 0; i < len; i++)
{
printf(" tab[%i]= ", i);
scanf("%i", & tab[i]);
}
}
void wypisz(int tab[], int len) // wypisywanie //
{
int i;
printf("\n Elementy zbioru to: ");
for (i = 0; i < len; i++)
{
printf("%i ", tab[i]);
}
printf("\n");
}
int znajdz(int t[], int len, int x) // znajdowanie //
{
int i;
for (i = 0; i < len; i++)
if (x == t[i])
{
return i;
}
return len;
}
int main (void)
{
int odp, x, p;
int li = 0;
int tab[LENGHT];
int li1, li2, A[LENGHT], B[LENGHT];
do
{
printf("\n______________________________\n");
printf("Operacje na zbiorach:\n");
printf(" 1. Wczytaj\n");
printf(" 2. Wypisz\n");
printf(" 3. Znajdz\n");
printf(" 4. Suma zbiorow\n");
printf(" 5. Czesc wspolna zbiorow\n");
printf(" 6. Roznica zbiorow\n");
printf(" 7. Sprawdz czy A c B\n");
printf(" 8. Sprawdz czy A = B\n");
printf(" 9. Koniec programu\n");
printf("Wybierz opcje: ");
scanf("%d", &odp);
printf("______________________________\n");
switch (odp)
{
case 1:
printf("\n Podaj liczbe elementow zbioru: ");
scanf("%d", &li);
wczytaj(tab, li);
printf("\n Pobrano wartosci.\n");
break;
case 2:
wypisz(tab, li);
break;
case 3:
printf("\n Podaj szukany element: ");
scanf("%d", & x);
p = znajdz(tab, li, x);
if (p == li)
{
printf("\n Brak szukanego elementu\n");
}
else
{
printf("\n Szukany element jest na pozycji: %d\n", p);
}
break;
case 4:
printf("Zbior A.\n");
printf("Podaj liczbe elementow: ");
scanf("%d", &li1);
wczytaj(A, li1);
printf("\nZbior B.\n");
printf("Podaj liczbe elementow: ");
scanf("%d", &li2);
wczytaj(B, li2);
break;
case 5:
break;
case 6:
break;
case 7:
break;
case 8:
break;
case 9:
return 0;
default:
printf("\n Nie ma takiej odpowiedzi.\n");
break;
}
}
while (odp != 9);
return 0;
}