Aufgabenstellung von Herren Grams
Programmstrucktur
4.1 Schreriben Sie ein Programm zur Berechnung derjenigen Nullstellen der
Funktion:
f(x) = x-(1-x)^4
die im Intervall [0,1] liegt. Benutzen Sie den Zwischenwertsatz der
Analysis. Geben Sie einen möglichst genauen Näherungswert für die Nullstelle
aus.
4.2 Schreiben Sie einen Programm, das einen Textstring einliest und diesen
dann sortiert wieder ausgibt. Auf die Eingabe "8. November 1994" hin
soll der Bildschirm beispielsweise folgendes Ergebnis zeigen
Eingabe: 8. November 1994
Ausgabe: .14899Nbeemorv
4.3 Ergänzen Sie das Programm shift
so, dass die Bitfolge als String eingegeben werden kann und die Wandlung in eine
Dezimalzahl durch das Programm selbst durchgeführt wird. Die Anzahl der
Schiebepositionen sei variabel. Sie wird als ganze Zahl eingegeben. Ist sie
positiv, wird nach links, ist sie negativ, wird nach rechts geschoben.
4.4 Erstellen Sie ein Programm, das eine Tabelle des kleinen Einmaleins in
folgender Form ausgibt:
| 1
2 3 4 5 6
7 8 9 10
--------------------------------------------
1 | 1 2 3 4
5 6 7 8 9 10
2 | 2 4 6 8 10
12 14 16 18 20
3 | 3 6 9 12 15
18 21 24 27 30
...| ... ... ... ... ... ... ... ... ... ...
4.5 Übertragen Sie das Pasca-Programm Textinversion aus dem Informatik
Einführungskurs in C. Testen Sie die Wirkung der Ein- und Ausgabe von Zeichen
mit Hilfe dieses Programms. Geben Sie auch Steuerzeichen auf unterschiedliche
Art und Weise ein.
Lösungsansätze:
Aufgabe 4.1
//Nullstelle
#include <stdio.h>
#include <math.h>
void main()
{
double a=0,b=1,m;
while (fabs((b-a)/b)>1e-15)
{
m=((a+b)/2);
if ((m-pow(1-m,4))<=0)
a=m;
else
b=m;
}
printf("!Rundungsfehler: %c 1e-15\n",241);
printf("!Nullstelle der Funktion f(x)=x-(1-x)^4 :x= %1.15e\n",m);
}
Aufgabe 4.2
//Sortieren
#include <stdio.h>
void main ()
{
char a[80],m;
int i=0,j=1,k=0;
printf("!Sortieren\n?Text: ");
gets(a);
while (a[k]!=0)
{
while ((i<j)&&(a[j]<a[j-1]))
{
m=a[j];
a[j]=a[j-1];
a[--j]=m;
}
++k;
j=k;
}
printf("!Sortiert: %s\n",a);
}
Aufgabe 4.3
/*Shift*/
#include <stdio.h>
#include <string.h>
#include <math.h>
void main ()
{
char d[80];
int z=0,s,i=0,j;
printf("!Verschiebung von dualen Zahlen\n?Zahl: ");
gets(d);
printf("?Verschiebung: ");
scanf("%d",&s);
j=strlen(d);
while (i<j)
{
z=z<<1;
if (d[i]=='1') z++;
i++;
}
printf("!Orginalzahl: %d\n",z);
if (s>0) printf("!Nach links verschoben: %d",z<<abs(s));
if (s<=0) printf("!Nach rechts verschoben: %d",z>>abs(s));
}
Aufgabe 4.4
// Einmaleins
#include <stdio.h>
void main ()
{
int i=1,j=1,m=179;
printf("!Einmaleins\n");
printf(" %c",m);
do
printf("%4.0d",i++);
while (i<11);
i=0;
printf("\n");
while (i<(4+10*4))
{
printf("%c",196);
i++;
}
i=1;
printf("\n");
while (i<11)
{
printf("%3.0d%c",i,m);
while (j<11)
printf("%4.0d",(i*j++));
i++;
j=1;
printf("\n");
}
}
Aufgabe 4.5
//invers
#include <stdio.h>
#include <string.h>
ReadWrite()
{
unsigned char s;
scanf("%c",&s);
if (s>13) ReadWrite();
printf("%c",s);
return 1;
}
void main ()
{
printf("Textinversion\n");
ReadWrite();
}