Você está na página 1de 14

SUMRIO

2. Dado um nmero real X e um nmero natural K, calcular a potncia X elevado a K atravs de produtos sucessivos. .................................................................. 15 3. Efetuar o clculo da quantidade de litros de combustvel gastos em uma viagem, utilizando-se um automvel que faz x km/l. Para obter o clculo, o usurio dever fornecer o tempo gasto na viagem e a velocidade mdia durante a mesma. Desta forma ser possvel obter a distncia percorrida com a frmula: DISTNCIA= TEMPO * VELOCIDADE (utilizar uma funo). Tendo o valor da distncia, basta calcular a quantidade de litros de combustvel utilizada na viagem com a frmula: LITROS_USADOS=DISTNCIA / x (atravs de funo). O programa dever apresentar os valores da velocidade mdia, tempo gasto na viagem, a distncia percorrida e a quantidade de litros utilizada na viagem. ....... 15 LISTA DE EXERCICIOS 03 ........................................................................................... 17 1. Criar um programa que permita a entrada de um nmero inteiro e retorne o seu dobro, atravs de uma funo. .................................................................... 17 2. Criar um programa que receba 4 notas e calcule a mdia aritmtica, atravs de uma funo. .................................................................................................. 17 3. Criar um programa que receba 2 valores e calcule o produto atravs de uma funo que retorna valores. ............................................................................... 18 4. Criar um programa que receba um grau e o converta para radianos atravs de uma funo........................................................................................................ 18 5. Criar um programa que mostre qual o maior valor entre dois nmeros, utilizando uma funo do tipo void (que no retorna valores). ............................. 19 6. Criar um programa que receba um nmero que corresponda a um ms do 1 trimestre e escreva o ms correspondente; caso o usurio digite o nmero fora do intervalo dever aparecer invlido, mas utilizando uma funo do tipo void. ....... 20 7. Criar um programa que retorne o fatorial de um nmero, usando uma funo que receba um valor e retorne o fatorial desse valor. .......................................... 20 8. Criar um programa que verifique se um nmero primo ou no, atravs de uma funo. Nmero primo divisvel somente por 1 e por ele mesmo. ............. 21 LISTA DE EXERCICIOS 04 ........................................................................................... 23 1. Mostre a situao da pilha P, inicialmente vazia, aps a execuo de cada uma das operaes a seguir: ............................................................................. 23 2. Codifique um programa em C++ que reverta uma srie de nmeros at que 999 seja digitado. Teste o seu programa com a srie 1,3,5,7,9,2,4,6,8. ............... 23 3. Codifique um programa em C++ que transforme um nmero decimal em um nmero octal. ..................................................................................................... 24 4. Codifique um programa em C++ que transforme um nmero decimal em um nmero hexadecimal. Dica: Se o resto for 10,11,12, 13, 14 ou 15, imprima, respectivamente, A,B,C,D,E ou F. ...................................................................... 25 5. Codifique um programa em C++ que leia uma palavra e a imprima de forma invertida. ............................................................................................................ 25 6. Uma string considerada palndroma se ela pode ser lida da esquerda para a direita ou da direita para a esquerda com o mesmo significado. Neste caso, no
3 4

QUESTIONRIOS .................................................................................................. 6 QUESTIONRIO ABSTRAO DE DADOS........................................................................ 6 1. 2. 3. 4. 5. O que voc entende por abstrao de dados?............................................... 6 Dados e informaes so a mesma coisa? Justifique a sua reposta. ............. 6 O que so tipos de dados? ........................................................................... 6 O que um TAD? Todo TAD pode ser implementado? Justifique sua resposta. ..................................................................................................................... 6 Qual o objetivo das estruturas de dados? ...................................................... 7

6. De acordo com o ponto de vista do programador a alocao de memria pode ser realizada de 2 formas. Quais? Explique cada uma.......................................... 7 7. 1. 1. 2. 3. Quais as vantagens e desvantagens da alocao encadeada e sequencial? . 7 O que so pilhas? ......................................................................................... 8 Como conhecida a estrutura pilha? ............................................................ 8 Quais as operaes suportadas pela pilha? Explique cada uma delas. .......... 8 Cite um exemplo de pilha em nosso dia-a-dia................................................ 8 QUESTIONRIO PILHAS............................................................................................... 8

LISTAS DE EXERCICIOS ....................................................................................... 9 LISTA DE EXERCICIOS 01 ............................................................................................. 9 1. Faa um programa que leia uma temperatura em graus Centgrados e apresente-a convertida em graus Fahrenheit. A frmula de converso : ............. 9 2. Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula: ............................................................................................................... 9 3. Faa um programa que leia 5 valores e informe o valor do maior. ................ 10 4. Apresentar todos os valores numricos inteiros mpares situados na faixa de 0 a 20. .................................................................................................................. 10 5. Faa um programa que apresente o total da soma obtido dos cem primeiros nmeros inteiros. (1+2+3+4+......+100) ................................................................11 6. Faa um programa que apresente a srie de Fibonacci at o dcimo quinto termo. A srie formada pela seqncia: 1,1,2,3,5,8,13,21,34,....,etc. ................11 7. Faa um programa que leia 15 valores e informe o valor da diferena entre a mdia e o maior valor. ........................................................................................ 12 LISTA DE EXERCICIOS 02 ........................................................................................... 14 1. Dados dois nmeros naturais A e B, calcular o MDC entre A e B atravs do processo e exemplo: .......................................................................................... 14

podemos considerar acentuaes, letras maisculas ou minsculas, os espaos e os caracteres especiais. A seguir esto alguns exemplos: ................................. 26 LISTA DE EXERCICIOS 05 ........................................................................................... 28 1. Criar um programa em C++ que apresente as operaes bsicas da estrutura de dados Pilha, da seguinte maneira: ................................................................. 28

QUESTIONRIOS
QUESTIONRIO ABSTRAO DE DADOS

1.

O que voc entende por abstrao de dados? A abstrao de dados representa selecionar um objeto do mundo real que seja

necessrio para a soluo de um determinado problema.

2.

Dados e informaes so a mesma coisa? Justifique a sua reposta. Dados e informaes no so a mesma coisa, j que os dados so manipulados

a partir de um conhecimento para produzir uma informao, assim os dados so as entradas do processo que ser realizado, enquanto a informao seriam as sadas, o resultado do processamento de dados.

3.

O que so tipos de dados? Tipos de dados o conjunto finito de valores + operaes bem definidas que

podem ser realizadas sobre elementos desse tipo como, por exemplo: inteiro, real, caractere, lgico.

4.

O que um TAD? Todo TAD pode ser implementado? Justifique sua resposta. TAD so Tipos Abstratos de Dados, que podem ser definidos como um conjunto

de valores, como uma coleo de operaes sobre esses valores, ou seja, um modelo matemtico. Nem todo TAD pode ser implementado, devido condio de a memria ser finita, por exemplo, os modelos infinitos no poderiam ser
5 6

representados na memria.

QUESTIONRIO PILHAS

5.

Qual o objetivo das estruturas de dados? Identificar e desenvolver modelos matemticos, determinando que classes de

1.

O que so pilhas?

Pilha um tipo especial de lista linear em que todas as operaes de insero e remoo so realizadas numa mesma extremidade, denominada TOPO.

problemas podem ser resolvidos com o uso deles, criar representaes concretas dos objetos e desenvolver rotinas capazes de atuar sobre essas representaes, de acordo com o modelo considerado, pois com a escolha correta os programas sero eficientes e elegantes.

1.

Como conhecida a estrutura pilha?

So conhecidas por estrutura LIFO (Last in, First Out), ou seja, primeiro que entra o primeiro que sai.

6.

De acordo com o ponto de vista do programador a alocao de memria pode ser realizada de 2 formas. Quais? Explique cada uma.

2.

Quais as operaes suportadas pela pilha? Explique cada uma delas. Uma pilha suporta trs operaes bsicas, so elas: - TOP: utilizada para acessar o elemento posicionado no topo da pilha; - PUSH: utilizado na insero um novo elemento no topo da pilha; - POP: utilizado na remoo de um elemento do topo da pilha.

Do ponto de vista do programador a memria pode ser esttica ou dinmica. Na esttica a existncia de uma varivel de memria prevista no cdigo do programa, seno dizemos que ela dinmica. As variveis dinmicas em C++ so alocadas no operador new. 3.

Cite um exemplo de pilha em nosso dia-a-dia. Um exemplo de pilha no nosso dia-a-dia seriam os pratos em um restaurante, a

7.

Quais as vantagens e desvantagens da alocao encadeada e sequencial?

reposio sempre feita no topo da pilha, enquanto os clientes retiram sempre os primeiros pratos do topo.

A alocao sequencial no vantajosa quando precisamos inserir ou suprimir elementos no meio da lista, pois necessita de muito esfora para movimentar os elementos, a fim de abrir o espao para a insero de um elemento, ou ainda para ocupar o lugar de espao que foi liberado. J a alocao encadeada, facilita a insero e remoo de elementos do meio da lista, porm dificulta acessar uma posio especfica dentro da lista.

LISTAS DE EXERCICIOS
LISTA DE EXERCICIOS 01 1. Faa um programa que leia uma temperatura em graus Centgrados e apresente-a convertida em graus Fahrenheit. A frmula de converso :

cout<<"DIGITE A ALTURA DA LATA"<<endl; cin>>a; cout<<"\n\n"; v=3.14159*(r*r)*a; cout<<"O VOLUME DA LATA DE OLEO EH IGUAL A: "<<v<<endl; cout<<"\n\n"; system ("Pause"); return EXIT_SUCCESS;

F = (9 * C + 160) / 5, onde F a temperatura em Fahrenheit e C em graus Centgrados. #include <iostream> #include <cstdlib> using namespace std; int main () { float gc, f; system("CLS"); //limpa tela cout<<"DIGITE A TEMPERATURA EM GRAUS CENTIGRADOS: "<<endl; cin>>gc; f=(9*gc+160)/5; cout<<"\n\n"; cout<<"A TEMPERATURA EM GRAUS FAHRENHEIT EH: "<<f<<"\n\n"; system ("Pause"); return EXIT_SUCCESS; } 2. Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula: VOLUME = 3.14159 * R2 * ALTURA. #include <iostream> #include <cstdlib> using namespace std; int main () { float r, a, v; system ("CLS"); //limpa tela cout<<"DIGITE O RAIO DA LATA"<<endl; cin>>r; cout<<"\n";
9

} 3.

Faa um programa que leia 5 valores e informe o valor do maior.

#include <iostream> #include <cstdlib> using namespace std; int main () { float n[5], maior; cout<<"DIGITE 1o NUMERO \n"; cin>> n[0]; maior=n[0]; for(int i=1; i<5; i++){ cout<<"\n"; cout<<"DIGITE O " <<i+1<<"o NUMERO \n"; cin>>n[i]; if (maior<=n[i]){ maior=n[i]; } } cout<<"\n\n"; cout<<"O MAIOR NUMERO DIGITADO EH: "<<maior<<"\n\n"; system ("pause"); return EXIT_SUCCESS; } 4. Apresentar todos os valores numricos inteiros mpares situados na faixa de 0 a 20. #include <iostream> #include <cstdlib> using namespace std; int main () {
10

cout<<"OS VALORES INTEIROS IMPARES EXISTENTES NA FAIXA DE 0 A 20 SAO: \n"; for(int i=1;i<21;i=i+2) { cout<<i<<"\n\n"; } system ("pause"); return EXIT_SUCCESS; } 5. Faa um programa que apresente o total da soma obtido dos cem primeiros nmeros inteiros. (1+2+3+4+......+100) #include <iostream> #include <cstdlib> using namespace std; int main () { int x, soma=0; for (x=1; x<=100; x++) soma=soma+x; cout<<"A SOMA DOS 100 PRIMEIROS NUMEROS INTEIROS EH: "<<soma<< "\n\n"; system ("pause"); return EXIT_SUCCESS; } 6. Faa um programa que apresente a srie de Fibonacci at o dcimo quinto termo. A srie formada pela seqncia: 1,1,2,3,5,8,13,21,34,....,etc. #include <iostream> #include <cstdlib> using namespace std; int main () { int p=1, s=1, prox, i; cout<<"A SERIE DE FIBONACCI ATE SEU 15o TERMO EH: "<< endl; cout<<p<<"\n"; cout<<s<<"\n";
11

for (i=3; i<=15; i++) { prox=p+s; cout<<prox<<endl; p=s; s=prox; } cout<<"\n\n"; system ("pause"); return EXIT_SUCCESS; } 7. Faa um programa que leia 15 valores e informe o valor da diferena entre a mdia e o maior valor. #include <iostream> #include <cstdlib> using namespace std; int main () { float media, dif, maior, soma, n[15]; soma=0; maior=0; for (int i=1; i<16; i++){ cout<<"DIGITE O "<<i<<"o VALOR: "; cin>>n[i]; soma=soma+n[i]; if (n[i]>maior) maior=n[i]; } dif=0; media=soma/15; dif=maior-media; cout<<"\n\n"; cout<<"A SOMA DOS VALORES EH IGUAL A: "<<soma<<"\n"; cout<<"A MEDIA DOS VALORES EH IGUAL A: "<<media<<"\n"; cout<<"O MAIOR VALOR ENTRE O NUMEROS EH: "<<maior<<"\n\n";
12

cout<<"A DIFERENCA ENTRE A MEDIA DOS NUMEROS E O MAIOR DELES EH "<<dif<< "\n\n"; system ("pause"); return EXIT_SUCCESS; }

LISTA DE EXERCICIOS 02

1.

Dados dois nmeros naturais A e B, calcular o MDC entre A e B atravs do processo e exemplo: Para A=80 e B=112: 1. Dividir o nmero maior pelo menor: 112 dividido por 80 -> quociente 1 e resto 32; 2. No dando resto zero, dividir o divisor pelo resto da diviso anterior: 80 dividido por 32 -> quociente 2 e resto 16; 3. Prosseguir com as divises at obter resto zero. 32 dividido por 16 ->quociente 2 e resto 0. Portanto, o MDC(80,112) = 16.

#include <iostream> #include <cstdlib> using namespace std; int main () { int a, b, r, aux; cout<< "DIGITE O VALOR DE A: "; cin>> a; cout<<"\n"; cout<< "DIGITE O VALOR DE B: "; cin>> b; if (a<b){ aux=a; a=b; b=aux;} r=a%b; while (r!=0){ a=b; b=r; r=a%b; } cout <<"\n\n O MDC DOS NUMEROS EH IGUAL A:" <<b<< "\n\n"; system ("Pause");
13 14

return 0; 2. Dado um nmero real X e um nmero natural K, calcular a potncia X elevado a K atravs de produtos sucessivos. xk = x.x.x.x. ...... x

viagem, utilizando-se um automvel que faz x km/l. Para obter o clculo, o usurio dever fornecer o tempo gasto na viagem e a velocidade mdia durante a mesma. Desta forma ser possvel obter a distncia percorrida com a frmula: DISTNCIA= TEMPO * VELOCIDADE (utilizar uma funo). Tendo o valor da distncia, basta calcular a quantidade de litros de combustvel utilizada na viagem com a frmula:

Obs: independente do valor de k, para x=0 ou 1 o resultado imediato, isto , 0 e 1. #include <iostream> #include <cstdlib> using namespace std; int main () { float x, r=1; int k; cout<<"DIGITE O VALOR DE X: "; cin>>x; cout<<"\n\n"; cout<<"DIGITE O VALOR DE K: "; cin>>k; cout<<"\n\n"; if (x==0) r=0; if (x==1) r=1; if(k==0) r=1; for (int i=1; i<=k; i++) {r=x*r; } cout<<" O VALOR DE "<<x<< " ELEVADO A "<<k<< " EH IGUAL A: "<<r; cout<<"\n\n"; system ("Pause"); return 0; 3. Efetuar o clculo da quantidade de litros de combustvel gastos em uma
15

LITROS_USADOS=DISTNCIA / x (atravs de funo). O programa dever apresentar os valores da velocidade mdia, tempo gasto na viagem, a distncia percorrida e a quantidade de litros utilizada na viagem. #include<iostream> using namespace std; int main(){ int x, tg, vm, dp, ql; cout<<"Quantos Km/L: "; cin>>x; cout<<"Digite o Tempo Gasto em Horas: "; cin>>tg; cout<<"Digite a Velocidade Media Km/H: "; cin>>vm; dp=tg*vm; ql=dp/x; cout<<"\n\n"; cout<<"Velocidade Media: "; cout<<vm<<"\n"; cout<<"Tempo Gasto: "; cout<<tg<<"\n"; cout<<"Distancia Percorrida: "; cout<<dp<<"\n"; cout<<"Quantidade de Litros: "; cout<<ql<<"\n\n"; system("Pause"); return 0; }

16

LISTA DE EXERCICIOS 03

cin>>n3; cout<<"\n\n Digite a Nota 4: "; cin>>n4; base = n1 + n2 + n3 + n4; cout<<"\n\n Media = " << media(base)<<"\n"; system("PAUSE");

1.

Criar um programa que permita a entrada de um nmero inteiro e retorne o seu dobro, atravs de uma funo.

#include <cstdlib> #include <iostream> using namespace std; int dobro (int x); int main(int argc, char *argv[]) { int v; system("CLS"); cout << "Digite o valor:"; cin>> v; cout << "Dobro = " << dobro(v) << endl; system("PAUSE"); return EXIT_SUCCESS; } int dobro (int x) { return(x*2); } 2. Criar um programa que receba 4 notas e calcule a mdia aritmtica, atravs de uma funo. #include <cstdlib> #include <iostream> using namespace std; float media(float x); main() { float n1,n2,n3,n4,base; cout<<"Digite a Nota 1: "; cin>>n1; cout<<"\n\n Digite a Nota 2: "; cin>>n2; cout<<"\n\n Digite a Nota 3: ";
17

float media(float n) { return(n/4); } 3. Criar um programa que receba 2 valores e calcule o produto atravs de uma funo que retorna valores. #include <cstdlib> #include <iostream> using namespace std; float produto(float p, float q); main() { float v1, v2; cout<<"Digite o primeiro valor: "; cin>>v1; cout<<"\nDigite o segundo valor: "; cin>>v2; cout<<"\nO produto dos valores e: "<<produto(v1,v2)<<"\n"; system("PAUSE"); } float produto(float p, float q) { return(p*q); } 4. Criar um programa que receba um grau e o converta para radianos atravs de uma funo. Frmula: radiano = grau * pi / 180
18

#include <cstdlib> #include <iostream> using namespace std; float radiano(float x); main() { float grau; cout<<"Digite o grau: "; cin>>grau; cout<<"\nO grau em radianos e: "<<radiano(grau)<<"\n"; system("PAUSE");

} 6.

else cout<<"\nO maior valor e: "<<n<<"\n\n";

Criar um programa que receba um nmero que corresponda a um ms do 1 trimestre e escreva o ms correspondente; caso o usurio digite o nmero fora do intervalo dever aparecer invlido, mas utilizando uma funo do tipo void.

#include <cstdlib> #include <iostream> using namespace std; void mes (int m); main() { int N; cout<<"DIGITE UM NUMERO: "; cin>>N; mes(N); system("PAUSE"); } void mes(int m) { switch (m) { case 1:cout<<"\nO NUMERO "<<m<<" CORRESPONTE AO MES DE JANEIRO\n"; break; case 2:cout<<"\nO NUMERO "<<m<<" CORRESPONTE AO MES DE FEVEREIRO\n";break; case 3:cout<<"\nO NUMERO "<<m<<" CORRESPONTE AO MES DE MARCO\n";break; default:cout<<"\nNUMERO INVALIDO\n"; break; } } 7. Criar um programa que retorne o fatorial de um nmero, usando uma funo que receba um valor e retorne o fatorial desse valor. Fatorial de 5 = 5 x 4 x 3 x 2 x 1 = 120 #include <cstdlib> #include <iostream>
19 20

float radiano(float x) { return((x*3.14)/180); }

5.

Criar um programa que mostre qual o maior valor entre dois nmeros, utilizando uma funo do tipo void (que no retorna valores).

#include <cstdlib> #include <iostream> using namespace std; void maior(int m, int n); main() { int v1, v2; cout<<"Digite o primeiro valor: "; cin>>v1; cout<<"\nDigite o segundo valor: "; cin>>v2; maior(v1,v2); system("PAUSE"); } void maior(int m, int n) { if(m>n) cout<<"\nO maior valor e: "<<m<<"\n";

using namespace std; int Fatorial(int FA=1); main() { int N; cout<<"DIGITE UM NUMERO: \n\n"; cin>>N; cout<<"\n\n O FATORIAL DO NUMERO DIGITADO EH: "<<Fatorial(N)<<"\n\n"; } system("PAUSE");

int Pri=1; for (int i=2; i<=(P/2); i++) { if (P%i==0) Pri = 0; } cout<<"\n\n"; if (Pri==1) cout<<"ESTE NUMERO EH PRIMO\n\n"; else cout<<"ESTE NUMERO NAO EH PRIMO\n\n"; }

int Fatorial(int FA) { int F=1; for (int i=FA; i>=1; i--) { F=F*i; } return (F); } 8. Criar um programa que verifique se um nmero primo ou no, atravs de uma funo. Nmero primo divisvel somente por 1 e por ele mesmo. #include <cstdlib> #include <iostream> using namespace std; void Primo(int P); main() { int N; cout<<"DIGITE UM NUMERO: \n\n"; cin>>N; Primo(N); } system("PAUSE");

void Primo (int P) {


21 22

LISTA DE EXERCICIOS 04

1.

Mostre a situao da pilha P, inicialmente vazia, aps a execuo de cada uma das operaes a seguir:

Push(P,a); Push(P,b); Push(P,c); Push(P,Top(P)); Push(P,Pop(P)); Pop(P); Push(P,e); Pop(P); OPERAO Push(P,a) Push(P,b) Push(P,c) Push(P,Top(P)) Push(P,Pop(P)) Pop(P) Push(P,e) Pop(P) ESTADO P:[ ] P:[a] P:[b,a] P:[c,b,a] P:[c,c,b,a] P:[c,c,b,a] P:[c,b,a] P:[e,c,b,a] P:[c,b,a] RESULTADO c c e

cout << "Digite um numero inteiro decimal:" << endl; cin >> x; } while (! pilhavazia(&P1)) { x = Pop(&P1); cout << x ; } cout << endl; system("PAUSE"); return EXIT_SUCCESS; } 3. Codifique um programa em C++ que transforme um nmero decimal em um nmero octal. #include<iostream> #include<string> #include "PILHA.h" using namespace std; int main(int argc, char *argv[]) { system("CLS"); struct Pilha P1; IniPilha(&P1); int x,z,w;cout << "Digite um numero inteiro decimal:" << endl; cin >> x; z = x % 8; //resto da diviso w = x / 8; //inteiro da diviso Push(&P1,z);//empilha o resto while (w != 0) { x = w; z = x % 8; w = x / 8; Push(&P1, z); } while (! pilhavazia(&P1)) { x = Pop(&P1); cout << x ; } cout << endl; system("PAUSE"); return EXIT_SUCCESS;
23 24

2.

Codifique um programa em C++ que reverta uma srie de nmeros at que 999 seja digitado. Teste o seu programa com a srie 1,3,5,7,9,2,4,6,8.

#include<iostream> #include<string> #include "PILHA.h" using namespace std; int main(int argc, char *argv[]) { system("CLS"); struct Pilha P1; IniPilha(&P1); int x; cout << "Digite um numero inteiro decimal:" << endl; cin >> x; while (x!=999){ Push(&P1,x); //empilha o resto

} 4. Codifique um programa em C++ que transforme um nmero decimal em um nmero hexadecimal. Dica: Se o resto for 10,11,12, 13, 14 ou 15, imprima, respectivamente, A,B,C,D,E ou F. #include "PILHA.h" using namespace std; int main(int argc, char *argv[]) { system("CLS"); struct Pilha P1; IniPilha(&P1); int x,z,w;cout << "Digite um numero inteiro decimal:" << endl; cin >> x; z = x % 16; //resto da diviso w = x / 16; //inteiro da diviso Push(&P1,z);//empilha o resto while (w != 0) { x = w; z = x % 16; w = x / 16; Push(&P1, z); } while (! pilhavazia(&P1)) { x = Pop(&P1); if( x==15)cout << "F"; else if(x==14)cout << "E" ; else if(x==13)cout << "D"; else if(x==12)cout << "C" ; else if(x==11)cout << "B" ; else if(x==10)cout << "A" ; else cout<< x ; } cout << endl; system("PAUSE"); return EXIT_SUCCESS; } 5. Codifique um programa em C++ que leia uma palavra e a imprima de forma invertida. Por exemplo: exerccio, dever ser impresso: oiccrexe.
25

#include<iostream> #include<string> #include "PILHA.h" using namespace std; int main(int argc, char *argv[]) { system("CLS"); struct Pilha P1; IniPilha(&P1); char x,palavra[20]; int a,b; cout << "Digite uma palavra " << endl; cin >> palavra; for (a= 0; a<strlen(palavra); a++) { Push(&P1,palavra[a]); //empilha o resto } while (! pilhavazia(&P1)) { x = Pop(&P1); cout<< x ; } cout << endl; system("PAUSE"); return EXIT_SUCCESS; } 6. Uma string considerada palndroma se ela pode ser lida da esquerda para a direita ou da direita para a esquerda com o mesmo significado. Neste caso, no podemos considerar acentuaes, letras maisculas ou minsculas, os espaos e os caracteres especiais. A seguir esto alguns exemplos: Radar Subi no Onibus Go dog Faa um programa em C++ para verificar se uma expresso ou no palndroma. #include<iostream> #include<string> #include "PILHA.h" using namespace std;
26

int main(int argc, char *argv[]) { system("CLS"); struct Pilha P1; IniPilha(&P1); char x,palavra[30]; int a,b,flag,r; flag=1; r=0; cout << "Digite uma palavra " << endl; gets( palavra); for (a= 0; a<strlen(palavra); a++) { Push(&P1,palavra[a]); //empilha o resto } while (! pilhavazia(&P1)) { x = Pop(&P1); cout<< x ; if(x!=palavra[r]) flag = 0; r++; } if (flag==1) cout<< "\n\nPalindroma"; else cout<< "\n\n Nao e palindroma"; cout << endl; system("PAUSE"); return EXIT_SUCCESS; }

LISTA DE EXERCICIOS 05

1.

Criar um programa em C++ que apresente as operaes bsicas da estrutura de dados Pilha, da seguinte maneira: Menu de opes

1. 2. 3. 4. 5.

Inserir um nmero inteiro na Pilha Remover um elemento da Pilha Mostrar o elemento do topo da Pilha Mostrar os elementos da Pilha Sair

Obs.: Utilizar a instruo Switch para criar o menu. #include <stdlib.h> #include <iostream> #include <string> #include <conio.h> #include "Pilha.h" using namespace std; int main (){ system ("CLS"); struct Pilha P1,copia; IniPilha (&P1); IniPilha (&copia); int x,z,w,y,f; x=0; while (x!=5) { system("CLS"); cout << "**** MENU **** \n"<<endl; cout << "1 - INSERIR NUMERO\n"<<endl; cout << "2 - REMOVER ELEMENTOS \n"<<endl; cout << "3 - MOSTRAR ELEMENTOS DO TOPO \n"<<endl; cout << "4 - EXIBIR ELEMENTO \n"<<endl; cout << "5 - SAIR\n"<<endl; cout << "Digite a opcao desejada: "<<endl; cin >> x; switch (x){ case 1: cout<<"Digite um numero inteiro: \n"; cin >> z;
27 28

Push(&P1,z); cout <<"inserido com sucesso \n"; system("PAUSE"); break; case 2: y=Pop(&P1); cout << y << "Removido com sucesso \n"; system("PAUSE"); break; case 3: f= Top (&P1); cout <<f; system("PAUSE"); break; case 4: copia=P1; while (!pilhavazia(&copia)) { f=Pop(&copia); cout << f << endl; } system("PAUSE"); break; case 5: break; } } system("PAUSE"); return 0; }

29