Ir para conteúdo
Fórum Script Brasil

electrico

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que electrico postou

  1. electrico

    problema

    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
×
×
  • Criar Novo...