TEXTO COMO PARAMETRO

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

TEXTO COMO PARAMETRO

Mensagempor David Henrique » 15 Set 2008 16:14

Senhroes,

Como eu faço para passar uma frase como parametro à uma rotina? Preciso fazer uma rotina que irá solicitar a confirmação para alguns comandos...
David Henrique
Nibble
 
Mensagens: 68
Registrado em: 17 Jun 2008 08:05

Mensagempor joao » 15 Set 2008 17:05

é em C?

Você pode fazer algo deste tipo:


Código: Selecionar todos
void imprime(char *texto)
{
     printf("%s", texto);
}

void main()
{
     char mensagem[] = "Isto é um texto!!!";
     imprime(mensagem);
}


Espero que isso lhe ajude.

[]'s
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Re: TEXTO COMO PARAMETRO

Mensagempor phophollety » 16 Set 2008 07:50

David Henrique escreveu:Senhroes,

Como eu faço para passar uma frase como parametro à uma rotina? Preciso fazer uma rotina que irá solicitar a confirmação para alguns comandos...


explique melhor...
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor fabim » 16 Set 2008 08:13

Ele quiz dizer em C eu acho.

blabla := Pega_resu('temp 27°C');


Procedure Pega_resu(inp : array[0..x] of char) : integer;
begin
case inp to
begin
temp 27°c : resu := 1000;
temp 28°c : resu := 1002;

......................................


mais em C..


Fabim
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor joao » 16 Set 2008 10:40

Fabim!

Será que é a primeira vez que o código em C vai ficar menor que em BASIC?!?!?!?!
:D


Código: Selecionar todos
int pega_resu(char *texto)
{
     char temp[3] = "";
     int result;
     temp[0] = texto[5];
     temp[1] = texto[6];
     itoa(result, temp, 10);
     return result;
}

void main()
{
     char mensagem[] = "temp 27°C";
     int resu = pega_resu(mensagem);
}
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor fabim » 16 Set 2008 10:46

sei não.kkkk
Aquilo é pascal mesmo..!!! kkkkkk

essa rotina itoa fica grande..

Eu dei um exemplo se realmente era o que o miguim queria.

Existem outras formas simples no pascal, ao invés de mover toda uma string basta fazer assim.

Fabim : string[10];

pega_resu(@fabim);

La eu tenho o endereço eu movo os bytes para uma comp e CASE.

Fabim :twisted:
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor joao » 16 Set 2008 11:27

hahahaa
mas é isso que eu to fazendo uai!
:D

Depois vc diz que é difícil aprender C...
Na verdade é muito parecido, mas como qq linguagem, leva tempo para aprender.
hehehe

[]'s
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor Jorge_Francisco » 16 Set 2008 11:30

Ou por ponteiros. Primeiro diz o que quer...
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor David Henrique » 18 Set 2008 14:52

Tenho uma função assim:

Int Confirma()
{int resp=0;
printf("Deseja finalizar?");
while( !btn_sim && !btn_nao ){}//espera apertar um botão

if(btn_sim){resp=1;}

return resp;
}

Digamos que um trecho do meu programa principal seja.

main{

.
.
.
if (Confirma())
{sleep();}


}

Agora eu quero generaliar a rotina Confirma, de forma que ela sirva para finalizar, iniciar, apagar ponto etc. Para isso deveria ser:

Int Confirma(char *mensagem)
{int resp=0;
printf("%s",mensagem);
while( !btn_sim && !btn_nao ){}//espera apertar um botão

if(btn_sim){resp=1;}

return resp;
}


main{

.
.
.
if (Confirma("Finalizar?"))
{sleep();}

.
.
.
if (Confirma("Iniciar processo"))
{sleep();}

.
.
.
if (Confirma("Carregar parametos?"))
{sleep();}
}

Por exemplo, a rotina ' Printf() ' do da linguagem C, onde passamos um texto como parametro.

Printf("olá mundo cruel");

onde "olá mundo cruel" é um parametro.

é isso que preciso.
David Henrique
Nibble
 
Mensagens: 68
Registrado em: 17 Jun 2008 08:05

Mensagempor ze » 18 Set 2008 15:16

num entendi direito. queres usar a frase INTEIRA como parâmetro a ser avaliado? acho melhor usar 2, não? mas pelo jeito já resolveu. e continuo a não entender nada...
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor David Henrique » 18 Set 2008 15:20

É isso mesmo, quero passar uma frase inteira como parametro. Ainda não resolvi, então tive que criar uma variável auxiliar...
David Henrique
Nibble
 
Mensagens: 68
Registrado em: 17 Jun 2008 08:05

Mensagempor joao » 18 Set 2008 16:30

????

Para mim você já resolveu...
Ainda não consegui entender o seu problema...
A única variável a mais que eu vi na sua função é resp, que pode ser retirada desta maneira:

Código: Selecionar todos
int Confirma(char *mensagem)
{
    printf("%s",mensagem);
    while( !btn_sim && !btn_nao ){}//espera apertar um botão

    if(btn_sim)
         return 1;
    return 0;
}


Eu reli o seu código umas 5 vezes e não achei nenhuma outra variável extra.
Se vc está falando da variável mensagem, pode esquecer, porque ela é apenas um PONTEIRO. Ou seja, ela está ocupando apenas o ponteiro de um char que é muito pequeno!

Mas, pensei em outra solução. Veja se não é isso que vc pensou em fazer:


Código: Selecionar todos
int Confirma()
{
    while( !btn_sim && !btn_nao ){}//espera apertar um botão

    if(btn_sim)
         return 1;
    return 0;
}

int main()
{
     printf("Finalizar?");
     if(confirma()) sleep();

     printf("Iniciar Processo?");
     if(confirma()) sleep();

     printf("Carregar Parametros?");
     if(confirma()) sleep();
}



Mas eu achei a sua maneira a mais correta. Tente explicar mais o que vc acha que está errado na sua função. Ok?

[]'s
Avatar do usuário
joao
Byte
 
Mensagens: 463
Registrado em: 17 Out 2006 08:21

Mensagempor David Henrique » 18 Set 2008 16:39

Estamos quase lá. Digamos que eu crie uma função como esta abaixo ( que você sugeriu) como seria o código para chamar esta função?

int Confirma(char *mensagem)
{
printf("%s",mensagem);
while( !btn_sim && !btn_nao ){}//espera apertar um botão

if(btn_sim)
return 1;
return 0;
}

Porque se você fizer :

If (Confirmar("Teste")){...}

não funciona...
David Henrique
Nibble
 
Mensagens: 68
Registrado em: 17 Jun 2008 08:05

Mensagempor Jorge_Francisco » 18 Set 2008 17:24

Use o Code do fórum para postar códigos, isto nos ajuda.

Mas nos diga, porque não funciona?Porque teoricamente deveria funcionar.
Avatar do usuário
Jorge_Francisco
Dword
 
Mensagens: 1009
Registrado em: 12 Out 2006 09:53
Localização: Rio de Janeiro

Mensagempor David Henrique » 18 Set 2008 17:37

OK.
Olha o teste:
Código: Selecionar todos
void conf(char* texto)
{
  Printf("%s",texto);
}


no programa principal:
Código: Selecionar todos
conf("david");

e a mensage de erro:
"Attempt to creat a pointer to a constant"
David Henrique
Nibble
 
Mensagens: 68
Registrado em: 17 Jun 2008 08:05

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x