Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Division ohne Division

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 <
020
12.01.2004, 00:19 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@(un)wissender

Zitat:

Ja, das Programm ist verfehlerhaft, war wohl voreilig, es hat bei alle Zahlen hingehauen, die ich probiert habe, aber das sagen die Physiker auch immer


Hmm... als BWLer hätte ich jetzt das ganze beschönigt und von zumindest partieller Korrektheit gesprochen, die 2 oder 3 anderen Fälle kann man dann ja noch Problemlos ausbügeln...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
12.01.2004, 00:35 Uhr
kronos
Quotenfisch
(Operator)


oder du definierst den rahmen der messgenauigkeit einfach etwas großzügiger
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
12.01.2004, 00:36 Uhr
0xdeadbeef
Gott
(Operator)



--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
12.01.2004, 00:48 Uhr
Pablo
Supertux
(Operator)



Zitat:
(un)wissender postete
@all
Ja, das Programm ist verfehlerhaft, war wohl voreilig, es hat bei alle Zahlen hingehauen, die ich probiert habe, aber das sagen die Physiker auch immer.


Das erinnert mich an die Physikerinduktion-Witz.


Zitat:

@Pablo
Meine Argumente werden dabei in keiner Weise hinfällig, das ganze hat nichts mit Performance zu tun, sondern schlicht mit falscher Programmierung.
Tatsache bleibt immer noch, das dein zwar Programm korrekt, aber viel zu langsam ist. (wobei, lieber korrekt und langsam, als schnell und falsch).


Tja, du sagst es, wenn es um Performance geht, hast du gewonnen. Aber wem interessiert es dass es schnell ist, wenn man falsche Ergebnisse bekommt? Bei Algorithmenentwurf muss man zuerst auf die Korrekheit eines Algorithmus aufpassen, nur nur auf die Terminierheit und Performance. Der Algorithmus muss nicht nur terminieren, sondern immer das richtige Ergebnis liefern, und wenn man das geschafft hat, kann man sich mit der Performancefrage auseinandersetzen. Ich habe nur den ersten Teil gemacht, hab mich nur auf die totale Korrekheit des Algorithmus, Performance ist nun der zweite Schritt, den ich jetzt nicht machen werde.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 12.01.2004 um 00:48 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
12.01.2004, 00:50 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Pablo
Das dein Algo richtig ist, ist ja auch noch nicht bewiesen...
Jag doch mal das Hoare-Kalkül rüber
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
12.01.2004, 00:57 Uhr
Pablo
Supertux
(Operator)


Das funktioniert, wie gesagt, nur für natürliche Zahlen außer 0. Warum es richtig ist?


Code:
c:=a*b = \sum_{i=1}^{b}a



Damit habe ich gearbeitet.


Code:
c/a = b, wobei c=\sum_{i=1}^{b}a+rest, rest>=0


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
12.01.2004, 00:59 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na auf den beweis bekommst du in der Klausur höchstens 20% der Punkte...
(Ich habe die Aufgabe zum HOARE-Kalkül überigens weggelssen...:wink
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
12.01.2004, 01:21 Uhr
(un)wissender
Niveauwart


Der sollte gehen, ist auch recht fix, aber da kann man noch optimieren, da bin ich sicher.
Wenn ihr einen Fehler findet sagt Bescheid, aber eigenlich
sollte der korrekt sein, habe ihn mit vielen Zahlen getestet, aber nicht mit allen.


C++:
#include <iostream>
#include <cstdlib>

int main(int argc, char *args[])
{
    if(argc < 3) {
        std::cout << "Bitte etwas eingeben! " << std::endl;
        return 1;
    }
        
    int divident = atoi(args[1]);
    int divisor = atoi(args[2]);
      
    if(divisor == 0) {
        std::cout << "haha" << std::endl;
        return 1;
    }
    
    int temp_divisor = divisor;
    int rest = divident;
    int resultat = 0;    
    int counter = 0;
    while(divident > (temp_divisor <<= 1))
        ++counter;
    temp_divisor >>= 1; //Einer zuviel
        
    for(int i = 0; i <= counter ; ++i) {      
        if((rest -= temp_divisor) >= 0) {
            resultat <<= 1;
            ++resultat;
        }
        else {
            if(rest < 0) {
                rest += temp_divisor;                
            }          
            resultat <<= 1;
        }
        temp_divisor >>= 1;                            
    }
    
    if(divisor == rest) {
        ++resultat;
        rest = 0;
    }
                  
    std::cout << divident << " / " << divisor << " = "
              << resultat  << " Rest: "
              << rest <<std::endl;
    return 0;
}




Bearbeitung:

Nur positive Zahlen wollte ich noch sagen, nacht!


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 12.01.2004 um 01:22 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
12.01.2004, 01:27 Uhr
(un)wissender
Niveauwart



Zitat:
0xdeadbeef postete
Sach mal, (un)wissender, das hier:

C++:
  for(unsigned int i = 0; i < number; ++i) {      
        temp <<= 1;
        ++temp;      
    }


ist doch wohl hoffentlich nicht dein Ernst, oder?


Was ist damit?
Das macht eine Bitmaske, mit 0 bis 32 Einsen.
War in diesem Fall falsch, es zu verwenden, aber was ist an dem Codeschnippsel auszusetzen, sorry, ich sehe es nicht.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 <     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: