next up previous contents
Nächste Seite: 8 Mindestens ein Durchlauf: Aufwärts: C-Programmierung Vorherige Seite: 6 Wiederholung: Die abweisende   Inhalt

Unterabschnitte

7 Wiederholung mit Zähler: Die Zählschleife

7.1 Beispiel

  1	/* division.c */
  2	
  3	#include <stdio.h>
  4	#include <stdlib.h>
  5	
  6	main()
  7	{
  8	   int ergebnis;
  9	   int lauf;
 10	   int nachkomma;
 11	   int nenner;
 12	   int zaehler;
 13	
 14	   printf("Eingabe Zähler..........:"); scanf("%li", &zaehler);
 15	   printf("Eingabe Nenner..........:"); scanf("%li", &nenner);
 16	   printf("Eingabe Nachkommastellen:"); scanf("%li", &nachkomma);
 17	   if(zaehler<0 || nenner<=0 || nachkomma<0)
 18	   {
 19	      printf("Falsche Eingabe! Abbruch.\n");
 20	      exit(1);
 21	   }
 22	
 23	   ergebnis = zaehler/nenner;
 24	
 25	   printf("Ergebnis................:%li", ergebnis);
 26	   if(nachkomma>0) 
 27	   {
 28	      printf(",");
 29	   }
 30	
 31	   zaehler = (zaehler % nenner) * 10;
 32	
 33	   lauf=0;
 34	   while(lauf<nachkomma)
 35	   {
 36	      ergebnis = zaehler / nenner;
 37	      printf("%ld",ergebnis);
 38	
 39	      zaehler = (zaehler % nenner) * 10;
 40	
 41	      ++lauf;
 42	   }
 43	
 44	   printf("\n");
 45	   exit(0);
 46	}
 47

7.2 Erklärung

7.3 Aufgabe

  1. Schreiben Sie ein Programm, das nach Eingabe einer reellen Zahl $x$ und einer natürlichen Zahl $n$ den Ausdruck $x^n$ berechnet und ausgibt! Welchen Datentyp muss $x$ haben und welchen Datentyp $n$?

7.4 Lösung

  1. $x^n$-Funktion:
      1	/* x_hoch_n.c */
      2	
      3	#include <stdio.h>
      4	#include <stdlib.h>
      5	
      6	main()
      7	{
      8	   double ergebnis;
      9	   int    lauf;
     10	   int    n;
     11	   double x;
     12	
     13	   printf("Eingabe x:"); scanf("%lf", &x);
     14	   printf("Eingabe n:"); scanf("%i", &n);
     15	
     16	   if(n<=0)
     17	   {
     18	      printf("Falsche Eingabe: Programmabbruch!\n");
     19	      exit(1);
     20	   }
     21	
     22	   ergebnis=1;
     23	   lauf=0;
     24	
     25	   while(lauf<n)
     26	   {
     27	      ergebnis = ergebnis * x;
     28	      ++lauf;
     29	   }
     30	
     31	   printf("x hoch n= %lf", ergebnis);
     32	   exit(0);
     33	}
    

7.5 Zählschleife mit for()

  1	/* fakult1.c */
  2	
  3	#include <stdio.h>
  4	#include <stdlib.h>
  5	
  6	main()
  7	{
  8	   long ergebnis;
  9	   long lauf;
 10	   long n;
 11	
 12	   printf("Eingabe n:"); scanf("%li", &n);
 13	
 14	   if(n<0)
 15	   {
 16	      printf("Falsche Eingabe: Programmabbruch!\n");
 17	      exit(1);
 18	   }
 19	
 20	   ergebnis=1;
 21	   lauf=1;
 22	
 23	   while(lauf<=n)
 24	   {
 25	      ergebnis = ergebnis * lauf;
 26	      ++lauf;
 27	   }
 28	
 29	   printf("(n!) = %ld\n", ergebnis);
 30	   exit(0);
 31	}
  1	/* fakult2.c */
  2	
  3	#include <stdio.h>
  4	#include <stdlib.h>
  5	
  6	main()
  7	{
  8	   long ergebnis;
  9	   long lauf;
 10	   long n;
 11	
 12	   printf("Eingabe n:"); scanf("%li", &n);
 13	
 14	   if(n<0)
 15	   {
 16	      printf("Falsche Eingabe: Programmabbruch!\n");
 17	      exit(1);
 18	   }
 19	
 20	   ergebnis=1;
 21	
 22	   for(lauf=1; lauf<=n; ++lauf)
 23	   {
 24	      ergebnis = ergebnis * lauf;
 25	   }
 26	
 27	   printf("(n!) = %ld\n", ergebnis);
 28	   exit(0);
 29	}

7.6 Achtung, Zählschleife!

7.7 Aufgaben

  1. Wertetabelle 1: Schreiben Sie ein Programm, das eine Wertetabelle für die Funktion $xf(x)=8x^2-4x+6$ ausgibt. Für $x$ sollen alle ganzen Zahlen von -5 bis +5 verwendet werden.
  2. Wertetabelle 2: Schreiben Sie ein Programm, das eine Wertetabelle für die Funktion $xf(x)=8x^2-4x+6$ ausgibt. Für $x$ sollen die Zahlen 0; 0,1; 0,2 bis 1,0 verwendet werden.
  3. Wertetabelle 3: Für einen Signalprozessor wird die Wertetabelle einer Sinus-Funktion benötigt. Schreiben Sie ein kurzes Programm, das 64 Werte zwischen 0 und 90 Grad (bzw. 0 und $\pi/2$ ausgibt! Welche Headerdatei muss dazu eingebunden werden? Achtung - beim Gnu-C-Compiler muss der Übersetzer angewiesen werden, die Mathe-Library libm einzubinden; der Aufruf lautet dann: gcc -lm werttab3.c

7.8 Lösungen

  1. Wertetabelle 1:
      1	/* werttab1.c */
      2	
      3	#include <stdio.h>
      4	#include <stdlib.h>
      5	
      6	int main()
      7	{
      8	   long   lauf; 
      9	   double x;
     10	   double y;
     11	
     12	   for(lauf= -5; lauf<=5; ++lauf)
     13	   {
     14	      x = (long)lauf;		/* ausdrueckliche Typumwandlung,  */
     15	                                /* aus Sicherheitsgruenden oft zu */
     16	                                /* empfehlen.                     */
     17	      y = 8.0*x*x - 4.0*x + 6.0;
     18	
     19	      printf("x=%lf\ty=%lf\n", x, y);
     20	   }
     21	
     22	   exit(0);
     23	}
    
  2. Wertetabelle 2:
      1	/* werttab2.c */
      2	
      3	#include <stdio.h>
      4	#include <stdlib.h>
      5	
      6	int main()
      7	{
      8	   long   lauf; 
      9	   double x;
     10	   double y;
     11	
     12	   for(lauf= 0; lauf<=10; ++lauf)
     13	   {
     14	      x = (long)lauf / 10.0; /* Wenn man hier 10 statt 10.0  */
     15	                             /* schreibt, wird eine ganz-    */
     16	                             /* zahlige Division ausgeführt! */
     17	
     18	      y = 8.0*x*x - 4.0*x + 6.0;
     19	
     20	      printf("x=%lf\ty=%lf\n", x, y);
     21	   }
     22	
     23	   exit(0);
     24	}
    
  3. Wertetabelle 3:
      1	/* werttab3.c */
      2	
      3	#include <stdio.h>
      4	#include <stdlib.h>
      5	#include <math.h>
      6	
      7	int main()
      8	{
      9	   long   lauf; 
     10	   double x;
     11	   double y;
     12	
     13	   for(lauf= 0; lauf<64; ++lauf)
     14	   {
     15	      x = (long)lauf;	/* x von 0 bis 63 */
     16	      x /= 63.0;        /* x von 0 bis 1  */
     17	      x *= 90.0;	/* x von 0 bis 90 */
     18	
     19	      y = sin(x);
     20	
     21	      printf("x=%lf\ty=%lf\n", x, y);
     22	   }
     23	   exit(0);
     24	}
    

next up previous contents
Nächste Seite: 8 Mindestens ein Durchlauf: Aufwärts: C-Programmierung Vorherige Seite: 6 Wiederholung: Die abweisende   Inhalt
Joerg Kurrek 2004-04-02