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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2012, 01:07   #1
alena_malyha
 
Регистрация: 24.09.2012
Сообщений: 3
По умолчанию найти ошибку в цикле

Найти наименьший номер элемента последовательности, для которого выполняется условие a<e . Вывести на экран
этот номер и все элементы ai , где i = 1, 2, …, n . a=1/((i+1)*(i+1))

Код:

#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;

int main(int argc, char *argv[])
{
    printf("vvedite e");
float a,i,e;
scanf("%f", &e);
i==1;
a=0;
do 
{
i++;            
a=1/((i+1)*(i+1));
}
while(a<e);
printf("i%-5.2f",a);
    system("PAUSE");
    return EXIT_SUCCESS;
}

Последний раз редактировалось Stilet; 24.09.2012 в 08:11.
alena_malyha вне форума Ответить с цитированием
Старый 24.09.2012, 01:25   #2
zvoronz
Пользователь
 
Регистрация: 03.01.2011
Сообщений: 49
По умолчанию

Опиши хотябы какого плана ошибка тебя смущает?
Вот мне например не нравится что ты сразу считать начинаешь фактически с i=2.
zvoronz вне форума Ответить с цитированием
Старый 24.09.2012, 02:24   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,821
По умолчанию

Код:
i==1;
Это сравнение, а не присвоение.
p51x вне форума Ответить с цитированием
Старый 24.09.2012, 10:59   #4
alena_malyha
 
Регистрация: 24.09.2012
Сообщений: 3
По умолчанию

даже поменяв все,программа зацикивается!!!
alena_malyha вне форума Ответить с цитированием
Старый 24.09.2012, 11:21   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Сделайте пошаговую трассировку, понаблюдайте за значениями переменным a и e
Вадим Мошев вне форума Ответить с цитированием
Старый 24.09.2012, 11:33   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
do 
{
i++;            
a=1/((i+1)*(i+1));
}
while(a<e);
Я в С не силён, но тут явно логическая ошибка:
i - увеличивается,
поскольку a - обратно пропорциональна квадрату i, то это значение уменьшается и стремится к нулю.
При таком раскладе условие a<e, если не нарушится сразу, будет вечным...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 24.09.2012, 14:49   #7
alena_malyha
 
Регистрация: 24.09.2012
Сообщений: 3
По умолчанию

спасибо)))разобралась!
alena_malyha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ошибку Lenty Общие вопросы C/C++ 7 15.06.2012 09:44
найти ошибку Славик__077 Общие вопросы C/C++ 0 31.01.2011 14:39
найти ошибку Veronik@ Общие вопросы C/C++ 0 24.11.2010 21:50
найти ошибку sergio11 Общие вопросы C/C++ 2 03.09.2010 19:29
найти ошибку rUs_LAN Общие вопросы C/C++ 8 14.05.2009 12:02