Devo svolgere questi determinati metodi ma non mi funzionano, mi aiutate? Sono proprio le basi di C.. Quelli che non vanno sono contrassegnati da /*NO*/
codice:
#include <stdio.h>
#include <stdlib.h>
#define N 25
typedef enum{FALSE, TRUE} bool;
int palindroma(char s[]);
int confronta(char s1[], char s2[]);
int occorre(char s1[], char c);
int prefisso(char s1[], char s2[]);
int sottostringa(char s1[], char s2[]);
menu() {
//system("clear");
printf("0 - Uscita");
printf("\n1 - Palindroma");
printf("\n2 - Confronta"); /*NO*/
printf("\n3 - Occorre"); /*NO*/
printf("\n4 - Prefisso"); /*NO*/
//printf("\n5 - Sottostringa");
//printf("\n6 - Concatena");
printf("\nQuale metodo vuoi eseguire? ");
int risp;
scanf("%d", &risp);
getchar();
return risp;
}
main() {
char s1[N];
char s2[N];
char c;
int occ;
while(1) {
int scelta = menu();
switch(scelta) {
case 0:
exit(0);
case 1:
printf("\nInserisci una stringa: ");
scanf("%s", s1);
if (palindroma(s1)) {
printf("La parola è palindroman\n\n");
}
else {
printf("La parola non è palindroma\n\n");
}
break;
case 2:
printf("\nInserisci una stringa: ");
scanf("%s", s1);
printf("Inserisci una seconda stringa: ");
scanf("%s", s2);
if (confronta(s1, s2)) {
printf("s1 ed s2 sono uguali\n\n");
}
else {
printf("s1 ed s2 non sono uguali\n\n");
}
break;
case 3:
printf("\nInserisci una stringa: ");
scanf("%s", s1);
printf("Inserisci un carattere da cercare: ");
c = getchar();
occ = occorre(s1, c);
printf("Il carattere %c compare %d volte in %s\n\n", c, occ, s1);
break;
case 4:
printf("\nInserisci una stringa: ");
scanf("%s", s1);
printf("Inserisci una seconda stringa: ");
scanf("%s", s2);
if (prefisso(s1, s2)) {
printf("s2 e' la parte inziale di s1\n\n");
}
else {
printf("s2 non e' la parte inziale di s1\n\n");
}
break;
/*case 5:
sottostringa();
break;*/
/*case 6:
concatena();
break;*/
default:
exit(0);
}
}
}
int palindroma(char s[]) {
int d;
for(d = 0; s[d] != '\0'; d++);
int uguali = 1;
int i = 0;
int j = d - 1;
while(i < j && uguali) {
if (s[i] == s[j]) {
i = i + 1;
j = j - 1;
}
else
uguali = 0;
}
return uguali;
}
int confronta(char s1[], char s2[]) {
int i;
int j;
int l1;
int l2;
int uguali = 1;
for(i = 0; s1[i] != '\0'; ++i);
l1 = i;
i = 0;
for(j = 0; s2[j] != '\0'; ++j);
l1 = j;
j = 0;
if(l1 != l2)
return 0;
while(i < l1) {
if(s1[i] != s2[i]) {
uguali = 0;
}
++i;
}
return uguali;
}
int occorre(char s1[], char c) {
int i = 0;
int count = 0;
for(i = 0; i < N; ++i) {
if(s1[i] == c) {
count++;
}
}
return count;
}
int prefisso(char s1[], char s2[]) {
int i;
int j;
int l1;
int l2;
int pref = 1;
for(i = 0; s1[i] != '\0'; ++i);
l1 = i;
i = 0;
for(j = 0; s2[j] != '\0'; ++j);
l1 = j;
j = 0;
if(l2 > l1)
return 0;
while(s2[i] != '\0') {
if(s1[i] == s2[i])
++i;
else
pref = 0;
}
}
/*int sottostringa(char s1[], char s2[]) {
int i;
int j;
int l1;
int l2;
int sott = 1;
for(i = 0; s1[i] != '\0'; ++i);
l1 = i;
i = 0;
for(j = 0; s2[j] != '\0'; ++j);
l1 = j;
j = 0;
if(l2 > l1)
return 0;
while(s1[i] != '\0' && sott) {
if(s1[i] == s2[j])
}
}*/
Come faccio a salvare in una variabile un singolo carattere? Per esempio voglio chiedere all'utente un carattere e voglio salvarlo nella variabile "c". Come si fa? Ho capito che bisogna usare la getchar() ma come? Ho cercato un pò su internet ma non ho compreso molto sul suo funzionamento..
Mi scrivete un esempio veramente banale, giusto per capire?
Grazie