Vill inte köras i Xcodes konsol, kör jag den kompilerade filen i terminalen funkar det. C++

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Varberg
  • 2011-06-19 19:33

Hej!

Håller på med en nybörjarkurs i C++ och använder Xcode för att koda i. Det har fungerat kanon men när jag försöker köra koden här nedanför kommer det i bland bara texten MENY, eller så kommer det ingenting alls. Programmet fortsätter att köra men jag kan inte göra några inmatningar.

Skickar jag däremot över den kompilerade filen i mappen Products till terminalen med högerklick och Open with external editor fungerar det som det skall.

Till saken hör att jag har gjort 40 - 50 olika exempel tidigare och då har det fungerat.

Någon som har en idé om det kan vara någon inställning eller något som gör detta?

Det är Xcode 4.0.2 som jag använder.

//  Skapa en struct som heter Person. Person ska kunna hantera data för namn och
//  ålder. Person ska lagras i ett fält Familjemedlemmar med plats för fem personer.
//  Följande funktioner ska ingå i programmet:
//  nyPerson() Inläsning av namn och ålder.
//  sorteraAlder() Sorterar familjemedlemmar efter ålder.
//  visaPerson() Skriver ut namn och ålder på Person.
//  Det ska även finnas en meny som kan hantera ovanstående funktioner.
//  main.cpp
//  InlaÃàmningsuppgift 1
//
//  Created by Johan Nilsson on 2011-06-16.
//  Copyright 2011 Consultec Byggprogram AB. All rights reserved.
//

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

struct Person {
    string namn;
    int alder;
};

Person nyPerson();
void sorteraAlder(Person p[], int antal, string& sort);
void visaPerson(Person p, string sort);

int main ()
{
    const int ANTAL = 2;
    Person familjeMedlemmar[ANTAL];
    char menyVal;
    string sorterad = "osorterad";
    bool fortsatt = true;
    do {
    cout << "   MENY\n";
    cout << "1. Mata in person och ålder (5 st). \n";
    cout << "2. Sortera personerna efter ålder.\n";
    cout << "3. Visa lista med personer.\n";
    cout << "0. Avsluta.\n";
    cin >> menyVal;
    cin.ignore(1000, '\n');
    
    switch (menyVal) {
        case '1':
            for (int i = 0; i < ANTAL; i++) {
                familjeMedlemmar[i] = nyPerson();
                if (i == ANTAL-1) {
                    cout << "Du har nu matat in " << ANTAL << '/' << ANTAL << " personer.\n";
                }
            }
            break;
        
        case '2':  
            cout << "Sorterar lista...\n";
            sorteraAlder(familjeMedlemmar, ANTAL, sorterad);
            cout << "KLART, listan är sorterad!\n";
            break;
            
        case '3':
            cout << "Listan är nu " << sorterad << ".\n";
            for (int i = 0; i < ANTAL; i++) {
                visaPerson(familjeMedlemmar[i], sorterad);
            }
            break;
        
        case '0':
            fortsatt = false;
            break;        

        default:
            cout << "Felinmatning! \n\n" ; 
            break;
    }
    }while (fortsatt);
    return 0;
}
//  nyPerson() Inläsning av namn och ålder.
Person nyPerson()
{
    Person p;
    cout << "Skriv in namn: " << endl ;
    getline(cin, p.namn);
    cout << "och ålder: ";
    cin >> p.alder;
    cin.ignore(1000, '\n');
    return p;
}
//  sorteraAlder() Sorterar familjemedlemmar efter ålder.
void sorteraAlder(Person p[], int antal, string& sort)
{
    for (int m = 1; m < antal; m++) {
        int pos = m;
        Person temp = p[m];
        while (pos > 0 && p[pos-1].alder > temp.alder) {
            p[pos] = p[pos-1];
            pos--;
        }
        p[pos] = temp;
    }
    sort = "sorterad";
}
//  visaPerson() Skriver ut namn och ålder på Person.
void visaPerson(Person p, string sort)
{
    cout << left << setw(30) << p.namn << setw(3) << p.alder << endl ;
}

Testade ditt exempel, det fungerar utmärkt i Xcode med gdb i alla fall.

  • Medlem
  • Varberg
  • 2011-06-20 00:18

Tack för att du tog dig tid att testa, jag har klippt och klistrat den koden så jag vet inte kanske kommit med något
skräp som gjort att det blev som det blev.
Det jag gjorde för att få ordning på det var att jag kopierade rad för rad utan att ta med blanktecken från vänsterkanten (indrag osv).
Sedan fungerade det hos mig också, men det har varit otroligt irriterande och tidsödande innan jag kom på det.

  • Medlem
  • Varberg
  • 2011-06-20 00:21

Nu när du ändå tittat på koden kanske man kan få en bedömning? Det iofs redan försent jag skickade in den till läraren idag.Men kan vara kul att höra vad du tycker.

1
Bevaka tråden