Forum huvudsida -> Programmering -> Felhantering med get() ?
Mulven | 16:54 - 6:e Mars 2007 | Post #1 | |
Medlem Inlägg: 10 Skicka PM |
Om man skriver in en bokstav hänger sig hela programmet, hur ska jag göra för att man inte ska kunna ha bokstäver (den ska börja om ifall man skriver en bokstav). Det är ett miniräknarprogram. Jag är nybörjare
Senast redigerad 18:42 - 6:e Mars 2007 |
Independence | 17:10 - 6:e Mars 2007 | Post #2 | |
Administratör Inlägg: 1800 Skicka PM |
Hmm, jag vet inte om detta är en ful/dålig lösning, men det verkar fungera iaf:
Sedan anropar du den funktionen istället för cin >> tal1; Dvs tal 1 = getInt(); Du kan även göra det direkt i koden, men eftersom du verkar ha så många cin så kanske en egen funktion är ett bättre val. ------------------------- Vi är riddarna som säger fiskbulle! |
Mulven | 17:58 - 6:e Mars 2007 | Post #3 | |
Medlem Inlägg: 10 Skicka PM |
Jag förstod inte hur jag skulle implementera den i koden för jag får bara fel, att getInt() inte är deklarerad. |
Independence | 18:22 - 6:e Mars 2007 | Post #4 | |
Administratör Inlägg: 1800 Skicka PM |
Den ska antingen stå över main (eller där du anropar den) eller ha en deklaration ovanför det stället. ------------------------- Vi är riddarna som säger fiskbulle! |
Mulven | 18:32 - 6:e Mars 2007 | Post #5 | |
Medlem Inlägg: 10 Skicka PM |
jag fick det inte att fungera, programmet hängde sig även fast man hade använt funktionen... |
Independence | 18:36 - 6:e Mars 2007 | Post #6 | |
Administratör Inlägg: 1800 Skicka PM |
Hur ser din kod ut efter att du bytt ut alla cin mot getInt då? (Använd gärna taggarna för källkodsformattering) ------------------------- Vi är riddarna som säger fiskbulle! |
Mulven | 18:42 - 6:e Mars 2007 | Post #7 | |
Medlem Inlägg: 10 Skicka PM |
Jag ändrade originalinlägget |
Independence | 18:47 - 6:e Mars 2007 | Post #8 | |
Administratör Inlägg: 1800 Skicka PM |
Okej, problemet är att du bara bytt ut cin på typ var tredje ställe eller så Rad 40, 41, 54 osv ------------------------- Vi är riddarna som säger fiskbulle! |
ozamosi | 19:53 - 6:e Mars 2007 | Post #9 | |
Administratör Inlägg: 1129 Skicka PM |
Ska det verkligen stå if(!cin)..? ------------------------- Ljusblå |
Smygis | 20:15 - 6:e Mars 2007 | Post #10 | |
Medlem Inlägg: 90 Skicka PM |
Jag föreslår att du markerar filen och trycker på knappen "delete". Det finns gånger man vinner på att börja om från början. Speciellt så något är så där trasigt. Så det är mitt tips: Tänk om och gör rätt. ------------------------- Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS! |
main | 01:27 - 13:e Mars 2007 | Post #11 | |
Medlem Inlägg: 40 Skicka PM |
1. Inkludera conio.h 2. Deklarera din funktionsprototyp. 3. Använd getch för att returnera tryckt tangent, getche om du vill visa eko. 4. Använd inte iostream överhuvudtaget, använd standard io, som printf och puts et.c. Då kan du också formatera indata med scanf. 5. Använd inte if-satser när du matar in heltalsdata och du har entydiga alternativ, använd då switch. ------------------------- - Real programmers code in binary |
main | 02:10 - 13:e Mars 2007 | Post #12 | |
Medlem Inlägg: 40 Skicka PM |
Jag slängde ihop en enkel "miniräknare" som exempel på standard in- och utmatningsfunktionerna. Man hade kunnat byta ut scanf-satsen mot tre getch, men scanf ger säkrare indata.
Hmm.. vart fel med kodformateringen på sidan först. ------------------------- - Real programmers code in binary Senast redigerad 02:38 - 13:e Mars 2007 |
Smygis | 12:33 - 13:e Mars 2007 | Post #13 | |
Medlem Inlägg: 90 Skicka PM |
Citat av main: 1. Inkludera conio.h 2. Deklarera din funktionsprototyp. 3. Använd getch för att returnera tryckt tangent, getche om du vill visa eko. 4. Använd inte iostream överhuvudtaget, använd standard io, som printf och puts et.c. Då kan du också formatera indata med scanf. 5. Använd inte if-satser när du matar in heltalsdata och du har entydiga alternativ, använd då switch. Får jag slå dig? 1: ,,r inte C++ 3: ,,r inte C++ 4: ,,r inte C++ Vill du att killen ska koda C så är det bara att säga det. Inte försöka påstå att C är C++. ------------------------- Ingen signatur! <- OMG! Jag har inte någon signatur! Ge mig en signatur FFS! |
ozamosi | 12:55 - 13:e Mars 2007 | Post #14 | |
Administratör Inlägg: 1129 Skicka PM |
Det faktum att conio.h är icke-standard, och i princip bara finns i windows- eller doskompilatorer gör inte saken bättre imho. ------------------------- Ljusblå |
NetNinja | 17:49 - 13:e Mars 2007 | Post #15 | |
Medlem Inlägg: 116 Skicka PM |
Jag har använt conio.h, småroligt. -------------------------
|
main | 21:47 - 13:e Mars 2007 | Post #16 | |
Medlem Inlägg: 40 Skicka PM |
Smygis, har du verkligen skrivit C innan C++? I sådana fall skulle du inte säga att C-kod inte är kompatibel med C++-kompilatorer. C++ är bakåtkompatibel med C, vissa C++-kompilatorer översätter till och med kod till C och kompilerar den sedan. Eftersom han kodar under windows föreslog jag conio, men man kunde förstås lika gärna använt 10^24 andra lösningar, getc är en om man vill ha data direkt vid tangenttryckning. Men, som du ser har jag inte inkluderat den i min källkod. Faktum är att min källkod kan köras på: Linux, OS/2, DOS (16 och 32 bit), Windows. Formateringsregler (implicit, det var meningen att man skulle tolka): standard io -> stdio.h Självklart fungerar stdio med C++. Men, det stämmer att conio inte är standard, så det var kanske ett snedsteg att råda någon att inkludera den, den har dock funnits med länge. "Most C compilers that target DOS, Windows 3.x, Phar Lap, DOSX, OS/2, or Win32 have this header and supply the concomitant library functions in the default C library" En sak till, C _är_ C++, men inte alltid tvärt om (du vet nog vilka skillnader jag menar)... Jag vill inte att han ska koda C++, men jag råder honom att använda standard ut- och inmatningsfunktionerna i C, mest för att de är snyggare, men också för att koden blir mer kompakt, och exekverar snabbare. Men, självklart får man göra som man vill. Detalj: En sak till, dina punkter 1, 3 och 4, så skriver du: ",,r inte C++". Nej, de är inte C heller. Språket C innehåller inte några egna funktioner för t.ex. in- och utmatning, inga satser för att läsa eller skriva, inga metoder för filaccess et.c, vilket även är fallet med C++. ------------------------- - Real programmers code in binary |
main | 21:55 - 13:e Mars 2007 | Post #17 | |
Medlem Inlägg: 40 Skicka PM |
ozamosi: Det stämmer faktiskt inte att conio.h är ovanlig. Den följer med flera vanliga kompilatorer. Sen är det upp till programmeraren att hålla reda på vilka bibliotek som fungerar till vilket OS. En lista över några: Borland C C-Free Dev-Cpp Pelles C Tiny C Watcom C/C++ MS VC++ ------------------------- - Real programmers code in binary Senast redigerad 21:57 - 13:e Mars 2007 |
ozamosi | 22:06 - 13:e Mars 2007 | Post #18 | |
Administratör Inlägg: 1129 Skicka PM |
Borland: Wintendo C-Free: inte en kompilator, utan en IDE. Har conio.h i de fall kompilatorn har den, antar jag... Dev-Cpp: 1) Wintendo 2) Du rekomenderas undvika den, och " Please note that conio support is far from perfect" Pelles C: Wintendo Tiny C: Ok, den köper jag. Har dock aldrig hört talas om den. Watcom: ser ut att vara Wintendo (ok, OS/2 också - vem bryr sig om det?) MS VC++: Wintendo Dessutom ser ju conio.h inte likadan ut på alla dessa kompilatorer... ------------------------- Ljusblå |
main | 23:24 - 13:e Mars 2007 | Post #19 | |
Medlem Inlägg: 40 Skicka PM |
Nej, det är sant. Men åter igen, det är upp till programmeraren att veta vilka bibliotek/funktioner et.c. som fungerar till det OS han eller hon utvecklar till. Ibland skriver jag Linuxprogram i windows t.ex. Det omvända går också, men är antagligen ett brott mot mänskligheten, eller räknas som "förberedelse till allmänfarlig ödeläggelse". ------------------------- - Real programmers code in binary |
derfian | 01:34 - 14:e Mars 2007 | Post #20 | |
Medlem Inlägg: 149 Skicka PM |
Citat av main: I sådana fall skulle du inte säga att C-kod inte är kompatibel med C++-kompilatorer. C++ är bakåtkompatibel med C, vissa C++-kompilatorer översätter till och med kod till C och kompilerar den sedan. C++ är INTE bakåtkompatibelt med C. http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B En sak till, C _är_ C++, men inte alltid tvärt om (du vet nog vilka skillnader jag menar)... Du glömmer bort sådana saker som klasser och polymorfism... bland annat. Jag vill inte att han ska koda C++, men jag råder honom att använda standard ut- och inmatningsfunktionerna i C, mest för att de är snyggare, men också för att koden blir mer kompakt, och exekverar snabbare. Men, självklart får man göra som man vill. Visst, det är olyckligt att man har blandat ihop strömoperatorerna med bitvis shift, men faktum kvarstår, att använda strömmarna ger kompaktare kod. Jag hävdar dessutom att det är snyggare, av bättre orsaker än dina: en ström kan vara stdout, en fil, stdin, i stort sett vad som helst. Det ser fortfarande likadant ut när man skriver och läser till och från strömmen. Inga fprintf etc. Enhetligt. Snyggt.
Och att dem exekverar snabbare? Hahaha, det kan man ju titta på när man verkligen har något som är prestandakritiskt... Till sist: jag skulle hävda att skriva Windowsmjukvara i Linux är önskvärt i förhållande till att utveckla Linuxmjukvara på Windows. Det sistnämnda är ju fel på alla viktiga sätt. |
main | 05:25 - 14:e Mars 2007 | Post #21 | |
Medlem Inlägg: 40 Skicka PM |
Läs igen. "C code is often developed with C++ IDEs, integrated with C++ code, and compiled in C++ compilers. While most C source code will compile as C++ code without any changes, certain language differences prevent C++ from being a strict superset of C." Med de orden menas det att C++ är bakåtkompatibelt med en del undantag, inte att C-kod inte är godtagbar under C++. Läs vilken C/C++ bok som helst så står det att C-kod skall med få eller inga modifieringar gå att kompilera under C++. Jag har för tillfället 6 C++-böcker (referens). Dessutom är ju minst hälften av alla exempel i den där artikeln "nybörjarfel", och inte kompabilitetsproblem. En bra programmerare vet dessutom dessa ting. ------------------------- - Real programmers code in binary |
derfian | 11:34 - 14:e Mars 2007 | Post #22 | |
Medlem Inlägg: 149 Skicka PM |
Citat av main: Läs igen. "C code is often developed with C++ IDEs, integrated with C++ code, and compiled in C++ compilers. While most C source code will compile as C++ code without any changes, certain language differences prevent C++ from being a strict superset of C." Med de orden menas det att C++ är bakåtkompatibelt med en del undantag, inte att C-kod inte är godtagbar under C++. Läs vilken C/C++ bok som helst så står det att C-kod skall med få eller inga modifieringar gå att kompilera under C++. Jag har för tillfället 6 C++-böcker (referens). Det visar att delar av C++ fungerar på samma vis som C. Inte hela C++. Du kan inte påstå att C++ är bakåtkompatibelt med C för att delar av C++ är det. Dessutom är ju minst hälften av alla exempel i den där artikeln "nybörjarfel", och inte kompabilitetsproblem. En bra programmerare vet dessutom dessa ting. Hur är det ett nybörjarfel att språken skiljer sig åt? Om du vill läsa på mer på hur språken faktiskt skiljer sig åt, läs här: http://david.tribble.com/text/cdiffs.htm#intro |
main | 14:16 - 14:e Mars 2007 | Post #23 | |
Medlem Inlägg: 40 Skicka PM |
Snälla, läs godtycklig bok om C/C++. Dålig eller bra, känd eller okänd. Jag kan citera om du vill. Wikipedia säger egentligen det som är fallet, att C-kod fungerar under C++ med vissa modifieringar. ...ter igen, det är programmerarens roll i sammanhanget att veta vilka skillnader som gäller. Att du inte kommer från C från början kan inte jag däremot inte göra så mycket åt. Sen har vare sig du eller jag behörighet att bestämma att språken skiljer sig åt, men det har ISO och ANSI. Alla programmerare jag talat med (och jag har programmerat ett tag) är av denna uppfattning. ------------------------- - Real programmers code in binary |
derfian | 16:29 - 14:e Mars 2007 | Post #24 | |
Medlem Inlägg: 149 Skicka PM |
Citera gärna. "med vissa modifieringar" innebär att språken EJ är helt kompatibla (notera att ett subset av de båda språken är det, det har jag aldrig förnekat). Suck. Specifikationerna för språken skiljer sig åt. Språken skiljer sig åt. För övrigt, vad har det för betydelse om jag har börjat med C eller C++? Hur vet du vad jag kan och inte kan? Vad är din poäng? |
NetNinja | 18:18 - 14:e Mars 2007 | Post #25 | |
Medlem Inlägg: 116 Skicka PM |
<Tension Breaker> Iallfall så från min synvinkel så säger ni samma sak bara det att ni har olika uppfattning av vad kompatibelt betyder. Med andra ord tror jag detta är en terminologi tvist... <End of Tension Breaker> -------------------------
Senast redigerad 18:20 - 14:e Mars 2007 |
Forum huvudsida -> Programmering -> Felhantering med get() ?
Tråden är låst | Till toppen
Datum
2024-04-29 02:58
Vecka: 18
Besökare
Inloggade: 0
Gäster: 605
Medlemmar
Medlemmar: 53576
Forum
Senaste inlägget: HAHA MÄNNISKAN LEVER ÄN (13:45 - 18:e Januari 2019, av Hetzz)
Wiki
Senaste ändringen:
3D (rev: 1, tid: 09:40 - 13:e November 2015)
Chatt
#blinkenlights @ Libera.Chat
Gratis shellkonton för IRC, webbsidor mm.