Sunteți pe pagina 1din 5

Disciplina: Estrutura de Dados, Pesquisa e Ordenao (Programando em C). 1. Programa modular abordando o tipo de dados registro, ou estrutura (struct).

Registro escolar: nome e notas bimestrais.


// Programa modular abordando o tipo de dados registro, ou estrutura (struct). // Registro escolar: nome e notas bimestrais. #include "stdio.h" #include "string.h" #include "conio.h" #include "ctype.h" // estrutura de dados const maxTam = 100; // qtd. mxima de alunos no vetor struct RgAluno { char nome[35]; float nota1; float nota2; }; struct RgAluno Aluno[maxTam]; // vetor de registros (conjunto de fichas) int n; // qtd. efetiva (ou utilizada) de posies do vetor void Cadastrar(void); void Excluir(void); void Listar(void); char *Pontos(char *msg, int tam); float Media(struct RgAluno Aluno); char *Situacao(struct RgAluno Aluno); void Parada(void); char Confirma(char *msg); void main() { int opcao; n = 0; do { clrscr(); gotoxy(10, 3); printf("******* MENU PRINCIPAL *******"); gotoxy(10, 5); printf("[ 1 ] Cadastrar Alunos / Notas"); gotoxy(10, 7); printf("[ 2 ] Excluir Alunos"); gotoxy(10, 9); printf("[ 3 ] Listar Alunos"); gotoxy(10, 11); printf("[ 0 ] Encerrar o Programa"); gotoxy(10, 13); printf("[ ? ] Opo Desejada"); do { gotoxy(12, 13); scanf("%d", &opcao); } while ((opcao < 0) || (opcao > 3)); switch (opcao) { case 1: Cadastrar(); break; case 2: Excluir(); break; case 3: Listar(); } } while (opcao != 0); } void Cadastrar(void) { while (1) { clrscr(); printf("Informe o nome do aluno, (FIM) para encerrar:\n"); fflush(stdin); // limpa o buffer do teclado gets(Aluno[n].nome); if (strcmp(Aluno[n].nome, "FIM") == 0) break; printf("Informe a nota do 1o. Bimestre: "); scanf("%f", &Aluno[n].nota1); printf("Informe a nota do 2o. Bimestre: "); scanf("%f", &Aluno[n].nota2); if (Confirma("\nConfirma os dados (s/n): ") == 'S') n = n + 1; // aumenta a qtd. de itens no vetor } } void Excluir(void) { int i; while (1) { do { clrscr(); printf("Informe a posio do aluno a ser excludo, (-1) para encerrar:\n"); printf("Posio de 0 at %d: ", (n-1)); scanf("%d", &i); } while ((i != (-1)) && (i >= n)); if (i == (-1)) break; clrscr(); printf("Nome: %s", Aluno[i].nome); if (Confirma("\n\nConfirma a excluso (s/n): ") == 'S') { // reorganiza os itens no vetor, ou seja, todos os elementos a partir // do elemento excludo (i-simo) so deslocados para as posies // anteriores for (int j=i; j<(n-1); j++) Aluno[j] = Aluno[j+1]; n = n - 1; // diminui a qtd. de elementos no vetor } } } void Listar(void) { int i = 0, y; while (i < n) { clrscr(); printf("Nome do Aluno........................ 1o. Bim 2o. Bim Mdia. Situao.\n"); printf("============================================================= ============="); y = 3; // quebra (exibe os alunos em telas de 18 em 18) while ((i < n) && (y <= 20)) { gotoxy(01, y); printf("%d-%s", i, Pontos(Aluno[i].nome, 35)); gotoxy(40, y); printf("%6.2f", Aluno[i].nota1); gotoxy(49, y); printf("%6.2f", Aluno[i].nota2); gotoxy(58, y); printf("%6.2f",

Media(Aluno[i])); gotoxy(66, y); printf("%s", Situacao(Aluno[i])); i = i + 1; // prximo item do vetor y = y + 1; // prxima linha da tela } Parada(); } } // preenche a cadeia de caracteres com pontos at "tam" char *Pontos(char *msg, int tam) { for (int i=strlen(msg); i<tam; i++) msg[i] = '.'; return(msg); } float Media(struct RgAluno Aluno) { return ((Aluno.nota1 + Aluno.nota2) / 2); } char *Situacao(struct RgAluno Aluno) { float vlrMedia = Media(Aluno); if (vlrMedia < 7.0) return ("Reprovado"); else return ("Aprovado"); } void Parada(void) { gotoxy(01, 24); printf("Pressione [algo] para prosseguir."); getch(); } char Confirma(char *msg) { char cf; // consistindo o valor da varivel "cf" do { printf("%s", msg); cf = toupper(getche()); } while ((cf != 'S') && (cf != 'N')); return(cf); }

Programa modular abordando o tipo de dados registro, ou estrutura (struct). Registro IRRF: nome, sexo e renda anual. 3. Programa modular abordando o tipo de dados arquivo (FILE). Registro escolar: nome e notas bimestrais.
2. 4. 5. 6. 7. Programa modular abordando o tipo de dados arquivo ( FILE). Livro caixa: data de lanamento, histrico, tipo (D/R) e valor. Programa modular abordando o tipo de dados arquivo ( FILE). Processando os registros do Livro caixa. Este programa combina as 15 dezenas armazenadas em 'v', de 3 em 3, e grava as combinaes resultantes no arquivo texto Result.Txt. Lista os registros do arquivo "Func.dat", sem quebra de pgina, das seguintes formas: 1) do primeiro ao ltimo registro; 2) do ltimo ao primeiro registro.

Exerccios Propostos, (D) Arquivos (FILE). 1- Desenvolva uma estrutura modular baseada em menu com opes para criar e para ler um arquivo do tipo texto. 2- Desenvolva uma estrutura modular para ler um arquivo texto (caractere por caractere). 3- Os registros do arquivo de funcionrios (Func.dat) apresentam os seguintes campos: Nome (como uma cadeia de 35 caracteres) e Salrio. Faa um programa que leia o arquivo e aumente em 15% o salrio de todos os funcionrios que ganham menos de R$ 1.500,00. O programa tambm dever apresentar o total dos salrios dos funcionrios antes e depois do aumento autorizado. 4- Desenvolva um programa que faa a leitura do arquivo descrito no exerccio 2 e escreva no vdeo a quantidade de funcionrios que ganham abaixo de R$ 1.000,00, a quantidade de funcionrios que ganham entre R$ 1.000,00 e R$ 3.000,00 e a quantidade de funcionrios que ganham acima de R$ 3.000,00. 5- A seo de controle de produo de uma fbrica mantm um arquivo de registros de produo por funcionrios, denominado Producao.dat. Cada registro contm o nome do funcionrio (como uma cadeia de 35 caracteres), o sexo do funcionrio (M- masculino ou F- feminino) e o nmero de peas produzidas pelo funcionrio. Escrever um programa que calcule de escreva: a) a quantidade de peas produzidas pelos funcionrios do sexo masculino e feminino; b) o nome do(a) funcionrio(a) com a maior produo registrada (obs. no haver empates).

6- Uma empresa decidiu fazer um levantamento em relao aos candidatos que se apresentaram para preenchimento de vagas no seu quadro de funcionrios. Os registros dos candidatos foram armazenados no arquivo Candidat.dat e apresentam a seguinte estrutura: Nome (como uma cadeia de 35 caracteres), sexo (M- masculino ou F- feminino), idade e experincia no servio (S- sim ou N- no). Escrever um programa que calcule e escreva: a) o nmero de candidatos do sexo feminino e do sexo masculino; b) a idade mdia dos homens que j tm experincia no servio; c) a porcentagem dos homens com mais de 45 anos entre o total de homens; d) o nmero de mulheres que tm idade inferior a 35 anos e com experincia no servio. 7- Faa um programa que leia o arquivo descrito no exerccio 6 e crie um novo arquivo com a mesma estrutura e que dever armazenar os candidatos do sexo masculino com mais de 35 anos e que tem experincia no servio. 8- Visando fazer um levantamento sobre o destino dos veculos que trafegavam pelas rodovias do Sudoeste durante o feriado de 7 de setembro. A polcia rodoviria submeteu aos motoristas um questionrio com as seguintes perguntas: Para onde vai (destino) ? 1- Curitiba, 2- Litoral Paranaense, 3- Litoral Catarinense, 4- So Paulo e 5- Outros Locais Qual tipo de veculo ? 1- Automvel, 2- Caminho, 3- nibus e 4Outros Veculos. Os questionrios foram armazenados no arquivo Feriado.dat. Fazer um programa que calcule e escreva: a) o nmero de Automveis que tinham como destino o Litoral Catarinense; b) a porcentagem de Caminhes que tinham como destino a cidade de So Paulo; c) a porcentagem de nibus que trafegam pela rodovia. 9- Controle de Livro Caixa e realizado atravs de lanamentos que obedecem a seguinte estrutura: Situao do registro (X- ocupado e *apagado), Data do lanamento (item agregado com os campos: dia, ms e ano), Tipo do lanamento (D- Despesa e R- Receita), Histrico do Lanamento e Valor do lanamento (R$). Estes dados foram gravados em um arquivo denominado "Caixa.dat". A estrutura do registro deve ser definida na mesma ordem e conforme os tipos mais adequados as informaes descritas. Pede-se para desenvolver um programa que leia o arquivo calculando e escrevendo os seguintes resultados: a) a quantidade de lanamentos do tipo despesa realizados no ms de janeiro de 2005; b) a soma dos lanamentos de despesa e de receita realizados no ano de 2005; c) o saldo (saldo anterior + receitas despesas) do livro caixa no ms de maro de 2005; 10- A Cerealista "Fome Zero" no ano de 2003 recebeu a produo de soja e milho dos agricultores do Sudoeste do Paran e regio. O registro dos depsitos desses produtos foi feito atravs do seguinte documento: Nro do Depsito (nro seqencial), Nome do Agricultor (como uma cadeia de 30 caracteres), Sexo (M- masculino e F- Feminino), Dia do Depsito, Ms do Depsito, Produto (S- soja e M- milho), Peso Bruto Depositado (em kg) e Desconto (em kg). Estes dados foram gravados em um arquivo denominado "2003.dat". A estrutura do registro deve ser definida na mesma ordem e conforme os tipos mais adequados as informaes descritas. Pede-se para desenvolver um programa que leia o arquivo calculando e escrevendo os seguintes resultados:

a) a soma do peso lquido (Peso Bruto Depositado Desconto) depositado de soja; b) a soma do peso bruto depositado de milho no primeiro trimestre do ano; c) quantos depsitos de soja ou milho foram realizados por agricultores do sexo Feminino. 11- Faa um programa que leia o arquivo descrito no exerccio 10 e crie um arquivo texto com a relao de agricultores que depositaram soja (nome do agricultor e peso lquido). 12- Foi realizada uma pesquisa com um grupo de moradores do municpio de Pato Branco que responderam ao seguinte questionrio: . Sexo: M- masculino e F- feminino . Estado Civil: 0- solteiro, 1- casado, 2- vivo e 3- divorciado . Idade em anos. . Renda Anual (R$). As respostas a este questionrio foram gravadas em um arquivo denominado "Renda.dat". A estrutura do registro deve ser definida na mesma ordem e conforme o tipo das respostas sugeridas nas questes descritas acima. Pede-se para desenvolver um programa que leia o arquivo calculando e escrevendo os seguintes resultados: a) a quantidade de homens e mulheres entrevistados b) a quantidade de entrevistadas so "solteiras" c) a porcentagem dos homens divorciados em relao ao total de homens d) a renda anual mdia das mulheres casadas com idade entre 20 e 40 anos (inclusive) 13- A Pousada "Recanto das Andorinhas" decidiu fazer um levantamento quanto ao pas de origem dos hspedes estrangeiros. Para tanto levantou os seguintes dados destes hspedes: . Idade em anos. . Sexo: M- masculino e F- feminino. . Pas de Origem: 0- Uruguai, 1- Paraguai, 2- Argentina e 3- Chile.Estes dados foram gravados em um arquivo denominado "Pesquisa.dat". A estrutura do registro deve ser definida na mesma ordem e conforme o tipo das respostas sugeridas nas questes descritas acima. Pede-se para desenvolver um programa que leia o arquivo calculando e escrevendo os seguintes resultados: a) a quantidade de hspedes por pas de origem; b) a mdia etria das mulheres oriundas da Argentina; c) a quantidade de hospedes acima de 55 anos. 14- Faa um programa que leia o arquivo descrito no exerccio 13 e crie um arquivo texto com a relao dos hspedes oriundos do Chile (idade e sexo). 15- A Comisso Organizadora da EXPOPATO decidiu realizar um levantamento sobre o grau de satisfao do pblico que prestigiou o Show do Grupo de Rock Capital Inicial. Para tanto ao encerramento do respectivo evento artstico solicitou ao pblico que respondesse o seguinte questionrio: . Sexo: M- masculino e F- feminino . Gostou do Show: S- sim e N- no As respostas a este questionrio foram gravadas em um arquivo denominado Expopato.dat. A estrutura do registro deve ser definida na mesma ordem e conforme o tipo das respostas sugeridas nas questes descritas acima. Pede-se para desenvolver um programa que leia o arquivo calculando e escrevendo os seguintes resultados: . a quantidade de entrevistados do sexo masculino e feminino que no aprovaram o show; . o percentual de mulheres que gostaram do show em relao ao total de mulheres.

S-ar putea să vă placă și