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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2014, 19:15   #1
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию Ошибка в программе.

Задание:
Вычислить с точностью сумму ряда
Моя программа:
Код:
#include<stdio.h>
int main()
{
    int x, n=0;
    double eps=1e-5, a=0.5, sum=0.5;
    printf("Vvedite x");
    scanf("%d", &x);
    while(fabs(x)>eps) // тут точно ошибка, я пробовал while(x)>a), но так тоже не правильно.
    {
    n++;
    a*=(x*x)/n;
    sum+=a;
    }
    printf("%lf", sum);
    return0; // с ретерном я тоже что-то не то
    }
East Undia Trading вне форума Ответить с цитированием
Старый 30.01.2014, 19:47   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
return0; // с ретерном я тоже что-то не то
Пробел..

Цитата:
while(fabs(x)>eps)
a > eps..
Цитата:
a*=(x*x)/n;
a*=(x*x)/(2*n);

Изначально sum = 0; a = 0..

eps - на Вашей совести..
Poma][a вне форума Ответить с цитированием
Старый 05.02.2014, 22:14   #3
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

У меня еще вопрос есть.
Задание: вывести на экран через запятую все делители натурального числа N, не кратные 2 или 5.
Как я написал:
#include <stdio.h>
#include <stdio.h>
int main ()
{
int n, i;
printf("Vvedite n\n");
scanf("%d", &n);
for(i=1;i<n;i++)
if((n%i==0)&&((i%2!=0)&&(i%5!=0))); //переписал так if((n%i==0)&&(i%2!=0)||(i%5!=0))
printf("%d", i);
if((n%2!=0)||(n%5!=0)); //тут надо так if((n%2!=0)||(n%5!=0));
return 0;
}
Вроде все верно и программа выводит то, что нужно.По вашему это так?Или я что-то упустил?
East Undia Trading вне форума Ответить с цитированием
Старый 05.02.2014, 23:00   #4
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

У меня тоже была такая же ошибка ,когда я ненавидел программирование)))
точки с запятыми ставил куда надо и куда не надо)))
Код:
#include <stdio.h>
void main ()
{
int n, i;
int z=0;
printf("Vvedite n\n");
scanf("%d", &n);
for(i=1;i<=n;i++)
	{
	if((n%i==0)&&(i%2!=0)&&(i%5!=0))
		{
		if(z==0) printf("%d", i);
		if(z==1) printf(",%d", i);
		z=1;
		}
	}
printf("\n");
}

Последний раз редактировалось alekopoko; 06.02.2014 в 00:47.
alekopoko вне форума Ответить с цитированием
Старый 05.02.2014, 23:04   #5
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

у тебя управляющий оператор без тела .Ты после условия оператора взял и засандалил точку с запятой и соответственно следующая строчка вообще не относится к if.
alekopoko вне форума Ответить с цитированием
Старый 05.02.2014, 23:31   #6
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

Код:
#include <stdio.h>
int main ()
{
   int n, i;
   printf("Vvedite n\n");
   scanf("%d", &n);
   for(i=1;i<n;i++)
     if((n%i==0)&&((i%2!=0)||(i%5!=0)))
	 printf("%d", i);
	 if((n%2!=0)||(n%5!=0))
	 return 0;
}
Скобки убрал, но пишет что у числа 8 существует 124 делителя, значит что-то не учел.
East Undia Trading вне форума Ответить с цитированием
Старый 06.02.2014, 01:22   #7
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

-2) ТЫ НЕ ЗНАЕШЬ основных, элементарных правил грамматики программирования и ТЫ вместо того чтобы принять мой правильный код, тычешь в меня своим неправильным кодом.Это ты так принимаешь мою помощь,мое готовое решение?спасибо.
-1)ну например,ты не знаешь когда возвращают true и false логические операторы && и ||
0)иди читай учебник .Не пугайся.Не весь учебник.Прочитай несколько первых глав.И ты научишься писать вот эти вот простенькие программы(ну после какой-то практики конечно)
1)это не число 124
а число 1, потом 2 ,потом 4
он тебе вывел три результата вызова функции printf при i=1,i=2,i=4;
ты просишь компилятору вывести значение переменной i.И ВСЕ.И поэтому они выводятся слитно.Просто выводятся подряд.Друг за другом
2)твой цикл находит все делители числа кроме делителя числа на самого себя(т.е. на твоем примере пролетаем мимо делителя 8) В условие окончания цикла for надо писать i<=n,тогда будут проверятся все делители заданного тобою числа
Ты смотрел на мой код вообще?там есть i<=n .Это не смешно. Ты уперся в свой неправильный код .И программируешь методом тыка.
3)return 0 не относится к циклу for,как и if. и return 0 не выход из цикла и не переход к следующей интерации(шагу) цикла ,а выход из программы т.е. выход из функции main.

Последний раз редактировалось alekopoko; 06.02.2014 в 01:46.
alekopoko вне форума Ответить с цитированием
Старый 06.02.2014, 02:11   #8
East Undia Trading
Форумчанин
 
Регистрация: 02.10.2013
Сообщений: 231
По умолчанию

alekopoko, С ЧЕГО ЭТО Я ЭТОГО НЕ ЗНАЮ?Сказано было что все правильно написано, а оказалось что ничего тут не правильно.
В целом, СПАСИБО, теперь разобрался.

Последний раз редактировалось East Undia Trading; 06.02.2014 в 02:17.
East Undia Trading вне форума Ответить с цитированием
Старый 06.02.2014, 12:06   #9
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

ну ладно,ладно извини за капс если что.
ты правда не знаешь некоторые детали.
1)Ну например твое условие if всегда true при любых делителях числа,кроме делителя числа на самого себя
По твоей же задачи условие if должен быть false при делителях кратных 2 и 5
Код:
((i%2!=0)||(i%5!=0))
у тебя это условие будет всегда true т.к. если хоть одно значение логического ИЛИ - true,а второе false ,то оно все равно возвращает true
возвращает false только тогда, когда оба выражения false, а по твоему условию оба выражения false никогда не будут.
У тебя первый вариант условия if правильный там правда есть лишние скобки но это не суть,это не ошибка
Код:
if((n%i==0)&&((i%2!=0)&&(i%5!=0)))
т.е. число i должно быть делителям числа n и не должны быть делителям кратным 2 и 5 числа n
а методом тыка ты программируешь потому-что правильный вариант заменил на неправильный т.е. опять же ты не понимаешь что печатаешь( я про твой код,а не про твои сообщения)
Цитата:
С ЧЕГО ЭТО Я ЭТОГО НЕ ЗНАЮ?
ты не знаешь например того что я написал выше про true и false логических операторов && и || .Это Реальный факт.С ним же не поспоришь?хватит отнекиваться.Не знаю кто тебе сказал что все правильно написано.Оказалось что неправильно.

Последний раз редактировалось alekopoko; 06.02.2014 в 12:27.
alekopoko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе С++ dgulij Помощь студентам 3 03.03.2013 20:01
ошибка в программе MKS23 Помощь студентам 1 13.06.2012 20:36
Ошибка в программе LuBuMaster Visual C++ 5 07.10.2010 17:19
Ошибка в программе w6120w Общие вопросы C/C++ 3 04.10.2010 19:37
Ошибка в программе RoadTrain Общие вопросы Delphi 5 24.10.2007 22:16