Arrays, Schleifen und Funktionen - Beispiel

Angabe / Beschreibung

Der Benutzer soll eine beliebige ganzzahlige Zahl eingeben und das Programm prüft, ob diese Zahl eine Primzahl ist. Wenn ja, wird die Primzahl in einem Feld der Größe 10 gespeichert.

Lösung

/* Beispiel: Arrays und Schleifen  
   Filename: main.cpp
   Author: Lahmer
   Title: Primzahlenüberprüfung 
   Description: Der Benutzer soll eine beliebige ganzzahlige Zahl eingeben und das Programm prüft, ob diese Zahl eine Primzahl ist. Wenn ja, wird die Primzahl in einem Feld der Größe 10 gespeichert.
   Last Change:16.01.2018
*/
//Header-Dateien
#include <iostream>
#include <conio.h>
 
//Namespace
using namespace std;
 
//Funktionsprototyp
bool checkPrimzahl(int z);	//Rückgabewert bool, Übergabe per Wert -> Variable z
void ausgabe(int array[10],int anzahl);	//Rückgabewert void (nichts), Übergabe per Zeiger (array, Arrays werden immer per Zeiger übergeben) und Übergabe per Wert (anzahl)
 
 
//Hauptprogramm
int main(int argc, char** argv) {
 
	//Lokale Variablendeklaration
	//Integer Array
	int feld[10];
	bool erg;
	int zahl;
	char nochmal=' ';
	int k=0;
 
	//Beginn der Do-While Schleife
	do {
		cout << "Geben Sie bitte eine ganzzahlige Zahl ein: ";
		cin >> zahl; //Eingabe der Zahl
 
		//Aufruf der Funktion checkPrimzahl
		erg=checkPrimzahl(zahl);
		cout << endl << endl;
 
		//Bedinung, Prüfen ob erg == true ist, wenn ja => Zahl ist Primzahl, wenn nein => Zahl ist keine Primzahl
		if(erg==true)
		{
			cout << "Die eingegebene Zahl ist EINE Primzahl!" << endl;
			feld[k]=zahl; 	//Zahl wird in das Array namens feld an die Stelle k gespeichert
			k++;	//k wird um 1 erhöht
		}
		else
		{
			cout << "Die eingegebene Zahl ist KEINE Primzahl" << endl;
		}
		cout << "Willst du noch eine ganzzahlige Zahl eingeben? (j/n)" << endl;
		//Einlesen der Entscheidung, ob der Benutzer nochmals eine Zahl eingeben will
		cin >> nochmal;
		cout << endl << "##################################################" << endl;
 
	} while (nochmal=='j');  //Bedingung der do-while Schleife => Solange der Benutzer j eingibt, wird das Programm wiederholt
 
	//Alle Primzahlen gesammelt ausgeben
	ausgabe(feld, k);	//Übergabe der Adresse von feld und der Anzahl der Primzahlen (k)
 
	return 0;
}
 
//Funktionsdefinition
bool checkPrimzahl(int z)
{
	//Lokale Variablendeklaration bool = kann nur true oder false beinhalten
	bool primZ=true;
 
	//Prüfe alle Teiler von 2 bis z-1
	for(int i=2; i<z; i++)
	{
		//Testen ob z/i ohne Rest teilbar
		if(z%i==0)
		{
			primZ=false;	
		}
	}
 
	//Rückgabe des booleans ob die Zahl ein Primzahl ist (true oder false)
	return primZ;
}
 
 
void ausgabe(int array[10], int anzahl) 
{ 
	//Ausgabe aller Primzahlen 
	for(int i=0; i<anzahl; i++)
	{
		cout << array[i] << endl;
	}
}

Ausgabe

Geben Sie bitte eine ganzzahlige Zahl ein: 16


Die eingegebene Zahl ist KEINE Primzahl
Willst du noch eine ganzzahlige Zahl eingeben? (j/n)
j

##################################################
Geben Sie bitte eine ganzzahlige Zahl ein: 13


Die eingegebene Zahl ist EINE Primzahl!
Willst du noch eine ganzzahlige Zahl eingeben? (j/n)
j

##################################################
Geben Sie bitte eine ganzzahlige Zahl ein: 317


Die eingegebene Zahl ist EINE Primzahl!
Willst du noch eine ganzzahlige Zahl eingeben? (j/n)
n

##################################################
13
317

--------------------------------
Process exited after 19.88 seconds with return value 0
Drücken Sie eine beliebige Taste . . .