void readSudoku() {
	int i, j, v;
	scanf("%s",input);
	for(i = 0; i < dz2; i++) {
		for(j = 0; j < dz2; j++) {
			v = input[i*dz2 + j] - '0';
			if(v < 1 || v > 9) v = -1;
			if(v == -1) for(v = 0; v < dz2; v++) insertC(i, j, v + 1);
			else insertC(i, j, v);
		}
	}
}
Beispiel #2
0
inline void readSudoku() {
	int i, j, v;
	for(i = 0; i < dz2; i++) {
		getstr(sudoku[i]);
		for(j = 0; j < dz2; j++) {
			v = sudoku[i][j] - 'A' + 1;
			if(sudoku[i][j]=='-') v = -1;
			if(v == -1) for(v = 0; v < dz2; v++) insertC(i, j, v + 1);
			else insertC(i, j, v);
		}
	}
}
Beispiel #3
0
int lireLigne(int fd, char *b, char *s, int nc)
/* fd = file descriptor
   b  = adresse du buffer
   nc = nb de caracteres possible (longueur du buffer */
{
char *d, *f, c, c2, c3, *h, *w, *Wl, *rac;
int n, i, l, ls=0, ins=0, ignTild=0, nbT=0, Nc;
unsigned int j;
char bufd[50];
   /* printf("lireLigne ... \n"); */
   d = b;
   f = b+nc;
   while(d<f-ls) {
     if (noErr()) {
         n = -1;
         break;
     }
     /* fprintf(stderr,"d-b=%d ins=%d s=<%s> b=<%s>\n",d-b,ins,s,b); */
     if ((n=read(fd,d,1)) != 1) break;
     c=*d;
     if (ignTild && (c == '~')) {
        ignTild=0; continue;
     }
     if ((c > 31) && (c < 127)) { /* de SPACE a TILDE */
         if (!((FD_IN || iTERM) && ECHOOFF)) {
               printf("%c",c);
               if (ins) {
                  if (ins==2)  /* rewrite */
                     enleve1(s);
                  if(*s =='\0') ins=0;
                  else {
                     printf("%s",s);
                     for (j=0; j<strlen(s); j++) printf("\b");  
                  }
               }
         }
         fflush(stdout);
         d++;
     } else {
         switch (c) {
            /* Ctrl C
            case '\003' : 
              kill(getpid(), SIGINT);
              break; */
            case '\t': /* tab */
              if (d>b) {
                 *d='\0';
                 w=d-1;
                 while ((w>b) && (!(isSepa(*w,1)))) w--;
                 if (isSepa(*w,0)) w++;
                 /* fprintf(stderr,"d-b=%d  w=<%s>\n",d-b,w); */
                 if (strlen(w) > 0) {
                    j=nbLibBegin(w, &rac);
                    /* fprintf(stderr,"j=%d  w=<%s>\n",j,w); */
                    if (j==0) printf("\a");
                    else {
                       if (j==1) {
                          Wl=getLibBegin(w);
                          i=strlen(Wl)-strlen(w);
                          /* fprintf(stderr,"i=%d  Wl=<%s>\n",i,Wl); */
                          if (i>0) {
                             strcpy(w,Wl);
                             printf("%s ",d);
                             d+=i;
                             *d++ = ' ';
                             if (ins) {
                              printf("%s ",s);
                              for (j=0; j<(strlen(s)+1); j++) printf("\b");  
                             }
                          } else { /* XXXX */
                             if (i==0) {
                               printf (" ");
                               *d++ = ' ';
                             }
                          }
                       } else {
                          if (rac != NULL) {
                             i=strlen(rac)-strlen(w);
                             strcpy(w,rac);
                             printf("%s",d);
                             d+=i;
                             if (ins) {
                              printf("%s ",s);
                              for (j=0; j<(strlen(s)+1); j++) printf("\b");  
                             }
                          } else {
                            nbT++;
                            if (nbT>1) {
                               nbT=0;
                               printf("\n");
                               listLibBegin(w);
                               *d='\0';
                               printf("> %s",b);
                               if (ins) {
                                printf("%s ",s);
                                for (j=0; j<(strlen(s)+1); j++) printf("\b");  
                               }
                               fflush(stdout);
                            }
                          }
                       }
                    }
                    fflush(stdout);
                 }
              }
              break;
            case '\177':
              if (d>b) {
                 printf("\b \b");
                 if (ins) {
                  printf("%s ",s);
                  for (j=0; j<(strlen(s)+1); j++) printf("\b");  
                 }
                 fflush(stdout);
                 d--;
              }
              break;
            case '\n':
            case '\r':
              if ((FD_IN || iTERM) && ECHOOFF) printf(".");
              else {
                 printf("\n");
                 if (ins) {
                     if (d+strlen(s) < f) {
                        sprintf(d,"%s",s);
                        d+=strlen(s);
                     } else return(-1);
                 }
              }
              goto finBoucle;
         /* gestion des caracteres speciaux */
            case '\033':   /* ESCAPE */
              ignTild=1;
              Nc=read(fd,&c2,1);
              Nc=read(fd,&c3,1);
              if (c2 == '[') { /* CSI - see XTerm Control Sequences */
                  switch(c3) {
                      case '2' : /* Insert */
                        if (ins) {
                           ins++;
                           if (ins==3) ins=1;
                        }
                        break; 
                      case '3' : /* Suppr */
                        if (ins) {
                           enleve1(s);
                           if(*s =='\0') ins=0;
                           printf("%s \b",s);
                           for (j=0; j<strlen(s); j++) printf("\b");  
                           fflush(stdout);
                        }
                        break; 
                      case 'A' : /* UpArrow */
                      case 'B' : /* DownArrow */
                        ins = 0;
                        /* efface la ligne en cours */
                        l=d-b;
                        for(i=0;i<l;i++) printf("\b \b");
                        fflush(stdout);
                        d=b;
                        *d = '\0';
                        if ((h=getHisto(c3)) != NULL) {
                           strcpy(b,h);
                           d=b+strlen(h);
/*
                           printf("\n%s (iH=%d iHt=%d)\n",h,iH,iHt);
                           *d='\0';
*/
                           printf("%s",b);
                           fflush(stdout);
                        }
                        break; 
                      case 'C' : /* -> */
                        if (ins) {
                           *d = *s;
                           printf("%c",*d++);
                           enleve1(s);
                           if(*s =='\0') ins=0;
                           else {
                              printf("%s",s);
                              for (j=0; j<strlen(s); j++) printf("\b");  
                           }
                           fflush(stdout);
                        }
                        break; 
                      case 'D' : /* <- */
                        if (d>b) {
                           if (ins==0) {
                              ins=1;
                              *d='\0';
                              strcpy(s,d-1);
                           } else insertC(*(d-1),s);
                           d--;
                           printf("\b");
                           fflush(stdout);
                        }
                        break; 
                      case 'H' : /* home : debug terms ON */
                      case '1' : /* home numeric */
                        IFD_DebugTOn();
                        break; 
                      case 'F' : /* end : debug terms OFF */
                      case '4' : /* end numeric */
                        IFD_DebugTOff();
                        break; 
                      default:
                        sprintf(bufd,"# ignore : ESC [ %d (%c) !",(int)c3, c3);
                        D_Tracenl(bufd);
                        *d='\0';
                        /* **************
                        printf("> %s",b);
                        fflush(stdout); */
                  }
              } else {
                 if (c2 == 'O') { /* SS3 - see XTerm Control Sequences */
                    switch(c3) {
                      case 'P' : /* F1 */
                      break; 
                      case 'Q' : /* F2 */
                      break; 
                      case 'R' : /* F3 */
                      break; 
                      case 'S' : /* F4 */
                      break; 
                      case 'H' : /* home : debug terms ON */
                        IFD_DebugTOn();
                        break; 
                      case 'F' : /* end : debug terms OFF */
                        IFD_DebugTOff();
                        break; 
                    }
                 } else {
                  sprintf(bufd,"# ignore : ESC %d %d (%c) !",(int)c2,(int)c3, c3);
                  D_Tracenl(bufd);
                  *d='\0';
                  /* **************
                  printf("> %s",b);
                  fflush(stdout); */
                 }
              }
              break; 
            default :
/*
              printf("\nCar = %d !\n",(int)c);
              *d='\0';
              printf("> %s",b);
              fflush(stdout);
*/
              break; 
         }
     }
     if (ins) ls = strlen(s);
   }
finBoucle:
   /* printf("fin lireLigne!\n"); */
   if ((n<1) && (FD_IN !=0)) {
      closeFD();  /* fichier loader */
      if (ECHOOFF) printf("\n");
      return 0;
   }
   if ((n<1) && iTERM) {
      close(FD_IN);  /* pipe ou autre */
      Nc=dup(iTERM); /* stdin on term */
      iTERM = 0;
      if (ECHOOFF) printf("\n");
      return 0;
   }
   if (d == f) { /* cas du buffer trop petit */
/*   d=b;
     while (*d != '\n') read(fd,d,1);
**** not in raw mode */
#ifdef DEBUG
     printf("lireLigne : erreur !\n");
#endif
     return(-1);
   } 
   *d = '\0';
#ifdef DEBUG
     printf("lireLigne : retour <%s> !\n",b);
#endif
   if (!FD_IN) putHisto(b);
   incFDlig();
   return(strlen(b));
}
Beispiel #4
0
int leitura (char * nome_fich) {
	FILE * ficheiro;
	
	char *string = (char *) malloc(100);
	char *str = (char *) malloc(100);
	char *token = NULL;
	char limit[2] = " ";
	char modo;

	int linhas = 0;
	int linhas_val = 0;
	int i;

	ficheiro = fopen(nome_fich, "r");
	
	if (strcmp(nome_fich, "FichClientes.txt") == 0){
		while ((string = fgets (str, 100, ficheiro)) != NULL) {
			linhas++;	
			token = strtok(string, limit);
			token[5] = '\0';
			clientes[token[0]-'A'] = insertC(clientes[token[0]-'A'], token);
		}
		printf("Ficheiro lido: %s\nNúmero de linhas lidas: %d\n", nome_fich, linhas);
	}
	else if (strcmp(nome_fich, "FichProdutos.txt") == 0){
		while ((string = fgets (str, 100, ficheiro)) != NULL) {
			linhas++;
			token = strtok(string, limit);
			token[6] = '\0';
			produtos[token[0]-'A'] = insertP(produtos[token[0]-'A'], token);
			for(i = 0; i < 12; i++){
				contas[i] = inserirContabilidade(contas[i],token);
			}
		}
		printf("Ficheiro lido: %s\nNúmero de linhas lidas: %d\n", nome_fich, linhas);	
	}
	else if (strcmp(nome_fich, "Compras.txt") == 0){
		int i = 0;
		int nr;
		int mes;
		double preco;
		char * compra[6];

		while ((string = fgets (str, 100, ficheiro)) != NULL) {
			linhas++;
			
			token = strtok(string, limit);
			compra[0] = token;
			for(i=1; token != NULL && i < 6; i++) {
				token = strtok(NULL, " ");
				compra[i] = token;
			}
			
			/* compra[4] -> cliente
			 * compra[0] -> produto
			 */ 
			preco = strtod(compra[1], &compra[1]);
			nr = atoi(compra[2]);
			mes = atoi(compra[5]);
			modo = compra[3][0];
			
			if (linha_valida(compra, preco, nr, mes, clientes[compra[4][0]-'A'], produtos[compra[0][0]-'A'])){
				linhas_val++;
				compras[mes-1] = insereCompra(compras[mes-1], compra[4], compra[0], modo, preco, nr);
				contas[mes-1] = actualizaContabilidade(contas[mes-1],compra[0],modo,preco,nr);
			}
		}
		printf("Ficheiro lido: %s\nNúmero de linhas lidas: %d\nNúmero de linhas válidas: %d\n", nome_fich, linhas, linhas_val);	
	}
	else return 0;
	
	free(str);
	free(string);
	fclose(ficheiro);
	return 1;
}