quinta-feira, 5 de novembro de 2015

Projeto Cadastro de Veiculo


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


//estrutura para cadastrar
struct cadastro{
int cod;
char model[32];
char marca[32];
char cor[8];
float preco;
};

//vetor com 200 posições para cadastro
struct cadastro cad[200];

unsigned int indice;

//função para salvar a estrutura cadastro
void salvar(struct cadastro cad2){

FILE *f;
f = fopen("dadosScreamer","a");
if(f == NULL){
puts("Não foi possivel abrir o arquivo!");
exit(1);
}
fprintf(f,"%d\n%s\n%s\n%s\n%f\n\n",cad2.cod, cad2.marca, cad2.model, cad2.cor, cad2.preco);
fclose(f);
}

void consultar(){
int cont;
system("cls");
puts("Consulta rapida!");
puts("----------------");
puts(""); 
while(cont <= abrir()){
printf("Codigo - %d\nMarca - %s\nModelo - %s\nCor - %s\nPreco - %f\n\n", cad[cont].cod, cad[cont].marca, cad[cont].model, cad[cont].cor, cad[cont].preco);
cont++;
}
getch();
}

int abrir(){
struct cadastro cad2;
FILE *f;
f = fopen("dadosScreamer","r");
if(f == NULL){
puts("Não foi possivel abrir o arquivo!");
exit(1);
}
int cont;
while((fscanf(f,"%d\n%s\n%s\n%s\n%f\n\n", &cad2.cod, &cad2.marca, &cad2.model, &cad2.cor, &cad2.preco)) != EOF){
cad[cad2.cod].cod = cad2.cod;
strcpy(cad[cad2.cod].marca, cad2.marca); 
strcpy(cad[cad2.cod].model, cad2.model);
strcpy(cad[cad2.cod].cor, cad2.cor);
cad[cad2.cod].preco = cad2.preco;
cont++;
}
fclose(f);
if(cont == 1){
return 0;
}
return cad2.cod;
}

//função para cadastrar uma estrutura cadastro
void cadastrar(){

struct cadastro cad;
unsigned int codigo = abrir()+1;

int opx = 'n';

do{
system("cls");
puts("Cadastro de Veiculos");
puts("---------------------");
cad.cod = codigo;
printf("\nMarca - ");
scanf("%s", cad.marca);
printf("Modelo - ");
scanf("%s", cad.model);
printf("Cor - ");
scanf("%s", cad.cor);
printf("Preco - ");
scanf("%f", &cad.preco);
codigo++;
salvar(cad);
puts("");
printf("continuar?(s/n)");opx = getche();

}while(opx == 's');
}

//menu de opções
int menu(){

system("cls");
int op;
puts("CAR NEW ESTACIONAMENTO");
puts("----------------------");
puts("1 - Cadastrar");
puts("2 - Consultar");
puts("3 - Alterar");
puts("4 - Excluir");
puts("5 - Sair");
puts("");
printf("Opcao - ");
scanf("%d", &op);
printf("");
return op;
}

//função que executa uma opção
void escolha(int n){
switch(n){

case 1:
cadastrar(cad[indice]);
break;
case 2:
consultar();
break;
case 3:
break;
case 4:
break;
case 5:

puts("fim programa!");
sleep(1);
exit(0);
default:
puts("Opcao invalida!");
sleep(1);
}
}

int main(){

while(1){
escolha(menu());
system("cls");
}
return (0);
}

quarta-feira, 28 de outubro de 2015

Implementação de uma estrutura de tipo Fila usando TAD


arquivo.h


typedef struct sNO{
int num;
struct sNO *prox;
}NO;

typedef NO *FILA;

void iniciar(FILA *f);

void inserir(FILA *f, int num);

int remover(FILA *f);

void inicio(FILA *f);

void fim(FILA *f);

void exibir(FILA *f);

arquivo.c


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

NO *memoria(){
return (FILA) malloc(sizeof(NO));
}

void iniciar(FILA *f){

*f = NULL;
}

void inserir(FILA *f, int num){

FILA temp = memoria();
temp->num = num;
temp->prox = NULL;
if(temp == NULL){

puts("Não foi possivel alocar memoria!");
}
if(*f == NULL){

*f = temp;
} else {
FILA fila = *f;
while(fila->prox != NULL){

fila = fila->prox;
}
fila->prox = temp;
}
}

int remover(FILA *f){

int num;
if(*f != NULL){

FILA temp = *f;
num = temp->num;
*f = temp->prox;
free(temp);
return num;

} else {

puts("fila vazia!");
}
}

void fim(FILA *f){

puts("Fim Fila:");
FILA temp = *f;
while(temp->prox != NULL){

temp =  temp->prox;
}
printf("%d\n\n", temp->num);
}

void inicio(FILA *f){

puts("Inicio Fila:");
FILA temp = *f;
printf("%d\n\n", temp->num);
}

void exibir(FILA *f){
if(*f != NULL){
puts("Fila:");
FILA temp = *f;
while(temp != NULL){

printf("%d\n", temp->num);
temp =  temp->prox;
}
puts("");
} else {
puts("fila vazia!");
}
}

terça-feira, 27 de outubro de 2015

Exemplo de Lista dinâmica usando TAD em linguagem C.
Esta lista possibilita a inserção de valores em qualquer posição da lista


arquivo.h


