Czy dobrze wprowadzam elementy do tablicy?

Odpowiedz Nowy wątek
2017-02-02 21:09
Drakonid
0
 cout << "Podaj rozmiar tablicy:" << endl;
    int r = 0;
    cin >> r;
    cin.get();

    cout << endl;

    int* tab = new int[r];

    int element = 0;

    for (int i = 0; i < r; ++i)
    {
        cin >> element;
        cin.get();
    }

Czy tak to powinno wyglądać? Dodam, że muszę jeszcze dodać do siebie wszystkie elementy tablicy i wyznaczyć ich średnią, więc od razu zapytam czy dobrze to zrozumiałem.
Robię zmienną suma, dodaję wszystkie elementy tablicy i przypisuję do tej zmiennej a następnie dzielę sumę przez rozmiar tablicy?

Pozostało 580 znaków

2017-02-02 21:14
sig
1

1) nie dodajesz niczego do tablicy
2) nie potrzebujesz tablicy, skoro masz policzyć średnią to możesz od razu sumować

Pozostało 580 znaków

2017-02-02 21:28
Drakonid
0
sig napisał(a):

1) nie dodajesz niczego do tablicy
2) nie potrzebujesz tablicy, skoro masz policzyć średnią to możesz od razu sumować

Jest mi potrzebna tablica bo opisałem tylko część zadania. Jak w takim razie poprawnie wprowadzić elementy do tablicy? Co mam poprawić?

Pozostało 580 znaków

2017-02-02 21:31
1

cin >> tab[i];
Tablice


edytowany 1x, ostatnio: carlosmay, 2017-02-02 21:32

Pozostało 580 znaków

2017-02-02 21:57
Drakonid
0
carlosmay napisał(a):

cin >> tab[i];
Tablice

Dzięki wielkie, miłej nocy!

Pozostało 580 znaków

2017-02-02 22:24
Drakonid
0
// Tablica jednowymiarowa elementów typu double. Rozmiar tablicy i jej elementy są pobierane od użytkownika. Wyznacz średnią wartość elementów tablicy, a następnie sprawdź ile w tablicy
// jest elementów, które są mniejsze od wyznaczonej średniej o więcej niż 2. 

#include <iostream>

using namespace std;

int main()
{

    cout << "Podaj rozmiar tablicy:" << endl;
    int r = 0;
    cin >> r;
    cin.get();

    cout << endl;

    int* tab = new int[r];

    for (int i = 0; i < r; ++i)
    {
        cout << "Element [" << i << "] = ";
        cin >> tab[i];
        cin.get();
    }

    int suma = 0;

    for (int i = 0; i < r; ++i)
    {
        suma += tab[i];
    }

    int średnia = 0;
    średnia = suma / r;

    cout << endl;

    for (int i = 0; i < r; ++i)
    {
        if (tab[i] > średnia) // TUTAJ
        {
            cout << tab[i] << endl;
        }
    }

    cin.get();
    return 0;

} 

Natrafiłem na dodatkowy problem, jak w ostatniej pętli zrobić tak, żeby pokazało elementy o 2 większe niż średnia? Tam gdzie napisałem "//TUTAJ" uważam, że powinno się to znaleźć ale nie wiem jak to odpowiednio zapisać.

Jak już stosujesz new to zastosuj też delete. Albo skorzystaj z unique_ptr. - Sparrow-hawk 2017-02-03 08:28

Pozostało 580 znaków

2017-02-02 22:36
0

if (tab[i] == średnia+2)

Pozostało 580 znaków

2017-02-02 22:37
0
 if(tab[i] == (średnia + 2)) 
edytowany 1x, ostatnio: fryderykst, 2017-02-02 22:37

Pozostało 580 znaków

2017-02-02 23:32
0

Twoja tablica nie przechowuje elementów typu double.

int średnia = 0;
średnia = suma / r;

a to już daleko odbiega od prawidłowych wyników.


Pozostało 580 znaków

2017-02-02 23:34
Drakonid
0

Zapomniałem poprawić. Testowałem na int to wszystko. Pozmieniałem na double ale algorytm w ostatniej pętli mi się nie zgadza. To co koledzy wyżej napisali.

Oczywiście po zmianie na typ double, należy pamiętać, że nie powinno się porównywać takich zmiennych operatorami == i !=. - carlosmay 2017-02-02 23:39

Pozostało 580 znaków

2017-02-03 08:47
0

Zwróć też uwagę, że masz zwrócić ilość elementów spełniających dane kryterium, a nie same elementy.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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