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

Массив и сонный студент - C++

Восстановить пароль Регистрация
 
derp
Сообщений: n/a
12.03.2012, 00:27     Массив и сонный студент #1
Прошу помощи.
Что нужно от программы :
  1. Номер максимального элемента массива
  2. Элементы массива между первым и вторым нулевыми элементами, номера первого и второго нолей
  3. Преобразование массива таким образом, чтобы в первой его половине были рассположены 3 элемента по модулю, остальные в случайном порядке
Что имеется в данный момент :
  1. Макс. элемент ищеться
  2. Нулевые элементы и то что между ними корректно отображается лишь при инициализации массива в коде, при вводе с клавиатуры отображаеться неверно.
  3. Ошибка term does not evaluate to a function в большом количестве.
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
#include "iostream.h"
#include "windows.h"
#include "math.h"
#include "string.h"
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
void ob (int *);
void nol (int *);
void modul (int *);
int main(int argc, char* argv[])
{   
    int mas [10];       
    int i;
    for (i=0; i<3; i++) 
{   
    cout << Rus("Задайте елементы масcива") <<"\n";
    cin >> mas [i]; 
}
    ob (mas);
    nol (mas);
    return 0;
}
// максимальный элемент массива
void ob (int mas [10])
{   
    int max;
    int i;
    max=mas [0];
    for (i=0; i<10; i++)
    if (mas[i]>max)
    max =mas [i];
    cout << Rus("Максимальний элемент массива :")<<max <<"\n";
}
//Сума между первым и вторым нулевыми елементами
void nol (int mas[10])
{   int cast=0, first=-1, second=-1, sum=0; int i;
    for (i =0; i<10; i++)
{   if(mas[i]==0)
{first=i; cast++; break;}
}
for (i=first+1;i<10; i++)
if (mas[i]==0)
{second=i; cast++; if (cast == 2) break;}
for (i=first+1; i<second; i++)
sum +=mas[i];
if ((first!=-1)&&(second!=-1))
cout << Rus("Нема 0 елемента\n");
{
cout << Rus("Номер первого 0 элемента : ") << first +1 <<"\n";
cout << Rus("Номер второго 0 элемента : ") << second +1<<"\n";
cout << Rus("Сума элементов : ") << sum << "\n";
for (i=first+1; i<second; i++)
cout << mas[i];
}
// else
// cout << Rus("нулевой элемент 1 либо отсутствует \n");
}
//Расположить первые три элемента по модулю, остальные же в случайном порядке
void modul (int mas [10])
{
int max1, max2, max3, i1=-1, i2=-1, i3=-1,mod;
max1=mod(mas[0]);
for (i=0; i<10; i++)
if (max1 < mod(mas[i]))
{max1 = mod(mas[i]);i1=i;
}
cout <<"*\n";
max2 = mod(mas[0]); for (i=0; i<10; i++)
if ((( max2 < mod(mas[i])) && (mod(mas[i]) != max1))) 
{max2 = mod(mas[i]); i2=1;
}
cout<<"\n";
max3=mod(mas[0]); for (i=0; i<10; i++)
if(((max3 < mod(mas[i]))&&(mod(mas[i]) != max1 )&&(mod(mas[i]) != max2))) 
{max3 = mod(mas[i]); i3=i;
}
cout<<"\n ";
if((i1!=-1)&&(i2!=-1)&&(i3!=-1))
{cout<<mas[i1]<<"\n"; cout<<mas[i2]<<"\n"; cout<<mas[i3]<<"\n"; 
for (i=0; i<10; i++)
if ((mas[i1] != mas[i] )&&(mas[i2] != mas[i]) && (mas[i3] != mas[i]))
cout<<mas[i]<< "\n";
}
else
cout<<Rus("недостаточно элементов");
}
Буду рад любому совету.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2012, 00:27     Массив и сонный студент
Посмотрите здесь:

класс «Студент» C++
[C++] Создать класс студент и классы бюджетный студент и коммерческий студент. C++
Класс Студент C++
C++ Создайте файл Студент. Занесите в отдельный файл записи из файла Студент, добавив сведения о новых студентах
C++ Структура Студент
C++ Структура Студент
Сформируйте массив, содержащий сведения о дисциплинах, которые желает изучать студент C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
12.03.2012, 13:56     Массив и сонный студент #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// размер всегда = 10 ?
 