typedef struct sNO{

int num;
struct sNO *prox;
}NO;

typedef NO *LISTA;

void iniciar(LISTA *l);

void inserir_ini(LISTA *l, int num);
void inserir_pos(LISTA *l, int num, int pos);
void inserir_fim(LISTA *l, int num);

int remover_ini(LISTA *l);
int remover_pos(LISTA *l, int pos);
int remover_fim(LISTA *l);

void exibir(LISTA *l);

arquivo.c


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

LISTA memoria(){
//atribui memoria
return (LISTA) malloc(sizeof(NO));
}

void iniciar(LISTA *l){

*l = NULL;
}

void inserir_fim(LISTA *l, int num){
//inserir no fim
LISTA temp = memoria();

if(temp == NULL){

puts("Não foi possivel alocar memoria!");
}

temp->num = num;
temp->prox = NULL;

if(*l != NULL){

LISTA lista = *l;
while(lista->prox != NULL){

lista = lista->prox;
}
lista->prox = temp;
} else {

*l = temp;

}
}

void inserir_pos(LISTA *l, int num, int pos){

LISTA temp = memoria();
if(temp == NULL){ //verifica se alocou memoria

puts("Não foi possivel alocar memoria!");
}

temp->num = num; //recebe o valor de num
if(*l != NULL && pos == 1){

temp->prox = *l;
*l = temp;
} else 
if(*l != NULL && pos > 1){ //se a lista não estiver vazia

LISTA lista = *l; //ponteiro recebe lista
while(pos-1 > 1 && lista->prox != NULL){ //bo
pos--;
lista = lista->prox; //iteração
}
temp->prox = lista->prox;
lista->prox = temp;

} else { //se a lista estiver vazia

temp->prox = NULL;
*l = temp;
}
}

void inserir_ini(LISTA *l, int num){
//inserir no inicio
LISTA temp = memoria();
if(temp == NULL){

puts("Não foi possivel alocar memoria!");
}

temp->num = num;

if(*l != NULL){

temp->prox = *l;
*l = temp;
} else {

temp->prox = NULL;
*l = temp;
}
}

int remover_ini(LISTA *l){
//remover do inicio
int num;

if(*l != NULL){

LISTA temp = *l;
*l = temp->prox;
num = temp->num;
free(temp);
}
return num;
}

int remover_pos(LISTA *l, int pos){
//remover posiçao

int num;
if(*l != NULL){

LISTA temp;
LISTA lista = *l;
if(pos > 1){
pos--;
while(pos > 1 ){
if(lista->prox == NULL){
puts("Posicao vazia!");
return 0;
}
lista = lista->prox;
pos--;
}

temp = lista->prox;
num = temp->num;
lista->prox = temp->prox;
free(temp);

} else if(pos == 1){

temp = *l;
num = temp->num;
*l = temp->prox;
free(temp);
}

return num;
} else {

printf("lista vazia!");
}
}

int remover_fim(LISTA *l){
//remover fim
int num;
if(*l != NULL){
  
LISTA temp = *l;
*l = temp->prox;
  num = temp->num;
free(temp);
return num; 
} else {
  
  return 0; 
}
}

void exibir(LISTA *l){
//exibir lista
if(*l != NULL){
LISTA temp = *l;
puts("Lista:");
while(temp != NULL){
printf("%d\n", temp->num);
temp = temp->prox;
}
puts("");
} else {
puts("Lista vazia!");
puts("");
}
}

segunda-feira, 26 de outubro de 2015

Estrutura Dinâmica de uma Pilha básica em C.

Um modo pratico de implementar uma estrutura pilha é incorpora-la a um TAD, criamos dois arquivos sendo um .h (head) e um .c para implementação do algoritmo.


arquivo.h



#include<stdbool.h>

typedef struct sNO{
int num;
struct sNO *prox;
}NO;

typedef NO *PILHA;

void iniciar(PILHA *p);

void inserir(PILHA *p, int num);

int remover(PILHA *p);

void exibir(PILHA *p);

arquivo.c


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

void iniciar(PILHA *p){

*p = NULL;
}

NO *memoria(){
return (PILHA) malloc(sizeof(NO));
}

void inserir(PILHA *p, int num){

PILHA temp = memoria(); //aloca memoria num ponteiro temporario
temp->num = num; //temp recebe um numero
temp->prox = NULL;
if(temp == NULL){
puts("Nao foi possivel alocar memoria!");
}
if(*p == NULL){

*p = temp; //se p for vazio tem recebe null

} else {

PILHA Pilha = *p;
while(Pilha->prox != NULL){

Pilha = Pilha->prox;
}

Pilha->prox = temp;
}
}

int remover(PILHA *p){

if(*p != NULL){

PILHA temp = *p, pilha = NULL;
if(temp->prox == NULL){
int num = temp->num;
free(temp);
*p = NULL;
return num;
}
while(temp->prox != NULL){
pilha = temp;
temp = temp->prox;
}

int num = temp->num;
pilha->prox = NULL;
free(temp);
return num;
} else {

puts("pilha vazia!");
}
}

void exibir(PILHA *p){

if(*p != NULL){
puts("pilha:");
PILHA temp = *p;
while(temp != NULL){

  printf("%d\n", temp->num);
    temp =  temp->prox;  
  }
  puts(""); 
  } else {
  puts("pilha vazia!");
  }

}