C'de dosya kullanarak mid-square metodunu nasıl yazabilirim? Anahtarın orta noktasını dosya işlemlerini kullanarak nasıl bulabileceğim konusunda yardımcı olursanız sevinirim..
shark_hack
29/11/2006, 12:52
#include <stdio.h>
#include <stdlib.h>
int conta_digitos(int num);
int midcut(int num,int nd);
int main(int argc,char **argv)
{
int seed,nd,next,qtd,i;
if (argc != 3) {
printf("Uso: \n"
" %s \n"
" .\n",
argv[0]);
return(0);
}
sscanf(argv[1],"%d",&seed);
sscanf(argv[2],"%d",&qtd);
nd = conta_digitos(seed);
printf("x[0] = %d\n",seed);
for(i=1;i<=qtd;i++) {
next = midcut(seed * seed,nd);
printf("(%4d)^2 = %10d => x[%3d] = %d\n",seed,seed*seed,i,next);
seed = next;
}
return(0);
}
int conta_digitos(int num)
{
int cont;
for(cont=1;num%10 != num;cont++)
num /= 10;
return(cont);
}
int midcut(int num,int nd)
{
int i,res,volta;
char *string,*midpoint;
nd *= 2;
res = nd - conta_digitos(num);
string = malloc((nd+1) * sizeof(char));
if (res > 0) {
for(i=0;i<res;i++) {
string[i] = '0';
midpoint = &string[i+1];
}
sprintf(midpoint,"%d",num);
}
else
sprintf(string,"%d",num);
nd /= 2;
if (nd % 2 == 0) {
for(i=0;i<nd/2;i++)
string[i] = ' ';
for(i=3*nd/2;i<2*nd+1;i++)
string[i] = ' ';
}
else {
for(i=0;i<nd-nd/2;i++)
string[i] = ' ';
for(i=2*nd-nd/2;i<2*nd;i++)
string[i] = ' ';
}
sscanf(string,"%d",&volta);
return(volta);
}
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.