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

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

Восстановить пароль Регистрация
 
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 20:36     Задание на создание и работу с классами #1
Есть задание:
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();
}
Сделал ее только до половины,да вот только не работает!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
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;
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 20:42  [ТС]     Задание на создание и работу с классами #3
Цитата Сообщение от REALIST07 Посмотреть сообщение
return (ok);
вот он
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
14.03.2011, 20:46     Задание на создание и работу с классами #4
Цитата Сообщение от REALIST07 Посмотреть сообщение
&a[l].label[1]
массивы начинаются с 0

Добавлено через 4 минуты
сделай функции проверки успеваемости и средний балл членами класса
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 20:47  [ТС]     Задание на создание и работу с классами #5
Ну это ладно тут он пару десятков ошибок выдает,вот программа сама
Вложения
Тип файла: rar Classes.rar (1.79 Мб, 23 просмотров)
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 20:48  [ТС]     Задание на создание и работу с классами #6
Я просто только начал изучать-совсем не в теме,подправьте если вариант
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
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 файлах
два определения тоже ошибка компиляции
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 21:16  [ТС]     Задание на создание и работу с классами #8
ValeryS ,подпраь прогу если можешь

Добавлено через 13 секунд
я выше исходник выложил
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
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 напиши
если вместо номера группы написать строку программа идет вразнос
проверяй вводимые значения
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 21:32  [ТС]     Задание на создание и работу с классами #10
Каким образом?

Добавлено через 3 минуты
ааа туплю блин,я понял просто проблема в том что в модуле хранится
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
14.03.2011, 21:35     Задание на создание и работу с классами #11
в смысле???
создал пустой проект
скопировал туда твою прогу(из первого поста и запустил)
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
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();
}
Вроде бы исправил,но почему после второго раза набор фамилии и имени слепаются???
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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();
}
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 22:42  [ТС]     Задание на создание и работу с классами #14
Тогда вопрос другой как проверить отметку?тупо так:
C++
1
if (label>1 && label<5) ...
И еще как проверить цифры ли?перебором в массиве от 0 до 9?
И последнее как отреагировать на неправильное заполнение?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
14.03.2011, 22:44     Задание на создание и работу с классами #15
Цитата Сообщение от REALIST07 Посмотреть сообщение
Тогда вопрос другой как проверить отметку?
Проверить на что ?
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 22:46  [ТС]     Задание на создание и работу с классами #16
На то от 1 и до 5 ли оно?

Цитата Сообщение от REALIST07 Посмотреть сообщение
И еще как проверить цифры ли?перебором в массиве от 0 до 9?
И последнее как отреагировать на неправильное заполнение?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
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/%D0%9E%...BD%D0%B8%D0%B9
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
14.03.2011, 23:04  [ТС]     Задание на создание и работу с классами #18
Все идеально остался только одна проблема досадная-кодировка!НО я кажется знаю как решить ее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2011, 23:21     Задание на создание и работу с классами
Еще ссылки по теме:

C++ Создание консольного теста: выводит задание и 4 варианта ответа
C++ Создание класса, моделирующего работу RS-триггера
C++ Придумайте, пожалуйста, задание с классами - только интересное

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

Или воспользуйтесь поиском по форуму:
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
14.03.2011, 23:21     Задание на создание и работу с классами #19
C++
1
2
SetConsoleOutputCP(1251); // под виндоус, например
setlocale(0, "rus"); // если не помогло
Yandex
Объявления
14.03.2011, 23:21     Задание на создание и работу с классами
Ответ Создать тему
Опции темы

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