#include <cstdlib> #include <iostream> #include <ctime> #include <time.h> #include <stdio.h> #include <cstring> using namespace std; int main () { int clo = clock(); srand ( ( unsigned ) time ( 0 ) ); int random_integer; int a = 0; int lowest = 0, highest = 1000; int size = ( highest - lowest ) + 1; for ( int n = 0; n < 10000; n++ ) { random_integer = lowest + int ( size * rand() / ( RAND_MAX + 1.0 ) ); if ( random_integer >= 1000 ) a++; } int lineaarihaku(int random_integer[], int taulu) for ( int i = 0 ; i < 1000; i++ ) { if (taulu[i] == 3689) return i; return -1; } final=clock() - init; cout << (clock() - clo) << endl; return 0; }
Oheinen koodi antaa seuraavan virheilmoituksen
"ComeauTest.c", line 31: error: expected a ";" (perhaps on the previous statement)
for ( int i = 0 ; i < 1000; i++ ) ^
"ComeauTest.c", line 38: warning: parsing restarts here after previous syntax error
final=clock() - init; ^
Koodi ei ole mitään kaunista
Oma taito / älli ei riitä että keksisin missä on vika voisiko joku viisaampi auttaa...
Mod. huom: Riittäisikö älli kuitenkin kooditagien käyttöön?
Sulta puuttuu lineaarihaku -funktion esittelyn lopusta ; (jos nyt ylipäätään funktioita voi esitellä funktion sisällä)
Missä toi init -muuttuja on määritelty. En näe funktiossa sitä, eli onko se joku vakio tms ?
Koodissasi on useamikin asia pielessä, mutta mainitsen nyt vain virheistä suurimman ja akuuteimman: kääntäjän ilmoittamaa riviä 31 edeltävä koodirivi on joko väärin (kuten Grez sanoi) tai aivan väärässä paikassa, ja jos seuraava for-silmukka yrittää olla lineaarihaku-nimisen funktion sisältö, sekin on aivan väärässä paikassa. Tuliko mieleesi lukea mitään opasta, jossa kerrottaisiin, miten funktiot toimivat?
#include <cstdlib> #include <iostream> #include <ctime> #include <time.h> #include <stdio.h> #include <cstring> using namespace std; int main () { int clo = clock(); srand ( ( unsigned ) time ( 0 ) ); int random_integer; int a = 0; int lowest = 0, highest = 1000; int size = ( highest - lowest ) + 1; for ( int n = 0; n < 10000; n++ ) { random_integer = lowest + int ( size * rand() / ( RAND_MAX + 1.0 ) ); if ( random_integer >= 1000 ) a++; } int lineaarihaku(int random_integer[], int taulu); for ( int i = 0 ; i < 1000; i++ ) { if (taulu[i] == 3689) return i; return -1; } cout << (clock() - clo) << endl; return 0; }
"ComeauTest.c", line 35: error: identifier "taulu" is undefined if (taulu[i] == 3689)
Äskeinen oli ensimmäinen viestini ja siinä tuli mukana vahingossa koodin aiempi versio. Ohessa nytten se versio missä vika on.
No eikös tuo sano hyvinkin selvällä englanninkielellä sen, mikä on vikana. Eli yrität käyttää muuttujaa, jota ei ole määritelty.
Varmaankin kuitenkin rivien 31-38 olisi tarkoitus olla mainin ulkopuolella... Eli jotenkin tälleen: (en tosin silti keksi mitä ton pitäisi tehdä, enkä miksi tuolle lineearihaku funktiolle annetaan toi random_integer -taulukko jos se ei sitä käytä ja varmaant taulu pitäisi antaa toisessa muodossa kun sitä käytetään taulukkona.. Mutta joo, pientä.)
#include <cstdlib> #include <iostream> #include <ctime> #include <time.h> #include <stdio.h> #include <cstring> using namespace std; int lineaarihaku(int random_integer[], int taulu) { for ( int i = 0 ; i < 1000; i++ ) { if (taulu[i] == 3689) return i; return -1; } } int main () { int clo = clock(); srand ( ( unsigned ) time ( 0 ) ); int random_integer; int a = 0; int lowest = 0, highest = 1000; int size = ( highest - lowest ) + 1; for ( int n = 0; n < 10000; n++ ) { random_integer = lowest + int ( size * rand() / ( RAND_MAX + 1.0 ) ); if ( random_integer >= 1000 ) a++; } cout << (clock() - clo) << endl; return 0; }
No niin on mutta miten saan sitten tuohon määriteltyä sen muuttujan ???
Kun kerran koodi toimii erillisenä mutta ei silloin kun yhdistän ne ??
Mitä sä nyt sitten yhdistelet?
ohjelman kaksi eri osaa arpojan ja lineaari haun tai en tiedä onko yhdistäminen oikea sana ??
No yhdistäminen sanana on varmaan ihan oikein, mutta tapa miten yhdistät vaikuttaisi olevan hyvinkin väärä.
Olisko sulla ne erilliset toimivat versiot näyttää, niin voisi sanoa niistä jotain?
Ne on olemassa mutta niitä ei ole sovitettu tällaiseen taulukko käyttöön.
Siinä se minulla suurin ongelma juuri on kun vasta opiskelen c++ ja en oikeen vielä osaa / ymmärrä tehdä ohjelmia jotka toimisivat eri vaiheissa. Siis aluksi tekisi taulukon jossa olisi arvotut numerot ja sitten toinen osa hakisi siitä lineaarisesti tietyn luvun ja lopuksi siitä pitäisi saada mitattua aika joka meni koko toimintoon.
No joo siis tosiaan funktioita ei ole tapana esitellä/määritellä toisten funktioiden sisällä
Eli ihan yksinkertainen esimerkki olisi
int testi(int a) { return a*2; } int main() { int tulos = testi(3); cout << "Tulos: " << tulos << endl; return 0; }
Eli tuossa on testi-niminen funktio määritelty ennen mainia ja mainissa sitten käytetään eli kutsutaan sitä.
Kiitoksia hyvästä vinkistä.
Pitää ruveta vielä kehittämään omaa ohjelmaani että saan nuo arvotut luvut taulukkoon ja sen edelleen siirettyä lineaarihakuun eli oppia ikä kaikki.
Aihe on jo aika vanha, joten et voi enää vastata siihen.