Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Hilfe!!

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 ]
000
31.05.2007, 12:02 Uhr
~24karatboy
Gast


Nur habe ich jetzt das problem das das ergebnis wieder immer einen mehr ist hab schon einstatt i++ ++i versucht einstatt i=1 i=0 also die logik verstehe ich aber wieso ein falsches ergebnis kommt verstehe ich nicht

i=0

i*2+1 =1

i*2+1=1*2+1=3

i*2+1=3*2+1=7


jetzt hat er mir aber die 5 nicht mit berechnet wie kann man das machen ?



Code:
#include <stdio.h>

unsigned int x,i,zahl2,zahl=0,n,b;

main() {
    printf("Bitte geben Sie ein wieviele ungeraden zahlen von 1 an addiert werden soll: ");
    scanf("%i",&n);

    for (i=0; i <= n; i++){
        zahl2 = i % 2;
            if (zahl2 != 0)
            zahl += i * 2 + 1;
    }
    printf("Ergebnis: %i", zahl);
    getchar();
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.05.2007, 12:55 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Wie wäre es denn wenn du einfach "ungerade" hochzählst...

also bei i=1 anfangen und dann bis 2*n gehen


C++:
for (i=1; i < 2*n; i+=2)...


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 31.05.2007 um 12:56 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.05.2007, 13:07 Uhr
countless



wie wärs, wenn du gar keine schleife benutzt, sondern es direkt ausrechnest? :-)
sum(k=1,n, 2k-1) = n^2

Dein Code sieht irgenwie nicht richtig aus...
mit zahl2 = i % 2; schaust du, ob i eine ungerade Zahl ist und wenn sie es nicht ist (if (zahl2 != 0)), dann berechnest du daraus eine ungerade Zahl und addierst sie dazu?
Wäre

C++:
if (zahl2 != 0)
zahl += i;


nicht logischer, oder verstehe ich gerade was falsch?
--
"I'm here..... yeah,.. I'm here.......... it's not that big of a deal.........
i won't have to return to that shitty world....
this is....... not that bad."
.hack//sign (tsukasa)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.05.2007, 13:26 Uhr
ao

(Operator)


Bitte mach dir die kleine Mühe und lass dir für deine Threads aussagekräftigere Titel einfallen als "Hilfe!".

Danke
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.05.2007, 13:35 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

wie wärs, wenn du gar keine schleife benutzt, sondern es direkt ausrechnest? :-)
sum(k=1,n, 2k-1) = n^2


Ich hatte ja mit dem Gedanken gespielt, das beim golfen in der Rätselecke auszunutzen aber jetzt ist ja schon alles verraten...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
31.05.2007, 13:37 Uhr
~24karatboy
Gast


sorry aber ich bin noch blutiger anfänger ich verstehe die oberen beiden lösungsvorschläge irgendwie nicht wie n*2 ?

Also ich will nen Programm schreiben wo ein benutzer eine zahl eingeben kann wieviele ungerade zahlen von 1 an addiert werden sollen.

gibt er 3 an soll passieren: zahl+1=1
zahl+3=4
zahl+4=9
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
31.05.2007, 14:12 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


naja genau das macht ja die formel mit dem quadrieren

1^1 = 1
1^2 = 4
1^3 = 9
1^4 = 16
1^5 = 25

an sonsten lass dir doch einfach mal i ausgeben


C++:
.
int i;
for (i=1; i < 2*n; i+=2) printf("%d\n",i);
.
.


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.05.2007, 14:19 Uhr
~24karatboy
Gast


sorry aber ich verstehe das nicht der soll mir jede ungerade zahl zu einer zahl addieren



1 3 5 7 9 11 13 15 17 19 21... 99


und ich sehe nicht wie das mit der formel gehen soll
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
31.05.2007, 14:29 Uhr
countless



ok... also dann noch mal:
Du willst ein Programm schreiben, das die ersten n ungeraden Zahlen addiert (angefangen bei 1), wobei n vom Benutzer wählbar sein soll. Richtig?

Da gibt es jetzt (wie immer) verschiedene Möglichkeiten das zu realisieren. Zum Beispiel eben über Schleifen.
Zum Beispiel so:

C++:
sum=0;
for(i=0;i<n;i++){
   ungeradeZahl = 2*i+1;
   sum += ungeradeZahl;
}


Ablauf:
i ungeradeZahl sum
0 1 1
1 3 4
2 5 9
3 7 16
4 9 25

Die Variable i entspricht hier also der "Nummer" der ungeraden Zahl wenn man sie der Größe nach ordnet (i=0 ist die erste ungerade Zahl, i=1 die zweite usw.).

Eine andere Möglichkeit ist:

C++:
sum=0;
for(i=1;i<n;i+=2){
   sum += i;
}


Ablauf:
i sum
1 1
3 4
5 9
7 16
9 25
Im Gegensatz zu oben entspricht hier i nicht dem Index der ungeraden Zahl, sondern der ungeraden Zahl selbst, die dann einfach hinzuaddiert wird. Allerdings hat sich hier auch die Bedeutung von n, geändert. Während in der ersten Möglichkeit oben n die Anzahl der ungeraden Zahlen war die addiert werden, sollen hier alle ungeraden Zahlen im Intervall [0,n) addiert werden.

Eine dritte Möglichkeit ist folgende:

C++:
for(i=0;i<n;i++){
   if(i%2!=0)      //ueberpruefe ob i ungerade, wenn ja dann addiere
      sum += i;
}


Ablauf:
i sum
0 0
1 1
2 1 <-- 2%2==0, daher wird hier nix addiert
3 4
4 4 <-- 4%2==0, daher wird hier nix addiert
5 9
Hier hat n die gleiche Bedeutung wie in dem Bsp darüber.

Nun könnte man aber letztendlich auf diese ganzen Schleifen verzichten, denn für die Summe der ersten n ungeraden Zahlen gibt es einen mathematischen Zusammenhang. Schau dir mal die Summen oben an (1,4,9,16,25,..). Fällt dir was auf? Das sind alles Quadratzahlen (1^2,2^2,3^2,4^2,5^2). Die Summe der ersten n ungeraden Zahlen ist nämlich gerade n^2. Das vereinfacht dein Problem natürlich ungemein, es sei denn du willst/musst das ganze unbedingt über Schleifen lösen.
Hoffe ich hab mich jetzt nirgends verschrieben und hoffe, jetzt ist dir das ganze etwas klarer.
--
"I'm here..... yeah,.. I'm here.......... it's not that big of a deal.........
i won't have to return to that shitty world....
this is....... not that bad."
.hack//sign (tsukasa)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
31.05.2007, 14:50 Uhr
~24karatboy
Gast


irgendwie hab ich gerade totale denk schwierigkeiten meiner meinung nach ist bei dir wenn man 10 eingibt i<10 dann läuft die schleife 9 mal durch

ich will aber nicht das sie 9 mal durch läuft sondern das sie die ersten 10 ungeraden zahlen addiert die schleife läuft ja auch bei geraden zahlen und zählt eine dazu
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ C / C++ (ANSI-Standard) ]  


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: