Задача: Одномерный вещественный массив, нахождение мин. по модулю элем

Тема в разделе "C/C++/C#", создана пользователем Gantz, 1 дек 2010.

Статус темы:
Закрыта.
  1. Gantz

    Gantz Гость

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

    acorn PHP Developer
    Web Team

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    Gantz
    помогу исправить ваш код
    ..ну или 90$ :)
     
  3. BashOrgRu

    BashOrgRu Well-Known Member

    Регистрация:
    15 мар 2009
    Сообщения:
    78
    Симпатии:
    0
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    const N=4;
    double mas[N],min,Sum=0;
    int i,minI=0;

    /* Читаем массив.*/
    for (i=0;i<N;i++) scanf("%lf",&mas[i]);
    /* Ищем индекс минимального по модулю. */
    min=fabs(mas[0]);
    for (i=0;i<N;i++)
    if (min>fabs(mas[i])) {
    min=fabs(mas[i]);
    minI=i;
    }
    printf("Number of min: %d\n",minI+1);

    /* Находим сумму модулей элементов после первого отрицальтельного. */
    minI=N-1;
    for (i=0;i<N;i++) if (mas[i]<0){
    minI=i;
    break;
    }
    for (i=(minI+1);i<N;i++) Sum+=fabs(mas[i]);
    printf("Sum: %lf",Sum);
    return 0;
    }
    Добавлено: Acorn, извини) Забрал твой хлеб)
     
  4. acorn

    acorn PHP Developer
    Web Team

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    l1pton17
    да на эти деньги можно было торт купить :)
     
  5. Gantz

    Gantz Гость

    спасибо что помогли :)
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    А если все неотрицательные, прога просуммирует элементы, начиная с 1-го?
    Может, лучше minI=N ?
     
  7. BashOrgRu

    BashOrgRu Well-Known Member

    Регистрация:
    15 мар 2009
    Сообщения:
    78
    Симпатии:
    0
    Точна) Только не minI=N а minI=N-1, так как mas[N] несуществует. Когда писал, думал, что потом исправлю этот баг и благополучно забыл нём)
     
  8. Gantz

    Gantz Гость

    у меня ошибка была вот
    ISO C++ forbids declaration of 'n' with no type

    но потом вроде переделал вот
    Код (C++):
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <cmath>

    int main()
    {
    const int n=4;
    double mas[n],min,Sum=0;
    int i,minI=0;

    /* Читаем массив.*/
    for (i=0;i<n;i++) scanf("%lf",&mas[i]);
    /* Ищем индекс минимального по модулю. */
    min=fabs(mas[0]);
    for (i=0;i<n;i++)
    if (min>fabs(mas[i])) {
    min=fabs(mas[i]);
    minI=i;
    }
    printf("Number of min: %d\n",minI+1);

    /* Находим сумму модулей элементов после первого отрицальтельного. */
    minI=n-1;
    for (i=0;i<n;i++) if (mas[i]<0){
    minI=i;
    break;
    }
    for (i=(minI+1);i<n;i++) Sum+=fabs(mas[i]);
    printf("Sum: %lf",Sum);
    return 0;
    }
    но она ничего не выводит в чем дело?
     
  9. jlahcejlot

    jlahcejlot Гость

    Может она выводит, но тут же окно закрывается ??? попробуй перед ретурном вставить getchar(); и если в условии массив должен быть размера n равзе не надо выделять память динамически ?...
     
  10. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Если нужна динамика, то вот.. Но это мне кажется затруднит понимание..
    Код (C++):
    /*
    1)номер минимального по модулю элемента массива;
    2)сумму модулей элементов массива, расположенных после первого отрицательного элемента
    */

    /*
    codeby.net
    Autor: DarkKnight125 (Denis Goncharov)
    */

    #include <iostream>
    #include <time.h>
    #include <iomanip>

    using namespace std;

    void main(void)
    {
    setlocale(LC_ALL,".1251"); //Локаль
    srand(time(NULL)); //Инициализация генератора случ. величины
    double  *Arr; //Массив (динамический)
    int     Size; //Его размерность
    int     Index = -1; //Индекс минимального по модулю элемента
    double  MinEl = numeric_limits<double>::max(); //Минимальный по модулю элемент (его значение) пока установим в самое большое значение
    double  Summa = 0; //Сумма модулей элементов расположенных после первого отрицательного элемента
    bool    flag = false; //Флаг что первый отрицательный элемент найден

    cout << "Введите размерность массива ";
    cin >> Size;
    getchar(); //Символ возврата корретки уберем

    Arr = new double[Size]; //Выделим память под массив
    //Генерируем значения для массива и выведим их на экран
    for (int i = 0; i< Size; i++)
    {
    Arr[i] = (double(rand()%10000) / 1000) * (rand()%2?-1:1);
    cout << Arr[i] << " ";
    }

    //Ну а теперь обойдем массив еще раз и выполним все задания
    for (int i =0; i<Size; i++)
    {
    if (flag) //Если флаг установлен, то первый отрицательный элемент уже был и вычисляем сумму
    Summa += abs(Arr[i]);
    else if (Arr[i] < 0) flag = true; //Если флаг не установлен, но текущий эл. отрицательный значит установим его

    if (MinEl > abs(Arr[i])) //Если MinEl > чем модуль Текущего эл. массива
    {
    MinEl = abs(Arr[i]); // То заменим MinEl
    Index = i; //И запишим индекс
    }
    }

    //Вывод результата
    cout << endl << "Результат :" << endl;
    cout << "Номер минимального по модулю элемента массива = " << Index+1 << endl;
    cout << "Его значение в свою очередь = " << Arr[Index] << endl;
    cout << "Cумма модулей элементов массива, расположенных после первого отрицательного элемента = " << Summa << endl;

    getchar();
    }
     

    Вложения:

    • floatmass.jpg
      floatmass.jpg
      Размер файла:
      62,9 КБ
      Просмотров:
      20
Загрузка...
Похожие Темы - Задача Одномерный вещественный
  1. Янчик
    Ответов:
    0
    Просмотров:
    490
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    783
  3. elzim
    Ответов:
    0
    Просмотров:
    932
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.128
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.108
Статус темы:
Закрыта.

Поделиться этой страницей