WinFuture-Forum.de: Kann Mir Einer Folgendes C-programmm Erklären - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Kann Mir Einer Folgendes C-programmm Erklären bin anfänger


#1 Mitglied ist offline   Foxhound 

  • Gruppe: aktive Mitglieder
  • Beiträge: 366
  • Beigetreten: 29. November 04
  • Reputation: 0

geschrieben 23. Mai 2005 - 14:02

Mit folgendem Programm soll eine Reihe untersucht werden und ermittelt werden, nach wieviel Reihengliedern die Summe S die Werte 1, 2, 3, ... erreicht bzw. übertrifft. Das sieht dann ungefähr so aus:

Summe 2.00 erreicht mit 1 Summanden
Summe 2.75 erreicht mit 2 Summanden
Summe 3.19 erreicht mit 7 Summanden
Summe 4.10 erreicht mit 17 Summanden
...

/* Untersuchung einer speziellen Reihe
   =================================== */
   
#include <stdio.h>
#define grenze    18.

main ()
{
     long   zaehler = 2  ,  nenner     = 1;
     double summe   = 0. ,  zielsumme  = 1. , dnenner;
     
     while (zielsumme <= grenze)
      {
           dnenner = (double) nenner;
           summe  += (double) zaehler / (dnenner * dnenner);
           if (summe >= zielsumme)
            {
                     printf ("Summe %8.2lf erreicht mit %10ld Summanden\n" , summe , nenner);
                     zielsumme += 1.;
            }
           zaehler++;
           nenner++;
      }
      
      return 0;
}


Meine Frage ist jetzt, warum man die variablen 'long' und 'double' nimmt und was das ', dnenner' bedeutet.


Edit: Die Reihe ist folgendermaßen:

S= 2 + (3/2²) + (4/3²) + (5/4²) + (6/5²) + (7/6²) + ....

Dieser Beitrag wurde von Foxhound bearbeitet: 23. Mai 2005 - 14:05

0

Anzeige



#2 Mitglied ist offline   supastah 

  • Gruppe: aktive Mitglieder
  • Beiträge: 31
  • Beigetreten: 27. Juni 04
  • Reputation: 0

geschrieben 24. Mai 2005 - 12:24

hab zwar noch nie c programmiert aber was solls...
also long und double sind keine variablen sonder geben den datentypen an.
dnenner soll wahrscheinlich für doublenenner stehen, heißt:
Da nenner zuerst als long initialisiert wird das ergebnis summe aber vom typen double ist muss nenner gecastet werden. Also von long zu double konvertiert. mit zaehler passiert das gleiche nur direkt in der Formel.
Nach dem Sinn warum die vars nicht direkt mit dem passenden datentypen initialisiert werden, kann ich dir auch nicht sagen? :blink:
0

#3 Mitglied ist offline   Foxhound 

  • Gruppe: aktive Mitglieder
  • Beiträge: 366
  • Beigetreten: 29. November 04
  • Reputation: 0

geschrieben 24. Mai 2005 - 13:17

Ich habs mitlerweile zwar selber schon verstanden aber trotzdem danke :blink:

Das mit dem umcasten wurde glaube ich nur zwecks Lehre gemacht. Der Code stammt aus einem umfangreichen Tutorial und war unter dem Thema casten zu finden.
0

#4 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 24. Mai 2005 - 14:08

#include <stdio.h>
void main(int n,float s){for(int z=1,c=2;z<=18;z+=((s+=c++/n/n++)<z)?0:1+0*printf("s %8.2lf erreicht mit %10ld summanden\n",s,n-1));return 0;}


SCNR. :blink:
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#5 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 24. Mai 2005 - 14:16

lool...ein menschlicher obfuscator *g*
0

#6 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 24. Mai 2005 - 14:26

Ist kein Obfuscation, sondern reine Kompaktifizierung des Codes. Ein Obfuscation sähe bei mir wesentlich schlimmer aus.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#7 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 24. Mai 2005 - 14:31

Dann würde mich eine Obfuscation interessieren. Kriegste das hin? :blink:
0

#8 Mitglied ist offline   Foxhound 

  • Gruppe: aktive Mitglieder
  • Beiträge: 366
  • Beigetreten: 29. November 04
  • Reputation: 0

geschrieben 24. Mai 2005 - 15:22

Achja eine Frage hätte ich doch noch. Was genau bewirkt '+='?
0

#9 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 24. Mai 2005 - 15:24

i += 1 ist das gleich wie i = i + 1.
0

#10 Mitglied ist offline   Foxhound 

  • Gruppe: aktive Mitglieder
  • Beiträge: 366
  • Beigetreten: 29. November 04
  • Reputation: 0

geschrieben 24. Mai 2005 - 15:28

Danke für die schnelle Antwort!

Also wäre

summe += (double) zaehler / (dnenner * dnenner)


gleichzusetzen mit

summe = ( summe ) + ( (double) zaehler / (dnenner * dnenner) )  


oder?
0

#11 Mitglied ist offline   tavoc 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.448
  • Beigetreten: 22. Juli 04
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 24. Mai 2005 - 16:36

Zitat (Foxhound: 24.05.2005, 16:28)

Danke für die schnelle Antwort!

Also wäre

summe += (double) zaehler / (dnenner * dnenner)


gleichzusetzen mit

summe = ( summe ) + ( (double) zaehler / (dnenner * dnenner) )  


oder?
<{POST_SNAPBACK}>


erfasst, auch wenn du das summe nich in klammern schreiben musst

Dieser Beitrag wurde von tavoc bearbeitet: 24. Mai 2005 - 16:37

your IP is 127.0.0.1 or ::1
you are running an OS
you use a Browser
I know so much about you...
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0