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

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

Восстановить пароль Регистрация
 
KattyAlex
 Аватар для KattyAlex
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 26
02.05.2013, 23:52     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции? #1
можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2013, 23:52     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции?
Посмотрите здесь:

Заменить все элементы массива с максимальным значением на сумму цифр минимального элемента C++
C++ Возвести в квадрат все элементы одномерного массива
C++ Функции обработки массива (определить произведение элементов массива, заменить модулем все элементы массива, уничтожить элемент с заданным значением)
C++ Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны
C++ Заменить все элементы массива, попадающие в интервал, нулем. Выполнить двумя способами: с помощью одномерного и двумерного массива.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr.curse
 Аватар для dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
03.05.2013, 00:04     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции? #2
Цитата Сообщение от KattyAlex Посмотреть сообщение
посредством одной операции?
смотря что иметь ввиду под одной операцией
KattyAlex
 Аватар для KattyAlex
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 26
03.05.2013, 00:31  [ТС]     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции? #3
например, используя какую-то функцию. чтобы сразу все числа сравнивались с данной переменной, одновременно, а не по очереди
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
03.05.2013, 03:15     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции? #4
Цитата Сообщение от KattyAlex Посмотреть сообщение
а не по очереди
А чем не устраивает по очереди ? Я думаю , что нельзя .
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 284
Регистрация: 04.12.2011
Сообщений: 7,712
Записей в блоге: 3
03.05.2013, 08:51     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции? #5
KattyAlex, если массив отсортирован, то можно сравнить c минимальным (первым), вроде:numb<a[0] и если false, то с максимальным (последним): numb>a[end] и если опять false, то не повезло совсем. Каждое из сравнений numb<a[0] или numb>a[end] при значении true дают полную информацию о результате сравнения с любым элементом. Однако, если число (сравнимый объект) попадает в диапазон массива, то это не сработает. То есть в общем случае, нельзя вроде.
KattyAlex
 Аватар для KattyAlex
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
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
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);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2013, 18:50     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции?
Еще ссылки по теме:

C++ Заменить все минимальные элементы одномерного массива на противоположные
Ввести и распечатать все элементы одномерного массива C++
Удалить все нечетные элементы одномерного массива C++

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

Или воспользуйтесь поиском по форуму:
KattyAlex
 Аватар для KattyAlex
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");
}
Yandex
Объявления
03.05.2013, 18:50     можно ли сравнить все элементы одномерного массива с определенным значением посредством одной операции?
Ответ Создать тему
Опции темы

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