Jump to content

vetores em linguagem c


CHAMPION87
 Share

Recommended Posts

ola pexoal..

estou com um grave problema, tenho um trabalho importante para a faculdade para entregar e como tenho muita dificuldade em c (visto que nunca tive aulas so agora) venho recorrer a estas almas caridosas para me ajudarem um pouco..

O problema e o seguinte: tenho de criar um codigo com vetor que o output seja uma rotação para a direita desse mesmo vetor.. exemplo introduzo os valores [7, -1, 20, 5, 11] e o output tem de ser [11, 7, -1, 20, 5].

nota: nao é uma inversao mas sim pegar no ultimo numero e passar para o inicio.

agradeço muito a quem me possa ajudar. ABRAÇO

Link to comment
Share on other sites

n elementos. mas essa parte nao e importante que eu consigo resolver. o output e pedir o numero de elementos ao utilizador inserir os elementos e depois fazer a tal rotaçao a direita dos mesmos como ta no exemplo.. a primeira parte consigo fazer mas a parte da rotação e que nao faço a minima ideia

Link to comment
Share on other sites

Se nao souberes podes fazer uma incrementação do estilo:

i=0
while(vector[i++]);
ultimo= i-1;

//e dps aplicas o que disse na resposta anterior

variavelAuxiliar= vector[0]; //posição 0 é a primeira do vector
vector[0]= vector[ultimo];
vecto[ultimo]= variavelAuxiliar;

😛 Ve se funciona como queres, se não, posta o código que já tens para poder ajudar melhor  😉

Link to comment
Share on other sites

i=0;
while (i<n) // como são n elementos
{
   varAux= vector[i+1];   //guarda o valor da posicao seguinte
   vector[i+1]= vector[ i] ;    //<-- faltava o [ i ]  --- actualiza a posição seguinte com o valor da anterior
   i++;   //incrementa o calor de i
}
vector[0]= varAux; 
Link to comment
Share on other sites

peço desculpa mas nao entendi eu tou mesmo nos inicios de c.... eu tentei tirar alguma coisa do meu prof e ele disse que tinha de utilizar dois vetores um inicial inserido pelo utilizador e o outro para guardar o resultado e eu fiquei na mesma... portanto sw

e nao fosse pedir t muito podias ensinarme isso de uma maneira mais simples, ou esta e a maneira mais facil de explicar? e que eu nunca vi isso TAS A FAZER SO COM UM VETOR CERTO?

Link to comment
Share on other sites

ok, um pensamento com 2 vectores estaria correcto, mas talves nao o mais correcto, pois a ideia do professor era:

(chamando VecInicial e VecFinal, o VecInicial é o que vai ser inserido pelo utilizador e o VecFinal o que vai ficar após a alteração)

- primeiro inseria-se o VecInicial[posicao_final] em VecFinal[0].

- em seguida inseria-se os restantes elementos por ordem.

no entanto é escusado teres 2 vectores se consegues resolver o assunto com uma variavel auxiliar, mas em seguida mostro o código correspondente com 2 vectores:

i=1
while(i<=n)
{
   VecFinal[i]=VecInicial[i-1]; //aqui insiro todos os valores do vector inicial no final com a excepção do ultimo
   i++;
}
VecFinal[0]=VecInicial[n]; // aqui se insere então o ultimo elemento do vector inicial no inicio do vector final

Deu para entender?

Link to comment
Share on other sites

infelizmente não tnh como testar aqui.

Só uma dica: codepad.org

É excelente.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Link to comment
Share on other sites

tags code para inserir código.

Sou novato aqui, nem sabia que existia, thx pelas dicas.

não dês o código de caras, dá uma oportunidade para o OP tentar resolver com as ajudas que dás.

hmm, realmente é uma boa ideia,

se deres um peixe a uma pessoa, ela tem comida para uma refeição

se ensinares a pescar, ela terá comida para toda vida!!!

😁

codepad.org

Vou ver o que é xD

Link to comment
Share on other sites

este e o codigo que consegui fazer com a ajuda deste forum, mas nao ta a funcionar correctamente

"

O problema e o seguinte: tenho de criar um codigo com vetor que o output seja uma rotação para a direita desse mesmo vetor.. exemplo introduzo os valores [7, -1, 20, 5, 11] e o output tem de ser [11, 7, -1, 20, 5].

nota: nao é uma inversao mas sim pegar no ultimo numero e passar para o inicio.

agradeço muito a quem me possa ajudar. ABRAÇO

"

este e codigo que consegui fazer nas aos poucos mas nao ta a funcionar... pois no fim deve imprimir o vetor que introduzimos e também o vetor com a rotaçao a direita

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

main(){
int n;
printf("introduz numero de elementos vetor: ");
scanf("%d",&n);
int vetor[n], i, vecfinal[n];

for(i=1;i<n+1;i++){
printf("Elemento %d ->", i);
scanf("%d", &vetor[i]);
}

i=1;
while(i<=n)
{
vecfinal[i]=vetor[i-1];
i++;
}
vecfinal[0]=vetor[n];

printf("%d\n", vetor[n]);
printf("%d\n", vecfinal[0]);

system("pause");
} [&code]
Link to comment
Share on other sites

pexoal ja resolvi o problema

o codigo correto e este:

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

int main(int argc, char *argv[])
{
int n;
printf("introduz numero de elementos vetor: ");
scanf("%d",&n);
int vetor[n], i, vecfinal[n];

for(i=1;i<n+1;i++){
printf("Elemento %d ->", i);
scanf("%d", &vetor[i-1]);
}


for(i=0; i<n; i++){
vecfinal[i+1] = vetor[i];
}
vecfinal[0] = vetor[n-1];

printf("\nVetor Inicial:\n");

for(i=0; i<n; i++){
printf("%d ",vetor[i]);
}

printf("\nVetor Final:\n");

for(i=0; i<n; i++){
printf("%d ",vecfinal[i]);
}


system("PAUSE");
return 0;
}

Link to comment
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
 Share

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