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

Problem ze wskaźnikami

Ostatnio zmodyfikowano 2016-01-02 14:38
Autor Wiadomość
Masmix
Temat założony przez niniejszego użytkownika
Problem ze wskaźnikami
» 2016-01-02 14:05:32
Witam,
mam do napisania program w którym:
"Funkcje:WCZYTAJ_TAB(x),WYPISZ_TAB(x), NIEp_TAB(x,y), MAX_MIN_TAB(x) umożliwiają:
- Stworzenie dwóch tablic n-elementowych A i B
- Stworzenie tablicy C w której znajdowałyby się wszystkie elementy nieparzyste
znajdujące się w tablicy A i B
- wydrukowanie wyniku końcowego: tablic A, B i C. Dodatkowo program powinien przesyłać argumenty do funkcji za pomocą
wskaźnika oraz operować wewnątrz funkcji odpowiednimi wskaźnikami. Tablice
powinny być stworzone dynamicznie w main-ie a ich rozmiar wczytany z klawiatury".
Moim problemem jest przesłanie nieparzystych elementów dwóch pierwszych tablic do 3 tablicy. Gdy chcę wypisać zawartość trzeciej tablicy w funkcji "WYPISZ_TAB" pokazują mi się liczby kompletnie nie związane z zadaniem. Natomiast gdy wypisuję te liczby "na bieżąco" podczas wykonywania funkcji "NIEp_TAB" to normalnie mi się pokazują. Bardzo proszę o pomoc. Wklejam niżej program :

#include <iostream>
using namespace std;
void WCZYTAJ_TAB(int *wsk1, int *wsk2,int a);
void WYPISZ_TAB(int *wsk1, int *wsk2,int *wsk3,int a);
void NIEp_TAB(int *wsk1, int *wsk2,int *wsk3,int *wsk4,int a);



int main()
{
int a;
cout << " Jaki ma byc rozmiar tablicy?" << endl;
cin >> a;
int *wsk1;
wsk1 = new int/;
int *wsk2;
wsk2 = new int/;
int *wsk3;
wsk3 = new int/;

WCZYTAJ_TAB(wsk1,wsk2,a);
NIEp_TAB(wsk1,wsk2,wsk3,wsk4,a);
WYPISZ_TAB(wsk1,wsk2,wsk3,a);

delete []wsk1;
delete []wsk2;
delete []wsk3;

}

void WCZYTAJ_TAB(int *wsk1, int *wsk2, int a)
{

 for(int i=0;i<a;i++)
 {
    cout << " Podaj pierwsza dane dla "<<i<<" elementu 1 tablicy "<<endl;
    cin >>*wsk1 ;
    *wsk1++;

 }
 for(int i=0;i<a;i++)
 {
    cout << " Podaj pierwsza dane dla "<<i<<" elementu 2 tablicy "<<endl;
    cin >>*wsk2 ;
    *wsk2++;
}
}


void NIEp_TAB(int *wsk1, int *wsk2,int *wsk3,int *wsk4,int a)
{
    for(int i=0;i<a;i++)
 {
    if(*wsk1%2==1)
    {
        *wsk3=*wsk1;
        cout <<"liczba nieparzysta " <<*wsk3<< endl;   //Tutaj normalnie są wypisywane
        *wsk1++;
        *wsk3++;
    }
    else
    {
        *wsk1++;
    }
 }
     for(int i=0;i<a;i++)
 {
    if(*wsk2%2==1)
    {
        *wsk3=*wsk2;
         cout <<"liczba nieparzysta " <<*wsk3<< endl;  //Tutaj normalnie są wypisywane
        *wsk3++;
        *wsk2++;
    }
    else
    {

        *wsk2++;
    }
 }
}

void WYPISZ_TAB(int *wsk1, int *wsk2, int *wsk3,int a)
{
        cout << " Dane w tab1 wynosza :" <<endl;
    for(int i=0;i<a;i++)
 {
    cout << *wsk1 << endl;
    *wsk1++;
 }

    cout << " Dane w tab2 wynosza :" <<endl;
    for(int i=0;i<a;i++)
 {
     cout << *wsk2 << endl;
      *wsk2++;

 }
     cout << " Dane w tab3 wynosza :" <<endl;       //Natomiast tutaj już nie są
    for(int i=0;i<a;i++)
 {
     cout << *wsk3 << endl;
      *wsk3++;

 }
}
P-142695
carlosmay
» 2016-01-02 14:38:45
Przesuwasz wskaźnik do przodu (inkrementujesz), a nie cofasz go do początku tablicy.
Albo pamiętaj o cofaniu wskaźnika, albo stosuj arytmetykę wobec wskaźnika (wtedy zawsze pokazuje początek).
P-142697
« 1 »
  Strona 1 z 1