2014-02-06 2 views
0

Кажется, что у меня нет выхода, и, к сожалению, мой учитель не может мне помочь. Я использую xcode, и ранее нам пришлось изменить немало вещей, чтобы заставить программы работать, и на этот раз я не могу ничего сделать. Сначала у меня была просто пузырька с шестью числами и ее запустить, но затем мы добавили сортировку, и вместо того, чтобы иметь номера, они считываются из txt-файла.Главное никогда не работает? Сортировка и выбор пузырьков сортировки

#include <iostream> 
#include <string> 
#include <fstream> 
#include <cstdlib> 

using namespace std; 

void bubble(string filename); 
void selectionSort(string filename); 


const int SIZE = 100000; 
int values[SIZE]; 

// Main 
int main() 
{ 
    cout << "Beginning set of our bubble sorts. Please stand by... " << endl; 
    bubble("inOrder.txt"); 
    bubble("revOrder.txt"); 
    bubble("ranOrder1.txt"); 
    bubble("ranOrder2.txt"); 
    cout << "Finished with four bubble sorts. " << endl; 

system("PAUSE"); 
return 0; 
} 

// Functions 

void bubble(string filename) 
{ 
    unsigned long int passCount = 0, compCount = 0, swapCount = 0; 

    int temp; 
    bool swap; 

    ifstream fin(filename.c_str()); 

    for (int j = 0; j < SIZE; j++) 
     fin >> values[j]; 


    do 
    { passCount++; 
     swap = false; 
     for (int count = 0; count < (SIZE -1); count++) 
     { 
      compCount++; 
      if(values[count] > values[count + 1]) 
      { 
       swapCount++; 
       temp = values[count]; 
       values[count] = values[count + 1]; 
       values[count + 1] = temp; 
       swap = true; 
      } 
     } 


    } while (swap); 
    string outputName = "Bubble" + filename; 

    ofstream fout(outputName.c_str()); 

    for (int j = 0; j < SIZE; j++) 
     fout << values[j] << endl; 
    cout << "The number of passes is: " << passCount << endl; 
    cout << "The number of comparious is:" << compCount << endl; 
    cout << "The number of swaps is: " << swapCount << endl; 

} 


// Selection 



void selectionSort(int array[], int size) 
{ 
    int startScan, minIndex, minValue; 

    for (startScan = 0; startScan < (SIZE - 1); startScan++) 
    { 
     minIndex = startScan; 
     minValue = values[startScan]; 
     for(int index = startScan + 1; index < size; index++) 
     { 
      if (values[index] < minValue) 
      { 
       minValue = values[index]; 
       minIndex = index; 
      } 
     } 
     values[minIndex = array[startScan]]; 
     values[startScan] = minValue; 
    } 
} 

Я попытался изменить слово «массив» в своих значениях, но это не сработало. И перед изменением параметров функции (и смены других частей, упомянутых выше), у нас было только «string filename», и он работал нормально. Для учителя много работы, но она использует Visual Express. Я загружаю это сейчас, но школьный интернет очень медленный, поэтому я стараюсь работать с тем, что у меня есть.

Любые предложения были бы весьма полезными. Кроме того, большая часть кода выполнялась как класс, но не все работало одинаково в xcode. В качестве домашней работы мне пришлось добавить сортировку, и я немного борюсь.

EDIT Извините, я имею в виду, что мне нужны выходные файлы. У нас был отдельный .cpp-файл, чтобы генерировать число, необходимое программе для сортировки.

#include <fstream> 
#include <iostream> 
#include <stdlib.h> 
using namespace std; 

const int maxSize = 100000; 

int main() 
{ 

    ofstream fout1("inOrder.txt"); 
    ofstream fout2("revOrder.txt"); 
    ofstream fout3("ranOrder.txt"); 
    ofstream fout4("ranOrder.txt"); 

    cout << "Starting to create 4 output files. . ." << endl; 

    for (int i = 1; i <= maxSize; i++) 
    { 
     fout1 << i << endl; 
     fout2 << maxSize - i + 1 << endl; 
     fout3 << rand() << endl; 
     fout4 << rand() << endl; 
    } 
    cout << "Finished creating 4 output files . . ." << endl; 

    system("PAUSE"); 
    return 0; 

} 

Весь этот код был написан моим инструктором. Для Xcode я просто добавляю файл в ту же папку, что и основная программа?

+0

Я бы начал с того, что ваши файлы были открыты правильно. Каталог запуска Xcode не такой тривиальный, как кажется. Обычно он отключается в некоторой папке temp build. Вы можете изменить его, если вы решите, что это проблема (если вы не знали об этом и уже обращались к нему в вашей схеме-config). – WhozCraig

+0

Вы уверены, что ничего не происходит? Я бы ожидал получить несколько ошибок компилятора, рассказывая мне об фиктивном имени 'array' (который, как вы говорите, вы исправили), отсутствующем'] 'и, возможно,' system', так как вы не включаете ''. Обратите внимание, что 'system (« PAUSE »), вероятно, ничего не сделает на платформе, отличной от Microsoft, но это необходимо, только если вы используете злую среду IDE, которая закрывает окно вывода программы, как только оно выйдет. –

+0

Почему бы просто не отладить проблему, добавив некоторую правильную обработку ошибок и 2. выполнить однократное выполнение кода? – Till

ответ

0

У меня была проблема с открытием файлов с помощью Xcode. Я обнаружил, что если вы не укажете полный путь к файлу txt, который вы пытаетесь открыть, Xcode проверит папку проекта, как и ожидалось. Дело в том, что вы должны добавить txt-файл в проект Xcode, а не просто поместить его в папку проекта в Finder.

В Xcode перейдите к файлу> Добавить файлы и добавьте файлы txt, которые вы пытаетесь открыть для проекта.

Смежные вопросы