quinta-feira, 27 de agosto de 2015

Fila Circular




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

#define TAMANHO 5

int fila[TAMANHO];
int opcao;
int numero;
int fim;
int inicio;
int vazia = 0;

void menu();
void adicionar(int numero);
int retirar();

int main()
{
    opcao = 0;
    inicio = 0;
    fim = 0;
    while(opcao != 3)
    {
        menu();
        switch(opcao)
        {
        case 1:
            printf("Digite o numero: ");
            scanf("%d",&numero);
            adicionar(numero);
            break;
        case 2:
            if(vazia==0){
                    printf("\n***FILA VAZIA***\n");
            }else{
            numero = retirar();
            printf("\nRetirado o numero %d da fila\n", numero);
            }
            break;
        case 3:
            break;
        default:
            printf("\nOpcao invalida!\n");
        }
        printf("\n\n");
    }
}

void menu()
{
    printf("1 - adicionar\n");
    printf("2 - retirar\n");
    printf("3 - sair\n");
    printf("Digite a opcao: ");
    scanf("%d", &opcao);
}

void adicionar(int numero)
{
if(vazia==0){
    fila[fim] = numero;
    fim++;
    printf("\n");
    if(fim==TAMANHO){
        fim =0;
    }
        vazia = 1;
    }else if(inicio==fim){
        printf("\n***FILA CHEIA***\n");
    }else{
    fila[fim]= numero;
    fim++;
    }
    if(fim==TAMANHO){
        fim=0;
    }
}


int retirar()
{
int valorParaRetorno=-1;
    if(vazia==0){
        printf("\n\n***Fila Vazia***\n\n");
    } else{
        valorParaRetorno = fila[inicio];
        inicio++;
        if(inicio==TAMANHO){
            inicio=0;
        }
        if(inicio==fim){
            vazia = 0;
        }
        return valorParaRetorno;
    }
 }

quinta-feira, 20 de agosto de 2015

Push Pop com Vetor




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

#define TAMANHO 5

int fila[TAMANHO];
int opcao;
int numero;
int fim;
int inicio;

void menu();
void adicionar(int numero);
int retirar();

int main()
{
    opcao = 0;
    inicio = 0;
    fim = 0;
    while(opcao != 3)
    {
        menu();
        switch(opcao)
        {
        case 1:
            printf("Digite o numero: ");
            scanf("%d",&numero);
            adicionar(numero);
            break;
        case 2:
            numero = retirar();
            printf("\nRetirado o numero %d da fila\n", numero);
            break;
        case 3:
            break;
        default:
            printf("Opcao invalida!\n");
        }
        printf("\n\n");
    }
}

void menu()
{
    printf("1 - adicionar\n");
    printf("2 - retirar\n");
    printf("3 - sair\n");
    printf("Digite a opcao: ");
    scanf("%d", &opcao);
}

void adicionar(int numero)
{
if(inicio==TAMANHO){
    printf("\n\nCHEIA!!!\n\n");
    printf("\n");
  }else{
  fila[inicio] = numero;
  inicio++;
  }

}

int retirar()
{
int aux;
    if(inicio==fim){
        printf("\n\n***Fila Vazia***\n\n");
    }
    if(fim!=inicio){
        aux = fim;
        fim++;
        return fila[aux];
}
}

Pilha Estática com Vetor




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

#define TAMANHO 5

void menu();
void imprimir();

void push(int dado);
int pop();

int pilha[TAMANHO];
int posicao = 0;
int opcao;
int numero;

int main()
{
    opcao = 0;
    while(opcao!=3)
    {
        menu();
        if(opcao == 1)
        {
            printf("Digite o numero: ");
            scanf("%d", &numero);
            push(numero);
            imprimir();
        }
        if(opcao == 2)
        {
            numero = pop();
            printf("\n\nRetirado o %d da  pilha.\n\n",numero);
            imprimir();
        }
    }
}

void menu()
{
    printf("1 - push\n");
    printf("2 - pop\n");
    printf("3 - sair\n");
    printf("Digite a opcao: ");
    scanf("%d", &opcao);
}

void imprimir()
{
    system("PAUSE");
    int i;
    for(i = posicao - 1; i >=0; i--)
    {
        printf("+---+----+\n");
        printf("| %d | %2d |\n", i, pilha[i]);
    }
    if(posicao > 0)
        printf("+---+----+\n");
}