void nol (int * a) {
 
    int sum = 0;
 
    int count = 0;
    int first=-1, second=-1;
 
    for (int i=0; i<10; i++) {
 
        if (a[i] == 0) {
            if (++count == 2) {
                second = i;
                break;
            }
            else {
                first = i;
            }
        }
 
    }
 
    if (second == -1) {
        cout << "no second 0";
        return;
    }
 
    std::cout << "first: " <<first +1 << " second: " << second+1 << '\n'; 
    for (int i=first+1; i<second; i++) {
        sum += a[i];
        cout << a[i] << ' ';
    }
 
    cout << "\nsum: " << sum << '\n'; 
 
}
Цитата Сообщение от derp Посмотреть сообщение
Нулевые элементы и то что между ними корректно отображается лишь при инициализации массива в коде, при вводе с клавиатуры отображаеться неверно.
Цитата Сообщение от derp Посмотреть сообщение
int mas [10]; <--------------------
int i;
for (i=0; i<3; i++) <-------------------
{
cout << Rus("Задайте елементы масcива") <<"\n";
cin >> mas [i];
}
void modul (int mas [10]) <--------------------- ппц какой-то.
чё за максы?
derp
Сообщений: n/a
12.03.2012, 19:12     Массив и сонный студент #3
Заработал. Выложу, может кому пригодиться:
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
#include "iostream.h"
#include "windows.h"
#include "math.h"
#include "string.h"
char bufRus[256];
char* Rus(const char* text)
{
CharToOem(text, bufRus);
return bufRus;
}
void ob (int *);
void nol (int *);
void modul (int *);
int main(int argc, char* argv[])
{   
    int mas [10];       
    int i;
    for (i=0; i<10; i++)    
{   
    cout << Rus("Задайте елементы масcива") <<"\n";
    cin >> mas [i]; 
}
    ob (mas);
    nol (mas);
    modul (mas);
    return 0;
}
// максимальный элемент массива
void ob (int mas [10])
{   
    int max;
    int i;
    max=mas [0];
    for (i=0; i<10; i++)
    if (mas[i]>max)
    max =mas [i];
    cout << Rus("Максимальний елемент масива :")<<max <<"\n";
}
//Сума между первым и вторым нулевыми елементами
void nol (int mas[10])
{   int cast=0, first=-1, second=-1, sum=0; int i;
    for (i =0; i<10; i++)
{   if(mas[i]==0)
{first=i; cast++; break;}
}
for (i=first+1;i<10; i++)
if (mas[i]==0)
{second=i; cast++; if (cast == 2) break;}
for (i=first+1; i<second; i++)
sum +=mas[i];
if ((first!=-1)&&(second!=-1))
cout << Rus("Нет 0 элемента\n");
{
cout << Rus("Номер первого 0 элемента : ") << first +1 <<"\n";
cout << Rus("Номер второго 0 элемента : ") << second +1<<"\n";
cout << Rus("Сума элементов : ") << sum << "\n";
 
}
}
//Расположить первые три элемента по модулю, остальные в случайном порядке
void modul (int mas [10])
{
int max1, max2, max3, i1=-1, i2=-1, i3=-1,i; 
max1=abs(mas[0]);
for (i=0; i<10; i++)
if (max1 < abs(mas[i]))
{max1 = abs(mas[i]);i1=i;
}
cout <<"\n";
max2 = abs(mas[0]);
for (i=0; i<10; i++)
if ((( max2 < abs(mas[i])) && (abs(mas[i]) != max1))) 
{max2 = abs(mas[i]); i2=i;
}
cout<<"\n";
max3=abs(mas[0]); for (i=0; i<10; i++)
if(((max3 < abs(mas[i]))&&(abs(mas[i]) != max1 )&&(abs(mas[i]) != max2))) 
{max3 = abs(mas[i]); i3=i;
}
cout<<"\n ";
if((i1!=-1)&&(i2!=-1)&&(i3!=-1))
{cout<<mas[i1]<<"\n"; cout<<mas[i2]<<"\n"; cout<<mas[i3]<<"\n"; 
for (i=0; i<10; i++)
if ((mas[i1] != mas[i] )&&(mas[i2] != mas[i]) && (mas[i3] != mas[i]))
cout<<mas[i]<< "\n";
}
else
cout<<Rus("недостаточно элементов");
}
Yandex
Объявления
12.03.2012, 19:12     Массив и сонный студент
Ответ Создать тему
Опции темы

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