Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Feijó

retirar elementos repetidos de um array

Mensagens Recomendadas

Feijó

Um programa que lê (usando a funcão

scanf uma sequencia de (no maximo 100) numeros inteiros terminada com o numero 0

e imprime no ecran a sequência sem os elementos repetidos (se os houver).

#include <stdio.h>
#define MAX 100

int main(){
int a[MAX] ,x,i=0, c=0, while2=0, outra;
printf("insira varios numeros ate 0:\n");
scanf ("%d",&x);
if (x==0)
   {printf ("meteste o 0 no inicio !\n"); return 0;}

while (x!=0 && i<MAX)
{ c++; a[i]=x; i++; scanf("%d",&x); }

for (i=0; i<c; i++)
{while (1) { while2++; if (a[i] ==a[while2])
                {outra= while2; while (outra=!c)
                        {a[outra]=a[outra+1]; if (a[outra]==a[c-1]) a[outra]=0; c--;}}
    if (while2 == c)
break; }}


while (i<c)
{if (a[i] != 0)
printf("Os numeros sem repetidos sao: %d \n",a[i]);i++;}
return 0;
}

dá-me erro poderiam-me ajudar a ver o que estou a fazer mal ?

Editado por pmg
Falta LP no GeSHI

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Sugestao: muda o estilo da tua indentacao.

Olhar para o teu codigo com o teu estilo de indentacao ate faz dor de cabeca (eu nao costumo importar-me muito com indentacoes diferentes da minha, mas a tua abusa!!!)

O codigo que apresentaste tem um ciclo while que nao faz o que julgas que faz

while (outra=!c) { /* ... */ }

Isto atribui 1 (se o valor de c for 0) ou 0 (se o valor de c nao for 0) a variavel outra. Se atribuiu 1 faz o corpo do ciclo e volta a fazer nova atribuicao; se atribuiu 0 sai do ciclo.

Sugestao #2: aumenta o nivel de warnings do teu compilador e aceita unicamente programas que compilam limpinhos. Um compilador 'decente' devia-te avisar da condicao no while ser 'esquisita'.

Editado por pmg
sugestao #2

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
Feijó

Ok obrigado vou tentar melhorar a identação, e esse while.

Quantos aos warnings, estou a usar o ubuntu, e não sei aumentar os warnings, vou pesquisar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Quantos aos warnings, estou a usar o ubuntu, e não sei aumentar os warnings, vou pesquisar.

O ubuntu nao é um compilador.

Se estas a usar o gcc

$ gcc ficheiro.c
$ ./a.out

experimenta, para comecar, os parametros da linha de comandos seguintes

$ gcc -Wall -Werror ficheiro.c
$ ./a.out


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

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.