Witam,
Mój problem polega na tym ze nie znam jaka ma byc długość tabeli poki użytkownik nie poda liczb, no to starałem się robić tak jak w kodzie poniżej. (Przepraszam za błędy jeśli jakieś są, dopiero się uczę można powiedzieć)
Ale jak robie tak jak / to jest dziwne zjawisko, do segregacji tabeli A jest wszystko dobrze, ale gdy podam tabele B to tak jakby niektore liczby albo wszystkie zamieniaja sie na te co podalem do B jakims cudem.
Proszę o wskazówki jak to naprawić.
Za wszelką pomoc będę wielce wdzięczny!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
float A[], B[], C[];
int a=0,b=0,f=0;
int main()
{
printf("Podaj liczby do tabeli A oddzielajac spacja\n");
while(scanf("%f",&A[a])!=EOF) {
a++;
if((A[a]=getchar()) == '\n') break;
}
printf("Ilosc liczb: %d\n",a);
porzadek(A, a);
printf("\nTablica A, posegregowana:\n | ");
for(f=0;f<a;f++) printf("%d. %1.0f | ",f+1,A[f]);
printf("\n\nPodaj liczby do tabeli B oddzielajac spacja\n");
while(scanf("%f",&B[b])!=EOF) {
b++;
if((B[b] = getchar()) == '\n') break;
}
printf("Ilosc liczb: %d\n",b);
porzadek(B, b);
printf("\nTablica B, posegregowana:\n | ");
for(f=0;f<b;f++) printf("%d. %1.0f | ",f+1,B[f]);
polaczTAB();
porzadek(C, a+b);
printf("\n\nTablica ostateczna, posegregowana:\n | ");
for(f=0;f<a+b;f++) printf("%d. %1.0f | ",f+1,C[f]);
printf("\n");
system("PAUSE");
return 0;
}
void polaczTAB()
{
int i=0;
for(i=0;i<a;i++) C[i]=A[i];
for(i=a;i<a+b;i++) C[i]=B[i-a];
}
void porzadek(float tablica[], int i)
{
int j,t,x;
for(j=0;j<i;j++)
{
for(t=0;t<i-1-j;t++)
{
if(tablica[t] <= tablica[t+1])
{
x = tablica[t];
tablica[t] = tablica[t+1];
tablica[t+1] = x;
}
}
}
}