Program związany z tablicami.

0

Witam. Mam do napisania taki oto program

Napisac program, w ktorym zostanie zadeklarowana tablica 100 elementowa oraz
zostanie ona wypełniona losowymi liczbami całkowitymi z przedziału od 0 do 1000. W
programie należy wykorzystac stworzona przez siebie funkcje, która zamieni miejscami
polowki tablic. Całosc powinna byc napisania z wykorzystaniem wskaznikow./

Oczywiście z losowanie sobie poradziłem, problem w tym że nie bardzo rozumiem o co chodzi z tą zamianą połowek tablicy. Wiem jak wygląda tablica jednowymiarowa w pamieci, to co mam to podzielic na pol i zamienic miejscami elementy? Bardzo proszę o odpowiedź.

1

to co mam to podzielic na pol i zamienic miejscami elementy?

pewnie taaak...

0

No to tak jak myślałem, teraz jakbyś mógł powiedzieć jak to mam podzielić to bym coś popróbował.

1

ustawiasz pierwszy iterator na poczatek, drugi na srodek (element za srodkiem)
robisz swapa
inkrementujesz iteratory.

0

Mógłbyś to takim pseudokodem napisać bo nie wiem czy dobrze rozumiem, mam zrobić 2 pętle. Pierwsza będzie startować od elementu 0 do 50 a druga od 51 do końca tak ?

0

Dzięki panowie, jutro to przerobie pod siebie i gitarka.

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

void mswap(int* array, size_t size)
{
    int i, j, tmp;
    for(i=0,j=((size+(size&1))/2);j<size;++i,++j)
    {
        tmp = array[i];
        array[i] = array[j];
        array[j] = tmp;
    }
}

void displ(int* array, size_t size)
{
    int i;
    for(i=0;i<size;++i)
        printf("%d ", array[i]);
    printf("\n");
}

int main()
{
    int i, tab1[50], tab2[100];
    srand(time(NULL));

    for(i=0;i<49;i++){
        tab1[i]=rand()%999;
    }

    for(i=50;i<100;i++){
        tab2[i]=rand()%999;
    }

    mswap(tab1, 49), mswap(tab2, 50);
    displ(tab1, 49), displ(tab2, 50);
    return 0;
}
0

Coś takiego mi wyszło,problem w tym że ten swap nie bardzo działa bo zamiast liczb wyświetla mi adresy zmiennych. Gdzie popełniłem błąd?

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

void mswap(int* array, size_t size)
{
    int i, j, tmp;
    for(i=0,j=(size/2+1);j<size;++i,++j)
    {
        tmp = array[i];
        array[i] = array[j];
        array[j] = tmp;
    }
}

void displ(int* array, size_t size)
{
    int i;
    for(i=0;i<size;++i){
        if(i==0) printf("\nTab1\n");
        if(i==size/2-1)printf("\nTab2\n");
        printf("%d ", array[i]);
    }
    printf("\n");
}

int main()
{
    int i, tab1[100];
    srand(time(NULL));

    for(i=0;i<100;i++){
        tab1[i]=rand()%1001;
    }
    printf("PRZED ZAMIANA\n");
    printf("Tab1\n");
    displ(tab1,100),

    mswap(tab1, 100);
     printf("\nPO ZAMIANA\n");
    displ(tab1, 100);

    return 0;
}

Dziękuję dobranoc :D

0
(size/2+1)

To jedziemy:

  1. Tablica ma 10 elementow:

    • pierwsze 5 {0, 1, 2, 3, 4}
    • ostatnie 5 {5, 6, 7, 8, 9}
  2. Wynik tego dzialania to 6.

  3. Zamieniasz 0 element z 6, 1 z 7, 2 z 8, 3 z 9, 4 z ?

PRZED ZAMIANA
Tab1
1 2 3 4 5 6 7 8 9 10 

PO ZAMIANA
7 8 9 10 5 6 1 2 3 4 

Jak to dla Ciebie dziala to wspolczuje ;>

P.S. Funkcji display() juz chyba sie nie dalo bardziej popsuc :(

0

No faktycznie trochę lipa. Display poprawiłem po prostu pod siebie. To co zmienić ?

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