sexta-feira, 13 de novembro de 2009

numero primo

 int aux(int n,int j, int i){
 if(j>n/2||i>1){
                 if(i==1)return 1;
                 else return 0;
               }
  else{
     if(n%j==0){  i=j;
                }
    
     return aux(n,j+1,i);
      }                  
                              }
                             
int primo(int x){//a função primo retorna  1 pra numeros primos e 0 pra compostos
    return aux(x,1,0);      
          
           }

segunda-feira, 9 de novembro de 2009

achar caminho em labirinto 2: entrada 3: saida 1 :caminho possivel 0: parede

int percorer(int x, int y, int matrix[][10])
{
if((x >= 0 && x < 10)&&(y >= 0 && y < 10))
{
if(matrix[x][y] == 3){printf("\n%d ,%d",x,y);return 1;}



if(matrix[x][y] == 0||matrix[x][y]>2){return 0;}
else{
matrix[x][y] = 0;

if(percorer(x + 1, y, matrix) == 1){
            
printf("\n %d ,%d",x,y);
return 1;}

if(percorer(x, y + 1, matrix) == 1){
printf("\n %d ,%d",x,y);
return 1;}

if(percorer(x - 1, y, matrix) == 1){
printf("\n %d ,%d",x,y);
return 1;}

if(percorer(x, y - 1, matrix) == 1){
printf("\n %d ,%d",x,y);
return 1;}

}}
else
return 0;
}


2000
1110
0010
0013

sexta-feira, 23 de outubro de 2009

contar letras

int conta(char *v,int i, int j, char letra){
 if( i > j ) return 0;
 else{
    if(v[ i ]== letra)
      return 1+conta( v , i+1 ,  j  , letra);
      else
        return conta( v,i+1 ,j, letra);
         }
 }
  

inverter string

void inv( char *v,int i, int j){
 if( i < j ){
   char aux=v[ i ];
        v[ i ]=v[ j ];
        v[ j ]=aux;
        inv(v, i+1, j-1);     
        
         }
 } 
     

palindromo

int palindromo (char * v, int i, int j ){
 if(i >= j ) return 1;
 else{
   if(v[ i ] = = v[ j ])
   return palindromo( v, i+1, j-1);
  
   else
    return 0; }} 
    

quarta-feira, 21 de outubro de 2009

somar digitos ex: 123 =6

int somadigitos( int n){
if(n == 0) return 0;
else
return (n % 10)+somadigitos( n /10);


}

raiz quadrada

float raizquadrada(float x){
if(x>=1){return rma( 0, x , x ) ;}
else
if(x > = 0 & & x < 1 ) { return raux(0.999999, 0 ,x);}
else
{ return -1;}


}
float raux(float a, float b,float r){
float m;
m =(a +b)/2;
if ((a- b)<0.001){return m;}
else
if(m* m< r){return raux(a,m,r);}
else
{ return raux ( m ,b, r ) ;}



}
float rma(float a, float b,float r){
float m;
m=(a+b)/2;
if ((b-a)<0.001){return m;}
else
if(m*m>r){return rma(a,m,r);}
else
{return rma(m,b,r);}



}

minimo multiplo comum

  1. int mmc2(int a,int b)
  2. {
  3. int div;
  4. if(b == 0) return a;
  5. else
  6. div = (a*b)/(mdc2(a,b));
  7. return (div);
  8. }

maximo divisor comum

  1. int mdc(int a,int b)
  2. {
  3. if(b == 0) return a;
  4. else
  5. return mdc2(b,a%b);
  6. }
bom sempre que precisei nunka achei bons exemplos de funçoes e procedimentos recursivos
entao vou postar alguns exemplos pra quem precise !