You are on page 1of 3

UNIVERSIDADE ESTADUAL DO MARANHO

CENTRO DE CINCIAS TECNOLGICAS


CURSO DE ENGENHARIA DA COMPUTAO
DISCIPLINA: TE EM PROGRAMAO
PROFESSOR: ALFREDO COSTA OLIVEIRA JUNIOR
ALUNO: _______________________________________ CDIGO: _______________

2 LISTA DE EXERCCIOS
1) Criar funo para trocar os valores apontados por a e b.
Objetivo: Usar ponteiros para passar parmetros para funes.
int main(){
int a, b;
scanf(%d %d, &a, &b);
troca(a,b);
printf(Troquei ----> a= %d ; b = %d, a,b);
return 0;
}

2) Manipule variveis usando ponteiros para as variveis previamente declaradas no cdigo


abaixo: (Obs.: Procure entender a diferena na notao de ponteiros em p2=&j e *p2=temp)
int main(){
int i=10, j=20;
int temp;
int *p1, *p2;
// realize manipulaes com as variveis previamente declaradas.
/* p1 recebe endereco de i */
...
/* conteudo apontado por p1 para temp */
...
/* conteudo apontado por p2 para o apontado p1 */
...
/* conteudo apontado por p1 para p2 */
...
/* conteudo apontado por p1 para p2 */
...
/* imprimir i, j */
...
return 0;
}

3) Os programas (trechos de cdigo) abaixo possuem erros. Quais? Como deveriam ser? E por
qu?
a)

2 Lista de Exerccios de TE em Programao Eng. Computao 1


void main() {
int x, *p;
x = 100;
p = x;
printf(Valor de p: %d.\n, *p);
}

b)
void troca (int *i, int *j) {
int temp;
temp = *i;
*i = *j;
*j = *temp;
}

4) Qual das instrues abaixo correta para declarar um ponteiro para inteiro?
a. *int pti;
b. *pti;
c. &i;
d. int_pti pti;
e. int *pti;

5) Se i e j so variveis inteiras e pi e pj so ponteiros para inteiro, qual atribuio ilegal?


a. pi = &i;
b. *pj = &j;
c. pj = &*&j;
d. i = *&*&j;
e. i = (*pi)+++*pj;

6) Baseado no cdigo abaixo implemente as funes push e pop de uma pilha.


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

#define SIZE 10

void push(int i);


int pop(void);

int *tos, *p1, stack[SIZE];

2 Lista de Exerccios de TE em Programao Eng. Computao 2


void main(void)
{
int value;

tos = stack; /* faz tos conter o topo da pilha */


p1 = stack; /* inicializa p1 */

do {
printf("Entre com o valor: ");
scanf("%d", &value);
if(value!=0) push(value);
else printf("valor do topo %d\n", pop());
} while(value!=-1);
}

7) (Desafio) Escreva uma funo que recebe um a string de caracteres e uma letra e devolve um
vetor de inteiros contendo as posies (ndices no vetor da string) onde a letra foi encontrada)
e um inteiro contendo o tamanho do vetor criado (total de letras iguais encontradas). Utilize o
retorno de um vetor para retornar os ndices e um ponteiro para guardar o tamanho do vetor.

2 Lista de Exerccios de TE em Programao Eng. Computao 3