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; }
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; }
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); }
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; }
/* �� Construtor default ��������������������������������������������������������� */ IString::IString() { IRASTROSTRING("IString::IString()\n") alocar(sizeof(NULL)); *(pBuffer+0)=NULL; }
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; }