#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
int main(void) {
int size;
int *A;
int *i;
int sred, k=0, max=0, summa=0;
randomize();
size=random(151)+50;
printf("size=%d\n",size);
A=(int *)malloc(size*sizeof(int));
printf("Start massiv:\n");
for (i=A; i<A+size; i++) {
*i=random(101)-50;
printf("%3d ",*i);
}
printf("\n");
for (i=0, i=A; i<A+size; i++) {
if (i<0)
{
summa=summa + i; k++;
}
if(max>summa){
summa=max; }
sred=summa/k;
if(i<0 && i+1>0)
{ summa=0;
sred=0;
k=0;
}
}
printf("Max average negative sequence%4d", sred);
free(A);
getch();
return 0;
}
[C],поиск абсолютного среднего в массиве
задание:определить массив как случайное число, в диапозоне 50-200.Выделить под него динамически памятьи заполнить его случайными числами(это я все сделал ).Найти из непрерывных последовательностей отрицательных чисел, ту которая имеет наибольшее абсолютное значение среднего арифмитического ее элементов.
Код:
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
//#include <alloc.h>
int main(void) {
int size;
int *A;
int *i;
int k = 0, max_mid=0, summa=0, j;
srand(time(NULL));
size=rand()%151+50;
printf("size=%d\n",size);
A=(int *)malloc(size*sizeof(int));
printf("Start massiv:\n");
for(i=A; i < A+size; i++)
{
*i = rand()%100-50; // values from - 50 to 49
printf("%3d ",*i);
}
printf("\n");
for (j = 0; j < size; j++)
{
if (A[j] < 0)
{
summa += abs(A[j]);
k++;
}
if( A[j] > 0 || j == size-1)
{
if(k > 0 && max_mid < summa/k)
{
max_mid = summa/k;
// printf("sum = %d, k = %d\n", summa, k);
}
k = 0;
summa = 0;
}
}
printf("Max average negative sequence%4d\n\n", max_mid);
free(A);
getch();
return 0;
}
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
//#include <alloc.h>
int main(void) {
int size;
int *A;
int *i;
int k = 0, max_mid=0, summa=0, j;
srand(time(NULL));
size=rand()%151+50;
printf("size=%d\n",size);
A=(int *)malloc(size*sizeof(int));
printf("Start massiv:\n");
for(i=A; i < A+size; i++)
{
*i = rand()%100-50; // values from - 50 to 49
printf("%3d ",*i);
}
printf("\n");
for (j = 0; j < size; j++)
{
if (A[j] < 0)
{
summa += abs(A[j]);
k++;
}
if( A[j] > 0 || j == size-1)
{
if(k > 0 && max_mid < summa/k)
{
max_mid = summa/k;
// printf("sum = %d, k = %d\n", summa, k);
}
k = 0;
summa = 0;
}
}
printf("Max average negative sequence%4d\n\n", max_mid);
free(A);
getch();
return 0;
}
Цитата:
только вот незнаю как генерить правильно отрицательные случайные числа
Я это в книге какойто видел Оля,я поищу и скину сюда Ок???Кстати привет!
[quote=mortar89]Народ, поясните пожалуйста что не так в моем коде программы
Код:
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
int main(void) {
int size;
int *A;
int *i;
int sred, k=0, max=0, summa=0;
randomize(); [COLOR=red]// ??[/COLOR]
size=random(151)+50; [COLOR=red]// rand()%151+50[/COLOR]
printf("size=%d\n",size);
A=(int *)malloc(size*sizeof(int));
printf("Start massiv:\n");
for (i=A; i<A+size; i++) {
*i=random(101)-50; [COLOR=red]// нет в С random [/COLOR]
printf("%3d ",*i);
}
printf("\n");
for ([COLOR=red]i=0, i=A[/COLOR]; i<A+size; i++) {
if ([COLOR=red]*[/COLOR]i<0)
{
summa=summa + [COLOR=red]*[/COLOR]i; k++;
}
if(max>summa){
summa=max; }
sred=summa/k;
if([COLOR=red]i<0[/COLOR] && i+1>0) [COLOR=red]//[/COLOR] [COLOR=red]i - указатель, адресс меньше нуля ???[/COLOR]
{ summa=0;
sred=0;
k=0;
}
}
printf("Max average negative sequence%4d", sred);
free(A);
getch();
return 0;
}
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <alloc.h>
int main(void) {
int size;
int *A;
int *i;
int sred, k=0, max=0, summa=0;
randomize(); [COLOR=red]// ??[/COLOR]
size=random(151)+50; [COLOR=red]// rand()%151+50[/COLOR]
printf("size=%d\n",size);
A=(int *)malloc(size*sizeof(int));
printf("Start massiv:\n");
for (i=A; i<A+size; i++) {
*i=random(101)-50; [COLOR=red]// нет в С random [/COLOR]
printf("%3d ",*i);
}
printf("\n");
for ([COLOR=red]i=0, i=A[/COLOR]; i<A+size; i++) {
if ([COLOR=red]*[/COLOR]i<0)
{
summa=summa + [COLOR=red]*[/COLOR]i; k++;
}
if(max>summa){
summa=max; }
sred=summa/k;
if([COLOR=red]i<0[/COLOR] && i+1>0) [COLOR=red]//[/COLOR] [COLOR=red]i - указатель, адресс меньше нуля ???[/COLOR]
{ summa=0;
sred=0;
k=0;
}
}
printf("Max average negative sequence%4d", sred);
free(A);
getch();
return 0;
}
2Belomorkan OK.
Ольга, спасибо тебе огромное! Ты очень мне помогла!