Integer Sqrt
unsigned int sqrt(unsigned int n){ unsigned int a; for (a=0;n>=(2*a)+1;n-=(2*a++)+1); return a; }
11395 users tagging and storing useful source code snippets
Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
John Edgar Congote Calle http://jcongote.blogspot.com
unsigned int sqrt(unsigned int n){ unsigned int a; for (a=0;n>=(2*a)+1;n-=(2*a++)+1); return a; }
#include <stdio.h> #include <stdlib.h> typedef struct _clase{ int a; void(*func[3])(struct _clase*); } clase; void clase_func1 (struct _clase *p){ printf("Funcion 1: %i\n",p->a); } void clase_func2 (struct _clase *p){ printf("Funcion 2: %i\n",p->a); } void clase_func3 (struct _clase *p){ printf("Funcion 3: %i\n",p->a); } void holaMundo(){ printf("Hola Mundo!\n"); } typedef void(*func) (void); int main(int argc, char *argv[]) { func val; clase c; c.func[1]=&clase_func1; c.func[2]=&clase_func2; c.func[0]=&clase_func3; val=&holaMundo; val(); c.a=1; c.func[0](&c); c.a=2; c.func[1](&c); c.a=3; c.func[2](&c); system("PAUSE"); return 0; }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Proyecto { /** * @param args */ public static void main(String[] args) { String texto = null; int n = 0, t = 0; Tarea tareas[] = null, inicio = null, fin = null; try { BufferedReader in = new BufferedReader(new InputStreamReader( System.in)); texto = in.readLine(); n = Integer.parseInt(texto); tareas = new Tarea[n]; inicio = new TareaInicio(); fin = new TareaFinal(); inicio.setNombre("Inicio"); inicio.setTiempo(0); fin.setNombre("Fin"); fin.setTiempo(0); for (int i = 0; i < n; i++) { texto = in.readLine(); tareas[i] = new Tarea(); StringTokenizer st = new StringTokenizer(texto, ","); String nombre, tipo, tiempo; nombre = st.nextToken(); tipo = st.nextToken(); tareas[i].setNombre(nombre); if (tipo.equals("F")) { tiempo = st.nextToken(); tareas[i].setTiempo(Integer.parseInt(tiempo)); } else if (tipo.equals("A") || tipo.equals("P")) { tareas[i].setTiempo(0); } } texto = in.readLine(); t = Integer.parseInt(texto); for (int i = 0; i < t; i++) { String org, des; Tarea torg = null, tdes = null; texto = in.readLine(); StringTokenizer st = new StringTokenizer(texto, ","); org = st.nextToken(); des = st.nextToken(); if (org.equals(inicio.getNombre())) { torg = inicio; } else { for (int j = 0; j < n; j++) { if (org.equals(tareas[j].getNombre())) { torg = tareas[j]; break; } } } if (des.equals(fin.getNombre())) { tdes = fin; } else { for (int j = 0; j < n; j++) { if (des.equals(tareas[j].getNombre())) { tdes = tareas[j]; break; } } } if (torg == null || tdes == null) { } torg.addConcecuente(tdes); tdes.addAntecedente(torg); } } catch (IOException e) { System.out.println("Error en entrada de datos"); } fin.terminacionRapida(); inicio.inicioTardio(); System.out.print("Ruta Critica: Inicio, "); for (int i = 0; i < n; i++) { if (tareas[i].isCritico()) { System.out.print(tareas[i].getNombre() + ", "); } } System.out.print(" Fin\n"); System.out.println("Tiempo: " + fin.inicioTardio()); System.out.println(inicio.getNombre() + " holgura: " + inicio.getHolgura()); for (int i = 0; i < n; i++) { System.out.println(tareas[i].getNombre() + " holgura: " + tareas[i].getHolgura()); } System.out.println(fin.getNombre() + " holgura: " + fin.getHolgura()); } } //////////////////////// import java.util.ArrayList; public class Tarea { private String nombre; private int tiempo; private int holgura; private ArrayList antecedentes; private ArrayList consecuentes; private int iniciomasrapido; private int terminacionmasrapida; private int iniciomastarde; private int terminaciontarde; Tarea(){ this.antecedentes = new ArrayList(); this.consecuentes = new ArrayList(); } void setNombre(String nombre){ this.nombre=nombre; } void setTiempo(int tiempo){ this.tiempo=tiempo; } public String getNombre() { return nombre; } public int getTiempo() { return tiempo; } public int terminacionRapida(){ this.iniciomasrapido=0; for (int i = 0; i < antecedentes.size(); i++) { if(((Tarea)antecedentes.get(i)).terminacionRapida()>this.iniciomasrapido){ this.iniciomasrapido=((Tarea)antecedentes.get(i)).terminacionRapida(); } } this.terminacionmasrapida=this.iniciomasrapido+this.tiempo; return (this.terminacionmasrapida); } public int inicioTardio(){ this.terminaciontarde=999999; for (int i = 0; i < consecuentes.size(); i++) { if(((Tarea)consecuentes.get(i)).inicioTardio()<this.terminaciontarde){ this.terminaciontarde=((Tarea)consecuentes.get(i)).inicioTardio(); } } this.iniciomastarde=this.terminaciontarde-this.tiempo; return (this.iniciomastarde); } int getHolgura(){ this.holgura=this.iniciomastarde-this.iniciomasrapido; return this.holgura; } @SuppressWarnings("unchecked") public void addAntecedente(Tarea t){ this.antecedentes.add(t); } @SuppressWarnings("unchecked") public void addConcecuente(Tarea t){ this.consecuentes.add(t); } boolean isCritico(){ return (this.getHolgura()==0); } } ///////////////////////// public class TareaFinal extends Tarea { public int inicioTardio(){ return this.terminacionRapida(); } public int getHolgura(){ return 0; } } /////////////////// public class TareaInicio extends Tarea { public int terminacionRapida(){ return 0; } public int getHolgura(){ return 0; } }
#include <stdio.h> #include <stdlib.h> void mostrar(int **a){ int i,j; for (i=0;i<10;i++){ for (j=0;j<10;j++){ printf("%i",a[i][j]); } printf("\n"); } }; int main(){ int i,j,**a; a=(int**)malloc(10*sizeof(int*)); for (i=0;i<10;i++){ a[i]=(int*)malloc(10*sizeof(int)); for (j=0;j<10;j++){ a[i][j]=i; } } mostrar(a); getchar(); return 0; }
#include <stdio.h> #include <stdlib.h> #include <time.h> int menu(){ int select=0; do{ printf("Menu:\n"); printf("1. Score\n"); printf("2. Jugar\n"); printf("3. Salir\n"); printf("Entre la opcion:\n"); scanf("%i",&select); }while(!(select>0 && select<4)); return select; } void mostrar_score(int puntaje){ //Si puntaje <0 entonces no agrega jugador //Sino puede agregarlo } void jugada_maquina(int **tablero, int f, int c){ int i,j; do{ i=rand()%f; j=rand()%c; } while (!tablero[i][j]==0); tablero[i][j]=2; } void mostrar_tablero(int **tablero,int f, int c){ int i,j; for (i=0;i<f;i++){ for (j=0;j<c;j++){ switch(tablero[i][j]){ case 0: printf("*");break; case 1: printf("X");break; case 2: printf("O");break; } } printf("\n"); } } int evaluar(int **tablero,int f,int c){ int i,j; int cambio=0; int tablas=1; int gana=0; do{ cambio=0; for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==3){ if (i-1>0) if (tablero[i-1][j]==1) tablero[i-1][j]=3,cambio=1; if (i+1<f) if (tablero[i+1][j]==1) tablero[i+1][j]=3,cambio=1; if (j-1>0) if (tablero[i][j-1]==1) tablero[i][j-1]=3,cambio=1; if (i+1<c) if (tablero[i][j+1]==1) tablero[i][j+1]=3,cambio=1; } else if (tablero[i][j]==1){ if (i-1>0) if (tablero[i-1][j]==0) tablero[i][j]=3,cambio=1; if (i+1<f) if (tablero[i+1][j]==0) tablero[i][j]=3,cambio=1; if (j-1>0) if (tablero[i][j-1]==0) tablero[i][j]=3,cambio=1; if (i+1<c) if (tablero[i][j+1]==0) tablero[i][j]=3,cambio=1; } } } }while(cambio); for (i=0;i<f;i++){ for (j=0;j<c;j++){ if (tablero[i][j]==1) gana=1; } } for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==3) tablero[i][j]=1; } } if (gana==1){ return 2; } gana=0; do{ cambio=0; for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==4){ if (i-1>0) if (tablero[i-1][j]==2) tablero[i-1][j]=4,cambio=1; if (i+1<f) if (tablero[i+1][j]==2) tablero[i+1][j]=4,cambio=1; if (j-1>0) if (tablero[i][j-1]==2) tablero[i][j-1]=4,cambio=1; if (i+1<c) if (tablero[i][j+1]==2) tablero[i][j+1]=4,cambio=1; } else if (tablero[i][j]==2){ if (i-1>0) if (tablero[i-1][j]==0) tablero[i][j]=4,cambio=1; if (i+1<f) if (tablero[i+1][j]==0) tablero[i][j]=4,cambio=1; if (j-1>0) if (tablero[i][j-1]==0) tablero[i][j]=4,cambio=1; if (i+1<c) if (tablero[i][j+1]==0) tablero[i][j]=4,cambio=1; } } } }while(cambio); for (i=0;i<f;i++){ for (j=0;j<c;j++){ if (tablero[i][j]==2) gana=1; } } for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==4) tablero[i][j]=2; } } if (gana==1){ return 1; } for (i=0;i<f;i++){ for (j=0;j<c;j++){ if(tablero[i][j]==0) tablas=0; } } if (tablas==1) return 4; return 0; } int jugar(){ int i,j,f,c; int **tablero; int puntaje=0; printf ("Entre el numero de filas y columnas del tablero:\n"); scanf("%i%i",&f,&c); tablero = (int**)malloc(f*sizeof(int*)); for (i=0;i<f;i++){ tablero[i]= (int*)malloc(c*sizeof(int)); for (j=0;j<c;j++){ tablero[i][j]=0; } } do{ int ni,nj; mostrar_tablero(tablero,f,c); do{ printf("Entre el numero de la coordenada:\n"); scanf("%i%i",&ni,&nj); if (ni==0 && nj==0){ printf("Desea Salir (s/n)\n"); if(getch()=='s'){ for (i=0;i<f;i++){ free(tablero[i]); } free(tablero); return -1; } else continue; } ni--;nj--; if(!(ni>=0 && ni<f && nj>=0 && nj<c)){ printf("La coordenana esta fuera de los limites\n"); continue; } if (tablero[ni][nj]!=0){ printf("La coordenada colocada esta ocupada\n"); continue; } break; }while (1); tablero[ni][nj]=1; if(evaluar(tablero,f,c)==0){ jugada_maquina(tablero,f,c); }else { //gano el humano } puntaje=evaluar(tablero,f,c); printf("puntaje: %i\n",puntaje); }while(puntaje==0); for (i=0;i<f;i++){ free(tablero[i]); } free(tablero); } int main(){ int salir=0; do{ switch (menu()){ case 1: mostrar_score(-1); break; case 2: mostrar_score(jugar()); break; case 3: salir=1; break; } }while(!salir); printf("Gracias por utilizar el programa"); return 0; }
typedef void (*funcptr)(); (*(funcptr) 0)(); int main(){ };
#include <fstream> using namespace std; char nmeses[12][11]={ "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"}; char ndias[7][10]={ "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", }; int meses[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int main(){ int i,j,k,l; int cont=6; int clases[9][200][2]; int contc[9]={0,0,0,0,0,0,0,0,0}; int semana[9][4]={ {2,2,3,-1}, {2,2,4,-1}, {3,5,5,-1}, {3,5,5,-1}, {1,4,4,-1}, {4,4,5,-1}, {2,4,5,-1}, {1,1,3,3}, {1,1,3,3}}; ofstream arc("clases.txt"); for (i=0;i<12;i++){ for (j=1;j<=meses[i];j++,cont++){ if (! ((i==0 && j>0 && j<24) || (i==2 && j>=21 && j<28))){ for (k=0;k<9;k++){ for (l=0;l<4 && semana[k][l]!=-1;l++){ if (cont%7==semana[k][l]){ clases[k][contc[k]][0]=i; clases[k][contc[k]][1]=j; contc[k]++; } } } } } } for (i=0;i<contc[4];i++){ arc<<i+1<<",7A, "<<clases[4][i][1]<<"/"<<clases[4][i][0]+1<<"/2005"<<endl; arc<<i+1<<",7B, "<<clases[5][i][1]<<"/"<<clases[5][i][0]+1<<"/2005"<<endl; arc<<i+1<<",7C, "<<clases[6][i][1]<<"/"<<clases[6][i][0]+1<<"/2005"<<endl<<endl; } arc.close(); return 0; }
#include "stdafx.h" #using <mscorlib.dll> using namespace System; using namespace System::Threading; public __gc class MiHilo{ public: MiHilo(){ }; ~MiHilo(){ }; static void funcionHilo(){ Console::WriteLine(S"Este es un hilo...."); Thread::Sleep(1000); //Bloquea el hilo durante 1 segundo. Console::WriteLine(S"Saliendo del hilo..."); } }; void ParBegin([ParamArray] ThreadStart * args[]){ int cont; for (cont=0;cont<args->Length;cont++){ Thread *oThread = new Thread(args[cont]); oThread->Start(); } } int _tmain(void) { /* Los argumentos que se pasan a la funcion es el arreglo de delegados que los hilos van a ejecutar. Hay que recordar que ThreadStart es un delegate definido en .NET */ ThreadStart * args[] = {new ThreadStart(0,&MiHilo::funcionHilo),new ThreadStart(0,&MiHilo::funcionHilo),new ThreadStart(0,&MiHilo::funcionHilo)}; Console::WriteLine(S"Entrando a ParBegin"); ParBegin(args); Console::WriteLine(S"Saliendo de ParBegin"); Thread::Sleep(2000); //Durmiendo 2 Segundos Console::WriteLine(S"Finalizando Programa"); return 0; }
#include <stdio.h> typedef struct _operation{ unsigned int op; int arg1; int arg2; int arg3; } operation; typedef struct _scriptEngine{ int var[255]; int ip; int halt; operation code[