Aula de Revisão da Parte #1
INF01202
N Quando Assunto
1 2019-03-11 Paradigmas de programação, programa, algoritmo 2 2019-03-13 Algoritmo: atribuição, entrada e saída
Estrutura de programa C: scanf, printf
4 2019-03-18 Tipos de Dados, Declaração e tipos de variáveis Operadores e expressão aritmética e lógica 5 2019-03-20 Comando de Seleção If
7 2019-03-25 Aninhamento de comandos If Else
8 2019-03-27 Estrutura de seleção múltipla - comando switch 10 2019-04-01 Comando iterativo for
11 2019-04-03 Comandos iterativos while e do-while
13 2019-04-08 Comandos iterativos while e do-while Exemplos
15 2019-04-15 Tipos estruturados básicos arranjos de uma dimensão 16 2019-04-17 Classicação de vetores Strings: arranjos de caracteres 17 2019-04-22 Arranjos com mais de uma dimensão: matrizes 18 2019-04-24 Busca e classicação em matrizes
Conteúdos até o presente momento
N PDF KR
01 Introdução de Algoritmos e Programação 02 Estrutura de um Programa em C C1 04 Tipos de variáveis, expressões aritméticas C2 05 Comandos if e expressões lógicas C2, S3.2 07 Comandos if-else aninhados S3.3 08 Estrutura de seleção múltipla switch-case S3.4
10 Comando iterativo for S3.5
11 Comando iterativo for (bis) S3.5
13 Comando iterativo while S3.5, S3.6
15 Arranjos unidimensionais S1.6, S5.3
16 Strings S1.9, S5.5
17 Matriz S5.7
#include <stdio.h> int main () { int x, i, j; x = 8; for (i = 2; i < 5; i++) { j= 3; while (j > 0) { x = x+1; j = j-1; } printf( "X : %5d\n", x ); } printf("- Fim - \n"); return 0; }
Dado o programa acima, não identado, (1) apresente os valores e formato apresentados como saída. (2) Reescreva o programa acima de forma identada, ao lado do código, substituindo o FOR pelo comando WHILE e o WHILE por um comando DOWHILE, gerando as mesmas saídas.
(#1) Código
Substituir o FOR pelo comando WHILE substituir o WHILE pelo comando DO-WHILE
#include <stdio.h> int main () { int x, i, j; x = 8; i = 2; while (i < 5){ j= 3; do { x = x+1; j = j-1; }while(j > 0); printf( "X : %5d\n", x ); i++; } printf("- Fim - \n"); return 0; }
Algoritmo e programa para identicar a maior subsequência de números 0 ou 1. Por exemplo, para a sequência
0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 0
Deve ter como saída: I Posição 13 I Tamanho 5
I Sequência 0 0 0 0 0
(#2) Código
#include <stdio.h> intmain(){ intvet[]={0,0,1,1,0,1,0,1,0,0, 1,1,1,0,0,0,0,0,1,0, 1,0}; inttam= 22; inti; intmaior_tamanho= -1; intmaior_comeco= -1; intcomeco= 0; inttamanho= 1;intatual=vet[0];
for(i= 1; i<tam; i++){ if(vet[i]==atual){ tamanho++; if(tamanho>maior_tamanho) { maior_tamanho=tamanho; maior_comeco=comeco; } }else{ comeco=i; tamanho= 1; atual=vet[i]; } // printf("%d %d %d %d\n",
// vet[i], atual, comeco, tamanho); }
printf ("Posição %d\n", maior_comeco); printf ("Tamanho %d\n", maior_tamanho); printf ("Sequência "); for(i=maior_comeco; i<(maior_comeco+maior_tamanho); i++){ printf("%d ", vet[i]); } printf ("\n"); return0; } Posição 13 Tamanho 5 Sequência 0 0 0 0 0
Faça um programa que identica se um número inteiro qualquer é um número perfeito. Número perfeito é aquele cuja soma de seus divisores, exceto ele próprio, é igual ao número. O programa recebe um inteiro como entrada e fornece como saída uma mensagem dizendo se é perfeito ou não. Para identicar se é divisor use o resto da divisao: numero % divisor == 0
(#3) Código
#include <stdio.h> int main(){ int i; int valor; scanf("%d", &valor); int soma = 0;for (i = 0; i < valor; i++){ if (valor%i == 0){
soma += i; } }
if (valor == soma){
printf("É número perfeito.\n"); }else{
printf("Não é número perfeito.\n"); }
return 0; }
Dadas duas palavras (cadeia de caracteres) com no máximo 15 caracteres, vericar se uma é a permutação circular da outra, não importando se os caracteres individuais são maiúsculos ou minúsculos. Para se obter a permutação circular de uma cadeia, transfere-se o primeiro caracter do início para o m da mesma, o segundo caracter para a primeira posição e assim sucessivamente. Por exemplo, para a palavra AMORA, a permutação circular é MORAA.
Exemplo de uso #1
Entre com a primeira palavra: Amora Entre com a segunda palavra: Moraa
A segunda palavra eh permutação circular da primeira!
Exemplo de uso #2
Entre com a primeira palavra: Casa Entre com a segunda palavra: AMOR
A segunda palavra nao eh permutação circular da primeira!
(#4) Código
#include <stdio.h> #include <string.h> #include <ctype.h> #define SIZEPAL 15 intmain() {charp1[SIZEPAL+1], p2[SIZEPAL+1], c1, c2;
intflag, t1, t2, t, i; fgets(p1, SIZEPAL, stdin); t1=strlen(p1);
if(p1[t1-1]=='\n'){ p1[t1-1]='\0'; t1=strlen(p1); }
fgets(p2, SIZEPAL, stdin); t2=strlen(p2); if(p2[t2-1]=='\n'){ p2[t2-1]='\0'; t2=strlen(p2); } flag= 0; if(t2!=t1){ flag= 1; }else{ t=t2; for(i= 0; i<(t-1); i++){ c1=tolower(p1[i+1]); c2=tolower(p2[i]); if(c2!=c1){ flag= 1; } } c1=tolower(p1[0]); c2=tolower(p2[t-1]); if(c2!=c1){ flag= 1; } } if(flag== 0){ printf("[%s] _é_ permuta de [%s]\n", p2, p1); }else{
printf("[%s] não é permuta de [%s]\n", p2, p1); }
return0; }
Faça um programa que lê um conjunto de 20 valores inteiros e os armazena em 2 arrays unidimensionais conforme forem pares ou ímpares. Imprima o vetor com os elementos pares e em seguida aquele com os elementos ímpares. Cuide para imprimir somente os elementos válidos destes vetores. Lembre-se que o usuário tem liberdade de escolha para os 20 números, eles podem inclusive serem todos pares ou ímpares.
Abaixo exemplo de execução:
Entre com os 20 valores:
12 33 1 9 87 44 2 32 14 126 3 13 21 22 4 66 7 18 11 20 Elementos do array com valores pares:
12 44 2 32 14 126 22 4 66 18 20
Elementos do array com valores impares: 33 1 9 87 3 13 21 7 11
(#5) Código
#include <stdio.h> #define NVAL 20 intmain(){ intpares[NVAL]; intimpares[NVAL]; intn_pares= 0; intn_impares= 0; inti; intvalor;printf("Entre com os 20 valores:\n");
for(i= 0; i<NVAL; i++){ scanf("%d",&valor);
if(valor% 2 == 0){ pares[n_pares]=valor; n_pares++; }else{ impares[n_impares]=valor; n_impares++; } }
printf("Elementos do array com valores pares:\n");
for(i= 0; i<n_pares; i++){ printf("%d ", pares[i]); }
printf("\n");
printf("Elementos do array com valores impares:\n");
for(i= 0; i<n_impares; i++){ printf("%d ", impares[i]); } printf("\n"); return0; }
Fazer um programa que leia o valor de X no intervalo (-0.5,0.75) e de Y no intervalo [-1,1] e calcule e imprima na tela o resultado do somatório abaixo. Faça consistência dos valores de entrada.
S = X 25∗ Y1 1 + X24∗ Y2 2 + ... + X2∗ Y24 24 + X1∗ Y25 25 14 / 15
(#6) Código
#include <stdio.h> #include <stdlib.h> #include <math.h>
intmain() {
doubleS, termo, x, y, numx, numy;
intden, expx, expy, sinal;
do{ printf("Valor de x: "); scanf("%lf",&x); }while(x<= -0.5 ||x>= 0.75); do{ printf("Valor de y:"); scanf("%lf",&y); }while(y< -1 || y> 1);
expx= 25; expy= 1; sinal= 1; S= 0;
for(den= 1; den< 26; den++) { numx=pow(x, expx);
numy=pow(y, expy); termo=sinal*numx*numy/den; S+=termo; expx-= 1; expy+= 1; } printf("Valor de S: %lf\n", S); return0; }