Ir ao conteúdo

C Ponteiros, programção em C


Ir à solução Resolvido por Flávio Pedroza,

Posts recomendados

Postado

Exercício 2: Escreva um algoritmo em LINGUAGEM C que armazene na memória o seu RU e o valor 1234567, ambos digitados pelo usuário na tela. Em seguida, imprima na tela ambos RU usando ponteiros. O algoritmo também vai ter que comparar os dois RU usando ponteiros e imprimir na tela qual é o maior.

 

Até então é um exercício simples, mas me enrolei no uso dos ponteiros e não estou conseguindo fazer a comparação usando ponteiros, não sei o que fiz errado.

 

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


int main(int argc, char *argv[])
{
	int ru;
	int x;
	int *ponteiroRu = &ru;
	int *ponteiroX = &x;

	printf(" Insira seu Ru: \n");
	scanf("%d", ponteiroRu);
	ponteiroRu = &ru;

	printf(" Digite um valor : \n \n ");
	scanf("%d", ponteiroX);

	printf (" Ru do aluno: %d \n", *ponteiroRu);
	printf(" Valor do digitado: %d \n \n \n ", *ponteiroX );
	
	printf("%d", ponteiroRu);
	if (&ponteiroRu > &ponteiroX && &ponteiroRu != &ponteiroX )
	{

		printf(" O valor do Ru e maior que o valor X digitado ");

		if (ponteiroRu < ponteiroX && ponteiroRu != ponteiroX )
			printf(" O valor do Ru e menor que o Valor X digitado" );
	}
	else printf(" Os valores sao iguais. ");


	return 0;
}

Não consigo fazer comparação com os ponteiros.

  • Solução
Postado
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
	int ru;
	int x;
	int *ponteiroRu = &ru;
	int *ponteiroX = &x;
    
    printf(" Insira seu Ru: \n");
	scanf("%d",&ru);
	printf(" Digite um valor : \n \n ");
	scanf("%d",&x);

    printf (" Ru do aluno: %d \n", *ponteiroRu);
	printf(" Valor do digitado: %d \n \n \n ", *ponteiroX );

    if (*ponteiroRu > *ponteiroX)//se e maior, entao ja eh diferente
     printf(" O valor do Ru e maior que o valor X digitado ");
    else if (*ponteiroRu < *ponteiroX)  printf(" O valor do Ru e menor que o Valor X digitado" );
    else printf(" Os valores sao iguais. ");
    return 0;
}

Para dereferenciar (pegar o valor armazenado no endereço da memória referenciado pelo ponteiro), use "*".

Outra coisa, esse tipo de construção é ambígua

(a > b && a != b)

 

 

  • Curtir 2
Postado
1 hora atrás, Flávio Pedroza disse:

(a > b && a != b)

Bem observado! Se a for maior que b,  óbvio que a vai ser diferente de b :)

 

 

Postado

Estou com dificuldade em entender esses ponteiros, mas corrigi o codigo e está funcianando, na verdade eu fiz uma confusão, eu achei que para pegar o valor usava se o &, mas esse é o endereço. 

 

Na outra eu fiz confusão mesmo, obrigado.

Postado
3 horas atrás, Matheus Hudson disse:

Na outra eu fiz confusão mesmo

Olá, @Matheus Hudson Pode ficar tranquilo pois a gente sabe disso

E outra: Só erra quem faz! 

Forte abraço!

Continue firme com seus estudos! Você está no caminho certo :)

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...