zamiana miejscami dwóch wybranych elementów tablicy

0

Jak zamienić miejscami 2 wybrane elementy tablicy? np

Jest dana tablica int T[6]={2,4,23,1,7,9}

znajdujemy w niej element max i element min w tym wypadku max=23 min=1.

Jak zrobić aby wyswietlana tablica wyglądała tak {2,4,1,23,7,9}.

0

Zakładając, że chcesz zamienić miejscami elementy tab[i] oraz tab[j]:

tmp = tab[i];
tab[i] = tab[j];
tab[j] = tmp;

chyba logiczne?

...
lub skorzystać z funkcji swap.

0

tab[i] = (tab[i] + tab[j]) - (tab[j] = tab[i])

0

const int  T[8]={2,4,-22,-4,88,6,98,1};

int main(int argc, char *argv[])

{
 int i,max,min;
 max=T[0];
 min=T[0];

 for (i=0;i<8;i++)

 {

     if (T[i]>max)
     {
                  max=T[i];
                  }
                  if (T[i]<min)
                  {
                               min=T[i];
                               } 

                               cout<<T[i]<<",";

 }

 cout<<"\n\n max="<<max<<",min="<<min<<endl<<endl; 

To jest kod ,który wyświetla elementy tablicy i wartość najmniejszą i największą.

Wyświetli : 2,4,-22,-4,88,6,98,1
max=98,min=-22

Tylko jak zrobić by wyświetlało kolejną tablicę tylko ,że max i min są zamienione miejscami tzn 2,4,98,-4,88,6,-22,1

0

Kolejną czyli chcesz mieć 2 tablice czy wyświetlić zmodyfikowaną wersję tej? Bo jak 2 to trzeba by kopię tej zrobić i potem zamienić tak jak wyżej pisali, ew podczas kopiowania stosownymi if-ami zamienić. Potem wyświetlasz albo drugą tablicę albo tą samą jeszcze raz.

0
sig napisał(a)

Kolejną czyli chcesz mieć 2 tablice czy wyświetlić zmodyfikowaną wersję tej? Bo jak 2 to trzeba by kopię tej zrobić i potem zamienić tak jak wyżej pisali, ew podczas kopiowania stosownymi if-ami zamienić. Potem wyświetlasz albo drugą tablicę albo tą samą jeszcze raz (swoją drogą skoro wyświetlasz 2x to można by wyświetlanie do funkcji przenieść).

A można prosić o kod bo mi to zupełnie nie wychodzi. :(

0

Na początek zdecyduj się czy mają być 2 tablice czy jedna, poza tym to prosta przeróbka, masz nawet gotowy kod do skopiowania i wklejenia, potem już tylko drugie wyświetlenie czyli for (i=0;i<8;i++) cout<<T[i]<<","; (w forze tylko jedna linijka wiec nawiasy zbędne) jak 2 tablice to zamiast T naturalnie nazwa tej drugiej.

0
sig napisał(a)

Na początek zdecyduj się czy mają być 2 tablice czy jedna, poza tym to prosta przeróbka, masz nawet gotowy kod do skopiowania i wklejenia, potem już tylko drugie wyświetlenie czyli for (i=0;i<8;i++) cout<<T[i]<<","; (w forze tylko jedna linijka wiec nawiasy zbędne) jak 2 tablice to zamiast T naturalnie nazwa tej drugiej.

Chcę 2 tablice. Rozumiem że tę drugą tablicę mam zadeklarować tzn int T[j] , ale co dalej ? Jak wyświetlić drugą tablicę z zamienionymi elementami max i min? Samo skopiowanie nic nie daje bo wyświetli się tak samo jak ta pierwsza, może trzeba użyć wskaźników ?

0

Kopiujesz tablicę i potem w niej zamieniasz te elementy.
Ewentualnie wyświetlasz pierwszą tablicę, zamieniasz w niej elementy i znowu ją wyświetlasz.

0
Karolaq napisał(a)

Kopiujesz tablicę i potem w niej zamieniasz te elementy.
Ewentualnie wyświetlasz pierwszą tablicę, zamieniasz w niej elementy i znowu ją wyświetlasz.

No tak, ale to by było zbyt proste, chodzi o to ,że program ma wskazać z tablicy element najwiekszy i najmniejszy a następnie ma wyświetlić jeszcze raz tablicę ale z zamienionymi miejscami elementu max z min.Tablica może być zadeklarowana wartościami przez użytkownika, jak również można napisać tablicę statyczną w kodzie.W sumie można użyć funkcji swap ale tylko jak się zna pozycje elementu max i min.

Może ktoś napisze kod bo opisywanie tego co mam zrobić nic nie daje. Będę wdzięczny.

Widząc w kodzie element max i min jak najbardziej mogę je wskazać sam i wyświetlić cout-em no ale to nie o to chodzi :)

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