CodeBlooded Ответов: 1

Во время выполнения сигнала sigfpe ошибка


Итак, я решал проблему на конкурсе codechef и сделал программу.теперь она отлично работает на моем компиляторе (давая желаемый результат), но когда я отправляю решение, оно говорит: "Ошибка времени выполнения (SIGFPE)"

Сигнала sigfpe
[^]

Может ли кто-нибудь помочь мне удалить ошибку? Я не могу понять, в чем проблема.


вопрос[^]

Что я уже пробовал:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int t,n,m,x,k;
	int flag=0;
	string str;
	cin>>t;
	while(t--)
	{
		cin>>n>>m>>x>>k;
		cin>>str;
		if(n<=m && k>=m)
		{
			int l=k/x;
			if(l<=m)
			{
				for(int i=1; i<=k; i++)
				{
					if((str[i]=='E' && i%2==0) || (str[i]=='O' && i%2==1))
					{
						flag=1;
					}
				}
			}
		}
		
		else
		flag=0;
		
		if(flag==1)
		cout<<"yes"<<endl;
		else
		cout<<"no"<<endl;
		
	}
	
	return 0;
}

Patrice T

Это хорошая идея, чтобы пять ссылок на проблему, так что у нас есть идея, что вы пытаетесь сделать.

CodeBlooded

Окей

Kornfeld Eliyahu Peter

Что делать, если x равно 0 (нулю)? Вы не проверяете его, но не видите никаких ограничений на это, так что из входных данных он может быть равен нулю...

CodeBlooded

@Kornfeld я вижу,спасибо, что это вероятно.

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
0 ≤ X ≤ 106

X может быть равен нулю, но вы не справляетесь с этим делом.

C++ основан на нуле, это означает, что первый char в str, находится в положении 0.

[Обновление]
Ваша программа выглядит действительно странно, вы должны создавать свои собственные наборы данных, чтобы проверить, получаете ли вы правильный ответ каждый раз, чередуя правильные наборы данных и неудачные.

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что он делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.