Sunteți pe pagina 1din 5

Universitatea Politehnic din Bucureti, Facultatea de Electronic, Telecomunicaii

i Tehnologia Informaiei

Documentatie Program 1

Cerinta: Se citeste de la intrare un sir infinit de numere: a1, a2, a3, a4, a5, a6, , ak,

si produce la iesire sirul a3, a2, a1, a6, a5, a4 ... (inverseaza grupuri de cite 3
elemente). Generalizare.

Codul complet al programului:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

#define DIM 100

int stack[DIM];
int n, top = 0;

void add_stack(int x);


void del_stack(void);

int main(void){
int *p, k, i, j = 1;

printf("Introduceti un caracter de la tastatura diferit de 'q'. \n");

while (getch() != 'q'){

p = (int*)malloc(3*sizeof(int));

if (p == NULL){

Universitatea Politehnic din Bucureti, Facultatea de Electronic, Telecomunicaii


i Tehnologia Informaiei

printf("Err alocare! \n");


exit(1);
}

for (i = 1; i <= 3; i++){


printf("a[%i]= ", j);
scanf("%i", p + i);
j++;
}

for (i = 1; i <= 3; i++){


add_stack(*(p + i));
if (i % 3 == 0) for (k = 1; k <= 3; k++) del_stack();
}
}

free(p);
getchar();
getchar();

return 0;
}

void add_stack(int x){


if (top == n - 1){
printf("Stiva plina! \n");
exit(1);
}
else{

Universitatea Politehnic din Bucureti, Facultatea de Electronic, Telecomunicaii


i Tehnologia Informaiei

top++;
stack[top] = x;
}
}

void del_stack(void){
int x;
if (top == 0){
printf("Stiva goala! \n");
exit(1);
}
else{
x = stack[top];
top--;
printf("Am scos: %i\n", x);
}
}

Pseudocodul programului:
START
{
fie DIM=100 constanta;
fie stack[DIM], n, top=0 intregi;
fie void add_stack(x intreg) functie {
daca (top=n-1){
afiseaza mesaj eroare(stiva plina);
iesire din program;}
altfel{
(top++) + x=stack[top];
}
fie void del_stack(void) functie{

Universitatea Politehnic din Bucureti, Facultatea de Electronic, Telecomunicaii


i Tehnologia Informaiei

fie x intreg;
daca (top=0) {
afisare mesaj de eroare(stiva goala);
iesire din program;
}
altfel{
x=stack[top] + (top--);
afisare element extras;
}

fie int main(void) functia principala


{
fie *p, k, i, j=1 intregi;
afisare mesaj;
cat timp nu se introduce caracterul q de la tastatura{
aloca dinamic spatiu pentru 3 intregi;
daca nu s-a alocat spatiu{
mesaj eroare;
iesire din program;
}
fie i=1;
cat timp(i<=3){
citeste elemente sir;
introducere elemente in stiva;
i++;
}
fie i=1;
cat timp(i<=3){
daca(stiva plina) goleste stiva;
}
dealocare memorie;
}
STOP

Universitatea Politehnic din Bucureti, Facultatea de Electronic, Telecomunicaii


i Tehnologia Informaiei

Functiile folosite in program:

Functia de adaugare in stiva add_stack();


void add_stack(int x){
if (top == n - 1){
printf("Stiva plina! \n");
exit(1);
}
else{
top++;
stack[top] = x;
}
}
Adauga elemente in stiva.

Functia de extragere din stiva del_stack();


void del_stack(void){
int x;
if (top == 0){
printf("Stiva goala! \n");
exit(1);
}
else{
x = stack[top];
top--;
printf("Am scos: %i\n", x);
}
}

Extrage elementele din stiva si le afiseaza.

S-ar putea să vă placă și