20-elementowa tablica z losowymi wartościami

0

Pomoże ktoś zrobić to zadanie? Wymyśliłem coś takiego ale nie działa...

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROZMIAR 10
/*Napisz program, który wypełni tablicę o 10 elementach liczbami całkowitymi losowanymi z zakresu
0 do 20, a następnie zamieni miejscami „połówki” tej tablicy. Przyład dla tablicy o 4 elementach:
−4, 3, 2, 1 → 2, 1, −4, 3. Zawartość tablicy należy wypisać przed i po wykonaniu zamiany.*/

void wyswietl_tablica (int *tab)
{
    srand(time(NULL));
    int i;
    for(i=0;i<ROZMIAR;i++)
    {
        tab[i]=0+rand()%20;
        printf("A[%d]= %d\n",i,tab[i]);
    }
}
void podziel_tablice1 (int *tab1)
{
    int i;
    for(i=0;i<5;i++)
    {
        printf("A[%d]= %d\n",i,tab1[i]);
    }
    return tab1;
}
void podziel_tablice2 (int *tab2)
{
    int i;
    for(i=5;i<10;i++)
    {
        printf("A[%d]= %d\n",i,tab2[i]);
    }
    return tab2;
}
void zamiana(int *tab1, int *tab2)
{
    int schowek;
    schowek=tab1;
    tab1=tab2;
    tab2=schowek;
}
int main()
{
    int tablica[ROZMIAR]; int tablica1[ROZMIAR/2];int tablica2[ROZMIAR/2];
    printf("Wypelniona tablica: \n");
    wyswietl_tablica(tablica);
    printf("Pierwsza polowa tablicy: \n");
    podziel_tablice1 (tablica);
    printf("Druga polowa tablicy: \n");
    podziel_tablice2 (tablica);
    printf("Tablica po podziale i zamianie miejscami: \n");
    zamiana(tablica1,tablica2);
    wyswietl_tablica(tablica);


    return 0;
}
2
// wypelnienie tablicy liczbami losowymi z zakresu 0-20
for (int i = 0; i < N; i++)
    tab[i] = rand() % 21;

// wyswietlenie tablicy
cout << "Przed zamiana połówek: " << endl;
for (int i = 0; i < N; i++)
    cout << tab[i] << " ";
cout << endl;

// zamiana polowek tablicy
for (int i = 0; i < N/2; i++)
    swap(tab[i], tab[i + N/2]);

// wyswietlenie tablicy po zamianie
cout << "Po zamianie połówek: " << endl;
for (int i = 0; i < N; i++)
    cout << tab[i] << " ";
cout << endl;

return 0;
2

Problem w tym że funkcje podziel_tablice1() i podziel_tablice2() nie dzielą tablicy zaś wyświetlają.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TableSize 9
/*Napisz program, który wypełni tablicę o 10 elementach liczbami całkowitymi losowanymi z zakresu
0 do 20, a następnie zamieni miejscami „połówki” tej tablicy. Przyład dla tablicy o 4 elementach:
−4, 3, 2, 1 → 2, 1, −4, 3. Zawartość tablicy należy wypisać przed i po wykonaniu zamiany.*/


void show_table(int tab[],int size)
{ // od 12 lat można deklarować `i` wewnątrz for, http://forum.4programmers.net/1101404
    for(int i=0;i<size;++i) printf("%s%d",","+!i,tab[i]); // ","+!i - wypisanie przecinka ale nie przed pierwszą liczbą
    printf("\n");
}

void rand_table(int tab[],int size)
{
    for(int i=0;i<size;++i) tab[i]=0+rand()%21; // do 20 więc %21
}

void copy_table(int dst[],int src[],int size)
{
    for(int i=0;i<size;++i) dst[i]=src[i];
}

int main()
{
    srand(time(NULL)); // tylko raz na początku programu.
    int tab[TableSize],tab1[TableSize/2],tab2[(TableSize+1)/2]; // (TableSize+1) - gdyby rozmiar był nieparzysty ...
    int size=sizeof(tab)/sizeof(*tab),size1=sizeof(tab1)/sizeof(*tab1),size2=sizeof(tab2)/sizeof(*tab2);
    rand_table(tab,size); // tu określamy rozmiar tablicy
    printf("Wypelniona tablica:\n");
    show_table(tab,size);
    printf("Pierwsza polowa tablicy:\n");
    copy_table(tab1,tab,size1);
    show_table(tab1,size1);
    printf("Druga polowa tablicy:\n");
    copy_table(tab2,tab+size1,size2); // drugą przesuwamy o rozmiar pierwszej
    show_table(tab2,size2);
    printf("Tablica po podziale i zamianie miejscami: \n");
    copy_table(tab,tab2,size2);
    copy_table(tab+size2,tab1,size1); // tablice przesuwamy o rozmiar drugiej, która już wpisana
    show_table(tab,sizeof(tab)/sizeof(*tab));
    return 0;
}

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