• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiana miejscami dwóch elementów tablicy

VPS Starter Arubacloud
0 głosów
4,570 wizyt
pytanie zadane 30 maja 2016 w C i C++ przez zuzka_kotek Początkujący (290 p.)
edycja 30 maja 2016 przez zuzka_kotek

Dzień Dobry 

Mam za zadanie napisanie programu,który zamienia miejscami dwa wybrane elementy Coś już napisałam tylko chodzi o to, że  nie wiem jak zrobić by zamiast elementu program nie wyświetlał mi śmieci. Dodatkowo muszę jeszcze napisać funkcję, która przy użyciu funkcji z zamianą miejsc posortuje tablicę. 

To jest kod funkcji, którą napisałam: 

void zamiana(float tablica[],float a, float b,float c)
{
    cout<<"Podaj  pierwsza liczbe: ";
    cin>>a;
    cout<<"Podaj druga liczbe z ktora chcesz zamienic: ";
    cin>>b;

    for(int i=0;i<ROZMIAR;i++)
    {
        if(tablica[i]==a)
        {
            tablica[i]=c;

        }
    }
    for(int i=0;i<ROZMIAR;i++)
    {
        if(tablica[i]==b)
        {
            tablica[i]=a;
            

        }
    }

    for(int k=0;k<ROZMIAR;k++)
    {
        cout<<tablica[k]<<" ";
    }

}

Proszę o jakieś podpowiedzi 

2 odpowiedzi

0 głosów
odpowiedź 30 maja 2016 przez Rolnik Nowicjusz (220 p.)
edycja 31 maja 2016 przez Rolnik

Wydaję mi się, że  powinieneś deklarować zmienne a i b w funkcji, skoro dopiero tam przypisujesz im wartości i dodatkowo zadeklarować zmienną pomocniczą, która pomoże Ci przy zamianie . Zmienna ROZMIAR jest zmienną globalną? Jeśli nie to należy ją na taką zmienić ale według mnie lepszym wyjściem jest przekazanie rozmiaru do funkcji. Tu masz przykładowa funkcje zamiany dwóch wybranych elementów: http://wklej.org/id/2481384/

0 głosów
odpowiedź 30 maja 2016 przez Patryk Krajewski Nałogowiec (26,170 p.)
Jaki cel ma przesyłanie przez argument funkcji zmiennych, a zaraz potem nadawania im wartości wczytywanych z klawiatury? Podaj cały kod.
komentarz 30 maja 2016 przez zuzka_kotek Początkujący (290 p.)

ok 


#include <iostream>
#include <time.h>
#include <cstdlib>
#define ROZMIAR 10
using namespace std;

void menu();
void wypelnianie_losowe(float tablica[]);
void wypelnianie_kolejne(float tablica[]);
float suma_ujemna(float tablica[]);
void przesuniecie_w_lewo(float tablica[]);//przesunie elementy tablicy o 1 w lewo
void przesuniecie_w_prawo(float tablica []);//przesunie elementy o 2 w prawo
float maksimum(float tablica[]);
void minimum(float tablica[]);//wyswietla 2 najmiejsze liczby razem z jej indeksem
void powtorka(float tablica[]);
void zamiana(float tablica[],float a,float b,float c);//zamienia 2 liczby na podstawie indeksu
int main()
{
    srand(time(NULL));
    float tablicaa[ROZMIAR];
    int liczba;
    float a,b,c;
    menu();
    cout<<"podaj liczbe:";cin>>liczba;
    switch(liczba)
    {
    case 1:
        wypelnianie_losowe(tablicaa);
        cout<<endl;
        break;
    case 2:
        wypelnianie_kolejne(tablicaa);
        cout<<endl;
        break;

    }
    cout<<"Suma ujemnych elementow wynosi: "<<suma_ujemna(tablicaa)<<endl;
    przesuniecie_w_lewo(tablicaa);
    cout<<endl;
    przesuniecie_w_prawo(tablicaa);
    cout<<endl;
    cout<<"Najwiekszy element tablicy to: "<<maksimum(tablicaa)<<endl;
    minimum(tablicaa);
    cout<<endl;
    zamiana(tablicaa,a, b,c);
    cout<<endl;
    powtorka(tablicaa);
    system("pause");
    return 0;
}

