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

массивы.не могу разобраться - C++

Восстановить пароль Регистрация
 
 
Blacktender
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
14.05.2010, 21:57     массивы.не могу разобраться #1
1. В массиве X из N элементов (N не больше 30) определить максимальный элемент и его номер. Число N и значения элементов массива задаются вводом.
2. В массиве A из N элементов поменять местами первый элемент с последним, второй - с предпоследним и т.д. Значение N задать при помощи ввода, а сам массив сформировать из случайных чисел в диапазоне от -100 до 100.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2010, 21:57     массивы.не могу разобраться
Посмотрите здесь:

C++ Указатели, массивы. Не могу разобраться
Массивы,разобраться бы Оо C++
C++ не могу разобраться
C++ не могу разобраться
C++ не могу разобраться
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
***GIN***
 Аватар для ***GIN***
27 / 27 / 1
Регистрация: 09.04.2010
Сообщений: 60
14.05.2010, 22:06     массивы.не могу разобраться #2
Тебе бы почитать по больше, скажем начни с классики - Бьерн Страуструп, или еще лучше - Язык С (Керниган, Ричи). Там база, и очень хорошо изложена. То что ты спрашиваешь это основы, если ты в них сам не разберешься, то дальше будет еще тяжелее... В общем удачи!
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
14.05.2010, 22:13     массивы.не могу разобраться #3
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
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <ctime>
#include <iomanip>
 
int main ()
{
    int size;
    std::cout << "Input size of matrix: ";
    std::cin >> size;
    int *MAS=new int [size];
 
    srand(time(NULL));
    std::cout << "Start matrix:\n";
    for (int i=0; i<size; i++) {
        MAS[i]=rand()%20+1;
        std::cout << std::setw(3) << MAS[i]; }
    std::cout << std::endl;
 
    int max=0, indexMax;
    for (int i=0; i<size; i++)
        if (max<MAS[i])
        {
            max=MAS[i];
            indexMax=i;
        }
 
    std::cout << "Index: " << indexMax << std::endl;
    std::cout << "Max: " << max << std::endl;
 
    system("pause");
    delete []MAS;
    return 0;
}
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
14.05.2010, 22:13     массивы.не могу разобраться #4
я бы не рекомендовал страуступа для начала(основ)
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
14.05.2010, 22:14     массивы.не могу разобраться #5
Цитата Сообщение от Blacktender Посмотреть сообщение
1. В массиве X из N элементов (N не больше 30) определить максимальный элемент и его номер. Число N и значения элементов массива задаются вводом.
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
#include <iostream.h>
#include <stdio.h>
using namespace std;
 
int main()
{
int i;
int N = 0;
int* Ar;
int max = 0, index_max = 0;
 
    while(N<=0){
        printf("Введите число элементов массива N = "); 
        cin>>N;
        cout<<endl;
    }
    try{
        Ar = (int*)malloc(sizeof(int)*N);
        for(i=0;i<N;i++){
            printf("A[%d] = ",i);
            cin>>Ar[i];
            cout<<endl;
            if(Ar[i]>max){
                max = Ar[i];
                index_max = i;
            }
        }
        printf("Элемент %d равен %d самый максимальный",index_max,max); 
    }
    __finally
    {
        free(Ar);
    }
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
14.05.2010, 22:15     массивы.не могу разобраться #6
2)
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
#include <iostream>
#include <ctime>
#include <iomanip>
 
int main ()
{
    int size;
    std::cout << "Input size of matrix: ";
    std::cin >> size;
    int *MAS=new int [size];
 
    srand(time(NULL));
    std::cout << "Start matrix:\n";
    for (int i=0; i<size; i++) {
        MAS[i]=rand()%20+1;
        std::cout << std::setw(3) << MAS[i]; }
    std::cout << std::endl;
 
    int tmp;
    for (int i=0, j=size-1; i<j; i++, j--) {
            tmp=MAS[i];
            MAS[i]=MAS[j];
            MAS[j]=tmp; }
 
 
    std::cout << "Finish matrix:\n";
    for (int i=0; i<size; i++)
        std::cout << std::setw(3) << MAS[i];
 
    std::cout << std::endl;
    system("pause");
    delete []MAS;
    return 0;
}
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
14.05.2010, 22:18     массивы.не могу разобраться #7
На работоспособность код не проверял писал в обычном блокноте.
Автору темы будет че подебагерить.
Это самая пратика.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2010, 22:35     массивы.не могу разобраться #8
Цитата Сообщение от Blacktender Посмотреть сообщение
1. В массиве X из N элементов (N не больше 30) определить максимальный элемент и его номер. Число N и значения элементов массива задаются вводом.
Вариант с STL:
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 <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
  size_t size;
  std::cout << "size = ";
  std::cin >> size;
 
  int* arr = new int[size];
 
  for (size_t i = 0; i < size; ++i) {
    std::cout << "arr[" << i + 1 << "] = ";
    std::cin >> arr[i];
  }
 
  std::cout << "Array: " << std::endl;
  std::copy(arr, arr + size, std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
 
  int* max_element = std::max_element(arr, arr + size);
  std::cout << "Max " << *max_element << " at index " << max_element - arr << std::endl;
 
  return 0;
}
Blacktender
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
14.05.2010, 22:39  [ТС]     массивы.не могу разобраться #9
Может у меня с компилятором что не так, каждый раз выдает ошибки. допустим вот эту : [Linker Error] Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
14.05.2010, 22:42     массивы.не могу разобраться #10
CyBOSSeR, а почему, для нахождение индекса, мы пишем
C++
1
max_element - arr
?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2010, 22:44     массивы.не могу разобраться #11
Blacktender, есть два варианта:
1. Убить в себе и на компьютере Builder, тем более шестой.
2. Правильно создать проект - вам необходимо консольное приложение, а не оконное.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
14.05.2010, 22:45     массивы.не могу разобраться #12
neske, max_element - указатель на максимальный, arr на начало, их разность дает индекс
обычная практика узнать индекс элемента, если есть итератор на него и итератор начала
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2010, 22:48     массивы.не могу разобраться #13
Цитата Сообщение от neske Посмотреть сообщение
CyBOSSeR, а почему, для нахождение индекса, мы пишем
Этой строкой мы получаем разницу между указателями на максимальный элемент и начало массива. Это разница выражена в количестве элементов.
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
14.05.2010, 22:54     массивы.не могу разобраться #14
Зачем так глубоко человеку просто массивы нужны а Вы STL.
Давайте еще MFC CArray или VCL

Добавлено через 48 секунд
На обычном С кто нибуть напишет без примудростей. Я думаю этого и ждут.
CyBOSSeR
14.05.2010, 23:02
  #15

Не по теме:

Цитата Сообщение от Sudoki Посмотреть сообщение
Зачем так глубоко человеку просто массивы нужны а Вы STL.
Давайте еще MFC CArray или VCL
У нас на форуме один Blacktender что ли?
Или разнообразие вариантов решения это плохо?

Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
14.05.2010, 23:04     массивы.не могу разобраться #16
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
У нас на форуме один Blacktender что ли?
Или разнообразие вариантов решения это плохо?
Просто эта тема для новичка вряд ли он заценит все эти навороты. А наоборот еще больше запутается.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
14.05.2010, 23:16     массивы.не могу разобраться #17
Sudoki, ну вот именно из таких вариантов, я для себя выделяю что-то новое, и думаю, не только я .
CyBOSSeR
14.05.2010, 23:17
  #18

Не по теме:

Цитата Сообщение от Sudoki Посмотреть сообщение
Просто эта тема для новичка вряд ли он заценит все эти навороты. А наоборот еще больше запутается.
Если ему это действительно нужно - то хотя бы поверхностно он сможет разобраться, да и кто ему мешает спросить, если что? А если ему это не нужно - то он и запутываться не будет, т.к. не будет разбираться.

Blacktender
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
15.05.2010, 15:14  [ТС]     массивы.не могу разобраться #19
СПАСИБО вам огромное, коды работают, всё прекрасно!!
Если не трудно, будьте добры помочь с этими заданиями.Буду очень признательна!

1. Определить сумму положительных и сумму отрицательных элементов матрицы размерами N*M (N и M не больше 10). Матрицу сформировать из случайных чисел в диапазоне от -100 до 100.

2. Дана целочисленная квадратная матрица порядка n. Матрица сформирована из случайных чисел в диапазоне от -10 до 10. В строках с отрицательным элементом на главной диагонали найти:
а) сумму всех элементов;
б) наибольший из всех элементов.

3.Вводится строка произвольного текста. Вывести на экран последнее слово (слова разделены пробелами).

Добавлено через 10 минут
вот начало этой задачи:
Определить сумму положительных и сумму отрицательных элементов матрицы размерами N*M (N и M не больше 10). Матрицу сформировать из случайных чисел в диапазоне от -100 до 100.

дальше торможу..

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <conio.h>
#include <iostream.h>
 
using namespace std;
 
int main()
{
        int matrix[10][10];
        int M, N, min(-100), max(100);
 
        cin >> M;
        cin >> N;
 
....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2010, 17:56     массивы.не могу разобраться
Еще ссылки по теме:

не могу разобраться C++
C++ Массивы( я не до конца могу разобраться)
Не могу разобраться в if C++

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

Или воспользуйтесь поиском по форуму:
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
15.05.2010, 17:56     массивы.не могу разобраться #20
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <iomanip>
#include <ctime>
 
int main ()
{
    int i,j;
    const int Row=5;
    const int Column=5;
    int MAS[Row][Column];
 
    srand(time(NULL));
    std::cout << "Start matrix:\n";
    for (i=0; i<Row; i++)
    {
        for (j=0; j<Column; j++) {
            MAS[i][j]=rand()%201-100;
            std::cout << std::setw(3) << MAS[i][j]; }
        std::cout << std::endl;
    }
    std::cout << std::endl;
 
    int sum_pos=0, sum_neg=0;
    for (i=0; i<Row; i++)
        for (j=0; j<Column; j++)
        {
            if (MAS[i][j]>0) sum_pos+=MAS[i][j];
            if (MAS[i][j]<0) sum_neg+=MAS[i][j];
        }
 
    std::cout << "Sum of positive elements: " << sum_pos;
    std::cout << std::endl;
    std::cout << "Sum of negative elements: " << sum_neg;
    std::cout << std::endl;
 
    system("pause");
    return 0;
}
Добавлено через 7 минут
2) Если будет понятно:
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
#include <iostream>
#include <iomanip>
#include <ctime>
#include <algorithm>
#include <numeric>
 
int main ()
{
    int i,j;
    const int size=5;
    int MAS[size][size];
 
    srand(time(NULL));
    std::cout << "Start matrix:\n";
    for (i=0; i<size; i++)
    {
        for (j=0; j<size; j++) {
            MAS[i][j]=rand()%21-10;
            std::cout << std::setw(3) << MAS[i][j]; }
        std::cout << std::endl;
    }
    std::cout << std::endl;
 
    for (i=0; i<size; i++)
        for (j=0; j<size; j++)
            if ((i==j) && (MAS[i][j]<0))
                {
                    std::cout << "Maximum element in row " << i+1 << ": " << *std::max_element(MAS[i], MAS[i]+size);
                    std::cout << std::endl;
                    std::cout << "Sum of elements in row " << i+1 << ": " << std::accumulate (MAS[i], MAS[i]+size, 0);
                    std::cout << "\n\n";
                }
 
    system("pause");
    return 0;
}
Добавлено через 9 минут
Вторая задача без STL:

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
#include <iostream>
#include <iomanip>
#include <ctime>
 
int main ()
{
    int i,j,k;
    const int size=5;
    int MAS[size][size];
 
    srand(time(NULL));
    std::cout << "Start matrix:\n";
    for (i=0; i<size; i++)
    {
        for (j=0; j<size; j++) {
            MAS[i][j]=rand()%21-10;
            std::cout << std::setw(3) << MAS[i][j]; }
        std::cout << std::endl;
    }
    std::cout << std::endl;
 
    int sum, max;
    for (i=0; i<size; i++)
        for (j=0; j<size; j++)
            if ((i==j) && (MAS[i][j]<0)) {
                sum=0; max=0;
                for (k=0; k<size; k++) {
                    if (max<MAS[i][k]) max=MAS[i][k];
                    sum+=MAS[i][k]; }
                std::cout << "Maximum element in row " << i+1 << ": " << max;
                std::cout << std::endl;
                std::cout << "Sum of elements in row " << i+1 << ": " << sum;
                std::cout << "\n\n"; }
 
    system("pause");
    return 0;
}
Yandex
Объявления
15.05.2010, 17:56     массивы.не могу разобраться
Ответ Создать тему
Опции темы

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