Ir para conteúdo
Fórum Script Brasil
  • 0

problema


electrico

Pergunta

ola,

eu tou a fazer um trabalho na escola ( em c ansi )e já o fiz mas não consigo de tectar e resolver uns erros,

já tentei várias vezes e alterei o trabalho várias vezes e as vezes compilei sem erros mas quando executei deu-me erro,

o meu programa é o seguinte::::::

mas não posso usar nele o switch

#ifdef HAVE_CONFIG_H

#include <config.h>

#endif

#define FICHEIRO_TXT "/home/blade/Desktop//scene.scn"

#include <stdio.h>

#include <stdlib.h>

#define MAXLINHA 500

#define MAXNOME 100

#include <string.h>

int main(int argc, char *argv[])

{

FILE * scene;

char fazer[3];/*nome da funcçao */

char line[MAXLINHA]; /*string com MAXLINHA elemetos */

char line2[MAXLINHA];/*string com MAXLINHA elementos*/

char nomfig[MAXLINHA];/*string com MAXLINHA elementos*/

int nrvertices; /*definiçao de um inteiro como o nome nrvertices*/

int cor ;/* definiçao de um inteiro com o nome cor*/

int a=0 ;/* definiçao de um inteiro com o nome a*/

int ang ;/* definiçao de um inteiro como o nome ang*/

float escala ;/* definiçao de um float como o nome escala*/

int graph=0 ;/* definiçao */

int trans=0;

int rc=0;

int rotc=0;

int ampliacao=0;

int reducao=0;

int destr=0;

int x;

int y;

int centro;

if(FICHEIRO_TXT==NULL)

printf("o endereço do ficheiro é inexistente\n");/*É imprimido um erro caso o ficheiro não exista na directoria corrente ou na directoria indicada*/

else

while(fgets(line,MAXLINHA,scene)!=NULL)/* o que faz este comando*/

if(sscanf(line,"%s", fazer)==1)/* aqui é precizo por algum NULL???*/

if(strcmp(fazer, "N")==0){

fgets(line2, MAXLINHA, scene);

if (sscanf(line2, " %s %d %d ", nomfig, &nrvertices, &cor)==3)

{

if(0>=nrvertices)

printf("quantidade de vertices inexistente");

else

if(0<nrvertices)

{ /*neste ciclo verificasse se o nr de vertices coresponde ao nr de coordenadas apresentadas em baixo das caracteristicas do objecto*/

if (fgets(line2, MAXLINHA, scene)==NULL)

printf("não existem coordenadas para o objecto ser criado");

else

if(sscanf(line2, " %d %d ", &x, &y)!=2 || x<0 || y<0 || (x<0 && y<0) )

for(a=0;a<=nrvertices; )

{ /*Verifica se para cada vertice há duas coordenadas, se não dá erro*/

fgets(line2, MAXLINHA, scene);

if(sscanf(line2, " %d %d ", &x, &y)==2)

{ a=a+1;

if(a==nrvertices)

graph=graph+1;

}else{

printf("nr de coordenadas invalido\n");

a=a+1;

} }

}

/*else

/*aqui quero fazer assim, tenho nrvertices=nrlinhas para ler,........leio 1 linha se não verifica::::linha_seguinte, " %d %d ", &x, &y)!=2 || x<0 || y<0 || x<0 && y<0 vai para a seguinte e aasim ate nrlihas, depois conto */

}

/*o inteiro que designa a cor deve tar compreendido entre -26 e 26*/

if(cor>26 || cor<-26)printf("valores invalidos de cor\n");

}

;

/*se no ficheiro se encontrar um p apos uma funçao ela é criada */

if(strcmp(fazer,"P")==0)graph++;/*se for 1 fotografia conta 1 fotografia de cada vez*/

else

if(strcmp(fazer,"T")==0);/*se for 1 rotaçao conta 1 translaçao de cada vez*/

if(fgets(line2,MAXLINHA, scene)==NULL || sscanf(line2,"%s%d%d", nomfig, &x, &y)!=3 )

printf ("não existem as coordenadas para que o objecto seja translado ou as coordenads inseridas não são válidas ");

else

if(sscanf(line2,"%s%d%d", nomfig, &x, &y)==3)/* porque devo por o &?????????*/

trans++;

else

if(strcmp(fazer,"R")==0){ /*se for 1 rotaçao sore um centro geometrico conta 1 rotaçao de cada vez*/

if(fgets(line2,MAXLINHA, scene)==NULL)

printf("não existe informaçao para ao objecto ser rodado");

else

if(sscanf(line2,"%s%d", nomfig, &ang)==2)

rc++;

else

printf("a informaço indicada esta incorrecta!");

}

else

if(strcmp(fazer,"C")==0) { /*se for 1 rotaçao sore um ponto conta 1 rotaçao de cada vez*/

if(fgets(nomfig,MAXLINHA,scene)==NULL)

printf(" não existe informaçao para o objecto ser rodado sobre um ponto ");

else

if(sscanf(line2,"%s%d%d",nomfig, &centro, &ang)!=3)

printf("a informaçao forncida para rodar o objecto sobre um ponto é erronea");

else

rotc++;

}

else

if(strcmp(fazer,"S")==0)

{ /*se se fizer um redimensionamento*/

if(fgets(nomfig,MAXLINHA,scene)==NULL)

printf(" não existe informaçao para o objecto ser redimensionado sobre um ponto ");

}else{

if(sscanf(line2,"%s%f",nomfig,&escala)!=2)

printf("a informaçao fornecida para redimensionar o objecto é erronea");

else

if (escala>1)

ampliacao++;

else

if(escala<1 && escala >0)

reducao++;

else

if (escala==1)

printf("o queciente de redimensionamento é igial a 1 por isso a figura não é alterada");

else

if(escala<0)

printf("parametro de redimensionamento invalido");

}

else

if(strcmp(fazer,"Z")==0)

if(fgets(nomfig,MAXLINHA,scene)==NULL)

printf("não existe nenhuma figura para destruir");

else

if(sscanf(line2,"%s", nomfig)!=1)

printf("a informaçao referente a figura para destruir é erronea");

else

destr++;

else

if(strcmp(fazer,"")==0)

printf("não existe nada para fazer!!!");

}

fclose(scene);/*fecho do ficheiro */

/* atao e se encontrar um P a mais , por exemplo depois deste faz o que ?????*/

/* o que devo fazer para asseguar que no fgets se leeem numeros e não caracteres ou outra coisa????*/

/* como é que é lido o ficheiro????*/

printf("foram feitas %d criaçoes de figuras/n ,foram feitas %d translaçoes de figuras/nforam feitas %d destruiçoes de figuras/n foram feitas %d rotaçoes de figuras sobre ponto/n foram feitas %d ampliaçoes de figuras/n foram feitas %d rotaçoes de figuras sobre centro geometrico/n foram feitas %d reduçoes de figu",graph, trans, destr, rc, ampliacao, rotc, reducao);

}

/* não percebi ainda os returns

float escala definiçao de um float como o nome escala

int graph=0 definiçao

oque se faz para encher os objectos com cor???

int trans=0

int rc=0

int rotc=0

int ampliacao=0

int reducao=0

int destr=0*/

este programa le um fixheiro scene.scn do pc com as seguintes infomrçoes::::::::::.

N

A1 4 6

50 50

50 100

100 100

100 50

P

T

A1 100 50 9999

T

A1 100 50

P

R

A1 90

P

R

A1 -45

P

S

A1 2

P

S

A1 0.5

P

C

A1 25 0 -45

P

E

A1

P

C

A1 25 0 -45

E

A1

P

N

Q2 5 4

50 50

50 100

100 100

100 50

50 50

P

S

Q2 3

P

E

Q2

P

N

Q1 5 4

50 50

50 100

100 100

100 50

50 50

P

C

Q1 100 50 45

P

C

Q1 100 50 45

P

C

Q1 100 50 45

P

C

Q1 100 50 45

P

C

Q1 100 50 45

P

C

Q1 100 50 45

P

C

Q1 100 50 45

P

bom acho que disse o suficiente,

se for necessária mais alguma info digam.

antecipadamene agradeço pela ajuda

Editado por electrico
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...