Одномерные и двумерные массивы

Тема в разделе "Общие вопросы по С и С++", создана пользователем m1pk0, 16 мар 2008.

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

    m1pk0 Гость

    Привет всем, мне нужна помощь в оформлении программ... Ну и проверить правильность написания программ...
    Так вот, имеется 2 задачи!
    Первая:
    В одномерном массиве, состоящем из n вещественных элементов, вычислить:
    1) максимальный элемент массива;
    2) сумму элементов массива, расположенных до последнего положительного элемента.
    Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.
    Вторая:
    Дана целочисленная квадратная матрица. Определить:
    1) сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
    2) минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
    Код и 1-ой и 2-ой задач имеется!
    Первая задача, первый вариант:

    [codebox]#include <iostream.h>
    #include <math.h>
    int mas[10],n,max,number;
    main(void)
    {
    cout<<"Vvedite kol-vo elementov v massive"<<endl;
    cin>>n;
    cout<<"vvedite element massiva"<<endl;
    for(int i=0;i<n;i++)
    cin>>mas;
    max=mas[0];
    number=0;
    {
    if(fabs(mas)>fabs(max))
    {
    max=mas;
    number=i;
    }
    }
    cout<<"nomer maximalnyh elementov = "<<i+1<<endl;
    return 0;
    }[/codebox]
    Первая задача, второй вариант:
    [codebox]#include <iostream.h>
    int mas[10],n,max,number;
    main(void)
    {
    cout<<"Vvedite kol-vo elementov v massive"<<endl;
    cin>>n;
    cout<<"vvedite element massiva"<<endl;
    for(int i=0;i<n;i++)
    cin>>mas;
    max=mas[0];
    number=0;
    {
    if(mas>max)
    {
    max=mas;
    number=i;
    }
    }
    cout<<"nomer maximalnyh elementov = "<<i+1<<endl;
    return 0;
    }[/codebox]
    Вторая задача:
    [codebox]#include <stdio.h>
    #include <math.h>
    #define N 3

    main()
    {
    int A[N][N];
    int i, j, z, sum, min;

    for (i = 0; i < N; i++)
    for (j = 0; j < N; j++)
    scanf("%d",&A[j]);

    for (j = 0; j < N; j++)
    {
    sum = 0;
    for (i = 0; i < N; i++)
    {
    if(A[j] >= 0 )
    sum += A[j];
    else
    break;
    }
    if ( i == N) printf("Column %d Sum = %d\n",j,sum);
    }
    sum = 0;

    for(j = N-2; j > 0; j--,sum = 0)
    {
    for(i = N-1,z = j; z < N; i--,z++)
    sum += abs(A[z]);
    if ( j == N-2)
    min = sum;
    else if (sum < min)
    min = sum;
    }

    for(j = N-2; j > 0 ; j--,sum = 0)
    {
    for(i = 0,z = j; z >= 0; i++,z--)
    sum += abs(A[z]);
    if ( j == N-2)
    min = sum;
    else if (sum < min)
    min = sum;
    }
    printf("Minimum Sum = %d",min);

    return 0;
    } [/codebox]

    По моему в программах чего-то не хватает (проверьте кому не трудно ;) ), хотя они работают...
    Скажите какие цифры нужно вводить в программы (я не совсем понял какие - вводил, но не понял...)
    И ещё мне нужно оформить алгоритм решения! У меня есть алгоритм решения - он похож на алгоритм первой задачи, но это не то:
    1. Начало
    2. Объявление N, k, C,A,B, j, i, nSumm, iMax
    3. Ввод N
    4. Объявление одномерного массива ar размером N
    5. i = 0
    6. Если i >= N то 9
    7. ar = RND(-20,20), Вывод ar
    8. i = i +1 и 6
    9. iMax = 0, i = 1
    10. Если i >= N то 13
    11. Если ar > ar[iMax] то iMax = i
    12. i = i + 1 и 10
    13. Вывод позиции iMax, значения AR[iMax]
    14. i = N - 1, nSumm = 0,
    15. Если i < 0 то 22
    16. Если ar>0 то j=i , nSumm = 0
    17. k = 0
    18. Если k >= N то 22
    19. nSumm = nSumm + ar[k]
    20. k++ 18
    21. i-- 14
    22. Вывод суммы элементов до последнего положительного.
    23. Объявление одномерного массива ar2 размером N
    24. i=0, j= 0
    25. Если i >= N то 29
    26. Если abs( ar )>=A && abs( ar ) <=B, то j++ и ar2[j] = ar 25
    27. i ++ 25
    28. Вывод ar2[j]
    29. i = j + 1
    30. Если i >= N то 34
    31. ar2[i] = C
    32. Вывод ar2[i]
    33. i++ 30
    34. Конец[/i][/i]

    Нужно графически оформить алгоритм в [b]MS WORD[/b], я сам все оформлю, помогите просто пошагово составить алгоритм первой и второй задач...
    [u][b][i]Заранее спасибо тем кто поможет![/i][/b][/u] :rolleyes:
    [b]P.S.[/b] Тема отображается кривовато из за кодов программ - поэтому я прикрепил [b][i]*.cpp файлы[/i][/b]...
     

    Вложения:

    • 000.cpp
      Размер файла:
      373 байт
      Просмотров:
      12
    • 01.cpp
      Размер файла:
      340 байт
      Просмотров:
      14
    • 02.cpp
      Размер файла:
      963 байт
      Просмотров:
      13
  2. m1pk0

    m1pk0 Гость

    Изменил алгоритм решения первой задачи:
    1. Начало
    2. Объявление n, max, number
    3. Ввод N
    4. Объявление одномерного массива
    5. i < N
    6. i = i + 1
    7. number = 0,
    8. i++
    9. Вывод суммы элементов до последнего положительного.
    10. Объявление одномерного массива
    11. i=0
    12. i < N
    13. mas > max, max = mas, number = i
    14. i ++
    15. Вывод i + 1
    16. Конец

    И создал наброски второго алгоритма:
    1. Начало
    2. Объявление A[N][N], i, j, z, sum, min
    3. Ввод N
    4. i = 0, i < N, i++
    5. j = 0, j < N, j++
    6. sum = 0
    7. Если A[j] >= 0 то sum += A[j] иначе сброс

    … Вывод sum
    … Конец


    Вторая программа сложновата для меня... :rolleyes:
     
  3. m1pk0

    m1pk0 Гость

    Народ, пожалуйста, помогите! Тут ничего сверх-трудного нет... Всё почти сделано... Мне просто нужны ваши варианты...
     
  4. Dimmuborgir

    Dimmuborgir Гость

    С паскаля на Си перешел?)
    [codebox]void main()
    {
    int size;
    cout<<"Enter the size:";
    cin>>size;
    if (size<=0)
    return;

    double *x=new double[size];

    for (int i=0;i<size;i++)
    {
    cout<<"x["<<i<<"]=";
    cin>>x;
    }

    double max=x[0];
    for (i=1;i<size;i++)
    if (x>max) max=x;

    double sum=0;
    for (i=0;i<size;i++)
    if (x>0)
    sum+=x;
    else
    break;

    double a,b;
    cout<<"Enter interval:\na=";
    cin>>a;
    cout<<"b=";
    cin>>b;

    /* cout<<"array:\n";
    for (i=0;i<size;i++)
    cout<<x<<' ';*/

    for (i=0;i<size;i++)
    if (fabs(x)>=a && fabs(x)<=:)
    {
    x=0;
    double tmp;
    for (int j=i;j<size-1;j++)
    {
    tmp=x[j+1];
    x[j+1]=x[j];
    x[j]=tmp;
    }
    }


    /*cout<<"max:"<<max<<'\n'<<"sum:"<<sum<<'\n'<<"compressed array:\n";
    for (i=0;i<size;i++)
    cout<<x<<' ';*/

    delete [] x;
    getch();
    }[/codebox]
     
  5. m1pk0

    m1pk0 Гость

    Пошёл учиться на программиста, ранее действительно работал с Паскалем) Спасибо, это 2-ая программа? Сложновато будет в ней разобраться)
    Правильный код первой программы:
    [codebox]#include <iostream.h>
    int mas[10],n,max,number;
    void main ()
    {
    cout<<"Vvedite kol-vo elementov v massive"<<endl;
    cin>>n;
    cout<<"vvedite element massiva"<<endl;
    for(int i=0;i<n;i++)
    cin>>mas;
    max=mas[0];
    number=0;
    for(int i=0;i<n;i++)
    if(mas>max)
    {
    max=mas;
    number=i; // максимальный элемент
    }
    cout<<"nomer maximalnyh elementov = "<<number<<endl;
    }
    [/codebox]


    Кстати твой код не полный, и по моему getch(); там лишний...
     
  6. Dimmuborgir

    Dimmuborgir Гость

    код был к первому заданию. писал я его в Visual C++ 6 поэтому getch() не лишний)
     
  7. m1pk0

    m1pk0 Гость

    Жестокий код) Не для начинающих) А со второй программой можешь помочь? Или там все и так правильно?
     
  8. m1pk0

    m1pk0 Гость

    Народ, помогите! крайний срок сдачи первой задачи - среда... Помогите доделать до конца... Чтоб выполнялись все три условия! Оч прошу...
     
  9. Dimmuborgir

    Dimmuborgir Гость

    я ж выложил код к первой задаче, ко второй еще надо чтоли?
     
  10. m1pk0

    m1pk0 Гость

    То, что ты выложил, это только часть задачи! Или часть кода задачи... Или Потому что Потому-что она запрашивает ввести значения и вылетает... Мой вариант второй задачи правильный? Проверь пожалуйста! (она вроде нормально работает...) Если все ок, тогда мне больше ничего не нужно...
     
  11. BoSSea

    BoSSea Гость

    Дан массив из н элементов , создать программу которая выводит на экран все одинаковые элементы.
    Помогите где ошибка ? ... спс заранее

    Код (C++):
    #include<stdio.h>
    #include<conio.h>
    void main()
    { clrscr(); int a[10],x[10],j,i,n;
    printf("vedite n= ");
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
    printf("a[%d]=",i);
    scanf("%d",&a[i]);}
    for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {if (a[i]==a[i+1]) i++;
    x[j]=a[i]; j++;}
    printf("elemente cotorie povtoreaiutsea : %d",x[j]);
    getch();
    }
     
  12. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    BoSSea
    Создай в этом разделе новую тему и напиши то же самое, поставив код в тэг C++.
     
Загрузка...
Похожие Темы - Одномерные двумерные массивы
  1. Lizzz
    Ответов:
    1
    Просмотров:
    1.243
  2. Fazer77777
    Ответов:
    1
    Просмотров:
    1.665
  3. 203
    Ответов:
    2
    Просмотров:
    1.386
  4. 203
    Ответов:
    0
    Просмотров:
    948
  5. 203
    Ответов:
    2
    Просмотров:
    2.169
Статус темы:
Закрыта.

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