int main (){
    int n, i;
    float somamedia=0;
    Taluno *aluno, *pior, *melhor, *ptr;

    printf ("Apresente o numero de alunos: ");
    scanf ("%d", &n);

    alocar(aluno, n);

    pior=aluno;
    melhor=aluno;
    ptr=aluno;

    //ler dados
    for (i=0; i<n; i++, ptr++){
        leraluno(&aluno[i]);

        if ((ptr->nota)>(melhor->nota))
            melhor=ptr;
        else if ((ptr->nota)<(pior->nota))
            pior=ptr;
    }

    printf ("\n\nO Melhor estudante foi %s com nota %.2f\n", melhor->nome, melhor->nota);
    printf ("O Pior estudante foi %s com nota %.2f\n", pior->nome, pior->nota);
    free(aluno);
    return 0;
}
Beispiel #2
0
int sys_dir () {
   dir* directorio = NULL;

   char* dato = (char*) alocar ( 256 );

   imprimir_cadena ( "\nListado del directorio raiz:\n" );

   if ( sys_abrir_dir ( directorio ) == -1 ) {
      imprimir_cadena ( "Error al abrir dir!\n" );
      sys_salir (1);
   } 

   while ( sys_leer_entrada_dir ( dato, directorio ) != NULL ) {
      imprimir_cadena ( dato );
   }
   return 0;
}
Beispiel #3
0
int main() {
	   
	int n, i;     

	
	printf("Qual o tamanho de seu string? ");
	scanf("%d",&n);

	getchar();

	alocar(n);
		
	printf("Entre o string: ");
	gets(s);

	printf("String:");
	
	for(i=0;i<n;i++){
	   if(s[i] != 'a'){ 	
	      if(s[i] != 'e'){ 	
		 if(s[i] != 'i'){ 	
	            if(s[i] != 'o'){ 	
		       if(s[i] != 'u'){	
		          if(s[i] != 'A'){ 	
			     if(s[i] != 'E'){ 	
				if(s[i]!='I'){ 	
				   if(s[i] != 'O'){
				      if(s[i]!='U'){	 	
					 printf("%c", s[i]);
				      }
			           }
				}
			     }
		          }
		       }	
                    }
		 }
              }
	   }
	}				    

	printf("\n");
	free(s);
}
Beispiel #4
0
int sys_ejecutar ( char* arch, char* args[] ) {
   int i, fd, idx_codigo, idx_dato;
   pcb* nueva_tarea;
   dword funcion;
   char* dato = (char*)alocar (11);
   char* archivo = arch + recuperar_base ();
   char** args1 = (char**) (((int)args) + recuperar_base() );

   char* argu;

   if ( args1 != NULL ) {
      i = 0;
      imprimir ( "Mostrando argumentos:\n" );
      while ( args1[i] != NULL ) {
         argu = (char*) ( ((int)args1[i]) + recuperar_base () );
         imprimir ( "args[%d] = <%s>\n", i, argu );
         i++;
      }

      for (i = 0; i < 12 && archivo [i] != '\0'; i++) {
         dato [i] = archivo [i];
      }
   } else {
      imprimir ( "No se recibieron argumentos en ejecutar\n" );
   }

   imprimir_cadena ( "Abriendo: <" );
   imprimir_cadena ( archivo );
   imprimir_cadena ( " - " );
   imprimir_cadena ( dato );
   imprimir_cadena ( ">\n" );

   fd = abrir ( archivo );
   
   funcion = (dword) sys_alocar ( tarea_actual->archivos [fd].ed.tamanio +
                                  TAMANIO_PILA_USUARIO );


   if ( funcion == NULL ) {
     return -1;
   }
   
   if ( fd == ERROR ) {
      return -1;
   } else {
   
      idx_codigo = siguiente_indice_gdt ();
      
      setear_desc_seg ( SEG_CODIGO, funcion, &_gdt->descriptores[idx_codigo],
                        0xFFFFF );
      //                        tarea_actual->archivos [fd].ed.tamanio );
      
      idx_dato = siguiente_indice_gdt ();
      
      setear_desc_seg ( SEG_DATOS, funcion, &_gdt->descriptores[idx_dato],
                        0xFFFFF );
      //                  tarea_actual->archivos [fd].ed.tamanio +
      //                  TAMANIO_PILA_USUARIO );
      
      leer_archivo (fd, (void*)funcion, tarea_actual->archivos [fd].ed.tamanio);
      
      nueva_tarea = crear_tarea ((handler_tarea)funcion);
       
      //nueva_tarea->dato = archivo;
      //nueva_tarea->dato = arch;
      nueva_tarea->dato = dato;

      nueva_tarea->tarea->eip = 0x00;
      
      nueva_tarea->tarea->cs = 8 * idx_codigo;
      
      nueva_tarea->tarea->ds = 8 * idx_dato;
      nueva_tarea->tarea->es = nueva_tarea->tarea->ds;
      nueva_tarea->tarea->fs = nueva_tarea->tarea->ds;
      nueva_tarea->tarea->gs = nueva_tarea->tarea->ds;
      nueva_tarea->selector_ds = nueva_tarea->tarea->ds >> 3;
      
      /*
      nueva_tarea->tarea->esp = funcion + TAMANIO_PILA_USUARIO + 
                                tarea_actual->archivos [fd].ed.tamanio;
      
      nueva_tarea->tarea->ss = nueva_tarea->tarea->ds;
      nueva_tarea->tarea->ss0 = nueva_tarea->tarea->ds;
      nueva_tarea->tarea->ss1 = nueva_tarea->tarea->ds;
      nueva_tarea->tarea->ss2 = nueva_tarea->tarea->ds;
      */

      /*
      imprimir_cadena ("poniendo en ejecucion a ");
      imprimir_cadena (dato);
      imprimir_cadena ("\n");
      */
      agregar (nueva_tarea);

      //cerrar ( fd );
   }
   return nueva_tarea->pid;
}
Beispiel #5
0
/*
�� Construtor default ���������������������������������������������������������
*/
IString::IString()
{
  IRASTROSTRING("IString::IString()\n")
  alocar(sizeof(NULL));
  *(pBuffer+0)=NULL;
}
Beispiel #6
0
int main () {
   pcb* aux = NULL;

   //char mensaje_bienvenida[26] = "Bienvenidos al banquete!\0";
   //char subrayado[26] = "~~~~~~~~~~~ ~~ ~~~~~~~~\n\0";

   //int len_msg = longitud_cadena (mensaje_bienvenida);

   lista_ready_inicio = NULL;
   lista_ready_fin = NULL;
   ultima_posicion = _lowMemorySize + 2 * 1024 * 1024;
   //ultima_posicion = 1024 * 1024;
   //ultima_posicion = inicio_memoria;

   setear_siguiente_indice (3);

   setear_interrupciones ();

   // Seteo IDT
   cargar_idt ( _idt, CANT_DESCRIPT * 8 - 1 );

   habilitar_irqs ();

   inicializa_teclado();

   /**
    * Se crea la tarea init y se agrega a la cola de ready
    * Tambien se setea el TR con el selector de su TSS, con lo
    * que al hacer el primer context switch (ir_a_tarea()) quedara
    * asignada init como la "tarea de sistema".
    * nota: por ahora init va a ser la tarea idle
    */
   aux = crear_tarea (init);
   aux->dato = (char*)alocar (5);
   aux->dato = "INIT";
   aux->tipo = PROCESO_SISTEMA;
   agregar (aux);
 
   cargar_tr (aux->selector * 8);

   setear_temporizador ();

   pcb_scheduler = crear_tarea (admin_procesos);
   pcb_scheduler->dato = (char*)alocar (6);
   pcb_scheduler->dato = "ADMIN\0";
   pcb_scheduler->tipo = PROCESO_SISTEMA;
   pcb_scheduler->tarea->eflags = 0x2;

   sti();

   //inicializar_ide();

   inicializar_fdc();

   imprimir ( "Bienvenidos al banquete!\n\n" );

   sys_ejecutar ( "INTERFAZ", NULL );

   while (1);

   return 0;
}