Informatică, întrebare adresată de singei, 8 ani în urmă

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.


andrei750238: Vrei lista (simplu inlantuita, cu pointer) sau vector ?
singei: Cu listă

Răspunsuri la întrebare

Răspuns de andrei750238
3

#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);

}

Anexe:

singei: Mulțumesc :)
Alte întrebări interesante