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

Описать структуру с именем STUDENT. Исправить ошибки в коде - C++

Восстановить пароль Регистрация
 
Kseni1995
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 29
06.05.2014, 23:45     Описать структуру с именем STUDENT. Исправить ошибки в коде #1
Проверьте пожалуйста! Задание такое: описать структуру с именем STUDENT, содержащую следующие поля:
а)фамилия и имя(строка 15 символов),
б) год рождения(целое неотриц. число),
в)номер группы( число целое или строка из 3 символов),
г)оценки за сессию по 4 предметам( массив из 4 типа float)
В этой программе, реализовать следующие функции: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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include <iostream>
#include <locale>
 
 
using namespace std;
 
 
struct STUDENT // структура STUDENT
{ 
    string name;
    int year;
    int group; 
    float marks[4];
};
 char str[255];
int main() 
{   
    setlocale(0,"rus");
    const int size = 3; // количество студентов
 
    for ( i = 0; i < size; i++)  // ввод информации
    { 
        cout << "Введите фамилию студента " << endl; 
        cin >> str; 
        cout<<" Год рождения "<<endl;
        cin>> students[n].year;
        cout << "Введите номер группы " << endl; 
        cin >> students[n].group; 
        cout << "Введите 4 оценки " << endl; 
        for (int i = 0; i < 4; i++) 
        cin >> students[n].marks[i]; 
        n++;
        
    } 
    int k,t;
       for(k=0;k<=n;k++){
       if (string[1]=42)
           cout<<students[n].name;
       t++;
       }
}
 
    // Упорядочивание записей по возрастанию номеров 
        // (используется пузырьковая сортировка)
STUDENT Temp{
   int j;
   for (i=1; i<k; i++) {
     for (j=1; j<=(k-i); j++) {
       if ( students[j].year > students[j+1].year) {
         Temp = students[j];
         students[j] = students[j+1];
         students[j+1] = Temp;
       }
     }
   }
     
   
    system("Pause");
    return 0;
    }
Подскажите!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 23:45     Описать структуру с именем STUDENT. Исправить ошибки в коде
Посмотрите здесь:

Описать структуру с именем Student C++
Описать структуру с именем STUDENT C++
C++ описать структуру с именем STUDENT
C++ Описать структуру с именем STUDENT
C++ Описать структуру с именем STUDENT
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,714
Записей в блоге: 3
07.05.2014, 00:47     Описать структуру с именем STUDENT. Исправить ошибки в коде #2
Вот тут не понял, что хотели сделать:
Цитата Сообщение от Kseni1995 Посмотреть сообщение
for(k=0;k<=n;k++){ if (string[1]=42)
Вообще много ошибок в связи с отсутствием объявлений)
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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
struct STUDENT // структура STUDENT
{ 
    string name;
    int year;
    int group; 
    static const int mark_size=4;
    float marks[mark_size];
    STUDENT();
    void input(){
cout << "Введите фамилию студента " << endl; 
        cin >>name;
cout<<" Год рождения "<<endl;
        cin>> year;
cout << "Введите номер группы " << endl; 
        cin >> group; 
        cout << "Введите "<< mark_size <<" оценки " << endl; 
        for (int i = 0; i < mark_size; i++) 
        cin >> marks[i];   
 
    }
void output(){
cout << "Фамилия " << name<<endl;
cout<< "Год " << year << endl;
cout << "Группа " << group<< endl; 
        cout  <<" Oценки " << endl; 
        for (int i = 0; i < mark_size; i++) 
        cout << marks[i]<<" "; 
        cout << endl <<"_______________" << endl;
}
 
};
 
STUDENT::STUDENT(){
    name="";
    year=0;
    group=0;
    for(int i=0; i<mark_size; ++i)marks[i]=0;
}
 
int main (){
SetConsoleCP (1251); SetConsoleOutputCP (1251);
const int students_size = 3; // количество студентов
STUDENT students[students_size];
for (int i = 0; i < students_size; i++)  // ввод информации        
         students[i].input(); 
cout<<"Введено:"<<endl<<endl;
for (int i = 0; i < students_size; i++)  // вывод информации        
         students[i].output(); 
        
for (int i=0; i<students_size-1; i++) {
     for (int j=0; j<(students_size-i); j++) {
       if ( students[j].year > students[j+1].year) {
     STUDENT Temp = students[j];
         students[j] = students[j+1];
         students[j+1] = Temp;
       }
     }
}
cout<<"Сортировано:"<<endl<<endl;
for (int i = 0; i < students_size; i++)  // вывод информации        
         students[i].output(); 
system("pause");
return 0;
}
Вот это что-то делает вроде. Если что, то второпях мог и соврать.
Kseni1995
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 29
09.05.2014, 12:33  [ТС]     Описать структуру с именем STUDENT. Исправить ошибки в коде #3
Извините, как сделать чтобы ваша программа выводилась на русском. Куда setlocale(LC_ALL,"Russian") вставить? У меня не получилось почему-то..
Dragon.007
 Аватар для Dragon.007
