Universidade Federal Rural de Pernambuco - UFRPE Departamento de Estatística e Informática - DEINFO DISCIPLINA: Paradigmas de Programação PROFESSOR: Gláucya Carreiro Boechat Prática - Linguagem C Exercícios - Desenvolvendo um pequeno projeto Siga as instruções abaixo: 1) Baixe, instale e entre no ambiente DevC++ (http://sourceforge.net/project/downloading.php?groupname=devcpp&filename=devcpp-4.9.9.2_setup.exe&use_mirror=ufpr) 2) Vá em Arquivo -> Novo -> Projeto. Escolha a opção “Console Application” 3) Escolha o caminho e salve o projeto com o nome “primeiro”. Aparecerá automaticamente no editor um arquivo (main.cpp) onde podemos encontrar a função main. 4) Altere o arquivo main.cpp deixando o código como abaixo e salve o arquivo: #include <stdio.h> void impsaudacao() { puts("Boa Tarde"); } int main() { printf("Meu primeiro projeto em C\n"); impsaudacao(); getchar(); } 5) Vá em Executar -> Compilar (ou pressione Ctrl+F9). 6) Escolha a opção Executar -> Compilar (ou pressione Ctrl+F10) e execute o programa. 7) Alterne o arquivo main.cpp e declare uma variável local à função main chamada NomeUsr através da seguinte linha de código: char NomeUsr[21]; 8) Peça para o usuário informar o seu nome, através das seguintes linhas: printf("Informe o seu Nome: "); gets(NomeUsr); 9) Alterne a função impsaudacao() e modifique a linha puts("Boa Tarde") para: printf("Boa Tarde %s\n", NomeUsr); 10) Refaça o projeto (Compilar). Verifique a janela de mensagens. Qual o motivo do erro de compilação e como consertá-lo? 11) Conserte o erro e execute a aplicação! 12) Crie um segundo projeto com o nome “segundo”. 13) Altere o arquivo main.cpp deixando-o com a seguinte implementação: #include <stdio.h> #include <stdlib.h> int main() { int num1, num2; int getnum(); puts("Digite 2 numeros:"); printf("Numero 1: "); num1 = getnum(); pr intf("Numero 2: "); num2 = getnum(); printf("O produto dos dois numeros vale: %d\n", num1*num2); return (0); } int getnum() { char s[80]; gets(s); /* Le string s */ return (atoi(s)); /* Converte string s para inteiro e devolve o valor convertido*/ } 14) Compile e execute o programa. Que falhas você visualiza neste programa. Comente. Programa para gerar tabela ASCII 15) Crie um terceiro projeto. É importante a criação de diversos projetos pois um projeto (aplicação) não pode conter mais de uma função main( ). 16) Digite main.cpp as seguintes linhas de código em C: #include <stdio.h> main() { int i; int linha = 5; puts("Tabela ASCII\n"); puts("Decimal Hexa Caracter"); for (i = 0; i < 256; i = i + 1) { printf("%5.3d %4.2X %c\n", i, i, i); linha = linha + 1; if (linha == 25) { if (getchar() == 's') break; linha = 1; } } return (0); } 17) Salve o arquivo, compile e teste o programa. Alteração do programa de tabela ASCII 18) Altere o código do programa de geração da tabela ASCII para permitir que o usuário estabeleça o início e o final da tabela. Dica: use a função scanf( ) para ler estes valores. Teste e execute o programa. 4. Exercícios Complementares 1) Monte um programa em C para executar cada um dos comandos abaixo. Veja a saída de cada comando e explique porque ela teve este formato. a) printf("|%10s|\n", "string"); b) printf("|%-10s|\n", "string"); c) printf("|%5d|\n", 100); d) printf("|%-5d|\n", 200); e) printf("|%5.2f|\n", 3.141592); f) printf("|%-10.3s|\n", "string"); g) printf("|%8d|\n", 40000); h) printf("|%8ld|\n", 40000); i) printf("|%10.5d|\n", 102); j) printf("|%.5d|\n", 102); k) printf("|%010d|\n", 102); l) printf("|%010.5d|\n", 102); m) printf("|%5.2Lf|\n", 314.1592); n) printf("|%5.2Le|\n", 314.1592L); 2) Descreva como poderia ser feito um programa para montar uma tabela ASCII para o usuário. 3) Monte um programa com o trecho de código abaixo, veja sua saída e explique o seu funcionamento. char ch; ch = getchar(); /* Digite 123<Enter> */ putchar(ch); putchar(getchar()); printf("%c %d\n", getchar()); printf("%d\n", getchar()); putchar(getchar()); 4) Escreva um programa em C que leia os coeficientes de uma equação de 2º Grau, calcule e mostre suas raízes, caso existam. 5) Informe o resultado finais das variáveis do seguinte código #include <stdio.h> int x[10] = {2, 4, 1, 8, 6, 7, 3, 9, 2, 5}; permutar(a,b) int *a,*b; { int auxiliar; auxiliar = *a; *a = *b; *b = auxiliar; } main() { int i, j, aux, m, nm1, n = 10; nm1 = n - 1; for (i = 0; i < nm1; i++) { m = i; for (j = i + 1; j < n; j++) if (x[j] < x[m]) m = j; permutar(&x[i], &x[m]); } for (i = 0; i < n; i++) printf(" x[%d] = %d", i, x[i]); } 6) Coloque a função MDC( ) com recursividade #include <stdio.h> int mdc(m, n) int m, n; { int r; do { r = m % n; m = n; n = r; } while(r != 0); return(m); } main() { int m = 120, n = 9, mdc(m,n); printf("\n o MDC de %d e %d e ", m, m, mdc(m, n)); } 7) Informe o valor das variáveis após a execução dos seguintes códigos. void troca(); void troca(); main() main() { { int x=10,y=20; int x=10,y=20; troca(&x,&y); troca(x,y); printf("x=%d y=%d\n",x,y); printf("x=%d y=%d\n",x,y); } } void troca(a,b) void troca(a,b) int *a,*b; int a, b; { { } int temp; int temp; temp=*a; temp = a; *a=*b; a = b; *b=temp; b= temp; } 8) Escreva uma função para trocar o conteúdo de duas strings informadas pelo usuário. Utilize a função strcpy() 9) Fazer um programa para receber valores inteiros X, Y e Z do usuário e determinar se estes valores podem formar os lados de um triângulo. Em caso afirmativo, informar se o triângulo é eqüilátero, isósceles ou escaleno. 10) Escreva uma função para comparar duas strings informadas pelo usuário. 11) Fazer um programa no qual o usuário vai entrando sucessivamente com valores positivos. Quando o usuário entrar com um valor negativo o programa pára de pedir valores e calcula a média dos valores já fornecidos. 12) Faça um programa que receba do usuário o número de lados e o tamanho dos lados de um polígono regular e imprima o valor da área do polígono. O programa deve utilizar uma estrutura switch-case para decidir que fórmula de cálculo utilizar, de acordo com o número de lados do polígono. Se o número de lados for diferente de 3, 4 ou 6 o programa deve informar: “não sei calcular a área”. Áreas: a. Triângulo: A = L*L*1.73/4 b. Quadrado: A = L*L c. Hexágono: A = 6*L*L*1.73/4;