int main(void) { r[0] = 0; //La primer recta siempre tendrá el punto nº0. p[0] = 1; //La segunda recta siempre tendrá al punto nº1. for(i=0; i<=7; i++) { r[1] = v[i]; for(j=i+1; j<=7; j++) { r[2] = v[j]; for(k=j+1; k<=7; k++) { r[3] = v[k]; for(m=k+1; m<=7; m++) { r[4] = v[m]; if(verificarSiCumpleError(recta1) == -1) //Si la funcion retorna 0, significa que su error es menor a 0,3 continue; //El -1 ignifica error. if (elOtroVectorVerifica () == -1) //Si retorna 0, la 2da rectsa tambien tendrá error <0,3 continue; //El -1 ignifica error. imprimirMensaje(); } } } } return 0; //Capricho mio, me gusta devolver 0 cuando las cosas son True :D }
int main(int entradas, char* parametros[]) { bool quiereEncriptar = obtenerPeticion( parametros[1] ); string mensajeDeVuelta; if ( quiereEncriptar ) { mensajeDeVuelta = encriptarMensaje( entradas , parametros ); } else { mensajeDeVuelta = desencriptarMensaje( entradas , parametros ); } imprimirMensaje( mensajeDeVuelta ); return 0; }
int main(int argc,char **argv) { //CREO UN AREA DE MEMORIA COMPARTIDA if(argc > 1) idshm = atoi( argv[1] ); else idshm = shmget(0XA,sizeof(struct mensaje),IPC_CREAT|IPC_EXCL|0600); printf("SHARED MEMORY ID %d \n",idshm ); mensaje * msn = (struct mensaje *) shmat(idshm,0,0); msn->estado = OCUPADO; strcpy((*msn).msn,"HOLA MUNDO LOCO"); imprimirMensaje(msn); flagLectura = TRUE; //CREO LISTA Y COLA DE MENSAJE lClientes = (lista *)createList(); lIDClientesLectores = (lista *) createList(); cMensajes = (lista *)createList(); tCliente relleno; strcpy(relleno.Apodo,"TODOS"); relleno.lugar = 0; push_back(lClientes,(void*) &relleno); pthread_t Escritura, Lectura, Gestora; //HILO DE ESCRITURA pthread_create(&Escritura,NULL,(void*)hPrincipalEscritura,NULL); //HILO DE LECTURA pthread_create(&Lectura,NULL,(void*) hPrincipalLectura,NULL); //HILO DE GESTION pthread_create(&Gestora,NULL,(void*) hGestiona,NULL); pthread_join(Escritura,NULL);//TERMINO EL HILO DE ESCRITURA pthread_join(Lectura,NULL); //TERMINO EL HILO DE LECTURA pthread_join(Gestora,NULL); //TERMINO EL HILO DE GESTION shmdt(msn); return EXIT_SUCCESS; }
void hEscritura(void * dato) { struct struct_idSockCliente sCliente; struct struct_idSockCliente * sAuxCliente; sAuxCliente = (struct struct_idSockCliente*)dato; sCliente.idSockCliente = (*sAuxCliente).idSockCliente; int id = sCliente.idSockCliente; char buffer[100]; int finBuffer; mensaje * m = (struct mensaje *) shmat(idshm,0,0); ///////////////////////////////////////////////////////// // HANDSHAKE CON EL CLIENTE // ///////////////////////////////////////////////////////// tCliente Cliente; //RECIVO APODO DEL CLIENTE bzero(buffer,100); finBuffer = read(id,&Cliente.Apodo,100);//buffer,100); //}while(finBuffer > 0 ); // Cliente.Apodo[finBuffer]='\0'; int idLectura; Cliente.lugar = (*lClientes).length;//LUGAR ES IGUAL A ID,LUGAR EN LA LISTA //ENVIAR COD IDENTIFICADOR DEL CLIENTE snprintf(buffer,100,"%d",Cliente.lugar); write(id,buffer,100); push_back(lClientes,(void*)&Cliente); mensaje * mRecivido,maux; for(;;){ mRecivido = (struct mensaje*) malloc(sizeof(mensaje)); //RECIVO ID DEL DESTINATARIO bzero(buffer,100); finBuffer = read(id,buffer,100); if(finBuffer > 0 )//SI NO HAY ERROR { //CASTING DE BUFFER A idLectura buffer[finBuffer]='\0'; idLectura = atoi(buffer); bzero(buffer,100); finBuffer = read(id,(*mRecivido).msn,80 ); mRecivido->msn[finBuffer] ='\0'; (*mRecivido).estado = OCUPADO; strcpy(mRecivido->apodoDestinatario,Cliente.Apodo); (*mRecivido).destinatario = Cliente.lugar; (*mRecivido).destino = idLectura; ///***/// startNext(lClientes); punt r = NULL; r = next( lClientes); while( r != NULL ) { tCliente * aux = (struct tCliente *)r->data; if (aux->lugar == idLectura) strcpy( mRecivido->apodoDestino , aux->Apodo); r = next(lClientes); } ///////// printf(" LOS VALORES SON %d %d \n",(*mRecivido).destino ,(*mRecivido).destinatario);fflush(stdout); imprimirMensaje(mRecivido); push_back(cMensajes,mRecivido); } usleep(100000); } }
void hLectura(void * dato) { struct struct_idSockCliente sCliente; struct struct_idSockCliente * sAuxCliente; sAuxCliente = (struct struct_idSockCliente*)dato; sCliente.idSockCliente = (*sAuxCliente).idSockCliente; fflush(stdout); int id = sCliente.idSockCliente; int posicionEnLista = 0; char buffer[100]; int finBuffer; mensaje * m = (struct mensaje *) shmat(idshm,0,0) ; //////////////////////////////////////////////////// //INICIO UN HANDSHAKE PARA IDENTIFICAR AL CLIENTE // //////////////////////////////////////////////////// //RECIVO LA ID DEL CLIENTE bzero(buffer,100); finBuffer = read(id,buffer,100); buffer[finBuffer]='\0'; posicionEnLista = atoi(buffer); //ID DEL CLIENTE //printf("LA POSICION EN LISTA ES %d\n",posicionEnLista);fflush(stdout); ////ENVIO EL APODO DEL CLIENTE write(id,m->apodoDestino,20); for(;;) { if( IDLECTOR == 0 && lClientes->length > 1 && lIDClientesLectores->length+1>= lClientes->length ) { m->estado = DISPONIBLE; clear(lIDClientesLectores); } if( ( m->destino == 0 || m->destino == posicionEnLista) && m->estado == OCUPADO && flagLectura == TRUE ) { if(IDLECTOR == 0) { startNext(lIDClientesLectores); punt r = NULL; r = next( lIDClientesLectores); while( r!=NULL && (*(int*)r->data)!= m->destino) { r = next(lClientes); } if(r ==NULL) { write(id,m->msn,100); write(id,m->apodoDestinatario,20); push_back(lIDClientesLectores,(void*)&m->apodoDestinatario); } } else { write(id,m->msn,100); write(id,m->apodoDestinatario,20); m->estado = DISPONIBLE; } imprimirMensaje(m); } usleep(100000); } // while( strcmp(buffer,"exit()") ); close(id); pthread_exit(NULL); }