Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Mal wieder ein virtual rätsel

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 ]
000
07.01.2004, 13:29 Uhr
virtual
Sexiest Bit alive
(Operator)


Allmählich bekomme ich wieder mehr Luft (mit xed werde ich auch bald wieder weitermachen können, danke für den cvs Account, mike); Zeit also für ein weiteres sinnloses Rätsel:

Die Connell Folge
Ich nehme an, der Mensch, der diese Folge 1959 erfand, hieß Connell, daher der Name. Die ersten Folgenglieder schauen so aus:

Code:
1, 2, 4, 5, 7, 9, 10, 12, 14, 16, 17, 19, 21, 23, 25, ...


Das Bildungsgesetz is so definiert: Die folge wird konstruiert aus aufeinanderfolgenden natürlichen Zahlen, wobei die erste ungrade zahl, die folgenden zwei graden Zahlen, die darau f folgenden drei ungraden Zahlen, die folgenden vier graden Zahlen usw. die Folge bilden. Im folgenden bezeichne c(n) das n-te Folgenglied.

1. Aufgabe (leicht)
Entwickel ein Programm, daß zu einem n das entsprechende c(n) ermittelt.

2. Aufgabe (mittel)
Entwickel ein möglichst performantes Programm, daß zu einem p ermittelt, ob es ein n gibt, so daß p == c(n).

3. Aufgabe (leicht)
Entwickel ein Programm, welches numerisch die Aussage prüft: die Folge c(n)/n hat einen Grenzwert. (wo liegt dieser grenzwert, wenn es ihndenn gibt)?

4. Aufgabe (schwer)
Löse Aufgabe 3 mathematisch.

Selbstverständlich kann gegolft werden, wobei ich nicht so gerne ihr golfe (frage mich immer, in welcher Sprache ihr golft! ), daher schlage ich auch kein par vor.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.01.2004, 13:41 Uhr
(un)wissender
Niveauwart


Was gibt n an?
Die Anzahl der Folgeglieder und/oder den Beginn der Folge (fängt immer mit 1 an?)?
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.01.2004, 14:01 Uhr
virtual
Sexiest Bit alive
(Operator)


n ist der Index des jeweiligen Folgeglieds, beginnend mit 1
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.01.2004, 14:14 Uhr
(un)wissender
Niveauwart


Zu Aufgabe 1:


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

int main(int argc, char *args[])
{
    if(argc < 2) {
        std::cout << "Fehler!";
        return 1;
    }
    int n = atoi(args[1]);    
    std::cout <<  (((n * 2) - 1) - static_cast<int>(sqrt(n) + 0.5)) << std::endl;
    return 0;
}




Bearbeitung:

Kannst du das verifizieren, virtual, habe das selbst gemacht und nicht gegoogelt, bin halt keine Mathematiker.


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

Dieser Post wurde am 07.01.2004 um 14:16 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.01.2004, 14:34 Uhr
(un)wissender
Niveauwart


Ist leider nicht korrekt, liefert für 3 3(statt 4) und für 12 20(statt 19)
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.01.2004, 16:38 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


oh ein neues rätsel
zu 1 hab ich dies...

C++:
int connell(int n){int i,x,y,z;for(i=x=y=z=0;i<n;++i,++x)i-y?++x:y+=++z;return x;


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.01.2004, 16:55 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


für p>0 sollte das hier für die 2 funzen

C++:
int isconnell(int p){int i,x,y,z;for(i=x=y=z=0;x<p;++i,++x)i-y?++x:y+=++z;return x==p;}



ach so frage 3 sollte ja auch beantwortet sein, ist ja nicht weiter schwer funktion 1 mit ner hohen zahl aufzurufen und durch die zahl zu teilen....

das der grenzwert so bei 2 liegt überrascht ja nicht wirklich weil die steigung ja gegen 2 geht je grösser n ist desto länger wird um 2 erhöht und nur ganz selten um 1...
womit dann auch aufgabe 4 geklärt sein sollte...


Dein Statement dazu bitte virtual...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.01.2004 um 17:03 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.01.2004, 17:30 Uhr
(un)wissender
Niveauwart


Ich glaube, es geht auch ohne Schleife, mit kann jeder.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.01.2004, 17:38 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wie hast du ne expliziete formel dafür...?

muss irgendwie 2*n minus irgendwas mit wie oft summe n da reinpasst sein...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
07.01.2004, 17:55 Uhr
(un)wissender
Niveauwart


Das kann virtuals Reihe, aber mir wa so als wenn nach 25 26 kommen müsste, mein Programm sagt aber 27.

Irgendwo ist noch der Wurm drin, habe jetzt aber keine Zeit mehr.


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

int countChanges(int n) {  
    int pow1 = static_cast<int>(sqrt(n));
    if(((pow1 * pow1) + 1) < n)
        ++pow1;  
    return pow1;
    
}

int makeSum(double n) {
    return static_cast<int>((n + 1) * (n/2));
}

int main(int argc, char *args[])
{        
    if(argc < 2) {
        std::cout << "Fehler!";
        return 1;
    }
    int n = atoi(args[1]);
    int changes = countChanges(n);    
    int sum =  makeSum(changes);
    int diff = n - sum;  
    int result = changes * changes;
    
    if(diff > 1) {
        result += diff * 2 - 1;  
    } else{
        result += diff;
    }
    std::cout << result;        
    
    return 0;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: