Ir para conteúdo
GabrielSI19

Mudar posições de um vetor

Recommended Posts

Boa tarde, estou fazendo um algorítimo mas ele não roda 100% da maneira que devia.

Leia um vetor de 20 posições e o compacte, ou seja, elimine as posições com valor zero avançando uma posição com os valores subsequentes do vetor. Dessa forma, todos os "zeros" devem ficar para o final do vetor.

O que acontece é que se eu digitar apenas um índice de valor 0 ele é enviado para o final do vetor, porém se houverem mais de dois índices com o valor 0, o primeiro toma a posição final do vetor mas os outros continuam no mesmo lugar. Alguém pode me ajudar??

 

#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
#include <stdio.h>
#include <string.h>

int main (void) 
{ 

	setlocale(LC_ALL,"Portuguese");
	
	int vet[20];
	int i,aux;
	
	for(i=0;i<20;i++) //entrada de dados
	{
		printf("Digite o valor da posição %d do vetor: ",i);
		scanf("%d",&vet[i]);
	}
	for(i=0;i<20;i++)  //operação realizada
	{
		if(vet[i]==0)
		{
			aux=vet[i];
			vet[i]=vet[i+1];
			vet[i+1]=aux;
		}
	}
	for(i=0;i<20;i++){
		printf("VetorFinal [%d] = %d\n",i,vet[i]);
	}
	
}
	

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por anderx
      Prezados, boa tarde.
       
      Eu estou fazendo um programa em C que o usuário digite uma sequencia de caracteres e imprima somente valores numéricos e também mostrar os seus respectivos valores correspondentes a tabela ASC. Eu utilizei dois vetores , um para receber os caracteres e um outro para copiar apenas os valores numéricos, mas eu não estou conseguindo transferir somente os valor numéricos para o outro vetor. Alguém tem alguma dica de como posso transferir somete os números ? O código abaixo: 
       
      #include <stdio.h>
      #include <string.h>
      int main () {
      char str1[30] ={0};
       int str2[30];
      int i=0;
      scanf ("%s",str1);
      for(i=0; i<strlen(str1);i++) {
        str1*=1;
      str2=str1;

      printf("%c : : %d\n",str2,str2);
      }
          return 0;
      }
       
    • Por Jonathacsantos
      Boa tarde, sou novo na programação, comecei por conta própria e agora estou com um pequeno problema, meu programa depende de uma pasta criada pra executar um .exe que fica dentro de uma outra pasta, sendo que eu preciso que ele leia o .exe independente de onde ele fica instalado, vou mostrar uma parte do código para tentar explicar 
      private void AcessRemo_Click(object sender, EventArgs e) { foreach ( var process in Process.GetProcessesByName("TeamViewer")) { process.Kill(); } Process.Start("C:\\Teste\\suporteremoto.exe"); ele fecha um teamviewer em execução e executa uma versão especifica do teamviewer, sendo que nos meus testes funciona pq eu tenho essa pasta ai chamada teste, mas o programa instala em Program Files, sendo que se for 64, ele vai pra Program Files (x86), dai gostaria de fazer ele ler, tipo um [LocalPath] , mas não sei como , se alguem puder me ajudar ou me da uma luz eu agradeço muito.
    • Por EduardoLenz
      Olá, pessoal,
       
      Mexo com microcontroladores, antigamente com PIC e agora com ARM (plataforma LPCXpresso). 
      Ambos utilizam a linguagem C. 
       
      Meu problema é o seguinte: Preciso converter um caractere que vem da UART (porta de comunicação). No PIC havia uma função pronta para tal, no ARM não. 
       
      O caractere chega assim, por exemplo: P123 (tudo junto), e eu queria separar em:
      dado_recebido[]={'P', '1', '2', '3'}; 
      Para poder utilizar um switch 
      switch(dado_recebido[0])
      {
      case 'P':....
      }
       
      alguém tem alguma ideia de como posso fazer a conversão? 
       
      Agradeço desde já. 
    • Por lucasrodrigues
      Estou com esse problema ao tentar vincular uma tabela do MySql a um DataSet. Utilizo o MySqlConnector 8.0.13, MySql-For-VisualStudio 1.2.8.

    • Por jtc-carr
      Linguagem c
      Queria a partir de um ficheiro fazer varias somas do seu conteúdo por exemplo de caracteres especiais, vogais, letra "a" , números, De forma a que devolve-se por exemplo 5 linhas, 4 caracteres especiais, 7 vogais, 9 "a", 6 numeros, num total de 40 caracteres, para os numeros fiz um if, para a função mas não funciona como devia
      while( (texto[MAX]=fgetc(textos))!= EOF ) if(texto[MAX] == '\n') linha++; printf("Existem %d linhas no arquivo\n", linha); if (i == '0' || i == '1' || i == 2' || i == '3' || i == '4' || i == '5' || i == 6' || i == '7' || i == '8'|| i == '9' ) Ajuda seria bem vinda, que queria perceber bem isto
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.