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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2013, 23:16   #21
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

Да, по идее, все верно.
Если не будете ничего менять, кроме X[i] = rand()%100, то не должно мешать
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.04.2013, 23:37   #22
asv1994
Пользователь
 
Регистрация: 28.10.2012
Сообщений: 50
По умолчанию

вот так правильно? и еще вопросик, что здесь происходит ?
return 1.0 * sx / n;
Код:
#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

void FormMas(int *X, int n)
{
    int i;
  printf("vvedite cherez enter %d elementov massiva\n",n);
    for(i = 0; i < n; i++)
       scanf("%d",&X[i]);
}

void VivodMas(int *X, int n)
{
    int i;
    for(i = 0; i < n; i++)
        printf("%d\t",X[i]);
    printf("\n");
}

float sred(int *X, int n)
{
    int sx = 0, i;
    for (i = 0; i < n; i++)
        sx += X[i];
    return 1.0 * sx / n;
}

int formZ(int *Z, int *X, int n, float srX, int *Y, int m, float srY)
{
    int k = 0, i;
    for(i = 0; i < n; i++)
        if(X[i] > srY)
            Z[k++] = X[i];
    for(i = 0; i < m; i++)
        if(Y[i] > srX)
            Z[k++] = Y[i];
    return k;
}


int main()
{
    setlocale(LC_ALL, "rus");
    int n, m, k;
    float srX = 0, srY = 0;
    printf("Введите размерность массива X:");
    scanf("%d",&n);
    printf("Введите размерность массива Y:");
    scanf("%d",&m);
    int *X = (int *) malloc(n * sizeof(*X));
    int *Y = (int *) malloc(m * sizeof(*Y));
    int *Z = (int *) malloc(n + m * sizeof(*Z));
    FormMas(X, n);
     printf("Массив Х:\n");
    VivodMas(X, n);
    FormMas(Y, m);
  printf("Массив Y:\n");
    VivodMas(Y, m);
    srX = sred(X, n);
    printf("\nsredX=%.2f\n", srX);
    srY = sred(Y, m);
    printf("sredY=%.2f\n\n", srY);
    k = formZ(Z, X, n, srX, Y, m, srY);
    printf("Массив Z:\n");
    VivodMas(Z, k);
    free(X);
    free(y);
    free(Z);
    getch();
    return 0;
}
asv1994 вне форума Ответить с цитированием
Старый 09.04.2013, 23:44   #23
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,317
По умолчанию

1.0 * sx / n
В sx сумма всех элементов. Если просто разделить sx на n, то произойдет целочисленное деление. Чтобы этого не происходило, домножаем на 1.0 (действительное число).

n + m * sizeof(*Z) не равно (n + m) * sizeof(*Z), если sizeof(*Z) не равен 1, а он 1 не равен
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как быть MInistor Компьютерное железо 1 09.04.2012 13:48
Массивы .Программа должна быть на С адуч2323 Помощь студентам 0 26.12.2011 21:31
Регистрация на сайте журнала: быть или не быть Levsha100 Свободное общение 12 12.06.2010 00:39
Быть или не быть? Вот в чем вопрос! VadEr Свободное общение 8 23.09.2009 16:16
Упал телефон в сельский туалет. Как быть, как мыть? Лукманов Александр Свободное общение 28 30.04.2009 10:42