Exercícios: Arquivos

Documentos relacionados
Exercícios: Arquivos

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Exercícios: Vetores e Matrizes

GEQ Prof. Paulo R. Coelho. Lista para prova

4ª Lista de Exercícios de Programação I

LISTA DE EXERCÍCIOS 2

Lista de Exercícios ICC 1 Estruturas de dados heterogêneas

4ª Lista de Exercícios de Programação I

Lista de Exercícios ICC 1 Ponteiros

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Departamento de Informática PUC-Rio INF Estruturas de Dados Lista 2 Completa (Gerada em 8 de maio de 2006)

Computação Eletrônica. Aula 12 Arquivos Texto e Binário. Prof: Luciano Barbosa. CIn.ufpe.br

1. Faça um programa que leia uma string digitada pelo usuário e salve em um arquivo em branco.

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

6 a Lista Complementar de Exercícios de CI208 Programação de Computadores 13/02/2014

Exercício. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Laboratório de Programação A Exercícios sobre vetores e matrizes

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

4ª Série de Exercícios Variáveis Compostas Homogêneas 1. Faça um algoritmo que leia, via teclado, 10 valores do tipo inteiro e os guarde na memória.

Lista de exercícios 1 (Cast)

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Série de Exercícios - Comandos Repetitivos 1. Codificar o algoritmo para imprimir os N primeiros números naturais pares.

Estrutura de Dados. Aula 07 Alocação Dinâmica

Ponteiros. Introdução e Alocação Dinâmica

Lista de Exercícios de Algoritmos - 04 Para cada um dos exercícios abaixo, faça um programa (em laboratório) que teste a função.

LISTA DE EXERCÍCIOS - ro. 04

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Estruturas II UFOP 1/35

Exercícios: Comandos de Repetição

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Aula 27: Estruturas heterogêneas e alocação dinâmica

SSC Introdução à Programação para Engenharias. Lista 01 Entrega em 06/04/ h10

Introdução à Programação

9. imprimir o fatorial do número 10. imprimir o sucessor e o anterior de um número lido 11. Imprimir se um número é primo ou não 12. Imprimir os 100 p

Alocação dinâmica de Memória

Alocação Dinâmica de Memória - Exercício

INF 1620 P3-29/06/04 Questão 1 Nome:

ESTRUTURA DE DADOS LISTAS LINEARES

1ª Lista de Exercícios

Lista de Exercícios 02

INF 1620 P4-13/12/01 Questão 1 Nome:

a) Implemente uma função que retorne uma aproximação do valor de π, de acordo com a F órmula de Leibniz: ( 1)

Estruturas de Repetição WHILE e DO- WHILE

1ª LISTA DE EXERCÍCIOS

INF 1620 P4-06/12/02 Questão 1 Nome:

Algoritmos e Estruturas de Dados. Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras PURO

Exercícios Repetição

Lista de Exercícios STRING LINGUAGEM DE PROGRAMAÇÃO PROF. EDUARDO SILVESTRI.

1ª Lista de Exercícios

Requisitos para entrega. Projeto Programa 1 Cálculo de Médias Descrição do Projeto

Programação de Computadores I 2016 Prof. Marcos UNESP/FEG/DMA

Aula 06 Introdução à Programação Matrizes

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C

69) Acrescentar uma mensagem de VALOR INVÁLIDO no exercício [68], caso o segundo valor informado seja ZERO.

Linguagem C Vetores, Matrizes e Strings

Prova 2 - Computação

1 Exercícios com ponteiros

INF 1620 P2-14/10/05 Questão 1 Nome:

Capítulo 6: Arquivos

Resolva os exercícios utilizando a linguagem de programação C

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

LISTA DE EXERCÍCIOS. 1.2) Escreva um programa para ler o raio de um círculo, calcular e escrever a sua área (Fórmula: πr 2 ).

EXERCÍCIOS DE RECORDAÇÃO DE ALGORITMOS

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

Linguagem C: Introdução

1 Exercícios com ponteiros

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Após consultar o material de apoio, a bibliografia sugerida ou referências adicionais, responda às questões a seguir:

Valor: 0,0 CORREÇÃO. 1. Construa um programa que leia a sua idade, o seu nome e depois imprima na tela.

