binder0101
Grünschnabel
Hallo, Ich hab grad ein Programm geschrieben dies eine Permutation und keine Permutation unterscheidet. Das Programm funktioniert supper jedoch muss ich nur mehr überprüfen ob die Zeichenkette groß geschrieben wurde, ich hab da einen Ansatz mit der Funktion "isupper" aus der Bibliothek <ctype.h> aber kann es nicht wirklich umsetzen könnt ihr mir vielleicht ein paar Tipps geben?
Beispiel:
a: ASDFGHJKLLJGDADGJGAL
b: AAASDDDFGGGGHJJJKLLL
b ist eine Permutation von a
Code:
Beispiel:
a: ASDFGHJKLLJGDADGJGAL
b: AAASDDDFGGGGHJJJKLLL
b ist eine Permutation von a
Code:
Code:
//Includes
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
//Funktionen
void stringsort(char per1[], int laenge);
void stringsort2(char per2[], int laenge2);
//Hauptprogramm
int main(void){
//Variablendeklaration
int size1 = 0,size2 = 0;
long zahl = 0, zahl2 = 0;
char *eptr = NULL,nochmal='A';
char per1[61] = "";
char per2[61] = "";
int i = 0,j=0;
do{
do{
printf("a: ");
fgets(per1, sizeof(per1), stdin);
zahl = strtol(per1, &eptr, 10);
size1 = strlen(per1);
printf("b: ");
fgets(per2, sizeof(per2), stdin);
zahl2 = strtol(per2, &eptr, 10);
size2 = strlen(per2);
stringsort(per1, size1); //Sortieren des ersten Strings.
stringsort(per2, size2); //Sortieren des zweiten Strings.
} while (size1 != size2);
if (strcmp(per1, per2) == 0){ //Vergleich der beiden Zeichenketten
printf("Ja, ist eine Permutation!\n");
}
else{
printf("Nein, ist keine Permutation!\n");
}
printf("Wollen Sie das Programm erneut starten? (J/N)\n");
nochmal = getch();
} while (nochmal == 'j' || nochmal == 'J');
return EXIT_SUCCESS;
}
void stringsort(char per1[], int laenge){
int temp = 0, i = 0, j = 0; // Die Ablagerungsvariable "temp" (siehe weiter unten)
laenge = strlen(per1);
for (i = 0; i < laenge; i++){ // Lässt jedes Zeichen einmal die folgende Anweisung durchführen...
for (j = 0; j < laenge-1-i; j++){ // Jedes Zeichen wird mit jedem anderen Zeichen im String verglichen
if (per1[j] > per1[j + 1]){
temp = per1[j]; // Werte...
per1[j] = per1[j + 1]; // ...werden...
per1[j + 1] = temp; // ...getauscht.
}
}
}
}
void stringsort2(char per2[], int laenge2){
int temp = 0, i = 0, j = 0; // Die Ablagerungsvariable "temp" (siehe weiter unten)
laenge2 = strlen(per2);
for (i = 0; i < laenge2; i++){ // Lässt jedes Zeichen einmal die folgende Anweisung durchführen...
for (j = 0; j < laenge2 - 1 - i; j++){ // Jedes Zeichen wird mit jedem anderen Zeichen im String verglichen
if (per2[j] > per2[j + 1]){
temp = per2[j]; // Werte...
per2[j] = per2[j + 1]; // ...werden...
per2[j + 1] = temp; // ...getauscht.
}
}
}
}