• 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

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,

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

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

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

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