Tässä koetan laskea suuruusjärjestykseen lajitellusta taulukosta moodia, jos joku osaa ratkaista ongelman, niin olisin hyvin kiitollinen. Tässä koko lähdekoodi, ei erityisen pätevää koodia, mutta toimii tuohon moodiin asti. Onnistuin saamaan moodin taulukosta esim. 2 2 3 3 4 4 kaikki nuo kolme moodia, mutta jos tulee 2 2 3 3 3, niin sitten ohjelma valitsee moodiksi molemmat, mikä ei KÄY. (moodi siis tarkoittaa taulukossa useimmin ilmenevää lukua). Jos haluatte jeesata, niin nakatkaa tuo koodi vaan editoriinne ja sen pitäs kääntyä, syntaksi toimii. Paljon kiitoksia auttajille.
#include
#include
#include
#define JAKO(x,y) x/y
int taulukko[20];
int luekokonaisluku(int t, int b){
int a;
int i=0;
if(t==0 && b==1){
while(1)
{
fflush(stdin);
printf("Anna luku");
if (scanf("%d", &a) != 1)
printf("Syötä jokin LUKU!\n");
else
break;
}
return a;
}
if(t==1 && b==0){
while(i
#include
#include
#include
#define JAKO(x,y) x/y
int taulukko[20];
int luekokonaisluku(int t, int b){
int a;
int i=0;
if(t==0 && b==1){
while(1)
{
fflush(stdin);
printf("Anna luku");
if (scanf("%d", &a) != 1)
printf("Syötä jokin LUKU!\n");
else
break;
}
return a;
}
if(t==1 && b==0){
while(i
Vastaukset 7
Vanhimmat
> sen pitäs kääntyä...
Jos tuo kääntyy niin kääntäjässä pahasti vikaa.
Koodia mainin ja muiden funktioiden ulkopuolella !
Jos haluat vastauksia niin postaa koodisi siinä muodossa kuin se on sinulla editorissa.
Saahan koodia olla mainin ulkopuolella. Esim globaali muuttuja int taulukko. Kokeilepas vaan kääntää, niin kyllä se kääntyy.
Ilmeisesti on koulutehtävä (oletan).
Miksi kaksi sisäkkäistä silmukkaa [ while ] joissa vielä verrataan ja kasvatetaan samoja arvoja [ while(i
Kaks silmukkaa pitää olla, että voidaan breikata, jos taulukossa arvo vaihtuu ja sitte ruvetaan breakin jälkeen vielä pyörittään samaa taulukkoa, kun i:tä on kasvatettu yhdellä, joten päästään sen tök kohdan yli.
Ei menisi katselmoinnista läpi tuollainen. Jos käytät sisäkkäisiä silmukoita, tulisi molemmilla olla oma(t) laskurit (esim. i ja j).
Miksikö?
- ikiloopin vaara
- ulompi ei välttämättä käy läpi kaikkia tarvittavia arvoja läpi.
Itse tekisin moodi-taulukosta kaksiulotteisen, jossa ensimmäisessä solussa on syötetty luku ja toisessa luvun esiintymiskerrat. Tämän taulukon täytön voi tehdä samalla kun luet syötetyt luvut taulukkoon tai sitten erikseen myöhemmin. Sitten vaan käyt tämän taulukon läpi tossa kohdin missä nyt moodin yrität saada.
ps. muista ottaa kiinni syötettävien lukujen maksimimäärä [20].
Tuohan kuulostaa hyvältä, en tosin vaan tiedä noista kaksulotteisista taulukoista, mutta sen voi varmasti tehä myös kahella erilliselläkin taulukolla. Jeps, kiitos vinkistä, pitää tässä taas ruveta koodaan, ku jaksaa.
Pieni opas taulukkoon....
http://cs.stadia.fi/~silander/ohjelmointi/c_opas-Kaksiulo.html
... ja tee vakio (define) lukujen maksimimäärälle. käytä tätä vakiota varattaessa muistia ja tarkistaessa ettei mene yli...
esim. #define MAX 20
int taulukko[MAX];
int kaksul_taulukko[MAX][2];
...