Heinz
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору С одномерным массивом, состоящим из n вещественных элементов, произвести следующие операции: 1) найти максимальный элемент массива; 2) вычислить сумму элементов массива, расположенных до последнего положительного элемента; 3) сжать массив, удалив из него все элементы, модуль которых находится в интервале (а,b). Освободившиеся в конце массива элементы заполнить нулями. Проблемы: Не работает ручной ввод : ( Так и не понял в чём ошибка. Иногда отрицательные числа в новом массиве заполняются нулями. #include <stdio.h> #include <conio.h> #include <process.h> #include <stdlib.h> #define max 5 void zip(float mas[],int n, float a,float b) { for(int i=0;i<n;i++) { if (mas[i]>=a || mas[i]<=b) { for (int q=i;q<n-1;q++) mas[q]=mas[q+1]; mas[n-1]=0; } else i++; } } float sum(float mas[],int n) { for (int i=n;i>=0;i--) if (mas[i]>0) break; float sm=0; for (int j=0;j<i;j++) sm+=mas[j]; return sm; } float maxmas(float mas[],int n) { float mx; mx=mas[0]; for (int i=0;i<=n;i++) if (mx<mas[i]) mx=mas[i]; return mx; } void main() { clrscr(); fflush(stdin); randomize(); printf("vvodite sami? [y/n]\n->"); char yn; int m=0; float mas[100]; int res=scanf("%c",&yn); if (res==0) { printf("Neverno"); if (!getch()) getch(); exit(1); } if (yn!='n' && yn!='y') { printf("Input 'y' or 'n'"); if (!getch()) getch(); exit(1); } if (yn=='n') { for (int i=0;i<=max;i++) mas[i]=10-random(2000)/100.0; m=max; } if (yn=='y') { printf("vvedite kol-vo el-tov (0,%d)\n->",max); int m=0; res=scanf("%d",&m); if (res==0) { printf("Neverno"); if (!getch()) getch(); exit(1); } if (m>max || m<0) { printf("Need 0<x<%d",max); if (!getch()) getch(); exit(1); } for (int i=0;i<m;i++) { printf("vvedite el-t %d\n->",i); res=scanf("%f",mas[i]); if (res==0) { printf("Neverno"); if (!getch()) getch(); exit(1); } } } printf("\n\n mas:"); for (int i=0;i<m;i++) printf("%.2f ",mas[i]); float a,b; printf("\nvvedite niz predel\n->"); res=scanf("%f",&a); if (res==0) { printf("Neverno"); if (!getch()) getch(); exit(1); } printf("\nvvedite verh predel\n->"); res=scanf("%f",&b); if (res==0) { printf("Neverno"); if (!getch()) getch(); exit(1); } printf("\nmax="); printf("%.2f",maxmas(mas,m)); printf("\nsum until last positive el-t="); printf("%.2f",sum(mas,m)); printf("\n zip="); zip(mas,m,a,b); for (i=0;i<m;i++) printf("%.2f ",mas[i]); if (!getch()) getch(); } Написать функцию, которая вычисляет значение ab, не используя функцию pow(a,b). Число a может быть любыми положительными числом. b – неотрицательное целое число. double p(double a,double b) { double r=1; for (int i=1;i<=b;i++) r=r*a; if (b<1 || b>0) { r=exp(b*log(a)); } return r; } | Всего записей: 3 | Зарегистр. 03-09-2006 | Отправлено: 09:55 03-09-2006 | Исправлено: ShIvADeSt, 02:26 04-09-2006 |
|