void menu()
{
    cout<<"---\tMENU UZYTKOWNIKA\t---"<<endl;
    cout<<"1:Wypelnij tablice losowymi liczbami"<<endl;
    cout<<"2:Wypelnij tablice kolejnymi liczbami"<<endl;
    cout<<"a:Suma ujemnych elementow"<<endl;
    cout<<"b:Przesuuniecie wszystkich elementow o 1 w lewo"<<endl;
    cout<<"c:Przesuuniecie wszystkich elementow o 2 w prawo"<<endl;
    cout<<"d:Najwieksza liczba w tablicy"<<endl;
    cout<<"e:Dwie najmniejsze wartosci z ich indeksami"<<endl;
    cout<<"f:Najczesciej pojawiajaca sie wartosc"<<endl;
    cout<<"g:Zamiana miejscami dwoch zmiennych"<<endl;
    cout<<"h:Sortowanie tablicy"<<endl;
    cout<<"i:Usuwanie wszystkich spacji"<<endl;
    cout<<"j:Usuwanie spacji wielokrotnych"<<endl;
}
void wypelnianie_kolejne(float tablica[])
{
    cout<<"Tablica z kolejnymi elementami:"<<endl;
    for(int i=0;i<ROZMIAR;i++)
       {tablica[i]=i+1;
        cout<<tablica[i]<<"\t";}
}
void wypelnianie_losowe(float tablica[])
{
    cout<<"Tablica z elementami wylosowanymi:"<<endl;
    for(int i=0;i<ROZMIAR;i++)
    {
        tablica[i]=rand()%201-100;
        cout<<tablica[i]<<"\t";
    }
}
float suma_ujemna(float tablica[])
{
    int suma=0;
    for(int i=0;i<ROZMIAR;i++)
    {
        if(tablica[i]<0)
        suma+=tablica[i];
    }
    return suma;
}
void przesuniecie_w_lewo(float tablica[])
{
    cout<<"Tablica po przesunieciu o 1 w lewo: "<<endl;
    for(int i=0;i<ROZMIAR;i++)
    {
        if(i==ROZMIAR-1)
        {
            cout<<tablica[0]<<"\t";
        }
        else
        {
            cout<<tablica[i+1]<<"\t";
        }
    }
}
void przesuniecie_w_prawo(float tablica[])
{
    cout<<"Tablica po przesunieciu elementow o 2 w prawo:"<<endl;
    for(int i=0;i<ROZMIAR;i++)
    {
        if(i==0)
        {
            cout<<tablica[ROZMIAR-2]<<"\t";
        }
        else if(i==1)
        {
            cout<<tablica[ROZMIAR-1]<<"\t";
        }
        else
        {
            cout<<tablica[i-2]<<"\t";
        }
    }
}
float maksimum(float tablica[])
{
    int maks=tablica[0];
    for(int i=0;i<ROZMIAR;i++)
    {
        if(tablica[i]>maks)
            maks=tablica[i];
    }
    return maks;
}
void minimum(float tablica[])
{
    float mini1=tablica[0];
    float mini2=tablica[1];
    if(mini1>mini2)
       {
        mini1=tablica[1];
        mini2=tablica[0];
       }
    for(int i=1;i<ROZMIAR;i++)
    {
        if(tablica[i]<mini2)
            mini2=tablica[i];
    }
      cout<<"Najmiejsza liczba w tablicy wynosi: "<<mini1<<" o indeksie 0"<<endl;
      cout<<"Druga najmniejsza liczba w tablicy wynosi: "<<mini2/*<<" o indeksie: "<<i*/<<endl; //nie wiem dlaczego wywala mi b³¹d gdy skompilujê wersjê z i
}
void zamiana(float tablica[],float a, float b,float c)
{
    cout<<"Podaj  pierwsza liczbe: ";
    cin>>a;
    cout<<"Podaj druga liczbe z ktora chcesz zamienic: ";
    cin>>b;

    for(int i=0;i<ROZMIAR;i++)
    {
        if(tablica[i]==a)
        {
            tablica[i]=c;

        }
    }
    for(int i=0;i<ROZMIAR;i++)
    {
        if(tablica[i]==b)
        {
            tablica[i]=a;


        }
    }

    for(int k=0;k<ROZMIAR;k++)
    {
        cout<<tablica[k]<<" ";
    }

}
void powtorka(float tablica[])
{
    int licznik[];
    for(int i = 0; i <ROZMIAR; i++){
for(int j = 0; j < ROZMIAR; j++)
{
if( tablica[i] == tablica[j])
licznik[i]++;
}
    }
if(licznik[i]==0)
{
    cout<<"Rzadna liczba się nie powtarza "<<endl;
}
else{
cout<<"Najczesciej powtarzajaca sie liczba jest: "<<tablica[i]<<" powtozyla sie: "<<licznik[i]<<"  razy"<<endl;}
}

 

Podobne pytania

0 głosów
3 odpowiedzi 4,926 wizyt
pytanie zadane 21 września 2016 w C i C++ przez Xabi14 Nowicjusz (150 p.)
+1 głos
2 odpowiedzi 1,929 wizyt
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 9 stycznia 2018 w C i C++ przez mn130496 Gaduła (3,530 p.)

93,023 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,369 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...