コード例 #1
0
ファイル: crscntry.c プロジェクト: kingr13/entire-src
int main()
{
    int t, max_meet, temp;
    int ang_route[3000], t_route[3000], al, tl;
    scanf("%d", &t);
    while(t--) {
        //read Angena's route
        max_meet = 0;
        read_arr(ang_route, &al);
        while(1) { //read possible routes by tom
            read_arr(t_route, &tl);
            if(tl == 1 && t_route[0] == 0) {
                break;
            }
            max_meet = max(max_meet, int_lcs(ang_route, t_route, al, tl));
        }
        
        printf("%d\n", max_meet);
    }
    return 0;
}
コード例 #2
0
ファイル: sorting.c プロジェクト: hitchiker42/my-code
int main(int argc, char *argv[]){
  if(argc < 3){
    printf("Usage: ./sort method array_length array\n");
    exit(1);
  }
  int method = SORT_QUICK;
  if(argc == 4){
    if(is_prefix(argv[1], "quick")){
      method = SORT_QUICK;
    } else if(is_prefix(argv[1], "merge")){
      method = SORT_MERGE;
    } else if(is_prefix(argv[1], "insertion")){
      method = SORT_INSERTION;
    } else if(is_prefix(argv[1], "radix")){
      method = SORT_RADIX;
    } else {
      fprintf(stderr, "Uknown sorting method %s, using default\n", argv[1]);
    }
    argv++;
  }
  ulong len;
  int err = strtoul_checked(argv[1], &len, NULL);
  if(err){
    perror("strtoul");
    exit(1);
  }
  ulong *arr = read_arr(len, argv[2]);
  if(!arr){
    perror("strtoul");
    exit(1);
  }
  //sort stuff
  switch(method){
    case(SORT_QUICK):      
      qsort_u64(arr,len); break;
    case(SORT_MERGE):
      mergesort_u64(arr,len);break;
    case(SORT_INSERTION):
      insertion_sort_u64(arr,len);break;
    case(SORT_RADIX):
      radix_sort_u64(arr,len);break;
  }
  if(is_sorted(arr,len)){
    printf("Array was sorted\n");
  } else {
    printf("Failed to sort array\n");
  }
  print_arr(arr, len, stdout);
  free(arr);
  return 0;
}
コード例 #3
0
ファイル: Exam.cpp プロジェクト: CAHbl4/C
state task1(void* data, void* params)
{
	arr_count = 0;
	system("cls");
	char ch;
	if (exist(ARR_FILE_NAME))
	{
		printf(Rus("Файл существует, прочитать? Y/N: "));
		do {
			ch = fgetc(stdin);
		} while (ch != 'Y' &&
			ch != 'y' &&
			ch != 'N' &&
			ch != 'n');
		switch (ch)
		{
		case 'Y':
		case 'y':
			read_arr(NULL, NULL);
			break;
		default:
			break;
		}
	}

	//Создаем меню
	menu_t* menu = menu_create("Задание 1");

	//Добавляем пункты в меню
	menu_add_item(menu, Rus("Добавить элементы в массив"), &input_arr, NULL, NULL);
	menu_add_item(menu, Rus("Вывести массив на экран"), &print_arr, NULL, NULL);
	menu_add_item(menu, Rus("Сохранить массив в файл"), &save_arr, NULL, NULL);
	menu_add_item(menu, Rus("Прочитать массив из файла"), &read_arr, NULL, NULL);
	menu_add_item(menu, Rus("Выполнить задание варианта 2"), &do_task1, NULL, NULL);

	menu_add_item(menu, Rus("Вернутся в главное меню"), &exit_sub, menu, NULL);

	//Выполняем меню
	menu_execute(menu, NULL);

	menu_free(menu);
	return REDRAW_ALL;
}
コード例 #4
0
bool test_one_file(std::ifstream& in, int verbose_level)
{
  std::list<X_monotone_curve_2> xcurves;
  std::list<Point_2> isolated_points;
  read_arr(in, std::back_inserter(xcurves),
           std::back_inserter(isolated_points));
  Arrangement arr1;
  construct_arr(arr1, xcurves.begin(), xcurves.end(),
                isolated_points.begin(), isolated_points.end(), verbose_level);
  isolated_points.clear();
  xcurves.clear();
  init_arr(arr1, verbose_level);

  read_arr(in, std::back_inserter(xcurves),
           std::back_inserter(isolated_points));
  Arrangement arr2;
  construct_arr(arr2, xcurves.begin(), xcurves.end(),
                isolated_points.begin(), isolated_points.end(), verbose_level);
  isolated_points.clear();
  xcurves.clear();
  init_arr(arr2, verbose_level);

  // Read the number of cells left.
  Arrangement::Size num_vertices, num_edges, num_faces;
  in >> num_vertices >> num_edges >> num_faces;

  // Read the expected face data:
  std::vector<int> fdata(num_faces);
  std::copy(std::istream_iterator<int>(in), std::istream_iterator<int>(),
            fdata.begin());

  Arrangement arr;
  Overlay_traits overlay_traits;
  if (verbose_level > 2) std::cout << "overlaying" << " ... "; std::cout.flush();
  CGAL::overlay(arr1, arr2, arr, overlay_traits);
  if (verbose_level > 2) std::cout << "overlaid" << std::endl;

  // Verify the resulting arrangement.
  Arrangement::Size num_vertices_res = arr.number_of_vertices();
  Arrangement::Size num_edges_res = arr.number_of_edges();
  Arrangement::Size num_faces_res = arr.number_of_faces();

  if (verbose_level > 0) std::cout << "Arrangement Output: " << std::endl;

  if (verbose_level > 1) {
    std::cout << "Halfedge Data: " << std::endl;
    Halfedge_iterator heit;
    for (heit = arr.halfedges_begin(); heit != arr.halfedges_end(); ++heit)
      std::cout << heit->source()->point() << " "
                << heit->target()->point() << " " << heit->data()
                << std::endl;
  }

  if (verbose_level > 0) {
    std::cout << "Face Data: " << std::endl;
    Face_iterator fit;
    for (fit = arr.faces_begin(); fit != arr.faces_end(); ++fit)
      std::cout << fit->data() << std::endl;
  }

  if ((num_vertices_res != num_vertices) ||
      (num_edges_res != num_edges) ||
      (num_faces_res != num_faces))
  {
    std::cerr << "ERROR: The number of arrangement cells is incorrect:"
              << std::endl
              << "   V = " << arr.number_of_vertices()
              << ", E = " << arr.number_of_edges()
              << ", F = " << arr.number_of_faces()
              << std::endl;
    arr.clear();
    return false;
  }

  std::vector<int> fdata_res(num_faces);
  std::vector<int>::iterator it = fdata_res.begin();
  Face_iterator fit;
  for (fit = arr.faces_begin(); fit != arr.faces_end(); ++fit)
     *it++ = fit->data();
  std::sort(fdata_res.begin(), fdata_res.end());
  if (! std::equal(fdata_res.begin(), fdata_res.end(), fdata.begin())) {
    std::cerr << "ERROR: Incorrect face data:" << std::endl;
    std::copy(fdata_res.begin(), fdata_res.end(),
              std::ostream_iterator<int>(std::cout, "\n"));
    arr.clear();
    return false;
  }

  arr.clear();
  return true;
}
コード例 #5
0
ファイル: test_sort.c プロジェクト: hitchiker42/my-code
int main(int argc, char *argv[]) {
    if(argc < 3) {
        printf("Usage: ./sort method array_length array\n");
        exit(1);
    }
    int method = SORT_ALL;
    if(argc == 4) {
        if(is_prefix(argv[1], "quick")) {
            method = SORT_QUICK;
        } else if(is_prefix(argv[1], "merge")) {
            method = SORT_MERGE;
        } else if(is_prefix(argv[1], "insertion")) {
            method = SORT_INSERTION;
        } else if(is_prefix(argv[1], "radix")) {
            method = SORT_RADIX;
        } else if(is_prefix(argv[1], "heap")) {
            method = SORT_HEAP;
        } else if(is_prefix(argv[1], "all")) {
            method = SORT_ALL;
        } else {
            fprintf(stderr, "Uknown sorting method %s, using default\n", argv[1]);
        }
        argv++;
    }
    ulong len;
    int err = strtoul_checked(argv[1], NULL, 0, &len);
    if(err) {
        perror("strtoul");
        exit(1);
    }
    ulong *arr;
    int fd = open(argv[2], O_RDONLY);
    if(fd>0) {
        size_t sz;
        char *file = mmap_file(fd, 1, PROT_READ, &sz);
        if(!file) {
            exit(1);
        }
        //char *file = read_file_to_string(fd, NULL);
        close(fd);
        arr = read_arr(len, file);
        munmap(file, sz);
        //free(file);
    } else {
        arr = read_arr(len, argv[2]);
    }
    if(!arr) {
        perror("strtoul");
        exit(1);
    }
    //sort stuff
    double time;
    switch(method) {
    case(SORT_INSERTION):
        time = time_sort(arr, len, insertion_sort_u64);
        break;
    case(SORT_MERGE):
        time = time_sort(arr, len, mergesort_u64);
        break;
    case(SORT_HEAP):
        time = time_sort(arr, len, heapsort_u64);
        break;
    case(SORT_QUICK):
        time = time_sort(arr, len, qsort_u64);
        break;
    case(SORT_RADIX):
        time = time_sort(arr, len, radix_sort_u8_u64);
        double time2 = time_sort(arr, len, radix_sort_u16_u64);
        printf("Radix sort with byte histograms: %f\n"
               "Radix sort with word histograms: %f\n", time, time2);
        return 0;
    case(SORT_ALL): {
        double times[6];
        uint64_t *arr_bkup = xmalloc(len * sizeof(uint64_t));
        memcpy(arr_bkup, arr, (len * sizeof(uint64_t)));
        times[0] = time_sort(arr, len, bubble_sort_u64);
        memcpy(arr, arr_bkup, (len * sizeof(uint64_t)));
        times[1] = time_sort(arr, len, insertion_sort_u64);
        memcpy(arr, arr_bkup, (len * sizeof(uint64_t)));
        times[2] = time_sort(arr, len, mergesort_u64);
        memcpy(arr, arr_bkup, (len * sizeof(uint64_t)));
        times[3] = time_sort(arr, len, heapsort_u64);
        memcpy(arr, arr_bkup, (len * sizeof(uint64_t)));
        times[4] = time_sort(arr, len, qsort_u64);
        memcpy(arr, arr_bkup, (len * sizeof(uint64_t)));
        times[5] = time_sort(arr, len, radix_sort_u64);
        printf("Times taken to sort:\n"
               "Bubble sort: %f\n"
               "Insertion sort: %f\n"
               "Merge sort: %f\n"
               "Heap sort: %f\n"
               "Quick sort: %f\n"
               "Radix sort: %f\n",
               times[0], times[1], times[2], times[3], times[4], times[5]);
        return 0;
    }
    default:
        return 1;
    }
    printf("Time taken to sort: %f\n", time);
    return 0;
}