• Nenhum resultado encontrado

PN LISTA05 RESPOSTAS

N/A
N/A
Protected

Academic year: 2021

Share "PN LISTA05 RESPOSTAS"

Copied!
11
0
0

Texto

(1)

EXERCÍCIOS – LISTA 5

[1]

Nos programas abaixo, qual será a saída mostrada na tela ao se executar o programa?

Não é necessário incluir a parte onde o system(“PAUSE”) solicita que se pressione

qualquer tecla para continuar:

(a)

#include <stdlib.h> #include <stdio.h> #include <string.h>

int main(void)

{

char vet[9] = "TESTANDO"; int i; strcpy(vet, "FOI"); puts(vet); system("PAUSE"); return 0; }

(b)

#include <stdlib.h> #include <stdio.h> int main(void) {

char vet[9] = "TESTANDO";

putchar(vet[3]); system("PAUSE"); return 0; }

(c)

#include <stdlib.h> #include <stdio.h> int main(void) {

char vet[9] = "TESTANDO"; int i;

for(i = 0; vet[i] != 'N'; i++) putchar(vet[i]);

system("PAUSE");

return 0;

(2)

(d)

#include <stdlib.h> #include <stdio.h>

int main(void)

{

char vet[9] = "TESTANDO"; int i;

for(i = 0; vet[i] != 'N'; i++) putchar(vet[7-i]);

system("PAUSE");

return 0;

}

(e)

#include <stdlib.h> #include <stdio.h> int main(void) { int vet[3][3] = { 1, -3, 7, 5, -3, 9, 4, 2, -8}; int i; printf("%d", vet[1][2]); system("PAUSE"); return 0; }

(f)

#include <stdlib.h> #include <stdio.h> int main(void) { int vet[3][3] = { 1, -3, 7, 5, -3, 9, 4, 2, -8}; int i = 2; do { printf("%d ", vet[i][i]); i--; }while(i <= 0); system("PAUSE"); return 0; }

(3)

(g) #include <stdlib.h> #include <stdio.h> int main(void) { int vet[3][3] = { 1, -3, 7, 5, -3, 9, 4, 2, -8}; int i = 2; while(i >= 0) { printf("%d ", vet[i][i]); i--; } system("PAUSE"); return 0; } (h) #include <stdlib.h> #include <stdio.h> int main(void) { int vet[3][3] = { 1, -3, 7, 5, -3, 9, 4, 2, -8}; int i, j; for(i = 0; i < 3; i++) {

for(j = 2; j >=0; j--) printf("%d ", vet[j][i]); putchar('\n');

}

system("PAUSE"); return 0;

}

(i) #include <stdlib.h> #include <stdio.h> #include <string.h> int main(void) { char str01[100] = "100", str02[100] = "200"; int i, j; strcat(str01, str02); printf("%d\n", strlen(str01)); system("PAUSE"); return 0; }

(4)

(j)

#include <stdlib.h> #include <stdio.h> #include <string.h> int main(void) { char str01[100] = "100", str02[100] = "200"; int i, j; strcat(str01, str02); printf("%s ", str02); printf("%s ", str01); system("PAUSE"); return 0; }

(k)

#include <stdlib.h> #include <stdio.h> #include <string.h> int main(void) { char str01[4][4] = { 2, 4, -5, 6, 6, 4, -4, 23, 5, 23, 45, 56, 34, -23, 5, -5}; int i = 0, j = 0; for(i = 0; i < 4; i++) { do { printf("%d ", str01[i][j]);

if( (str01[i][j] % 2) != 1 ) break;

j++; }while(j < 2); } system("PAUSE"); return 0; }

(5)

[2]

Escreva uma função que, quando chamada, retorna

um número randômico ímpar (que

pode assumir valores de zero até 99).

#include <stdlib.h> #include <stdio.h> int gera(void) { int num; do { num = rand() % 100;

}while((num % 2) == 0); //enquanto o numero for par, gera um numero

return num; //quando for ímpar a condição retorna falso e a função retorna }

int main(void) {

int i;

srand(time(NULL));

for (i = 0; i < 20; i++) printf("%d ", gera());

puts("\nPerceba que somente numeros impares sao gerados..."); system("PAUSE");

return 0;

}

[3]

Escreva um programa que leia do teclado um vetor com dez números inteiros. Após, o

programa deve copiar apenas os valores ímpares para outro vetor. (quando os números

forem pares no vetor de origem, o programa deverá zerar o elemento do vetor de destino).

#include <stdlib.h>

#include <stdio.h> int main(void) {

int original[10], copiado[10];

int i;

for (i = 0; i < 10; i++)

{

printf("Digite o indice [%d] do vetor: ", i); scanf("%d", &original[i]);

}

for (i = 0; i < 10; i++)

{

if( (original[i] % 2) == 1 ) copiado[i] = original[i];

else copiado[i] = 0; //se não é impar é zerado...

}

for (i = 0; i < 10; i++) printf("%6d", original[i]); //imprime original

putchar('\n');

for (i = 0; i < 10; i++) printf("%6d", copiado[i]); //imprime copiado

putchar('\n'); system("PAUSE");

return 0;

(6)

[4]

Escreva um programa que gere uma matriz 4x4 de elementos randômicos ímpares de 0 até

99. Utilize, a função desenvolvida no exercício 2 para realizar mais facilmente a tarefa.

#include <stdlib.h> #include <stdio.h> int gera(void) { int num; do { num = rand() % 100;

}while((num % 2) == 0); //enquanto o numero for par, gera um numero

return num; //quando for ímpar a condição retorna falso e a função retorna

} int main(void) { int i, j, mat[4][4]; srand(time(NULL)); for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { mat[i][j] = gera();

printf("%3d", mat[i][j]); //imprimo enquanto gero a matriz...

} putchar('\n'); } system("PAUSE"); return 0; }

[5]

Escreva uma função que gere um número randômico inteiro positivo ou negativo (50% de

chance de ser positivo e 50% de chance de ser negativo) de 0 até o número passado como

parâmetro da função. Por exemplo, quando a função for chamada e o parâmetro passado

para a função for 10, a função deverá gerar um número randômico entre -10 e 10,

incluindo estes.

#include <stdlib.h> #include <stdio.h> int gera_pn(int i) { int num; num = rand() % 100;

if( rand()%2 ) num = -num; //50% de ser negativo...

return num; } int main(void) { int i; srand(time(NULL));

for (i = 0; i < 30; i++) printf("%4d", gera_pn(10)); putchar('\n');

system("PAUSE"); return 0;

(7)

[6]

Faça um programa que gere um vetor randômico de 1000 números inteiros (utilize a

função do exercício anterior). Após, o programa deverá normalizar o vetor (dividir todos os

elementos do vetor pelo módulo do maior elemento).

#include <stdlib.h> #include <stdio.h> int gera_pn(int i) {

int num;

num = rand() % (i+1);

if( rand()%2 ) num = -num; //50% de ser negativo...

return num; }

int main(void) {

int vet[1000], max, i;

float vet_norm[1000];

srand(time(NULL));

for (i = 0; i < 1000; i++) vet[i] = gera_pn(10);

for (i = 0; i < 1000; i++) printf("%4d", vet[i]);

putchar('\n');

printf("\nNormalizando...");

max = abs(vet[0]);

for (i = 1; i < 1000; i++) if(abs(vet[i]) > max) max = abs(vet[i]);

printf("\nValor maximo: %d\n",max);

for (i = 0; i < 1000; i++) { vet_norm[i] = (float)vet[i]/max; printf("%8.2f", vet_norm[i]); } system("PAUSE"); return 0; }

(8)

[7]

Escreva um programa que leia uma matriz 4x4 e obtenha o maior elemento múltiplo de 3

da matriz, imprimindo, além do elemento, seus índices na tela.

#include <stdlib.h> #include <stdio.h> int main(void) {

int mat[4][4], i, j, im, jm, max, controle = 0;

