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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2012, 00:56   #1
erfo
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 16
По умолчанию [C++]: сортировка методом вставки

В файле input.txt содержаться сведения о группе студентов в формате:
номер группы;
запись о каждом студенте группе содержит следующие сведения: фамилия, имя, отчество, год рождения, оценки по 5 предметам.
Переписать данные файла input.txt в файл output.txt, отсортировав их по убыванию суммы оценок методом вставки(сумму оценок вывести в файл output.txt для каждого студента).

Код:
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
 
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
 
struct mas
{string fam, name, secondname;
int ses[5];
double key; //сумма оценок
void print();
};
void mas::print() //вывод данных в выходной поток
{
void sort(mas *a, int n)
mas temp;
int i,j;
for (i=2; i<=n; i++)
{j=i;
while (a[j].key<a[j-1].key)
{temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
j--;}}
int main() {
int n=0,m i;
mad stud [20];
if (!in)cout<<"Ошибка откр.\n";
else
{in>>m;
while(in.peek()!=EOF)
{in>>stud[n].fam;
in>>stud[n].name;
in>>stud[n].secondname;
stud[n].key=0;
for (i=0; i<5; i++)
{
in>>stud[n].ses[i];
stud[n].key+=std[n].ses[i];
}
n++;
}
sort(stud,n);
 
out<<m<<endl;
for (i=0; i<n; i++)
stud[i].print();
}
in.close();
out.close();
return 0;
}
Цитата:
prog.cpp: In member function ‘void mas:rint()’:
prog.cpp:20: error: expected initializer before ‘mas’
prog.cpp:22: error: ‘n’ was not declared in this scope
prog.cpp:24: error: ‘a’ was not declared in this scope
prog.cpp:25: error: ‘temp’ was not declared in this scope
prog.cpp:29: error: a function-definition is not allowed here before ‘{’ token
prog.cpp:56: error: expected `}' at end of input
п.с.:вместо смайла там буква 'p'

Последний раз редактировалось Stilet; 22.05.2012 в 07:43.
erfo вне форума Ответить с цитированием
Старый 22.05.2012, 07:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
void mas:rint() //вывод данных в выходной поток
{
void sort(mas *a, int n)
Это что? В Си нельзя вкладывать функции в функции.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2012, 16:06   #3
erfo
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это что? В Си нельзя вкладывать функции в функции.
Знаю. Это был очень сырой код.
erfo вне форума Ответить с цитированием
Старый 23.05.2012, 16:13   #4
erfo
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 16
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
 
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
 
struct mas
{string fam, name, secondname;
int ses[5];
double key; //сумма оценок
void print();
};
void mas::print() //вывод данных в выходной поток
{out<<setw(12)<<left<<fam<<setw(10)<<name<<setw(15)<<secondname;
for (int i=0; i<5; i++)
out<<setw(3)<<ses[i];
out<<setw(5)<<key<<endl;
}
void sort(mas *a, int n)
{mas temp;
int i,j;
for (i=2; i<=n; i++)
{j=i;
while (a[j].key<a[j-1].key)
{temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
j--;}}
int main() {
int n=0,m i;
mad stud [20];
if (!in)cout<<"Ошибка откр.\n";
else
{in>>m;
while(in.peek()!=EOF)
{in>>stud[n].fam;
in>>stud[n].name;
in>>stud[n].secondname;
stud[n].key=0;
for (i=0; i<5; i++)
{
in>>stud[n].ses[i];
stud[n].key+=std[n].ses[i];
}
n++;
}
sort(stud,n);
 
out<<m<<endl;
for (i=0; i<n; i++)
stud[i].print();
}
in.close();
out.close();
return 0;
}

сообщения компилятора
prog.cpp: In function ‘void sort(mas*, int)’:
prog.cpp:33: error: a function-definition is not allowed here before ‘{’ token
prog.cpp:60: error: expected `}' at end of input

Последний раз редактировалось erfo; 23.05.2012 в 17:55.
erfo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы . Сортировка методом вставки. Не могу найти ошибку Azzzza Общие вопросы C/C++ 0 05.05.2011 18:31
Массивы в С++. Сортировка методом вставки Azzzza Помощь студентам 0 05.05.2011 14:40
И снова я. Сортировка методом вставки! xitrec1zaraza Общие вопросы C/C++ 3 07.12.2010 09:48
Сортировка двумерного массива методом вставки. Pascal xXxalexXx Помощь студентам 0 25.11.2010 20:03
Сортировка массива методом линейной вставки☺ m-o-r-t-r-o-m Фриланс 6 04.11.2009 14:59