void push(int dado)
{
  if(posicao==TAMANHO){
    printf("\n\nCHEIA!!!\n\n");
    printf("\n");
  }else{
  pilha[posicao] = dado;
  posicao++;
  }

}

int pop()
{
if(posicao==0){
    return -1;
    printf("***PILHA VAZIA***");
}else{
    posicao--;
    return pilha[posicao];
}
}

terça-feira, 18 de agosto de 2015

PUSH POP IDE Code::Blocks C




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

struct Pilha{
    int topo;/*pociçaõ do elemento topo*/
    int capa;
    float *pElem;
};

void criarpilha(struct Pilha *p, int c ){
p->topo = -1;
p->capa = c;
p->pElem =(float*) malloc (c * sizeof(float));
}
int estavazia( struct Pilha *p){
    if(p-> topo == -1)
        return 1; // true
    else
        return 0; // false
}
int estacheia(struct Pilha *p){
    if(p->topo == p->capa -1)
        return 1;// true
    else
        return 0;// false
}

void empilhar(struct Pilha *p, float v){
    p->topo++;
    p->pElem[p->topo] = v;
}

float desempilhar (struct Pilha *p){
    float aux = p->pElem [p->topo];
    p->topo--;
    return aux;
}

float retornatopo(struct Pilha *p){
return p->pElem[p->topo];
}

int main(){
    struct Pilha minhapilha;
    int capacidade, op;
    float valor;

    printf("\nCapacidade da Pilha?\n ");
    scanf("%d", &capacidade);

    criarpilha(&minhapilha, capacidade);

    while(1){ /* Loop Infinito*/

        printf(" \n1- Empilhar (PUSH)\n");
        printf(" \n2- Desempilhar (POP)\n");
        printf(" \n3- Mostar qual elemento do Topo \n");
        printf(" \n4- Sair\n");
        printf(" \nOpcao ? ");
        scanf("%d", &op);

        switch (op){
        case 1: //PUSH
            if(estacheia(&minhapilha)== 1)
                printf("\nPilha Cheia! \n");
            else{
                printf(" \n Valor ?");
                scanf("%f", &valor);
                empilhar(&minhapilha, valor);
            }
            break;

        case 2: // POP
            if(estavazia(&minhapilha)== 1)
                printf("\nPilha Vazia!!!\n");
            else{
                valor = desempilhar(&minhapilha);
                printf("\n%.1f Desempilhado !\n", valor);
            }
            break;

        case 3: // Mostrar o Topo
            if(estavazia(&minhapilha)== 1)
                printf("\n Pilha Vazia !\n");
            else{
                valor = retornatopo(&minhapilha);
                printf("\nTopo: %.1f\n", valor);
            }
            break;

        case 4: // Sair
            exit(0);
            default: printf("\n Opcao Invalida!!!\n");
        }
    }
}

quinta-feira, 13 de agosto de 2015

faça um programa que usa um vetor para armazenar inteiros. O programa deve acessar o vetor usando duas funções: O programa deve ter o seguinte menu: 1-Inserir 2-Mostrar 3-Sair





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

#define TAMANHO 5

int dados[TAMANHO];
int opcao;
int dado;
int posicao;

void menu();
void insere(int posicao, int valor);
int mostra(int posicao);

int main()
{
    opcao = 0;
    while(opcao != 3)
    {
        menu();
        if(opcao == 1)
        {
            printf("Qual posicao? ");
            scanf("%d", &posicao);
            printf("Qual o dado? ");
            scanf("%d", &dado);
            insere(posicao, dado);
        }
        if(opcao == 2)
        {
            printf("Qual a posicao? ");
            scanf("%d", &posicao);
            dado = mostra(posicao);
            printf("O elemento da posicao %d eh %d\n", posicao, dado);
        }
    }
}

void menu()
{
    printf("1 - Inserir\n");
    printf("2 - Mostrar\n");
    printf("3 - Sair\n");
    scanf("%d", &opcao);
}

void insere(int posicao, int valor)
{
    if(posicao >=0 && posicao < TAMANHO)
        dados[posicao] = valor;
    else
        printf("Impossivel inserir na posicao %d!\n", posicao);
}

int mostra(int posicao)
{
    int retorno = 0;
    if(posicao >=0 && posicao < TAMANHO)
        retorno = dados[posicao];
    else
        printf("Nao existe a posicao %d!\n", posicao);
    return retorno;
}