CKurs - Aufgaben zu C

Google

1.Aufgabe

Aufgabenstellung:

Temperatur-Umrechner: Celsius nach Fahrenheit
  
   Schreiben Sie ein C-Programm, das eine Celsius-Temperatur nach
   Fahrenheit umrechnet. Die Umrechnung soll mit Hilfe einer
   selbst-definierten Funktion:

                 

CCode:

double celsius2fahren(double TCelsius);

   realisiert werden. Die Umrechnungsformel lautet:
           
            TFahrenheit = (( TCelsius x 9 ) / 5 ) + 32

Lösung

Man "braucht" noch eine zusätzliche Datei:

CCode: main.h

double celsius2fahren(double TCelsius);

Nun kann man in die Hauptdatei noch eine weitere Funktion (neben main()) einfügen: Man beachte, dass man main.h in einfachen Hochkommata "includen" muss, da sonst im Systemverzeichniss anstatt im Programmverzeichnis gesucht wird.

CCode: main.c

#include <stdio.h>
#include "main.h"
double celsius2fahren(double TCelsius)
{
return (( TCelsius * 9 ) / 5 ) + 32;
}
int
main()
{
double tCel;
scanf( "%lf ",&tCel);
printf("%lf \n", celsius2fahren(tCel));
return 0;

}

Eingabe stdin:

23

Ausgabe stdout:

73.400000

 


2.Aufgabe

Aufgabenstellung:

Fibonacci Zahlen

   a) Schreiben Sie ein C-Programm, das die Fibonacci-Zahlen für eine
   positive ganze Zahl rekursiv berechnet.
   b) Füllen Sie die ersten 10 Fibonacci Zahlen in ein Array.
   c) Wie kann man dann die Array-Werte auf dem Bildschirm ausgeben.

Lösung

CCode:

#include <stdio.h>

int
main()
{
int i, fib[11];
freopen( "stdout.txt", "w", stdout ); //Leitet die Standardausgabe in die Datei stdout.txt um
fib[1]=1;
fib[2]=1;
for(i=3;i<=10;i++){
fib[i]=fib[i-1]+fib[i-2];
}
for(i=1;i<=10;i++){
printf("Fibnoccizahl(%2d)=%3d\n",i,fib[i]);
}
return 0;
}

%nd bedeutet, dass die folgende Zahl n Zeichen auf dem Bildschirm einnimmt.

Ausgabe stdout:

Fibnoccizahl( 1)=  1
Fibnoccizahl( 2)=  1
Fibnoccizahl( 3)=  2
Fibnoccizahl( 4)=  3
Fibnoccizahl( 5)=  5
Fibnoccizahl( 6)=  8
Fibnoccizahl( 7)= 13
Fibnoccizahl( 8)= 21
Fibnoccizahl( 9)= 34
Fibnoccizahl(10)= 55

Hinweis: fib[0] exisitiert auch im Speicher, logisch gesehen gibt es aber keine 0. Fibonaccizahl, deshalb hab ich von der Verwendung von fib[0] abgesehen.


3.Aufgabe

Aufgabenstellung:

Zugriff auf Dateien (geht über den Stoff der bisheringen Vorlesung hinaus)
  
   a) Schreiben Sie ein C-Programm, das 10 Zahlen aus einer Datei
   "celsius.dat" liest und diese von Cesius nach Fahrenheit umrechnet.
   b) Erweitern Sie das C-Programm, sodass die in a) berechneten
   Fahrenheit-Temperaturen in eine neue Datei "fahrenheit.dat" gespeichert werden.

- Bitte legen Sie in Ihrem ckurs/<Verzeichnis> eine Datei mit dem Namen
  "celsius.dat" an, die einige Celsius-Werte enthaelt.
  (Jeder Wert in einer eigenen Zeile )
- Das Lesen der Celsius-Werte aus der Datei "celsius.dat" geht dann
  folgendermassen:

CCode:

. . . while(!feof(stdin)) {  
                  scanf("%lf", &TCelsius);
                  .
                  .
                  .
            }

      - stdin: Standardeingabe (Tastatur)
      - scanf() liest normalerweise die auf stdin eingegebenen Werte.
      - Man kann die Standardeingabe stdin aber umleiten, etwa mit folgender
          Eingabe in der Kommandozeile:

            ./programmname < celsius.dat

      Damit kann man dieselbe while-Schleife benutzen, um aus der Datei
      "celsius.dat" mit Hilfe von scanf() die Celsius-Werte zu lesen.

- Analog zum Lesen geht das Schreiben in eine Datei folgendermassen:
      - stdout: Standardausgabe (Bildschirm)
      - printf("%lf", TFahrenheit)
      - Man kann die Standardausgabe stdout umleiten, sodass die berechneten
          Fahrenheit-Werte in eine Datei "fahrehiet.dat" geschrieben werden:

            ./programmname > fahrenheit.dat

Lösung:

CCode: main.h

double celsius2fahren(double TCelsius);

CCode:

#include <stdio.h>
#include "main.h"
double celsius2fahren(double TCelsius)
{
return (( TCelsius * 9 ) / 5 ) + 32;
}
int
main()
{
double tCel[10];
int i;
int iMax=9;
for(i=0;i<=iMax;i++)
{
if (!feof(stdin))
scanf("%lf", &tCel[i]);
else
{
iMax=i;
i=10;
}
}

for(i=0;i<=iMax;i++)
{
printf("%6.2f \n", celsius2fahren(tCel[i]));
}
return 0;

}

Der Aufruf "main.exe < celsius.dat > fahrenheit.dat" mit der Datei:

celsius.dat:

1
2
34
32
0
4
3
3
53
3

liefert die Datei:

fahrenheit.dat:

 33.80
 35.60
 93.20
 89.60
 32.00
 39.20
 37.40
 37.40
127.40
 37.40