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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 22:57   #1
Valionos
 
Регистрация: 24.12.2015
Сообщений: 7
По умолчанию

С одномерным массивом, состоящим из n вещественных элементов, произвести следующие операции:
1) вычислить произведение положительных элементов массива;
2) вычислить сумму элементов массива, расположенных до минимального элемента.
Сделать это нужно на языке С.

пока что наработал вот это
Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void input1 (int *n)  //вводим размер массива
{
    printf ("Vvedite razmer massiva= \n");
    int res=scanf("%i", n);
    if (res==0 || *n<1 || *n>5)
    {
        printf ("Ochibka vvoda \n");
        if (!getchar())
            getchar();
        fflush(stdin);
        exit(1);
    }
}

void create (int n, float *a)  //элементы с генератора случайных чисел
{
    for (int i=1; i<=n; i++)
        a[i]=random();
}

void input2 (int n, float *a)  //ввод элементов с клавиатуры
{
    for (int i=1; i<=n; i++)
    {
        printf ("\n Vvedite element %i", i);
        scanf ("%f", &a[i]);
    }
}

void output (int n, float *a)  //вывод массива
{
    printf ("Massiv: \n");
    for (int i=1; i<=n; i++)
        printf ("%.3f\n", a[i]);
}
float calc1 (int n, float *a)
{
    float pr=0;
    for (int i=0; i<=n; i++)
        if (a[i] > 0) pr*=a[i];
    return pr;
}

float calc2 (int n, float *a)
{
    float sum=1, max=a[1], min=a[1];
    int nmax, nmin;
    nmax=0;
    nmin=0;
    for (int i=1; i<=n; i++)
    {
        if (a[i] > max)
        {
            nmax=i;
            max=a[i];
        }
        if (a[i] <= min)
        {
            nmin=i;
            min=a[i];
        }
    }
    printf ("max=%.3f\n", max);
    printf ("min=%.3f\n", min);
    if (nmax > nmin)
        for (int i=nmin+1; i<nmin; i++)
            sum+=a[i];
    if (nmax < nmin)
        for (int i=nmax+1; i<nmax; i++)
            sum+=a[i];
    if (nmax == nmin+1 || nmin == nmax+1)
        sum=0;
    return sum;
}
int main()
{
    
    float a[5];
    int n;
    char x;
    input1(&n);
    printf("Vvod s klaviaturi ili clu4ainie 4isla?\n (y/n)\n");
    x=getchar();
    if (x=='y')
    {
        input2 (n,a);
        output (n,a);
    }
    else (x=='n');
    {
        create (n,a);
        output (n,a);
    }
    float pr=calc1 (n,a);
    printf ("Proizvedenie polohitel'nih elementov = %.3f\n", pr);
    float sum=calc2 (n,a);
    printf ("Summa do minimal'nogo elementa = %.f\n", sum);
    
    if (!getchar())
        getchar();
}

Последний раз редактировалось Stilet; 25.12.2015 в 10:07.
Valionos вне форума Ответить с цитированием
Старый 25.12.2015, 03:55   #2
Valionos
 
Регистрация: 24.12.2015
Сообщений: 7
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n, i;
    printf("Vvedite razmernost' massiva\n");
    scanf("%d", &n);
    int *m;
    m = (int*) calloc(n , sizeof(int));
    for(i=0; i<n; i++)
        scanf("%d", &*(m+i));
    for(int k=0; k<n; k++)
        printf("%d ", *(m+k));
    int Smin = 0;
    int min = *(m);
    int nomer = 0;
    for ( i = 1; i < n; i ++)
        if ( *(m + i) < *(m) )
        {
            min = *(m + i);
            nomer = i;
        }
    for ( i = 0; i < nomer; i ++)
        Smin += *(m + i);
    printf("Summa do minimal'nogo ravna %d\n", Smin);
    getchar();
}
Код:
#include<stdio.h>
#include<stdlib.h>
int func(int *x, int n) {
    int p=1;
    int i;
    
    for(i=1; i<n; i++) {
            p*=x[i];
    }
    return p;
}
int main() {
    int a[5];
    int i;
    int pr;
    for(i=1; i<6; i++) {
        printf("a[%d] = ", i);
        scanf("%d", &a[i]);
    }
    pr = func(a, 6);
    printf("\n pr = %d\n", pr);
    getchar();
}
как бы их объеденить

Последний раз редактировалось Stilet; 25.12.2015 в 10:08.
Valionos вне форума Ответить с цитированием
Старый 25.12.2015, 10:09   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
int f1()
{
    int n, i;
    printf("Vvedite razmernost' massiva\n");
    scanf("%d", &n);
    int *m;
    m = (int*) calloc(n , sizeof(int));
    for(i=0; i<n; i++)
        scanf("%d", &*(m+i));
    for(int k=0; k<n; k++)
        printf("%d ", *(m+k));
    int Smin = 0;
    int min = *(m);
    int nomer = 0;
    for ( i = 1; i < n; i ++)
        if ( *(m + i) < *(m) )
        {
            min = *(m + i);
            nomer = i;
        }
    for ( i = 0; i < nomer; i ++)
        Smin += *(m + i);
    printf("Summa do minimal'nogo ravna %d\n", Smin);
    getchar();
}
int func(int *x, int n) {
    int p=1;
    int i;
    
    for(i=1; i<n; i++) {
            p*=x[i];
    }
    return p;
}

int f2() {
    int a[5];
    int i;
    int pr;
    for(i=1; i<6; i++) {
        printf("a[%d] = ", i);
        scanf("%d", &a[i]);
    }
    pr = func(a, 6);
    printf("\n pr = %d\n", pr);
    getchar();
};
int main() {
 f1() ;f2();
};
Подходит такое объединение?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2015, 20:03   #4
Valionos
 
Регистрация: 24.12.2015
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
#include<stdio.h>
#include<stdlib.h>
int f1()
{
    int n, i;
    printf("Vvedite razmernost' massiva\n");
    scanf("%d", &n);
    int *m;
    m = (int*) calloc(n , sizeof(int));
    for(i=0; i<n; i++)
        scanf("%d", &*(m+i));
    for(int k=0; k<n; k++)
        printf("%d ", *(m+k));
    int Smin = 0;
    int min = *(m);
    int nomer = 0;
    for ( i = 1; i < n; i ++)
        if ( *(m + i) < *(m) )
        {
            min = *(m + i);
            nomer = i;
        }
    for ( i = 0; i < nomer; i ++)
        Smin += *(m + i);
    printf("Summa do minimal'nogo ravna %d\n", Smin);
    getchar();
}
int func(int *x, int n) {
    int p=1;
    int i;
    
    for(i=1; i<n; i++) {
            p*=x[i];
    }
    return p;
}

int f2() {
    int a[5];
    int i;
    int pr;
    for(i=1; i<6; i++) {
        printf("a[%d] = ", i);
        scanf("%d", &a[i]);
    }
    pr = func(a, 6);
    printf("\n pr = %d\n", pr);
    getchar();
};
int main() {
 f1() ;f2();
};
Подходит такое объединение?
нужно сделать чтоб они через один массив работали, то есть вводим один массив и он сразу считает и сумму и произведение, а то что вы сделали там небольшая ошибка, вместо getchar() нужно return 0

Последний раз редактировалось Valionos; 25.12.2015 в 20:06.
Valionos вне форума Ответить с цитированием
Старый 25.12.2015, 20:12   #5
Valionos
 
Регистрация: 24.12.2015
Сообщений: 7
По умолчанию

остановился я на таком моменте
Код:
#include<stdio.h>
#include<stdlib.h>
int func(int *x, int n) {
    int p=1;
    int i;
    
    for(i=1;i<n; i++) {
        p*=x[i];
    }
    return p;
}
int main()
{
    int n, i;
    int Smin=0 ;
    int nomer = 0;
    int *m;
    m=(int*) calloc(n, sizeof(int));

    int min=*(m);

    printf("Введите размер массива\n");
    scanf("%d", &n);
    printf("Введите элементы массива\n");
    for(i=0; i<n; i++)
        scanf("%d", &*(m+i));
    for(int k=0; k<n; k++)
        for ( i = 0; i < n; i ++)
            if ( *(m + i) < *(m) )
            {
                min = *(m + i);
                nomer = i;
            }
    for ( i = 0; i < nomer; i ++)
        Smin += *(m + i);
    printf("Сумма до минемального элемента равна%d", Smin);
    int pr;
    for(i=1; i<n; i++) {
        printf("a[%d] = ", i);
    }
    pr = func(&n , sizeof(int)); // вычисление произведения
    printf("\n pr = %d\n", pr);
    return 0;
}

Последний раз редактировалось Valionos; 25.12.2015 в 21:03.
Valionos вне форума Ответить с цитированием
Старый 25.12.2015, 21:20   #6
Valionos
 
Регистрация: 24.12.2015
Сообщений: 7
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
int func(int *x, int n) {
    int p=1;
    int i;
    for(i=0;i<n; i++) {
        p*=x[i];
    }
    return p;
}
int main()
{
    int n, i;
    int Smin = 0;
    int nomer = 0;
    int *m=0;
    m = (int*) calloc(n , sizeof(int));

    int min = *(m);
    printf("Введите размер массива\n");
    scanf("%d", &n);
    for(i=0; i<n; i++)
        scanf("%d", m+i);
    for(int k=0; k<n; k++)
        for ( i = 1; i < n; i ++)
            if ( *(m + i) < *(m) )
            {
                min = *(m + i);
                nomer = i;
            }
    for ( i = 0; i < nomer; i ++)
        Smin += *(m + i);
    printf("Сумма до минемального элемента равна%d", Smin);
    int pr;
    pr = func(m , i);
    printf("\n pr = %d\n", pr);
        return 0;
}
всё спасибо) я написал)
Valionos вне форума Ответить с цитированием
Старый 25.12.2015, 21:20   #7
Valionos
 
Регистрация: 24.12.2015
Сообщений: 7
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>
int func(int *x, int n) {
    int p=1;
    int i;
    for(i=0;i<n; i++) {
        p*=x[i];
    }
    return p;
}
int main()
{
    int n, i;
    int Smin = 0;
    int nomer = 0;
    int *m=0;
    m = (int*) calloc(n , sizeof(int));

    int min = *(m);
    printf("Введите размер массива\n");
    scanf("%d", &n);
    for(i=0; i<n; i++)
        scanf("%d", m+i);
    for(int k=0; k<n; k++)
        for ( i = 1; i < n; i ++)
            if ( *(m + i) < *(m) )
            {
                min = *(m + i);
                nomer = i;
            }
    for ( i = 0; i < nomer; i ++)
        Smin += *(m + i);
    printf("Сумма до минемального элемента равна%d", Smin);
    int pr;
    pr = func(m , i);
    printf("\n pr = %d\n", pr);
        return 0;
}
всё спасибо) я написал)
Valionos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В одномерном массиве, состоящим из n вещественных элементов, вычислить... yures Помощь студентам 1 21.11.2014 07:44
Задача с одномерным массивом. micr0 Помощь студентам 0 08.12.2011 11:46
В однородном массиве, состоящим из n вещественных элементов, вычислить: gates Фриланс 6 15.01.2010 10:55
В однородном массиве, состоящим из n вещественных элементов, вычислить: gates Microsoft Office Excel 1 15.01.2010 00:29