Wie Suche ich ein array von strings in C++

Ich bin ganz neu in der Welt von C++ so, wenn ich nicht Fragen, die Frage richtig ich entschuldige mich im Voraus.

Ich habe eine Hausaufgabe, ich versuche mich komplett in C++. Es hat mehrere Aufgaben, die abgeschlossen werden muss. Hier sind die Aufgaben: 1) Extrahieren Sie Namen aus einer text-Datei. 2) zeigen Sie(unsortiert) 3) zeigen Sie wieder(sortiert) 4) die Suche durch die Liste und finden Sie die Namen beginnen mit demselben Buchstaben, und zählen Sie Sie, und zeigen Sie Sie.

War ich in der Lage zu tun, Nummer 1 bis 3 ohne viel Problem. Aber ich bin ratlos, wie Suche über ein array von strings und Namen suchen, die mit gleichen Buchstaben zu zählen und anzuzeigen? Bitte halten Sie im Verstand ich bin sehr neu in C++ und würde gerne einen Schubs in die richtige Richtung zu erhalten, diese sortiert!!!

Okay, ich war also in der Lage, erstellen Sie eine Funktion, die Sortierung der Namen

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

void selectionSort(string[], int);
void showNames(const string[], int);
void extractNames(string[], int);
bool searchForNames(string[], int);
int binarySearch(const string[], int, char);

int main()
{

const int NUM_NAMES = 20;
string names[NUM_NAMES];


ofstream outputFile;
outputFile.open("names.txt");

outputFile << "Collins, Bill" << endl;
outputFile << "Smith, Bart" << endl;
outputFile << "Allen, Jim" << endl;
outputFile << "Griffin, Jim" << endl;
outputFile << "Stamey, Marty" << endl;
outputFile << "Rose, Geri" << endl;
outputFile << "Taylor, Terry" << endl;
outputFile << "Johnson, Jill" << endl;
outputFile << "Allison, Jeff" << endl;
outputFile << "Looney, Joe" << endl;
outputFile << "Wolfe, Bill" << endl;
outputFile << "James, Jean" << endl;
outputFile << "Weaver, Jim" << endl;
outputFile << "Pore, Bob" << endl;
outputFile << "Rutherford, Greg" << endl;
outputFile << "Javens, Cathy" << endl;
outputFile << "Pike, Gordon" << endl;
outputFile << "Holland, Beth" << endl;

outputFile.close();

//call function that extracts names from the text file and assigns them to
//an array of names so it can be manuplated later
extractNames(names, NUM_NAMES);


//Display names in unsorted order
cout << "Unsorted names are: " << endl;
cout << "------------------- " << endl;
showNames(names, NUM_NAMES);

cout << endl;
cout << endl;

//Sort the names
selectionSort(names, NUM_NAMES);

//Display names in sorted order
cout << "Sorted names are: " << endl;
cout << "----------------- " << endl;
showNames(names, NUM_NAMES);

cout << endl;


searchForNames(names, NUM_NAMES);

}

void showNames(const string array[], int size)
{
    for(int count = 0; count < size; count++)
        cout << array[count] << endl;
}

void selectionSort(string array[], int size)
{
    int startScan;
    string MinValue;
    int minIndex;
    for(startScan=0; startScan < (size-1); startScan++)
{
    minIndex=startScan;
    MinValue = array[startScan];
    for(int index=startScan+1; index < size; index++)
    {
        if(array[index]<MinValue)
        {
            MinValue = array[index];
            minIndex = index;
        }
    }

    array[minIndex] = array[startScan];
    array[startScan] = MinValue;
}

}
void extractNames( string names[], int size)
 {
int count =0;
ifstream inputFile;
inputFile.open("names.txt");
while(count<size && getline(inputFile, names[count]))
{
    count++;
}
inputFile.close();
}

bool searchForNames(string names[], int size)
{
    for (char value = 'A'; value < 'Z'; value++)
    {
        cout << "Names starting with " << value << " are: "<< endl;
         binarySearch(names, 20, value);
}
return true;
}
int binarySearch(const string array[], int elements, char value)
{
//string abc;
//abc=static_cast<string>(&value);
int first = 0, last = elements - 1, middle , position = -1;
bool found = false;
while(!found && first <= last)
{
    middle = (first + last) / 2;
    if(array[middle] == &value)
    {
        found = true;
        position = middle;
    }
    else if(array[middle] > &value)
        last = middle - 1;
    else
        first = middle + 1;
}

return position;
}

Ich bin noch nicht in der Lage, dies zu tun wenn: Erstellen Sie eine Funktion zum zählen, wie viele Nachnamen beginnen mit einzelnen Buchstaben und Ausgabe die Namen und die Anzahl der Namen jedes mal. Dieser Funktion übergeben werden sollen das array nach dem Wert und der Größe des Arrays durch Wert. Die Funktion sollte die Ausgabe der Namen, die beginnen mit einem bestimmten Buchstaben geben dann die Gesamtzahl der Namen. NICHT output-Ergebnisse für die Buchstaben, die haben keine Namen, also z.B. es gibt keine Namen, die beginnen mit B, so wird keine Ausgabe erzeugt werden sollen, für diesen Brief. Dies ist mein erstes mal eine Frage bei StackOverflow so, wenn ich kann es nicht erklären, richtig ich entschuldige mich.

  • Was macht also der code Aussehen wie bisher?
  • Haben Sie schaute auf die substr Befehl für string?
  • Sie sind sortiert. können Sie nicht einfach finden, zuerst Eine, dann die erste B, und qtyOfA = positionFirstB - positionFirstA ? und so weiter für jeden Buchstaben
  • diese Frage hat viele Elemente. was Sie jetzt konkret mit zu kämpfen
  • ist der erste Buchstabe des Nachnamens der erste Buchstabe der Zeichenfolge?
  • ich weiß nicht, wie meine Quellcode hier noch, so dass ich nur änderungen an der original-code. Es sieht sehr aus, ich denke, ich versuche nur, um herauszufinden, wie übergeben Sie den Wert des array-namens, die Namen Weg, so kann ich die Suche nach der richtigen alphabet. das ist der Grund, warum ich versuchte, Sie zu Typumwandlung.

InformationsquelleAutor user3080065 | 2013-12-09
Schreibe einen Kommentar