Feijó 0 Denunciar mensagem Publicado 28 de Março de 2013 (editado) 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 28 de Março de 2013 por pmg Falta LP no GeSHI Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
pmg 96 Denunciar mensagem Publicado 28 de Março de 2013 (editado) 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 28 de Março de 2013 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ó 0 Denunciar mensagem Publicado 28 de Março de 2013 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 96 Denunciar mensagem Publicado 28 de Março de 2013 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