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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2012, 19:34   #1
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
Радость Найдите ошибку в СИ в задачах на циклы

Здравствуйте, СИ изучаю недавно, сделал программы из лабораторной работы, но они не работают и проблема в недостаточности моих знаний и понимании. Помогите разобраться в чем ошибки...
1)Дано вещественное число A и целое число N (> 0). Используя один цикл, найти значение выражения 1 + A + A^2 + A^3 + … + A^N.
PHP код:
#include "stdafx.h"
#include "stdio.h"
#include "locale.h"
#include "math.h"

void main() 
{
    
setlocale(LC_ALL,"Russian");
    
int i,k=1,n;
    
double a,result=1;
    
printf("Введите вещественное число A:");
    
scanf("%lf",&a);
    
printf("Введите натуральное число N:");
    
scanf("%u",&n);
    for (
i=0i<ni++)
    {
        
result+=pow(a,k);
        
k++;
    }
    
printf("Результат выражения: %lf\n",result);

Программа не дает ввести число N и выводит результат равный единице.

2)Дано целое число N (> 1). Найти наибольшее целое число K, при котором выполняется неравенство 3^K < N.
PHP код:
#include "stdafx.h"
#include "stdio.h"
#include "locale.h"
#include "math.h"

void main()
{
    
setlocale(LC_ALL,"Russian");
    
int n,x=0,k=0;
    
double z=3.0;
    
printf("Введите целое число N>1:\n");
    
scanf("%d",&n);
    while (
x<n)
    {
        
x=pow(z,k);
        
k++;
        if (
x=nk--;
    }
    
k--;
    
printf("Наибольшее число K удовлетворяющее условию 3K<N: %d\n",k);

Всегда выводит -1

3)Написать вариант алгоритма Евклида, использующий соотношения НОД(2a, 2b) = 2•НОД(a,b), НОД(2a,b) = НОД(a,b) при нечётном b, разрешается использовать из арифметических операций лишь сложение и вычитание. Общее число действий должно быть порядка n.
PHP код:
#include "stdafx.h"
#include "stdio.h"
#include "locale.h"

int NOD(int a,int b);

void main()
{
    
setlocale(LC_ALL,"Russian");
    
int a,b,x;
    
printf("Введите числа:\n");
    
scanf("%d",&a);
    
scanf("%d",&b);
    
x=NOD(a,b);
    
printf("НОД=%d\n",x);
}

int NOD(int a,int b)
{
    if (
a==b) return a;
    if (
a<b) return NOD(a,b-a);
    return 
NOD(a-b,b); 

Тут я вообще не понял что от меня хотят и просто написал рекурсию(тут ведь рекурсия?) НОД по Евклиду. Программа работает, но что нужно ещё сделать по заданию?

4)Дано целое число N и набор из N вещественных чисел: A1, A2, …, AN. Вывести следующие числа: (A1)^N, (A2)^(N–1), …, (AN–1)^2, A^N.
PHP код:
#include "stdafx.h"
#include "stdio.h"
#include "locale.h"
#include "math.h"

void main()
{
    
setlocale(LC_ALL,"Russian");
    
int n,i,t;
    
double a,x;
    
printf("Ввелите натуральное число N:");
    
scanf("%u",&n);
    
t=n;
    
printf("Введите %u вещественных числа:\n",n);
    for (
i=0i<=ni++)
    {
    
scanf("%lf",&a);
    
x=pow(a,t);
    
printf("%lf\n",x);
    
t--;
    }

Тут почему то после ввода 1 вещественного числа, остальные числа как бы вводятся сами...

Помогите...
Immoralist вне форума Ответить с цитированием
Старый 14.04.2012, 19:50   #2
Bogdand
-_-
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 35
По умолчанию

1)
PHP код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
    
float a,s=0;
    
int n;
    
printf("a = ");
    
scanf("%f",&a);
    
printf("n = ");
    
scanf("%d",&n);
    for(
int i 0n; ++i)
      
s+=pow(a,i);
    
printf("s = %3.2f",s);  
    
getch();  
    return 
0;          

Bogdand вне форума Ответить с цитированием
Старый 14.04.2012, 19:56   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

1-я:
Код:
#include "stdio.h"
#include "locale.h"
#include "math.h"

int
main()
{
    setlocale(LC_ALL,"Russian");
    int i,n;
    double a,result=1,b;
    printf("Введите вещественное число A:");
    scanf("%lf",&a);
	b=a;
    printf("Введите натуральное число N:");
    scanf("%u",&n);
    for (i=0; i<n; i++)
    {
        result+=b;
        b*=a;
    }
    printf("Результат выражения: %lf\n",result);
	getch();
	return 0;
}
2-я:
Код:
#include "stdio.h"
#include "locale.h"
#include "math.h"

int
main()
{
    setlocale(LC_ALL,"Russian");
    int n,k=0;
    printf("Введите целое число N>1:\n");
    scanf("%d",&n);
    while (pow(3,k)<n)
        k++;
    k--;
    printf("Наибольшее число K удовлетворяющее условию 3^K<N: %d\n",k);
    getch();
    return 0;
}
3-я: Похоже от вас хотят бинарный алгоритм Евклида http://ru.wikipedia.org/wiki/Бинарны...вычисления_НОД, но, почему-то, дали не все условия
4-я:
Код:
#include "stdio.h"
#include "locale.h"
#include "math.h"

int
main()
{
    setlocale(LC_ALL,"Russian");
    int n,i;
    double a;
    printf("Ввелите натуральное число N: ");
    scanf("%u",&n);
    printf("Введите %u вещественных числа:\n",n);
    for (i=0; i<n; i++)
    {
        scanf("%lf",&a);
        printf("%lf\n",pow(a,n-i));
    }
    getch();
    return 0;
}
Числа лучше сразу через пробел наберите, а потом жмите Enter.

Я компилирую в Code::Blocks.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 14.04.2012 в 20:08.
BDA на форуме Ответить с цитированием
Старый 14.04.2012, 20:07   #4
Bogdand
-_-
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 35
По умолчанию

2)
PHP код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
    
