Logo Hardware.com.br
Dany1
Dany1 Novo Membro Registrado
3 Mensagens 0 Curtidas

Programação em C-strings

#1 Por Dany1 15/11/2014 - 19:40
Oi,devo fazer um programa com as seguintes caracteristicas:

Entrada: uma linha contendo uma sequência de no máximo 120 caracteres e terminada por um caractere (adicional) de final de linha.

Saída: três linhas sendo a primeira com o conteúdo da versão anterior do arquivo, a segunda com a versão atual e a terceira com um número inteiro que representa o número de caracteres no texto atual (i.e., sem as porções delimitadas por "(*" e "*)"). Toda linha de saída deve ser terminada por um caractere de final de linha.

Exemplo 1:
Entrada:A casa era (*muito *)mais bonita do que ele (*jamais *)imaginou
Saida:A casa era muito mais bonita do que ele jamais imaginou
A casa era mais bonita do que ele imaginou
42

A primeira parte da saida sem os asteriscoes e os parenteses eu consegui fazer e a parte de ler o numero de caracteres eu tbm consigo, porém não tenho ideia de como fazer para imprimir o string sem as palavras entre os parenteses. Alguma ideia? Obrigada!

Aqui meu programa até o momento:

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

int main(){
int i,tam;
char frase[121];
fgets(frase,121,stdin);
tam=strlen(frase);
for(i=0;i if(frase!='*'&&frase!='('&&frase!=')'){
printf("%c",frase);
}}
}
Dany1
Dany1 Novo Membro Registrado
3 Mensagens 0 Curtidas
#3 Por Dany1
15/11/2014 - 23:49
Fábio novato disse:
Se você tentar assim (lembrando que sei muito pouco):

Incluir 2 variáveis tipo..string1 e string2.
A 1 pega a string até o parenteses; a 2, após o mesmo.
Após feito isso, vc ' junta ' as duas (strcat).
Acho que daria certo.

Mas no caso,eu não sei quantas palavras serão colocadas entre parenteses. Se fosse apenas uma eu poderia fazer isso,mas podem ter mais :/
Fábio novato
Fábio novato Super Participante Registrado
242 Mensagens 66 Curtidas
#4 Por Fábio novato
15/11/2014 - 23:53
Tamanho total da frase: 100;
Posição do 1º parenteses: 76.
Posição do 2º " : 88

String 1 leria até o 75; a 2 após 88.

Não dá certo? Independente de quantas palavras sejam?

Obs.: Sei muito pouco, só estou tentando ajudar na 'lógica'.

Edit: Agora que entendi seu último post. Se tiver mais de 2 parenteses na frase essa solução não resolveria.
Dany1
Dany1 Novo Membro Registrado
3 Mensagens 0 Curtidas
#5 Por Dany1
16/11/2014 - 00:46
Fábio novato disse:
Tamanho total da frase: 100;
Posição do 1º parenteses: 76.
Posição do 2º " : 88

String 1 leria até o 75; a 2 após 88.

Não dá certo? Independente de quantas palavras sejam?

Obs.: Sei muito pouco, só estou tentando ajudar na 'lógica'.

Edit: Agora que entendi seu último post. Se tiver mais de 2 parenteses na frase essa solução não resolveria.

Obrigada de qqr forma!
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#6 Por tpcvasco
17/11/2014 - 07:36
Primeiro, seu código está funcionando? pq esse seu teste tá meio estranho... vc Não deveria estar testando "frase!=" ao invés de apenas "frase!=" ??

Bom, sobre sua dúvida, essa aqui é uma forma de fazer, existem outras, ok?
[code=c]
for(i=0;i if(frase[i]=='(' && frase[i+1]=='*') {
imprimir=0;
}
else if(frase[i]=='*' && frase[i+1]==')') {
imprimir=1;
}
//etc
}
[/code]

Pega esse código e no "etc" coloca um printf apenas se imprimir for igual a 1. Ah, vc tb tem q acertar o código para não imprimir o "*)", coisa simples.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal