Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tworzenie tablicy C zawierającą elementy występujące w obu tablicach (wspólne dla A, B)

Ostatnio zmodyfikowano 2013-11-28 11:42
Autor Wiadomość
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:
C/C++
#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
P-97655
pekfos
» 2013-11-27 15:04:04
Dla każdej wartości sprawdzaj, czy w drugiej tablicy też jest.

C/C++
int A[ n ], B[ n ], C[ n ];
Nie można tak tworzyć tablic.
P-97656
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.
P-97658
artur47wien
Temat założony przez niniejszego użytkownika
» 2013-11-27 15:37:31
cos w tym stylu?
C/C++
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 ^^
P-97660
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.
P-97678
docentpp
» 2013-11-27 19:29:40
Nalezy tez usunąć błąd

C/C++
for( i = 0; i < n; i++ )
{
    if( A[ i ] = B[ i ] ) // Tutaj błąd , musi być ==
    {


czyli tak

C/C++
for( i = 0; i < n; i++ )
{
    if( A[ i ] == B[ i ] ) // teraz dobrze !
    {
P-97690
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 ;/

C/C++
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 ] );
P-97733
pekfos
» 2013-11-28 11:42:06
Wypisuj elementy tablicy w pętli.
P-97735
« 1 »
  Strona 1 z 1