3 / 3 / 0
Регистрация: 06.04.2012
Сообщений: 29
09.05.2014, 12:54     Описать структуру с именем STUDENT. Исправить ошибки в коде #4
Kseni1995, в main вместо строк
C++
1
SetConsoleCP (1251); SetConsoleOutputCP (1251);
поставьте
C++
1
setlocale(LC_ALL,"Russian")
Должно получиться. И заголовочный файл locale не забудьте

и спасибо за ваш вопрос, он помог мне с моей проблемой и такое бывает...
Kseni1995
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 29
09.05.2014, 13:38  [ТС]     Описать структуру с именем STUDENT. Исправить ошибки в коде #5
Ваша программа работает, все так, но необходимо выводить упорядоченный по году список, но фамилий, начинающихся на букву В. Как это сделать?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,714
Записей в блоге: 3
09.05.2014, 14:10     Описать структуру с именем STUDENT. Исправить ошибки в коде #6
Цитата Сообщение от Kseni1995 Посмотреть сообщение
Ваша программа работает, все так, но необходимо выводить упорядоченный по году список, но фамилий, начинающихся на букву В. Как это сделать?
Kseni1995, я не вычитал про про букау В. Теперь вижу.
Для начала измените
static const int mark_size=4; // на 10 хотя бы
что бы вводя массив, завести туда 3-4 объекта на букву B.
Потом в цикле посчитайте сколько таких объектов. Это не потому, что Вы не помните сколько Вы их ввели, а потому, что в каждом сеансе их может быть от нуля до нового размера.
Зная сколько их создайте динамический массив объектов этого размера.
В цикле перепишите туда объекты на В.
Блок из пары вложенных циклов сортировки измените в том, что изменятся имена массива и его размера. Вывод результата тоже.
Kseni1995
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 29
09.05.2014, 14:31  [ТС]     Описать структуру с именем STUDENT. Исправить ошибки в коде #7
А вот вы в коде использовали сначала
Цитата Сообщение от IGPIGP Посмотреть сообщение
void input(){
потом
Цитата Сообщение от IGPIGP Посмотреть сообщение
void output(){
. Потом
Цитата Сообщение от IGPIGP Посмотреть сообщение
students[i].output()

А как это назвать, что там происходит,просто с input/output я не встречалась в С++
Dragon.007
 Аватар для Dragon.007
3 / 3 / 0
Регистрация: 06.04.2012
Сообщений: 29
09.05.2014, 14:36     Описать структуру с именем STUDENT. Исправить ошибки в коде #8
Kseni1995, это функции ^^ Почитайте немного здесь к примеру Функции .
Они описываются отдельно и вызываются из главной функции main =)
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,714
Записей в блоге: 3
09.05.2014, 17:37     Описать структуру с именем STUDENT. Исправить ошибки в коде #9
Kseni1995, если у вас MVS посмотрите здесь:
Замена If на Switch вызвала ошибки
там в конце после слов: "И да!"
Может понравится.
Kseni1995
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 29
09.05.2014, 17:53  [ТС]     Описать структуру с именем STUDENT. Исправить ошибки в коде #10
Цитата Сообщение от IGPIGP Посмотреть сообщение
Kseni1995, если у вас MVS посмотрите здесь:
Замена If на Switch вызвала ошибки
там в конце после слов: "И да!"
Может понравится.
Да, понравилось))) спасибо!
А вот то, что вы мне описывали выше про букву В, к сожалению не облегчило мне жизнь( Я гуманитарий, эх... Пыталась что-то сделать, но увы...
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,714
Записей в блоге: 3
09.05.2014, 18:48     Описать структуру с именем STUDENT. Исправить ошибки в коде #11
Цитата Сообщение от Kseni1995 Посмотреть сообщение
Я гуманитарий, эх...
Это же хорошо!
Я о себе мог бы и так сказать. А Вы скорее гуманитария, судя по нику.
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
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
struct STUDENT // структура STUDENT
{ 
    string name;
    int year;
    int group; 
    static const int mark_size=4;
    float marks[mark_size];
    STUDENT();
    STUDENT(const STUDENT &rhs);///// тоже надо добавить, забыл сказать)))
    void input(){
cout << "Введите фамилию студента " << endl; 
        cin >>name;
cout<<" Год рождения "<<endl;
        cin>> year;
cout << "Введите номер группы " << endl; 
        cin >> group; 
        cout << "Введите "<< mark_size <<" оценки " << endl; 
        for (int i = 0; i < mark_size; i++) 
        cin >> marks[i];
    }
 
void output(){
cout << "Фамилия " << name<<endl;
cout<< "Год " << year << endl;
cout << "Группа " << group<< endl; 
        cout  <<" Oценки " << endl; 
        for (int i = 0; i < mark_size; i++) 
        cout << marks[i]<<" "; 
        cout << endl <<"_______________" << endl;
}
};
 
STUDENT::STUDENT(){
    name="";
    year=0;
    group=0;
    for(int i=0; i<mark_size; ++i)marks[i]=0;
}
 
STUDENT::STUDENT(const STUDENT &rhs){//////////
    name=rhs.name;
    year=rhs.year;
    group=rhs.group;
    for(int i=0; i<mark_size; ++i)marks[i]=rhs.marks[i];
 
}//////////
 
int main (){
SetConsoleCP (1251); SetConsoleOutputCP (1251);
const int students_size = 6; // количество студентов
STUDENT student[students_size];//было students))
for (int i = 0; i < students_size; i++)  // ввод информации        
         student[i].input(); //
cout<<"Введено:"<<endl<<endl;
for (int i = 0; i < students_size; i++)  // вывод информации        
         student[i].output();
//////////////////////////////////////////
int count_of_B = 0;
for (int i = 0; i < students_size; i++)
if(student[i].name.c_str()[0] == 'В') count_of_B ++ ;
 
STUDENT *students = new STUDENT[count_of_B];
 
int ind =0;
for (int i = 0; i < students_size; i++)
if(student[i].name.c_str()[0] == 'В') students[ind ++ ] = student[i]; 
/////////////////////////////////////////////
//дальше имя students нам уже подходит а вот размер
//переписываем ниже все students_size на count_of_B))      
for (int i=0; i<count_of_B-1; i++) {
     for (int j=0; j<(count_of_B-i); j++) {
       if ( student[j].year > student[j+1].year) {//
     STUDENT Temp = student[j];//
         students[j] = students[j+1];
         students[j+1] = Temp;
       }
     }
}
cout<<"Сортировано:"<<endl<<endl;
for (int i = 0; i < count_of_B; i++)  // вывод информации        
         students[i].output(); 
system("pause");
return 0;
}
ловите.
И с Праздником!
Kseni1995
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 29
09.05.2014, 20:16  [ТС]     Описать структуру с именем STUDENT. Исправить ошибки в коде #12
Спасибо огромное! Буду разбираться теперь.
И вас с праздником!

Добавлено через 1 час 14 минут
Ввожу код, но выдает просто то, что я ввела, без сортировки...не знаю, что такое..
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,714
Записей в блоге: 3
09.05.2014, 21:28     Описать структуру с именем STUDENT. Исправить ошибки в коде #13
Цитата Сообщение от Kseni1995 Посмотреть сообщение
Ввожу код, но выдает просто то, что я ввела, без сортировки...не знаю, что такое..
Не обращайте внимания. Это не главное.
Картинка в один экран не помещается поэтому я даю две перекрывающихся на "Введено:"
Результат сортировки после слова "Сориторовано:"
Миниатюры
Описать структуру с именем STUDENT. Исправить ошибки в коде   Описать структуру с именем STUDENT. Исправить ошибки в коде  
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,714
Записей в блоге: 3
09.05.2014, 23:44     Описать структуру с именем STUDENT. Исправить ошибки в коде #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от IGPIGP Посмотреть сообщение
C++
1
//дальше имя students нам уже подходит а вот размер
Я написал что имя students дальше изменять не нужно, а сейчас заметил, что автоматически его таки изменил внутри цикла сортировки. Вставьте вот этот кусочек вместо соответствующего фрагмента.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (int i = 0; i < students_size; i++)
if(student[i].name.c_str()[0] == 'В') students[ind ++ ] = student[i]; 
/////////////////////////////////////////////
//дальше имя students нам уже подходит а вот размер
//переписываем ниже все students_size на count_of_B))      
for (int i=0; i<count_of_B-1; i++) {
     for (int j=0; j<(count_of_B-i); j++) {
       if ( students[j].year > students[j+1].year) {//
     STUDENT Temp = students[j];//
         students[j] = students[j+1];
         students[j+1] = Temp;
       }
     }
}
cout<<"Сортировано:"<<endl<<endl;
for (int i = 0; i < count_of_B; i++)  // вывод информации        
         students[i].output(); 
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2014, 00:14     Описать структуру с именем STUDENT. Исправить ошибки в коде
Еще ссылки по теме:

C++ Описать структуру с именем STUDENT
Описать структуру с именем Student C++
C++ Описать структуру с именем Student

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

Или воспользуйтесь поиском по форуму:
Kseni1995
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 29
10.05.2014, 00:14  [ТС]     Описать структуру с именем STUDENT. Исправить ошибки в коде #15
Все понятно, спасибо вам!
Yandex
Объявления
10.05.2014, 00:14     Описать структуру с именем STUDENT. Исправить ошибки в коде
Ответ Создать тему
Опции темы

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