Sa se creeze o lista cu elemente de tip char. Se cere:
a) afisarea listei citite de la tastatură pe ecran ;
b) afișarea numărului de caractere ‘a’.
Programul trebuie sa fie in limbajul fe programare C.
Răspunsuri la întrebare
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct Nod {
char data;
struct Nod* urm;
};
typedef struct Nod Nod;
int main() {
char cuvant_citit[25];
scanf("%s", cuvant_citit);
//=============================
//Creare lista inlantuita din cuvant citit
//=============================
//Declara primul nod, initializeaza cu 0
Nod* cap = 0;
//Declara nodul anterior, initializeaza cu 0
Nod* anterior = 0;
//Pentru fiecare litera din cuvant
for (int i = 0; i < strlen(cuvant_citit); i++) {
//Creaza un nod nou
Nod* nou = malloc(sizeof(Nod));
//Nodul nou primeste litera curenta din cuvant
nou->data = cuvant_citit[i];
nou->urm = 0;
//Daca capul e 0 atunci nodul nou e cap
if (anterior == 0) cap = nou;
//Daca nu, atunci leaga nodul anterior de nodul nou
else anterior->urm = nou;
//In tura viitoare nodul nou devine nod anterior
anterior = nou;
}
//=============================
//Afiseaza cuvantul din lista
//=============================
//Initializeaza nod curent cu capul listei
Nod* curent = cap;
//Cat timp curent exista
while (curent!=0) {
//Afiseaza litera curenta
printf("%c", curent->data);
//Treci la nod urmator
curent = curent->urm;
}
//=============================
//Numarare caractere 'a'
//=============================
//Initializeaza nod curent cu capul listei
curent = cap;
//Initializare si declarare contorA cu 0
int contorA = 0;
//Cat timp curent exista
while (curent != 0) {
//Daca litera curenta este a atunci incrementeaza contor
if (curent->data == 'a') ++contorA;
//Treci la nod urmator
curent = curent->urm;
}
//Afisare rezultat
printf("\nIn textul citit exista %d caractere a", contorA);
}