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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Ёвочка
 Аватар для Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14
19.01.2012, 23:22     Задачи на массивы в С++ #1
Здравствуйте, помогите пожалуйста с решением 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soundtrack
 Аватар для soundtrack
41 / 41 / 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
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
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
 Аватар для iCast
6 / 6 / 0
Регистрация: 15.01.2012
Сообщений: 56
20.01.2012, 01:09     Задачи на массивы в С++ #4
soundtrack, 2 раза int i определил? это прикольно...
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
20.01.2012, 01:13     Задачи на массивы в С++ #5
Цитата Сообщение от iCast Посмотреть сообщение
2 раза int i определил? это прикольно...
это нормально
переменная будет видна только в цикле
за пределами не видна
соответственно в новом цикле её надо заново объявлять
iCast
 Аватар для iCast
6 / 6 / 0
Регистрация: 15.01.2012
Сообщений: 56
20.01.2012, 01:18     Задачи на массивы в С++ #6
а у мя компилятор ругается на него
soundtrack
 Аватар для soundtrack
41 / 41 / 4
Регистрация: 15.12.2011
Сообщений: 131
20.01.2012, 01:18     Задачи на массивы в С++ #7
Цитата Сообщение от ValeryS Посмотреть сообщение
а чей то первый элемент так не взлюбили???
Ну не то чтобы не влюбил, просто подумал лучше один раз определить первый вручную, чем потом будет 30 раз проверяться номер.

Цитата Сообщение от ValeryS Посмотреть сообщение
опять без первого
А вот в этом случае просто не заметил, скопировал первый цикл и не изменил
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,042
20.01.2012, 01:32     Задачи на массивы в С++ #8
Цитата Сообщение от iCast Посмотреть сообщение
а у мя компилятор ругается на него
у тебя визуал 6 ????
если да то он не поддерживает новый стандарт
объяви отдельно а в циклах не объявляй
Ёвочка
 Аватар для Ёвочка
0 / 0 / 0
Регистрация: 19.01.2012
Сообщений: 14
20.01.2012, 09:56  [ТС]     Задачи на массивы в С++ #9
Спасибо большое, ребят, очень выручили. Теперь буду разбираться надеюсь, все пойму
iCast
 Аватар для 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++ Задачи на массивы

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

Или воспользуйтесь поиском по форуму:
R136a1
 Аватар для 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     Задачи на массивы в С++
Ответ Создать тему
Опции темы

Текущее время: 11:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru