Seneste forumindlæg
Køb / Salg
 * Uofficiel Black/White liste V3
Login / opret bruger

Forum \ Programmering og webdesign \ Programmering
Denne tråd er over 6 måneder gammel

Er du sikker på, at du har noget relevant at tilføje?

C# Spørgsmål: konvertere tekst til talværdi

Af Nørd Aspirant CFE | 18-02-2008 15:39 | 1571 visninger | 12 svar, hop til seneste
Jeg er ved at lave et program i C#, hvor jeg skal indlæse en fil med talværdier, men i tilfælde af at filen skulle indeholde tekst i dataværdien skal jeg konvertere teksten til værdien 999.999 hvordan er det lige jeg gør det? eksempel på inddata: værdierne betyder følgende: Punktnummer - id - dataværdi 1 1 15.00 2 2 2287.03 3 3 -3843.83 4 4 567.343 5 4 999.999 6 1 text1 7 2 text2 8 3 text3 9 4 text4 Tilladte tegn: 0-9, plus, minus og decimalpunktum Den kode jeg har indtil videre: [i]#include #include int main() { FILE *fp; fp = fopen("inddata.txt", "r"); FILE *fp2; fp2 = fopen("uddata.txt", "w"); int punktnr, id, heltal; double decimaltal; while(fscanf(fp,"%d%d%lf",&punktnr, &id, &decimaltal)!=EOF) { if (id == 1) { heltal = floor(decimaltal); printf("%d. resulat1: %d\n",punktnr,heltal); } if (id == 2) { printf("%d. resulat2: %.3lf\n",punktnr,decimaltal); } if (id == 3) { printf("%d. resulat3: %.3lf\n",punktnr,decimaltal); } if (id == 4) { decimaltal = 999.999; printf("%d. resulat4: %.3lf\n",punktnr,decimaltal); } } system("PAUSE"); return 0; }[/i] Den skal altså tjecke dataværdien for hvert id og konvertere den til tallet 999.999 hvis dataværdien indeholder andet end de tilladte tegn. Håber nogen kan hjælpe
--
i teorien er teori og praksis det samme... i praksis fungerer det bare ikke.
#1
Repete
Ultrabruger
18-02-2008 15:43

Rapporter til Admin
Det er et C eller et C++ program, du der har skrevet. C# er et ægte objektorienteret sprog, som jeg vil anbefale frem for de to ovenstående.
--
#2
DJ SPLIFF
Giga Supporter
18-02-2008 15:45

Rapporter til Admin
int x = int.Parse(String); burde konvertere din string til en int, og nej, har ikke kigget hele din kode igennem, har bare svaret på det umiddelbare spørgsmål du kom med :)
--
Kronisk Ironisk
#3
CFE
Nørd Aspirant
18-02-2008 15:48

Rapporter til Admin
#1 whatever.. jeg er lige startet på det, troede C og C# var det samme men okay da, svar lige på trådens egentlige spørgsmål i stedet, tak.
--
i teorien er teori og praksis det samme... i praksis fungerer det bare ikke.
#4
L00t
Semi Nørd
18-02-2008 15:51

Rapporter til Admin
Brug metoden Decimal.TryParse(string s, out decimal d) - den returnerer sandt eller falskt alt efter om konverteringen lykkes eller ej. Eksempel: Decimal d = 999999D; string s = "Hallo"; if(Decimal.TryParse(s, out d)) { Console.WriteLine("Det lykkedes!"); } else { Console.WriteLine(String.Format("FEJL - strengen kunne ikke konverteres, og resultatet er {0}", d)); }
--
den danske sprog er en svær en at trykke sig ud i
#5
L00t
Semi Nørd
18-02-2008 15:52

Rapporter til Admin
Hov, jeg så lige at du ikke bruger C# - så duer ovenstående ikke.
--
den danske sprog er en svær en at trykke sig ud i
#6
CFE
Nørd Aspirant
18-02-2008 15:55

Rapporter til Admin
Jeg beklager at jeg i min uvidenhed er kommet til at skrive 'C#' når programmet skrives i 'C', er nybegynder. --
--
i teorien er teori og praksis det samme... i praksis fungerer det bare ikke.
#7
Repete
Ultrabruger
18-02-2008 16:04

Rapporter til Admin
Hvis det er dit første C program, så skift heste i vadestedet og kast dig over C#. Som du måske kan se af den hjælp, du har fået, er C# mere udtryksfuld end C. Og compileren og udviklingsmiljøet i det hele taget meget nemmere at gå til.
--
#8
CFE
Nørd Aspirant
18-02-2008 19:09

Rapporter til Admin
#7 Det er langt fra mit første C program.. men det er første gang jeg arbejder med et problem som dette med verificering.. har prøvet at søge uden den store nytte. Desuden skal jeg bruge C i min uddannelse, så nytter det ikke hvis jeg pludselig skifter til noget andet som jeg måske ikke kommer til at bruge. Men har brugt adskillige timer på det her problem efterhånden, og syns ikke rigtig lige jeg kan finde nogen ligetil løsning, så hvis nogen kunne hjælpe ville jeg være meget taknemmelig!
--
i teorien er teori og praksis det samme... i praksis fungerer det bare ikke.
#9
DJ SPLIFF
Giga Supporter
18-02-2008 19:12

Rapporter til Admin
#9 hvis der ikke lige er nogen der reagerer her, så prøv eksperten.dk
--
Kronisk Ironisk
#10
Repete
Ultrabruger
18-02-2008 19:20

Rapporter til Admin
Læse hele linjen ind med fgets split den med strtok, og hvis den anden token ikke er tekst (brug f.eks. isascii), så bruger du sscanf på din linjebuffer
--
#11
CFE
Nørd Aspirant
18-02-2008 19:32

Rapporter til Admin
#10 det lyder smart.. men har ikke lært om funktionerne fgets og strtok, så er lidt på bar bund - kunne du komme med et eksempel?
--
i teorien er teori og praksis det samme... i praksis fungerer det bare ikke.
#12
Repete
Ultrabruger
18-02-2008 19:39

Rapporter til Admin
fgets læser en hel linje fra en fil http://www.hmug.org[...] strtok splitter en streng i tokens http://www.hmug.org[...]
--

Opret svar til indlægget: C# Spørgsmål: konvertere tekst til talværdi

Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.

Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.

Opret bruger | Login
NYHEDSBREV
Afstemning