Carana Skrevet 10. oktober 2012 Del Skrevet 10. oktober 2012 (endret) Hallo, Jeg har et problem med kompilering av et lite program skrevet i Eclipse på OS X 10.8.2. Kompilatoren jeg bruker er gcc lastet ned gjennom Xcode, og programkoden jeg prøver å kompilere er: /* * Main.cpp * * Created on: 3. okt. 2012 * Author: henrik */ #include <iostream> #include <string> using namespace std; class Struktur{ public: string kart[10][20]; int kartutvunnet[10][20]; void meny(){ int kommando = 0; while(kommando < 9){ cout << "*** VELKOMMEN TIL RURITANIAS OLJEFELTOVERSIKT ***\n" << endl; cout << "Du har følgende valgmuligheter:" << endl; cout << "1) Kjøp et felt\n2) An0er kjøp av et felt\n3) Lag oversiktskart\n4) Oppdater oljeutvinning\n5) Vis et oljeselskap\n6) Finn nabofelt\n8) Avslutt\n" << endl; cout << "\nVelg kommando: " << endl; cin >> kommando; if(kommando == 1){ cout << "\n\n** KJØP ET FELT**" << endl; cout << "Oppgi feltet som ønskes kjøpt:" << endl; cout << "Oppgi X-koordinat:" << endl; int xcoord = cin.get(); cout << "Oppgi Y-koordinat:" << endl; int ycoord = cin.get(); cout << "Oppgi selskapets navn:" << endl; string selskap; selskap = cin.get(); cout << endl; kjopFunct(xcoord, ycoord, selskap); //Sender koordinater og navn til kjøpsfunksjonen. } if(kommando == 2){ cout <<"\n\n** AN0ER KJØP AV ET FELT**" << endl; cout <<"Oppgi feltet som ønskes an0ert:"<< endl; cout <<"Oppgi X-koordinat:" << endl; int xcoord = cin.get(); cout <<"Oppgi Y-koordinat:" << endl; int ycoord = cin.get(); annullerFunct(xcoord, ycoord); //Sender koordinater til an0eringsfunksjonen. } if(kommando == 3){ cout <<"\n\n** KART OVER OLJEFELT **" << endl; kartFunct(); //Kaller på kartFunct-metoden, ingen argumenter. } if(kommando == 4){ cout <<"\n\n** OPPDATER UTVINNINGSDATA **" << endl; cout <<"Oppgi X-koordinat:" << endl; int xcoord = cin.get(); cout <<"Oppgi Y-koordinat:" << endl; int ycoord = cin.get(); if(kart[xcoord][ycoord] != "0"){ //Hvis det eksisterer data i valgte koordinater utføres: cout <<"Hvor mye er utvunnet (oppgis i fat)?" << endl;; int utvunnet = cin.get(); oppdaterFunct(xcoord, ycoord, utvunnet); //Kaller på oppdaterFunct med koordinater og inndata. } else{ //Hvis det ikke eksisterer data i (x,y), kjøres: cout <<"\nDette oljefeltet har ingen eier." << endl; cout <<"\nTrykk ENTER for å fortsette." << endl; //Venter på linjeskift. cin.get(); cin.get(); cout <<"\n\n" << endl; } } if(kommando == 5){ visFunct(); } if(kommando == 6){ cout <<"\n\n** VIS NABOFELT **" << endl; cout <<"Oppgi X-koordinat:" << endl; int xcoord = cin.get(); cout <<"Oppgi Y-koordinat:" << endl; int ycoord = cin.get(); naboFunct(xcoord, ycoord); //Kaller på nabofunksjonen med inntastede koordinater. } if(kommando == 8){ kommando = 9; } } } void kjopFunct(int x, int y, string selskap){ //Kjøp-funksjon som tar inn koordinater og navn. Returnerer ingenting (void). kart[x][y] = selskap; cout << "La til " << kart[x][y] << " i plass (" << x << "," << y <<(").") << endl; cout << "Trykk ENTER for å fortsette." << endl; cin.get(); cin.get(); cout << "\n\n" << endl; } void annullerFunct(int x, int y){ //An0erer et kjoep i koordinatene. if(kart[x][y] != "0"){ //Hvis det eksisterer data i (x,y): cout << "\nFjernet " << kart[x][y] << " i plass (" << x << "," << y << ")." << endl; kart[x][y] = "0"; //Toemmer innholdet i (x,y). } else{ cout << "Ingenting å fjerne, ingen kjøp gjennomført på feltet." << endl; } cout << "Trykk ENTER for å fortsette." << endl; cin.get(); cin.get(); cout << "\n\n" << endl; } void kartFunct(){ //Viser et kart over hele oljeområdet, ingen parametre trengs. for(int i = 0; i<10; i++){ for(int j = 0; j<20; j++){ if(kart[i][j] != "0"){ cout << "X\t" << endl; //Hvis felt funnet: Skriv X! } else{ cout << ".\t" << endl; //Hvis felt ikke funnet: Skriv .! } } cout << endl; } cout << "Trykk ENTER for å fortsette." << endl; cin.get(); } void oppdaterFunct(int x, int y, int utv){ kartutvunnet[x][y] = utv; cout << "Oppdaterte utvinning i plass " << x << "," << y << " med: " << utv << " fat." << endl; cout << "Trykk ENTER for å fortsette." << endl; cin.get(); cin.get(); cout << "\n\n" << endl; } int checkFunct(string navn){ //Sjekker om navn (parameter) finnes i kart-arrayen. Hvis den finnes returneres true. bool sjekker = false; for(int i = 0; i < 10; i++){ for(int j = 0; j < 20; j++){ if(navn == kart[i][j]){ sjekker = true; } } } if(sjekker){ return 1; } else{ return 0; } } void visFunct(){ cout << "\n\n** VIS ET OLJESELSKAP **" << endl; cout << "Tast inn oljeselskapets navn: " << endl;; string navn; navn = cin.get(); if(checkFunct(navn) == 1){ //Sender inntastet navn til en sjekkefunksjon, for å se om det eksisterer i arrayen. cout << "\nDATA FOR: " << navn << "\n" << endl; cout << "Felter eid: \n" << endl; for(int i = 0; i < 10; i++){ for(int j = 0; j < 20; j++){ if(navn == kart[i][j]){ cout << i << "," << j << endl; } } } int sum = 0; for(int i = 0; i < 10; i++){ //Summerer alle verdier i felter eid av selskapet. for(int j = 0; j < 20; j++){ if(navn == kart[i][j]){ sum += kartutvunnet[i][j]; } } } cout << "Summen av oljefat utvunnet av " << navn << " er: " << sum << endl; } else{ //Hvis checkFunct returnerer false (selskap finnes ikke): cout << "\nOljeselskap ikke funnet." << endl; } cout << "Trykk ENTER for å fortsette." << endl; cin.get(); cin.get(); cout << "\n\n" << endl; } void naboFunct(int x, int y){ //Viser informasjon om nabofelt. cout << "\nNabofelt til " << x << "," << y << ":" << endl; //Doble løkker for å gå gjennom arrayen, og finne ut om vi er i hjoerner/kanter. for(int i = (y-1); i <= (y<<1); i++){ //Starter i (y-1) får å få med nabofeltet til venstre. for(int j = (x-1); j <= (x+1); j++){ //Starter i (x-1) for å få med nabofeltet opp. if(j < 0 || j > 9 || i < 0 || i > 19){ //Hvis vi er utenfor arrayen i x eller y: continue; //Hopper over dette stadiet av løkken, og kjører løkken for neste verdier av i og j. } if((j != x && i != y) || (j == x && i == y)){ //Hvis j og i er ulike x og y, eller j og i er like x og y: continue; //Hopper over dette stadiet av løkken, og kjører løkken for neste verdier av i og j. } if(kart[j][i] != "0"){ //Hvis det eksisterer data i nabofelt(ene): cout << "Feltet " << j << "," << i << " er eid av " << kart[j][i] << "." << endl; } else{ //...eller hvis det ikke eksisterer data i nabofelt(ene): cout << "Feltet " << j <<"," << i << " er ikke eid av noen." << endl; } } } cout << "Trykk ENTER for å fortsette." << endl; cin.get(); cin.get(); cout << "\n\n" << endl; } }; class Main{ int main(){ Struktur *strukt = new Struktur; strukt->meny(); return 0; } }; Når jeg prøver å bygge programmet, returneres: Såvidt jeg kan forstå har dette problemet med linking av biblioteker å gjøre, og kanskje er det et problem med 32/64 bit? Jeg er ikke spesielt flink med dette, jeg vil bare at koden min skal kompilere uten feil. På forhånd takk for all hjelp! Edit: Før noen spør - ja, dette er et oversatt javaprogram Endret 10. oktober 2012 av Carana Lenke til kommentar
Carana Skrevet 10. oktober 2012 Forfatter Del Skrevet 10. oktober 2012 Jeg fant problemet! Main-metoden var puttet inn i en egen klasse kalt Main, og det førte til at kompilatoren ikke fant en main-metode direkte i Main.cpp. Jeg er visst for vant med java. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå