Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
ALGORITMOS E ESTRUTURA DE DADOS UNIDADE III - PONTEIROS LISTA DE EXERCÍCIO UNIDADE III PROF. EDILSON LIMA 1) Construa um software em que um valor qualquer seja digitado e armazenado em uma variável inteira. Através de ponteiros para esta variável, você deverá adicionar ao valor contido na variável, seu próprio valor elevado a 5 potência. 2) Desenvolva um software que crie um vetor de 5 posições do tipo “aluno”. Onde aluno deve ser um registro contendo “matrícula”, “nome”, “curso”, “idade”. Permita que estes dados possam ser cadastrados pelo usuário do software. Construa uma função que receba o vetor criado como parâmetro e que inverta a ordem dos registros no vetor. Por final, apresente a posição e o registro nela alocado. 3) Crie um software onde se tenha uma matriz de estruturas “veículo” 3x3. Onde a estrutura veículo deve armazenar os seguintes dados: Placa, marca, modelo, cor e ano. Possibilite que o usuário do software cadastre e consulte cada veículo (ou todos simultaneamente). Crie uma função que receba essa matriz através de parâmetros e que troque os registros da matriz seguindo a seguinte ordem: Se o registro estiver na posição (0,1) da matriz, então ele deverá ser trocado com o registro que estiver na posição (1,0), e assim por diante. Desta forma, somente os registros que estiverem em posições onde tanto a linha quanto a coluna possuem o mesmo número, não serão trocados. Apresente os dados após a troca. 4) Modifique o exercício número 2 para que o mesmo passe a aceitar o cadastro de 20 alunos. Se você utilizou constantes no desenvolvimento do exercício 2, então a alteração será simples. 5) Verifique o programa abaixo. Encontre o seu erro e corrija-o para que escreva o numero 10 na tela. #include <stdio.h> int main() { int x, *p, **q; p = &x; q = &p; q = &p; x = 10; printf("\n%d\n", &q); return(0); } 6)Escreva um programa que declare uma matriz 100x100 de inteiros. Você deve inicializar a matriz com zeros usando ponteiros para endereçar seus elementos. Preencha depois a matriz com os números de 1 a 10000, também usando ponteiros. 7) Explique a diferença entre as seguintes operações: p++; (*p)++; *(p++); O que quer dizer *(p+10)? 8) Para o programa abaixo, informe que valor vai ser impresso para x, y e *p. int main() { int y, *p, x; y = 0; p = &y; x = *p; x = 4; (*p)++; x--; (*p) += x; y = (*p) + 10; printf (“y = %d\n”, y); printf (“y = %d\n”, x); printf (“(*p) = %d\n”, *p); return(0); } 9) O que vai ser impresso no programa abaixo #include<stdio.h> #include<conio.h> void main(void) { int x[3] = {10, 20, 30}; int *pt; clrscr(); pt = x; pt++; printf(“\n%d”, *(--pt)); printf(“\n%d”, *pt); pt = &x[0]; printf(“\n%d”, *(pt++)); printf(“\n%d”, *pt); } 11) O que há de errado nos dois programas abaixo? /* Programa 1 */ main(){ int vetor1[10], vetor2[20]; int *p, t; p = vetor1; for(t = 0; t < 20; t++) *p++ = t; } /*Programa 2 */ main(){ char *p1, char s[80]; p1 = s; do { gets(s); while (*p1) printf(“%c”, *p1++); } while (strcmp(s, “fim”); } 12) Implemente um programa em C que calcule os dígitos verificadores de um CPF. Você deverá ler uma String, de no máximo 9 caracteres, e calcular seu correspondente dígito verificador (trabalhe com apontadores). As regras para o cálculo dos dígitos verificadores são as seguintes: É utilizado como exemplo o número: 123456. Calcule a soma dos produtos dos nove dígitos utilizando os seguintes pesos: 2, 3, 4, 5, 6, 7, 8, 9, 10; Exemplo: 2*1 + 3*2 + 4*3 + 5*4 + 6*5 + 7*6 + 8*7 + 9*8 + 10*9 = 330 A dezena do número verificador é 0 caso o resto da divisão por 11 da soma dos produtos seja 0 ou 1; caso contrário a dezena corresponde a 11 menos o resto da divisão por 11 da soma dos produtos. Exemplo: resto da divisão de 330 por 11 é 0 então a dezena do número verificador é 0. Resultado: CPF válido: 123456789-00 13) Implementamos a função strcpy() manipulando strings como vetores unidimensionais. Agora, refaça o código manipulando as strins utilizando apontadores. Aproveite e desenvolva o código para as funções strlen(), strccat(), e strcmp(). 14) Escreva a função strend(s,t), que retorna 1 se a cadeia t ocorrer no final da cadeia s, e zero em caso contrário. 15) Escreva uma função char *getMonth(int mês) que recebe o número equivalente ao mês e desenvolve um ponteiro para a string correspondente. Lembre-se: Se você declara as strings dentro da função, elas serão locais a ela e não estarão disponíveis após o término da execução da mesma. Lembra-se do conceito de variável local estática? Utilize para implementar a função. 16) Escreva um programa que percorra um array de qualquer tipo, escreva o seu conteúdo, utilizando apenas apontadores. Como alternativa procure um valor particular no array (usando apenas apontadores). PARA TREINAR CONVERTA TODOS OS EXECÍCIOR PARA LINGUAGEM C “UTILIZE O DEV C++”