Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2016, 14:17   #1
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию Помогите найти ошибку на С++

Код:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
	freopen("input.txt","r",stdin);
	freopen("output.txt","w",stdout);
    long n,l,i,t,mn,mx;
    int x[20000]; 
    bool f;
    cin>>n>>l;
    mn=10001; 
    i=0;
    mx=-10001; 
    do{
    i++;
    cin>>t;
    if (mn>t) mn=t; 
    if (mx<t) mx=t; 
    x[t]=1; 
    }
    while (i!=n);
    t=0;
    while (mn<=mx) {
    f=false; 
    for (i==mn;mn+l!=i;i++) if (x[i]=1) f=true; 
    t=t+int(f); 
    mn=mn+l+1; 
    }
    cout<<t;
	return 0;
}
Пожалуйста, оформляйте Ваш код согласно правилам.
Изображения
Тип файла: jpg pto.jpg (65.4 Кб, 140 просмотров)

Последний раз редактировалось Вадим Мошев; 09.07.2016 в 16:13.
Koneru вне форума Ответить с цитированием
Старый 08.07.2016, 14:18   #2
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

вот решение на паскале но на С++ перевести не получилось
Код:
var 
n,l,i,t,mn,mx:longint; 
x:array[-10001..10001] of byte; 
f:boolean; 
begin 
readln(n,l); 
mn:=10001; 
mx:=-10001; 
for i:=1 to n do begin 
read(t); 
if mn>t then mn:=t; 
if mx<t then mx:=t; 
x[t]:=1; 
end; 
t:=0; 
while mn<=mx do begin 
f:=false; 
for i:=mn to mn+l do if x[i]=1 then f:=true; 
t:=t+ord(f); 
mn:=mn+l+1; 
end; 
writeln(t); 
end.
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 09.07.2016 в 16:14.
Koneru вне форума Ответить с цитированием
Старый 08.07.2016, 14:48   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Возможно, это не все ошибки
Код:
for (i==mn;
== поменять на =

А тут
Код:
if (x[i]=1)
наоборот

Код:
mn+l!=i;
граница mn+l должна входить, вернуть знак неравенства как в паскале

следующий код
Код:
while (i!=n);
либо ничего не делает, либо бесконечно много раз делает ничего ))

Код:
ord(f)
Неоднозначный пример приведения типов, орд от булева может возвращать +1 или -1 в зависимости от компилятора (ну и ноль в противном случае)
eoln вне форума Ответить с цитированием
Старый 08.07.2016, 14:56   #4
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию не понял((

Код:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
long n,l,i,t,mn,mx;
int x[20000]; 
bool f;
cin>>n>>l;
mn=10001; 
i=0;
mx=-10001; 
do{
i++;
cin>>t;
if (mn>t) mn=t; 
if (mx<t) mx=t; 
x[t]=1; 
}
while (i!=n);
t=0;
while (mn<=mx) {
f=false; 
for (i=mn;mn+l!=i;i++) if (x[i]=1) f=true; 
t=t+int(f); 
mn=mn+l+1; 
}
cout<<t;
return 0;
}
Пожалуйста, оформляйте Ваш код согласно правилам.


вот получился код

Последний раз редактировалось Вадим Мошев; 09.07.2016 в 16:15.
Koneru вне форума Ответить с цитированием
Старый 08.07.2016, 14:56   #5
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

А тут
Код:
if (x[i]=1)
наоборот ????

Код:
mn+l!=i;
граница mn+l должна входить, вернуть знак неравенства как в паскале

следующий код
Код:
while (i!=n);
либо ничего не делает, либо бесконечно много раз делает ничего )) ???

Код:
ord(f)
Неоднозначный пример приведения типов, орд от булева может возвращать +1 или -1 в зависимости от компилятора (ну и ноль в противном случае)[/QUOTE] ???
Koneru вне форума Ответить с цитированием
Старый 08.07.2016, 15:07   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
[CODE]А тут
Код:
if (x[i]=1)
наоборот
Нужно
Код:
if (x[i]==1)

Следующий код
Код:
while (i!=n);
убрать вообще

Дальше "и так сойдёт" )
eoln вне форума Ответить с цитированием
Старый 08.07.2016, 15:21   #7
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

Стало еще хуже теперь вообще тесты не проходит((

#include<iostream>
#include<cmath>
using namespace std;
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
long n,l,i,t,mn,mx;
int x[20000];
bool f;
cin>>n>>l;
mn=10001;
i=0;
mx=-10001;
do{
i++;
cin>>t;
if (mn>t) mn=t;
if (mx<t) mx=t;
x[t]=1;
}
while (i!=n);
t=0;
f=false;
for (i=mn;mn+l!=i;i++) if (x[i]==1) f=true;
t=t+int(f);
mn=mn+l+1;
cout<<t;
return 0;
}
Koneru вне форума Ответить с цитированием
Старый 08.07.2016, 15:47   #8
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

На счёт while я поторопился, он к do относился. Верни его назад, прочитай правила по оформлению кода, а то ж не понятно что к чему.
eoln вне форума Ответить с цитированием
Старый 08.07.2016, 15:48   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А что программа делает?
А что такое

freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);

открытие файлов для чтения и записи. Чего?
ura_111 вне форума Ответить с цитированием
Старый 08.07.2016, 15:51   #10
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А всё увидел картинку.
ura_111 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку AmaPC HTML и CSS 0 15.11.2015 19:39
Найти седловые точки в матрице(помогите найти ошибку) - pascal tdsotm Помощь студентам 0 20.11.2014 18:57
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) Artsiom Помощь студентам 10 18.12.2013 14:10
Помогите найти ошибку (С++). TheWanderer Помощь студентам 1 19.03.2009 15:00