Lösungen zu Blatt 6 - Schulportal Bremerhaven

Werbung
Lösungen zu Blatt 6
//Aufgabe 6.2
#include <stdio.h>
#include <stdlib.h>
int funktion(int a, int b)
{
a = a+b;
b = b+a;
//Diese Zeile kann weggelassen werden,
//weil nur a zurück gegeben wird.
return a;
}
int main()
{
int a, b;
a = 3;
b = 5;
b = funktion(a, b);
printf("a=%d, b=%d\n", a,b);
}
//b erhält den lokalen Wert a aus der Funktion
-------------------------------------------------------------------------------------------------------------------------------------------------//Aufgabe 6.3
#include <stdio.h>
#include <stdlib.h>
int a=4;
//a wird global vereinbart
int func(int a)
{
return (--a);
}
//formaler Parameter
void proc()
{
++a;
}
int main()
{
proc();
proc();
func(a);
//hier ist a lokal gültig
//hier ist a global gültig
//aktueller Parameter
//Der Rückgabewert wird keiner
//Variablen zugewiesen!
printf("a= %i\n", a);
return 0;
}
//Aufgabe 6.4
#include <stdio.h>
#include <stdlib.h>
int ggT(int x,int y)
{
while(x!=y)
{
if(y<x)
x=x-y;
if(y>x)
y=y-x;
}
return x;
}
int main()
{
int a,b,erg;
printf("Euklidischer Algorithmus\n");
printf("\na = ");
scanf("%i",&a);
printf("\nb = ");
scanf("%i",&b);
erg=ggT(a,b);
printf("\nggT(%i, %i) = %i\n\n",a,b,erg);
return 0;
}
-------------------------------------------------------------------------------------------------------------------------------------------------//Aufgabe 6.5
#include <stdio.h>
#include <stdlib.h>
double D_abs(double a)
{
return (a<0?-a:a);
}
int main()
{
double a;
printf("Absolutwert einer double-Variablen\n");
printf("\na = ");
scanf("%lf",&a);
printf("a = %f",D_abs(a));
return 0;
}
//Aufgabe 6.6
#include <stdio.h>
#include <stdlib.h>
int Fakultaet1(int a)
{
int i;
int erg=1;
for (i=1;i<=a;i++)
erg=erg*i;
return erg;
}
//iterative Programmierung
int Fakultaet2(int a)
//rekursive Programmierung!
{
int erg;
if(a==0)
erg=1;
else
erg=Fakultaet2(a-1)*a;
return erg;
}
int main()
{
int a;
printf("Berechnung der Fakultaet einer Zahl\n");
printf("\nZahl: ");
scanf("%i",&a);
printf("\n%i! = %i (iterativ berechnet)",a,Fakultaet1(a));
printf("\n%i! = %i (rekursiv berechnet)\n\n",a,Fakultaet2(a));
return 0;
}
i=1;
while(i<=n)
{
erg=erg+i;
i+=2;
}
printf("\nAlle ungeraden Zahlen bis %i ergeben %i\n\n",n,erg);
return 0;
}
-------------------------------------------------------------------------------------------------------------------------------------------------//Aufgabe 6.7
#include <stdio.h>
#include <stdlib.h>
int signum(double a)
{
return(a<0?-1:(a==0?0:1));
}
int main()
{
double a;
printf("Signum-Funktion\n");
printf("\na = ");
scanf("%lf",&a);
printf("\nsignum(%lf) = %i",a,signum(a));
return 0;
}
//Aufgabe 6.8
#include <stdio.h>
#include <stdlib.h>
double a[3];
double b[3];
double erg[];
double skalarprod()
{
double erg=(a[1]*b[1]+a[2]*b[2]+a[3]*b[3]);
return erg;
}
void kreuzprod()
{
erg[1]=a[2]*b[3]-a[3]*b[2];
erg[2]=a[3]*b[1]-a[1]*b[3];
erg[3]=a[1]*b[2]-a[2]*b[1];
}
int main()
{
printf("Skalarprodukt von zwei Vektoren\n\n");
printf("a[1] = ");
scanf("%lf",&a[1]);
printf("a[2] = ");
scanf("%lf",&a[2]);
printf("a[3] = ");
scanf("%lf",&a[3]);
printf("\nb[1] = ");
scanf("%lf",&b[1]);
printf("b[2] = ");
scanf("%lf",&b[2]);
printf("b[3] = ");
scanf("%lf",&b[3]);
kreuzprod();
printf("\n\na * b = %.0f\n",skalarprod());
printf("\nKreuzprodukt: ");
printf("\nx = %3.0f\ny = %3.0f\nz = %3.0f\n",erg[1],erg[2],erg[3]);
return 0;
}
Herunterladen