You are on page 1of 4

ESTRUTURAS ESTTICAS //Program Arcabouo orientado para listas #include <stdio.h> #include <iomanip> #include <stdlib.

h>//P/ estruturas dinmicas #define dim 5 //para est. Estticas //Prottipos: void menu(); void inserir(); void mostrar(); void retirar(); //Definies iniciais int l[dim], // l= lista esttica i=-1, // ndice do ultimo n em L j,k,w,num;//Auxiliar char op; char nom[10]; int id[10]; int main() { menu(); } void menu () { do { do { system("cls"); printf("\n\nEscolha sua Opcao:"); printf("\n[I]nserir \n[M]ostrar \n[R]etirar \n[T]erminar \nDigite sua opcao: "); fflush(stdin); op=getchar(); op=toupper(op); } while (op != 'I' && op != 'M' && op!= 'R' && op != 'T'); system("cls"); switch(op) { case 'I': inserir(); break; case 'M': mostrar(); break; case 'R': retirar(); break; } } while (op!= 'T'); } void inserir () { if(i==(dim-1))//Verificar se pode armazenar os itens inseridos { printf("\nLista Cheia !\n\n"); system("pause"); } else { printf("\nDigite o Valor: ");

scanf("%d",&l[++i]);//INSERIR IMEDIATAMENTE UM O NUMERO. } } void mostrar () { if (i==-1) printf("Lista Vazia"); else for (j=0;j<=i;j++) printf("\nl[%d] = %d",j,l[j]); printf("\n\n"); system("PAUSE"); } void retirar () { if (i==-1) printf("Nada a excluir!"); else { printf("Digite o numero a ser excluido: "); scanf("%d",&num); for (j=0;j<=i;j++) { k=0; if (num == l[j]) { for(;j<=i;j++) l[j]=l[j+1]; k=1; --i; // porque i--!!! * Menos um item em L[] break; } } if (k==0) printf("\nNao ha numero %d na lista ",num); } printf("\n\n");system("pause"); } //PILHAS void retirar () { if (t > -1)// Verificar se tem item na lista { t--;// No tem diferena em colocar --t e t-printf("Ultimo numero digitado retirado\n");system("pause"); } else printf("Lista vazia \n"); system("pause"); } //FILAS void inserir () { aux = 0; if (fim!=(dim-1)) //1 <> 3 aux = (fim%(dim-1))+1;//+1 no aux quando inserir for ativado

// fim%(dim-1)+1 => -1%(4) = -1+1 =0 //2 if (aux!= inicio)// 2 <> 0 { fim = aux;// fim = 0 fim = 2 printf("\n\n\t\tDigite valor para f: "); scanf("%d",&f[fim]);// f[0] = 4 & f[1] = 3 % f[2] = 2 if (inicio == -1) inicio =0;// i = 0 } else printf("\n\n\t\tFila Cheia !"); printf("\n\n\t\t "); system("pause"); } void mostrar () { if (inicio == -1) printf("Fila Vazia"); else if (inicio <= fim)//0 <= 0 0 <= 1 1<= 2 for (j=inicio;j<=fim;j++) printf("\n\t\t\t%d",f[j]); else /*depois de ter retirado e inserido de novo!no entendi direito*/ { for (j=inicio;j<=dim-1;j++) printf("\n\t\t\t%d",f[j]); for (j=0;j<=fim;j++) printf("\n\t\t\t %d",f[j]); } printf("\n\n\t\t "); system("pause"); } void retirar () { if (inicio != -1)//0<>-1 { printf("\n\n\t\t\t\t %d Saiu de F!",f[inicio]);//f[0] = 4 if (inicio == fim) { inicio = -1; fim = -1; printf("\n\n\t\t\t\tF ficou vazia!"); } else// 0 <> 2 if (inicio != (dim-1))//0<>3 inicio = (inicio%(dim-1))+1;// i = 1 //printf("inicio = %d",inicio); system("pause");} else inicio = 0; } else printf("\n\n\t\t\t\tF esta vazia!"); printf("\n\n\t\t "); system("pause"); }

