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

Kopiowanie zmiennych typu string

Ostatnio zmodyfikowano 2017-06-23 16:00
Autor Wiadomość
wisnia633
Temat założony przez niniejszego użytkownika
» 2017-06-18 08:01:56
Dodałem test na sprawdzający znalezienie 'Z'.
Program kopiuje wartość do zmiennej, natomiast w momencie zakończenie warunku if program jak by przestał działać i nie wykonuje reszty instrukcji po bloku.

C/C++
string kopiowanie( string wiersz_konwert )
{
    char szukanyZnakZ = 'Z';
    char szukanyZnakE = 'E';
    string wartoscZmiennejZ;
   
    size_t foundZ = wiersz_konwert.find( szukanyZnakZ );
    if( foundZ != string::npos )
    {
        wartoscZmiennejZ = wiersz_konwert.substr( foundZ + 1, 6 );
    }
    size_t foundE = wiersz_konwert.find( szukanyZnakE );
   
    if( foundE != string::npos )
    {
        wiersz_konwert.insert( foundE, wartoscZmiennejZ );
    }
   
    return wiersz_konwert;
}
P-162654
pekfos
» 2017-06-18 15:41:47
Dla jakich danych ten kod źle działa?
P-162662
wisnia633
Temat założony przez niniejszego użytkownika
» 2017-06-18 19:48:28
Założeniem kodu było odnalezienie znaku Z i skopiowanie znaków następujących po (w tym wypadku 0.300) do zmiennej wartoscZmiennejZ, do tego momentu działa.
Kolejna część kodu powinna odnaleźć zmienną E i wkleić przed nią wartoscZmiennejZ. Tu właśnie pojawia się problem, bo przy obecnym ustawieniu warunków nic się nie dzieje.
Kod działał w momencie usunięcia testu znalezienia Z, ale kopiował tylko pierwsze 6 znaków z danej linii i wklejał przed znalezione E. A takie nie było założenie kodu.

C/C++
string kopiowanie( string wiersz_konwert )
{
    char szukanyZnakZ = 'Z';
    char szukanyZnakE = 'E';
    string wartoscZmiennejZ;
   
    size_t foundZ = wiersz_konwert.find( szukanyZnakZ );
    if( foundZ != string::npos )
    {
        wartoscZmiennejZ = wiersz_konwert.substr( foundZ + 1, 6 );
    }
    size_t foundE = wiersz_konwert.find( szukanyZnakE );
   
    if( foundE != string::npos )
    {
        wiersz_konwert.insert( foundE, wartoscZmiennejZ );
    }
   
    return wiersz_konwert;
}


G0 F4800 E-1.0000
G0 F300 Z0.300
G0 X0.000 Y0.000 F10800
G1 X149.505 Y113.865 E9.3758 F600
G1 X149.505 Y86.250 E10.7535
G1 X152.946 Y86.250 E10.9251
G1 X152.946 Y113.865 E12.3028
P-162665
pekfos
» 2017-06-19 11:09:37
W tych danych nie ma wiersza, który zawiera Z i E.
P-162669
wisnia633
Temat założony przez niniejszego użytkownika
» 2017-06-19 19:05:58
Czyli teraz żeby osiągnąć pożądany efekt powinienem napisać funkcję która dostanie dwie zmienne "wartoscZmiennejZ, wiersz_odczyt" i tam powinienem poszukać znaków X,Y,E i wkleić to co mi potrzebne?
P-162691
pekfos
» 2017-06-19 19:28:36
A jaki jest pożądany efekt?
P-162692
wisnia633
Temat założony przez niniejszego użytkownika
» 2017-06-19 20:47:57
Pożądany efekt to wstawienie wartoscZmiennejZ w miejscu występowania w jednym wierszu X,Y,E, później muszę pousuwać kilka znaków ze miedzyinnymi X,Y,E,G1 itd. Poniżej efekt jaki oczekuje ostatecznie od programu. Pierwszy log to stan obecny "pośredni", drugi to stan końcowy jaki jest mi ostatecznie potrzebny.


G0 F4800 E-1.0000
G0 F300 Z0.300
G0 X0.000 Y0.000 F10800
G1 X149.505 Y113.865 E9.3758 F600
G1 X149.505 Y86.250 E10.7535
G1 X152.946 Y86.250 E10.9251
G1 X152.946 Y113.865 E12.3028




149.505 113.865 0.300
149.505 86.250 0.300
152.946 86.250 0.300
152.946 113.865 0.300
[/log/
P-162701
pekfos
» 2017-06-19 20:50:28
Przekazuj wartoscZmiennejZ do funkcji przez referencję.
P-162702
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona