Bruno Mars Skrevet 8. september 2009 Skrevet 8. september 2009 (endret) Har denne koden: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int tall; printf("This program will decide whetever the digit you enter is a even or odd.\nEnter your digit: "); scanf("%d", &tall); switch (tall % 2) { case 0: printf("Your digit is a EVEN integer.\n"); break; case 1: printf("Your digit is a ODD integer.\n"); break; default: printf("Incorrect digit!\nEnter a new digit: "); break; } system("PAUSE"); return 0; } Hvordan skal jeg gjøre for at hvis man skriver inn en bokstav eller et tegn som ikke er et tegn så skal det komme "Incorrect digit!\nEnter a new digit: " Har prøvd som dere ser i koden, men det funker ikke. NB: må bruke denne switch- metoden. Endret 8. september 2009 av mx1000
Giddion Skrevet 8. september 2009 Skrevet 8. september 2009 Du kan skjekke om scanf(....) != 0 for å se om den fant noe som matchet stringen. noe ala dette: hvis scanf(...) != 0 switchverdi = tall % 2; hvis ikke switchverdi = -1; Med metoden her kan du taste inn f. eks. 4f (4 leses), men ikke f4. Lykke til
Dead_Rabbit Skrevet 8. september 2009 Skrevet 8. september 2009 (endret) Det du kan gjøre: - Les inn tallet til en char* istedenfor en int - Lag en funksjon som sjekker om en char er et tall - Lag en funksjon som itererer gjennom char-arrayet og sjekker om hver char er et tall vha. den forrige funksjonen Du kan lage en funksjon som sjekker om en char er et tall ved å gjøre følgende: - Cast char-variabelen til en int - Sjekk om denne verdien er større enn eller lik (int)'0' og mindre enn eller lik (int)'9' - Returner true/false avhengig av om testen feilet eller ikke Litt starthjelp (utesta kode!): // ... int i = (int) ch; if(i >= (int) '0' && i <= (int) '9') // ... Endret 8. september 2009 av Dead_Rabbit
Bruno Mars Skrevet 9. september 2009 Forfatter Skrevet 9. september 2009 Du må utdype litt mer Giddeon. Har gjort noen forsøk men ikke noe som funka. @Dead_Rabbit; dessverre litt for avansert løsning for meg enda. Har drevet med C i 3 uker bare. Har dog erfaring fra C#, som virker mye mer brukervennlig.
亚历山大 Skrevet 9. september 2009 Skrevet 9. september 2009 (endret) Som Dead_Rabbit sa: char* char y[1]; y[0] = 'a'; y[1] = 0; for(int i = 0; i < strlen(input);i++) while(y < 'z') if(strcmp(input[i],y) == 0) printf("Only numbers plx!\n"); (Ikke testa:P Skrev rett inn her:P) Endret 9. september 2009 av zorgion
Dead_Rabbit Skrevet 9. september 2009 Skrevet 9. september 2009 (endret) Jeg så forresten at C-biblioteket allerede har en funksjon som heter isdigit, som sjekker om en char inneholder et tall mellom 0 og 9. Alt vi trenger å gjøre for å sjekke om inputen er et tall er derfor å iterere gjennom strengen og sjekke om hvert tegn er et tall vha isdigit-funksjonen: int isnum(const char str[], int length) { int i; for(i = 0; i != length; ++i) if(!isdigit(str[i])) return 0; return 1; } Edit: For å bruke isdigit må du huske å inkludere ctype.h Endret 9. september 2009 av Dead_Rabbit
GeirGrusom Skrevet 10. september 2009 Skrevet 10. september 2009 Har et problem relatert til dette selv: Dette er til en oblig i algortimefaget. Problemet kommer ved at et heltall skal leses inn for å lagres i en linked list, men dersom brukeren skriver for eksempel 123.456 blir 123 lagt inn, og en feilmelding blir gitt. Alle heltall er gydlige input, men jeg kan ikke finne noen måte å gi feilmelding på alt annet enn heltall. Tenkte å lese til en string og bruke atoi, men problemet er at denne returnerer bare 0 dersom det gikk galt, men for programmet er 0 en gyldig verdi :/ Noen som har en god løsning?
aC Skrevet 10. september 2009 Skrevet 10. september 2009 #include <stdio.h> void luk_ut_tall(char *tall); int main(int argc, char **argv) { char streng[200]; printf("Skriv så inn noe søppel: "); scanf("%s", streng); luk_ut_tall(streng); } void luk_ut_tall(char *tall) { int i; for (i=0; tall[i]!=0; ++i) { if( !(tall[i]<0x30 || tall[i]>0x39) ) printf("%c ",tall[i]); } } eller har jeg misforstått problmet, for dette ser jo for trivielt ut
GeirGrusom Skrevet 10. september 2009 Skrevet 10. september 2009 Vel, jeg tenkte at jeg kunne sjekke tallet manuelt, og lese inn en streng, men jeg synes bare at dette problemet er såpass trivielt at STL burde hatt en fiks for det :/
zotbar1234 Skrevet 13. september 2009 Skrevet 13. september 2009 Tenkte å lese til en string og bruke atoi, men problemet er at denne returnerer bare 0 dersom det gikk galt, men for programmet er 0 en gyldig verdi :/ Noen som har en god løsning? strtol()?
GeirGrusom Skrevet 13. september 2009 Skrevet 13. september 2009 (endret) Jo, det kunne jo gått an, jeg regner med at den skriver null til endptr dersom funksjonen feiler. Takker! Endret 13. september 2009 av GeirGrusom
TheMaister Skrevet 13. september 2009 Skrevet 13. september 2009 Har denne koden: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int tall; printf("This program will decide whetever the digit you enter is a even or odd.\nEnter your digit: "); scanf("%d", &tall); switch (tall % 2) { case 0: printf("Your digit is a EVEN integer.\n"); break; case 1: printf("Your digit is a ODD integer.\n"); break; default: printf("Incorrect digit!\nEnter a new digit: "); break; } system("PAUSE"); return 0; } Hvordan skal jeg gjøre for at hvis man skriver inn en bokstav eller et tegn som ikke er et tegn så skal det komme "Incorrect digit!\nEnter a new digit: " Har prøvd som dere ser i koden, men det funker ikke. NB: må bruke denne switch- metoden. Du går ikke tilfeldigvis på HVE?
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå