Tworzenie prostej tablicy

0

Witam, dopiero zaczynam moją przygodę z programowaniem i mam problem z tworzeniem tablic, mianowicie: chcę stworzyć tablicę 100 elementową, gdzie użytkownik będzie wybierał sobie ile ma być wypisanych elementów w tej tablicy, ilość elementów musi być parzysta. na końcu program obliczy średnią wszystkich wpisanych cyfr i wybierze z tych cyfr wpisywanych parami tą parę o największej sumie. Proszę o pomoc

1

Oczekujesz pomocy czy rozwiązania za Ciebie?

  1. Jeśli pomocy: pokaż kod, staraj się zastosować do Dlaczego nikt nie odpowiada w moim wątku?
  2. Jeśli wykonania za Ciebie: http://4programmers.net/Forum/Og%C5%82oszenia_drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)
0
#include <iostream>
using namespace std;
int main()

{
    int elementy, n;
    int tab[99];
    double srednia, suma;
    int max;
    cout << "Wprowadz parzysta ilosc elementow tablicy w przedziale <4,99>" << endl;
    cin >> n;
    if (n % 2 == 0 && n >= 4 && n < 100)
    {
        for (int i = 0; i < n; i++)
        {
            cout << "Liczba[" << i << "]=";
            cin >> tab[i];
        }
        suma = 0;
        max = tab[0];
        for (int i = 0; i < n; i++)
        {
            suma += tab[i];

            if (tab[i] > max)
                if (tab[i - 1] < tab[i + 1])
                {
                    max = tab[i] + tab[i + 1];
                }
                else if (tab[i - 1] > tab[i + 1])
                    max = tab[i - 1] + tab[i];
        }
        
        srednia = suma / n;
        cout << "Srednia wypisanych liczb= " << srednia;
        cout << "\nNajwieksza suma dwoch sasiadujących elementów to: " << max;
    }
    else
        return 0;
}

chyba się udało, dziękuję za pomoc :) choć nie wiem czy wzięłam pod uwagę wszystkie "haczyki" i program zawsze będzie działał poprawnie

0

Przeleć po wszystkich interesujących parach. Zapamiętaj indeks tej z największą wartością.

0

a no tak, bo "największa" suma 2 sąsiadujących wyrazów jest zawsze tworzona z największym elementem tablicy, a nie zawsze tak jest

0

Nie tylko, odnosisz się do -1 elementu tablicy dla i = 0.

Dodatkowo zbędnie obliczasz średnią 100 razy.

0

acha, czyli teraz gdy największą sumą będzie ta składająca się z 1 i 2 elementu to program jej nie zsumuje

0

Nie wiem czy się rozumiemy. Mając 100 elementów sumę dwóch obliczasz albo 99 razy albo 50 razy (zależy czy chcesz sumy elementów o indeksach [0,1], [1,2], [2,3]... czy [0,1], [2,3], [4,5]...). 100 nie ma jak.

0

chcę wyliczyć średnią wszystkich elementów i wyznaczyć parę o największej sumie o indeksach [0,1], [2,3], [4,5]

0

A w ogóle, to w tym kawałku kodu ewidentnie brakuje jednej pary wąsatych nawiasów przy pierwszym ifie.

     for (int i = 0; i < n; i++)
        {
            suma += tab[i];
 
            if (tab[i] > max)
                if (tab[i - 1] < tab[i + 1])
                {
                    max = tab[i] + tab[i + 1];
                }
                else if (tab[i - 1] > tab[i + 1])
                    max = tab[i - 1] + tab[i];
        }
0
suma = 0;
    max = (tab[0] + tab[1]);
    for(int i = 0; i < n ; i++)
        {
        suma += tab[i];

        if(i >= 0)
        while((tab[i] + tab[i + 1]) > max)//jeszcze dodac wybieranie najwiekszej sumy pary
            {if ((tab[i] + tab[i + 1]) < (tab[i + 2] + tab[i + 3]))
                {
                max = (tab[i + 2]+tab[i + 3]);
                }
            else if((tab[i] + tab[i + 1]) > (tab[i + 2] + tab[i + 3]))
                max = (tab[i] + tab[i + 1]);
            }
        }

teraz to już nie mam pomysłów, próbowałam przyjąć za maxa pierwszą parę a potem porównywać kolejne, ale to nie działa
albo zostawić tak jak było na początku i dodać jakiś warunek ale nie wiem jak to wykombinowac :/

0

chcę wyliczyć średnią wszystkich elementów i wyznaczyć parę o największej sumie o indeksach [0,1], [2,3], [4,5]

int main()
{
    constexpr int ROZMIAR{ 100 };
    int tab[ROZMIAR];

    // tutaj wypełnienie tablicy wartościami

    int suma{};
    for (int i = 0; i < ROZMIAR; ++i) {
        suma += tab[i];
    }
    std::cout << "srednia elementow wynosi: " << static_cast<double>(suma) / ROZMIAR << "\n\n";

    int maks{tab[0] + tab[1]};
    for (int i = 3; i < ROZMIAR; i += 2) { {
        if ((tab[i - 1] + tab[i]) > maks) {
            maks = tab[i - 1] + tab[i];
        }
    }
    std::cout << "najwyzsza suma pary wynosi: " << maks << '\n';
} 
0

@up A co jeśli w tablicy mamy same ujemne wartości?

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