METODOS DE ORGANIZAO //BUBLE SORT #include <stdio.h> #include <stdlib.h> #define dim 5 int main () { int v[dim]={19,17,15,13,11};// {5,4,7,2,1};// int i,j,aux; //exibir os numeros antes da ordenao printf ("\n\n\t\tVetor antes da ordenacao:"); for (i=0; i<dim; i++) printf ("\n%d", v[i]); // ordena em bolha for (i=0; i<dim-1; i++) { for (j=i+1; j<dim; j++) { if (v[i] > v[j]) { aux = v[i]; v[i] = v[j]; v[j] = aux; } } } // Depois da ordenao printf ("\n\n\t\tVetor apos a ordenacao:"); for (j=0; j<dim; j++) printf ("\n%d", v[j]); printf ("\n\n"); system ("pause"); } //INSERT SORT //Uma verso do "Insert Sort" for (i=1; i<dim; i++) { aux = v[i]; for (j=i-1; j >=0 && aux < v[j]; j--) v[j+1] = v[j]; v[j+1] = aux; } BUSCA BINRIA //Identificar a tabela xinesa #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define dim 5 int v[dim]={2,4,8,16,32}; int inicio=0, fim=dim-1, meio, num; int main () {

printf ("Entre com um numero: "); scanf ("%d",&num); do { meio = (inicio + fim)/2;//8 if (num < v[meio]) fim = meio - 1; else inicio = meio + 1; } while ((v[meio] != num) && (inicio <= num) && (fim >= num)); if (v[meio] == num) printf ("\n%d = posicao do valor buscado",meio); else printf ("\nValor buscado nao esta na lista!"); printf ("\n\n"); system ("pause"); } RECURSIVIDADE /*Exemplo: Um programa que determina e visualiza o fatorial de 5(5!) . Utiliza a tcnica de recursividade.*/ #include <stdio.h> #include <iomanip> int fat (int);//prot int main() { printf("\n4!=%d",fat(5)); printf("\n\n"); system("pause"); } int fat (int w) { if (w>1) return (w*fat(w-1)); else return(1); } /*Ex: Seja um vetor v interior e dimenses 10, iniciado em tempo declarao.Iniciada em tempo de declarao.A funo 'REC' no software a seguir recursiva e visualiza, em ordem crescente de nicas, os contedos do vetor.*/ // Sua possvel soluo #define dim 10 void rec (int, int [] );// Prototipo. int main () { int v[dim]={2,4,6,8,10,12,14,16,18,20}; rec(0,v); printf("\n\n"); system ("pause");

} void rec (int x, int m[]) { if (x<dim) { printf("\nv[%d]=%d",x,m[x]); rec(x+1,m); // funo dentro da funo } } //Exemplo: Determinar o 10 numero da serie fibonacci int fib (int); int a=0,b=1,c; int main() { printf("\nTermo de fibonnaci = %d",fib(10)); printf("\n\n"); system("pause"); } int fib (int x) { if (x==1) return (a); else { c=a+b; a=b; b=c; return(fib(x-1)); } } /*Exemplo: Determinar a soma dos 10 primeiros numeros da serie fibonacci */ #include <stdio.h> #include <iomanip> int fib (int); int a=0,b=1,c,s=1; int main() { printf("\nTermo de fibonnaci = %d",fib(4)); printf("\n\n"); system("pause"); } int fib (int n) { if (n>1) { c=a+b; a=b; b=c; s+=c;//s+=c => s=s+c //printf(" s=%d\nc= %d\n",s,c);system("pause"); fib(n-1); } return (s); }

/*Implemente uma soluo em seu programa que manipula listas estticas para alterar um dado valor (se ele estiver presente na lista), informando atravs do teclado, mas utilizando a tcnica de "Busca Binria" para sua possvel localizao ou informando que o valor buscado no est na lista. 1) A dimenso da lista dever ser 100; e 2) A alterao no valor (se encontrado) dever ser o incremento de uma unidade (aps o incremento sua soluo dever visualizar o novo valor e sua posio na lista).*/ #define dim 10 int l[dim], i=-1, j,k,w,n, aux, inicio,meio,fim; char op; void menu(); void inserir(); void mostrar(); void retirar(); void alterar(); void ordenar(); int main() { menu(); } void menu() { do { do { system ("cls"); printf("\n\nEscolha sua opcao:"); printf("\n[I]nserir"); printf("\n[M]ostrar"); printf("\n[R]etirar"); printf("\n[O]rdenar"); printf("\n[A]lterar"); printf("\n[T]erminar"); printf("\nDigite sua opcao: "); fflush(stdin); //Funo que limpa o buffer padro da entrada de dados op=getchar(); op=toupper(op); if(op!='I' && op!='M' && op!='R' && op!='O' && op!='A' && op!='T') { printf("\n\n\t\tValor inexistente, digite novamente!!!"); printf("\n\n\t\t"); system("pause"); } } while(op!='I' && op!='M' && op!='R' && op!='O' && op!='A' && op!='T'); system("cls"); switch(op) { case 'I': inserir();break; case 'M':mostrar();break; case 'R': retirar();break; case 'O': ordenar();break; case 'A': alterar();break; }

} while(op!='T'); printf("\n\n\t\tPrograma finalizado !!!"); printf("\n\n\t\t"); system("pause"); } void inserir() { printf ("\n\n\t\t\tDigite valor para l: "); scanf ("%d",&l[++i]); printf ("\n\n\t\t"); system ("pause"); } void mostrar() { do { printf("\n\n\t\tDeseja mostrar o [V]etor inteiro ou apenas um [E]lemento?\n\t\t"); fflush(stdin); op=getchar(); op=toupper(op); if(op!='V' && op!='E') { printf("\n\n\t\tValor inexistente, digite novamente!!!"); printf("\n\n\t\t"); system("pause"); } switch(op) { case 'V': if (i==-1) printf ("\n\t\tA lista esta vazia."); else for(j=0;j<=i;j++) { printf("\n\n\t\tPosicao %d -%d",j,l[j]); } break; case 'E': if (i==-1) printf ("\n\t\tA lista esta vazia."); else { printf("\n\t\tDigite o elemento a ser exibido: "); scanf("%d",&aux); meio=(i)/2; inicio=0; fim=i; do { if(l[meio]<aux) { meio=(meio+fim+1)/2; } else if(l[meio]>aux) { meio=(meio-inicio)/2; } } while((l[meio]!=aux) && (aux>=l[inicio]) && (aux<=l[fim])); if(l[meio]==aux) printf("\n\n\t\tPosicao %d -- %d",meio,aux); else printf ("\n\n\t\tO numero digitado nao esta na lista."); } break;

} } while (op!='V' && op!='E'); printf("\n\n\t\t"); system("pause"); } void ordenar() { if (i==-1) printf ("\n\n\t\tA lista esta vazia."); else { for(j=0;j<=i;j++) { aux=0; for(k=0;k<=i;k++) { if(l[k]<l[k-1]) { aux=l[k]; l[k]=l[k-1]; l[k-1]=aux; } } } printf("\n\n\t\tOrdenacao concluida com sucesso!"); } printf("\n\n\t\t"); system("pause"); } void retirar() { if (inicio==-1) printf("Lista vazia!"); else { do { printf("\n\n\t\tDigite o [V]alor do numero a ser retirado,\n\t\tou a sua [P]osicao."); fflush(stdin); op=getchar(); op=toupper(op); if(op!='V' && op!='P') { printf("\n\n\t\tValor inexistente, digite novamente!!!"); printf("\n\n\t\t"); system("pause"); } } while (op!='V' && op!='P'); switch(op) { case 'V': printf("\n\n\t\tDigite o valor a ser retirado: "); scanf("%d",&aux); n=0; for(k=0;k<=i;k++) { if(aux==l[k]) { do { printf("\n\n\t\t%d valor encontrado, deseja retirar esse valor?\n\t\t([S]im ou [N]ao)",++n); fflush (stdin);

op=getchar(); op=toupper(op); if(op!='S' && op!='N') { printf("\n\n\t\tValor inexistente, digite novamente!!!"); printf("\n\n\t\t"); system("pause"); } } while(op=='S' && op=='N'); if(op=='S') { for(;k<i;k++) { l[k]=l[k+1]; } } } } if(n==0) printf("\n\n\t\tO valor digitado nao foi encontrado, por isso nao pode ser retirado."); else printf("\n\n\t\tFoi(Foram) retirado(s) %d valor(es) do vetor.",n); break; case 'P': printf("\n\n\t\tDigite a posicao do numero a ser retirado: "); scanf("%d",&j); for(k=j;k<i;k++) { l[k]=l[k+1]; } break; } --i; } printf("\n\n\t\t"); system("pause"); } void alterar() { printf ("Alterar"); }

You might also like