søppel
-
Innlegg
838 -
Ble med
-
Besøkte siden sist
Innholdstype
Profiler
Forum
Hendelser
Blogger
Om forumet
Innlegg skrevet av søppel
-
-
template<typename T> void readStdin(T& t, std::string msg, std::string on_wrong_input) { std::cout << msg << std::flush; while(!(std::cin >> t)) { std::cout << on_wrong_input; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); std::cout << msg << std::flush; } } // readStdin
Edit:
Bør seff generaliseres til å håndtere input fra andre streamer enn cin .. og håndteringsrutinger bør også spesifiseres "utenifra" (generaliseres) ...
-
Okidok
edit:
Dette ble nesten som de som svarer "ok" etter å ha fått svar på et spm. via SMS. Ganske unødvendig; for mye sukker ....
-
ta en titt på cin.ignore()
bokstaven (eller det som ikke var et tall) ligger fortsatt i stdin-bufferen .. derfor looper programmet hver gang du venter på ny input (cin >> something) .. da det ellerede ligger data i bufferen .. men denne er feil .. og feiler igjen .. og igjen
skrevet fryktelig fort dette ... les noe om io-bibliotekene
edit:
ooh ... btw ..
cin returnerer false om noe feiler ..
if(!(cin >> option)) {
cin.igonre(); // noe silkt .. blabla
} else if(option == 1) {
doStuff();
}else if(option == 2) {
doSomeOtherStuff();
} ...etc.
-
-
Spiller omtrent ingen rolle hvilket språk du velger - "alle" har mulighet for slike ting.
Som det ble nevnt her; hvis du allerde kan Java bør vel det være godt nok i massevis for slike ting. Hvis du ikke føler at du har lyst å lære et nytt språk sånn uansett da .. (men det er litt dårlig timing hvis det er noen som sitter å venter på at du skal få ferdig en ting)
-
eller at det er formet som en sirkel eller kule -- når man "møter veggen" er man tilbake der man startet
-
den har uendelig mange svar, men finner man ett svar
Er det ikke lett å finne ett svar når man har uendelig av dem?
Jeg tror det mangler en stang jeg kan holde meg fast i og svinge rundt her. (men jeg er ingen mattematiker) :]
-
Jørs .. du ville ikke ha den brukt? :}
-
Hvordan kan det ha seg at nesten all progamvare jeg er borti kjører raskere under *nix enn Win32?
Jeg har ingen benchmarks å backe up med hensyn til selve kompilerene, men det jeg sa ovenfor kan jeg bekrefte. Og er det ikke da naturlig å tro at de som har spandert mye tid på å optimalisere *nix-programvare også har optimalisert kompileren?
Edit:
Uansett er GCC/MinGW mer enn bra nok for mitt bruk. Den har kompilert Doom3, Quake og UT2004 (+++) .. det går som olja lyn.
Jeg tviler på at noen her "møter veggen" med tanke på evnen GCC har til å optimalisere.
-
hmmmmmmmmmmmmmmm
Hvis det ikke skal være mulig for de "store gutta" (dooh) å diskutere er ikke dette et værende sted.
Fredrik får svar på spørsmålene sine, uten tvil, -- men ting foregår "samtidig". Om ting blir rotete er det fordi dette ikke er et trådet forum (eller en Wiki).
-
Ja - det er akkurat det man gjør.
Edit:
Men det finnes IDEer (editorer) med RAD-støtte, det vil si at du kan "tegne opp" GUIet; så genererer den kode for deg.
Jeg foretrekker å kode selv -- da det blir minst uventet krøll av det, og koden får samme stil som resten av prosjektet.
(og ikke minst -- det er når du gjør det selv at du lærer av det, og skjønner noe av det som foregår i koden)
-
Hva som helst:
wxWidgets
FLTK
GTK
GTKMM
QT
+++
Edit:
Forutsetningen er at du kan bruke kompileren din.
Og det er greit å ha en fungerende editor:
* Dev-Cpp (er ikke verdens beste IDE, men duger i starten)
* Emacs
* ellernoeannetnoe
-
er det kanskje en form for redefination?
Det er det første jeg ville tippet på, men i dunno.
-
Her er en i Common Lisp:
(defun palindrome (x) (let ((s (princ-to-string x))) (if (string-equal s (reverse s)) t nil)))
(garantert bedre måter å gjøre dette på .. jeg lærer .. hadde det bare vært snakk om lister hadde noe annet vært raskere .. etc.)
(palindrome "abba")T
(palindrome "abbaa")
NIL
(palindrome 123)
NIL
(palindrome 1221)
T
..og...
(dotimes (i 10000) (if (palindrome i) (format t "~A " i) nil)) 0 1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 101 111 121 131 141 151 161 171 181 191 202 212 222 232 242 252 262 272 282 292 303 313 323 333 343 353 363 373 383 393 404 414 424 434 444 454 464 474 484 494 505 515 525 535 545 555 565 575 585 595 606 616 626 636 646 656 666 676 686 696 707 717 727 737 747 757 767 777 787 797 808 818 828 838 848 858 868 878 888 898 909 919 929 939 949 959 969 979 989 999 1001 1111 1221 1331 1441 1551 1661 1771 1881 1991 2002 2112 2222 2332 2442 2552 2662 2772 2882 2992 3003 3113 3223 3333 3443 3553 3663 3773 3883 3993 4004 4114 4224 4334 4444 4554 4664 4774 4884 4994 5005 5115 5225 5335 5445 5555 5665 5775 5885 5995 6006 6116 6226 6336 6446 6556 6666 6776 6886 6996 7007 7117 7227 7337 7447 7557 7667 7777 7887 7997 8008 8118 8228 8338 8448 8558 8668 8778 8888 8998 9009 9119 9229 9339 9449 9559 9669 9779 9889 9999
Sum-saken:
(let ((ans 0)) (dotimes (i 10000) (if (palindrome i) (incf ans i) nil)) ans) 545040
Edit:
eehh .. orginaloppgaven var jo ikke helt slik, men samme.
-
Har du hele koden, og den er "cross-platform" (OpenGL ellernoe?), så kan jeg sikkert hjelpe deg.
-
Snakk om "obfuscated" kode! :]
(C++'s templates er ikke akkurat ryddige de heller .. var ikke det liksom)
-
Jeg har ikke lest tråden, men jeg synes begge deler er like rart:
* Et verdensrom uten grenser
* Et verdensrom med grenser (hva er på "andre siden"?)
-
"Microsoft ® Feelings 1.0" -- it hertz
-
Jeg har ikke Windows eller Dev-Cpp her, men minns dette er mulig ja.
En dialog med noe slikt i:
"Compiler options: -O2 -g -Wall"
Edit:
-Wall er kjekk, da den kan gi deg hint om potensielle problemer. Det finnes mange andre "advarsel-parametere" man kan gi til gcc .. sjekk doc'sa .. :]
-
<yapp-yapp-yapp!>
Jeg fokuserer ikke lenger når jeg leser innleggene dine, saboi ... heh
Du er blitt som en mor for meg!
-
-
Snakket om GCC, som kalles MinGW under Windows. Så det jeg sa gjelder under flere platformer.
IDE'et Dev-C++ bruker MinGW som kompiler.
http://www.network-theory.co.uk/docs/gccin...ccintro_39.html
..og ellers, under "Documentation":
http://gcc.gnu.org/onlinedocs/gcc/Optimize...ptimize-Options
-
Skal være rettet nå - var en "bøgg" der.
Jeg har ikke tid å se på den forrige nå - kan ta en titt siden hvis det ikke ordner seg.
Edit:
cout'en i "hovedloopen" er litt uheldig plassert med tanke på ans, men du skjønner greia.
Om du er ute etter hastighet bør funskjonene inlines. (husk å kompilere med minimum -O2 for at dette skal tre i kraft)
Håper den gir ut riktig svar nå da ..
-
#include <iostream> #include <sstream> template<typename T1, typename T2> inline T1 toType(T2 const& source) { std::stringstream oss; oss << source; T1 target; oss >> target; return(target); } // toType // Intrusive (faster) version. template<typename T1, typename T2> inline void toType(T2 const& source, T1& target) { std::stringstream oss; oss << source; oss >> target; } // toType std::string reverse(std::string const& s) { std::string ret = ""; // Yup - since we're inserting. unsigned int const n = s.length(); for(unsigned int i = 0; i < n; i++) ret.insert(0, 1, s[i]); return(ret); } // reverse // Intrusive (faster) version. void reverse(std::string const& s, std::string& ret) { ret = ""; // Yup - since we're inserting. unsigned int const n = s.length(); for(unsigned int i = 0; i < n; i++) ret.insert(0, 1, s[i]); } // reverse template<typename T> bool palindrome(T const& o) { std::string tmp = toType<std::string>(o); return(tmp == reverse(tmp)); } // palindrome using namespace std; int main() { unsigned long ans = 0; for(unsigned y = 0; y < 1000; y++) for(unsigned x = 0; x < 1000; x++) { cout << "x: " << x << " Y: " << y << " pal(" << x * y << "): " << palindrome(x * y) << " ans: " << ans << endl; if(palindrome(x * y)) ans += x * y; } return(0); } // main
Edit:rettet
Program klikker helt av input
i Programmering og webutvikling
Skrevet · Endret av søppel
Skal du både lese inn tegn, strenger og tall bør du lese inn i en std::string og (eventuellt) konvertere til andre typer (int f.eks.) etterpå.