18.04.2012, 19:36 | #1 (permalink) |
Member
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Си, вопросы насчет функций
Имеется 3 задачи, на функции,решила их так как поняла. Я понимаю, мои решения полный бред, но не могли бы вы помощь мне найти ошибки в моих программах. 1)описать рекурсивную функцию для вычисления К-го числа Фибоначчи. 1,1,2,3,5,8,13,21... решила так. #Include <stdio.h> Int main(); Int s[10]; int void fib(int*s); {int i; s[1]=1; s[2]=1; for (i=3; i<25; i++; { a[i]=a[i-1]+a[i-2];} int s[10]; fib(&s[i]); for (i=1; i<25; i++; scanf("%d",s[i]); return 0; } 2)описать функцию,вычисляющую количество единиц в двоичной записи целого числа . с ее помощью определить число из заданного диапазона [a,b] с мах количеством единиц в двоичной записи. #Include <stdio.h> Int main(); int void kol(int*n); { int a,k; if (n>=1) and (n<=100) while (n!=0) { a=n%2; n=n/2; if a=1 k++;} int n1,n2; int k1,k2; printf("ввод "); scanf("%d%d",&n1,&n2); kol(&n1); kol(&n2); if k1>k2 printf("%",n1); else if k2>k1 printf("%",n2); else printf("количество единиц одинаково"); } 3)описать функцию,вычисляющую действительный корень биквадратного уравнения и их количество. результат возвратить в массиве. #Include <stdio.h> double main(); double void sp(double*a,double*b,double*c); { double x1,x2,x3,x4; double t,t1,t2,d; d=(b*b-4*a*c); if d<0 printf("нет решения"); else if d=0 { t=-b/(2.0*a); if t<0 printf("нет решений"); else if t=0 printf("решение уравнения x1=x2=x3=x4=0"); else if t>0 printf("x1=x2=",sqrt(t),"x3=x4=",-sqrt(t));} else if d>0 {t1=(-b+sqrt(d))/(2.0*a);t2= (-b-sqrt(d))/(2.0*a); if (t1>0) and (t2<0) printf("x1=",sqrt(t1),"x2=",-sqrt(t1)); else if (t1<0) and(t2>0) printf("x1=",sqrt(t2),"x2=",-sqrt(t2)); else if (t2>0) and (t1<0) printf("x1=",sqrt(t1),"x2=",-sqrt(t1),"x3=",sqrt(t2),"x4=",sqet(t2));} } double a1,b1,c1; printf("a1"); scanf(a1); printf("a2"); scanf(a2); printf("a3"); scanf(a3); sp(&a1,&b1,&c1);} |
18.04.2012, 19:36 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Очень часто проблемы у людей похожи, вот вам список аналогичных топиков Насчет репутации В раздумьях насчет усилителя |
19.04.2012, 02:24 | #2 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
Ваш код не смотрел. Ну и в рекурсии циклы не используются) вот первое задание
Код:
#include <stdio.h> int fib(int n){ if (n==0){ return 0; } else if(n==1){ return 1; } else{ return fib(n-1) + fib(n-2); } } int main(){ int n; printf("n="); scanf("%d",&n); printf("n член ряда Фибоначчи f=%d\n",fib(n)); } |
19.04.2012, 02:52 | #3 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
вторая задача вот
Код:
#include <stdio.h> int value_one(int n){ int val=0; while (n != 0){ if(n % 2 == 1){ val++; } n = n / 2; } return val; } int main(){ int a, b, max; printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); max = value_one(a); for (int i=a+1; i < b+1; i++){ if(max < value_one(i)){ max = value_one(i); } } printf("%d\n",max); } |
19.04.2012, 17:22 | #5 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
Последнюю задачу попробуйте решить сами. Функции не пишутся внутри основной программы
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|