Exercícios TVC2 PARTE I:

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Caracteres, Vetores e Matrizes

ESTRUTURA DE DADOS VETORES E LISTAS LINEARES

1. Escreva um programa que imprima a ordem reversa de caracteres de uma string digitada pelo usuário. Ex: Entrada: Hello World. Saída:.

Faculdades Integradas Rui Barbosa Programação II Prof. Marcos Antonio Estremote. Exercícios com Vetores e Matrizes

char* prefixo (char* str, int n);

Transcrição:

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Arquivos 1. Escreva um programa que: (a) Crie/abra um arquivo texto de nome arq.txt (b) Permita que o usuário grave diversos caracteres nesse arquivo, até que o usuário entre com o caractere 0 (c) Feche o arquivo Agora, abra e leia o arquivo, caractere por caractere, e escreva na tela todos os caracteres armazenados. 2. Faça um programa que receba do usuário um arquivo texto e mostre na tela quantas linhas esse arquivo possui. 3. Faça um programa que receba do usuário um arquivo texto e mostre na tela quantas letras são vogais. 4. Faça um programa que receba do usuário um arquivo texto e mostre na tela quantas letras são vogais e quantas são consoantes. 5. Faça um programa que receba do usuário um arquivo texto e um caracter. Mostre na tela quantas vezes aquele caractere ocorre dentro do arquivo. 6. Faça um programa que receba do usuário um arquivo texto e mostre na tela quantas vezes cada letra do alfabeto aparece dentro do arquivo. 7. Faça um programa que receba do usuário um arquivo texto. Crie outro arquivo texto contendo o texto do arquivo de entrada, mas com as vogais substituídas por *. 8. Faça um programa que leia o conteúdo de um arquivo e crie um arquivo com o mesmo conteúdo, mas com todas as letras minúsculas convertidas para maiúsculas. Os nomes dos arquivos serão fornecidos, via teclado, pelo usuário. A função que converte maiúscula para minúscula é o toupper(). Ela é aplicada em cada caractere da string. 9. Faça um programa que receba dois arquivos do usuário, e crie um terceiro arquivo com o conteúdo dos dois primeiros juntos (o conteúdo do primeiro seguido do conteúdo do segundo). 10. Faça um programa que receba o nome de um arquivo de entrada e outro de saída. O arquivo de entrada contém em cada linha o nome de uma cidade (ocupando 40 caracteres) e o seu número de habitantes. O programa deverá ler o arquivo de entrada e gerar um arquivo de saída onde aparece o nome da cidade mais populosa seguida pelo seu número de habitantes. 11. Faça um programa no qual o usuário informa o nome do arquivo e uma palavra, e retorne o número de vezes que aquela palavra aparece no arquivo. 1

12. Abra um arquivo texto, calcule e escreva o número de caracteres, o número de linhas e o número de palavras neste arquivo. Escreva também quantas vezes cada letra ocorre no arquivo (ignorando letras com acento). Obs.: palavras são separadas por um ou mais caracteres espaço, tabulação ou nova linha. 13. Faça um programa que permita que o usuário entre com diversos nomes e telefone para cadastro, e crie um arquivo com essas informações, uma por linha. O usuário finaliza a entrada com 0 para o telefone. 14. Dado um arquivo contendo um conjunto de nome e data de nascimento (DD MM AAAA, isto é, 3 inteiros em sequência), faça um programa que leia o nome do arquivo e a data de hoje e construa outro arquivo contendo o nome e a idade de cada pessoa do primeiro arquivo. 15. Faça um programa que receba como entrada o ano corrente e o nome de dois arquivos: um de entrada e outro de saída. Cada linha do arquivo de entrada contém o nome de uma pessoa (ocupando 40 caracteres) e o seu ano de nascimento. O programa deverá ler o arquivo de entrada e gerar um arquivo de saída onde aparece o nome da pessoa seguida por uma string que representa a sua idade. Se a idade for menor do que 18 anos, escreva menor de idade Se a idade for maior do que 18 anos, escreva maior de idade Se a idade for igual a 18 anos, escreva entrando na maior idade 16. Faça um programa que recebe um vetor de 10 números, converta cada um desses números para binário e grave a sequência de 0s e 1s em um arquivo texto. Cada número deve ser gravado em uma linha. 17. Faça um programa que leia um arquivo que contenha as dimensões de uma matriz (linha e coluna), a quantidade de posições que serão anuladas, e as posições a serem anuladas (linha e coluna). O programa lê esse arquivo e, em seguida, produz um novo arquivo com a matriz com as dimensões dadas no arquivo lido, e todas as posições especificadas no arquivo ZERADAS e o restante recebendo o valor 1. Ex: arquivo matriz.txt 3 3 2 /*3 e 3 dimens~oes da matriz e 2 posiç~oes que ser~ao anuladas*/ 1 0 1 2 /*Posiç~oes da matriz que ser~ao anuladas. arquivo matriz saida.txt saída: 1 1 1 0 1 0 1 1 1 18. Faça um programa que leia um arquivo contendo o nome e o preço de diversos produtos (separados por linha), e calcule o total da compra. 19. Faça um programa que receba do usuário um arquivo que contenha o nome e a nota de diversos alunos (da seguinte forma: NOME: JOÃO NOTA: 8), um aluno por linha. Mostre na tela o nome e a nota do aluno que possui a maior nota. 2

20. Crie um programa que receba como entrada o número de alunos de uma disciplina. Aloque dinamicamente dois vetores para armazenar as informações a respeito desses alunos. O primeiro vetor contém o nome dos alunos e o segundo contém suas notas finais. Crie um arquivo que armazene, a cada linha, o nome do aluno e sua nota final. Use nomes com no máximo 40 caracteres. Se o nome não contém 40 caracteres, complete com espaço em branco. 21. Crie um programa que receba como entrada o número de alunos de uma disciplina. Aloque dinamicamente em uma estrutura para armazenar as informações a respeito desses alunos: nome do aluno e sua nota final. Use nomes com no máximo 40 caracteres. Em seguida, salve os dados dos alunos em um arquivo binário. Por fim, leia o arquivo e mostre o nome do aluno com a maior nota. 22. Faça um programa que recebe como entrada o nome de um arquivo de entrada e o nome de um arquivo de saída. O arquivo de entrada contém o nome de um aluno ocupando 40 caracteres e três inteiros que indicam suas notas. O programa deverá ler o arquivo de entrada e gerar um arquivo de saída onde aparece o nome do aluno e as suas notas em ordem crescente. 23. Escreva um programa que leia a profissão e o tempo de serviço (em anos) de cada um dos 5 funcionários de uma empresa e armazene-os no arquivo emp.txt. Cada linha do arquivo corresponde aos dados de um funcionário. Utilize o comando fprintf(). Em seguida, leia o mesmo arquivo utilizando fscanf(). Apresente os dados na tela. 24. Implemente um controle simples de mercadorias em uma despensa doméstica. Para cada produto armazene um código numérico, descrição e quantidade atual. O programa deve ter opções para entrada e retirada de produtos, bem como um relatório geral e um de produtos não disponíveis. Armazene os dados em arquivo binário. 25. Faça um programa gerenciar uma agenda de contatos. Para cada contato armazene o nome, o telefone e o aniversário (dia e mês). O programa deve permitir (a) inserir contato (b) remover contato (c) pesquisar um contato pelo nome (d) listar todos os contatos (e) listar os contatos cujo nome inicia com uma dada letra (f) imprimir os aniversariantes do mês. Sempre que o programa for encerrado, os contatos devem ser armazenados em um arquivo binário. Quando o programa iniciar, os contatos devem ser inicializados com os dados contidos neste arquivo binário. 26. Crie um programa que declare uma estrutura para o cadastro de alunos. (a) Deverão ser armazenados, para cada aluno: matrícula, sobrenome (apenas um), e ano de nascimento. (b) Ao início do programa, o usuário deverá informar o número de alunos que serão armazenados (c) O programa deverá alocar dinamicamente a quantidade necessária de memória para armazenar os registros dos alunos. (d) O programa deverá pedir ao usuário que entre com as informações dos alunos. 3

(e) Em seguida, essas informações deverão ser gravadas em um arquivo (f) Ao final, mostrar os dados armazenados e liberar a memória alocada. Ao iniciar o programa, forneça ao usuário uma opção para carregar os registros do arquivo para a memória do computador alocando dinamicamente a quantidade de memória necessária. Dica: para que o usuário possa entrar com novos dados, além dos que foram obtidos a partir do arquivo, use a função realloc() para realocar a quantidade de memória usada. 27. Faça um programa para gerenciar as notas dos alunos de uma turma salva em um arquivo. O programa deverá ter um menu contendo as seguintes opções: (a) Definir informações da turma; (b) Inserir aluno e notas; (c) Exibir alunos e médias; (d) Exibir alunos aprovados; (e) Exibir alunos reprovados; (f) Salvar dados em Disco; (g) Sair do programa (fim). Faça a rotina que gerencia o menu dentro do main, e para cada uma das opções deste menu, crie uma função específica. 28. Faça um programa que recebe como entrada o nome de um arquivo de entrada e o nome de um arquivo de saída. Cada linha do arquivo de entrada possui colunas de tamanho de 30 caracteres. No arquivo de saída deverá ser escrito o arquivo de entrada de forma inversa. Veja um exemplo: Arquivo de entrada: Hoje é dia de prova de AP A prova está muito fácil Vou tirar uma boa nota Arquivo de saída: Aton aob amu rarit uov Licáf otium átse avorp A PA ed avorp ed aid é ejoh 29. Codifique um programa que manipule um arquivo contendo registros descritos pelos seguintes campos: codigo vendedor, nome vendedor, valor da venda e mes. A manipulação do arquivo em questão é feita através da execução das operações disponibilizadas pelo seguinte menu: Criar o arquivo de dados; Incluir um determinado registro no arquivo; Excluir um determinado vendedor no arquivo; Alterar o valor de uma venda no arquivo; Imprimir os registros na saída padrão; Excluir o arquivo de dados; Finalizar o programa. Os registros devem estar ordenados no arquivo, de forma crescente, de acordo com as informações contidas nos campos codigo vendedor e mes. Não deve existir mais de um registro no arquivo com mesmos valores nos campos codigo vendedor e mês. 4

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Structs 1. Utilizando estrutura, fazer um programa em C que permita a entrada de nome, endereço e telefone de 5 pessoas e os imprima em ordem alfabética. 2. Fazer um programa para simular uma agenda de telefones. Para cada pessoa devem-se ter os seguintes dados: Nome E-mail Endereço (contendo campos para Rua, número, complemento, bairro, cep, cidade, estado, país). Telefone (contendo campo para DDD e número) Data de aniversário (contendo campo para dia, mês, ano). Observações: Uma linha (string) para alguma observação especial. (a) Definir a estrutura acima. (b) Declarar a variável agenda (vetor) com capacidade de agendar até 100 nomes. (c) Definir um bloco de instruções busca por primeiro nome: Imprime os dados da pessoa com esse nome (se tiver mais de uma pessoa, imprime para todas). (d) Definir um bloco de instruções busca por mês de aniversário: Imprime os dados de todas as pessoas que fazem aniversário nesse mês. (e) Definir um bloco de instruções busca por dia e mês de aniversário: Imprime os dados de todas as pessoas que fazem aniversário nesse dia e mês. (f) Definir um bloco de instruções insere pessoa: Insere por ordem alfabética de nome. (g) Definir um bloco de instruções retira pessoa: retira todos os dados dessa pessoa e desloca todos os elementos seguintes do vetor para a posição anterior. (h) Definir um bloco de instruções imprime agenda com as opções: imprime nome, telefone e e-mail. imprime todos os dados. (i) O programa deve ter um menu principal oferecendo as opções acima. 3. Considerando a estrutura: struct Ponto{ int x; int y; }; para representar um ponto em uma grade 2D, implemente um programa que indique se um ponto p está localizado dentro ou fora de um retângulo. O retângulo é definido por seus vértices inferior esquerdo v1 e superior direito v2. A função deve imprimir caso o ponto esteja localizado dentro do retângulo ou não. 1

4. Considerando a estrutura struct Vetor{ float x; float y; float z; }; para representar um vetor no R 3, implemente um programa que calcule a soma de dois vetores. 5. Construa uma estrutura aluno com nome, número de matrícula e curso. Leia do usuário a informação de 5 alunos, armazene em vetor dessa estrutura e imprima os dados na tela. 6. Crie uma estrutura representando os alunos do curso de Introdução a Programação de Computadores. A estrutura deve conter a matrícula do aluno, nome, nota da primeira prova, nota da segunda prova e nota da terceira prova. (a) Permita ao usuário entrar com os dados de 5 alunos. (b) Encontre o aluno com maior nota da primeira prova. (c) Encontre o aluno com maior média geral. (d) Encontre o aluno com menor média geral (e) Para cada aluno diga se ele foi aprovado ou reprovado, considerando o valor 6 para aprovação. 7. Escreva um trecho de código em C para fazer a criação dos novos tipos de dados conforme solicitado abaixo: Horário: composto de hora, minutos e segundos. Data: composto de dia, mês e ano. Compromisso: composto de uma data, horário e texto que descreve o compromisso. Byte: usado para armazenar 8 bits (definido em função dos tipos básicos do C ) 8. Faça um programa que armazene em um registro de dados (estrutura composta) os dados de um funcionário de uma empresa, compostos de: Nome, Idade, Sexo (M/F), CPF, Data de Nascimento, Código do Setor onde trabalha (0-99), Cargo que ocupa (string de até 30 caracteres) e Salário. Os dados devem ser digitados pelo usuário, armazenados na estrutura e exibidos na tela. 9. Faça um programa que leia os dados de 10 alunos (Nome, matricula, Média Final), armazenando em um vetor. Uma vez lidos os dados, divida estes dados em 2 novos vetores, o vetor dos aprovados e o vetor dos reprovados, considerando a média mínima para a aprovação como sendo 5.0. Exibir na tela os dados do vetor de aprovados, seguido dos dados do vetor de reprovados. 10. Escolha um jogo de cartas, baseado em um baralho tradicional (cada carta tem seu naipe e seu valor) ou tipo super trunfo (cada carta possui um conjunto de atributos). Implemente a parte de distribuição (sorteio) de cartas para 2 jogadores, considerando que cada jogador irá receber 5 cartas. Exiba na tela as cartas que cada um dos jogadores recebeu. 2

11. Peça ao usuário para digitar seus dados pessoais (Nome, Endereço, Data de Nascimento, Cidade, CEP, email), verifique se as informações de Data de Nascimento, CEP e email fazem sentido, e mostre ao usuário as informações, se estão todas corretas, ou mostre que alguma informação estava errada. 12. Faça um programa que leia um inteiro n e: Crie e leia um vetor com os dados de n carros: marca (máximo 15 letras), ano e preço. Leia um valor p e mostre as informações de todos os carros com preço menor que p. Repita este processo até que seja lido um valor p = 0. 13. Faça um programa que leia um inteiro n e: Crie e leia um vetor com dados de n livros: título (máximo 30 letras), autor (máximo 15 letras) e ano. Procure um livro por título, perguntando ao usuário qual título deseja buscar. Mostre os dados de todos os livros encontrados. 14. Faça um programa com N=5 e: Crie e leia um vetor de alunos, sendo que cada aluno contém os dados: nome (máximo 15 letras), notas de 3 provas, média final e nível (inteiro). Este último campo não deve ser lido agora. Preencha o campo nível. Seu valor deve ser igual à parte inteira de (5*média final/média da sala). Na sua função main(), mostre o nome e o nível de cada aluno. 15. Faça um programa que seja uma agenda de compromissos e: Crie e leia um vetor de 5 estruturas de dados com: compromisso (máximo 60 letras) e data. A data deve ser outra estrutura de dados contendo dia, mês e ano. Leia dois inteiros m e a e mostre todos os compromissos do mês m do ano a. Repita o procedimento até ler m = 0. Dica: use fgets(string, tamanho, stdin) para ler uma string, precedido imediatamente por fflush(stdin). 16. Faça um programa que controla o consumo de energia dos eletrodomésticos de uma casa e: Crie e leia 5 eletrodomésticos que contém nome (máximo 15 letras), potencia (real, em kw) e tempo ativo por dia (real, em horas). Leia um tempo t (em dias), calcule e mostre o consumo total na casa e o consumo relativo de cada eletrodoméstico (consumo/consumo total) nesse período de tempo. Apresente este último dado em porcentagem. 17. Faça um programa que gerencie o estoque de um mercado e: Crie e leia um vetor de 5 produtos, com os dados: código (inteiro), nome (máximo 15 letras), preço e quantidade. Leia um pedido, composto por um código de produto e a quantidade. Localize este código no vetor e, se houver quantidade suficiente para atender ao pedido integralmente, atualize o estoque e informe o usuário. Repita este processo até ler um código igual a zero. 3

Se por algum motivo não for possível atender ao pedido, mostre uma mensagem informando qual erro ocorreu. 18. Faça um programa que controle o fluxo de voos nos aeroportos de um país. Com v=5 (voos) e a=5 (aeroportos) e: Crie e leia um vetor de voos, sendo que cada voo contém um código de aeroporto de origem e um de destino. Crie um vetor de aeroportos, sendo que cada aeroporto contém seu código, quantidade de voos que saem e quantidade de voos que chegam. Nota: Cada aeroporto é identificado por um código inteiro entre 0 e (a-1). Não aceite aeroportos de código inexistente. 19. Faça um programa para armazenar um livro de receitas e: Crie um vetor de 5 receitas, que deve ter nome (máximo 25 letras), quantidade de ingredientes e ingredientes. Para cada receita, leia seu nome e a quantidade de ingredientes. Então crie e leia o vetor de ingredientes, sendo que cada ingrediente contém nome e quantidade. Procure receita por nome, mostrando seus ingredientes se encontrar. Se não encontrar, informe ao usuário. Repita o processo até digitar uma string vazia. 20. Faça um programa que armazena filmes produzidos por vários diretores e: Crie e leia um vetor de 5 diretores, cada um contendo nome (máximo 20 letras), quantidade de filmes e filmes. O membro filmes é um vetor, que deve ser criado após ter lido quantidade de filmes. Cada filme é composto por nome, ano e duração. Procure um diretor por nome, mostrando todos os filmes que ele já produziu. Repita o processo até digitar uma string vazia. 21. Crie uma estrutura representando os alunos do curso de Métodos e Técnicas de Programação. A estrutura deve conter a matrícula do aluno, nome, nota da primeira prova, nota da segunda prova e nota da terceira prova. (a) Permita ao usuário entrar com os dados de 5 alunos (b) Encontre o aluno com maior nota da primeira prova (c) Encontre o aluno com maior média geral (d) Encontre o aluno com menor média geral (e) Para cada aluno diga se ele foi aprovado ou reprovado, considerando o valor 6 para aprovação. 22. Definir a estrutura cuja representação gráfica é dada a seguir, definir os campos com os tipos básicos necessários. 4

(a) Crie um vetor Cadastro com 5 elementos. (b) Permita ao usuário entrar com dados para preencher esse 5 cadastros. (c) Encontre a pessoa com maior idade entre os cadastrados (d) Encontre as pessoas do sexo masculino (e) Encontre as pessoas com salário maior que 1000. (f) Imprima os dados da pessoa cuja identidade seja igual a um valor fornecido pelo usuário 23. Implemente um programa em C que leia o nome, a idade e o endereço de uma pessoa e armazene os dados em uma estrutura. 24. Escreva um programa que receba dois structs do tipo dma, cada um representando uma data válida, e calcule o número de dias que decorreram entre as duas datas. struct dma { int dia; int mes; int ano; }; 5

Lista de Exercícios 1 Struct e Ponteiros MATERIAL COMPLEMENTAR 1. Crie uma struct chamada ponto2d que tenha como atributos os pontos x,y e z. Crie duas estruturas do tipo ponto2d chamadas ponto_inicial e ponto_final. Faça um menu com as seguintes opções e implemente as: [1] Digitar o valor do primeiro ponto [2] Digitar os valores do segundo ponto [3] Mostrar a distância entre os pontos [4] Sair DICA: Distância entre dois pontos (x1,y1)(x2,y2): raiz quadrada de (x1 x2)²+(y1 y2)² 2. Crie uma struct para armazenar os dados (nome, idade, posição, numero_camisa) dos jogadores de vôlei de um time. Crie duas estruturas para armazenar os jogadores principais e os reservas. Desenvolva um programa em que o usuário consiga entrar com os jogadores principais (seis) e reservas(4) e mostre os na tela. Para facilitar a entrada de dados, utilize um menu. 3. Faça um programa que declare 3 variáveis, dos tipos inteiro, real e caracter, atribua valores para estas variáveis e mostre seus valores assim como seu tamanho em bytes e seu endereço na memória (inteiro e hexa). 4. Crie um programa que declare duas variáveis (inteiro e real) atribua valores para elas e crie dois ponteiros, cada um apontando para uma destas variáveis. Mostre na tela: O valor e o endereço de memória das variáveis, o valor do ponteiro, o endereço dp ponteiro e o valor apontado pelo ponteiro. Qual destes valore são iguais? Justifique? 5. Explique o que faz o programa a seguir, e quais valores serão mostrados ao final. 6. Modifique o exercício número 2 para a utilização de ponteiros na leitura e apresentação dos dados dos vetores.

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Alocação Dinâmica 1. Crie um programa que: (a) Aloque dinamicamente um array de 5 números inteiros, (b) Peça para o usuário digitar os 5 números no espaço alocado, (c) Mostre na tela os 5 números, (d) Libere a memória alocada. 2. Faça um programa que leia do usuário o tamanho de um vetor a ser lido e faça a alocação dinâmica de memória. Em seguida, leia do usuário seus valores e imprima o vetor lido. 3. Faça um programa que leia do usuário o tamanho de um vetor a ser lido e faça a alocação dinâmica de memória. Em seguida, leia do usuário seus valores e mostre quantos dos números são pares e quantos são ímpares. 4. Faça um programa que receba do usuário o tamanho de uma string e chame uma função para alocar dinamicamente essa string. Em seguida, o usuário deverá informar o conteúdo dessa string. O programa imprime a string sem suas vogais. 5. Faça um programa que leia um número N e: Crie dinamicamente e leia um vetor de inteiro de N posições; Leia um número inteiro X e conte e mostre os múltiplos desse número que existem no vetor. 6. Faça um programa que simule a memória de um computador: o usuário irá especificar o tamanho da memória, ou seja, quantos bytes serão alocados do tipo inteiro. Para tanto, a memória solicitada deve ser um valor múltiplo do tamanho do tipo inteiro. Em seguida, o usuário terá 2 opções: inserir um valor em uma determinada posição ou consultar o valor contido em uma determinada posição. A memória deve iniciar com todos os dados zerados. 7. Escreva um programa que leia primeiro os 6 números gerados pela loteria e depois os 6 números do seu bilhete. O programa então compara quantos números o jogador acertou. Em seguida, ele aloca espaço para um vetor de tamanho igual a quantidade de números corretos e guarda os números corretos nesse vetor. Finalmente, o programa exibe os números sorteados e os seus números corretos. 8. Faça um programa para armazenar em memória um vetor de dados contendo 1500 valores do tipo int, usando a função de alocação dinâmica de memória CALLOC: (a) Faça um loop e verifique se o vetor contém realmente os 1500 valores inicializados com zero (conte os 1500 zeros do vetor). (b) Atribua para cada elemento do vetor o valor do seu índice junto a este vetor. (c) Exibir na tela os 10 primeiros e os 10 últimos elementos do vetor. 1

9. Faça um programa que leia uma quantidade qualquer de números armazenando-os na memória e pare a leitura quando o usuário entrar um número negativo. Em seguida, imprima o vetor lido. Use a função REALLOC. 10. Faça um programa que pergunte ao usuário quantos valores ele deseja armazenar em um vetor de double, depois use a função MALLOC para reservar (alocar) o espaço de memória de acordo com o especificado pelo usuário. Esse vetor deve ter um tamanho maior ou igual a 10 elementos. Use este vetor dinâmico como um vetor comum, atribuindo aos 10 primeiros elementos do vetor valores aleatórios (usando a função rand) entre 0 e 100. Exiba na tela os valores armazenados nos 10 primeiros elementos do vetor. 11. Crie um programa que declare uma estrutura (registro) para o cadastro de alunos. (a) Deverão ser armazenados, para cada aluno: matrícula, sobrenome (apenas um) e ano de nascimento. (b) Ao início do programa, o usuário deverá informar o número de alunos que serão armazenados (c) O programa deverá alocar dinamicamente a quantidade necessária de memória para armazenar os registros dos alunos. (d) O programa deverá pedir ao usuário que entre com as informações dos alunos. (e) Ao final, mostrar os dados armazenados e liberar a memória alocada. 12. Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome do produto: com até 50 caracteres Quantidade disponível no estoque: representado por um número inteiro Preço de venda: representado por um valor real (a) Defina uma estrutura, denominada produto, que tenha os campos apropriados para guardar as informações de um produto (b) Crie um conjunto de N produtos (N é um valor fornecido pelo usuário) e peça ao usuário para entrar com as informações de cada produto (c) Encontre o produto com o maior preço de venda (d) Encontre o produto com a maior quantidade disponível no estoque 13. Escreva um programa que aloque dinamicamente uma matriz (de inteiros) de dimensões definidas pelo usuário e a leia. Em seguida, implemente uma função que receba um valor, retorne 1 caso o valor esteja na matriz ou retorne 0 caso não esteja na matriz. 14. Construa um programa que leia o número de linhas e de colunas de uma matriz de números reais, aloque espaço dinamicamente para esta e a inicialize com valores fornecidos pelo usuário. Ao final, o programa deverá retornar a matriz na saída padrão com layout apropriado. 15. Faça um programa que leia dois números N e M e: Crie e leia uma matriz de inteiros N x M; Localize os três maiores números de uma matriz e mostre a linha e a coluna onde estão. 2

16. Faça um programa que leia dois números N e M: Crie e leia uma matriz N x M de inteiros; Crie e construa uma matriz transposta M x N de inteiros. Mostre as duas matrizes. 17. Faça um programa que leia números do teclado e os armazene em um vetor alocado dinamicamente. O usuário irá digitar uma sequência de números, sem limite de quantidade. Os números serão digitados um a um e, sendo que caso ele deseje encerrar a entrada de dados, ele ira digitar o número ZERO. Os dados devem ser armazenados na memória deste modo Inicie com um vetor de tamanho 10 alocado dinamicamente; Após, caso o vetor alocado esteja cheio, aloque um novo vetor do tamanho do vetor anterior adicionado espaço para mais 10 valores (tamanho N+10, onde N inicia com 10); Copie os valores já digitados da área inicial para esta área maior e libere a memória da área inicial; Repita este procedimento de expandir dinamicamente com mais 10 valores o vetor alocado cada vez que o mesmo estiver cheio. Assim o vetor irá ser expandido de 10 em 10 valores. Ao final, exiba o vetor lido. Não use a função REALLOC. 18. Escreva um programa para fazer a alocação dinâmica dos blocos de dados conforme solicitado abaixo: (a) Vetor de 1024 Bytes (1 Kbyte). (b) Matriz de inteiros de dimensão 10 x 10. (c) Vetor para armazenar 50 registros contendo: nome do produto (30 caracteres), código do produto (inteiro) e preço em reais. (d) Texto de até 100 linhas com até 80 caracteres em cada linha. 19. Faça um programa para associar nomes as linhas de uma matriz de caracteres. O usuário irá informar o número máximo de nomes que poderão ser armazenados. Cada nome poderá ter até 30 caracteres com o \0. O usuário poderá usar 5 opções diferentes para manipular a matriz: (a) Gravar um nome em uma linha da matriz; (b) Apagar o nome contido em uma linha da matriz; (c) Informar um nome, procurar a linha onde ele se encontra e substituir por outro nome; (d) Informar um nome, procurar a linha onde ele se encontra e apagar; (e) Pedir para recuperar o nome contido em uma linha da matriz; 20. Faça um programa que: (a) Peça para o usuário entrar com o nome e a posição (coordenadas X e Y) de N cidades e as armazene em um vetor de estruturas (N é informado pelo usuário); (b) Crie uma matriz de distâncias entre cidades de tamanho N x N; (c) Calcule as distância entre cada duas cidades e armazene na matriz; (d) Exiba na tela a matriz de distâncias obtida; 3

(e) Quando o usuário digitar o número de duas cidades o programa deverá retornar a distância entre elas. 21. Faça um programa que leia quatro números a, b, c e d, que serão as dimensões de duas matrizes, e: Crie e leia uma matriz, dadas as dimensões dela; Crie e construa uma matriz que seja o produto de duas matrizes. Na sua função main(), imprima as duas matrizes e o produto entre elas, se existir. 4