@Chipu

C++ ошибка при выполнении программы, как ее исправить?

// ConsoleApplication3.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include "pch.h"
#include <iostream>
#include <string>
using namespace std;

int main()
{
	string s;
	getline(std::cin, s);
	int probel = 0;
	//Перед или после запятой пробел не ставится.
	for (int i = 0; i < s.size(); i++) 
	{
		if (s[i]==' '|| s[i]==',')
		{
			probel++;
		}
	}
	int massiv = 0;
	string strochka = "";
	string *a = new string[probel];
	for (int i = 0; i < s.size(); i++) 
	{
		if (s[i] != ' ' && s[i] != ','&&s[i]!='.'&&s[i]!='?'&&s[i]!='!')
		{
			strochka += s[i];

		}
		else
		{
			a[massiv] = strochka;
			strochka = "";
			massiv++;
		}
		
		
	}
	for (int i=0;i<probel;i++)
	{
		cout << a[i] << endl;
	}

	cout << probel<<"\t"<<sizeof(s);
	system("Pause");
}
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Из-за того что в первом и втором цикле условия разные, у вас выделяется массив строк (a[]) меньшего размера, чем происходит к нему обращений во втором цикле. Отсюда - выход за границы массива и сбой программы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы