Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
1

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

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

Author24 — интернет-сервис помощи студентам
Есть задание:
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2011, 20:36
Ответы с готовыми решениями:

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

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

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

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

18
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
14.03.2011, 20:40 2
Цитата Сообщение от 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
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 20:42  [ТС] 3
Цитата Сообщение от REALIST07 Посмотреть сообщение
return (ok);
вот он
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
14.03.2011, 20:46 4
Цитата Сообщение от REALIST07 Посмотреть сообщение
&a[l].label[1]
массивы начинаются с 0

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

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

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

Добавлено через 13 секунд
я выше исходник выложил
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,511
14.03.2011, 21:26 9
твой проект у меня не идет 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
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 21:32  [ТС] 10
Каким образом?

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

Добавлено через 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
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.03.2011, 22:36 13
Цитата Сообщение от 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
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 22:42  [ТС] 14
Тогда вопрос другой как проверить отметку?тупо так:
C++
1
if (label>1 && label<5) ...
И еще как проверить цифры ли?перебором в массиве от 0 до 9?
И последнее как отреагировать на неправильное заполнение?
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.03.2011, 22:44 15
Цитата Сообщение от REALIST07 Посмотреть сообщение
Тогда вопрос другой как проверить отметку?
Проверить на что ?
0
Автор FAQ
Автор FAQ
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 22:46  [ТС] 16
На то от 1 и до 5 ли оно?

Цитата Сообщение от REALIST07 Посмотреть сообщение
И еще как проверить цифры ли?перебором в массиве от 0 до 9?
И последнее как отреагировать на неправильное заполнение?
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
14.03.2011, 22:50 17
Цитата Сообщение от 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
200 / 199 / 21
Регистрация: 11.06.2010
Сообщений: 1,024
14.03.2011, 23:04  [ТС] 18
Все идеально остался только одна проблема досадная-кодировка!НО я кажется знаю как решить ее
0
41 / 41 / 9
Регистрация: 28.01.2011
Сообщений: 175
14.03.2011, 23:21 19
C++
1
2
SetConsoleOutputCP(1251); // под виндоус, например
setlocale(0, "rus"); // если не помогло
0
14.03.2011, 23:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2011, 23:21
Помогаю со студенческими работами здесь

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

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

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

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

Задание на работу со строками
Люди добрые помогите написать небольшую программу.Задание такое: 1.Создать html-документ,...

Создание проекта с несколькими классами Java
Здравствуйте, возник вопрос, возможно глупый, но с учтом того, что недавно начал изучать java, все...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru