Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.11.2011, 22:33

Bestimmten/Letzten Wert eines Schleifendurchlaufs ausgeben

Hallo an alle,

ich versuche gerade mit kleineren Aufgaben meine Kenntnisse zu erweitern. Im Moment hänge ich ein wenig beim sog. Heron-Algorithmus (Annähernde Ermittlung der Wurzel einer Zahl).
Man soll eine Zahl a eingeben, zB 30.
Das Programm soll sodann eine nahe an Zahl a liegende Quadratzahl aus einer Zahl x ausgeben. (Diejenige, die am nächsten dran liegt.)

Ich habe jetzt versucht, das über eine Schleife zu lösen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main ()
{
    int zahl;
    
    cout << "Gib eine nicht negative Zahl ein, von der annaehernd die Wurzel bestimmt werden soll: ";
    cin >> zahl;

    cout << "Eine nahe an der Zahl liegende Quadratzahl:" << endl;

    for (int x=1; x<zahl; x++)
    {
        if (x * x < zahl)
            cout << "Zahl: " << x*x << endl;
    }

    return 0;   
}


Als Ausgabe bekomme ich:

Zahl: 1
Zahl: 4
Zahl: 9
Zahl: 16
Zahl: 25

Gibt es eine Möglichkeit, dass mir das Programm nur den letzten Wert (Zahl: 25) und eventuell einen bestimmten anderen zB 3., 10.,... ausgibt?

Vielen Danke im Voraus

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

2

12.11.2011, 22:42

Einfach anstatt in der Schleife die Zahl auszugeben die Zahl zwischenspeichern und nach Abarbeitung der Schleife ausgeben.

3

12.11.2011, 22:55

Aber dann habe ich doch immer noch nicht das Problem gelöst, einen bestimmten Wert (den letzten) anzuspringen, oder?
Die Schleife läuft doch von 1 bis 'eingegebene Zahl' durch ohne zwischendurch zu stoppen. Wie kann ich denn da die gewollte Zahl zwischenspeichern. Ich kann doch zwischendurch nicht an einer bestimmten Stelle des Durchlaufs eingreifen, oder? ?(

4

12.11.2011, 23:02

Ich hab's:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main ()
{
    int zahl;
    int neu;

    cout << "Gib eine nicht negative Zahl ein, von der annaehernd die Wurzel bestimmt werden soll: ";
    cin >> zahl;

    cout << "Eine nahe an der Zahl liegende Quadratzahl:" << endl;

    for (int x=1; x<zahl; x++)
    {
        if (x * x < zahl)
            neu=x;
    }

    cout << "Zahl: " << neu*neu << endl;

    return 0;   
}

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

12.11.2011, 23:14

Ließe sich auch so umschreiben:

C-/C++-Quelltext

1
2
3
4
    int x;
    for ( x=1; x*x<zahl; x++);

    cout << "Eine nahe an der Zahl liegende Quadratzahl:" << x*x << endl;
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

13.11.2011, 13:56

Was für einen Anfänger aber nicht unbedingt Verständlicher ist, von daher kann er ja ruhig erst mal bei seiner Variante bleiben;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

13.11.2011, 17:00

Das mag wohl sein, das habe ich ja auch gar nicht adressiert.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

14.11.2011, 15:08

Gibt aber auch eine Kompilerwarnung. Warum nicht

C-/C++-Quelltext

1
2
3
int x = 1;
while(x*x<zahl)
    x++;

?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

14.11.2011, 15:57

Echt, sowas spuckt 'ne Warning aus? Welcher Compiler macht denn sowas? :P
Aber klar, die While-Variante ist in diesem Zusammenhang sinnvoller als die leere Anweisung beim For.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige