Antworte auf:  Problemfälle bei Fibonacci-Funktion behandeln von JamesNguyen
Forum:  Programmieren, moderiert von: matph

[Zur Forum-Gliederung] [Wie man Fragen beantwortet] [Themenstart einblenden]

  Alle registrierten Mitglieder können Mitteilungen schreiben.
Benutzername:
Passwort:
Nachricht-Icon:                   
                  
              
Nachricht:


 
 


Input assistance tools (JavaScript): [Link extern intern] [MathML?] [$$?]
[fed-area] [LaTeX-inline] [LaTeX-display] [Tikz] [hide-area][show-area] [Source code [num.]][?]
 Show Preview      Write using fedgeo formula editor or Latex.

Smilies for your message:
😃 😄 😁 🙂 🙃 😉 🤗 🤫 🤔 🙄 😴 🤒 😎 😮 😲 😂
🙁 😖 😒 😐 😡 👌 👍 👎 🤢 🤧 🥵 🥶 😵 🤯 😛 😷
Optionen: Deaktiviere HTML in dieser Nachricht
Deaktiviere MATHML in dieser Nachricht. Wenn Dein Text $-Zeichen enthält, die nicht LaTeX-Formeln begrenzen.
Deaktiviere Smilies in dieser Nachricht
Zeige die Signatur (Kann in 'Mein Profil' editiert werden.)
    [Abbrechen]
 
Beachte bitte die [Forumregeln]


Themenübersicht
viertel
Senior
Dabei seit: 04.03.2003
Mitteilungen: 27783
Wohnort: Hessen

 Beitrag No.1, eingetragen 2021-02-27 00:35    [Diesen Beitrag zitieren]

Mal im Ernst, Sportsfreund, wer soll sich denn durch diesen unleserlichen linksbündigen Codesalat durchwühlen?
2021-02-26 22:06 - JamesNguyen im Themenstart schreibt:
[…]

_Bool isFibonacci ( long long value )
{
auto long long fNminus2 = 0LL , fNminus1 = 1LL , fN = fNminus1 + fNminus2 ;

auto unsigned char i ;

if (  )

if ( fNminus2 == value )
{
return 1 ;
}
else if ( fNminus1 == value )
{
return 1 ;
}
else if ( fN == value )
{
return 1 ;
}
{
for ( i = 3 ; i < 93 ; i ++ )
{
fNminus2 = fNminus1 ;
fNminus1 = fN ;
fN = fNminus1 + fNminus2;

if ( fN == value ) return 1 ;
}
}

return 0 ;
}

[…]

// funktionsdeklaration
int macheLinie ( int zeichen , int laenge ) ;

int main ( void )
{

macheLinie ( 340 , -77 ) ;
macheLinie ( '~' , 1111 ) ;
return 0 ;
}


// funktionsdefinition:
int macheLinie ( int zeichen , int laenge )
{
int i = 0 ;
if ( zeichen > 255 )
zeichen = zeichen % 256 ;
if ( laenge < 0 )
laenge = abs ( laenge ) ;
if ( laenge > 80 )
laenge = 80 ;

for ( i = 0 ; i < laenge ; i ++ )
{
printf ( "%c" , zeichen ) ;
}
printf ( "\n" ) ;
return i ;
}

[…]

Benutze bitte in Zukunft den [Quelltext]-Bereich (findest du unter dem Eingabefenster), bei mehr als 3 oder 4 Zeilen Code auch mit Zeilennummern, also [num.], dann sieht das vernünftig so aus:
C
  1. _Bool isFibonacci ( long long value )
  2. {
  3. auto long long fNminus2 = 0LL , fNminus1 = 1LL , fN = fNminus1 + fNminus2 ;
  4.  
  5. auto unsigned char i ;
  6.  
  7. if ( )
  8.  
  9. if ( fNminus2 == value )
  10. {
  11. return 1 ;
  12. }
  13. else if ( fNminus1 == value )
  14. {
  15. return 1 ;
  16. }
  17. else if ( fN == value )
  18. {
  19. return 1 ;
  20. }
  21. {
  22. for ( i = 3 ; i < 93 ; i ++ )
  23. {
  24. fNminus2 = fNminus1 ;
  25. fNminus1 = fN ;
  26. fN = fNminus1 + fNminus2;
  27.  
  28. if ( fN == value ) return 1 ;
  29. }
  30. }
  31.  
  32. return 0 ;
  33. }

Dann können wir über den Code reden😉


JamesNguyen
Aktiv
Dabei seit: 08.11.2020
Mitteilungen: 187
 Themenstart: 2021-02-26 22:06    [Diesen Beitrag zitieren]

Hallo,

in der Aufgabe steht:

Eine Funktion isFibonacci untersucht einen übergebenen Wert, ob er eine Fibonacci-Zahl ist
und gibt einen entsprechenden logischen Wert zurück.

ich habe folgendes implementiert:

_Bool isFibonacci ( long long value )
{
auto long long fNminus2 = 0LL , fNminus1 = 1LL , fN = fNminus1 + fNminus2 ;

auto unsigned char i ;

if (  )

if ( fNminus2 == value )
{
return 1 ;
}
else if ( fNminus1 == value )
{
return 1 ;
}
else if ( fN == value )
{
return 1 ;
}
{
for ( i = 3 ; i < 93 ; i ++ )
{
fNminus2 = fNminus1 ;
fNminus1 = fN ;
fN = fNminus1 + fNminus2;

if ( fN == value ) return 1 ;
}
}

return 0 ;
}

jetzt bin ich bei der Aufgabenstellung

Welche Probleme können bei unsachgemäßer Nutzung der jeweiligen Funktion
auftauchen? Sehen Sie eine Kontrolle dieser Problemfälle vor, indem Sie bspw. eine
entsprechende Rückgabe machen. Das muss natürlich auch dokumentiert und getestet
werden.

In der Vorlesung hatten wir dazu auch folgends Beispiel

// funktionsdeklaration
int macheLinie ( int zeichen , int laenge ) ;

int main ( void )
{

macheLinie ( 340 , -77 ) ;
macheLinie ( '~' , 1111 ) ;
return 0 ;
}


// funktionsdefinition:
int macheLinie ( int zeichen , int laenge )
{
int i = 0 ;
if ( zeichen > 255 )
zeichen = zeichen % 256 ;
if ( laenge < 0 )
laenge = abs ( laenge ) ;
if ( laenge > 80 )
laenge = 80 ;

for ( i = 0 ; i < laenge ; i ++ )
{
printf ( "%c" , zeichen ) ;
}
printf ( "\n" ) ;
return i ;
}

da hat er also mit if Abfragen einiges behandelt.


Mir fehlt etwas das Wissen wie ich meine obige Funktion behandeln soll

bzw. was unsachgemäße Benutzung darstellen würde.

ich hatte meine funktion vorher auch mit unsigned long long mal geschrieben

theoretisch kann ich ja in die main der funktion


aufrufen

isFibonacci ( < alles von ]-unendlich, +unendlich[
dass dann mit sämtlichen präfixen ull, LL  usw.

ich bin mehr einfach sehr unsicher

was davon alles überhaupt behandelt werden kann.

weil das was inder main funktion aufgerufen wird.

geht mir tatsächlich u.U verloren in der is Fibonacci Funkion.

Bspw. wenn ich -5 isFibonnacci (unsigned long long number)

aufrufe dann bekomme 42949672911.

es würde hier also wenig sinn machen inder FUnktion

if ( number < 0 )

zu schreiben, weil -5 so gar nicht angekommen ist.


 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]