Você está na página 1de 5

Centro Universitrio FIEO

Lista de Exerccios
Struct, ponteiros e pilhas
Prof. odri!o "ossini # rodri!o.$ossini%unifieo.$r
Estrutura de &ados I
&ata de Entre!a' 10/04/2014 (entregar por email)
Instrues' ( lista pode ser resolvida e) !rupos de u) a *uatro alunos. &eve ser feito so)ente u) envio das
solu+,es, por e)ail- rodri!o.$ossini%unifieo.$r. . Cada participante do !rupo deve participar ativa)ente de cada
u)a das solu+,es. (s listas de exerccios s/o o principal )eio de estudo e preparo para as avalia+,es. 0/o deve ser
reali1ado co)partilha)ento de solu+,es entre !rupos.
1) Escreva u)a defini+/o de tipo apropriada para as se!uintes entidades do )undo real. Para cada u)a, pense
e) atri$utos interessantes e os adicione 2 sua defini+/o. Colo*ue pelo )enos tr3s atri$utos e) cada u).
Le)$re4se, voc3 pode fa1er a defini+/o de u) tipo e depois utili14la na defini+/o de outro. Por exe)plo, 5
$e) ra1ovel *ue u) co)putador tenha u) )ouse.
a. U)a pessoa
$. U) aluno
c. U)a conta $ancria
d. U) cachorro
e. U) )ouse
f. U) teclado
!. U) co)putador
h. U)a disciplina
i. U) curso superior
6. U)a escola
l. U)a prova de )7ltipla escolha
). U)a )ensa!e) de e4)ail
n. U) peixe
o. U)a lin!ua!e) de pro!ra)a+/o
p. U)a fila de $anco
*. U) hist8rico de destinos escolhidos e) u) dispositivo de !ps
2) Considere o se!uinte trecho de c8di!o.
#include <stdlib.h>
#include <stdio.h>
const int N = 10;
int main(int argc, char **argv) {
int idades [N];
int notas1 [N];
int notas [N];
double !edias [N];
int i;
for (i = 0; i < N; i""){
printf (#$igite idade do al%no &d#, i " 1);
fflush(stdo%t);
scanf (#&d#, 'idades[i]);
printf (#$igite nota 1 do al%no &d#, i " 1);
fflush(stdo%t);
scanf (#&d#, 'notas1[i]);
printf (#$igite nota do al%no &d#, i " 1);
fflush(stdo%t);
scanf (#&d#, 'notas[i]);
(
for (i = 0; i < N; i""){
!edias[i] = (notas1[i] " notas[i]) ) .0;
(
for (i = 0; i < N; i""){
printf (#*edia do al%no &d = &.+#, i"1, !edias[i]);
fflush(stdo%t);
(
system (#,a%se#);
return 0;
(
Este pro!ra)a ar)a1ena a idade, nota 9, nota : e )5dia de u) con;unto de 0 alunos. (o final, exi$e4se a
)5dia de cada u). (ltere esse pro!ra)a para fa1er o se!uinte'
Exi$ir a )5dia na nota 9 de alunos cu;a idade se;a )aior do *ue ::.
Exi$ir a )5dia na nota : para alunos cu;a faixa etria este;a entre :< e == inclusive.
Exi$ir o n7)ero de alunos cu;a idade 5 )aior *ue :> e cu;a )5dia na nota : se;a pelo )enos ?.
3) 0o exerccio :, o$serve co)o al!uns dados relacionados est/o @soltosA e) vetores diferentes. Por exe)plo,
os vetores notas9, notas:, idades e )edias, na posi+/o 9, te) valores *ue di1e) respeito ao )es)o aluno.
escreva o c8di!o do exerccio : usando struct. Ou se;a, crie u) tipo de dado (luno *ue te) todos os dados
necessrios e ent/o declare u) vetor de 0 alunos. ( se!uir, fa+a os )es)os clculos pedidos no exerccio :.
4) Considere o se!uinte pro$le)a. U)a universidade dese;a fa1er o controle do rendi)ento acad3)ico de seus
alunos. Para tal, deve4se levar e) considera+/o as se!uintes restri+,es. &eve) ser ar)a1enados dados so$re
os cursos. Cada curso te) u) c8di!o inteiro e u) no)e, *ue pode ter at5 9BB caracteres. Cada curso te)
ta)$5) 9B disciplinas. Cada disciplina te) u) c8di!o inteiro e u) no)e. Os alunos t3) idade e no)e.
Cada aluno pode cursar u) 7nico curso. E) cada disciplina do curso *ue cursa, cada aluno fa1 duas provas e
te) u)a )5dia ponderada calculada. ( pri)eira prova se)pre te) peso : e a se!unda prova se)pre te)
peso =.
Identifi*ue os tipos de dados *ue precisa) ser definidos, $e) co)o seus atri$utos. Fa+a estas defini+,es
usando tCpedef e struct.
( se!uir, escreva u) pro!ra)a *ue declara u) vetor de 9B alunos. Escreva u)a estrutura de repeti+/o *ue
per)ita a o$ten+/o dos dados -curso, disciplinas e notas. de cada aluno. ( se!uir, calcule a )5dia de cada
aluno e) cada disciplina e as exi$a.
5) Fa+a o teste de )esa -no papel. do se!uinte pro!ra)a e descu$ra o *ue ele )ostra para o usurio. Expli*ue o
*ue ele fa1.
#include <stdlib.h>
#include <stdio.h>
const int N = 10;
int main(int argc, char **argv) {
int * ,1, *,, a, b;
,1 = 'a;
, = 'b;
a = ;
b = -;
printf (#&d.n#, *,1);
printf (#&d.n#, *,);
int res = *,1 " *,;
printf (#&d.n#, res);
return 0;
(
6) Fa+a o teste de )esa do se!uinte pro!ra)a.
#include <stdlib.h>
#include <stdio.h>
void func (int * a, int b, int *c){
*a = *a " 1;
b = *a;
b"";
(*a)//;
*c = *c " *a " b;
b//;
(
int main(int argc, char **argv) {
int a = , b = -, c = 0;
printf (#&d &d &d.n#, a, b, c);
+%nc ('a, b, 'c);
printf (#&d &d &d.n#, a, b, c);
+%nc ('b, a, 'c);
printf (#&d &d &d.n#, a, b, c);
return 0;
(
7) Dostre a defini+/o de u)a pilha -defini+/o do tipo e fun+,es push e pop. *ue 5 capa1 de ar)a1enar itens de
cada u) dos tipos *ue voc3 definiu no exerccio 9.
8) Escreva u)a fun+/o *ue rece$e dois ponteiros para inteiro e fa1 a troca dos valores ar)a1enados nas
posi+,es para as *uais os ponteiros aponta). Cha)e sua fun+/o de @sEapA.
9) Escreva a defini+/o de u)a pilha -defini+/o de tipo co) struct e as fun+,es push, pop, estaFva1ia e
estaFcheia. considerando *ue o topo da pilha 5 1ero *uando ela est va1ia.
10) Escreva a defini+/o de u)a pilha -defini+/o do tipo de dado co) struct, fun+,es push, pop, estaFva1ia,
estaFcheia. *ue utili1a a posi+/o 1ero do vetor *ue ar)a1ena seus itens para conter o valor *ue indica seu
topo. (ssi), os itens da pilha s/o ar)a1enados a partir da posi+/o 9 do vetor.
11) Escreva u) pro!ra)a *ue per)ita ao usurio escolher as se!uintes op+,es'
9 # io de Ganeiro
: # S/o Paulo
= # Santos
H # Porto (le!re
49 # Sair
B 4 Iist8rico
Ou se;a, o usurio pode indicar u)a cidade *ue !ostaria de visitar a cada itera+/o de u) loop. E di!itar 49
para sair do pro!ra)a. Si)ples assi). Das seu pro!ra)a deve ta)$5) ar)a1enar o hist8rico de op+,es.
Juando o usurio di!itar B, o pro!ra)a deve )ostrar o hist8rico de op+,es reali1adas, sendo *ue a )ais
recente deve aparecer pri)eiro. Ou se;a, a 7lti)a op+/o escolhida 5 a pri)eira a ser )ostrada. Para
ar)a1enar o hist8rico utili1e u)a pilha. Das cuidado, para exi$ir cada ite) na pilha, voc3 vai ter *ue
dese)pilhar u) a u). E depois disso, precisar )anter o hist8rico co)o era antes, para *ue o usurio possa
rev34lo caso dese;e. Co)o fa1er issoK &ica' Utili1e u)a pilha auxiliar para e)pilhar os ele)entos en*uanto
os exi$e. &epois, e)pilhe4os de volta para a pilha ori!inal, dese)pilhando u) a u) da pilha auxiliar.

Você também pode gostar