next up previous contents
Nächste Seite: 7 Wiederholung mit Zähler: Aufwärts: C-Programmierung Vorherige Seite: 5 Entscheidungsprogramme I   Inhalt

Unterabschnitte

6 Wiederholung: Die abweisende Schleife

6.1 Beispiel

  1	/* mittelwerte.c */
  2	
  3	#include <stdio.h>
  4	#include <stdlib.h>
  5	
  6	main()
  7	{
  8	   int    anzahl;
  9	   double einzelwert;
 10	   double summe;   
 11	
 12	   summe=0.0;
 13	   anzahl=0;
 14	
 15	   printf("Eingabe:");
 16	   scanf("%lf", &einzelwert);
 17	
 18	   while(einzelwert>0)
 19	   {
 20	      summe += einzelwert;
 21	      ++anzahl;
 22	
 23	      printf("Eingabe:");
 24	      scanf("%lf", &einzelwert);                              
 25	   }
 26	
 27	   if(anzahl==0)   
 28	   {
 29	      printf("leere Stichprobe!\n");
 30	   }
 31	   else
 32	   {
 33	      mittelwert=summe/anzahl;
 34	      printf("Anzahl der Messungen dieser Stichprobe: %d\n", anzahl);
 35	      printf("Mittelwert............................: %lf\n",summe );
 36	   }
 37	
 38	   exit(0);
 39	}

6.2 Erklärung

\includegraphics{kap_while/struktogramm_schleife_abw.eps}

6.3 Aufgaben

  1. Der größte gemeinsame Teiler zweier Zahlen wird wie folgt berechnet: Sind die Zahlen a und b gleich, ist a bereits die Lösung. Solange sie nicht gleich sind, kann man einen Schritt weiter kommen, indem man die größere der beiden Zahlen durch die Differenz $\vert a-b\vert$ der beiden ersetzt. Erstellen Sie zu dieser Aufgabe Struktogramm, PAP und Jackson-Diagramm; erstellen Sie anschließend das entsprechende C-Programm ggt.c. Hier die Beispielausgabe des Programms:
    a=35
    b=56
    a=35    b=21
    a=14    b=21
    a=14    b=7
    a=7     b=7
    GGT:7
    
  2. Um eine Zahl (eingegeben z.B. zur Basis 10) in einem beliebigen Zahlensystem darstellen zu können, ist eine Folge von Divisionen notwendig. Mit jeder Division wird eine weitere Ziffer ermittelt. Die Folge bricht ab, wenn der Rest null ist Schreiben Sie ein Programm, das diesen Weg geht!

6.4 Lösungen

  1. Größter gemeinsamer Teiler:
      1	/* ggt.c */
      2	
      3	#include <stdio.h>
      4	#include <stdlib.h>
      5	
      6	main()
      7	{
      8	   long a, b;
      9	
     10	   printf("a="); scanf("%li", &a);
     11	   printf("b="); scanf("%li", &b);
     12	
     13	   while(a!=b)
     14	   {
     15	      if(a>b)
     16	      {
     17	         a=a-b;
     18	      }
     19	      else
     20	      {
     21	         b=b-a;
     22	      }
     23	      printf("a=%li\tb=%li\n",a,b);
     24	   }
     25	
     26	   printf("GGT:%li\n",a);   
     27	   exit(0);
     28	}
    
  2. Zahlenumwandlung:
      1	/* zahlenwandlung.c */
      2	
      3	#include <stdio.h>
      4	#include <stdlib.h>
      5	
      6	main()
      7	{
      8	   long zahl;
      9	   long basis;
     10	
     11	   printf("Umzuwandelnde Zahl (pos.)....:");
     12	   scanf("%li", &zahl);
     13	   if(zahl<0)
     14	   {
     15	      printf("Falsche Eingabe: Programmabbruch!\n");
     16	      exit(1);
     17	   }
     18	
     19	   printf("Eingabe der Basis des Zahlensystems (2 bis 10):");
     20	   scanf("%ld", &basis);
     21	   if((basis<2)||(basis>16))
     22	   {
     23	      printf("Falsche Eingabe: Programmabbruch!\n");
     24	      exit(2);
     25	   }
     26	
     27	   printf("Umgewandelte Zahl............:              ");
     28	
     29	   while(zahl > 0)
     30	   {
     31	      long rest;
     32	
     33	      rest=zahl%basis;
     34	      printf("\b\b%lx",rest);
     35	      zahl=zahl/basis;
     36	   }
     37	
     38	   printf("\n");
     39	   exit(0);
     40	}
    


next up previous contents
Nächste Seite: 7 Wiederholung mit Zähler: Aufwärts: C-Programmierung Vorherige Seite: 5 Entscheidungsprogramme I   Inhalt
Joerg Kurrek 2004-04-02