int main(int argc, char *argv[]) { time_t segundosInicio; int acumulador=0; int cantidadHijos, tiempoEjecucion; int i; if ( argc!=3) /* Valido la cantidad de argumentos */ { printf("Error en la entrada de argumentos.\n"); printf("La forma de invocar al programa debe ser:\n"); printf("./programa\t Cantidad de Hijos\t Tiempo en segundos\n"); exit(EXIT_FAILURE); } if (valida(argv[1])==1) { cantidadHijos = atoi(argv[1]); /*una vez validado el parametro, los convierto en entero*/ } else { printf("La cantidad de hijos debe ser un numero entero"); exit(EXIT_SUCCESS); } if (valida(argv[2])==1) { tiempoEjecucion = atoi(argv[2]); } else { printf("El tiempo de ejecucion debe ser un numero entero"); exit(EXIT_SUCCESS); } segundosInicio = time(NULL); /*empiezo a contar el tiempo*/ for ( i=1 ; i<=cantidadHijos ; i++ ) { switch ( fork() ) { case -1: perror("Error al crear un hijo"); exit(EXIT_FAILURE); break; case 0: /* estoy en el hijo */ while ( (time(NULL)-segundosInicio)<=tiempoEjecucion ) { acumulador++; } printf("Mi numero logico es %d (%d)\n", i, getpid()); printf("Mi acumulador es %d\n", acumulador); exit(EXIT_SUCCESS); break; default: /* como padre no hago nada */ break; } } exit(EXIT_SUCCESS); }
int main(){ int n; printf("Digite n: \n"); scanf("%d",&n); Gado* vet=(Gado*)malloc(sizeof(Gado)*n); lerGado(vet,n); int op=1; while(op!=6){ menu(); scanf("%d",&op); op=valida(op); if(op==1){ printf("\nQuantidade de leite por semana: %d",leite_semana(vet,n)); } if(op==2){ printf("\nQuantidade de alimentos por semana: %d",alim_semana(vet,n)); } if(op==3){ printf("\nQuantidade de leite que serao produzidos por semana: %d",fleite_semana(vet,n)); } if(op==4){ printf("\nQuantidade de alimentos que serao produzidos por semana: %d",falim_semana(vet,n)); } } }
int punteggio(char parola[]) { int punt = 0, lun; if (valida(parola)) for (lun = strlen(parola) - 1; lun >= 0; lun--) { char c = parola[lun]; punt += valore[ c - 'A']; } return punt; }
void nRainhas(int rainhas[], int n, int size) { int i; if (size == n) imprime_vetor(rainhas, n); else for (i = 1; i <= n; i++) { rainhas[size] = i; if (valida(rainhas, size)) nRainhas(rainhas, n, size + 1); } }
int main() { /* Vetor de registros. */ aniversario_t aniversarios[5]; int i; for(i = 0; i < 5; ++i) { aniversarios[i] = le_aniversario(); valida(aniversarios[i].data); mostra(aniversarios + i); } return 0; }
int main() { int n, m; n = m = 0; printf("dame n y m para el tablero\n"); scanf("%d%d",&n,&m); printf("n:%d---m:%d",n,m); if(!valida(m,n)){ printf("tablero sin solucion\n"); return 0;} int M[m][n]; int posx, posy; posx = posy = 0; #pragma omp parallel private(posx,posy) { #pragma sections { #pragma sections { for(int i =0; i <(n/3);++i) { if((posx+3)<=n) { printf("d,"); posx+=3; }else{ printf("a,"); posy+=3; } printf("\n"); } } } } return 0; }
void assembler(char archivo[]) { int error = 0; FILE *fp,*fp2; char linea[80]; char linea2[80]; char lineaArgs[80]; int primera = 0b00000000; int segunda = 0b00000000; int val = 0; int op; int hx1 = 0; int hx2 = 0; char tkn[6] = " #$,\n"; char *ptr; int numArg = 0; int i = 0; //Arreglos con el opcode y mode int opCode[16] = {0b00000000,0b00000001,0b00000010,0b00000011,0b00000100,0b00000101,0b00000110,0b00000111,0b00001000,0b00001001,0b00000010,0b00001011,0b00001100,0b00001101,0b00001110,0b00001111}; int mode[4] = {0b11000000,0b10000000,0b01000000,0b00000000}; fp = fopen (archivo, "r"); fp2 = fopen ("file.hex", "w"); if(fp == NULL) { printf("No existe el archivo"); } else { //Mientras podamos leer lineas e el archivo while(fgets(linea, 80, fp) != NULL) { //Reiniciamos nuestras variables ptr = NULL; numArg = 0; primera = 0b00000000; segunda = 0b00000000; //la cuenta de los rengloes leidos para poder decir en que linea esta el error error += 1; //nos dice que el mode val = valida(linea); //Copias de la linea leida for(i = 0; i<80;i++) { linea2[i] = linea[i]; lineaArgs[i]= linea[i]; } //Devuelve el numero correspondiente a la posicion+1 de el opcode en el arreglo op = opcode(linea2); //En caso de error por sintaxis etc.. if(val == 0||op == 0) { printf("error en la linea: %d\n", error); exit(0); } //nos saltamos las lineas que son \n else if(linea[0] != '\n') { // printf("%s\n",linea); //dividimos la linea leida en sus comandos por tokens ptr = strtok( linea, tkn ); //Mientras encuentre tokens en la linea while( (ptr = strtok( NULL, tkn )) != NULL ) { //printf("%s\n",ptr); //contamos cuantos argumentos hay numArg += 1; //de que nos den un hex como src if((val==1 || val == 2)&&numArg == 1) { hx1= 0x10 * toHex(mayus(ptr[0])); hx2=toHex(mayus(ptr[1])); segunda = hx1 + hx2; } //Si no nos dan un hex if(val == 3 && numArg == 1) { if(ptr[0]=='A') { segunda=0b00000000; } if(ptr[0]=='B') { segunda=0b10000000; } } //////////////////////////////para los distintos tipos de validacion: //Add,Sub,And,Or,Xor if((op>=1 && op<=5) && val != 4) { if(numArg > 3) { printf("error con los argumentos en la linea %d", error); exit(0); } //Para el segundo argumento if(numArg == 2) { if(ptr[0]=='A') { primera += 0b00000000; } if(ptr[0]=='B') { primera += 0b00100000; } } //para el tercer argumento if(numArg == 3) { if(ptr[0]=='A') { primera += 0b00000000; } if(ptr[0]=='B') { primera += 0b00010000; } } } //Para Not y Dec if((op==6||op == 8) && numArg != 1 && (val == 1 || val == 3)) { if(numArg >1) { printf("error con los argumentos en la linea %d", error); exit(0); } } //Para Mul if(op == 7 && val != 4) { if(numArg >2) { printf("error con los argumentos en la linea %d", error); exit(0); } if(numArg == 2) { if(ptr[0]=='A') { primera += 0b00000000; } if(ptr[0]=='B') { primera += 0b00100000; } } } //Para load y store if((op == 9||op == 10)&& val != 4) { if(numArg >2) { printf("error con los argumentos en la linea %d", error); exit(0); } if(numArg == 2) { if(ptr[0]=='A') { primera += 0b00000000; } if(ptr[0]=='B') { primera += 0b00010000; } } } //Para bra if(op == 11 && numArg != 1 && val != 4) { if(numArg >1) { printf("error con los argumentos en la linea %d", error); exit(0); } } //Para bnz y dbnz if((op == 12 || op == 13) && val != 4) { if(numArg >2) { printf("error con los argumentos en la linea %d", error); exit(0); } if(numArg == 2) { if(ptr[0]=='A') { primera += 0b00000000; } if(ptr[0]=='B') { primera += 0b00100000; } } } //Para rts, nop, halt if((op == 14 || op == 15 || op == 16) && val == 4) { segunda = 0b00000000; primera = 0b00000000; } } primera += mode[val]; primera += opCode[op-1]; fprintf(fp2,"%X\n", primera); fprintf (fp2,"%X\n", segunda); } } fclose(fp); fclose(fp2); printf("archivo creado\n"); } }