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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2009, 14:06   #1
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию Устранить ошибку в коде

Код:
#include <iostream>
using namespace std;
int main ()
{
int N, M, j = 0;
  cin >> N; //размерность
  cin >> M; // число
int * mas = new int [N];
int * mas2 = new int [N];
for ( int i=0;i<N;i++)
{
   if(mas[i] > M)
{
    mas2[j] = i;
    j++;
}
}
for (int i = 0; i < j; i++)
{
   cout << mas2[i] << " ";
}
delete [] mas;
delete [] mas2;
system ("PAUSE");
return 0;
}
Ошибка в циклах с переменной i. Как правильно ее устранить ?

Последний раз редактировалось Sazary; 27.06.2009 в 14:45.
Divoha вне форума Ответить с цитированием
Старый 27.06.2009, 14:13   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

for (int i = 0; i < j; i++)

j инициализируется нулем и больше нигде не изменяется, т.е. j всегда равно нулю, следовательно этот цикл никогда не начнется
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 27.06.2009, 14:14   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Сообщение от Divoha Посмотреть сообщение
#include <iostream>
using namespace std;
int main ()
{
int N, M, j = 0;
cin >> N; //размерность
cin >> M; // число
int * mas = new int [N];
int * mas2 = new int [N];
for ( int i=0;i<N;i++)
{
if(mas[i] > M)
{
mas2[j] = i;
j++;
}
}
for (int i = 0; i < j; i++)
{
cout << mas2[i] << " ";
}
delete [] mas;
delete [] mas2;
system ("PAUSE");
return 0;
}

Ошибка в циклах с переменной i. Как правильно ее устранить ?
Скорей всего у вас старый компилятор. Ну попробуйте так
Код:
#include <iostream>
using namespace std;
int main ()
{
int N, M, j = 0;
  cin >> N; //размерность
  cin >> M; // число
int * mas = new int [N];
int * mas2 = new int [N];
for ( int i=0;i<N;i++)
{
   if(mas[i] > M)
{
    mas2[j] = i;
    j++;
}
}
for (int h = 0; h < j; h++)
{
   cout << mas2[h] << " ";
}
delete [] mas;
delete [] mas2;
system ("PAUSE");
return 0;
}
profi вне форума Ответить с цитированием
Старый 27.06.2009, 14:17   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
for (int i = 0; i < j; i++)

j инициализируется нулем и больше нигде не изменяется
Код:
for ( int i=0;i<N;i++)
{
if(mas[i] > M)
{
mas2[j] = i;
j++;
}
}
profi вне форума Ответить с цитированием
Старый 27.06.2009, 14:22   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Виноват - не заметил =)
Тогда наверно действительно проблема в старом компиляторе. Но новую переменную не обязательно заводить, лучше так:
Код:
...
for (i = 0; i < j; i++) //Вместо int i=0
{
   cout << mas2[i] << " ";
}
...
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария

Последний раз редактировалось Blade; 27.06.2009 в 14:24.
Blade вне форума Ответить с цитированием
Старый 27.06.2009, 14:23   #6
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию

Самостоятельно устранить не пытались? Ладно я написал ее в блокноте, но у вас-то компилятор есть наверняка... Простите, Divoha, вы на каком факультете учитесь?
<= P.S. если я тебе помог нажми весы слева <=

Последний раз редактировалось assasin; 27.06.2009 в 14:28.
assasin вне форума Ответить с цитированием
Старый 27.06.2009, 14:30   #7
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию

У меня с++ 6.0 Просто там где учусь стоит такой же компилятор.. и мне желательно нужен код именно под 6.0
Divoha вне форума Ответить с цитированием
Старый 27.06.2009, 14:32   #8
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию

ну выше все способы устранения уже описаны))
<= P.S. если я тебе помог нажми весы слева <=
assasin вне форума Ответить с цитированием
Старый 27.06.2009, 14:37   #9
Divoha
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 26
По умолчанию

assasin, я поменял букву во втором цикле.. програма работает.. но я ввожу два значения.. потом мне выводит на экран.. Нажмите любую клавишу для продолжения.... Я не понял как вообще работает программа =) По идеи там вроже массив вводить надо
Divoha вне форума Ответить с цитированием
Старый 27.06.2009, 14:43   #10
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Сообщение от Divoha Посмотреть сообщение
По идеи там вроже массив вводить надо
Хотя да)), а про массив все забыли))
Код:
#include <iostream>
using namespace std;
int main ()
{
int N, M, j = 0;
  cin >> N; //размерность
  cin >> M; // число
int * mas = new int [N];
int * mas2 = new int [N];
for (int r=0;r<N;r++)
{
cout << "mas[" << r << "]=";
cin >> mas[r];
}
for ( int i=0;i<N;i++)
{
   if(mas[i] > M)
{
    mas2[j] = i;
    j++;
}
}
for (int h = 0; h < j; h++)
{
   cout << mas2[h] << " ";
}
delete [] mas;
delete [] mas2;
system ("PAUSE");
return 0;
}
profi вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Укажите ошибку в коде. DeamoniC Помощь студентам 2 09.06.2009 15:32
Как устранить ошибку Cannot instantiate non-existent class SeRhy PHP 1 28.04.2009 03:54
Как устранить ошибку "socket error #10060" Evgen1976 Работа с сетью в Delphi 11 20.03.2009 15:21
Устранить ошибку AlenaBEL Помощь студентам 7 23.11.2008 15:00