artur47wien Temat założony przez niniejszego użytkownika |
Tworzenie tablicy C zawierającą elementy występujące w obu tablicach (wspólne dla A, B) » 2013-11-27 15:02:03 Witam, mam problem z takim zadaniem: Dane: N, tablice {Ai} i=0,...,N-1, {Bi} i=0,...,N-1, każdaróżnowartościowa. Wczytać dane, utworzyć tablicę C zawierającą elementy występujące w obu tablicach (wspólne dlaA, B). Wyświetlić wyniki. Mam coś takiego: #include <stdio.h> #include <stdlib.h> int main( int argc, char * argv[] ) { int n, i, j; printf( "Podaj ilosc elementow: \n" ); scanf( "%d", & n ); int A[ n ], B[ n ], C[ n ]; for( i = 0; i < n; i++ ) { printf( "Podaj elementy tablicy A: \n" ); scanf( "%d", & A[ i ] ); } for( i = 0; i < n; i++ ) { printf( "Podaj elementy tablicy B: \n" ); scanf( "%d", & B[ i ] ); } system( "PAUSE" ); return 0; } jak zrobić żeby C wyswietlalo elementy wspolne? Probowalem C=A+B, ale to sumuje dane elementy obu tablic. Pozdrawiam i proszę o szybką pomoc |
|
pekfos |
» 2013-11-27 15:04:04 Dla każdej wartości sprawdzaj, czy w drugiej tablicy też jest. int A[ n ], B[ n ], C[ n ];
|
Nie można tak tworzyć tablic. |
|
Monika90 |
» 2013-11-27 15:22:04 Nie można tak tworzyć tablic. |
W C++ nie można, ale w C można, jeżeli implementacja to wspiera (tzw. VLA są opcjonalnym elementem ISO C). Natomiast zadanie należy rozwiązać za pomocą pętli, dla każdego elementu tablicy A sprawdzasz czy jest on w B i jeśli jest, to dodajesz go do C. |
|
artur47wien Temat założony przez niniejszego użytkownika |
» 2013-11-27 15:37:31 cos w tym stylu? for( i = 0; i < n; i++ ) { if( A[ i ] = B[ i ] ) { C[ i ] = A[ i ]; printf( "Elementy wspolne tablic A i B: %d\n", C[ i ] ); } }
kombinuje jak umiem, ale nic mi nie wychodzi, ciemny z tego jestem jak tabaka w rogu a niestety sprawdzian za pasem ^^ |
|
Monika90 |
» 2013-11-27 17:28:29 Pierwsza linijka jest dobra. Musisz użyć pętli w pętli, wewnętrzną pętlę można ewentualnie umieścić w odrębnej funkcji. |
|
docentpp |
» 2013-11-27 19:29:40 Nalezy tez usunąć błąd for( i = 0; i < n; i++ ) { if( A[ i ] = B[ i ] ) {
czyli tak for( i = 0; i < n; i++ ) { if( A[ i ] == B[ i ] ) {
|
|
artur47wien Temat założony przez niniejszego użytkownika |
» 2013-11-28 09:07:33 doszedlem do czegos takiego, ale to znowu zlicza mi ilosc elementow wspolnych, zamiast wypisywac je po kolei ;/ for( a = 0; a < n; a++ ) { for( b = 0; b < n; b++ ) { if( A[ a ] == B[ b ] ) { C[ i ] = A[ a ]; a++; } } } printf( "Elementy wspolne: %d\n", C[ a ] );
|
|
pekfos |
» 2013-11-28 11:42:06 Wypisuj elementy tablicy w pętli. |
|
« 1 » |