Konwersja typów

Konwersja typów
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Witam mam 2 funkcje:

Kopiuj
void test1(char *wynik, char *s);

oraz

Kopiuj
double licz(string test[],int wielkosc);

i mój problem jest taki, że nie wiem jak zmienić ten wynik z pierwszej funkcji na string żeby można go było użyć jako test[] po prostu chce prze-konwertować char*wynik na string test[] ktoś byłby w stanie mi pomóc ?

NI
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
0

a

Kopiuj
test=wynik; 

nie działa?


Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
edytowany 1x, ostatnio: Niikelion
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

błąd: incompatible types in assignment of 'char*' to 'std::string [(((sizetype)(((ssizetype)wielkosc) + -1)) + 1)] {aka std::basic_string<char> [(((sizetype)(((ssizetype)wielkosc) + -1)) + 1)]}'

edytowany 1x, ostatnio: donex93
satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
1
Kopiuj
double licz(string test,int wielkosc);
vpiotr
lepiej byłoby z referencją (i pewnie const, ale bez większej ilości kodu tego nie stwierdzisz)
satirev
Wiem i dlatego wolałem nic nie dodawać, tylko uciąć co zbędne ;p
NI
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
0

no faktycznie....


Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Wtedy nie będzie mi poprawie działało licz (to jest funkcja do liczenia ONP)

edytowany 1x, ostatnio: donex93
vpiotr
Napisz czego oczekujesz, co Ci nie działa, a nie co przewidujesz.
satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
0

W takim razie powiedz dokładnie co te funkcje mają robić/pokaż więcej kodu.

D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0
Kopiuj
double MainWindow::onp_licz(string test[],int wielkosc){
        double S[wielkosc],wynik;      // stos
        int p = 0;            // wskaźnik stosu
        string e;             // element wyrażenia ONP
        double v1, v2;         // argumenty operacji
        stringstream ss;      // strumień łańcuchowy
        int i = 0;
        while (true)           // w pętli przetwarzamy wyrażenie ONP
        {
            e = test[i++];
            if (e == "=") break; // sprawdzamy koniec wyrażenia

            ss.str("");         // usuwamy wszelki tekst ze strumienia
            ss.clear();         // czyścimy błędy konwersji z poprzednich wywołań
            ss << e;            // odczytany element umieszczamy w strumieniu

            if (ss >> v1)        // konwertujemy na liczbę i sprawdzamy, czy nie było błędu
                // liczba
                S[p++] = v1;      // umieszczamy ją na stosie

            else
            {                   // operator
                v2 = S[--p];      // pobieramy ze stosu dwa argumenty
                v1 = S[--p];
                switch (e[0])      // wykonujemy operacje wg operatora
                {
                case '+': v1 += v2; break;
                case '-': v1 -= v2; break;
                case '*': v1 *= v2; break;
                case '/': v1 /= v2; break;
                }
                S[p++] = v1;      // wynik umieszczamy na stosie
            }
        }
        wynik = S[--p];
        return wynik;
} 
Kopiuj
void MainWindow::konwerterONP(char *wynik, char *s)
{
    char x, y;

    while (x = *s++) {                                     /* krok 1 */
        if (((x >= '0') && (x <= '9')) || (x == '.')) {    /* krok 2 */
            /* kopiowanie calej liczby z wejscia na wyjscie */
            do
                *wynik++ = x;
            while (x = *s, (((x >= '0') && (x <= '9')) || (x == '.')) && s++);
            *wynik++ = ' ';


                                   /* krok 1 */
   } else if (((x >= 'A') && (x <= 'Z')) ) {    /* krok 2 */
         /* kopiowanie calej liczby z wejscia na wyjscie */
     do
        *wynik++ = x;
    while (x = *s, (((x >= 'A') && (x <= 'Z'))) && s++);
   *wynik++ = ' ';


    } else if (x == '(')                               /* krok 3 */
            push((double)'(');

    else if (x == ')')                                 /* krok 4 */
            while ((y = (char)pop()) != '(')
                *wynik++ = y, *wynik++ = ' ';

    else {                                             /* krok 5 */
            while (y = (char)pop(),
                   y && ((y == '^') ||
                         ((y == '*') || (y == '/')) && (x != '^') ||
                         ((y == '+') || (y == '-')) && (x != '*') &&
                                           (x != '/')&& (x != '^')))
                *wynik++ = y, *wynik++ = ' ';

            push((double)y);
            push((double)x);
        }
    }

    while (x = (char)pop())                                /* krok 6 */
        *wynik++ = x, *wynik++ = ' ';

    *wynik = '\0';    /* zakonczenie lancucha wyjsciowego */
} 

jedna funkcja zmienia na zapis ONP np 2+2= zmienia na 2 2 + =
zaś druga liczy np z 2 2 + = wynik jest 4

Kopiuj
 char* sy = new char;
    char* wy = new char;
    sy=x.toLocal8Bit().data();
    konwerterONP(wy, sy);
edytowany 1x, ostatnio: donex93
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

to mi działa i problem zaczyna się gdy chce użyć

Kopiuj
w=onp_licz(test,100);

ponieważ nie wiem jak przypisać do test=wynik

NI
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
0

ok kolejny strzał :)

Kopiuj
string retrieveString(char* buf, int l);

L to długość bufora a bufor to twój char*


Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
edytowany 1x, ostatnio: Niikelion
Zobacz pozostały 1 komentarz
NI
gdzie masz błąd? int l-lenght
NI
taka czcionka jest na forum...
vpiotr
@Niikelion: przeczytaj poniższy link i stosuj w każdym języku programowania (C, Python, SQL, Excel VBA etc): https://www.python.org/dev/peps/pep-0008/#names-to-avoid
NI
czepiasz się... ja i tak korzystam z pełnych nazw zmiennych a tu daje przykład... jak to autor zapisze to jego problem
vpiotr
nie wiem z czego korzystasz, nie piszę Twojej biografii. Komentuję tylko powyższe.
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Jeśli dam po prostu

Kopiuj
string test[]={"2","2","+","="};
w=onp_licz(test,100);

to wszystko działa więc jest tylko problem z konwersją

NI
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
0

... to spróbuj tego sposobu który napisałem....


Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0

Albo nie wiem jak to użyć albo nie działa

NI
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
0

... pierwszy jest string czyli to do czego zapisujesz, pierwszy parametr funkcji to twój char* czyli po prosu wynik ale wynik jest w funkcji więc musisz go jakoś przekazac poza funkcję żeby go podać w innej a drugi parametr to długość twojego char* bo funkcja musi znać rozmiar


Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
D9
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 6 lat
0
Kopiuj
string test(wy, wielkosc);

czyli tak mam to użyć ? i w test będę miał już to prze-konwertowane dobrze myślę ?

NI
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
0

... jeśli się nie mylę:

Kopiuj
void test1(char &*wynik, char *se);
double licz (string retrivestring(wynik,sizeof(wynik)/sizeof(wynik[0]))); 

Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
twonek
co to jest char &amp;*wynik?
NI
wytwór mojej wyobraźni łączący &wynik i jego niedziałający pomysł *wynik
NI
  • Rejestracja:około 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
0

bo wynik jest w jednej funkcji a nie jest widoczny w drugiej...


Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:3 miesiące
0

Jak to dla mnie wygląda:
Pokazujesz hulajnogę i twierdzisz że ci to działa. Po czym pokazujesz nadwozie malucha i pytasz jak masz to dopasować.
Weź to wywal (oba kody) -napisz po ludzku o od razu analizując napis buduj stos ONP.
Oba ponieważ ten test "zaakceptuje" 1.2.3.4.5.6 jako jedną liczbę - jedno słowo bubel.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.