WinFuture-Forum.de: Fehler In C-programm, Ich Finde Ihn Nicht - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Fehler In C-programm, Ich Finde Ihn Nicht Änfänger


#1 Mitglied ist offline   xor 

  • Gruppe: aktive Mitglieder
  • Beiträge: 73
  • Beigetreten: 14. Juni 06
  • Reputation: 0
  • Wohnort:Berlin

geschrieben 06. Januar 2007 - 13:08

Hallo,
ich versuche c zu lernen und ich habe ein kleines Übungsprogramm geschrieben, dass Quadratwurzel berechnen soll. Das Programm funktioniert auch erstmal ganz gut: es berechnet den richtigen Wert, jedoch kommt bei mir immer die Fehlermeldung , wenn ich dann eine weitere Taste drücken, eigentlich sollte das Programm beendet werden.

Zitat

Run-Time Check Failure #2 - Stack around the variable 'x' was corrupted.

Ich finde den Fehler nicht.
Das ist der gesamtme Quellcode:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>

int main()
{
	int i;
	float x [20], r;
	
	printf("Die ist ein Programm zur naeherungsweisen Bestimmung der Quadtratwurzel einer Zahl.\n");
	printf("Bitte geben Sie die Zahl an, deren Quadratwurzel bestimmt werden soll:\n");
		scanf("%f", &r);
		x [0] = 1;
		for (i=0; i<20; ++i ) x[1+i]=((x[i]+(r/x[i]))/2);
		printf("Die Quadratwurzel von %f ist %f.",r , x[19]);
		getch();
	return 0;
}


Die Formel ist von Wikipedia
http://de.wikipedia..../Heronverfahren

Ich verwende Microsoft Visual c++ Express.

Ich habe den Fehler inzwischen selber gefunden:

in der 7. Zeile muss es float x [21], r; statt float x [20], r; heißen.
Hier noch mal der vollständige richtige Code:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>

int main()
{
	int i;
	float x [21], r;
	printf("Die ist ein Programm zur naeherungsweisen Bestimmung der Quadtratwurzel einer Zahl.\n");
	printf("Bitte geben Sie die Zahl an, deren Quadratwurzel bestimmt werden soll:\n");
		scanf("%f", &r);
		x [0] = 1;
		for (i=0; i<20; i++ ) x[1+i]=((x[i]+(r/x[i]))/2);
		printf("Die Quadratwurzel von %f ist %f.",r , x[i]);
		getch();
	return 0;
}

Dieser Beitrag wurde von xor bearbeitet: 06. Januar 2007 - 13:47

0

Anzeige



#2 Mitglied ist offline   FaceItReal 

  • Gruppe: aktive Mitglieder
  • Beiträge: 42
  • Beigetreten: 11. Januar 06
  • Reputation: 0

geschrieben 06. Januar 2007 - 15:09

Mehr muss ich eigentlich nich sagen:

float x [20];
...
for (i=0; i<20; ++i ) x[1+i]...


du greifst auf das 21. Element mit Index 20 zu!
0

Thema verteilen:


Seite 1 von 1

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