/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
array tildeling med for løkke
Fra : Erik


Dato : 21-11-02 11:17

Hej,

Jeg har forgæves forsøgt at få de enkelte tegn fra en String (stort S), ind
i et array, således at jeg kan tilgå hver enkel talværdi (regner med at
bruge .ToInt) ved at sige fx.
t4 = array[3].

En for-løkke falder mig naturlig til anvendelsen, men jeg kan overhoved ikke
få det til at køre. Stringens indhold er fast på 10 tegn. Kan man i samme
loop lave converteringen fra String til int? hvordan ville man gøre fra
string til int (altså string med lille). Jeg fik en god forklaring af en
mht. ansistring og String, men jeg har altså stadig lidt konverterings
problemer.

Håber en kan hjælpe med loop.

med venlig hilsen

Erik



 
 
Igor V. Rafienko (21-11-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 21-11-02 12:07

[ kire100@ofir.dk ]

[ ... ]

> Jeg har forgæves forsøgt at få de enkelte tegn fra en String (stort
> S),


.... og en "String" er ...? (I motsetning til std::string, der det du
forsøker å løse ikke er et problem).


> En for-løkke falder mig naturlig til anvendelsen, men jeg kan
> overhoved ikke få det til at køre.


Så vis den koden du _har_ skrevet, forklar hva den faktisk gjør og
hvordan det er forskjellig fra det du vil at den skal gjøre.


> Stringens indhold er fast på 10 tegn. Kan man i samme loop lave
> converteringen fra String til int? hvordan ville man gøre fra string
> til int (altså string med lille).


Hvis du vil konvertere hvert tegn i en std::string til en int, så er
kanskje ikke nødvendig å gjøre noe spesielt, da tegn i seg selv kan
brukes som om de var tall i visse kontekster. Du kan naturligvis
konvertere de eksplisitt til en passende talltype vha. fx.
static_cast<>.

Hvis _hele_ std::string inneholder et tall som du vil konvertere fra
den tekstlige representasjonen til den interne representasjonen for
tall, så finnes det flere måter å gjøre det på -- alt fra atoi til
lexical_cast<> fra boost.org.





ivr
--
<peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
<peder> php er bare fra foajeen
            -- pederst på irc

Erik (21-11-2002)
Kommentar
Fra : Erik


Dato : 21-11-02 15:11

Tak for svaret, her er noget mere info:


TEST:
String arrTal[10], vTal, gTal = "2631895839"; // variabelt tal,
vTal=variabelt tal, gTal = gangetal

int t, i;
for (t=0, i=1; t<10; t++, i++);
{
arrTal[t] = tal[i];

}

String arrGange[10], tal = "4694785364";

int t, i;
for (t=0, i=1; t<10; t++, i++);
{
arrTal[t] = tal[i];

}




Herefter skal hvert af de 10 tal (vTal) ganges med et tilsvarende gTal):

De 10 tal skal ganges:

2 6 3 1 8 9 5 8 3 9
* * * * * * * * * *
4 6 9 4 7 8 5 3 6 4

= totalt resultat

Faktisk havde jeg tænkt mig at sætte dem i hver deres String således:

vTal1 = arrTal[0].ToInt();
vTal2 = arrTal[1].ToInt();
vTal3 = arrTal[2].ToInt();
vTal4 = arrTal[3].ToInt();
vTal5 = arrTal[4].ToInt();
vTal6 = arrTal[5].ToInt();
vTal7 = arrTal[6].ToInt();
vTal8 = arrTal[7].ToInt();
vTal9 = arrTal[8].ToInt();
vTal10 = arrTal[9].ToInt();

- samme for gTal1-gTal10, og så gange dem manuelt ud mod hinanden vTal1 *
GTal1 + VTal2 * .........

Så for at sige det kortere kan jeg godt se nu, så hedder det at jeg skal
have 2 Strings med tal ganget ud mod hinanden og have en total på det, som
integer.





"Igor V. Rafienko" <igorr@ifi.uio.no> wrote in message
news:xjv3cpvkwqv.fsf@rosarno.ifi.uio.no...
> [ kire100@ofir.dk ]
>
> [ ... ]
>
> > Jeg har forgæves forsøgt at få de enkelte tegn fra en String (stort
> > S),
>
>
> ... og en "String" er ...? (I motsetning til std::string, der det du
> forsøker å løse ikke er et problem).
>
>
> > En for-løkke falder mig naturlig til anvendelsen, men jeg kan
> > overhoved ikke få det til at køre.
>
>
> Så vis den koden du _har_ skrevet, forklar hva den faktisk gjør og
> hvordan det er forskjellig fra det du vil at den skal gjøre.
>
>
> > Stringens indhold er fast på 10 tegn. Kan man i samme loop lave
> > converteringen fra String til int? hvordan ville man gøre fra string
> > til int (altså string med lille).
>
>
> Hvis du vil konvertere hvert tegn i en std::string til en int, så er
> kanskje ikke nødvendig å gjøre noe spesielt, da tegn i seg selv kan
> brukes som om de var tall i visse kontekster. Du kan naturligvis
> konvertere de eksplisitt til en passende talltype vha. fx.
> static_cast<>.
>
> Hvis _hele_ std::string inneholder et tall som du vil konvertere fra
> den tekstlige representasjonen til den interne representasjonen for
> tall, så finnes det flere måter å gjøre det på -- alt fra atoi til
> lexical_cast<> fra boost.org.
>
>
>
>
>
> ivr
> --
> <peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
> <peder> php er bare fra foajeen
> -- pederst på irc



Igor V. Rafienko (21-11-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 21-11-02 15:22

[ kire100@ofir.dk ]

[ ... ]

> TEST:
> String arrTal[10], vTal, gTal = "2631895839";


Jamen, hva _er_ en String?

[ ... ]


> String arrGange[10], tal = "4694785364";
>
> int t, i;
> for (t=0, i=1; t<10; t++, i++);
> {
> arrTal[t] = tal[i];
>
> }
>
> Herefter skal hvert af de 10 tal (vTal) ganges med et tilsvarende
> gTal):


Eh? Hva er vTal initialisert til?

[ ... ]


> Så for at sige det kortere kan jeg godt se nu, så hedder det at jeg
> skal have 2 Strings med tal ganget ud mod hinanden og have en total
> på det, som integer.


Ah, det var det du ville. To spørsmål:

* Hvorfor bruker du en eller annen String klasse for å representere
tall?

* Hvorfor ikke bare bruke et passende MP bibliotek for å gjøre
multiplikasjonen? GMP, fx.





ivr
PS: Ikke toppsiter, er du snill.
--
<peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
<peder> php er bare fra foajeen
            -- pederst på irc

Erik (21-11-2002)
Kommentar
Fra : Erik


Dato : 21-11-02 16:01

hmmmm, aner faktisk ikke hvad GMP er.

Jeg bruger String fordi jeg for data som AnsiString fra en database. Jeg kan
ikke finde ud af at konvertere til andet.


mvh.

Erik



"Igor V. Rafienko" <igorr@ifi.uio.no> wrote in message
news:xjvd6ozm291.fsf@belagio.ifi.uio.no...
> [ kire100@ofir.dk ]
>
> [ ... ]
>
> > TEST:
> > String arrTal[10], vTal, gTal = "2631895839";
>
>
> Jamen, hva _er_ en String?
>
> [ ... ]
>
>
> > String arrGange[10], tal = "4694785364";
> >
> > int t, i;
> > for (t=0, i=1; t<10; t++, i++);
> > {
> > arrTal[t] = tal[i];
> >
> > }
> >
> > Herefter skal hvert af de 10 tal (vTal) ganges med et tilsvarende
> > gTal):
>
>
> Eh? Hva er vTal initialisert til?
>
> [ ... ]
>
>
> > Så for at sige det kortere kan jeg godt se nu, så hedder det at jeg
> > skal have 2 Strings med tal ganget ud mod hinanden og have en total
> > på det, som integer.
>
>
> Ah, det var det du ville. To spørsmål:
>
> * Hvorfor bruker du en eller annen String klasse for å representere
> tall?
>
> * Hvorfor ikke bare bruke et passende MP bibliotek for å gjøre
> multiplikasjonen? GMP, fx.
>
>
>
>
>
> ivr
> PS: Ikke toppsiter, er du snill.
> --
> <peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
> <peder> php er bare fra foajeen
> -- pederst på irc



Igor V. Rafienko (21-11-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 21-11-02 18:21

[ kire100@ofir.dk ]

> hmmmm, aner faktisk ikke hvad GMP er.


google.com er din venn.


> Jeg bruger String fordi jeg for data som AnsiString fra en database.


Og så? _Hva_ er en String? Men la gå. Det mer interessante spørsmålet
er hvorfor oppbevarer du _numeriske_ data som _tekst_ i databasen?





ivr
PS: Ikke toppsiter, er du snill.
--
<peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
<peder> php er bare fra foajeen
            -- pederst på irc

Erik (22-11-2002)
Kommentar
Fra : Erik


Dato : 22-11-02 11:45


En String er en AnsiString, det er det måske kun i Borland... don´t know.

Jeg opbevarer nummerisk data i DB som tekst, fordi at det er et input der
kommer ind sådan her:

"111111-111" - med bindestreg, jeg kunne selvfølgelig fjerne den og
konvertere inden jeg lagrede den i databasen. Jeg kender dog ikke metoden
til at splitte en int op i enkeltdele, derfor lader jeg det forblive String
i databasen i ET felt og laver en opsplitning med SubString bagefter,
hvorefter jeg endelig convertere til int med ToInt.


/Erik


"Igor V. Rafienko" <igorr@ifi.uio.no> wrote in message
news:xjvy97mbzzp.fsf@andvarefoss.ifi.uio.no...
> [ kire100@ofir.dk ]
>
> > hmmmm, aner faktisk ikke hvad GMP er.
>
>
> google.com er din venn.
>
>
> > Jeg bruger String fordi jeg for data som AnsiString fra en database.
>
>
> Og så? _Hva_ er en String? Men la gå. Det mer interessante spørsmålet
> er hvorfor oppbevarer du _numeriske_ data som _tekst_ i databasen?
>
>
>
>
>
> ivr
> PS: Ikke toppsiter, er du snill.
> --
> <peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
> <peder> php er bare fra foajeen
> -- pederst på irc



Igor V. Rafienko (22-11-2002)
Kommentar
Fra : Igor V. Rafienko


Dato : 22-11-02 13:03

[ kire100@ofir.dk ]

[ Si meg en ting, er du dum eller bare uhøflig, siden du absolutt ikke
vil lære deg elementær siteringsteknikk? ]

[ ... ]

> Jeg opbevarer nummerisk data i DB som tekst, fordi at det er et
> input der kommer ind sådan her:


Nei, dette er ikke en god nok grunn. Dersom datamodellen din opererer
med numeriske typer (og det gjør den, siden du trenger å multiplisere
numeriske datafelt), så skal de også lagres slik. Om ikke annet så for
å slippe konverteringsproblemene ved senere bruk.


> "111111-111" - med bindestreg, jeg kunne selvfølgelig fjerne den og
> konvertere inden jeg lagrede den i databasen. Jeg kender dog ikke
> metoden til at splitte en int op i enkeltdele, derfor lader jeg det
> forblive String i databasen i ET felt og laver en opsplitning med
> SubString bagefter, hvorefter jeg endelig convertere til int med
> ToInt.


Eh? Dersom du har inputdata på formen

<int>-<int>

så kan du dele strengen opp på "-" i applikasjonen din før du skriver
numeriske data inn i databasen. Det er flere måter å dele opp en
string på, alt fra strchr/strncpy, til
std::string::find/str::string::substr. For å konvertere fra den
tekstlige representasjonen av numeriske data til den interne, kan man
bruke strtol/atoi/lexical_cast (fra boost.org). Mulighetene er mange.

Når det gjelder selve multiplikasjonen, dersom du har såpass store
tall som du antydet i
<URL:news:3ddce5d7$0$6103$ba624c82@nntp02.dk.telia.net>, kan det hende
at det ikke holder med innebygde numeriske typene på din platform. Da
kan det være praktisk å bruke et passende numerisk bibliotek for å få
utført multiplikasjonen. Fx. GNU MP.

[ ... ]





ivr
--
<peder> igorr: tcl ja... det er fra de dypeste avgrunnene i helvete det...
<peder> php er bare fra foajeen
            -- pederst på irc

Søg
Reklame
Statistik
Spørgsmål : 177491
Tips : 31966
Nyheder : 719565
Indlæg : 6408458
Brugere : 218886

Månedens bedste
Årets bedste
Sidste års bedste