/ 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
hjææælpp !!!!
Fra : Jacob Brandrup


Dato : 12-03-01 19:22

ok her er mit problem

jeg skal have lavet et program det han extracte numre fra følgende text

{654765}{685473685} .....fhdhfjdhfjd

er der nogle der har en ide om hvordan dette gøres ?

Mvh
Jacob




 
 
Thorbjørn Ravn Ander~ (12-03-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 12-03-01 19:37

Jacob Brandrup wrote:
>
> ok her er mit problem
>
> jeg skal have lavet et program det han extracte numre fra følgende text
>
> {654765}{685473685} .....fhdhfjdhfjd
>
> er der nogle der har en ide om hvordan dette gøres ?

Løb strengen igennem tegn for tegn, og opsaml de tegn som isnum() godt
kan lide, og udskriv når det ikke er et taltegn mere.

--
Thorbjørn Ravn Andersen "...sound of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Jacob Brandrup (12-03-2001)
Kommentar
Fra : Jacob Brandrup


Dato : 12-03-01 21:18

det er ikke lige der mit problem ligger

jeg søger først efter '{' og vil derefter overføre alt indtil '}'

for(int i = 0; i < strlen(string); i++)
if(string[i] == '{' )
{
i++;
do {
strcpy(extstring, string[i])
i++
}while( i != '}' )
}

men når jeg skal kopiere charen til stringen påstår c++ at det er en
integer. Hvad ka jeg ellers gøre

Mvh
jacob



Jacob Brandrup (12-03-2001)
Kommentar
Fra : Jacob Brandrup


Dato : 12-03-01 21:26

strcat ikke strcpy


"Jacob Brandrup" <webmaster@forgottenrealms.dk> wrote in message
news:98jaij$6ko$1@news.inet.tele.dk...
> det er ikke lige der mit problem ligger
>
> jeg søger først efter '{' og vil derefter overføre alt indtil '}'
>
> for(int i = 0; i < strlen(string); i++)
> if(string[i] == '{' )
> {
> i++;
> do {
> strcpy(extstring, string[i])
> i++
> }while( i != '}' )
> }
>
> men når jeg skal kopiere charen til stringen påstår c++ at det er en
> integer. Hvad ka jeg ellers gøre
>
> Mvh
> jacob
>
>



Anders Bo Rasmussen (12-03-2001)
Kommentar
Fra : Anders Bo Rasmussen


Dato : 12-03-01 21:38

On Mon, 12 Mar 2001 21:17:41 +0100,
Jacob Brandrup <webmaster@forgottenrealms.dk> wrote:

>det er ikke lige der mit problem ligger
>
>jeg søger først efter '{' og vil derefter overføre alt indtil '}'
>
>for(int i = 0; i < strlen(string); i++)
> if(string[i] == '{' )
> {
> i++;
> do {
> strcpy(extstring, string[i])

strcpy(extstring, &string[i])
^

Men da du kun vil have copieret en char. Må du gør noget andet. Fx.
(utestet, og O(n) hvilket giver en samlet køretid på O(n^2)):

strncat(extstring, string[i], 1)

> i++
> }while( i != '}' )
> }
>
>men når jeg skal kopiere charen til stringen påstår c++ at det er en
>integer. Hvad ka jeg ellers gøre

Hmm. Det er vel din compiler der påstår det.

--
Anders Bo Rasmussen mailto:fuzz01@spamfilter.dk
Frimestervej 42 1.tv http://www.image.dk/~abr
2400 Kbh. NV
Denmark

Torsten Iversen (12-03-2001)
Kommentar
Fra : Torsten Iversen


Dato : 12-03-01 23:21

In article <98jaij$6ko$1@news.inet.tele.dk>, Jacob Brandrup wrote:
>det er ikke lige der mit problem ligger
>
>jeg søger først efter '{' og vil derefter overføre alt indtil '}'
>
>for(int i = 0; i < strlen(string); i++)
> if(string[i] == '{' )
> {
> i++;
> do {
> strcpy(extstring, string[i])
> i++
> }while( i != '}' )
> }

Du kunne også vælge at pille strengen ud som en char pointer. Det kræver
naturligvis, at du har lov til at overskrive '}' med '0', samt at du har
den originale streng gemt i en kontinuert blok hukommelse. Hvis du skal
læse strengen fra en fil, bliver det lidt mere besværligt, da du kan
risikere kun at indlæse halvdelen af et tal i en læseoperation. Desuden
vil bufferen typisk blive genbrugt i næste operation, hvorfor kopiering
bliver nødvendigt. Hvis du vil have varmet op under noget mere seriøs
strengprocessering, kan jeg anbefale at bruge flex og yacc. Eller brug
perl. Det sparker røv til strengbehandling.

int j;
int len;

len = strlen(string);
for(int i = 0; i < len; i++)
{
if(string[i] == '{')
{
j = ++i;
while (string[j] != '}')
{
if (string[j] < '0' || string[j] > '9')
return ERROR;
j++;
}
// nul-terminer strengen
string[j] = 0;
// nu har du en pointer til en 0 termineret c- streng på adresse
// &string[i] og kan kalde en funktion, der håndterer den.
// Husk at tage en kopi i FoundNumber, hvis det er nødvendigt. I så
// fald kan du give længden med for at kopiere mere effektivt.
// prototype: void FoundNumber(char *s);
FoundNumber(&string[i]);
// reparer strengen, hvis den skal bruges igen
string[j] = '}';
// hop til næste streng i for løkken
i = j + 1;
}
}

Torsten

Torsten Iversen (13-03-2001)
Kommentar
Fra : Torsten Iversen


Dato : 13-03-01 18:01

In article <slrn9aqiuc.758.torsten@mega.cs.auc.dk>, Torsten Iversen wrote:
>
>
> // hop til næste streng i for løkken
> i = j + 1;
> }
>}

Hmm, der skule vist stå i = j, eftersom i bliver talt op i næste
iteration af for løkken. Jeg har dog ikke testet koden, så...

Torsten

Carsten Svaneborg (14-03-2001)
Kommentar
Fra : Carsten Svaneborg


Dato : 14-03-01 16:31

Jacob Brandrup wrote:
> ok her er mit problem
> jeg skal have lavet et program det han extracte numre fra følgende text

Med mindre der er en eller anden årsag, så ville det være uhyre
let at lave i perl med noget (utestet) kode som følgende:

perl -e '/{[0..9]*}/print $1;/ec'

--
No matter how fast light travels it finds *
the darkness has always got there first, * Carsten Svaneborg
    and is waiting for it. * zqex at risoe.dk
   -- (Terry Pratchett, Reaper Man) *


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste