Witam, napisałem sobie funkcję, która jako parametr przyjmuje ciąg znaków(string), i zwraca wskaźnik do tablicy int, czyli np. jako parametr podstawie ciąg znaków 1234, to funkcja zwróci wskaźnik do tablicy w której zapisze sie 4,3,2,1 już jako liczby. Funkcja działa poprawnie z jedną tablicą, jeśli dochodzi druga to już jest problem. Nie wiem czy to sprawa błędu w algorytmie funkcji czy coś nie tak ze wskaźnikami? Poniżej dwa kody, pierwszy nie działa, druga działa ale tylko w tym przypadku, kody wyglądają podobnie, różnica jest jedynie w kolejności zapisu liczba2=strtab(string2);
#include<iostream>
#include<conio.h>
#include<string>
#include<stdlib.h>
using namespace std;
int* strtab(string a)
{
int liczby[1000];
int* wsk;
wsk=liczby;
char buff_ch[1];
int index=a.length();
int int_tab[1000];
int h=0;
int bufor[1000];
for(int i=0;i<a.length();i++)
{
buff_ch[0]=a[i];
int_tab[i]=atoi(buff_ch);
}
for(int i=index; i>0;i--)
{
bufor[i]=int_tab[h];
h++;
}
for(int i=0;i<a.length();i++)
{
wsk[i]=bufor[i+1];
}
return wsk;
}
//------------------------------------------------------------------------
int main()
{
int* liczba1;
int* liczba2;
string string1;//lancuch do pierwszej liczby podawanej przez uzytkownika
string string2;//lancuch do drugiej liczby podawanej przez uzytkownika
cout<<"Podaj pierwsza liczbe: ";
cin>>string1;
cout<<endl;
cout<<"Podaj druga liczbe: ";
cin>>string2;
cout<<endl;
liczba1=strtab(string1);
liczba2=strtab(string2); // < patrz tu jest różnica międy dwoma kodami!
for(int i=0;i<string1.length();i++)
{
cout<<liczba1[i];
}
cout<<endl;
for(int i=0;i<string2.length();i++)
{
cout<<liczba2[i];
}
cout<<endl;
getch();
return 0;
}
I drugi działający
#include<iostream>
#include<conio.h>
#include<string>
#include<stdlib.h>
using namespace std;
int* strtab(string a)
{
int liczby[1000];
int* wsk;
wsk=liczby;
char buff_ch[1];
int index=a.length();
int int_tab[1000];
int h=0;
int bufor[1000];
for(int i=0;i<a.length();i++)
{
buff_ch[0]=a[i];
int_tab[i]=atoi(buff_ch);
}
for(int i=index; i>0;i--)
{
bufor[i]=int_tab[h];
h++;
}
for(int i=0;i<a.length();i++)
{
wsk[i]=bufor[i+1];
}
return wsk;
}
//------------------------------------------------------------------------
int main()
{
int* liczba1;
int* liczba2;
string string1;//lancuch do pierwszej liczby podawanej przez uzytkownika
string string2;//lancuch do drugiej liczby podawanej przez uzytkownika
cout<<"Podaj pierwsza liczbe: ";
cin>>string1;
cout<<endl;
cout<<"Podaj druga liczbe: ";
cin>>string2;
cout<<endl;
liczba1=strtab(string1);
// < patrz tu jest różnica międy dwoma kodami!
for(int i=0;i<string1.length();i++)
{
cout<<liczba1[i];
}
cout<<endl;
liczba2=strtab(string2);
for(int i=0;i<string2.length();i++)
{
cout<<liczba2[i];
}
cout<<endl;
getch();
return 0;
}