Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

carmenDmarin

projecto prático part2 a saga

Recommended Posts

Boas, tenho feito alguns progressos, (muito graças a vossa ajuda e aos sites com literatura de ajuda em C que voces me deram e não ao doido do prof) mas mais uma x ezpalhei-me ao comprido.

o programa esta a funcionar ... em "modo de teste". mas quando tento fazer esta função da-me sempre erro e ainda não percebi o que posso fazer :(

será que me podem ajudar? esqueci algum ; ... alguma variavel ...

----------------------------------------------------------------------------------------------------------------------

while v_comandos[0] != " " //faz enquanto o 1º caracter for <> de espaço

{

for(n=0;n<80;n++) //percorre o array

{

if v_comandos[n] = ' ' && n < 79 //verifica se é espaço e se não está no fim do array

v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior

}

}

 

//Verifica se retirou os espaços...

for(n=0;n<80;n++)

printf("%c", n_comandos[n]);

-----------------------------------------------------------------------------------------------------------------------

programa em funcionamento ... ate ver lol

 

 

# include <stdio.h>

# include <string.h>

# define NLINHAS 17

# define NTAMANHO 20

 

typedef struct{

char v_texto_nome[10];

int i_texto_ocupado[10];

char m_texto[25][80];

}edit_texto;

 

edit_texto texto;

 

char comandos[NLINHAS][NTAMANHO] = {"NEW","END","VIEW","DEL","FIND","SELECT","VIEW_PART","DEL_PART","LINE","REPLACE","FIND_PART","FIND_REPLACE","DEL_LINE","EXIT","FIND_ALL","FIND_REPLACE_ALL","ADD"};

char v_comandos[80];

void inicializa();

int comando_ok();

int comando_ok()

{

int n=0;

 

printf("%c v_comandos ->", v_comandos[0]);

if( v_comandos == ' ', printf("espaço"), printf("nem sei"));

return 0;

}

void inicializa()

{

int n, j;

 

//Inicializa v_comandos

for(n=0;n<80;n++)

v_comandos[n]= 'c'; //Alterar para ' '

 

//Verificar se inicializa bem

for(n=0;n<80;n++)

printf("%c", v_comandos[n]);

//Inicializa o nome do texto

for(n=0;n<10;n++)

texto.v_texto_nome[n] = 'a'; //substituir 'a' por ' '

 

//para verificar se inicializou ok

for(n=0;n<10;n++)

printf("%c\n", texto.v_texto_nome[n]);

 

//Inicializa a Zero o Texto ocupado -> 0-Livre, 1-Ocupado

for(n=0;n<10;n++)

texto.i_texto_ocupado[n] = 0;

 

//Para verificar se inicializou OK

for(n=0;n<10;n++)

printf("%d\n", texto.i_texto_ocupado[n]);

 

//Inicializar a Matriz dos textos!

for(n=0;n<25;n++)

for(j=0;j<80;j++)

texto.m_texto[n][j]= 'k'; //substituir k por ' '

//Para verificar se inicializou OK

for(n=0;n<25;n++)

for(j=0;j<80;j++)

printf("%c", texto.m_texto[n][j]);

main()

{

int n=0, j=0, com;

 

inicializa();

gets(v_comandos);

comando_ok();

}

 

brigada :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que poderei estar a fazer mal neste while?

 

while v_comandos[0] != " " //faz enquanto o 1º caracter for <> de espaço

{

for(n=0;n<80;n++) //percorre o array

{

if v_comandos[n] = ' ' && n < 79 //verifica se é espaço e se não está no fim do array

v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior

}

}

 

//Verifica se retirou os espaços...

for(n=0;n<80;n++)

printf("%c", n_comandos[n]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que poderei estar a fazer mal neste while?

 

while v_comandos[0] != " " //faz enquanto o 1º caracter for <> de espaço

{

for(n=0;n<80;n++) //percorre o array

{

if v_comandos[n] = ' ' && n < 79 //verifica se é espaço e se não está no fim do array

v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior

}

}

 

//Verifica se retirou os espaços...

for(n=0;n<80;n++)

printf("%c", n_comandos[n]);

Pra ser sincero não testei seu código, mas não seria interessante usar uma variável para receber os valores e no fim do laço fazer v_comandos[n] receber essa variável?

Não sei você, mas eu não gosto de mexer com uma variável que recebe valores de si mesma, me passa uma sensação de instabilidade, como se um bug fosse ocorrer a qualquer momento.

 

Mas mudando de saco pra mala, gostei do seu português! :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos supor que o primeiro caracter seja diferente de espaco

 

while v_comandos[0] != " " //faz enquanto o 1º caracter for <> de espaço
{
   for(n=0;n<80;n++) //percorre o array
   {
	  if v_comandos[n] = ' ' && n < 79 //verifica se é espaço e se não está no fim do array
		 v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior
   }
}

Quando esse laco terminará?

 

Pelo que entendi em seu código voce deslocará o espaco ' ' até que este seja o primeiro caracter.

Não sei se é isso mesmo que precisa.

 

Nesse trecho há um erro aqui:

if v_comandos[n] = ' ' && n < 79

O operador de comaparacão é o ==

Corrigindo:

 

while (v_comandos[0] != " ") //faz enquanto o 1º caracter for <> de espaço
{
   for(n=0;n<80;n++) //percorre o array
   {
	  if ((v_comandos[n] == ' ') && (n < 79))//verifica se é espaço e se não está no fim do array
		 v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brigada :)

ao testar o programa ela está sempre a dar err na primeira linha, diz

'!=' : 'int' diferes in levels of inderetion from 'char [2]'

tambem já tentei meter <> para sinal de "diferente de", mas tambem não está a aceitar :S

não consigo perceber este erro :(

 

 

while (v_comandos[0] != " ") //faz enquanto o 1º caracter for <> de espaço

{

for(n=0;n<80;n++) //percorre o array

{

if ((v_comandos[n] == ' ') && (n < 79))//verifica se é espaço e se não está no fim do array

v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ao invez de colocar while (v_comandos[0] != " ") ..

tenta colocar assim while (v_comandos[0] != ' ') .. veja c o erro persiste

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que poderei estar a fazer mal neste while?

 

while v_comandos[0] != " " //faz enquanto o 1º caracter for <> de espaço

{

for(n=0;n<80;n++) //percorre o array

{

if v_comandos[n] = ' ' && n < 79 //verifica se é espaço e se não está no fim do array

v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior

}

}

 

//Verifica se retirou os espaços...

for(n=0;n<80;n++)

printf("%c", n_comandos[n]);

Pra ser sincero não testei seu código, mas não seria interessante usar uma variável para receber os valores e no fim do laço fazer v_comandos[n] receber essa variável?

Não sei você, mas eu não gosto de mexer com uma variável que recebe valores de si mesma, me passa uma sensação de instabilidade, como se um bug fosse ocorrer a qualquer momento.

 

Mas mudando de saco pra mala, gostei do seu português! :lol:

 

do meu portugues? pk? lol

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas migos :)

a chata voltou lol

 

o que estou a fazer mal? :S

 

int n=0, j=0, com;

 

inicializa();

 

/*

for(n=0;n<17;n++)//ver se os comandos estão no array

{

printf("%s - %d\n", comandos[n], n+1);

}

*/

 

gets(v_comandos);

comando_ok();

//printf("%s - %d\n",texto[0], strlen(texto[0]));

//gets(texto[1]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparentemente nada de errado.

 

Aparece algum erro?

 

Boas migos :)

a chata voltou lol

 

o que estou a fazer mal? :S

 

int n=0, j=0, com;

 

inicializa();

 

/*

for(n=0;n<17;n++)//ver se os comandos estão no array

{

printf("%s - %d\n", comandos[n], n+1);

}

*/

 

gets(v_comandos);

comando_ok();

//printf("%s - %d\n",texto[0], strlen(texto[0]));

//gets(texto[1]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom nesse trechinho ai você soh tem comentarios..

tem q ver as funções q você esta chamando como estão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que estou a fazer ainda está muito incompleto ... ando a eleminar os erritos aos poucos ...

 

# include <stdio.h>

# include <string.h>

# define NLINHAS 17

# define NTAMANHO 20

 

typedef struct{

char v_texto_nome[10];

int i_texto_ocupado[10];

char m_texto[25][80];

}edit_texto;

 

edit_texto texto;

 

 

char comandos[NLINHAS][NTAMANHO] = {"NEW","END","VIEW","DEL","FIND","SELECT","VIEW_PART","DEL_PART","LINE","REPLACE","FIND_PART","FIND_REPLACE","DEL_LINE","EXIT","FIND_ALL","FIND_REPLACE_ALL","ADD"};

 

char v_comandos[80];

 

void inicializa();

 

int comando_ok();

 

//void texto_new();

 

/***********************************************************************/

int comando_ok()

/***********************************************************************/

{

int n=0;

 

printf("%c v_comandos ->", v_comandos[0]);

if( v_comandos == ' ', printf("espaço"), printf("nem sei"));

 

 

/*

while (v_comandos[0] != " ") //faz enquanto o 1º caracter for <> de espaço

{

for(n=0;n<80;n++) //percorre o array

{

if ((v_comandos[n] == ' ') && (n < 79))//verifica se é espaço e se não está no fim do array

v_comandos[n] = v_comandos[n+1];//Copia o caracter seguinte para o anterior

}

}

 

//Verifica se retirou os espaços...

for(n=0;n<80;n++)

printf("%c", n_comandos[n]);

/*

//1º Verificar se o comando é válido

//2º Convinha tirar os espaços

//3º Ver qual a função que procura um determinado texto na string

//4º Ciclo for p+ercorrendo o array de comandos, até encontrar

//5º Devolver o indice do array de comandos

//6º Se não encontrar devolver -1

*/

return 0;

}

 

 

 

 

/***********************************************************************/

//void texto_new()

/***********************************************************************/

//{

//1º Procurar qual o texto que está livre...

//2º Chamar uma função que mostre o texto...

//}

 

 

 

 

/***********************************************************************/

void inicializa()

/***********************************************************************/

{

int n, j;

 

//Inicializa v_comandos

for(n=0;n<80;n++)

v_comandos[n]= 'c'; //Alterar para ' '

 

//Verificar se inicializa bem

for(n=0;n<80;n++)

printf("%c", v_comandos[n]);

 

 

//Inicializa o nome do texto

for(n=0;n<10;n++)

texto.v_texto_nome[n] = 'a'; //substituir 'a' por ' '

 

//para verificar se inicializou ok

for(n=0;n<10;n++)

printf("%c\n", texto.v_texto_nome[n]);

 

//Inicializa a Zero o Texto ocupado -> 0-Livre, 1-Ocupado

for(n=0;n<10;n++)

texto.i_texto_ocupado[n] = 0;

 

//Para verificar se inicializou OK

for(n=0;n<10;n++)

printf("%d\n", texto.i_texto_ocupado[n]);

 

//Inicializar a Matriz dos textos!

for(n=0;n<25;n++)

for(j=0;j<80;j++)

texto.m_texto[n][j]= 'k'; //substituir k por ' '

 

//Para verificar se inicializou OK

for(n=0;n<25;n++)

for(j=0;j<80;j++)

printf("%c", texto.m_texto[n][j]);

}

 

/***********************************************************************/

main()

/***********************************************************************/

{

int n=0, j=0, com;

 

inicializa();

 

/*

for(n=0;n<17;n++)//ver se os comandos estão no array

{

printf("%s - %d\n", comandos[n], n+1);

}

*/

 

gets(v_comandos);

comando_ok();

//printf("%s - %d\n",texto[0], strlen(texto[0]));

//gets(texto[1]);

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.