for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) { printf("Digite o indice [%d][%d]: ", i, j); scanf("%d", &mat[i][j]); } } for (i = 0; i < 4; i++) { for (j = 0; j < 4; j++) {

if( ((mat[i][j] % 3) == 0)) //se é multiplo de 3...

{

if (controle == 0)

{

max = mat[i][j]; //é o primeiro multiplo encontrado... im = i;

jm = j;

controle = 1; //variável indica que já encontrei algum multiplo

//só entrará uma vez nesse if o programa inteiro... }

else {

if( mat[i][j] > max ) { max = mat[i][j]; im = i; jm = j; } } } } }

if(controle == 0) printf("Nao existem multiplos de 3 na matriz\n");

else {

printf("O maior multiplo de tres encontrado e' o elemento "); printf("[%d][%d], valendo %d\n", im, jm, max);

}

system("PAUSE");

return 0;

(9)

[8]

Crie um vetor com dez strings. DICA: É uma matriz com duas dimensões.

#include <stdlib.h> #include <stdio.h> int main(void) { char str[10][100] = { "QUANTO", "MAIS", "AS COISAS", "MUDAM,", "MAIS", "E'", "A", "MESMA", "COISA", "!!!" }; int i; for(i = 0; i < 10; i++) { printf("%s ", str[i]); } putchar('\n'); system("PAUSE"); return 0; }

(10)

[9]

Leia dez strings do teclado e ordene-as em ordem alfabética utilizando a função strcmp.

#include <stdlib.h> #include <stdio.h> #include <string.h> int main(void) { char str[10][100], straux[100]; int i, trocas = 0;

printf("Digite 10 strings... maximo 100 caracteres, somente maiusculas:\n");

for(i = 0; i < 10; i++) gets(str[i]);

do { trocas = 0; for(i = 1; i < 10; i++) { if(strcmp(str[i-1],str[i]) > 0) { trocas++; strcpy(straux, str[i]); strcpy(str[i], str[i-1]); strcpy(str[i-1], straux); } } }while(trocas != 0); for(i = 0; i < 10; i++) { puts(str[i]); } system("PAUSE"); return 0; }

(11)

[10]

Faça um programa que leia do teclado dois números complexos na forma a+jb. O programa

deverá somar os dois números e imprimir o resultado na tela. Utilize as funções da

biblioteca padrão para separar e obter a parte real e a parte imaginária do número.

#include <stdlib.h> #include <stdio.h> #include <string.h> int main(void) {

char num[20], aux[10];

int Re1, Im1, Re2, Im2, somaRe, somaIm, i = 0;, j; printf("Digite um numero com o formato a+jb: "); gets(num);

//######## obtendo parte real do primeiro número

while(num[i] != 'j') //acha a posição do caractere j...

{

aux[i] = num[i]; i++;

}

i--; aux[i] = '\n'; //recua uma posição pois está em j...

Re1 = atoi(aux); //converte para número

//######## obtendo parte imaginaria do primeiro número

for(j = 0; num[i] != '\0'; i++) {

if(num[i] == 'j') continue; //"pula" o j...

aux[j] = num[i]; //observe que i não foi inicializado

j++; //somente j...

}

aux[j] = '\n'; //adiciona caractere nulo...

Im1 = atoi(aux); //converte para número

printf("Digite outro numero com o formato a+jb: "); gets(num);

//######## obtendo parte real do segundo número

i = 0;

while(num[i] != 'j') //acha a posição do caractere j...

{ aux[i] = num[i]; i++; } i--; aux[i] = '\n'; Re2 = atoi(aux);

//######## obtendo parte imaginaria do segundo número

for(j = 0; num[i] != '\0'; i++) { if(num[i] == 'j') continue; aux[j] = num[i]; j++; } aux[j] = '\n'; Im2 = atoi(aux); //######## Somando...

somaRe = Re1+Re2; somaIm = Im1+Im2; itoa(somaRe, num, 10);

if(somaIm > 0) strcat(num, "+j"); else strcat(num, "-j");

itoa(abs(somaIm), aux, 10); strcat(num, aux);

printf("SOMA = %s", num); system("PAUSE");

return 0; }

Referências

Documentos relacionados

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Nesse contexto verifica-se a necessidade de busca por novas metodologias para o ensino de geografia como disciplina inclusiva, tendo como suporte a utilização de indicadores

De acordo com os resultados obtidos em modelos animais, os agentes quimioterápicos são mais efetivos se usados combinados em pacientes com tumores de pequeno volume,

1- OBJETO: CONTRATAÇÃO DE EMPRESA ESPECIALIZADA PARA O FORNECIMENTO PARCELADO DE PRODUTOS ALIMENTÍCIOS E DE COPA-COZINHA, E MATERIAIS DE LIMPEZA E HIGIENIZAÇÃO,

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

Dependendo do tipo de dados (observações, questionários, entrevistas, documentos, testes, etc.), é possível encontrar respostas para problemas diferentes. Na análise dos

A quinta alteragao diz respeito a carta de ordem, carta precatoria e carta rogatoria, que podem ser expedidas por meio eletronico, situacao em que a assinatura do juiz devera

The following hypotheses were tested were: (1) there would be differences in filler particles characteristics between bulk- fill and conventional composites; (2) LT would