Ĺadny brzuch
Witam mam mały problem. Dostałęm na zadanie z informatyki program w c++, który ma za zadanie Wczytać i wypełnic tablicę 20 elementową z zakresu od 0 do 10. Wypisać najczęstsze wartości i podać ile ich jest oraz podać medianę.
Tablicę stworzyć umiem, jednak z najczęstszymi wartościami i medianą mam mały kłopot.
Proszę o pomoc.
Najczestrze wartosci - chodzi o to ktore wartosci wystepuja najczesciej? Jezeli tak to druga tablica i liczymy ilosc powtorzen...
Mediana <- czego nie wiesz?
A mógłbym prosić o fragment kodu???
a z czym masz problem? gdy juz masz wspisane wartosci do tablicy tab
int ilosc[11];
for (int i=0; i<11; i++) ilosc[i]=0
for (int i=0; i<11; i++) ilosc[tab[i]]++;
a gdy juz masz ilosci wystapien to sumujesz je, sprawdzasz czy parzysta, znajdujesz odpowiednio srodek... troche zabawy jest, ale to nic trudnego jak sie glebiej zastanowi
#include <iostream> #include <stdlib.h> void wypelnij (int tab[20]) { for (int i=0;i<20;i++) tab[i] = rand() %11; } void wypisz(int tab[20]) { for (int i=0;i<20;i++) cout<<"tab["<<i<<"]="<<tab[i]<<endl; int ilosc[11]; for (int i=0; i<11; i++) ilosc[i]=0; for (int i=0; i<11; i++) ilosc[tab[i]]++; } int main(int argc, char *argv[]) { int tab[20]; int ilosc[11]; wypelnij (tab); wypisz (tab); cout<< ilosc; wypisz (tab); system("PAUSE"); return 0; }
tablica się wczytuje a z tymi ilościami to nie wiem naprawdę jak, mediana juz tym bardziej. Jak to zrobić??
aha a czy do mediany mam posortować tablicę?
aha a czy do mediany mam posortować tablicę?
niekoniecznie, są tez inne sposoby
Zaczynam sie zalamywac powowli... Ludzie uzywajcie glowy do myslenia!
Jak sie liczy mediane masz dokladnie opisane w linku do wiki, ktory podalem. Prosta metoda - najpierw zrob to na kartce sobie, a potem posiedz nad tym i przeloz na to jak moze to komputer wykonac. Jest to na prawde banalne...
Ilosci - ciezko stworzyc druga tablice dwuwymiarowa, umiescic w niej wczytane liczby i w drugiej komorce zwiekszac ilosc wystapien? Ech. Jak juz powiedzialem - rusz glowa.
// @up: W sumie racja - z tego co pamietam o medianie potrzebujemy element srodkowy i 2 sasiednie - dla pewnosci warto je zachowac, jakby srodkowy nie okazal sie srodkowym. Wiec sorotowac nie trzeba. Ale sposob z sortowaniem rowniez polecam tworcy tematu - chocby dla treningu ;).
Użytkownik Ali240 edytował ten post 14 marzec 2007, 19:00
#include <iostream> #include <stdlib.h> void wypelnij (int tab[20]) { for (int i=0;i<20;i++) tab[i] = rand() %11; } void wypisz(int tab[20]) { for (int i=0;i<20;i++) cout<<"tab["<<i<<"]="<<tab[i]<<endl; int ilosc[11]; for (int i=0; i<11; i++) ilosc[i]=0; for (int i=0; i<11; i++) ilosc[tab[i]]++; } int main(int argc, char *argv[]) { int tab[20]; int ilosc[11]; wypelnij (tab); wypisz (tab); cout<< ilosc; wypisz (tab); system("PAUSE"); return 0; }
tablica się wczytuje a z tymi ilościami to nie wiem naprawdę jak, mediana juz tym bardziej. Jak to zrobić??
aha a czy do mediany mam posortować tablicę?
lol ty naprawde w ogole nie umiesz programowac.
ten fragment ktory napisalem:
int ilosc[11];
for (int i=0; i<11; i++) ilosc[i]=0
for (int i=0; i<11; i++) ilosc[tab[i]]++;
wlasnie zlicza ci ilosc wystapien i zapisuje je w tablicy ilosc. jak chesz sprawdzic ile razy wystapila 2jka to piszesz cout << ilosc[2];
najpierw sie naucz podstaw a pozniej sie bierz za takie rzeczy jak mediana
Chłopaki może i programować nie umiem, ale nie załamujcie mnie takimi komentarzami. Raczej sobie nie poradzę z tym problemem, więc prosze o pomoc. Ten program jest mi potrzebny na jutro. Nie chce całego kodu tylko te 2 części. Dostałem jeszcze inne zadania z którymi sobie już poradziłem, więc nie rozumiem waszej frustracji. Pomożecie ???
Chłopaki może i programować nie umiem, ale nie załamujcie mnie takimi komentarzami. Raczej sobie nie poradzę z tym problemem, więc prosze o pomoc. Ten program jest mi potrzebny na jutro. Nie chce całego kodu tylko te 2 części. Dostałem jeszcze inne zadania z którymi sobie już poradziłem, więc nie rozumiem waszej frustracji. Pomożecie ???
A co robimy? Staramy sie pomoc. Gotowego kodu nie dam. Staram sie Cie nakierowac, a mam wrazenie ze nie wykonales nawet symulacji na kartce, wiec nie wiem co jeszcze mozna podpowiedziec skoro nie widze proby pracy. Mediane masz praktycznie krokowo na wiki opisana. A zliczanie to w ogole nie wiem w czym problem... Moze nie wiesz jak sie dynamiczne tablice robi? Moze nie umiesz znalezc wartosci w tablicy dwu wymiarowej? Moze nie umiesz uzyc tab[x][1]++ ? Moze... No po prostu nie wiem w czym moze tu byc problem bo to podstawowe zagadnienia sa...
ali - a niby po co to wszystko o czym piszesz? jakie tablice dynamiczne, jakie 2 wymiary... tu wystarczy zwykla tablica z iloscia wystapienia danej liczby - zadnych zabaw nie ma, wystarczy wyliczyc srodkowy wyraz i go znalezc.
Użytkownik Deadeye edytował ten post 14 marzec 2007, 22:08
jak Cie to nie interesuje i chesz tylko zaliczyc przedmiot to skozda Twojego czasu ...
masz kod, głowy nie dam ze jest poprawny ... moze mozna było zrobic to lepiej ale w Twojej sytuacji chyba nie będziesz wybrzydzał
#include <iostream> int main() { srand( time(NULL) ); int tab[20]; for( int i = 0; i < 20; ++i ) tab[i] = rand() % 11; for( int i = 0; i < 20; ++i ) std::cout << tab[i] << std::endl; int t[11] = {0}; for( int i = 0; i < 20; ++i ) ++t[tab[i]]; int max = 0; for( int i = 1; i < 11; ++i ){ if( t[i] > t[max] ) max = i; } for( int i = 0; i < 11; ++i ){ if( t[i] == t[max] ){ std::cout << " najczescie wystepuje " << i << std::endl; } } int s = 0; int m = 0; while( s < 10 ){ s+=t[m++]; } float w = 0; --m; w += m; m++; while( s < 11 ){ s+=tab[m++]; } --m; w+=m; std::cout << "Mediana wynosi: " << w/2.0f << std::endl; system("PAUSE"); return 0; }
ali - a niby po co to wszystko o czym piszesz? jakie tablice dynamiczne, jakie 2 wymiary... tu wystarczy zwykla tablica z iloscia wystapienia danej liczby - zadnych zabaw nie ma, wystarczy wyliczyc srodkowy wyraz i go znalezc.
A jak chcesz zliczac ilosc wystapienia liczb? Jezeli liczby sa podawane od 1...x to ok, ale jezeli mamy duzy zakres np. od 1..10000 a podajemy 10 liczb to przeciez nie ma sensu ladowac tego w tablice int arr[10000] zaby mozna bylo ladnie powtorzenia z arr[i] odczytac. Przynajmniej jest takie moje zdanie.
// edit:
który ma za zadanie Wczytać i wypełnic tablicę 20 elementową z zakresu od 0 do 10.
Zapomnialem o tym i juz myslalem standardowo w przod.
Użytkownik Ali240 edytował ten post 14 marzec 2007, 22:49
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Tablicę stworzyć umiem, jednak z najczęstszymi wartościami i medianą mam mały kłopot.
Proszę o pomoc.
Najczestrze wartosci - chodzi o to ktore wartosci wystepuja najczesciej? Jezeli tak to druga tablica i liczymy ilosc powtorzen...
Mediana <- czego nie wiesz?
A mógłbym prosić o fragment kodu???
a z czym masz problem? gdy juz masz wspisane wartosci do tablicy tab
int ilosc[11];
for (int i=0; i<11; i++) ilosc[i]=0
for (int i=0; i<11; i++) ilosc[tab[i]]++;
a gdy juz masz ilosci wystapien to sumujesz je, sprawdzasz czy parzysta, znajdujesz odpowiednio srodek... troche zabawy jest, ale to nic trudnego jak sie glebiej zastanowi
#include <iostream> #include <stdlib.h> void wypelnij (int tab[20]) { for (int i=0;i<20;i++) tab[i] = rand() %11; } void wypisz(int tab[20]) { for (int i=0;i<20;i++) cout<<"tab["<<i<<"]="<<tab[i]<<endl; int ilosc[11]; for (int i=0; i<11; i++) ilosc[i]=0; for (int i=0; i<11; i++) ilosc[tab[i]]++; } int main(int argc, char *argv[]) { int tab[20]; int ilosc[11]; wypelnij (tab); wypisz (tab); cout<< ilosc; wypisz (tab); system("PAUSE"); return 0; }
tablica się wczytuje a z tymi ilościami to nie wiem naprawdę jak, mediana juz tym bardziej. Jak to zrobić??
aha a czy do mediany mam posortować tablicę?
aha a czy do mediany mam posortować tablicę?
niekoniecznie, są tez inne sposoby
Zaczynam sie zalamywac powowli... Ludzie uzywajcie glowy do myslenia!
Jak sie liczy mediane masz dokladnie opisane w linku do wiki, ktory podalem. Prosta metoda - najpierw zrob to na kartce sobie, a potem posiedz nad tym i przeloz na to jak moze to komputer wykonac. Jest to na prawde banalne...
Ilosci - ciezko stworzyc druga tablice dwuwymiarowa, umiescic w niej wczytane liczby i w drugiej komorce zwiekszac ilosc wystapien? Ech. Jak juz powiedzialem - rusz glowa.
// @up: W sumie racja - z tego co pamietam o medianie potrzebujemy element srodkowy i 2 sasiednie - dla pewnosci warto je zachowac, jakby srodkowy nie okazal sie srodkowym. Wiec sorotowac nie trzeba. Ale sposob z sortowaniem rowniez polecam tworcy tematu - chocby dla treningu ;).
Użytkownik Ali240 edytował ten post 14 marzec 2007, 19:00
#include <iostream> #include <stdlib.h> void wypelnij (int tab[20]) { for (int i=0;i<20;i++) tab[i] = rand() %11; } void wypisz(int tab[20]) { for (int i=0;i<20;i++) cout<<"tab["<<i<<"]="<<tab[i]<<endl; int ilosc[11]; for (int i=0; i<11; i++) ilosc[i]=0; for (int i=0; i<11; i++) ilosc[tab[i]]++; } int main(int argc, char *argv[]) { int tab[20]; int ilosc[11]; wypelnij (tab); wypisz (tab); cout<< ilosc; wypisz (tab); system("PAUSE"); return 0; }
tablica się wczytuje a z tymi ilościami to nie wiem naprawdę jak, mediana juz tym bardziej. Jak to zrobić??
aha a czy do mediany mam posortować tablicę?
lol ty naprawde w ogole nie umiesz programowac.
ten fragment ktory napisalem:
int ilosc[11];
for (int i=0; i<11; i++) ilosc[i]=0
for (int i=0; i<11; i++) ilosc[tab[i]]++;
wlasnie zlicza ci ilosc wystapien i zapisuje je w tablicy ilosc. jak chesz sprawdzic ile razy wystapila 2jka to piszesz cout << ilosc[2];
najpierw sie naucz podstaw a pozniej sie bierz za takie rzeczy jak mediana
Chłopaki może i programować nie umiem, ale nie załamujcie mnie takimi komentarzami. Raczej sobie nie poradzę z tym problemem, więc prosze o pomoc. Ten program jest mi potrzebny na jutro. Nie chce całego kodu tylko te 2 części. Dostałem jeszcze inne zadania z którymi sobie już poradziłem, więc nie rozumiem waszej frustracji. Pomożecie ???
Chłopaki może i programować nie umiem, ale nie załamujcie mnie takimi komentarzami. Raczej sobie nie poradzę z tym problemem, więc prosze o pomoc. Ten program jest mi potrzebny na jutro. Nie chce całego kodu tylko te 2 części. Dostałem jeszcze inne zadania z którymi sobie już poradziłem, więc nie rozumiem waszej frustracji. Pomożecie ???
A co robimy? Staramy sie pomoc. Gotowego kodu nie dam. Staram sie Cie nakierowac, a mam wrazenie ze nie wykonales nawet symulacji na kartce, wiec nie wiem co jeszcze mozna podpowiedziec skoro nie widze proby pracy. Mediane masz praktycznie krokowo na wiki opisana. A zliczanie to w ogole nie wiem w czym problem... Moze nie wiesz jak sie dynamiczne tablice robi? Moze nie umiesz znalezc wartosci w tablicy dwu wymiarowej? Moze nie umiesz uzyc tab[x][1]++ ? Moze... No po prostu nie wiem w czym moze tu byc problem bo to podstawowe zagadnienia sa...
ali - a niby po co to wszystko o czym piszesz? jakie tablice dynamiczne, jakie 2 wymiary... tu wystarczy zwykla tablica z iloscia wystapienia danej liczby - zadnych zabaw nie ma, wystarczy wyliczyc srodkowy wyraz i go znalezc.
Użytkownik Deadeye edytował ten post 14 marzec 2007, 22:08
jak Cie to nie interesuje i chesz tylko zaliczyc przedmiot to skozda Twojego czasu ...
masz kod, głowy nie dam ze jest poprawny ... moze mozna było zrobic to lepiej ale w Twojej sytuacji chyba nie będziesz wybrzydzał
#include <iostream> int main() { srand( time(NULL) ); int tab[20]; for( int i = 0; i < 20; ++i ) tab[i] = rand() % 11; for( int i = 0; i < 20; ++i ) std::cout << tab[i] << std::endl; int t[11] = {0}; for( int i = 0; i < 20; ++i ) ++t[tab[i]]; int max = 0; for( int i = 1; i < 11; ++i ){ if( t[i] > t[max] ) max = i; } for( int i = 0; i < 11; ++i ){ if( t[i] == t[max] ){ std::cout << " najczescie wystepuje " << i << std::endl; } } int s = 0; int m = 0; while( s < 10 ){ s+=t[m++]; } float w = 0; --m; w += m; m++; while( s < 11 ){ s+=tab[m++]; } --m; w+=m; std::cout << "Mediana wynosi: " << w/2.0f << std::endl; system("PAUSE"); return 0; }
ali - a niby po co to wszystko o czym piszesz? jakie tablice dynamiczne, jakie 2 wymiary... tu wystarczy zwykla tablica z iloscia wystapienia danej liczby - zadnych zabaw nie ma, wystarczy wyliczyc srodkowy wyraz i go znalezc.
A jak chcesz zliczac ilosc wystapienia liczb? Jezeli liczby sa podawane od 1...x to ok, ale jezeli mamy duzy zakres np. od 1..10000 a podajemy 10 liczb to przeciez nie ma sensu ladowac tego w tablice int arr[10000] zaby mozna bylo ladnie powtorzenia z arr[i] odczytac. Przynajmniej jest takie moje zdanie.
// edit:
który ma za zadanie Wczytać i wypełnic tablicę 20 elementową z zakresu od 0 do 10.
Zapomnialem o tym i juz myslalem standardowo w przod.
Użytkownik Ali240 edytował ten post 14 marzec 2007, 22:49