Buscar

Sequencia Cheia

Uma sequência de n > 0 números inteiros é chamada de cheia se os valores absolutos das diferenças entre os elementos consecutivos representam todos os possíveis valores entre 1 e n - 1.
Exemplo: 1 4 2 3 é uma sequência cheia, porque os valores absolutos das diferenças entre seus elementos consecutivos são 3, 2 e 1, respectivamente.
Observe que esta definição implica que qualquer sequência contendo exatamente um número inteiro é uma sequência cheia.
 

(a) Escreva uma função com a seguinte interface:

int uns(int n, int cont[MAX])

Que receba um número inteiro n e um vetor de números inteiros com n elementos, e devolva 1 se cada elemento do vetor é igual a 1. Caso contrário, a função devolve 0.

(b) Escreva um programa que receba um número inteiro k > 0 que representa a o número de casos de teste. Para cada caso de teste, receba um número  nteiro n > 0 e uma sequência de n números inteiros, com 1 <=n <= 100, e verifique se a sequência é cheia ou não. Em caso positivo, imprima C para essa entrada. Caso contrário, imprima N . Use a função do item (a)

https://www.passeidireto.com/lista/68789632

💡 3 Respostas

User badge image

Maicon

Ok
0
Dislike0
User badge image

Maicon

Opa
0
Dislike0
User badge image

Andre Smaira

(a) Como se pede, vamos fazer uma função que verifica se todos os elementos de um vetor são a unidade:

int uns(int n, int cont[MAX]) {

int i;// Contador

for(i=0; i

if(cont[i]!=1)// Se o elemento não for 1

return 0;// Devolve 0

return 1;// Caso todos sejam 1, devolve 1

(b) O programa abaixo, devidamente comentado, faz o que se pede:

#include // printf, scanf

#define MAX 100// n máximo

int abs(int x) {// Função módulo inteiro

return x<0 ? -x : x;

int main() {// Função principal

int k;// Número de casos de teste

int i;// Contador

int n;// Número de elementos

int pronto;// Resposta encontrada?

int a,b;// os dois valores correntes da sequência

int freq[MAX];// Frequência das diferenças

scanf(" %d", &k);// Lê k

while(k-->0) {// Enquanto k for positivo

pronto = 0;// Resposta não encontrada

scanf(" %d", &n);// Lê n

scanf(" %d", &a);// Lê o primeiro elemento

for(i=1; i

freq[i] = 0;// Limpa aa frequencia equivalente

for(i=1; i

int d;// Diferença

scanf(" %d", &b);// Lê elemento

if(pronto)// Se resposta encontrada

continue;

d = abs(a-b);// Diferença

if(d>n-1 || d==0) { // Se diferença for inválida

printf("N\n");

pronto = 1;// Resposta encontrada

continue;

freq[d] += 1// Aumenta 1 na frequência

if(!pronto)// Se resposta ainda não encontrada

if(uns(n-1,freq))// Se somente uns

printf("C\n");// Cheio

else// Senão

printf("N\n");// Não

return 0;// Finaliza o programa

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta.

User badge image

Outros materiais