Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Leute

hallo erst mal hier im Forum an alle!!!!!!!!!!

da hab ich es, das erste richtige Problem in C !!

folgende Aufgabenstellung habe ich:

startwert +stopwert als integer,

die summer aller Zahlen von startwert bis stopwert sollen addiert werden,

zugelassen sind alle Zahlen im signierten bereich,

also von ca. - 2Mrd bi +2 Mrd.

jetzt muss der Copiler aber meckern wenn es während des Schleifendurchlaufes eine Bereichsüberschreitung gibt!!!

das isses ja nun,

wenn ich nur die positiven Zahlen zusammenzähle ist es ja noch einfach!!!!, da lässt sich eine Überschreitung noch klar feststellen, doch wenn ich einen Startwert von, sagen wir -100.000 habe, fängt der compiler an, die negativen zahlen zusammen zu zählen und er hat im negativen Bereich eine Überschreitung,

was muss ich tun, um all dieses zu unterscheiden und das er wirklich nur bei der Bereichsüberschreitung meckert???

Hilfe wäre toll

Gruß Harry

:marine :marine

Hi,

ich hoffe nur das ich dich jetzt richtig vertanden habe :)

Addiere doch alle negativen und positiven getrennt von einander, um so nachher die GesamtSumme zu erhalten.

In der Schleife:


if( x<0)

    negativ += x;

else

    positiv += x;


summe = positiv - negativ;

Nicht vergessen summe,positiv und negativ vorher mit 0 zu initialisieren ;)

@Harry-Dirty:

Ich nehme an, Du meinst, dass das Programm eine Fehlermeldung liefern soll, denn der Compiler hat zur Laufzeit nun wirklich nichts mehr zu melden ;)

Zum Problem: wie wäre es damit:

int startwert = ...;
int stopwert = ...;
int summe = 0;
int altesumme = 0;
for( int i=startwert; i<=stopwert; i++ ) {
altesumme = summe;
summe += i;
if( i < 0 ? (summe > altesumme) : (summe < altesumme) ) {
// Bereichsüberschreitung
}
}[/CODE]

Grundlage: Wenn ich eine negative Zahl addiere, sollte die Summe danach kleiner geworden sein, bei einer positiven Zahl größer. Wenn das nicht der Fall ist, hat eine Bereichsüberschreitung stattgefunden.

Hallo Klotzkopf

Dank dir für deine Hilfe, habe es fast geschaft, dennn...

die Überprüfung in der if anweisung klappt, damit kann ich die Bereichsüberschreitung feststellen!!!

nun habe ich folgende Situation.

Diese ganz Berechnung findet in einer eigenen funktion, die ich von der "main"aufruf, statt.

In dieser eigenen Funtion sint nur int Variablen. Nun habe ich zweierlei von Funktionsergebnissen, einmal das Ergebnis der Bereichsüberschreitung und das andere mal das Ergebnis, wo keine stattfand.

Was muss ich tun um in der main Funktion zwischen sollchen sachen unterscheiden zu können???(gehts überhaupt??)

hier mal dem Quellcode der 'sum' funktion, die vom main programm aufgerufen wird

( muss alles in integer sein!!!)

int sum(int start, int stopp)

{

int erg_vor=0;

int erg=0;

erg=erg+start;

for(start=start+1 ; start<=stopp ; start++)

{

erg_vor=erg;

erg=erg+start;

if(((start<=0)&&(erg_vor>erg))||((start>=0)&&(erg_vor<=erg)))

{}

else

{ erg=erg;

break;}

}

return (erg);

}

GRUß Harry :marine :marine

Wie wärs mit Exceptions: schreib "throw erg;" anstelle des break in den else-Zweig Deiner Abfrage, und rufe sum folgendermaßen auf:


int s;
try {
s = sum( -100000, 0 );
}
catch( int ueberlauf ) {
// Fehlermeldung ausgeben
}
[/CODE] Anmerkung: Das:
[CODE]erg=erg+start;
for(start=start+1 ; start<=stopp ; start++)
ist in Deinem Fall das gleiche wie:
for(;start<=stopp ; start++) 

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.