Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

C und Arrayfeld löschen





Frage

Hallo, ich habe ein Prog in C geschrieben mit dem ich Floatzahlen einlesen kann die dann zusammenaddiert werden sollen. Jetzt hab ich nur ein problem, da ich 2 Zahlen hintereinader einlese überschriebt der mir teils das 2te arrayfeld. Beispiel: Zahl1 ist: 123 Zahl2 ist: 5 Diese sollen jetzt addiert werden Zahl1+Zahl2 raus kommt 646 ?! Er rechnet also 123 + 523 Somit übernimmt er den Wert aus dem ersten Arrayfeld in das 2te und überschriebt dann die erste stelle. Also muß ich das Arrayfeld nach dem einlesen der ersten Zahl ganzlöschen. Aber gibts da einen Befehl oder muß ich echt alle arrayfelder mit "nix" überschreiben ? THX

Antwort 1 von semi

Mehr Input bitte. Wie sieht der Code aus?

Antwort 2 von Redhawk

double getfloat(void);
...
...
...
double floatzahl;

char zeichen,eingabe[25];
int zahl=0,punkt=0,minus;
int i=0,imax=0;
int e=0;
int k=0;
int maxm=9,maxe=3;

// Main
void main (void)
{
double zahl1,zahl2;
clrscr();
printf("\n\tBitte geben Sie eine erste Zahl ein : ");
zahl1=getfloat();
printf("\n\tBitte geben Sie eine zweite Zahl ein : ");
zahl2=getfloat();
printf("\n\n\n\tDas Ergebnis der Addition ist : %lg ",zahl1+zahl2);
getch();
}


Antwort 3 von Redhawk

argh, More Info:

Also, in der Funktion Getfloat wird die Floatzahl eingelesen und als Double-Varialbe floatzahl zurückgegeben. Diese wird als double Zahl1 & zahl2 dann gespeichert(solle so sein, ist aber nicht so, da er immer überschriebt)
Am ende soll einfach zusammenaddiert werden.


Antwort 4 von semi

?
Ich sehe immer noch kein "Arrayfeld", das Du löschen möchtest.

Double-Werte kannst Du wie folgt einlesen:
char   lineBuffer[128];
double doubleValue;

fgets(lineBuffer,sizeof(lineBuffer),stdin);
doubleValue = atof((char*)&lineBuffer);
oder

double doubleValue;
scanf("%en", &doubleValue);

Gruß,
Michael





Antwort 5 von Redhawk

Hi,

ok, noch mehr Info :-)

Ich gebe Floatzahlen ein, die ich in einem Array of Char => eingabe[25] speichere. Diese werden dann mit atof umgewandelt und zurückgegeben.
Soweit sogut, aber der inhalt der "eingabe[25]"
bleibt ja vorhanden. Jetzt lese ich mit dem selben Feld die 2te Zahl ein und muß nun vorher alles andere löschen. Sonst passiert der Fehler wie oben...

P.s Schlecht ausgedrückt ?

THX

Antwort 6 von semi

Mit memset kannst Du das Array imt '\0' füllen.
memset(&buffer, '\0', sizeof(buffer));
allerdings ist dies hier nicht notwendig.

#include <stdio.h>
#include <stdlib.h>

int main()
{
  char   buffer[128];
  double zahl1, zahl2;

// Mit atof

  printf("Zahl 1 eingeben: ");
  fgets(buffer,sizeof(buffer),stdin);
  zahl1 = atof((char*)&buffer);
  printf("Zahl 1: %.2f\n", zahl1);

  printf("Zahl 2 eingeben: ");
  fgets(buffer,sizeof(buffer),stdin);
  zahl2 = atof((char*)&buffer);
  printf("Zahl 2: %.2f\n", zahl2);

  printf("Summe : %.2f\n", (zahl1+zahl2));

// Mit scanf

  printf("Zahl 1 eingeben: ");
  scanf("%en", &zahl1);
  printf("Zahl 1: %.2f\n", zahl1);

  printf("Zahl 2 eingeben: ");
  scanf("%en", &zahl2);
  printf("Zahl 2: %.2f\n", zahl2);

  printf("Summe : %.2f\n", (zahl1+zahl2));

  return 0;
}

Gruß,
Michael

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: