tablice,powtarzenie
Ostatnio zmodyfikowano 2015-11-17 22:29
Detroq Temat założony przez niniejszego użytkownika |
tablice,powtarzenie » 2015-11-17 14:24:23 Cześć mam takie zadanie do zrobienia i nie mam pomysłu jak się za to zabrać Napisz program wczytujący z klawiatury zawartość 24 elementowej tablicy liczb float, przechowującej wartości temeratur powietrza mierzonych co godzinę przez cały dzień. Następnie program powinien sprawdzić, czy któraś z tych wartości się powtarza, a jeżeli tak, to która powtarza się najczęściej. Potrafię zrobić tą łatwą cześć ale później nie mam pomysłu jak zacząć, może ktoś poda jakiś #include <iostream> #include <windows.h>
using namespace std;
int main( int argc, char ** argv ) { const int rozm = 24; float tab[ rozm ]; for( int i = 0; i < rozm; i++ ) { cout << "Podaj wartosc Tab[" << i + 1 << "]: "; cin >> tab[ i ]; } system( "cls" ); cout << "Oto zawartosc tablicy!" << endl; for( int i = 0; i < rozm; i++ ) { cout << "Tab[" << i + 1 << "]: " << tab[ i ] << endl; } return 0; } [/i] |
|
carlosmay |
» 2015-11-17 14:58:36 to jest oczywisty błąd. Potrafię zrobić tą łatwą cześć ale później nie mam pomysłu jak zacząć | Czytaj zamieszczony post jak wstawisz. Braki w kodzie przez brak znaczników. Czytanie tego to koszmar | |
|
Bornegio |
» 2015-11-17 15:05:10 Spróbuj napisać pętle for, która każdą zmienną w tablicy porówna z pozostałymi i jeśli jakaś się powtórzy to niech zwiększy licznik. Potem pod koniec sprawdzania danej zmiennej niech porówna licznik ze zmienna i jeśli jest większy to niech ją nadpisze. i przypisze tę zmienną jako najczęściej powtarzaną. Słabo to wytłumaczyłem, to może przykładowy kod ci to troszkę wyjaśni.
int licznik = 0; float najczesciejPowtarzana; int liczbaPowtorzen = 0;
for (int i = 0; i < rozm; i++) { for (int j = 0; j < rozm; j++) { //zabezpieczamy sie, żeby nie porównywało zmiennej z samą sobą i porownujemy ja z pozostalymi zmiennymi w tablicy if (i != j && tab[.i] == tab[j]) licznik++; } //Teraz sprawdza, czy jest najczęściej powtarzającą się liczbą if (licznik > liczbaPowtorzen) { liczbaPowtorzen = licznik; najczesciejPowtarzana = tab[.i]; } }
W indeksie tablicy przed "i" nie powinno być kropki. Wstawiłem ją, żeby nie traktowało jej jak BBcode |
|
carlosmay |
» 2015-11-17 15:12:15 //zabezpieczamy sie, żeby nie porównywało zmiennej z samą sobą i porownujemy ja z pozostalymi zmiennymi w tablicy |
Liczba występuje w tablicy przynajmniej raz, więc przy tym zabezpieczeniu powinna startować od jedynki. |
|
Bornegio |
» 2015-11-17 15:15:30 Faktycznie się rozpędziłem. Po prostu lepiej zrezygnować z tego warunku i sprawdzić tylko, czy się powtarza i potem przed ew. wyświetleniem najczęściej powtarzającej się liczby sprawdzić, czy liczbaPowtorzen > 1 |
|
Detroq Temat założony przez niniejszego użytkownika |
» 2015-11-17 22:05:59 dzięki wielkie za pomoc, zrobiłem to trochę na swój sposób, co o nim myślicie ?, jest optymalny czy da sie go bardziej zoptymalizować ? #include <iostream> #include <windows.h>
using namespace std;
int main( int argc, char ** argv ) { const int rozm = 24; float tab[ rozm ]; float wartosc; float tab2[ rozm ] = { 0 }; int max = 0; for( int i = 0; i < rozm; i++ ) { cout << "Podaj wartosc Tab[" << i + 1 << "]: "; cin >> tab[ i ]; } system( "cls" ); cout << "Oto zawartosc tablicy!" << endl; for( int i = 0; i < rozm; i++ ) { cout << "Tab[" << i + 1 << "]: " << tab[ i ] << endl; } for( int i = 0; i < rozm; i++ ) { for( int j = 0; j < rozm; j++ ) { if( tab[ i ] == tab[ j ] ) tab2[ i ] ++; } if( tab2[ i ] > max ) { max = tab2[ i ]; wartosc = tab[ i ]; } } cout << "Najczesciej powtarzana liczba to : " << wartosc << " i powtarza sie ona " << max << " razy"; return 0; }
|
|
Monika90 |
» 2015-11-17 22:29:48 Funkcja system wymaga dołączenia <cstdlib>, za to <windows.h> nie jest do niczego tutaj potrzebne. |
|
« 1 » |