Hallo Habo , ich sitze gerade für die uni an einer kleinen Programmieraufgabe.
Ziel ist es Werte aus einer *.dat Datei einzulesen, auszugeben und entsprechend zu verarbeiten. Das einlesen und ausgeben der Werte funktioniert soweit auch ganz prima!
In der *.dat sind Werte im Bereich - / + vorhanden. Ich soll eine Funktion schreiben, die die negativen Werte, positiven Werte und die Null erkennt und die Anzahl zurück gibt.
Der Prof hat folgenden Funktionsaufruf vorausgesetzt :
void signs (int werte[], int i, int anz_pos, int anz_null, int anz_negativ)
int werte[] ist mein Array mit den einzelnen Werten aus der *.dat
int i ist die Anzahl der Werte aus der *.dat (35-Zahlen)
anz_pos sind soll die Anzahl der positiven Werte werden
anz_neg .... negative Werte
anz_null halt die Nullen.
Jetzt habe ich gerade irgendwie ein Problem :
Im Hauptprogramm lese ich quasi nur die Werte ein siehe Quellcode.
Jetzt muss ich der Funktion signs aber auch direkt Werte für die anz_pos,anz_neg und anz_null übergeben oder verstehe ich das falsch?
Wir sind gerade beim Thema Zeiger, die brauche ich ja um mehrere Werte quasi überall verfügbar zu machen, weil eine Funktion nicht soviele Parameter zurückgeben kann.
Ich hab bis jetzt folgendes geschrieben :
Bei der Funktion signs bin ich mir noch nicht ganz sicher, ob ich dass so realisieren kann.
Ich muss im Prinzip ja nur prüfen ob die Zahl ==0 , Zahl <0 oder Zahl > 0 ist.
Kann man das so machen?
Hat irgendwer hilfreiche Tipps zur Lösung meines Problems?
LG,
weau
Ziel ist es Werte aus einer *.dat Datei einzulesen, auszugeben und entsprechend zu verarbeiten. Das einlesen und ausgeben der Werte funktioniert soweit auch ganz prima!
In der *.dat sind Werte im Bereich - / + vorhanden. Ich soll eine Funktion schreiben, die die negativen Werte, positiven Werte und die Null erkennt und die Anzahl zurück gibt.
Der Prof hat folgenden Funktionsaufruf vorausgesetzt :
void signs (int werte[], int i, int anz_pos, int anz_null, int anz_negativ)
int werte[] ist mein Array mit den einzelnen Werten aus der *.dat
int i ist die Anzahl der Werte aus der *.dat (35-Zahlen)
anz_pos sind soll die Anzahl der positiven Werte werden
anz_neg .... negative Werte
anz_null halt die Nullen.
Jetzt habe ich gerade irgendwie ein Problem :
Im Hauptprogramm lese ich quasi nur die Werte ein siehe Quellcode.
Jetzt muss ich der Funktion signs aber auch direkt Werte für die anz_pos,anz_neg und anz_null übergeben oder verstehe ich das falsch?
Wir sind gerade beim Thema Zeiger, die brauche ich ja um mehrere Werte quasi überall verfügbar zu machen, weil eine Funktion nicht soviele Parameter zurückgeben kann.
Ich hab bis jetzt folgendes geschrieben :
Code:
#include <stdio.h>
void ausgeben (int werte[], int i)
{
int y=0, t=0;
for(y=0;y<i-1;y++)
{
printf("%4i", werte[y]);
t++;
if(t==7)
{
printf("\n");
t=0;
}
}
}
void signs (int werte[], int i, int *anz_pos, int *anz_null, int *anz_negativ)
{
int a=0;
for(a=0;a<i-1;a++)
{
if(werte[a]==0)
{
*anz_null = *anz_null +1;
}
}
}
int main()
{
FILE *datei;
int werte[100];
int i=0;
if((datei =fopen("werte.dat" , "r")) ==NULL)
{
printf("Fehler!\n");
}
else
{
while(!feof(datei))
{
fscanf(datei, "%d", &werte[i]);
i++;
}
}
fclose(datei);
ausgeben(werte,i);
signs(werte,i);
return 0;
Bei der Funktion signs bin ich mir noch nicht ganz sicher, ob ich dass so realisieren kann.
Ich muss im Prinzip ja nur prüfen ob die Zahl ==0 , Zahl <0 oder Zahl > 0 ist.
Kann man das so machen?
Hat irgendwer hilfreiche Tipps zur Lösung meines Problems?
LG,
weau