Răspuns :
Răspuns:
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
// 0 -> este consoana
// 1 -> este vocala
// -1 -> nu este caracter alfabetic
static int esteVocala(char caracter) {
// vector cu vocale
char vectorVocale[] = {'a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U'};
if (isalpha(caracter) == 0) return -1; // dacă caracterul nu este alfabetic
// parcurgem vectorul, dacă caracterul este vocală returnăm 1
for (size_t i = 0; i < sizeof vectorVocale; ++i)
if (vectorVocale[i] == caracter) return 1;
// dacă caracterul nu este vocală atunci el este consoană și returnăm 0
return 0;
}
int main() {
int valReturnata, contorVocale = 0, contorConsoane = 0;
char caracterCurent;
FILE* pFisier;
// Dacă fopen(...) returnează NULL înseamnă că fișierul n-a fost deschis cu succes deci ieșim din program
if ((pFisier = fopen("date.in", "r")) == NULL) {
perror("Eroare");
exit(EXIT_FAILURE);
}
// dacă fișierul s-a deschis cu succes
do {
// preluăm caracterul curent din fișier
caracterCurent = (char)fgetc(pFisier);
// valReturnata va fi 0 dacă e consoană sau 1 dacă e vocală
valReturnata = esteVocala(caracterCurent);
if (valReturnata == 0)
++contorConsoane; // dacă e consoană incrementam contorul pentru consoane
if (valReturnata == 1)
++contorVocale; // dacă este vocală incrementăm contorul pentru consoane
// cât timp caracterulCurent este diferit de * sau nu am ajuns la finalul fișierului
} while (caracterCurent != '*' && !feof(pFisier));
// Dacă contoarele au rămas la 0 înseamnă că nu există vocale și consoane
if (contorVocale == 0 && contorConsoane == 0) {
printf("Nu exista vocale si consoane in fisier!\n");
exit(EXIT_SUCCESS);
}
// Dacă avem număr exact de consoane și vocale
contorVocale == contorConsoane
? printf("Numar egal de vocale si consoane!\n")
// Altfel dacă sunt mai multe vocale afișăm DA altfel NU
: (contorVocale > contorConsoane ? printf("DA\n") : printf("NU\n"));
// Dacă fișierul nu s-a închis cu succes returnează EOF și ieșim din program
if ((valReturnata = fclose(pFisier)) == EOF) exit(EXIT_FAILURE);
// altfel programul s-a încheiat cu succes
return 0;
}
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Ne vedem curând și nu uitați să ne adăugați la marcaje!