Nachdem ich heute morgen das 8. AP Praktikum erfolgreich bestanden habe, hier nun die Lösungen zu den Aufgaben!
Aufgabe 2:
#include <stdio.h>
#include <math.h>
void ausgeben(double Arrayname[], int anzahl)
{
int x=0;
int i;
for(i=0; i<anzahl-1; i++)
{
if(x<7)
{
printf(“%4.0lf “, Arrayname[i]);
x++;
}
else
{
printf(“n”);
printf(“%4.0lf “, Arrayname[i]);
x=1;
}
}
}
void signs(double Arrayname[], int anzahl, int pos, int null, int neg)
{
pos=0;
null=0;
neg=0;
int i;
for(i=0; i<anzahl-1; i++)
{
if (Arrayname[i]>0)
pos++;
else if(Arrayname[i]==0)
null++;
else
neg++;
}
printf(“n”);
printf(“n”);
printf(“Positive Zahlen: %i – Nullen: %i – Negative Zahlen: %in”, pos, null, neg);
}
int main() {
double array[100];
int l=0;
int a,b,c;
FILE *datei;
datei=fopen(“werte.dat”, “r”);
if(datei==NULL)
{
printf(“Fehler beim Öffnen!n”);
exit(1);
}
while(l!=100&&!feof(datei))
{
fscanf(datei, “%lf”, &array[l]);
l++;
}
fclose(datei);
if(l==100)
printf(“Es können nur maximal 100 Zahlen eingelesen werden, diese werden nun verarbeitet!n”);
else
printf(“Das Dateiende wurde erreicht, alle Zahlen wurden eingelesen, die Verarbeitung wird nun gestartet!”);
printf(“n”);
printf(“n”);
ausgeben(array, l);
signs(array, l, a, b, c);
return 0;
}
Aufgabe 3:
arrayFunctions.h:
int Einlesen(double Arrayname[]);
double Mittelwert(double Arrayname[], int anzahl);
double Big(double Arrayname[], int anzahl);
double Small(double Arrayname[], int anzahl);
double Small2(double Arrayname[], int anzahl);
void Ausgabe(double Arrayname[], int anzahl);
void Absolut(double Arrayname[], double Arrayname2[], int anzahl);
void Sort(double Arrayname[], int anzahl);
arrayFunctions.c:
#include “arrayFunctions.h”
#include <stdio.h>
#include <math.h>
int Einlesen(double Arrayname[])
{
int x=0;
int y=20;
int z=0;
int i;
for(i=0; i<20; i++)
{
z=y-x;
printf(“Verbleibende Eingaben: %in”, z);
printf(“Abbruch mit Ctrl+Dn”);
printf(“Geben Sie eine Zahl ein!n”);
if(scanf(“%lf”, &Arrayname[i])==EOF)
break;
x++;
}
return x;
}
double Mittelwert(double Arrayname[], int anzahl)
{
double t=0;
int i;
for(i=0; i<anzahl; i++)
{
t=t+Arrayname[i];
}
t=t/anzahl;
return t;
}
double Big(double Arrayname[], int anzahl)
{
double t=0;
int i;
if(Arrayname[0]<Arrayname[1])
t=Arrayname[1];
else
t=Arrayname[0];
for(i=2;i<anzahl; i++)
{
if(t<Arrayname[i])
t=Arrayname[i];
}
return t;
}
double Small(double Arrayname[], int anzahl)
{
double t=0;
int i;
if (Arrayname[0]>Arrayname[1])
t=Arrayname[1];
else
t=Arrayname[0];
for(i=2;i<anzahl; i++)
{
if(t>Arrayname[i])
t=Arrayname[i];
}
return t;
}
double Small2(double Arrayname[], int anzahl)
{
double t;
double s=0;
double r=0;
int i;
t=Small(Arrayname, anzahl);
if (Arrayname[0]>Arrayname[1])
if(t!=Arrayname[0])
s=Arrayname[0];
else
s=Arrayname[1];
else
if(t!=Arrayname[1])
s=Arrayname[1];
else
s=Arrayname[0];
for(i=2; i<anzahl; i++)
{
if(s>Arrayname[i])
if(t!=Arrayname[i])
s=Arrayname[i];
}
return s;
}
void Ausgabe(double Arrayname[], int anzahl)
{
int x=0;
int i;
for(i=0; i<anzahl; i++)
{
if(x<5)
{
printf(“%4.0lf “, Arrayname[i]);
x++;
}
else
{
printf(“n”);
printf(“%4.0lf “, Arrayname[i]);
x=1;
}
}
}
void Absolut(double Arrayname[], double Arrayname2[], int anzahl)
{
int i;
for(i=0; i<anzahl; i++)
{
Arrayname2[i]=fabs(Arrayname[anzahl-i-1]);
}
Ausgabe(Arrayname2, anzahl);
}
void Sort(double Arrayname[], int anzahl)
{
double z;
int i,j;
for(i=0; i<anzahl; i++)
{
for(j=0; j<anzahl-1; j++)
{
if(Arrayname[j]>Arrayname[j+1])
{
z=Arrayname[j+1];
Arrayname[j+1]=Arrayname[j];
Arrayname[j]=z;
}
}
}
Ausgabe(Arrayname, anzahl);
}
arrayMain.c:
#include <stdio.h>
#include <math.h>
#include “arrayFunctions.h”
int main() {
double array[20];
double array2[20];
int a;
double b,c,d,e;
a=Einlesen(array);
system(“clear”);
b=Mittelwert(array,a);
printf(“n”);
printf(“Der Mittelwert beträgt: %6.2lfn”, b);
c=Big(array,a);
printf(“n”);
printf(“Die größte Zahl ist: %.0lfn”, c);
d=Small(array,a);
printf(“n”);
printf(“Die kleinste Zahl ist: %.0lfn”, d);
e=Small2(array,a);
printf(“n”);
printf(“Die zweit kleinste Zahl ist: %.0lfn”, e);
printf(“——————-n”);
Ausgabe(array,a);
printf(“n”);
printf(“——————-n”);
Absolut(array,array2,a);
printf(“n”);
printf(“——————-n”);
Sort(array,a);
return 0;
}
Makefile:
array.out: arrayFunctions.o arrayMain.o
gcc -o array.out arrayFunctions.o arrayMain.o
arrayFunctions.o: arrayFunctions.h arrayFunctions.c
gcc -c arrayFunctions.c
arrayMain.o: arrayFunctions.h arrayMain.c
gcc -c arrayMain.c
In den nächsten Tagen folgt noch ein Eintrag zu dem QQ-1 Seminar von letzter Woche!