Diskuze: Paralelní třídění
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Už jsem našel chybnou část kodu, ale vůbec nevím proč se tam hodí záporné hodnoty.. testuju to na if m =3.. naalokuju pole c, první pár čísel to vypíše, přesněji 251 a následně to vypisuje jen -842150451... Hledal jsem na netu čím by to mohlo být, ale nic jsem nenašel a už mi z toho kapánek hrabe
void ranking(char * filename, int m)
{
FILE * f = fopen(filename, "w");
if (f == NULL)
{
printf("Can't open file for writing\n");
return;
}
int sum = 0;
for (int i = 0; i < m; i++)
sum += len[i];
unsigned int * c = (unsigned int *) malloc (sizeof(unsigned int) * sum);
printf(" suma %i\n", sum);
char *buf = (char *)malloc(sizeof(char) * 9);
if (m == 2)
{
rank(array[0], len[0], array[1], len[1], c);
for (int i = 0; i < len[0] + len[1]; i++)
{
itoa(c[i], buf, 10);
fputs(buf, f);
fputs("\n", f);
}
}
if (m == 3)
{
unsigned int * a = (unsigned int *) malloc (sizeof(unsigned int) * (len[0] + len[1]));
rank(array[0], len[0], array[1], len[1], a);
rank(a, len[0] + len[1], array[2], len[2], c);
for (int i = 0; i < sum; i++)
{
printf("c: %i", c[i]);
itoa(c[i], buf, 10);
fputs(buf, f);
fputs("\n", f);
buf = (char *)realloc(buf, 9);
}
}
if (m == 4)
{
unsigned int * a = (unsigned int *) malloc (sizeof(unsigned int) * (len[0] + len[1]));
unsigned int * b = (unsigned int *) malloc (sizeof(unsigned int) * (len[2] + len[3]));
rank(array[0], len[0], array[1], len[1], a);
rank(array[2], len[2], array[3], len[3], b);
rank(a, len[0] + len[1], b, len[2] + len[3], c);
for(int i = 0; i < len[0] + len[1] + len[2] + len[3]; i++)
{
itoa(c[i], buf, 10);
fputs(buf, f);
fputs("\n", f);
}
}
fclose(f);
}
Tady jsou soubory, se kterýma pracuju http://leteckaposta.cz/448930640
Zobrazeno 4 zpráv z 4.