Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14
#1

Задачи на массивы в С++ - C++

19.01.2012, 23:22. Просмотров 1411. Ответов 11
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста с решением 2 задач:

1. Даны целые числа a1, ..., a30. Все члены последовательности с четными номерами, предшествующие первому по порядку члену со значением max(a1,...,a30), домножить на max(a1,...,a30).

2. Задана матрица Z(5,6). Выбрать строку с наибольшей суммой элементов и вывести элементы этой строки в массив, затем каждый отрицательный элемент умножить на номер столбца. Вывести исходную и преобразованную матрицы, полученный массив.

В С++ новичок, еще никак не пойму как и что делать с массивами. Помогите пожалуйста.
Во второй задаче удалось только задать матрицу и посчитать сумму.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2012, 23:22     Задачи на массивы в С++
Посмотрите здесь:
C++ задачи на C++, на массивы
Задачи на массивы C++
C++ Задачи на массивы
C++ Задачи на массивы С++
C++ Задачи на массивы
Массивы - задачи C++
Массивы(задачи) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soundtrack
42 / 42 / 4
Регистрация: 15.12.2011
Сообщений: 131
20.01.2012, 00:58     Задачи на массивы в С++ #2
Вот решение для задачи №1:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
void main()
{
    int a[30], count=0, max;
    cout << "a[1]=";
    cin>>a[0]; max=a[0];
    for(int i=1; i<30; i++)
    {
        cout << "a["<<i+1<<"]=";
        cin>>a[i];
        if(max<a[i]) {max=a[i]; count=i;}
    }
    cout<<endl<<"new massive:"<<endl;
    for(int i=1; i<30; i++)
    {
        if(i%2==0 && i<count)
            {a[i]*=max;}
        cout<<"a["<<i+1<<"]="<<a[i]<<endl;
    }
    system("pause");
}
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
20.01.2012, 01:06     Задачи на массивы в С++ #3
Цитата Сообщение от soundtrack Посмотреть сообщение
cin>>a[0];
а чей то первый элемент так не взлюбили???
Цитата Сообщение от soundtrack Посмотреть сообщение
for(int i=1; i<30; i++)
{
if(i%2==0 && i<count)
опять без первого
и не проще так сделать
C++
1
2
3
for(int i=0; i<count; i++)
 {
 if(i%2==0 )
или так
C++
1
2
for(int i=0; i<count; i+=2)
 {
а отдельным циклом вывести???
iCast
6 / 6 / 0
Регистрация: 15.01.2012
Сообщений: 56
20.01.2012, 01:09     Задачи на массивы в С++ #4
soundtrack, 2 раза int i определил? это прикольно...
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
20.01.2012, 01:13     Задачи на массивы в С++ #5
Цитата Сообщение от iCast Посмотреть сообщение
2 раза int i определил? это прикольно...
это нормально
переменная будет видна только в цикле
за пределами не видна
соответственно в новом цикле её надо заново объявлять
iCast
6 / 6 / 0
Регистрация: 15.01.2012
Сообщений: 56
20.01.2012, 01:18     Задачи на массивы в С++ #6
а у мя компилятор ругается на него
soundtrack
42 / 42 / 4
Регистрация: 15.12.2011
Сообщений: 131
20.01.2012, 01:18     Задачи на массивы в С++ #7
Цитата Сообщение от ValeryS Посмотреть сообщение
а чей то первый элемент так не взлюбили???
Ну не то чтобы не влюбил, просто подумал лучше один раз определить первый вручную, чем потом будет 30 раз проверяться номер.

Цитата Сообщение от ValeryS Посмотреть сообщение
опять без первого
А вот в этом случае просто не заметил, скопировал первый цикл и не изменил
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
20.01.2012, 01:32     Задачи на массивы в С++ #8
Цитата Сообщение от iCast Посмотреть сообщение
а у мя компилятор ругается на него
у тебя визуал 6 ????
если да то он не поддерживает новый стандарт
объяви отдельно а в циклах не объявляй
Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14
20.01.2012, 09:56  [ТС]     Задачи на массивы в С++ #9
Спасибо большое, ребят, очень выручили. Теперь буду разбираться надеюсь, все пойму
iCast
6 / 6 / 0
Регистрация: 15.01.2012
Сообщений: 56
20.01.2012, 13:26     Задачи на массивы в С++ #10
ValeryS, да, я на 6 программу проверял
Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14
20.01.2012, 14:11  [ТС]     Задачи на массивы в С++ #11
А как во второй задаче вывести элементы строки с максимальной суммой и каждый отрицательный элемент умножить на номер столбца?
На данном этапе готов вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    const int m=5;
    const int n=6;
    int a[m][n], i, j, s, max;
    printf ("Input the matrix 5x6 \n");
    for (i=0;i<m;i++)
    for (j=0;j<n;j++)
    scanf("%d",&a[i][j]);
    for(i=0;i<m;i++)
      {
         s=0;
         for (j=0;j<n;j++)
         s+=a[i][j];
         if (i==0) 
            max=s;
         else 
              if (max<s) 
                 max=s;
      }
printf("Max sum str = %d",max);
system ("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 18:38     Задачи на массивы в С++
Еще ссылки по теме:
C++ Задачи массивы( объяснение)
с++ задачи на массивы и матрицы C++
C++ Задачи на файлы и массивы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
20.01.2012, 18:38     Задачи на массивы в С++ #12
Цитата Сообщение от Ёвочка Посмотреть сообщение
2. Задана матрица Z(5,6). Выбрать строку с наибольшей суммой элементов и вывести элементы этой строки в массив, затем каждый отрицательный элемент умножить на номер столбца. Вывести исходную и преобразованную матрицы, полученный массив.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int sumOfRow(const int [][6], int, int);
 
int main()
{
    int z[5][6];
    int mass[6];
    int maxRow;
    int maxIndex = 0;
 
    srand(time(NULL));
 
    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 6; j++)
        {
            z[i][j] = rand() % 20;
 
            if(j % 2 == 0)
                z[i][j] *= -1;
 
            std::cout << std::setw(5) << z[i][j];
        }
 
        std::cout << std::endl;
    }
 
    maxRow = sumOfRow(z,0,5);
 
    for(int i = 1; i < 5; i++)
        if(sumOfRow(z,i,5) > maxRow)
        {
            maxRow = sumOfRow(z,i,5);
            maxIndex = i;
        }
 
    std::cout << "\nстрока с максимальной суммой эл-ов: " << std::endl;
 
    for(int j = 0; j < 6; j++)
    {
        mass[j] = z[maxIndex][j];
        std::cout << std::setw(5) << mass[j];
    }
 
    std::cout << "\n\nпреобразованная матрица: " << std::endl;
 
    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 6; j++)
        {
            z[i][j] = z[i][j] < 0 ?
            z[i][j] * i : z[i][j];
 
            std::cout << std::setw(5) << z[i][j];
        }
 
        std::cout << std::endl;
    }
 
    return 0;
}
 
 
int sumOfRow(const int z[][6], int row, int steps)
{
    if(!steps)
        return z[row][steps];
    else
        return z[row][steps] + sumOfRow(z,row,steps-1);
}
Yandex
Объявления
20.01.2012, 18:38     Задачи на массивы в С++
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru