Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 26
1

Можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции?

02.05.2013, 23:52. Просмотров 1163. Ответов 7
Метки нет (Все метки)

можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2013, 23:52
Ответы с готовыми решениями:

Нужно найти элемент с минимальным значением и заменить его значением все отрицательные элементы массива
Написать алгоритм решения следующей задачи Задан масив K. Нужно найти элемент с минимальным...

Скопировать все элементы массива с четным индексом, слева от которых элементы с нечетным значением
3. Ввести массив А. В массив В скопировать все элементы массива А, имеющие четный индекс, слева...

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

Функции обработки массива (определить произведение элементов массива, заменить модулем все элементы массива, уничтожить элемент с заданным значением)
Вот задания,не могу сделать ни одного из них,буду благодарен за помощь. Написать функции для...

7
397 / 353 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
03.05.2013, 00:04 2
Цитата Сообщение от KattyAlex Посмотреть сообщение
посредством одной операции?
смотря что иметь ввиду под одной операцией
0
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 26
03.05.2013, 00:31  [ТС] 3
например, используя какую-то функцию. чтобы сразу все числа сравнивались с данной переменной, одновременно, а не по очереди
0
479 / 471 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
03.05.2013, 03:15 4
Цитата Сообщение от KattyAlex Посмотреть сообщение
а не по очереди
А чем не устраивает по очереди ? Я думаю , что нельзя .
1
Комп_Оратор)
Эксперт по математике/физике
8389 / 4145 / 567
Регистрация: 04.12.2011
Сообщений: 12,292
Записей в блоге: 14
03.05.2013, 08:51 5
KattyAlex, если массив отсортирован, то можно сравнить c минимальным (первым), вроде:numb<a[0] и если false, то с максимальным (последним): numb>a[end] и если опять false, то не повезло совсем. Каждое из сравнений numb<a[0] или numb>a[end] при значении true дают полную информацию о результате сравнения с любым элементом. Однако, если число (сравнимый объект) попадает в диапазон массива, то это не сработает. То есть в общем случае, нельзя вроде.
0
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 26
03.05.2013, 17:16  [ТС] 6
Ochen' zhal'...
zadacha,kotoruu ya reshau, na struktury...
zadaetsya struktura Student,gde vvodyatsya Familiya,Imya,Ochestvo, kurs, finansovoe polozhenie I massiv ocenok.
Nuzhno vybrav sobstvennyi kriteryi nachislit' rebyatam stipendiu, otsortirovat' ludei po kursu, vnutri kursa po stipendii.

Moi kriterii takov, chto my berem
massiv ocenok I sravnivaem po ocheredi

snachala s 9oi, potom s 8-koi, s semerkoi I 5-koi...esli vse ocenki vyshe chem eti bally,to v sootvetsvii nachidlyaetsa stipendiya.. isklucheniem yavlaetsya 5-ka,esli vse ocenki vyshe, znachit nachislyaetsa opredelennaya stipuha, esli nizhe, to my smotrim socialnoe polozhenie ( gde 0-plohoe,1-horoshee), esli 0- nachislyaetsa social'naya stipendiya,esli 1 -stipendii net.

hochetsya chtoby cycl rabotal dlya lubogo massiva ocenok, vne zavisimosti ot razmera. potomu I hochetsya sravnivat' srazu ves' massivs chislom.
A escho u menya problemy s sortirpvkoi
0
Эксперт С++
1659 / 1031 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
03.05.2013, 17:43 7
Сравнить, разумеется, можно. Вопрос в том, что именно надо узнать из этого сравнения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <algorithm>
#include <iterator>
using std::begin;
using std::end;
 
extern int MyArray[100500];
 
bool has42()  // Есть ли в массиве число 42
{
    return std::find(begin(MyArray), end(MyArray), 42) != end(MyArray);
}
 
bool hasOnly42s() // Все ли числа в массиве равны 42. Требует новый стандарт. Впрочем, функции begin и end тоже его требуют.
{
    return std::all_of(begin(MyArray), end(MyArray), [] (int val) {return val == 42;});
}
 
size_t count42s() // Количество чисел 42 в массиве
{
    return std::count(begin(MyArray), end(MyArray), 42);
}
0
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 26
03.05.2013, 18:50  [ТС] 8
вот это мой код, который находится в процессе доработки и исправлений.
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
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <string>
#include <time.h>
#include <stdlib.h>
using namespace std;
 
const int n_marks = 3;
const int n_index = 6;
const int n_indexx = 2; 
const int m = 6;
const int k = 6;
 
 struct Student
 {
    int course;
    std::string name;
    std::string surname;
    std::string patronymic;
    int marks[n_marks];
    int finances;
    float stipend[n_index]={938.496, 821.184, 703.872, 586.560, 357.600, 0 };
    int rating[m]={9, 8, 7, 5, 5, 5};
 
    Student(int i); 
    void print();
};
 
 Student::Student(int i)
{
    
 
    surname = "Surname_";
    surname.append(index);
    name = "Name_" ;
    name.append(index);
    patronymic = "Patronymic_";
    patronymic.append(index);
    
 
    for(int i=0;i<n_marks;i++){
        
        marks[i] = rand()%10+1; 
    }
    for(int i=0;i<n_indexx;i++){
        
        finances = rand()%2; 
    }
 
    int* kol = new int [k];
    for(int i=0; i<k; i++){
        kol[i]=0;
    }
/*здесь начинается моё "начисление" стипендии, где в массиве rating[m] находятся оценки, с которыми производится сравнение массива оценок студента marks[n_marks]. каждую оценку в массиве оценок студента мы сравниваем с нашей q-ой оценкой рейтинга и в kol[q-ом] мы подсчитываем количество оценок студента выше или равной нашей оценки rating[q]*/
    for(int q=0; q<m; q++){
        for(int i=0; i<n_marks; i++){
 
            if(marks[i]>=rating[q]) kol[q]++;
        }
}
/*т.о. получится, что мы теперь смотрим в kol[i-ом] количество оценок равных оценке rating[i], и в соответствии начисляем стипендию...   */
    for(int i=0; i<k; i++){
        if(kol[i]=n_marks) stipend[i];
        if((kol[5]<n_marks) && finances=1) stipend[5];
        if((kol[5]<n_marks) && finances=0) stipend[4];/*здесь мы начисляем соц. стипендию,студентам с оценками ниже 5, но с плохим финансовым положением*/
    }   
}
 
void Student::print()
{
        cout<< "Student: " << endl;
        cout << "       " << name << " " << surname << " " << patronymic << " "<<endl;
        cout << "       ";
        for(int i=0;i<n_marks;i++)
            cout<<marks[i]<< " ";
        
        cout << endl << "       " << finances <<endl;
        cout << endl << "       " << stipend <<endl;
}
//горе недосортировка :(
void sort(Student** arr, int n)
{
    for (int i=0;i<=n;i++)
    {
        for (int j=0;j<n-1;j++)
        {
            if(arr[j]->course < arr[j+1]->course)
            {
                Student* tmp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tmp;
            }
        }
    }
 
    for (int i=0;i<=1;i++)
    {
        for (int j=0;j<n-1;j++)
        {
            if( stipend[j]< stipend[j+1])
            {
                Student* tmp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=tmp;
            }
        }
    }
 
}
 
void main()
{
 
    int n=3;
    
    Student** mas=new Student*[n];
    srand(time(NULL));
    for(int i=0;i<n;i++){
        mas[i] = new Student(i);
    }
 
    
    sort(mas, n);
    cout<<endl;
 
    for(int i=0;i<n;i++)
        mas[i]->print();
    system("pause");
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.05.2013, 18:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Из одномерного массива А удалить все элементы, правее которых расположены четные элементы
Из одномерного массива А удалить все элементы, правее которых расположены четные элементы ...

Заменить все положительные элементы массива средним значением массива
Дан массив из 10 целых чисел. написать программу замены всех положительных элементов средним...

Найти все элементы массива с четными номерами, со значением максимального элемента массива
Дано натуральное число n и массив вещественных чисел a Найти все элементы массива с четными...

Упорядочить по убыванию все положительные элементы одномерного массива, остальные элементы заменить нолями
Составить программу упорядочения (по убыванию) всех положительных элементов одномерного массива,...

Заменить все элементы массива, большие данного Z, определенным числом
6. Дан массив действительных чисел а1, а2, …, аn. Заменить все его члены, большие данного Z, этим...

Удалить из одномерного массива все элементы, в записи которых все цифры различны
В одномерном массиве, элементы которого являются целыми числами, произвести следующие действия:...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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