Dúvidas de C (Eclipse) - Versão de Impressão +- Forum Pplware (http://forum.pplware.com) +-- Fórum: Mais Tech (/forumdisplay.php?fid=11) +--- Fórum: Programação e Web (/forumdisplay.php?fid=16) +--- Tópico: Dúvidas de C (Eclipse) (/showthread.php?tid=3519) Páginas: 1 2 |
Dúvidas de C (Eclipse) - Pirotas - 13-10-2009 22:02 Olá a todos, iniciei-me há pouquíssimo tempo nesse mundo estranho da linguagem C, por obrigação académica claro, e já estou a necessitar de ajuda. Não é que eu queira que programem por mim mas nesta altura do campeonato ainda nem sei bem distinguir seja lá o que for. Sendo mais directo, pediram-me isto: Escreva uma função que recebe dois argumentos, uma string e um caracter, e que remove todas as ocorrências do caracter da string. Coloque esta função num programa, em que é mostrado o conteúdo da string antes e depois de ser processada. Eu queria fazer -receber string, receber caracter (como é para testar já devem estar declarados) -ler posição da string -comparar com caracter -se igual, escreve noutra string -se diferente, salta para a próxima posição -escrever string, escrever string sem caracter. Já me disseram que para isto terei problemas com a nova variável e que o que deverá ser feito é apagar o caracter na string. Daqui é que já não consigo passar, será que alguém pode ajudar? Não se esqueçam que sou mesmo mas mesmo muito fresquinho nisto da programação. Falta uma coisa, VMware a correr Alinex com o Eclipse instalado. RE: Dúvidas de C (Eclipse) - rei007 - 13-10-2009 23:41 Boas, Vê se isto te ajuda. Fiz esse trabalhinho para si e testei. No meu computador funcionou mas tive de fazer em windows 7 com visual studio 8 num compilador de C++. Não sei se vai funcionar nos seus requesitos. Experimenta e depois diz algo. Código: #include <stdio.h> RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009 00:25 Desde já obrigado pela disponibilidade. 1º Deu um erro que para o qual já me tinham alertado, assim que fazemos "Enter" não me possibilita definir qual o caracter a retirar e devolve o seguinte: Introduza a sua string: esta string é de teste Introduza o caracter que quer remover da string: A sua string original era: esta A sua string tratada e: esta julgo que tem a ver com o scanf e o \0 2º Parece-me que o ciclo for é o indicado 3º Agora que vi este código lembrei-me: deve-se trabalhar a string em questão é não criar outra, ou seja deve-se fazer o printf("%s\n",str), trabalhar a str retira_char(str,c), devolvê-la ao main.c e fazer de novo printf. Vou ver se consigo trabalhar a partir daqui RE: Dúvidas de C (Eclipse) - rei007 - 14-10-2009 01:15 Peço imensa desculpa pelo transtorno mas a verdade é que não tinha testado strings com espaços. A função continua correcta. O problema estava em como eu obtinha os dados no scanf. Aqui tem a versão correcta. Experimente e dê-me o seu feedback. Código: #include <stdio.h> RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009 10:38 Não causa transtorno nenhum, ora essa!!! Deu o seguinte (a bold o que eu introduzi): Introduza a sua string: string de teste Introduza o caracter que quer remover da string: A sua string original era: string de teste A sua string tratada e: string de testee Assim que se faz Enter deixa de se poder introduzir o caracter a eliminar. Será que se pode trabalhar a str em vez de alocar memória e criar outra str, como que fazer um deslocamento para a esquerda do caracter (indice do vector) imediatamente a seguir ao caracter a eliminar? RE: Dúvidas de C (Eclipse) - rei007 - 14-10-2009 10:48 Há aqui qualquer coisa que me está a falhar. Vou sacar o Alinex de propósito e instalar o eclipse só para testar esta situação. Isto devia funcionar porque é compatível com linux. Só se não estás a copiar tudo direitinho como eu te apresento. (14-10-2009 10:38)Pirotas Escreveu: Será que se pode trabalhar a str em vez de alocar memória e criar outra str, como que fazer um deslocamento para a esquerda do caracter (indice do vector) imediatamente a seguir ao caracter a eliminar? Relativamente ao que tu dizes nós já fazemos isso. Uma grande falha do C é que não temos possibilidade ter mesmo uma string então temos de utilizar char vectoriais com ponteiros para o fazer e alocar em memória. Em c++ já tens strings e não te precisavas de preocupar com nada deste género. Vou instalar e experimentar. Até ao final da manhã acho que ainda te digo algo. RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009 12:01 Já encontrei solução com o auxílio de um amigo que também tem esta cadeira: main.c Código: #include<stdio.h> .h Código: #ifndef PRAT2_H_ .c Código: #include "prat2.h" De qualquer das formas, mais uma vez obrigado pela disponibilidade e aproveito para deixar o aviso, voltarei com mais dúvidas.... RE: Dúvidas de C (Eclipse) - rei007 - 14-10-2009 12:34 Fico contente que tenha resolvido. RE: Dúvidas de C (Eclipse) - Pirotas - 14-10-2009 16:31 Não sei porquê mas o código do ficheiro .c ficou incluído no .h, aliás, nem sei como é que as janelas com scroll surgiram!!! Deixo o resto separado e vem visível para quem padeça do mesmo mal que eu .c Código: #include "prat2.h" Já agora, o nome que dei aos ficheiros foi: Pasta: prat2 .c: main.c (é óbvio) prat2.c .h: prat2.h Mais uma vez e nunca será demais, os agradecimentos de quem ainda vai precisar de muuuuuita ajuda. RE: Dúvidas de C (Eclipse) - dingas - 14-10-2009 16:47 ora uma questão, noob possivelmente, porque é que a função retirar devolve um inteiro? isto porque el simplesmente altera a string a ser tratada? assim sendo, não ficaria melhor se fosse do tipo void? |