Nieznana wielkosc tablicy. Mieszanie sie przypadkowe z druga

0

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;
            }
        }
	}
}
 
0

Albo stosujesz tablicę na wyrost:
float A[5000], B[5000], C[5000];

albo wczytujesz do listy:
struct list { double v; struct list *next; } *head=0,*tail=0;
A potem przypisujesz do tablicy

albo bawisz się w realloca:
float A=(float)malloc(sizeof(float));
for(a=0;scanf("%f",A+a)==1;++a) A=realloc(A,(a+2)*sizeof(float));

0

Mam w zadaniu użyć tylko tablic. Także listy nie. Na wyrost to mi obetną punkty za takie coś pewnie:)
Stawiam na reallocka, ide poczytac o tym dokladniej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1