Browse Source

Merge branch 'dev'

main
Jason Peters 11 months ago
parent
commit
4c4002ad7f
  1. 77
      src/main/c/Jason/ASCII_art.c
  2. 10
      src/main/c/Jason/ASCII_art.h
  3. 89
      src/test/c/Jason/test_ASCII_art.c

77
src/main/c/Jason/ASCII_art.c

@ -5,13 +5,14 @@ int ASCII_Art(){
int weitermachen = 0; int weitermachen = 0;
do { do {
printWelcomeMessage();
Willkommensnachricht();
int auswahl; int auswahl;
scanf("%d", &auswahl); scanf("%d", &auswahl);
auswahlDerArt(auswahl); auswahlDerArt(auswahl);
printf("Vielen Dank, dass sie sich ASCII-Art angesehen haben\n"
printf("\nVielen Dank, dass sie sich ASCII-Art angesehen haben\n"
"Wollen Sie weitere ASCII-Art sehen?\n" "Wollen Sie weitere ASCII-Art sehen?\n"
"(1) Ja\n" "(1) Ja\n"
"(2) Nein\n" "(2) Nein\n"
@ -25,39 +26,39 @@ int ASCII_Art(){
void quadrat(){ void quadrat(){
frageNachGroesse(); frageNachGroesse();
int groesse;
scanf("%d", &groesse);
int arraySize = berechnungDerLaengeDesQuadratArrays(groesse);
int LaengeDerZeilen;
scanf("%d", &LaengeDerZeilen);
int arraySize = berechnungDerLaengeDesQuadratArrays(LaengeDerZeilen);
char Quadrat[arraySize]; char Quadrat[arraySize];
befuellenDesArraysMitX(Quadrat, arraySize); befuellenDesArraysMitX(Quadrat, arraySize);
befuelleArrayMitLeerzeichen(Quadrat, arraySize);
befuelleArrayMitZeilenumbruechen(Quadrat,groesse);
befuelleDasArrayMitLeerzeichen(Quadrat, arraySize);
befuelleDasArrayMitZeilenumbruechen(Quadrat,LaengeDerZeilen);
printf("\n%s", Quadrat); printf("\n%s", Quadrat);
} }
void weihnachtsbaum(){
void Weihnachtsbaum(){
abfrageDerHoehe(); abfrageDerHoehe();
int hoehe;
int hoeheVomBaumInklusiveStamm;
do{ do{
// Diese Schleifen erfragen user input solange bis korrekte Werte eingegeben werden // Diese Schleifen erfragen user input solange bis korrekte Werte eingegeben werden
scanf("%d", &hoehe);
if (hoehe < 3){
scanf("%d", &hoeheVomBaumInklusiveStamm);
if (hoeheVomBaumInklusiveStamm < 3){
printf("\nDer Weihnachtsbaum muss mindestens 3 Zeilen groß sein!\n"); printf("\nDer Weihnachtsbaum muss mindestens 3 Zeilen groß sein!\n");
printf("Bitte geben Sie erneut einen Wert ein der mindestens 3 lautet:"); printf("Bitte geben Sie erneut einen Wert ein der mindestens 3 lautet:");
} }
}while(hoehe < 3);
}while(hoeheVomBaumInklusiveStamm < 3);
int maxBreiteDesWeihnachtsbaums = max_breite(hoehe);
int maxBreiteDesWeihnachtsbaums = max_breiteDesBaums(hoeheVomBaumInklusiveStamm);
int mitte_baum = mitteDesBaums(maxBreiteDesWeihnachtsbaums); int mitte_baum = mitteDesBaums(maxBreiteDesWeihnachtsbaums);
int groesseDesArrays = (hoehe -1) * maxBreiteDesWeihnachtsbaums;
int groesseDesArrays = (hoeheVomBaumInklusiveStamm -1) * maxBreiteDesWeihnachtsbaums;
char weihnachtsbaum[groesseDesArrays]; char weihnachtsbaum[groesseDesArrays];
befuellenDesWeihnachtsbaumsMitLeerzeichen(weihnachtsbaum, groesseDesArrays); befuellenDesWeihnachtsbaumsMitLeerzeichen(weihnachtsbaum, groesseDesArrays);
befuellenDesWeihnachtsbaumsMitPlus(weihnachtsbaum, maxBreiteDesWeihnachtsbaums, (hoehe-1));
befuellenDesWeihnachtsbaumsMitZeilenumbruechen(weihnachtsbaum, hoehe, maxBreiteDesWeihnachtsbaums);
befuellenDesWeihnachtsbaumsMitPlus(weihnachtsbaum, maxBreiteDesWeihnachtsbaums, (hoeheVomBaumInklusiveStamm-1));
befuellenDesWeihnachtsbaumsMitZeilenumbruechen(weihnachtsbaum, hoeheVomBaumInklusiveStamm, maxBreiteDesWeihnachtsbaums);
char stamm[maxBreiteDesWeihnachtsbaums]; char stamm[maxBreiteDesWeihnachtsbaums];
befuellenDesStammarraysMitLeerzeichen(stamm, maxBreiteDesWeihnachtsbaums); befuellenDesStammarraysMitLeerzeichen(stamm, maxBreiteDesWeihnachtsbaums);
stammAnRichtigerStelleEinsetzen(stamm, maxBreiteDesWeihnachtsbaums); stammAnRichtigerStelleEinsetzen(stamm, maxBreiteDesWeihnachtsbaums);
@ -70,37 +71,41 @@ void weihnachtsbaum(){
void dreieck(){ void dreieck(){
dreieckWillkommensnachricht(); dreieckWillkommensnachricht();
int hoehe;
int hoeheDreieck;
// Eingabe Auf Definitions
do{ do{
scanf("%d", &hoehe);
if(hoehe < 2){
scanf("%d", &hoeheDreieck);
if(hoeheDreieck < 2){
printf("Es wurde ein Wert eingegeben, der kleiner ist als 2. Bitte geben Sie erneut eine Zahl ein!\n" printf("Es wurde ein Wert eingegeben, der kleiner ist als 2. Bitte geben Sie erneut eine Zahl ein!\n"
"Eingbe:"); "Eingbe:");
} }
} while(hoehe < 2);
} while(hoeheDreieck < 2);
int arraygroesse = berechnungDerDreieckArraygroesse(hoehe);
int arraygroesse = berechnungDerDreieckArraygroesse(hoeheDreieck);
char dreieck[arraygroesse]; char dreieck[arraygroesse];
befuellenDesDreiecksMitX(dreieck, arraygroesse); befuellenDesDreiecksMitX(dreieck, arraygroesse);
befuellenDesDreiecksMitZeilenumbruechen(dreieck, hoehe, arraygroesse);
befuellenDesDreiecksMitZeilenumbruechen(dreieck, hoeheDreieck, arraygroesse);
printf("%s", dreieck); printf("%s", dreieck);
} }
void rakete(){ void rakete(){
raketeBegruessung(); raketeBegruessung();
int hoehe;
int hoeheRakete;
do{ do{
scanf("%d", &hoehe);
if(hoehe < 3){
scanf("%d", &hoeheRakete);
if(hoeheRakete < 3){
printf("Es wurde ein Wert eingegeben, der kleiner ist als 3. Bitte geben Sie erneut eine Zahl ein!\n" printf("Es wurde ein Wert eingegeben, der kleiner ist als 3. Bitte geben Sie erneut eine Zahl ein!\n"
"Eingbe:"); "Eingbe:");
} }
} while(hoehe < 3);
} while(hoeheRakete < 3);
printf("\nComing soon ;)\n");
} }
int printWelcomeMessage(){
int Willkommensnachricht(){
printf("Willkommen bei ASCII-Art!\n"); printf("Willkommen bei ASCII-Art!\n");
printf("Wählen Sie aus welche ASCII-Art Sie sehen wollen!\n"); printf("Wählen Sie aus welche ASCII-Art Sie sehen wollen!\n");
printf("(1) Quadrat\n"); printf("(1) Quadrat\n");
@ -117,7 +122,7 @@ void auswahlDerArt(int pick){
quadrat(); quadrat();
break; break;
case (2): case (2):
weihnachtsbaum();
Weihnachtsbaum();
break; break;
case (3): case (3):
@ -156,7 +161,7 @@ void befuellenDesArraysMitX(char quadraT[], int laenge){
} }
void befuelleArrayMitLeerzeichen(char quadraT[], int laenge){
void befuelleDasArrayMitLeerzeichen(char quadraT[], int laenge){
for (int i = 0; i < laenge; i++){ for (int i = 0; i < laenge; i++){
@ -164,10 +169,12 @@ void befuelleArrayMitLeerzeichen(char quadraT[], int laenge){
quadraT[i] = ' '; quadraT[i] = ' ';
} }
} }
// Das \0 muss Extra platziert werden um einen korrekten Ablauf sicherzustellen
quadraT[laenge-1] = '\0'; quadraT[laenge-1] = '\0';
} }
void befuelleArrayMitZeilenumbruechen(char quadraT[], int laenge){
void befuelleDasArrayMitZeilenumbruechen(char quadraT[], int laenge){
int zeile = 2 * laenge; int zeile = 2 * laenge;
int laengeGesamt = zeile * laenge; int laengeGesamt = zeile * laenge;
@ -186,7 +193,7 @@ int abfrageDerHoehe(){
return 0; return 0;
} }
int max_breite(int zeilen){
int max_breiteDesBaums(int zeilen){
int maximaleBreiteEinerZeile; int maximaleBreiteEinerZeile;
maximaleBreiteEinerZeile = zeilen + (zeilen - 2); maximaleBreiteEinerZeile = zeilen + (zeilen - 2);
@ -211,18 +218,18 @@ void befuellenDesWeihnachtsbaumsMitPlus(char arr[], int maxBreite, int zeilen){
int arrayGroesse = maxBreite * zeilen; int arrayGroesse = maxBreite * zeilen;
int mitteDesBaums = maxBreite / 2; int mitteDesBaums = maxBreite / 2;
int mengeX = 1;
int mengeDerXInDerZeile = 1;
for(int i = zeilen; i > 0; i--){ for(int i = zeilen; i > 0; i--){
int position = mitteDesBaums -1; int position = mitteDesBaums -1;
while(position < mitteDesBaums-1 + mengeX){
while(position < mitteDesBaums-1 + mengeDerXInDerZeile){
arr[position++] = '+'; arr[position++] = '+';
} }
mitteDesBaums += (maxBreite -1); mitteDesBaums += (maxBreite -1);
mengeX += 2;
mengeDerXInDerZeile += 2;
} }
arr[arrayGroesse] = '\0'; arr[arrayGroesse] = '\0';
} }
@ -305,7 +312,7 @@ void befuellenDesDreiecksMitZeilenumbruechen(char arr[], int gesamtzeilen, int a
stelleFuerZeilenumbruch += (zeile+2); stelleFuerZeilenumbruch += (zeile+2);
} }
arr[arraygroesse] = '\0';
arr[arraygroesse -1] = '\0';
} }
void raketeBegruessung(){ void raketeBegruessung(){

10
src/main/c/Jason/ASCII_art.h

@ -2,17 +2,17 @@
#define ASCII_ART_H #define ASCII_ART_H
int ASCII_Art(); int ASCII_Art();
int printWelcomeMessage();
int Willkommensnachricht();
void auswahlDerArt(int); void auswahlDerArt(int);
void quadrat(); void quadrat();
int frageNachGroesse(); int frageNachGroesse();
int berechnungDerLaengeDesQuadratArrays(int); int berechnungDerLaengeDesQuadratArrays(int);
void befuellenDesArraysMitX(char[], int); void befuellenDesArraysMitX(char[], int);
void befuelleArrayMitLeerzeichen(char[],int);
void befuelleArrayMitZeilenumbruechen(char[],int);
void weihnachtsbaum();
void befuelleDasArrayMitLeerzeichen(char[],int);
void befuelleDasArrayMitZeilenumbruechen(char[],int);
void Weihnachtsbaum();
int abfrageDerHoehe(); int abfrageDerHoehe();
int max_breite(int);
int max_breiteDesBaums(int);
int mitteDesBaums(int); int mitteDesBaums(int);
void befuellenDesWeihnachtsbaumsMitLeerzeichen(char[],int); void befuellenDesWeihnachtsbaumsMitLeerzeichen(char[],int);
void befuellenDesWeihnachtsbaumsMitPlus(char[], int, int); void befuellenDesWeihnachtsbaumsMitPlus(char[], int, int);

89
src/test/c/Jason/test_ASCII_art.c

@ -9,12 +9,12 @@ void tearDown(void){
} }
void test_doesWelcomeMessageWork() {
void test_funktioniertDieWillkommensnachricht() {
//arrange //arrange
int expectedResult = 0; int expectedResult = 0;
//act //act
int actualResult = printWelcomeMessage();
int actualResult = Willkommensnachricht();
//assert //assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult); TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
@ -46,6 +46,8 @@ void test_stringAbgleich(void){
// arrange // arrange
char expectedMessage[] = "XXXXXXX"; char expectedMessage[] = "XXXXXXX";
// Dieser Test überprüft, ob das Feld für die Baumkrone korrekt mit X befüllt wird
// act // act
char message[9]; char message[9];
befuellenDesArraysMitX(message, 8); befuellenDesArraysMitX(message, 8);
@ -59,10 +61,12 @@ void test_stringAbgleichMitLeerzeichen(void){
// arrange // arrange
char expectedMessage[] = "X X X X X X X X X"; char expectedMessage[] = "X X X X X X X X X";
// Hier wird überprüft ob die Baumkrone wie erwartet mit X und Leerzeichen befüllt wird
// act // act
char message[19]; char message[19];
befuellenDesArraysMitX(message, 18); befuellenDesArraysMitX(message, 18);
befuelleArrayMitLeerzeichen(message, 18);
befuelleDasArrayMitLeerzeichen(message, 18);
// assert // assert
@ -76,8 +80,8 @@ void test_stringAbgleichMitLeerzeichenUndZeilenumbruch(void){
// act // act
char message[19]; char message[19];
befuellenDesArraysMitX(message, 18); befuellenDesArraysMitX(message, 18);
befuelleArrayMitLeerzeichen(message, 18);
befuelleArrayMitZeilenumbruechen(message, 3);
befuelleDasArrayMitLeerzeichen(message, 18);
befuelleDasArrayMitZeilenumbruechen(message, 3);
// assert // assert
@ -95,13 +99,84 @@ void test_erscheintDieAbfrageFuerWeihnachtsbaum() {
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult); TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
} }
void test_korrekteBerechnungAufMaximaleBreiteWeihnachtsbaum() {
void test_korrekteBerechnungAufMaximaleBreiteDesWeihnachtsbaums() {
//arrange //arrange
int expectedResult = 10; int expectedResult = 10;
//act //act
int actualResult = max_breite(6);
int actualResult = max_breiteDesBaums(6);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_korrekteBerechnungAufMaximaleGroesseDesDreiecks() {
//arrange
int expectedResult = 65;
//act
int actualResult = berechnungDerDreieckArraygroesse(10);
//assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_korrekteBerechnungAufMaximaleGroesseDesDreiecksBeiGrossenZahlen() {
//arrange
int expectedResult = 50015000;
// Hier sollte auf overflow überprüft werden bei großen Zahlen
//act
int actualResult = berechnungDerDreieckArraygroesse(10000);
//assert //assert
TEST_ASSERT_EQUAL_INT(expectedResult, actualResult); TEST_ASSERT_EQUAL_INT(expectedResult, actualResult);
}
void test_wirdKleinesDreieckKorrektBefuellt(void){
// arrange
char expectedMessage[] = "X\nXX";
// act
char message[6];
befuellenDesDreiecksMitX(message, 5);
befuellenDesDreiecksMitZeilenumbruechen(message, 2, 5);
// assert
TEST_ASSERT_EQUAL_STRING(expectedMessage, message);
}
void test_wirdKleinesBaumkroneKorrektBefuelld(void){
// arrange
char expectedMessage[] = " + \n+++";
// act
char message[9];
befuellenDesWeihnachtsbaumsMitLeerzeichen(message, 8);
befuellenDesWeihnachtsbaumsMitPlus(message, 4, (3-1));
befuellenDesWeihnachtsbaumsMitZeilenumbruechen(message, 3, 4);
// assert
TEST_ASSERT_EQUAL_STRING(expectedMessage, message);
}
void test_wirdBaumstammAnRichtigerStelleEingesetzt(void){
// arrange
char expectedMessage[] = " + ";
// act
char message[7];
befuellenDesStammarraysMitLeerzeichen(message, 6);
stammAnRichtigerStelleEinsetzen(message, 6);
// assert
TEST_ASSERT_EQUAL_STRING(expectedMessage, message);
} }
Loading…
Cancel
Save