Jump to content
Zweiss

Vector com funções com um erro

Recommended Posts

Zweiss

Tenho aqui um código de um vector com funções mas ao ler o código ele não me está a mostrar a o valor associado à posição do vector. Insiro o tamanho do vector (ex: 3), depois os valores que quero atribuir (ex: 2 9 20) e depois devia aparecer isto:
O valor 1: 2
O valor 2: 9
O valor 3: 20

Mas há frente de valor não me aparece os números que inseri.

O código é este (a parte da soma está incompleta, presumo eu).

 

Já agora alguém aqui percebe de UML?

//criar uma função que pede um valor ao utilizador, este valo vai ser o tamanho do nosso vector.
//declarar um vector com o tamanho inserido por este.
//preencher o vector com valores inseridos pelo utlizador (funcão)
//Uma funão que recebe como parâmetros, o vector e um inteiro, com o objectivo de percorrer o vector.
//Outra função para mostrar o conteúdo da posição do vector, esta função recebe um inteiro e mostra-o de seguida.

#include <stdio.h>

int pedir_tamanho();
int pedir_valor_vect(int n);
void func(int vector[], int tamanho);
void func_mostra(int vector[], int tamanho);
void mostra_int (int pos_vect);

int main ()
{
	setvbuf (stdout, NULL, _IONBF, 0);

	int tam = pedir_tamanho ();
	int vect[tam];
	func (vect, tam);


	int i, soma=0;

	//somar as posições do vetor
			for (i=0; i<tam; i++)
			{
				soma=soma+vect[i];
			}

	func_mostra (vect, tam);
}

//pedir o tamanho do vetor
int pedir_tamanho (int tama)
{
	printf ("Insira o tamanho do vector a criar: \n");
	scanf ("%d", &tama);

	return tama;
}


void func(int vector[], int tamanho)
{
	int i;

	for (i=0; i<tamanho; i++)
	{
		vector[i]=pedir_valor_vect(i);
	}
}

//mostrar o vetor
void func_mostra(int vector[], int tamanho)
{
	int i;

		for (i=0; i<tamanho; i++)
		{
			mostra_int(vector[i]);
		}
}

//pedir valores
int pedir_valor_vect(int n)
{
	int a;
	printf ("Insira numero %d: \n", n);
	scanf ("%d", &a);
	return a;
}

//mostra a posicão e o número
void mostra_int (int pos_vect)
{
	printf ("O valor %d: \n", pos_vect);
}

 

Edited by Zweiss

Share this post


Link to post
Share on other sites
HappyHippyHippo

void mostra_int (int pos_vect) : a função pede a posição do vector, mas não tem vector para obter os dados

mostra_int(vector[ i ]) : a função pede a posição do vector, mas o que lhe estas a dar é o valor em si

printf ("O valor %d: \n", pos_vect) : a função está a apresentar o valor dado que ao ler parece ser a posição do vector (que não é o que foi dado), e não paresenta mais nada


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Zweiss
Em 2017-6-2 às 21:38, HappyHippyHippo disse:

void mostra_int (int pos_vect) : a função pede a posição do vector, mas não tem vector para obter os dados

mostra_int(vector[ i ]) : a função pede a posição do vector, mas o que lhe estas a dar é o valor em si

printf ("O valor %d: \n", pos_vect) : a função está a apresentar o valor dado que ao ler parece ser a posição do vector (que não é o que foi dado), e não paresenta mais nada

Resumindo nem tu consegues resolver aquilo que o prof pôs no quadro. O código estava a correr bem até o prof decidir que era preciso fazer mais 2 funções e depois nem o código inteiro mostrou. Quando tiver aulas peço ao colega do lado o código dele já que estava a correr bem.

 

Este código copiei da projecção que o prof fez.

void mostra_int (int pos_vect)
{
	printf ("O valor %d: \n", pos_vect);
}

 

Share this post


Link to post
Share on other sites
HappyHippyHippo
55 minutes ago, Zweiss said:

Resumindo nem tu consegues resolver aquilo que o prof pôs no quadro.

haha ... achas mesmo ?

o prof pos isso, mas é necessário alterar para apresentar o valor pretendido


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo

percenbendo que o que o professor escrever no quadro é algo para alterar, e como tal, não é lei escrita em pedra.


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Zweiss
21 horas atrás, HappyHippyHippo disse:

percenbendo que o que o professor escrever no quadro é algo para alterar, e como tal, não é lei escrita em pedra.

Não é para alterar nada pk o prof resolveu o exercício o problema está que não deu tempo de uma pessoa passar as coisas em condições antes se lembrar de somar as posições dos vectores. O exercício foi projectado na parede só que não foi o código todo completo.

Share this post


Link to post
Share on other sites
HappyHippyHippo
1 hour ago, Zweiss said:

Não é para alterar nada pk o prof resolveu o exercício o problema está que não deu tempo de uma pessoa passar as coisas em condições

então a explicação é simples : não passaste bem o que estava projectado

não existem milagres em programação, ou alteras/abordas os pontos que disse, ou reescreves o programa (até ficaria melhor), ou esqueçe em resolver o problema.

 

ps : vou-te dizer uma coisa, quase como um desabafo, ou começas a pensar fora da caixa (algo que muita gente que vem aqui ao forum pedir ajuda não faz) ou o teu caminho na programação vai ser muito complicado. o que quero dizer é que, ou começas a pensar por ti, mesmo duvidando directamente o que o professor diz, ou não deixarás de ser um code-monkey, nunca um programador a sério


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Zweiss

Não faço intenção de seguir programação, quando me inscrevi no curso pensei que fosse outra coisa. Uma turma que começou com quase 20 alunos vai ficar reduzida a 8.

Um curso destes devia ser de 2 anos no mínimo e isto só vai durar um ano e com disciplinas para fazer o 12º por isso é dar a matéria as pressas e se sabes sabes e se não sabes vira-te.

Eu as 3 primeiras partes do código fiz a sós e depois perdi me.

Share this post


Link to post
Share on other sites
HappyHippyHippo
4 hours ago, Zweiss said:

Não faço intenção de seguir programação, quando me inscrevi no curso pensei que fosse outra coisa. Uma turma que começou com quase 20 alunos vai ficar reduzida a 8.

Um curso destes devia ser de 2 anos no mínimo e isto só vai durar um ano e com disciplinas para fazer o 12º por isso é dar a matéria as pressas e se sabes sabes e se não sabes vira-te.

Eu as 3 primeiras partes do código fiz a sós e depois perdi me.

mas presuponho que queiras acabar o curso, certo ?

mas tentaste ao menos abordar os pontos que referi ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Zweiss
2 horas atrás, HappyHippyHippo disse:

mas presuponho que queiras acabar o curso, certo ?

mas tentaste ao menos abordar os pontos que referi ?

Na maneira como isto anda duvido que acabe o curso, agora é só a espetar com matéria e toca a andar. Na programação tenho passado com notas 10-11. Em UML foi o desastre total.

 

Sim abordei os pontos que referiste e não cheguei a conclusão nenhuma, o que me vêm a cabeça é o facto do mostra_int não ser declarado no main. Hoje perguntei a alguns amigos se tinham conseguido passar o código completo e todos disseram que não só o meu vizinho do lado (direito) é que consegui apanhar tudo.

 

Tenho andado de volta do trabalho de diagramas de UML que é para apresentar e depois ir a "julgamento".

Share this post


Link to post
Share on other sites
HappyHippyHippo

e se eu dissesse que a função mostra_int deveria receber o vector e a posição do elemento a ser apresentado ? achas que já consegias resolver ?

(sim, o enunciado apresentado no código do primeiro post está errado, seja o que pedi o correcto ou outra coisa semelhante, isto porque se queres apresentar dois valores, dois valores são necessários)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Zweiss
11 horas atrás, HappyHippyHippo disse:

e se eu dissesse que a função mostra_int deveria receber o vector e a posição do elemento a ser apresentado ? achas que já consegias resolver ?

(sim, o enunciado apresentado no código do primeiro post está errado, seja o que pedi o correcto ou outra coisa semelhante, isto porque se queres apresentar dois valores, dois valores são necessários)

Isto assim:

#include <stdio.h>

int pedir_tamanho();
int pedir_valor_vect(int n);
void func(int vector[], int tamanho);
void func_mostra(int vector[], int tamanho);
void mostra_int (int pos_vect,int i);

int main ()
{
	setvbuf (stdout, NULL, _IONBF, 0);

	int tam = pedir_tamanho ();
	int vect[tam];
	func (vect, tam);


	int i, soma=0;

	//somar as posições do vetor
			for (i=0; i<tam; i++)
			{
				soma=soma+vect[i];
			}

	func_mostra (vect, tam);
}

//pedir o tamanho do vetor
int pedir_tamanho (int tama)
{
	printf ("Insira o tamanho do vector a criar: \n");
	scanf ("%d", &tama);

	return tama;
}


void func(int vector[], int tamanho)
{
	int i;

	for (i=0; i<tamanho; i++)
	{
		vector[i]=pedir_valor_vect(i);
	}
}

//mostrar o vetor
void func_mostra(int vector[], int tamanho)
{
	int i;

		for (i=0; i<tamanho; i++)
		{
			mostra_int(vector[i], i);
		}
}

//pedir valores
int pedir_valor_vect(int n)
{
	int a;
	printf ("Insira numero %d: \n", n);
	scanf ("%d", &a);
	return a;
}

//mostra a posicão e o número
void mostra_int (int pos_vect,int i){
	printf ("O %d valor : %d \n",i, pos_vect);
}

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

ja parece melhor, testaste ?

ja agora, deverias ter os nomes das variaveis e funcoes mais descritivas da sua funcionalidade


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Zweiss
6 horas atrás, HappyHippyHippo disse:

ja parece melhor, testaste ?

ja agora, deverias ter os nomes das variaveis e funcoes mais descritivas da sua funcionalidade

Apresenta os valores mas agora falta a fazer a soma de todos os valores e prof não acabou isso na aula. O nome das funções ate são parecidas com as que o prof fez, para fazer a soma o prof deu o nome "s" à variável e eu decidi mudar para "soma".

 

E meh teste de funções e vectores na sexta-feira.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.