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 ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!