Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 03:38   #1
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию C++. Записи.

Текст задания:

1.Описать структуру с именем STUDENT, содержащую следующие поля:
NAME - фамилия и инициалы;
GROUP -номер группы;
SES - успеваемость (массив из пяти элементов).
2.Написать программу, выполняющую следующие действия:
1) Ввод с клавиатуры данных в массив STUD1, состоящий из десяти структур типа STUDENT;
2) Записи должны быть упорядочены по возрастанию
содержимого поля GROUP;
3) Вывод на дисплей фамилий и номеров групп для всех студентов, включенных в массив, если средний балл студента больше 4,0;
если таких студентов нет , вывести соответствующее сообщение.

Написал на Pascal, а вот на С++ не могу перевести, только начинаю с
С++ работать.


Помогите плиз Переделать в С++...

Код на Pascal:

Код:
program laba_2;
uses crt;
const N=10;
type
student=record;
  name:string;
  group:integer;
  ses:array[1..5] of integer;
end;
var
 stud1:array[1..N] of student;
procedure input;
var
 i,j:integer;
begin
    for i:=1 to N do
    begin
        writeln('Введите фамилию и инициалы');
        read(stud1[i].name);
        writeln('Введите номер группы');
        read(stud1[i].group);
        for j:=1 to 5 do
         begin
          writeln('Введите успеваемость студента из 5 оценок');
          read(stud1[i].ses[j]);
         end;
    end;
end;

procedure sort;
var
i,j,tmp:integer;
begin
for i:=n-1 downto 1 do
    for j:=1 to 5 do
        if stud1[j].group>stud1[j+1].group then
        begin
            tmp:=stud1[j].group;
            stud1[j].group:=stud1[j+1].group;
            stud1[j+1].group:=tmp;
        end;
end;

procedure output;
var
 i,k,j:integer;
 s:array[1..N] of real;
 r:real;
begin
 for i:=1 to N do
  s[i]:=0;
   for j:=1 to 5 do
    s[i]:=stud1[i].ses[j]+s[i];
    k:=0;
   for i:=1 to N do
    if s[i]/5>4 then
     begin
      writeln('Фамилии студентов у которых средний балл > 4.0');
      writeln('Искомый студент:');
      writeln('Фамилия студента: ', stud1[i].name);
      writeln('Группа студента: ', stud1[i].group);
      for i:=1 to N do
       writeln('Средний балл студента: ', s[i]);
      inc(k);
     end;
    if k=0 then writeln('Таких студентов нет.');
end;
begin
    clrscr;
    input;
    sort;
    output;
    readkey;
end.
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 03.11.2009, 23:12   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Цитата:
student=record;
name:string;
group:integer;
ses:array[1..5] of integer;
end;
Цитата:
struct student
{
string name;
int group;
int ses[5];//[0;4]
};
//----------------------------
Код:
procedure sort;
Код:
void  sort(){}
//----------------------------
Цитата:
writeln('Средний балл студента: ', s[i]);
Цитата:
std::cout<<"Средний балл студента: "<<s[i]<<endl;
//----------------------------
Код:
inc(k);
Код:
k++;
//----------------------------
Код:
const N=10;
Код:
const int N=10;  OR #define N 10
И так по аналогии.

Последний раз редактировалось Levsha100; 03.11.2009 в 23:16.
Levsha100 вне форума Ответить с цитированием
Старый 05.11.2009, 00:27   #3
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Код:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;

// Задание:
/*ВАРИАНТ 1
1.Описать структуру с именем STUDENT ,содержащую следующие поля:
·	NAME - фамилия и инициалы;
·	GROUP -номер группы;
·	SES - успеваемость (массив из пяти элементов).
2.Написать программу , выполняющую следующие действия:
·	ввод с клавиатуры данных в массив STUD1,состоящий из десяти струк-
тур типа STUDENT;записи должны быть упорядочены по возрастанию 
содержимого поля GROUP;
·	вывод на дисплей фамилий и номеров  групп для всех студентов , вклю-
ченных в массив , если средний балл студента больше 4,0;
·	если таких студентов нет , вывести соответствующее сообщение.*/

struct student ()
{
string name;
int group;
int ses[5];//[0;4]
};

void  input()
{
	for (int i = 1; i < n; i++) {
		cout<<endl<<"Vvedite FIO ";
		cin>>stud1[i].name;
		cout<<endl<<"Vvedite nomer gruppbl ";
		cin>>stud1[i].group;
		for (int j = 1; j<6; о++) {
			cout<<endl<<"Vvedite yspevaemost iz 5 ozenok ";
			cin>>stud1[i].name;
		}
	}
	return;
}

void sort;
{
	int tmp;
	for (int i=n-1; i > n; i--) {
		for (int j = 1; j<6; о++) {
			if stud1[j].group>stud1[j+1].group {
				tmp = stud1[j].group;
				stud1[j].group = stud1[j+1].group;
				stud1[j+1].group = tmp;
			}
		} 
	}
	return;
}

void  output()
{
	for (int i = 1; i < n; i++) { 
		s[i] = 0;}
		for (int j = 1; j < 6; j++) {
			s[i] = stud1[i].ses[j]+s[i];}
		k=0;
	for (int i = 1; i < n; i++) { 
		if s[i]/5>4 {
			cout<<endl<<"FIO y kotopblx cp 6all > 4:";
			cout<<endl<< stud1[i].name;
			cout<<endl<< stud1[i].group;
			for (int j = 1; j < 6; j++){
				cout<<endl<<s[i];
			}
			k++;
		}
	if k=0 cout<<endl<<"Takix studentov HeT ";
	}
	return;
}

int main()
{
	input();
	sort();
	output();
	system("pause");
	return 0;
}
вот так? и в чём тут ошибки?
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 05.11.2009, 09:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вот так? и в чём тут ошибки?
Запусти прогу и узнай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2009, 13:41   #5
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

ошибок то немеренно, в основном жалуется на то stud1 не определена, но как сделать в си вот это:

Код:
stud1:array[1..N] of student;
- Pascal

я не догоняю=(....
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 05.11.2009, 13:46   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
student stud1[n]
и учти что начинаться будет с нуля.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2009, 16:27   #7
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

Код:
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <time.h>
#include <string>


// Задание:
/*ВАРИАНТ 1
1.Описать структуру с именем STUDENT ,содержащую следующие поля:
·	NAME - фамилия и инициалы;
·	GROUP -номер группы;
·	SES - успеваемость (массив из пяти элементов).
2.Написать программу , выполняющую следующие действия:
·	ввод с клавиатуры данных в массив STUD1,состоящий из десяти струк-
тур типа STUDENT;записи должны быть упорядочены по возрастанию 
содержимого поля GROUP;
·	вывод на дисплей фамилий и номеров  групп для всех студентов , вклю-
ченных в массив , если средний балл студента больше 4,0;
·	если таких студентов нет , вывести соответствующее сообщение.*/

struct student
{
int name;
int group;
int ses[5];//[0;4]
};

int main()
{
	
	const int n=3;
	
	int s[n];
	int k = 0;
	
	student stud1[n];
	
	for (int i = 0; i < n; i++) {
		std::cout << "Vvedite FIO " << std::endl;
		std::cin >> stud1[i].name;
		std::cout << "Vvedite nomer gruppbl "<< std::endl;
		std::cin >> stud1[i].group;
		for (int j = 0; j<5; j++) {
			std::cout << "Vvedite yspevaemost studenta "<<j+1<<"-ого predmeta "<< std::endl;
			std::cin >> stud1[i].ses[j];
		}
	}
	 for (int i = 0; i < n; i++) { 
		 s[i] = 0;
		for (int j = 0; j < 5; j++) {
			s[i] = stud1[i].ses[j]+s[i];}}
	 std::cout << "Studentbl y kotopblx cp. 6all > 4:\n" << std::endl;
	for (int i = 1; i < n; i++) {
		if ((s[i]/5)>4) {
			k++;
			std::cout << "FIO: " << stud1[i].name << "\n"<< std::endl;
			std::cout << "Group: " << stud1[i].group << "\n"<< std::endl;
			std::cout << "Cp. 6all sessii: " << s[i] << "\n" << std::endl;
		}
	if (k=0) std::cout << "Takix studentov HeT " << std::endl;
	}

	system("pause");
}
Осталась одна проблема, когда полю name задаешь тип данных string,С++ отказывается работать. Как задать name значение string?
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"

Последний раз редактировалось bpystep; 09.11.2009 в 00:32.
bpystep вне форума Ответить с цитированием
Старый 09.11.2009, 00:20   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Осталась одна проблема, когда полю name задаешь тип данных string,С++ отказывается работать. Как задать name значение string?
покажите пример ошибки(с кодом)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.11.2009, 00:28   #9
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Код:
#include <string>
поставь после
Код:
#include <time.h>
Levsha100 вне форума Ответить с цитированием
Старый 09.11.2009, 00:28   #10
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

вот так выглядит поле ошибок, если написать "string name":
1>c:\users\6pystep\documents\visua l studio 2008\projects\ясмячсм\ясмячсм\ясмяч см.cpp(23) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "name"
1>c:\users\6pystep\documents\visua l studio 2008\projects\ясмячсм\ясмячсм\ясмяч см.cpp(23) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\6pystep\documents\visua l studio 2008\projects\ясмячсм\ясмячсм\ясмяч см.cpp(23) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\6pystep\documents\visua l studio 2008\projects\ясмячсм\ясмячсм\ясмяч см.cpp(41) : error C2039: name: не является членом "student"
1> c:\users\6pystep\documents\visual studio 2008\projects\ясмячсм\ясмячсм\ясмяч см.cpp(22): см. объявление 'student'
1>c:\users\6pystep\documents\visua l studio 2008\projects\ясмячсм\ясмячсм\ясмяч см.cpp(66) : error C2039: name: не является членом "student"
1> c:\users\6pystep\documents\visual studio 2008\projects\ясмячсм\ясмячсм\ясмяч см.cpp(22): см. объявление 'student'
1>Журнал построения был сохранен в "file://c:\Users\6PySTeP\Documents\Visual Studio 2008\Projects\ясмячсм\ясмячсм\Debug \BuildLog.htm"
1>ясмячсм - ошибок 5, предупреждений 0


Ну а если прописать "int name", то без ошибок...

Ставил
Код:
#include <string>
- не помогает!
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"

Последний раз редактировалось Stilet; 09.11.2009 в 09:55.
bpystep вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
записи paladinn Помощь студентам 1 14.01.2009 20:23
Записи ReM Паскаль, Turbo Pascal, PascalABC.NET 2 15.10.2008 08:50
Записи Rio309 Помощь студентам 1 15.03.2008 22:23
записи 11111 Паскаль, Turbo Pascal, PascalABC.NET 2 29.11.2007 15:28
Записи zzzzz Помощь студентам 1 25.05.2007 16:26