int n,k;
    
printf("n = ");
    
scanf("%d",&n);
    for(
0pow(3,k) < n; ++k);
    --
k;   
    
printf("%d",k);
    
getch();
    return 
0;          

Bogdand вне форума Ответить с цитированием
Старый 14.04.2012, 20:13   #5
Bogdand
-_-
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 35
По умолчанию

4 задание ты точно правильно написал? мне что то кажется что ты там где то с условием напортачил
Bogdand вне форума Ответить с цитированием
Старый 14.04.2012, 20:18   #6
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Цитата:
Сообщение от Bogdand Посмотреть сообщение
4 задание ты точно правильно написал? мне что то кажется что ты там где то с условием напортачил
Условия верные.
У меня тут ещё вопрос: допустим у нас есть заштрихованная область графика функции y=(x-1)^2 и дана точка x,y как определить входит ли эта точка в заштрихованную область?
BDA спасибо тебе...
Immoralist вне форума Ответить с цитированием
Старый 14.04.2012, 20:32   #7
Bogdand
-_-
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 35
По умолчанию

PHP код:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
    
float x,y;
    
printf("x = ");
    
scanf("%f",&x);
    
printf("y = ");
    
scanf("%f",&y);
    if(
&& fabs(pow((x-1),2)))
      
printf("+");
    else
      
printf("-");
    
getch();
    return 
0;    


Последний раз редактировалось Bogdand; 14.04.2012 в 20:39.
Bogdand вне форума Ответить с цитированием
Старый 14.04.2012, 20:36   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Пожалуйста.
Смотря какая область заштрихована.
Если как на картинке и включая саму функцию, то y>=(x-1)*(x-1).
Изображения
Тип файла: jpg график.jpg (37.2 Кб, 39 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.04.2012, 20:42   #9
Immoralist
Подтвердите свой е-майл
 
Регистрация: 14.04.2012
Сообщений: 38
По умолчанию

Да область как на рисунке, только у меня ещё окружность с центром в начале координат с заштрихованной областью в 3 четверти.
Получилось условие:
(((x*x+y*y)<=R && x<=0 && y<=0) || ((x*x+y*y)<=R && x>=0 && y>=0 && y>=(x-1)*(x-1)))
Immoralist вне форума Ответить с цитированием
Старый 14.04.2012, 20:45   #10
Bogdand
-_-
Пользователь
 
Регистрация: 09.04.2011
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Immoralist Посмотреть сообщение
Да область как на рисунке, только у меня ещё окружность с центром в начале координат с заштрихованной областью в 3 четверти.
Получилось условие:
(((x*x+y*y)<=R && x<=0 && y<=0) || ((x*x+y*y)<=R && x>=0 && y>=0 && y>=(x-1)*(x-1)))
ну дык эту сам теперь и напиши) раз уж осваиваешь си, просто если по собственному желанию то хз зачем именно си)
Bogdand вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
линейный массив. найдите ошибки в задачах! rtif Помощь студентам 5 21.03.2012 22:08
нужно написать программу на фортране по теме вложенные циклы в матричных задачах. lenahan Помощь студентам 0 14.02.2012 18:49
Вложенные циклы в матричных задачах. Kto to Помощь студентам 0 16.12.2011 18:28
Найдите ошибку C++ D.176 Помощь студентам 1 24.05.2011 07:31
Найдите ошибку vladxxl Общие вопросы C/C++ 1 23.04.2011 17:09