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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
#1

В массиве все элементы, стоящие после максимального, уменьшить на 1 - C++

18.11.2010, 19:00. Просмотров 1947. Ответов 34
Метки нет (Все метки)

В задаче требуется написать, отладить и протестировать программу, обеспечивающую выполнение следующих действий
1. Ввод одномерного массива
2 Вывод исходного массива
3. Обработка массива в соотвествии с заданием
Выод параметров массива, которые требуется найти по заданию
5. Вывод массива после внесенных изменений
В программе требуется обязательно использовать функции. Использование глобальных переменных запрещено. При обработке вспомогательными массивами по возможности не пользоваться. В программе нужно обеспечить выбор способа заполнения исходного массива: с клавиатуры,случайное заполнение,загрузка из файла
Задание:
В массиве все элементы, стоящие после максимального,уменьшить на 1
Пример: из массива А[5]: 3 2 1 5 4 должен получиться массив 3 2 1 5 3
Помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2010, 19:00     В массиве все элементы, стоящие после максимального, уменьшить на 1
Посмотрите здесь:

C++ В массиве целых чисел найти элементы, стоящие после элементов со значением, кратным минимальному
В 1d массиве уменьшить в двое элементы кратные 2 и стоящие перед max элементам C++
C++ Все четные элементы, стоящие левее минимального, уменьшить в 2 раза
C++ В линейном массиве заменить все элементы на число m (m – индекс максимального элемента)
C++ Уменьшить все четные элементы матрицы на значение максимального элемента
Обнулить элементы матрицы стоящие после максимального элемента C++
В массиве С из 25 целых элементов вывести на экран те элементы, которые расположены после максимального C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
21.11.2010, 14:30  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #21
Цитата Сообщение от asics Посмотреть сообщение
zmei89, Ты издиваешся ?Не мог сразу сказать что надо на Си ?!
нет не издеваюсь,С++ мы еще не проходим
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.11.2010, 14:36     В массиве все элементы, стоящие после максимального, уменьшить на 1 #22
Так что тебе мешало в первом посте написать Язык програмирования Си ?
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
21.11.2010, 14:46  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #23
[QUOTE=asics;1128190]Так что тебе мешало в первом посте написать Язык програмирования Си ?[/QU

ну там же в разделе С/С++
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.11.2010, 14:54     В массиве все элементы, стоящие после максимального, уменьшить на 1 #24
zmei89, Ну хорошо,тогда в моем коде замени cout на printf(), cin на scanf(), new на malloc(), ifstream на FILE *,ну думаю ты понял.
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
21.11.2010, 14:56  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #25
Цитата Сообщение от asics Посмотреть сообщение
zmei89, Ну хорошо,тогда в моем коде замени cout на printf(), cin на scanf(), new на malloc(), ifstream на FILE *,ну думаю ты понял.
попробую разобраться
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
21.11.2010, 15:47  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #26
Цитата Сообщение от zmei89 Посмотреть сообщение
попробую разобраться
Посмотри пожалуйста прально сделал или нет?
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//================================================
#iclude <stdio.h>
#include <conio.h>
#iclude <stdlib.h>
 
//================================================
void keybord(int *Arr, int n)
{
    for(int i = 0; i < n; ++i)
    {
        std::printf(), << "Arr[" << i << "] = ";
        std::scanf() >> Arr[i];
    }
 
    std::printf(), << "Array: ";
    for(int i = 0; i < n; ++i)
    {
        std::printf(), << Arr[i] << ' ';
    }
}
//================================================
void random(int *Arr, int n)
{
    srand(static_cast<unsigned int>(time(0)));
    std::printf(), << "Array: ";
    for(int i = 0; i < n; ++i)
    {
        Arr[i] = rand()%100+1+i;
        std:: printf()<< Arr[i] << ' ';
    }
}
//================================================
void from_file(int *Arr, int n)
{
    std::FILE ("1.txt");
 
    std::printf() << "Array: ";
    if(!ifs)
    {
        std::cerr << "Error" << std::endl;
    }
    else
    {
        for(int i = 0; i < n; ++i)
        {
            ifs >> Arr[i];
            std::printf() << Arr[i] << ' ';
        }
    }
}
//================================================
void foo(int *Arr, int n)
{
    int index = 0;
 
    for(int i = 0; i <n; ++i)
    {
        if(Arr[index] < Arr[i])
        {
            index = i;
        }
    }
 
    for(int i = index+1; i < n; ++i)
    {
        Arr[i]--;
    }
}
//================================================
int main()
{
    int *Arr, n, x;
    std::printf() << "Enter size array: ";
    std::scanf()>> n;
    Arr = malloc[n];
 
    std::printf()<< "1.Enter element of array(keybord)" << std::endl
                   << "2.Enter element of array(random)" << std::endl
                   << "3.Enter element of array(from file)" << std::endl;
 
    std::printf() << "> ";
    std::scanf()>> x;
 
    switch(x)
    {
        case 1:
                   keybord(Arr, n);
                   break;
        case 2:
                   random(Arr, n);
                   break;
        case 3:
                   from_file(Arr, n);
                   break;
        default:
                   std::cerr << "Error" << std::endl;
                   return 1;
    }
 
    foo(Arr, n);
 
    std::printf() << "\nAfter: ";
    for(int i = 0; i < n; ++i)
    {
        std::printf() << Arr[i] << ' ';
    }
 
    getch ();
}
//================================================
и вот еще скрин
Миниатюры
В массиве все элементы, стоящие после максимального, уменьшить на 1  
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
21.11.2010, 16:52     В массиве все элементы, стоящие после максимального, уменьшить на 1 #27
zmei89, std::printf это прям такой Си. Все вхождения std нужно убрать.

Добавлено через 12 минут
Дааааа. такой жесткой переделки я еще не встречал...

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
 
//================================================
void keybord(int *Arr, int n)
{
int i;
for(i = 0; i < n; ++i)
{
     printf("Enter Arr[%d]: ", i);
     scanf("%d", &Arr[i]);
}
 
printf("Array\n");
for(i = 0; i < n; ++i)
{
     printf("%d ", Arr[i]);
}
printf("\n");
}
//================================================
void random(int *Arr, int n)
{
int i;
   printf("Array\n");
for(i = 0; i < n; ++i)
{
Arr[i] = rand()%100+1+i;
printf("%d ", Arr[i]);
}
printf("\n");
}
//================================================
void from_file(int *Arr, int n)
{
int i;
FILE* f;
f=fopen("1.txt", "r");
if(f==NULL)
{
    printf("Error!\n");
    exit(1);
}
printf("Array\n");
for(i = 0; i < n; ++i)
{
fscanf(f, "%d ", &Arr[i]);
printf("%d ", Arr[i]);
}
printf("\n");
fclose(f);
}
//================================================
void foo(int *Arr, int n)
{
int index = 0, i;
 
for(i = 0; i <n; ++i)
{
if(Arr[index] < Arr[i])
{
index = i;
}
}
 
for(i = index+1; i < n; ++i)
{
Arr[i]--;
}
}
//================================================
int main()
{
srand((unsigned)(time(NULL)));
int *Arr, n, x;
printf("Enter size of array: ");
scanf("%d", &n);
Arr =(int*)malloc(sizeof(int)*n);
 
printf("Enter elements of array\n");
printf("1 - keyboard\n");
printf("2 - random\n");
printf("3 - file\n");
 
printf("Enter number of option: ");
scanf("%d", &x);
 
switch(x)
{
case 1:
keybord(Arr, n);
break;
case 2:
random(Arr, n);
break;
case 3:
from_file(Arr, n);
break;
default:
printf("Error\n");
return 1;
}
 
foo(Arr, n);
 
printf("After\n");
int i;
for(i = 0; i < n; ++i)
{
printf("%d ", Arr[i]);
}
printf("\n");
getch ();
}
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
21.11.2010, 17:01  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #28
Цитата Сообщение от ForEveR Посмотреть сообщение
zmei89, std:rintf это прям такой Си. Все вхождения std нужно убрать.

Добавлено через 12 минут
Дааааа. такой жесткой переделки я еще не встречал...

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
 
//================================================
void keybord(int *Arr, int n)
{
int i;
for(i = 0; i < n; ++i)
{
     printf("Enter Arr[%d]: ", i);
     scanf("%d", &Arr[i]);
}
 
printf("Array\n");
for(i = 0; i < n; ++i)
{
     printf("%d ", Arr[i]);
}
printf("\n");
}
//================================================
void random(int *Arr, int n)
{
int i;
   printf("Array\n");
for(i = 0; i < n; ++i)
{
Arr[i] = rand()%100+1+i;
printf("%d ", Arr[i]);
}
printf("\n");
}
//================================================
void from_file(int *Arr, int n)
{
int i;
FILE* f;
f=fopen("1.txt", "r");
if(f==NULL)
{
    printf("Error!\n");
    exit(1);
}
printf("Array\n");
for(i = 0; i < n; ++i)
{
fscanf(f, "%d ", &Arr[i]);
printf("%d ", Arr[i]);
}
printf("\n");
fclose(f);
}
//================================================
void foo(int *Arr, int n)
{
int index = 0, i;
 
for(i = 0; i <n; ++i)
{
if(Arr[index] < Arr[i])
{
index = i;
}
}
 
for(i = index+1; i < n; ++i)
{
Arr[i]--;
}
}
//================================================
int main()
{
srand((unsigned)(time(NULL)));
int *Arr, n, x;
printf("Enter size of array: ");
scanf("%d", &n);
Arr =(int*)malloc(sizeof(int)*n);
 
printf("Enter elements of array\n");
printf("1 - keyboard\n");
printf("2 - random\n");
printf("3 - file\n");
 
printf("Enter number of option: ");
scanf("%d", &x);
 
switch(x)
{
case 1:
keybord(Arr, n);
break;
case 2:
random(Arr, n);
break;
case 3:
from_file(Arr, n);
break;
default:
printf("Error\n");
return 1;
}
 
foo(Arr, n);
 
printf("After\n");
int i;
for(i = 0; i < n; ++i)
{
printf("%d ", Arr[i]);
}
printf("\n");
getch ();
}
а для чего вот эти две библиотеки нужны
#include <time.h>
#include <malloc.h>
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
21.11.2010, 17:06     В массиве все элементы, стоящие после максимального, уменьшить на 1 #29
zmei89, time.h для начального значения рандома.

C
1
srand((unsigned)(time(NULL)));
malloc.h для динамического выделения памяти.
C
1
Arr =(int*)malloc(sizeof(int)*n);
И это не библиотеки а хедер файлы стандартной библиотеки
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
21.11.2010, 17:26  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #30
Цитата Сообщение от ForEveR Посмотреть сообщение
zmei89, time.h для начального значения рандома.

C
1
srand((unsigned)(time(NULL)));
malloc.h для динамического выделения памяти.
C
1
Arr =(int*)malloc(sizeof(int)*n);
И это не библиотеки а хедер файлы стандартной библиотеки
После максимального уменьшилось на один
Миниатюры
В массиве все элементы, стоящие после максимального, уменьшить на 1  
ForEveR
Модератор
Эксперт С++
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
21.11.2010, 17:33     В массиве все элементы, стоящие после максимального, уменьшить на 1 #31
zmei89, Значит все верно. Радуйтесь
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
30.11.2010, 20:41  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #32
Программа почему то не работает в visual Studio ошибки выдает,а работа норм в CodeBlockse
asics
Freelance
Эксперт C++
2844 / 1781 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
30.11.2010, 20:49     В массиве все элементы, стоящие после максимального, уменьшить на 1 #33
zmei89, Покажите код который компилируете и ошыбки.
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
01.12.2010, 08:32  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #34
не могу т.к на учебе запускал,скрин там не сделал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2010, 20:57     В массиве все элементы, стоящие после максимального, уменьшить на 1
Еще ссылки по теме:

C++ В массиве уменьшить все элементы между двумя отрицательными значениями
Удалить все элементы в массиве со значением E1, стоящие до элемента со значением E2 STL C++
C++ Массивы: все элементы, кратные 10, заменить 0, все нечетные элементы удвоить, а четные уменьшить в 2 раза
В массиве из 10 целых чисел заменить все элементы, стоящие на четных местах, на минимальный элемент C++
Все элементы массива, стоящие после минимального, заменить нулями C++

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

Или воспользуйтесь поиском по форуму:
zmei89
31 / 6 / 1
Регистрация: 10.09.2010
Сообщений: 833
03.12.2010, 20:57  [ТС]     В массиве все элементы, стоящие после максимального, уменьшить на 1 #35
у кого стоит Visual Studio по смотрите пожалуйста что за ошибки выдает!!!!

Добавлено через 45 минут
есть непарные фигурные скобки
в коде программы включены дополнительные не отображаемые символы
вот что выдает вроде

Добавлено через 33 минуты
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <stdafx.h> // Вот этотого не хватало
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
 
//================================================
void keybord(int *Arr, int n)
{
int i;
for(i = 0; i < n; ++i)
{
printf("Enter Arr[%d]: ", i);
scanf("%d", &Arr);
}
 
printf("Array\n");
for(i = 0; i < n; ++i)
{
 
}
printf("\n");
}
//================================================
void random(int *Arr, int n)
{
int i;
printf("Array\n");
for(i = 0; i < n; ++i)
{
Arr = rand()0+1+i; // Первый раз такое вижу...
printf("%d ", Arr);
}
printf("\n");
}
//================================================
void from_file(int *Arr, int n)
{
int i;
FILE* f;
f=fopen("1.txt", "r");
if(f==NULL)
{
printf("Error!\n");
exit(1);
}
printf("Array\n");
for(i = 0; i < n; ++i)
{
fscanf(f, "%d ", &Arr);
printf("%d ", Arr);
}
//////////////////////////////////////////////////////////
{
printf("\n");
fclose(f);
}
//================================================
void foo(int *Arr, int n)
{
int index = 0, i;
 
for(i = 0; i < n;)
{
index = i;
};
}
 
for(i = index+1; i < n; ++i)
{
Arr--;
}
}
//================================================
int main()
{
srand((unsigned)(time(NULL)));
int *Arr, n, x;
printf("Enter size of array: ");
scanf("%d", &n);
Arr =(int*)malloc(sizeof(int)*n);
 
printf("Enter elements of array\n");
printf("1 - keyboard\n");
printf("2 - random\n");
printf("3 - file\n");
 
printf("Enter number of option: ");
scanf("%d", &x);
 
switch(x)
{
case 1:
keybord(Arr, n);
break;
case 2:
random(Arr, n);
break;
case 3:
from_file(Arr, n);
break;
default:
printf("Error\n");
return 1;
}
 
foo(Arr, n);
 
printf("After\n");
int i;
for(i = 0; i < n; ++i)
{
printf("%d ", Arr);
}
printf("\n");
getch ();
}


с 20 ошибок до 5.. теперь

в иницилиции переменных перменных (например index и i ) ошибки где то, и еще про видимость переменных где то ошибки помогите пожалуйста
Yandex
Объявления
03.12.2010, 20:57     В массиве все элементы, стоящие после максимального, уменьшить на 1
Ответ Создать тему
Опции темы

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