Ir ao conteúdo

Exercicio simples de C


Raphael Amorim

Posts recomendados

Postado

Boa noite, estou com dúvida sobre como fazer um exercicio em C:

Escreva um programa que leia diversos pares de valores inteiros. Cada par (x,y) representa um intervalo de valores inteiros, onde x e y podem ser positivos, nulos, negativos, iguais e/ou diferentes (neste caso, tanto x < y como y < x são entradas válidas). Seu programa deve ler vários pares de valores, até que o par 0 0 seja digitado, indicando o fim da entrada do programa (par 0 0 não faz parte da entrada). Utilize o comando: scanf ("%d %d", &x, &y);

Ao final, seu programa deve imprimir, em forma de intervalo, a interseção de todos os intervalos lidos; ou seja, o intervalo que enteja contido em todos os intervalos digitados. Veja os exemplos abaixo:

ENTRADA -100 40 10 -10 17 0 0 0

SAÍDA Intersecao: [0,10]

Este é o enunciado, eu ja coloquei a condição para digitar vários valores, mas não sei como faço para armazená-los e compará-los, para dar a intersecção x.x

Adendo: Não tive aula de vetores nem struct, x.x não sei mesmo como prosseguir daqui =\

Postado

Olá, para ler os números até os dois serem iguais a zero utilize um do-while dessa forma:


do {
CORPO DO PROGRAMA;
} while (x != 0 && y != 0);

Bom, eu pensei na resolução desse problema e a única coisa que me veio a cabeça foi criar outras duas variáveis x' e y' que guardassem o valor de x e y que foram pegos no último scanf e comparasse com os x e y que foram pegos no scanf do loop atual, assim pegando todas as interseções.

Postado

Vish, que marcação .. tava viajando achando que era algo louco.

Seria isso ?

#include<stdio.h>

void DetectaIntersecao(int *vX, int *vY);
unsigned int IND = -1;

int main ()

{
int vX[10];
int vY[10];

do
{
printf("\nDigite os valores de X e Y: ");
scanf("%d %d", &vX[IND+1], &vY[IND+1]);
IND++;
}
while ((vX[IND] !=0) || (vY[IND] !=0));

DetectaIntersecao(vX,vY);
}

void DetectaIntersecao(int *vX, int *vY) {
int contX;
int contY;
for(contX=0; contX < IND ; contX++) {
for(contY=0; contY < IND ; contY++) {
if(vX[contX] == vY[contY]) {
printf("Intersecao: %d\n",vX[contX]);
}
}
}
}

Postado
Opa, boa tarde! é isso sim cara! So que a parte de intersecção que não foi aqui quando executei o programa, mas MUITISSIMO obrigado, uma parte dele ja foi (:

Boa tarde.

Como assim não foi ? Gerou algum erro ?

[]'s

Postado

Não, erro nenhum só que ele não mostra a interseção

Alias, desculpe, ele até mostra, mas no exemplo do exercicio, não sai xD

Bem, novamente, muito obrigado! Estou realmente olhando o código agora, a tarde eu estava um tanto ocupado. Está funcionando direitinho, eu só preciso modificar o esquema de printf que tem que ser Intersecao: [valorx, valory] e quando não houver imprimir que não há interseção, mas isso é simples. o que eu estou estranhando é que o primeiro exemplo ele da interseção 0, 10. Como se o sinal do valor não importasse [10 é igual a -10, 100 a -100 e etc].

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!