Jump to content

Question

Tou precisando de ajuda na seguinte questão:

 

- Leia um vetor de 50 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.

 

Eu até tentei fazer o programa, mas nao consigo rodá-lo da forma como a questão pede, talvez por falta de compreensão lógica, deem uma olhada...

 

#include <stdio.h>

const int T = 5;

int main () {
	
	int vet[T], i, j, k, aux;
	
	printf ("Preencha o vetor:\n\n"); // Entrada de dados.
	
	for (i = 0; i < T; i++) {
		printf ("\n\tInsira o valor da posicao [%d]: ", i + 1);
		scanf ("%d", &vet[i]);
	}
	
	system ("cls");
	
	printf ("Vetor inicial:\n\n"); // Saída de dados.
	
	for (i = 0; i < T; i++)
		printf ("%d ", vet[i]);
	
	for (i = 0; i < T; i++) { // Operações.
		printf ("%d ", vet[i]);
		
		if (vet[i] == 0) {
			j = i;
			
			do {
				if (j < T - 1)
					k = j + 1;
					
				aux = vet[j];
				vet[j] = vet[k];
				vet[k] = aux;
				
				j++;
				k++;
				
			} while (vet[j] < T - 1);
		}
	}
	
	printf ("\n\nVetor resultante:\n\n"); // Saída de dados.
	
	for (i = 0; i < T; i++)
		printf ("%d ", vet[i]);
		
	return 0;
}

 

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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

  • Similar Content

    • By Pavolin9
      Bom dia, estou desenvolvendo um sistema bem simples de estoque onde os itens serao armazenados em uma matriz segue codigo:
          package main;          import java.io.Console;     import java.util.Arrays;     import java.util.Scanner;          public class IncluirItem{         public static void main(String[] args) {             String[][] itens = new String[2][5];             String[] campos = new String[7];             int opcao = 0;             int remover;             int verificar = 0;             int adcionar = 0;             int tamanho = 2;                          Scanner sc = new Scanner(System.in);                          campos [1] = "Nome";             campos [2] = "Codigo de barras";             campos [3] = "quantidade";             campos [4] = "validade";             campos [5] = "data de entrada";                          do {                 System.out.println("\n\n### Sistema de estoque - simplificado ###");                 System.out.println("=========================================");                 System.out.println("      |     1 - Adcionar itens   |");                 System.out.println("      |     2 - Excluir itens    |");                 System.out.println("      |     3 - Mostrar itens    |");                 System.out.println("      |     0 - Sair             |");                 System.out.println("=========================================\n");                                  System.out.println("Escolha uma opcao: ");                 opcao = sc.nextInt();                 System.out.print("\n");                                  switch (opcao) {                 case 1:                     System.out.println("Cadastro de itens: ");                     //Adciona itens                      for (int i = 0; i <2; i++) {                         System.out.println("Adcionar item? ");                         System.out.println("1 para sim \n2 para nao: ");                         adcionar = sc.nextInt();                         if (adcionar == 1) {                             System.out.printf("%d. item \n", (i+1));                             verificar = verificar + 1;                             for (int j=0; j < 5; j++) {                                     System.out.printf("%s ", campos[j+1]);                                 System.out.printf("= ", i,(j+1));                                 itens[i][j] = sc.next();                                                              }                             System.out.printf("\n");                         }                         else {                             break;                         }                     }                                              break;                 case 2:                     //Remove itens                     System.out.println("Exclusao de itens: ");                     if(verificar > 0) {                         for (int i = 0; i <2; i++) {                                 System.out.printf("%d. item \n", (i+1));                             System.out.printf("ID do produto= 00%d \n", (i+1));                             System.out.printf("\n");                         }                     }                     else {                         System.out.println("Nenhum item listado!");                     }                     System.out.println("\nEscolha o numero do item a ser removido: \n");                     remover = sc.nextInt();                     for (int i = 0; i <2; i++) {                         if(remover == 2) {                         itens[i] = itens[i-1];                         }                     }                     break;                 case 3:                     //Mostra itens                     if(verificar > 0) {                                                      for (int i = 0; i <2; i++) {                                     if (verificar == 2) {                                 System.out.printf("%d. item \n", (i+1));                                 System.out.printf("ID do produto= 00%d \n", (i+1));                                 for (int j=0; j < 5; j++) {                                         System.out.printf("%s ", campos[j+1]);                                     System.out.printf("= %s \n", itens [i][j]);                                 }                                 System.out.printf("\n");                             }                             else {                                         itens = Arrays.copyOf(itens, tamanho - 1);                                         verificar = 0;                                         System.out.printf("%d. item \n", (i+1));                                         System.out.printf("ID do produto= 00%d \n", (i+1));                                         for (int j=0; j < 5; j++) {                                                 System.out.printf("%s ", campos[j+1]);                                             System.out.printf("= %s \n", itens [i][j]);                                         }                                         System.out.printf("\n");                                         break;                                 }                         }                     }                     else {                         System.out.println("Nenhum item listado!");                     }                                          break;                 default:                     System.out.println("Opção Inválida!");                     break;                 }             } while(opcao != 0);         }     }  
      Minha duvida é a seguinte, eu quero excluir uma posicao da matriz, exemplo: registrei dois itens, na coluna um e coluna dois da matriz e gostaria de remover a coluna um da lista, como realizo essa função, e outra coisa, eu gostaria de quando eu inserisse pela segunda vez algum item a matriz começasse na proxima possicao vazia, atualmente se eu pedir para inserir um novo item a matriz começa da primeira posicao e assim apaga os elementos ja inseridos.
       
    • By cleitonpacheco
      Preciso criar um programa em C que converta um vetor de 32 caracteres (recebidos do usuário), e os caracteres que não forem letras devem ser convertidos em espaço em branco mostrando no final o vetor resultante e a quantidade de espaços em branco. Como seria para fazer usando apenas a biblioteca 'stdio.h'?
       
       
    • By thiago_brito
      Galera,
      Estou com uma questão que eu não consigo resolver. Já tentei de diversas maneiras e já pedi ajuda para alguns conhecidos, mas nada... Espero que alguém daqui possa me ajudar
       
      Estou trabalhando com Algoritmo Genético no matlab. Tenho um vetor [1 2 3 4 5] onde cada número significa um material. Mando rodar o matlab e ele me dá como melhores opções os materiais os números [5 2 4 3 1]
       
      como eu faço essa rodagem?
      Rodo o matlab 1x, ele escolhe o número 5. Vou lá e retiro todas as entradas do número 5. Rodo novamente o matlab e o novo melhor material será o 2. Faço isso para todos os outros números até que se esgotem.
       
      O que eu quero?
      Não ter que fazer todo esse processo manualmente visto que tenho 12 ou mais materiais e tenho que fazer modificações em algumas características como nº de população e entre outras coisas... Se eu fizer manualmente vai dar um trabalho gigantesco. Quero que isso seja automático. O matlab rode e ai ele vai escolher o número 5, ai ele guarda esse valor em um vetor e roda novamente, mas dessa vez sem considerar o nº 5, com isso, ele encontrará o nº 2. Guarda ele num vetor e roda novamente, mas dessa vez considerando os números 1, 3 e 4... e assim em diante

      O que tenho feito e não está dando certo?
      Da maneira que eu to fazendo não está dando certo porque o for está indo de 1 a 12.. Observe na resposta que ele considera o material de nº 5 como sendo o melhor até i = 5, depois aparecem outros... Quando tenho i = 3, por exemplo, ele já não considera o 1º e 2º materiais... a única rodagem que ele considera todos os 12 é quando i = 1
       

    • By Svinnicius
      Ao sair de um procedimento e entrar em outro, ta apresentando erro quando tento finalizar o programa.
       
      Var
      // Seção de Declarações das variáveis 
      nome: vetor [1..3]  de caractere
      telef: vetor [1..3]  de caractere
      ema: vetor [1..3]  de caractere
      codigo,codigo_contato,codigo_contato_cheio, menu_apagar,opc, opc1: inteiro
      cont, menu_mostrar,op: inteiro
      procedimento principal()
      Inicio
      // Seção de Comandos, procedimento, funções, operadores, etc... 
      repita
      escreval ("")
      escreval ("=== AGENDA TELEFÔNICA ===")
      escreval ("")
      escreval ("1. Inserir novo contato")
      escreval ("2. Apagar contato")
      escreval ("3. Mostrar todos os contatos")
      escreval ("4. Sair")
      escreva ("Digite opcao: ")
      leia (codigo)
      limpatela
      ate (codigo=1) ou (codigo=2) ou (codigo=3) ou (codigo=4)
      escolha (codigo)
      caso 1
         contato()
      caso 2
         apagar()
      caso 3
         mostrar()
      caso 4
         interrompa
      fimescolha
      fimprocedimento
      //---------------------- NOVO CONTATO ----------------------
      procedimento contato()
      inicio
      para cont de 1 ate 3 faca
      limpatela
      escreval("== INSERIR NOVO CONTATO ==")
            escreva ("Nome: ")
            leia (nome[cont])
            escreva ("Telefone: ")
            leia (telef[cont])
            escreva ("E-mail: ")
            leia (ema[cont])
            escreval("")
            escreval("Usuario cadrastrado com sucesso")
            repita
            escreval("")
            escreval("1.Insira novo contato")
            escreval("2.Voltar ao menu")
            escreval("")
            escreva("Digite opção: ")
            leia(codigo_contato)
      escolha (codigo_contato)
      caso 1
      escreva("")
      caso 2
         interrompa
         limpatela
         principal()
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      limpatela
      fimescolha
      ate codigo_contato = 1
      fimpara
      limpatela
                escreval("")
                escreval("Lista de contato cheia")
                repita
                escreval("")
                escreval("1.Voltar ao menu")
                escreval("2.Sair")
                escreval("")
                escreval("Digite opção")
                leia(codigo_contato_cheio)
          escolha (codigo_contato_cheio)
                caso 1
                limpatela
                principal()
                caso 2
                interrompa
                outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      limpatela
      fimescolha
      ate codigo_contato_cheio = 1
      fimprocedimento

      //------------------------ Apagar contato------------------------------------
      procedimento apagar()
      inicio
      limpatela
      escreval("== APAGAR CONTATO ==")
      Escreval("")
      escreva ("Qual contato você quer apagar? ")
      Escreval("")
      para cont de 1 ate 3 faca
      Escreval(cont,". ",nome[cont])
      fimpara
      Escreval("")
      Escreva("Digite opção:")
      Leia(opc)
      se opc >0 entao
         se opc <4 entao
      nome[opc]<-""
      telef[opc]<-""
      ema[opc]<-""
      Escreval("")
      Escreval("Contato Apagado com sucesso")
      repita
      escreval("")
      escreval("1.Apagar outro contato")
      escreval("2.Voltar ao menu")
      escreval("3.Sair")
      escreva("Digite opção:")
      leia(menu_apagar)
      Escolha(menu_apagar)
      caso 1
      limpatela
      apagar()
      caso 2
      limpatela
      principal()
      caso3
      interrompa
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      senao
      apagar()
      fimse
      fimse
      fimse
      fimescolha
      ate menu_apagar = 3
      fimprocedimento
      //-------------------------- Mostrar todos os contatos ---------------------
      procedimento mostrar()
      inicio
      limpatela
      escreval("== LISTA DE CONTATOS ==")
      Escreval("")
      para cont de 1 ate 3 faca
      Escreval(cont,". ",nome[cont])
      fimpara
      Escreval("")
      Escreva("Digite opção:")
      Leia(opc1)
      se opc1 >0 entao
         se opc1 <4 entao
      limpatela
      Escreval("Nome: ",nome[opc1])
      Escreval("Telefone: ",telef[opc1])
      Escreval("E-mail: ",ema[opc1])
      repita
      escreval("")
      escreval("1.Mostrar outro contato")
      escreval("2.Voltar ao menu")
      escreval("")
      escreva("Digite opção:")
      Leia(menu_mostrar)
      Escolha(menu_mostrar)
      caso 1
      limpatela
      mostrar()
      caso 2
      limpatela
      principal()
      outrocaso
      escreval("")
      escreval("Opção invalida")
      escreval("")
      escreval("Pressione ENTER para voltar")
      leia(op)
      senao
      mostrar()
      fimse
      fimse
      fimescolha
      limpatela
      ate menu_mostrar = 1
      fimprocedimento
      inicio
      // Seção de Comandos
        principal()
      Fimalgoritmo
    • By xande013
      /* Desenvolver um programa para realizar a correção de um prova de múltipla escolha. Os dados iniciais a serem lidos são: - A quantidade de candidatos (N) e - A quantidade de questões aplicadas (M). As respostas possíveis que poderão ser aceitas são: A, B, C, D e E. O primeiro conjunto de dados a ser lido será o gabarito com as respostas corretas das M questões. Após o gabarito, serão lidos os nomes as respostas de cada candidato. Os valores das questões são iguais. A nota máxima é 10 e a de classificação é 5. As estruturas que deverão ser utilizadas são: O programa deverá: a) Gerar o vetor NOTA; b) Apresentar o relatório geral contendo o nome do candidato e sua nota; c) Calcular e apresentar a média geral dos candidatos; d) Apresentar a quantidade e o percentual de classificados e desclassificados; e) Apresentar o relatório de candidatos classificados; f) Apresentar a melhor nota obtida e seu(s) respectivo(s) candidato(s); g) Gerar o vetor ACERTOS com o percentual correspondente e apresentá-lo. */ #include <iostream> using namespace std; // torna desnecessária o uso do comando standard (std) antes das variáveis main() { setlocale(LC_ALL,"Portuguese"); int M[2][2],l, c, nota=0, soma=0, media=0, i=0, j=0; string nome[j]; cout<<"Digite seu nome"<<endl; cin>>nome[j]; for(l=0;l<2;l++) { for (c=0;c<2;c++) { cout<<"["<<l<<"]["<<c<<"] : "; cin>>M[l][c]; } } for (l=0;l<2;l++) { for (c=0;c<2;c++) { cout<<M[l][c]<<" "; } cout<<endl; } cout<<"Matriz A "<<" Vetor B "<<endl; for (l=0;l<2;l++) { soma=0; for (c=0;c<2;c++) { cout<<M[l][c]<<" | "; soma=soma+M[l][c]; media=soma/3; } cout<<" = "<<media<<endl; } cout<<"Somatório da colunas: "<<endl; for (c=0;c<2;c++) { soma=0; for (l=0;l<2;l++) { soma=soma+M[l][c]; } cout<<soma<<endl; } cout<<"Somatório da Diagonal: "<<endl; for (l=0;l<2;l++) { soma=0; for (l=0;l<2;l++) { soma=soma+M[l][l]; } cout<<soma<<endl; } } A pergunta é, como imprimir os nomes na coluna 0 e linhas de 1 a 5
      e como fazer para que as respostas possíveis que poderão ser aceitas sejam: A, B, C, D e E?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.