2017-09-23 4 views
-1

Ich erhalte diesen Fehler Ich habe es auf die Zeichenfolge teamsTemp eingegrenzt; Linie. Was ich beim Lesen anderer Posts verstehe, ergibt sich normalerweise daraus, dass keine Variable deklariert wurde. In diesem Fall wird ein Fehler ausgegeben, wenn ich eine Variable deklariere. Selbst wenn der Rest der Bubble-Sortierung auskommentiert wurde, wird ein Fehler auf diese Variable geworfen.SIGSEGV, segmentation Fehler Fehler beim Deklarieren einer Variablen

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


int main() 
{ 
    ifstream WinnersIn;  
    ifstream TeamsIn;   
    ifstream LeagueIn;   
    string inputWinner; 
    string inputTeam; 
    string inputLeague; 
    int wins[30] = {0}; 
    string teams[30]; 
    string winner[114]; 
    string league[30]; 
    int t = 0; 
    int w = 0; 
    int z = 0; 
    int year = 1903; 
    int j; 

    TeamsIn.open("Teams.txt"); 
    LeagueIn.open("Leagues.txt"); 
    WinnersIn.open("WorldSeriesWinners.txt"); 

    //Saving teams into an array 
    while (getline(TeamsIn, inputTeam)) 
    { 
     teams[t] = inputTeam; 
     t++; 
    } 

    //Saving Winners into an array 
     while (getline(WinnersIn, inputWinner)) 
    { 
     winner[w] = inputWinner; 
     w++; 
    } 

    //Saving division Winner names into an array 
     while (getline(LeagueIn, inputLeague)) 
    { 
     league[z] = inputLeague; 
     z++; 
    } 

    //Nested for loop to match winning team and their league then output 
    for (int i=0; i < 115; i++) 
    { 
     for (z=0; z < 30; z++) 
     { 
      if (winner[i] == teams[z]) 
      { 
       cout << year << " " << winner[i] << " " << league[z] << endl; 
       year++; 
      } 
     } 
    } 

    //Saving number of wins for each team into an array 
    for (int i = 0; i < 115; i++) 
    { 
     for (z=0; z < 30; z++) 
     { 
      if (winner[i] == teams[z]) 
      { 
       wins[z] = wins[z] + 1; 
      } 
     } 
    } 


    //Sorting by number of wins 
    for (int i = 0; i < 29; i++) 
    { 
     for (int j = 0; j < 30; j++) 
     { 
      if (wins[i] < wins[j]) 
      { 
       int winsTemp; 
       string teamsTemp; 

       /*winsTemp = wins[i]; 
       wins[i] = wins[j]; 
       wins[j] = winsTemp; 

       teamsTemp = teams[i]; 
       teams[i] = teams[j]; 
       teams[j] = teamsTemp;*/ 
      } 
     } 
    } 

    TeamsIn.close(); 
    LeagueIn.close(); 
    WinnersIn.close(); 

    return 0; 
} 

leagues.txt American League National League National League American League American League National League American League National League National League American League National League American League American League National League American League National League National League American League National League National League American League Kein Sieger American League American League National League National League National League National League American League American League

teams.txt Anaheim Engel Arizona Diamondbacks Atlanta Braves Baltimore Orioles Boston Amerikaner Boston Braves Boston Red Sox Brooklyn Dodgers Chicago Cubs Chicago White Sox Cincinnati Reds Cleveland Indians Detroit Tigers Florida Marlins Kansas City Royals Los Angeles Dodgers Milwaukee Braves Minnesota Twins New York Giants New York Mets New York Yankees Kein Sieger Oakland Athletics Philadelphia Athletics Philadelph ia Phil Pittsburgh Pirates San Francisco Giants St. Louis Cardinals Toronto Blue Jays Washington Senators

World-Serie Gewinner ist nur eine Liste der Teams, die die Weltmeisterschaft jedes Jahr gewonnen haben.

Antwort

2

Gewinner ist ein Array der Größe 114, aber i kann bis zu 114 gehen, die auf Element 115 zugreift, das sich am Ende des Arrays befindet.

 if (winner[i] == teams[z]) 

Obendrein haben Sie zumindest ein paar Orte, wo man in einen Array gerade lesen, aber es ist nicht klar, dass Sie Ihre Eingabe auf die Größe des Arrays sind begrenzt.

+0

Ich habe meine Array-Größe bei 114 deklariert plus 0 = ein Array, das 115 Zeichenfolgen enthalten kann. Die for-Schleife besagt, dass sie ausgeführt werden soll, während i weniger als 115 ist, also wird sie nur zu 114 gehen. Auch solange die Bubble-Sortierung auskommentiert ist, läuft sie gut, es ist etwas in diesem Code-Block. –

+0

@GarrettPenfield 'string winner [114];' weist ein Array zu, das 114 Elemente enthalten kann. Indizes 0 bis 113 sind gültig. Es enthält * NICHT * 115 Dinge. Wenn ein Teil Ihres Codes für Ihre Frage nicht relevant ist, haben Sie kein [mcve] gepostet und sollten Ihre Frage anpassen, mit einem Schwerpunkt auf dem "minimalen" Teil – xaxxon

Verwandte Themen