All pastes #834845 Raw Edit

Unnamed

public text v1 · immutable
#834845 ·published 2007-12-28 14:48 UTC
rendered paste body
[Linker error] undefined reference to `Ulozpole' - co to zanemná?

#include <stdio.h>
#include <stdlib.h>

void UlozPole(int a[], int n) {
  int i;
  char jmenoSouboruXser[] = "Xser.txt";
  FILE *souborXser;
  souborXser = fopen(jmenoSouboruXser, "w");
      fprintf(souborXser,"%d ",a[]);
  fclose(souborXser);
}


/* odtud až po main je seřazování pole vytažený z programu - prog9-mergesort2.c */

void merge(int a[], int b[], int levy, int pravy, int poslPravy) {
  int poslLevy = pravy-1;
  int i = levy;
  int prvniLevy = levy;

  while (levy<=poslLevy && pravy<=poslPravy)
    b[i++] = (a[levy]<a[pravy])? a[levy++] :a [pravy++];

  while (levy<=poslLevy) b[i++] = a[levy++];
  while (pravy<=poslPravy) b[i++] = a[pravy++];
}

int min(int x, int y) {
  if (x<y) return x;
  else     return y;
}

void mergeSort(int a[], int n) {
    int *pom = (int*)malloc(n*sizeof(int)),
        *odkud = a, *kam = pom;
    int delkaUseku = 1;
    int posl = n-1, i;
    while (delkaUseku<n) {
      int levy = 0;
      while (levy<=posl) {
        int pravy = levy+delkaUseku;
        merge(odkud, kam, levy, min(pravy, n), min(pravy+delkaUseku-1, posl));
        levy = levy+2*delkaUseku;
      }
      delkaUseku = 2*delkaUseku;
      int *p = odkud; odkud = kam; kam = p;
    }
    if (odkud!=a)
      for (i=0; i<n; i++) a[i] = pom[i];
  }
  

int main(void) {
  int pole[] = {5,3,6,-1,20,15,50,-61,30,15,7,40}; /* do tohodle pole musím dát věci z txt teď to je jen na test, jak udělám převod z txt souboru do pole abych se nemusel hrabat v tom mergesortu? */
  int pocet = sizeof(pole)/sizeof(int);
  mergeSort(pole, pocet);
  Ulozpole(pole,pocet);
  system("PAUSE");
  return 0;
}