コード例 #1
0
ファイル: psp_fmgr.c プロジェクト: kerheol/dingux-int
static void
getDir(const char *path)
{
  DIR *fd;
  int b=0;
  int format = 0;
  int i = 0;

  nfiles = 0;

  strtok(path, "\n");

  if(strcmp(path,"/")){
    strcpy(files[nfiles].d_name,"..");
    files[nfiles].d_type = DT_DIR;
    sortfiles[nfiles] = files + nfiles;
    nfiles++;
    b=1;
  }
  fd = opendir(path);

  if (! fd) return;

  while(nfiles<PSP_FMGR_MAX_ENTRY){
    memset(&files[nfiles], 0x00, sizeof(struct dirent));
    struct dirent *file_entry = readdir(fd);
    if (! file_entry){
      break;
    }
    memcpy(&files[nfiles], file_entry, sizeof(struct dirent));
    if(files[nfiles].d_name[0] == '.'){
      continue;
    }

    if(files[nfiles].d_type == DT_DIR) {
      strcat(files[nfiles].d_name, "/");
      sortfiles[nfiles] = files + nfiles;
      nfiles++;
      continue;
    }
    sortfiles[nfiles] = files + nfiles;
    format = psp_fmgr_getExtId(files[nfiles].d_name);
    if ( (format == user_file_format            ) ||
         ((format == FMGR_FORMAT_ZIP          ) &&
          (user_file_format != FMGR_FORMAT_KBD) ) )
    {
      nfiles++;
    }
  }
  closedir(fd);
  if(b)
    my_sort(sortfiles+1, 0, nfiles-2);
  else
    my_sort(sortfiles, 0, nfiles-1);
}
コード例 #2
0
ファイル: psp_fmgr.c プロジェクト: kerheol/dingux-int
int
psp_fmgr_get_dir_list(char *basedir, int dirmax, char **dirname)
{
  int index = 0;
  DIR* fd = 0;
  nfiles = 0;
  fd = opendir(basedir);
  if (! fd) return 0;
  while ((nfiles<PSP_FMGR_MAX_ENTRY) && (nfiles < dirmax)) {
    memset(&files[nfiles], 0x00, sizeof(struct dirent));
    struct dirent *file_entry = readdir(fd);
    if (! file_entry) break;
    memcpy(&files[nfiles], file_entry, sizeof(struct dirent));
    if(files[nfiles].d_name[0] == '.') continue;

    if(files[nfiles].d_type == DT_DIR) {
      strcat(files[nfiles].d_name, "/");
      sortfiles[nfiles] = files + nfiles;
      nfiles++;
      continue;
    }
  }
  closedir(fd);
  my_sort(sortfiles, 0, nfiles-1);
  for (index = 0; index < nfiles; index++) {
    dirname[index] = strdup(sortfiles[index]->d_name);
  }
  return nfiles;
}
コード例 #3
0
ファイル: myword.c プロジェクト: lucywyman/client-server
void split_lines(int input){
    fprintf(stderr, "C\n");
    int status;
    int p[2];
    if(pipe(p) == -1){
        printf("Could not create pipe\n");
        exit(1);
    }
    pid_t pid = fork();
    if(pid == (pid_t)0){
        dup2(input, 0);
        dup2(p[1], 1);
        close(input);
        close(p[0]);
        close(p[1]);
        my_sort(p[1]);
        if(execlp("awk", "awk", "{ for(i = 1; i<=NF; i++) { printf $i; } }", NULL) == -1){
            printf("awk did not work!\n%s\n", strerror(errno));
        }
    } else {
        close(p[1]);
        close(p[0]);
        wait(&status);
    }
}
コード例 #4
0
ファイル: ex_02.cpp プロジェクト: Devtron3D/Books
//---------------------------------------------
void Name_pairs::sort()
{
	// check if there is anything to sort
	// both name and age must contain the same amount of values.
	if (name.size() == 0 || age.size() == 0 || name.size() != age.size())
	{
		cout << "Warrning: Name_pairs::sort(), name or age, size is wrong.";
		return;
	}
	
	// using the sort style from the last chapter

	vector<string> old_names = name;    // names before sort
	vector<double> new_ages;				// new age after sort.

	my_sort(name);	// sort name vector in alphabetical order

	for (unsigned int i = 0; i < name.size(); ++i)
	{
		for (unsigned int j = 0; j < old_names.size(); ++j)
		{
			if (name[i] == old_names[j])
			{
				new_ages.push_back(age[j]);		// add age to correct name
				j = old_names.size();			// end loop, set invariant.
			}
		}
	}
	age = new_ages;   // assign the new age location
}
コード例 #5
0
ファイル: main-ls.c プロジェクト: Crabbit/c
//static void print_dir( char const *name, char const *realname, bool command_line_arg )
//Fileinfo * get_dir( char const *name ,enum Ignore_mode ignore_mode , bool recursive )
//获取指定目录下的各个信息
Fileinfo * get_dir( char const *name )
{
	//统计文件个数
	count = 0;

	//读取目录
	DIR *dirp;
	struct dirent *next;

	//获得目录名称
	char str[256];

	//定义动态数组
	//存取目录文件信息
	Fileinfo *file_array;

	//获取文件详细信息
	struct stat buf;

	//申请动态数组首地址
	file_array = (Fileinfo *)malloc( sizeof(Fileinfo) );

	dirp = opendir( name );
	if( !dirp )
	      fprintf( stderr, "lsl:cannot open directory %s.\n", name );
	else
	{
		while((next = readdir( dirp )) != NULL )
		{
			file_array = (Fileinfo *)realloc( file_array, (count + 2) * sizeof(Fileinfo));
			
			strcpy( str, name );
			strcat( str, "/" );
			strcat( str, next->d_name );
			//printf( "lstat file is %s\n", str);
			if( lstat( str, &buf ) == -1 )
				my_err( "lstat",__LINE__ );
			file_array[count].file_mode = buf.st_mode;
			file_array[count].file_nlink = buf.st_nlink;
			file_array[count].file_uid = buf.st_uid;
			file_array[count].file_gid = buf.st_gid;
			file_array[count].file_size = buf.st_size;
			file_array[count].file_mtime = buf.st_mtime;
			file_array[count].file_atime = buf.st_atime;
			file_array[count].file_ctime = buf.st_ctime;
			file_array[count].file_name = next->d_name;
			//printf( "%s\n",next->d_name );
			//printf( "%s\n", file_array[count].file_name );
		      	count++;
		}
		//printf( "Total %d file.\n", count );
	}

	my_sort( file_array );

	closedir( dirp );
	return file_array;
}
コード例 #6
0
ファイル: main.cpp プロジェクト: I97Ilya97/M_2Sort
int main()
{
	int m[] = { 123, 3, 0, 13212, -100 };
	my_sort(std::begin(m), std::end(m));
	size_t i = 0;
	while (i< (std::end(m) - std::begin(m))) {
		std::cout << m[i] << "\n";
		i++;
	}
	std::vector<double> vec = { 123.0021, 3.0, 0.0, 13212.5401, -100.0 };
	my_sort(vec.begin(), vec.end());
	i = 0;
	std::cout << "\n****\nvector<double>\n****\n";
	while (i< (vec.size())) {
		std::cout << vec[i] << "\n";
		i++;
	}
	system("pause");
	return 0;
}
コード例 #7
0
ファイル: ft_mapsort_bykey.c プロジェクト: thomasLeMeur/fdf
void		ft_mapsort_bykey(t_map **map,
		int (*cmp)(const t_data *, const t_data *))
{
	t_map	*i;
	t_map	*j;
	t_map	*prev;

	if (!map || !*map || !(*map)->next || !cmp)
		return ;
	j = *map;
	while (j->next)
		my_sort(map, &j, NULL, cmp);
	prev = *map;
	i = prev->next;
	while (i)
	{
		j = i;
		while (j->next)
			my_sort(&i, &j, prev, cmp);
		prev = prev->next;
		i = prev->next;
	}
}
コード例 #8
0
ファイル: sort.cpp プロジェクト: tpAlgorithms/sort_contest
int main() {
  // allocate memory for your structure (array, stack, list, etc.)
  static const int MAX_LINE_COUNT = (1024 * 1024);
  char **line_array = (char**)malloc(sizeof(char*) * MAX_LINE_COUNT);
 
  int count = read_data(line_array);

  // you should replace this with your own version of sort
  //std::sort(&line_array[0], &line_array[count], my_less);
  my_sort(&line_array[0], &line_array[count], my_less);

  print_line_array(line_array, count);

  free_data(line_array, count);
  free(line_array); // release memory user for your structure (array, stack, list, etc.)

  return 0;
}
コード例 #9
0
ファイル: compute.c プロジェクト: thomasLeMeur/push_swap
void		my_compute(int *pile1, int *pile2, int size, int opt)
{
	int		c;
	int		ret;
	char	*buf;
	int		r[3][5];

	r[0][4] = opt;
	my_init1(&c, r[0], size, &buf);
	while (++c && (r[0][3] = my_sort(pile1, r[0][1], size, -1)))
	{
		if (my_init2(pile1, pile2, r[0], r) && r[0][4] == 2)
			my_debug(pile1, pile2, r[0][1], r[0][2]);
		if ((ret = check_a(pile1, pile2, &buf, r)) == 0)
			return ;
		else if (ret == 1)
			continue ;
		if ((ret = check_b(pile1, pile2, &buf, r)) == 0)
			return ;
	}
	if (opt == 2)
		my_debug(pile1, pile2, r[0][1], r[0][2]);
	return (my_end(opt, c - 1, buf, **r - 1));
}
コード例 #10
0
void		ft_push_swap(int amt_a, int *list_a)
{
	int *list_b;
	int amt_b;
	int moves;
	int i;
	int *res_a;

	i = 0;
	res_a = list_a;
	moves = 0;
	if (!(list_b = (int *)malloc(sizeof(int) * amt_a)))
		return ;
	amt_b = 0;
	if (in_order(amt_a, res_a) == 0 && amt_a >= 15)
	{
		list_b = quick_sort(list_a, list_b, amt_a, &moves);
		res_a = my_sort(list_b, list_a, amt_a, &moves);
	}
	else if (in_order(amt_a, res_a) == 0 && amt_a <= 15)
		res_a = bubble_sort(list_a, list_b, amt_a);
	ft_push_out(list_b);
	return ;
}
コード例 #11
0
void ColorLines::patchLine(double lambdas[3], double p1[3], double p2[3], double *img, int h, int w, int c, int min_y, int max_y, int min_x, int max_x, bool onlyPositive){
    int numPx=(max_y-min_y+1)*(max_x-min_x+1);
    double d[numPx];
    double p[c*numPx];
    int ind=0;
    for(int i=min_y; i<=max_y; i++){
        for(int j=min_x; j<=max_x; j++){
            for(int k=0; k<c; k++){
                p[c*ind+k]=img[c*(w*i+j)+k];
            }
            ind++;
        }
    }


    ind=0;
    bool n_zero;
    for(int i=0; i<numPx; i++){
        n_zero=false;
        for(int k=0; k<c; k++){
            if(p[c*i+k]){
                n_zero=true;
            }
        }
        if(n_zero){
            for(int k=0; k<c; k++){
                p[c*ind+k]=p[c*i+k];
            }
            ind++;
        }
    }
    numPx=ind;

    double m[c];

    for(int k=0; k<c; k++){
        m[k]=0;
    }

    for(int i=0; i<numPx; i++){
        for(int k=0; k<c; k++){
            m[k]+=p[c*i+k];
        }
    }

    for(int k=0; k<c; k++){
        m[k]=m[k]/(double)numPx;
    }

    /*if(min_y==5 && min_x==5){
        printf("%f %f %f\n", m[0], m[1], m[2]);
    }*/

    double a[c*numPx];
    for(int i=0; i<numPx; i++){
        for(int k=0; k<c; k++){
            a[c*i+k]=p[c*i+k]-m[k];
        }
    }

    double a2[c*c];

    for(int i=0; i<c; i++){
        for(int j=0; j<c; j++){
            a2[c*i+j]=0;
            for(int k=0; k<numPx; k++){
                a2[c*i+j]+=a[c*k+i]*a[c*k+j];
            }
            a2[c*i+j]=a2[c*i+j]/c;
        }
    }

    /*if(min_y==5 && min_x==5){
        for(int i=0; i<3; i++){
            for(int j=0; j<3; j++){
                printf("%f ", a2[3*i+j]);
            }
            printf("\n");
        }
    }*/

    double diag[3];
    double v[3];
    Matrix3d aa(3,3);
    EigenSolver<Matrix3d> es(aa);
    EigenSolver<Eigen::MatrixXd>::EigenvalueType eigenvals;
    EigenSolver<Eigen::MatrixXd>::EigenvectorsType eigenvecs;

    aa << a2[0], a2[1], a2[2], a2[3], a2[4], a2[5],a2[6],a2[7],a2[8];
    eigenvals=es.eigenvalues();
    eigenvecs=es.eigenvectors();
    diag[0]=eigenvals(0,0).real();
    diag[1]=eigenvals(1,0).real();
    diag[2]=eigenvals(2,0).real();
    v[0]=eigenvecs(0,2).real()*0.3;
    v[1]=eigenvecs(1,2).real()*0.3;
    v[2]=eigenvecs(2,2).real()*0.3;

    /*if(min_x==5 && min_y==5){
        std::cout << "matriz:" << std::endl << aa << std::endl;
        std::cout << "eigenvalues:" << std::endl << eigenvals << std::endl;
        std::cout << "eigenvectors:" << std::endl << eigenvecs << std::endl;
        //printf("vectors: %f %f %f\nvalues: %f %f %f\n", v[0], v[1], v[2], diag[0], diag[1], diag[2]);
    }*/
    //printf("%f %f %f\n%f %f %f\n", diag[0],diag[1],diag[2], v[0], v[1], v[2]);
    //calculco dos eigenvalues
    /*double p_val1=a2[1]*a2[1] + a2[2]*a2[2] + a2[5]*a2[5];
    if(p_val1==0){
        diag[0] = a2[0];
        diag[1] = a2[4];
        diag[2] = a2[8];
    } else{
        double q=(a2[0]+a2[4]+a2[8])/3.0;
        double p_val2 = (a2[0]-q)*(a2[0]-q)+(a2[4]-q)*(a2[4]-q)+(a2[8]-q)*(a2[8]-q)+2*p_val1;
        double p_val=sqrt(p_val2/6.0);

        double b[9];
        for(int i=0; i<9; i++){
            b[i]=a2[i];
        }
        for(int i=0; i<9; i+=4){
            b[i]-=q;
        }
        for(int i=0; i<9; i++){
            b[i]=b[i]/p_val;
        }
        double det_b=b[0]*b[4]*b[8]+b[2]*b[3]*b[7]+b[1]*b[5]*b[6];
        det_b-=b[6]*b[4]*b[2]+b[3]*b[1]*b[8]+b[7]*b[5]*b[0];
        double r=det_b/2.0;

        double phi;
        if (r<=-1){
                phi=M_PI/3.0;
        }
        else if(r>=1){
                phi=0;
        }
        else{
                phi=acos(r)/3.0;
        }

        diag[2]=q+2.0*p_val*cos(phi);
        diag[0]=q+2.0*p_val*cos(phi+(2.0*M_PI/3.0));
        diag[1]=3.0*q-diag[2]-diag[0];
    }*/

    for(int i=0; i<3; i++){
        p1[i]=m[i]+v[i];
        p2[i]=m[i]-v[i];
    }

    int sig[3];
    for(int i=0; i<3; i++){
        if(v[i]>0){
            sig[i]=1;
        } else if(v[i]<0){
            sig[i]=-1;
        } else{
            sig[i]=0;
        }
    }
    if(!onlyPositive || !((sig[1]-sig[0]) || sig[2]-sig[0])){
        //printf("entrou\n");
        /*for(int i=0; i<3; i++){
            printf("%f ", p1[i]);
        }
        printf("\n");
        for(int i=0; i<3; i++){
            printf("%f ", p2[i]);
        }
        printf("\n");*/
        for(int i=0; i<3; i++){
            v[i]=v[i]*sig[0];
            p1[i]=m[i]-v[i];
            p2[i]=m[i]+v[i];
        }
        double pq[3*numPx];
        for(int i=0; i<numPx; i++){
            pq[3*i]=p[3*i]-p1[0];
            pq[3*i+1]=p[3*i+1]-p1[1];
            pq[3*i+2]=p[3*i+2]-p1[2];
        }
        double pqxv[3*numPx];
        for(int i=0; i<numPx; i++){
            pqxv[3*i]=pq[3*i+1]*v[2]-pq[3*i+2]*v[1];
            pqxv[3*i+1]=pq[3*i+2]*v[0]-pq[3*i]*v[2];
            pqxv[3*i+2]=pq[3*i]*v[1]-pq[3*i+1]*v[0];
        }

        double norm_v=sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
        for(int i=0; i<numPx; i++){
            d[i]=sqrt(pqxv[3*i]*pqxv[3*i]+pqxv[3*i+1]*pqxv[3*i+1]+pqxv[3*i+2]*pqxv[3*i+2])/norm_v;
        }
        int inds[numPx];
        for(int i=0; i<numPx; i++){
            inds[i]=i;
        }
        my_sort(d, inds, numPx);
        double p_sorted[3*numPx];
        for(int i=0; i<numPx; i++){
            p_sorted[3*i]=p[3*inds[i]];
            p_sorted[3*i+1]=p[3*inds[i]+1];
            p_sorted[3*i+2]=p[3*inds[i]+2];
        }

        numPx = 0.8*numPx+0.5;

        for(int k=0; k<c; k++){
            m[k]=0;
        }

        for(int i=0; i<numPx; i++){
            for(int k=0; k<c; k++){
                m[k]+=p_sorted[c*i+k];
            }
        }

        for(int k=0; k<c; k++){
            m[k]=m[k]/(double)numPx;
        }

        for(int i=0; i<numPx; i++){
            for(int k=0; k<c; k++){
                a[c*i+k]=p_sorted[c*i+k]-m[k];
            }
        }

        for(int i=0; i<c; i++){
            for(int j=0; j<c; j++){
                a2[c*i+j]=0;
                for(int k=0; k<numPx; k++){
                    a2[c*i+j]+=a[c*k+i]*a[c*k+j];
                }
                a2[c*i+j]=a2[c*i+j]/c;
            }
        }

        /*for(int i=0; i<9; i++){
            aa[i/3][i%3]=a2[i];
        }*/
        //printf("entrou aqui!\n");

        aa << a2[0], a2[1], a2[2], a2[3], a2[4], a2[5],a2[6],a2[7],a2[8];
        es.compute(aa);
        eigenvals=es.eigenvalues();
        eigenvecs=es.eigenvectors();
        diag[0]=eigenvals(0,0).real();
        diag[1]=eigenvals(1,0).real();
        diag[2]=eigenvals(2,0).real();
        v[0]=eigenvecs(0,2).real()*0.3;
        v[1]=eigenvecs(1,2).real()*0.3;
        v[2]=eigenvecs(2,2).real()*0.3;

        /*if(min_x==5 && min_y==5){
            std::cout << "The eigenvalues of A are:" << std::endl << eigenvals << std::endl;
            std::cout << "The eigenvectors of A are:" << std::endl << eigenvecs << std::endl;
            printf("vectors: %f %f %f\nvalues: %f %f %f\n", v[0], v[1], v[2], diag[0], diag[1], diag[2]);
        }*/
        //printf("%.20f %.20f %.20f\n%f %f %f\n", diag[0],diag[1],diag[2], v[0], v[1], v[2]);
        for(int i=0; i<3; i++){
            p1[i]=m[i]+v[i];
            p2[i]=m[i]-v[i];
        }

        norm_v=sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
        double cross_vp1[3];
        cross_vp1[0]=v[1]*(-p1[2])-v[2]*(-p1[1]);
        cross_vp1[1]=v[2]*(-p1[0])-v[0]*(-p1[2]);
        cross_vp1[2]=v[0]*(-p1[1])-v[1]*(-p1[0]);

        //printf("%f %f %f\n", cross_vp1[0], cross_vp1[1], cross_vp1[2]);

        double distFromOrigin = sqrt(cross_vp1[0]*cross_vp1[0]+cross_vp1[1]*cross_vp1[1]+cross_vp1[2]*cross_vp1[2])/norm_v;

        lambdas[0]=diag[2];
        lambdas[1]=diag[2]/(diag[1]+0.00000001);
        lambdas[2]=distFromOrigin;

        //printf("%f %.20f %f %f %f\n", diag[2], diag[1], lambdas[0], lambdas[1], lambdas[2]);
        for(int i=0; i<3; i++){
            if(v[i]>0){
                sig[i]=1;
            } else if(v[i]<0){
                sig[i]=-1;
            } else{
                sig[i]=0;
            }
        }

        if(onlyPositive && (sig[1]-sig[0]+sig[2]-sig[0])!=0){
                lambdas[0]=0;
            lambdas[1]=0;
            lambdas[2]=0;
            }
        //printf("%f\n",distFromOrigin);
        //printf("%f %f\n",norm_v, distFromOrigin);
        /*for(int i=0; i<3; i++){
            printf("%f ", p1[i]);
        }
        printf("\n");
        for(int i=0; i<3; i++){
            printf("%f ", p2[i]);
        }*/
        /*for(int i=0; i<numClose; i++){
            printf("%f %f %f\n", p_sorted[3*i],p_sorted[3*i+1],p_sorted[3*i+2]);
        }*?
        /*printf("%f\n", norm_v);
        for(int i=0; i<numPx; i++){
            printf("%f\n", d[i]);
        }*/
        /*for(int i=0; i<3; i++){
            printf("%f ", v[i]);
        }
        printf("\n");
        for(int i=0; i<3; i++){
            printf("%f ", p1[i]);
        }
        printf("\n");
        for(int i=0; i<3; i++){
            printf("%f ", p2[i]);
        }*/
    } else {
        lambdas[0]=0;
        lambdas[1]=0;
        lambdas[2]=0;
    }

    /*for(int i=0; i<3; i++){
        printf("%d\n", sig[i]);
    }*/
    /*for(int i=0; i<c; i++){
        printf("%f\n", m[i]);
    }*/
    //printf("%d\n\n", numPx);
    /*for(int i=0; i<c; i++){
        for(int k=0; k<c; k++){
            printf("%f ", a2[c*i+k]);
        }
        printf("\n");
    }*/
}
コード例 #12
0
ファイル: test.c プロジェクト: RuDas-KR/Homework
int main(void){
   int a[] = {9, 3, 5, 7, 1};
   my_sort(a, 5);
}
コード例 #13
0
int main(int argc, char *argv[])
{
    int n = argc - 1;//size of the array
    int *array1 = (int*) malloc(sizeof(int)*n);//part 1
    int *array2=(int*) malloc(sizeof(int)*n);//part 2
    int *array=(int*) malloc(sizeof(int)*n);
    for (int i = 0; i < n; i++)
    {
        array[i] = atoi(argv[i+1]);
    }

    //DIVIDE IT INTO TWO PARTS:
    int sizeOfAr1, sizeOfAr2, i = sizeOfAr1 = sizeOfAr2 = 0;
    int middle_elt = array[n / 2];
    while (i < n)
    {
        if (array[i] < middle_elt)
        {
            array1[sizeOfAr1] = array[i];
            sizeOfAr1++;
        }
        else
        {
            array2[sizeOfAr2] = array[i];
            sizeOfAr2++;
        }
        i++;
    }
    struct msg_buf myMsg;
    myMsg.mtype = 0;
    int msqid = msgget(IPC_PRIVATE, IPC_CREAT|0666);

    //STARTING TO PARALLELIZE
    int frk = fork();
    if (!frk) // CHILD
    {
        my_sort(array1, sizeOfAr1, 0, sizeOfAr1);
        myMsg.mtype = MAGIC_NUMBER;
        for(int i = 0; i<sizeOfAr1;i++)
        {
            myMsg.array_element = array1[i];
            msgsnd(msqid, &myMsg, sizeof(int), 0);
        }
        return 0;
    }
    else
    {
        my_sort(array2, sizeOfAr2, 0, sizeOfAr2);
        for(int j =0; j<sizeOfAr1;j++)
        {
            msgrcv(msqid, &myMsg, sizeof(int), MAGIC_NUMBER, 0);
            printf("%d ",myMsg.array_element);
        }
        for(int j =0; j<sizeOfAr2;j++)
        {
            printf("%d ",array2[j]);
        }
        printf("\n");
    }
    return 0;
}