示例#1
0
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);
}
示例#2
0
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));
      }
      
   }
   
   
   
  
   
}
示例#3
0
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);
        }
}
示例#5
0
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;
}
示例#6
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;
}
示例#7
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");
    }
}