С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024

Задание на создание и работу с классами

14.03.2011, 20:36. Показов 3142. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание:
1.Описать класс с именем STUDENT, содержащий следующие поля:
фамилия и инициалы;
номер группы;
успеваемость (массив из пяти элементов).
2.Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT;
записи должны быть упорядочены но возрастанию среднего балла;
вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5; если таких студентов нет, вывести соответствующее сообщение.
Вот моя программная реализация,котораЯ не работает:
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
#include <iostream>
#include <conio.h>
using namespace std;
class STUDENT
{
 
public :
    char firstname[len];
    char lastname[len]; 
    int groupnumber;
    int label[5];
    
}
bool good(int *a,int n)
{bool ok=true;
for (int i=0;i<n;i++)
{
    if (a[i]<4) {ok=false;break;}
 
}
 
return (ok);
    }
float sred(int *a,int n)
{float j=0;
    for (int i=0;i<n;i++)
    j+=a[i];
    
return(j/n*1.0);
 
}   
void main()
{setlocale(LC_ALL,"Russian");
STUDENT a[max];float labelsred[max];int index[max];
cout<<"Программа:\n";
cout<<"1)Cоздает списки студентов!\n";
cout<<"2)Сортирует по успеваемости и выводит!\n";
cout<<"3)Выводит списки студентов,имеющих 4 и 5!\n";
cout<<"~~~~~~~~~~~~~~~~~~~~1~~~~~~~~~~~~~~~~~~~~\n";
for (int l=0;l<max;l++)
{
 cout<<"Введите фамилию"<<l<<"-го"<<" студента:";
 cin.getline(a[l].firstname,len);
cout<<"Введите имя"<<l<<"-го"<<" студента!";
cin.getline(a[l].lastname,len);
cout<<"Номер группы:";cin>>a[l].groupnumber;
for (int p=0;p<5;p++)
{ cout <<"Введите отметку по "<<p<<"-й дисциплине:";
    cin>>a[l].label[p];
 
}
labelsred[l]=sred(&a[l].label[1],5);
index[l]=l;
}
float buffer1;int n,m,buffer2;
n=max;
for (int i=0;i<n;i++)
{m=i;
 for (int j=i+1;j<n-1;j++)
 {
     if (labelsred[j]<labelsred[m]) 
     {m=j;
     buffer1=labelsred[i];
    labelsred[i]=labelsred[m];
    labelsred[m]=buffer1;
    buffer2=index[i];
    index[i]=index[m];
    index[m]=buffer2;
     }
 
 }
 for (int y=0;y<max;y++)
 cout<<index[y]<<")"<<labelsred[y]<<endl;
}
getch();
}
Сделал ее только до половины,да вот только не работает!!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2011, 20:36
Ответы с готовыми решениями:

Задание с классами
Уважаемые Знатоки и посетители! Прошу у вас помощи в выполнении задания создания кассового чека! Заранее выражаю благодарность и смею...

Задание с классами
Дали задание на классы ничего не объясняя,вот что я смог написать, дальше нужна помощь program Project1; {$APPTYPE CONSOLE} ...

Доделать задание с классами
Порядок выполнения работы. 1. Определить пользовательский класс в соответствии с вариантом задания (смотри приложение). 2. Определить...

