Ir para o conteúdo
Rui Ribeiro

exercicio de vectores

Mensagens Recomendadas

Rui Ribeiro

boa noite, preciso da vossa ajuda.

eu estou a fazer um exercício, no qual vou pegar num vector e através desse vector vou criar outro que seja o seu cubo.

não estou a ver como e que isso se faz , dão uma ajudinha? a minha ideia é esta:

b[x] = a[x]*a[x]*a[x]

isto pode se fazer? é assim que se faz?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Podes fazer precisamente isso.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

Ok obrigado ;)

Dá uma olhadela aqui no meu programa sff

//63) Ler os 30 elementos de um Vector A. Construír um Vector B do mesmo tipo, 
//observando a seguinte lei de formação: “Todo o elemento de B deve ser o cubo 
//do elemento de A correspondente”. Incluír uma rotina de pesquisa sequencial, 
//para pesquisar um valor a ser determinado pelo utilizador, de entre os 
//elementos do Vector B.

/*Português Estruturado
Inicio
Para i de 0 até 29 passo 1 fazer
	Ler A[i] 
	B[i] <- (A[i] * A[i] * A[i])
Fim_para
Escrever ("Digite o elemento que deseja procurar")
Ler () <- x
Para i de 0 até 29 passo 1 fazer
Se B[i] =x
	Escrever ("O elemento esta na posição " , i)
Fim_se
Fim_para
Fim
*/

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

int main()
{
    int cont;
    int a[29];
    
    for(cont=0;cont<29;cont++)
    {
                printf("Digite o elemento do vector");
                scanf("%d",&a[cont]);
    }
    b[cont] = a[cont]*a[cont]*a[cont];
    for(cont=0;cont<29;cont++)
    {
                              printf("O numero do vector %d = %d",cont,b[cont]);
    }
    sytem("pause");
}
                
    

a mim da me erro mesmo naquela minha duvida de dizer que o novo vector e o cubo do outro

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Não é em vez de. É mesmo no final, depois do system("pause") (embora o system("pause") não seja a coisa mais indicada de usar).

A multiplicação não deveria ser feita num ciclo?


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Claro que não. O processador também só faz isso uma de cada vez. Se tivesses a trabalhar com GPUs, aí já seria possível. Mas isso já é um tópico demasiado avançado.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Não... estás a multiplicar os indíces do array. Se x for 3, estarás a aceder ao elemento 9 do array a, ou a[9]. Não é isso que pretendes.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

com ciclo:

    for(cont=0;cont<30;cont++)
    {
                              b[] = a[cont*cont*cont];
    }

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Tens que fazer

b[0] = cube(a[0]);
b[1] = cube(a[1]);
b[2] = cube(a[2]);
/* ... */
b[N-1] = cube(a[N-1]);

Ou usar um ciclo para nao repetires a mesma instrucao (com ligeiras alteracoes) N vezes.

Nota: cube e um nome que eu acabei de inventar para uma funcao que nao existe. Mas talvez fosse boa ideia aproveitares a sugestao e escreveres a funcao que faz o cubo dum numero e usa-la na resolucao do exercicio ;)


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

com ciclo:

    for(cont=0;cont<30;cont++)
    {
                              b[] = a[cont*cont*cont];
    }

Repara no que estás a fazer. Primeiro b[] não significa nada. E depois, para o ciclo estás a aceder à posição cont^3 do array a. Ou seja,

a[0*0*0], que é a[0]

a[1*1*1], que é a[1]

a[2*2*2], que é a[8]

a[3*3*3], que é a[27]

a[4*4*4], que é a[64] (e provavelmente, já terás rebentado o programa por esta altura).

...

Tu queres o cubo de a, não queres o valor de a[i*i*i].

for (i = 0; i < MAX_POSITIONS; i++) {
    b[i] = a[i]*a[i]*a[i];
}


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

ok, ja percebi, um cilco dentro de um ciclo. vou fazer isto amanha de manha e dpois digo se consegui ou nao. desde já obrigado ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

ok, ja percebi, um cilco dentro de um ciclo. vou fazer isto amanha de manha e dpois digo se consegui ou nao. desde já obrigado ;)

que complicação que estás prai a fazer ...

o que te disseram foi unicamente por a linha dentro do for logo a seguir do

    for(cont=0;cont<29;cont++)
    {
                printf("Digite o elemento do vector");
                scanf("%d",&a[cont]);
                b[cont] = a[cont]*a[cont]*a[cont];
    }


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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

apos varias tentivas falhadas, continuo sem conseguir correr o programa correctamente...

aos meus olhos ele está todo correcto, aqui está ele:

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

int main()
{
    int cont;
    int a[29];
    int b[29];
    cont = 0;
    
    for(cont = 0; cont < 29; cont++)
    {
                printf("\nDigite o valor para o vector na posicao %d\n",cont);
                scanf("%d",&a[cont]);
    }
    for (cont = 0; cont < 29; cont++) 
    {
                 b[cont] = (a[cont]*a[cont]*a[cont]);
                 for(cont = 0; cont < 29; cont++)
                 {
                          printf("\nO numero do vector na posicao %d e = %d\n",cont,b[cont]);
                 }
    }
    system("pause");
    return 0;
}

ajudem ai pessoal ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

    for (cont = 0; cont < 29; cont++) 
    {
                 b[cont] = (a[cont]*a[cont]*a[cont]);
                 for(cont = 0; cont < 29; cont++)
                 {
                          printf("\nO numero do vector na posicao %d e = %d\n",cont,b[cont]);
                 }
    }

Estás a utilizar a mesma variável para os dois loops. Quando fazes o segundo loop, o array b ainda não tem todos os valores atribuídos, logo tu não deves querer imprimir todos esses valores aí. Por isso, tens o segundo for a mais.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Flinger

Desculpem lá meter-me, mas independentemente de ele não estar a calcular o cubo para todos os elementos, também não vejo a declaração do array b. Provavelmente é isso que causa o erro no compilador.

Não li até ao fim... Já se tá a tornar um mau hábito.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Ribeiro

eu estou quase a desesperar xD, fiz tudo o que vocês me disseram para fazer, e mesmo assim este programa não funciona como deve ser

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Flinger

Pega no for que tens dentro de outro for, e passa-o para fora. Ou seja ficas com 3 for's, uns a seguir aos outros. Depois tenta chegar a uma conclusão, comparando com o código que tinhas inicialmente.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.