18
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
14.03.2011, 20:40
Цитата Сообщение от REALIST07 Посмотреть сообщение
bool good(int *a,int n)
{bool ok=true;
for (int i=0;i<n;i++)
{
if (a[i]<4) {ok=false;break;}
}
где возвращаемое значение?
компилятор должен был написать ошибку?
return ok;
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 20:42  [ТС]
Цитата Сообщение от REALIST07 Посмотреть сообщение
return (ok);
вот он
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
14.03.2011, 20:46
Цитата Сообщение от REALIST07 Посмотреть сообщение
&a[l].label[1]
массивы начинаются с 0

Добавлено через 4 минуты
сделай функции проверки успеваемости и средний балл членами класса
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 20:47  [ТС]
Ну это ладно тут он пару десятков ошибок выдает,вот программа сама
Вложения
Тип файла: rar Classes.rar (1.79 Мб, 25 просмотров)
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 20:48  [ТС]
Я просто только начал изучать-совсем не в теме,подправьте если вариант
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
14.03.2011, 21:12
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

void main()
для начала у тебя две точки входа зачем???

Добавлено через 18 минут
#define len 256
class STUDENT
в начале файла MyClass.h
это явно мусор предыдуший
он не дает скомпильнуть
дальше класс у тебя описан и в h и в cpp файлах
два определения тоже ошибка компиляции
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 21:16  [ТС]
ValeryS ,подпраь прогу если можешь

Добавлено через 13 секунд
я выше исходник выложил
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
14.03.2011, 21:26
твой проект у меня не идет VS2010 у меня VS2008
создал свой проект скопировал текст из первого поста все скомпилилось после доработки напильником
Цитата Сообщение от REALIST07 Посмотреть сообщение
len
Цитата Сообщение от REALIST07 Посмотреть сообщение
max
пришлось объявить
Цитата Сообщение от REALIST07 Посмотреть сообщение
class STUDENT
{
public :
char firstname[len];
char lastname[len];
int groupnumber;
int label[5];
}
в конце ;
ошибки алгритмические
не проверяется оценка хоть 100 напиши
если вместо номера группы написать строку программа идет вразнос
проверяй вводимые значения
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 21:32  [ТС]
Каким образом?

Добавлено через 3 минуты
ааа туплю блин,я понял просто проблема в том что в модуле хранится
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
14.03.2011, 21:35
в смысле???
создал пустой проект
скопировал туда твою прогу(из первого поста и запустил)
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 21:56  [ТС]
Щас программу полностью переделаю-посмотрим

Добавлено через 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
#include "stdafx.h"
#define len 16
#define MAX 5
 
 
#include <iostream>
#include <conio.h>
using namespace std;
class STUDENT
{
 
public :
        char firstname[len];
        char lastname[len]; 
        int groupnumber;
        int label[5];
        
};
bool good(int *a,int n)
{bool ok=true;
for (int i=0;i<n;i++)
if (a[i]<4) {ok=false;break;}
 return (ok);
        }
float sred(int *a,int n)
{float j=0;
        for (int i=0;i<n;i++)
        j+=a[i];
        
return (j/n*1.0);
 
}       
void main()
{setlocale(LC_ALL,"Russian");
STUDENT a[MAX];float labelsred[MAX];int index[MAX];int i,j;
cout<<"Программа:\n";
cout<<"1)Cоздает списки студентов!\n";
cout<<"2)Сортирует по успеваемости и выводит!\n";
cout<<"3)Выводит списки студентов,имеющих 4 и 5!\n";
cout<<"~~~~~~~~~~~~~~~~~~~~1~~~~~~~~~~~~~~~~~~~~\n";
for (i=0;i<MAX;i++)
{
 cout<<"Введите фамилию"<<i+1<<"-го"<<" студента:";
 cin.getline(a[i].firstname,len);
cout<<"Введите имя"<<i+1<<"-го"<<" студента:";
cin.get(a[i].lastname,len);
cout<<"Номер группы:";cin>>a[i].groupnumber;
for (j=0;j<5;j++)
{ cout <<"Введите отметку по "<<j+1<<"-й дисциплине:";
        cin>>a[i].label[j];
 
}
labelsred[i]=sred(&a[i].label[0],5);
index[i]=i;
}
float buffer1;int n,m,buffer2;
n=MAX;
for (int i=0;i<n;i++)
{m=i;
 for (int j=i+1;j<n-1;j++)
 {
         if (labelsred[j]<labelsred[m]) 
         {m=j;
         buffer1=labelsred[i];
    labelsred[i]=labelsred[m];
    labelsred[m]=buffer1;
        buffer2=index[i];
        index[i]=index[m];
        index[m]=buffer2;
         }
 
 }
 for (int y=0;y<MAX;y++)
 cout<<index[y]<<")"<<labelsred[y]<<endl;
}
getch();
}
Вроде бы исправил,но почему после второго раза набор фамилии и имени слепаются???
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.03.2011, 22:36
Цитата Сообщение от REALIST07 Посмотреть сообщение
Вроде бы исправил,но почему после второго раза набор фамилии и имени слепаются???
Забыл почистить входной поток
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
#define len 16
#define MAX 5
 
 
#include <iostream>
#include <conio.h>
using namespace std;
class STUDENT
{
 
public :
        char firstname[len];
        char lastname[len];
        int groupnumber;
        int label[5];
 
};
bool good(int *a,int n)
{bool ok=true;
for (int i=0;i<n;i++)
if (a[i]<4) {ok=false;break;}
 return (ok);
        }
float sred(int *a,int n)
{float j=0;
        for (int i=0;i<n;i++)
        j+=a[i];
 
return (j/n*1.0);
 
}
int main()
{setlocale(LC_ALL,"Russian");
STUDENT a[MAX];float labelsred[MAX];int index[MAX];int i,j;
cout<<"Программа:\n";
cout<<"1)Cоздает списки студентов!\n";
cout<<"2)Сортирует по успеваемости и выводит!\n";
cout<<"3)Выводит списки студентов,имеющих 4 и 5!\n";
cout<<"~~~~~~~~~~~~~~~~~~~~1~~~~~~~~~~~~~~~~~~~~\n";
for (i=0;i<MAX;i++)
{
 cout<<"Введите фамилию"<<i+1<<"-го"<<" студента:";
 cin.sync();//!!!
 cin.getline(a[i].firstname,len);
cout<<"Введите имя"<<i+1<<"-го"<<" студента:";
cin.get(a[i].lastname,len);
cout<<"Номер группы:";cin>>a[i].groupnumber;
for (j=0;j<5;j++)
{ cout <<"Введите отметку по "<<j+1<<"-й дисциплине:";
        cin>>a[i].label[j];
 
}
labelsred[i]=sred(&a[i].label[0],5);
index[i]=i;
}
float buffer1;int n,m,buffer2;
n=MAX;
for (int i=0;i<n;i++)
{m=i;
 for (int j=i+1;j<n-1;j++)
 {
         if (labelsred[j]<labelsred[m])
         {m=j;
         buffer1=labelsred[i];
    labelsred[i]=labelsred[m];
    labelsred[m]=buffer1;
        buffer2=index[i];
        index[i]=index[m];
        index[m]=buffer2;
         }
 
 }
 for (int y=0;y<MAX;y++)
 cout<<index[y]<<")"<<labelsred[y]<<endl;
}
getch();
}
1
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 22:42  [ТС]
Тогда вопрос другой как проверить отметку?тупо так:
C++
1
if (label>1 && label<5) ...
И еще как проверить цифры ли?перебором в массиве от 0 до 9?
И последнее как отреагировать на неправильное заполнение?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.03.2011, 22:44
Цитата Сообщение от REALIST07 Посмотреть сообщение
Тогда вопрос другой как проверить отметку?
Проверить на что ?
0
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 22:46  [ТС]
На то от 1 и до 5 ли оно?

Цитата Сообщение от REALIST07 Посмотреть сообщение
И еще как проверить цифры ли?перебором в массиве от 0 до 9?
И последнее как отреагировать на неправильное заполнение?
0
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.03.2011, 22:50
Цитата Сообщение от REALIST07 Посмотреть сообщение
И еще как проверить цифры ли?
Можно так
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
#include <iostream>
#include <sstream>
#include <string>
 
template<class T>
void  input(const std::string&  prompt, T&  t){
    for(;;){
        std::cout << prompt;
        std::string  s;
        getline(std::cin, s);
        std::istringstream  ssin(s);
        char  c;
        if(ssin >> t
           && !(ssin >> c))
            break;
    }
}
 
int main(){
 
    int  i;
    input("Int num: ", i);
    std::cout << "i = "
              << i
              << std::endl;
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от REALIST07 Посмотреть сообщение
На то от 1 и до 5 ли оно?
C++
1
2
3
4
if(mark < 1 || mark > 5)
  //Бросаеш ошибку
else
  //идеш дальше
Добавлено через 1 минуту
Цитата Сообщение от REALIST07 Посмотреть сообщение
И последнее как отреагировать на неправильное заполнение?
http://ru.wikipedia.org/wiki/%... 0%B8%D0%B9
1
Автор FAQ
Автор FAQ
 Аватар для REALIST07
644 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 23:04  [ТС]
Все идеально остался только одна проблема досадная-кодировка!НО я кажется знаю как решить ее
0
41 / 41 / 9
Регистрация: 28.01.2011
Сообщений: 175
14.03.2011, 23:21
C++
1
2
SetConsoleOutputCP(1251); // под виндоус, например
setlocale(0, "rus"); // если не помогло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.03.2011, 23:21
Помогаю со студенческими работами здесь

Объясните работу с классами
добрый день! объясните мне работу с классами. Мое видение то есть к примеру мне нужно создать программу которая будет выполнять функции 1....

Придумайте, пожалуйста, задание с классами - только интересное
Вот стало скучно хочу что-то написать придумайте задание только что-то интиресное знаю классы!

Задание сетевого интерфейса используемого классами WebRequest
Имеется необходимость посылать http запросы с определённых сетевых интерфейсов. Для запросов используется класс httpWebRequest. Как...

Написал задание с классами, по примеру, но в public выдает ошибки, незнаю как их переделать :)
# include &quot;stdafx.h&quot; # include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class Magazine ...

Создание расширения PHP с классами(!)
Всем привет. У меня есть несколько классов php, которые я хочу переписать под C и откомпилировать в бинарник, чтобы код классов работал...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru