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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
#1

Подредактируйте программу. - C++

09.02.2012, 17:56. Просмотров 561. Ответов 12
Метки нет (Все метки)

Добрый всем вечер! Хочу помочь одному человеку написать программку на СИ++. Но наткнулся на непонятную ошибку Программка успешно компилируется, без каких-либо ошибок.
Вот задание:
Для получeния местa в общежитии фoрмируется списoк студентoв, котoрый включает: Ф. И. О. студeнтa, нoмeр группы (буква и че-тыре цифры), срeдний балл, доход на oднoгo членa сeмьи. Обще-житие в первую oчередь предoставляется тем студeнтам, у которых доход на члена семьи меньше двух минимальных зaрплат, затем остaльным в порядке уменьшения среднего бaлла. Для описания списка студентов в программе необходимo использовать тип данных структура. Для хрaнения списка студентов создать бинарный файл, oриентированный на тип данных структура. Предусмотреть в прoграмме прoсмотр бинарногo файла и выполнить его обработку: вывести списoк очереднoсти предоставления мест в общежитии.

Заранее скажу, я НЕ хочу чтобы вы писали мне задачу. Я попытаюсь это сделать сам. Подкорректируйте просто =)
вот мой код:
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
#include <iostream>
#include <iomanip>          
using namespace std;      
int main()      
{      
          struct studenti
         {      
          char *fio;
          char *number;    
          int sredniybal;
          int dohod;     
         };      
         cout << "Vvedite kov-vo studentov: ";      
         int n;      
         cin >> n;      
         studenti* inf;      
         inf = new studenti[n];      
       for(int i = 0; i < n; i++)      
         {      
       cout << "Vvedite F.I.O.: ";
       inf[i].fio = (char *)malloc(128);
       cin >> inf[i].fio;      
       cout << "Vvedite nomer: ";
       inf[i].fio = (char *)malloc(128);
       cin >> inf[i].number;     
       cout << "Vvedite srednij bal: ";
       cin >> inf[i].sredniybal;
       cout << "Vvedite dohod: ";
       cin >> inf[i].dohod;      
         }      
       for(int i = 0; i < n; i++)
         {      
           cout << inf[i].fio << '\t' 
                << inf[i].number << '\t' 
                << inf[i].sredniybal << '\t' 
                << inf[i].dohod << endl;      
         }          
      system("pause");
        return 0;      
}
Только не кидайте в меня камнями, я только начинающий программист!

Добавлено через 1 минуту
Ой, совсем забыл...кому не сложно, объясните как связать все это с бинарным файлом?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2012, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подредактируйте программу. (C++):

Подредактируйте программу (структуры). - C++
Добрый день, уважаемые форумчане. На верное я как и многие здесь уже достали вас своими вопросами, понимаю, но все так =) если ко не сложно...

Подредактируйте программу - Turbo Pascal
Что нужно изменить что бы в произведении получалось нормальное число а то элементы массива все дробные а получается в произведении целое...

Подредактируйте пожалуйста программу - Pascal
Короче вот задание Дан двухмерный массив.Определить номер 1 столбца в котором нет отрицательных чисел.. Решить методом break 1)Ввод...

Подредактируйте код. - C#
Я написал код, и сделал что бы выводило в MessageBox. А мне нужно что бы удаляло с richTextBox'a, я запутался окончательно так как любые...

неправильно вычислен факториал, подредактируйте - Turbo Pascal
Вычислить на ЭВМ значение суммы членов ряда с заданной точностью 8.На печать вывести значение суммы и число членов ряда, вошедших в сумму ...

подредактируйте прогу, по теме: файлы - Delphi
Дан текстовый файл. Удалить из него первую строку var s:string; t:textfile; begin AssignFile (t,'input.txt'); reset (t);...

12
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 18:28 #2
Цитата Сообщение от Вася1q Посмотреть сообщение
кому не сложно, объясните как связать все это с бинарным файлом?
Юрец, в плюсах поток чтения ifstream поток записи ofstream
хочешь бинарку ставь флаг ios::binary
вот например открытие бинарного потока записи
C++
1
ofstream ofs("binary.txt",ios::binary);
И да не забывай для потоков подключить <fstream> а то компилятор скажет что ofstream и ifstream не объявлены

Я так и не понял у тебя вроди был класс пациентов тут файл со студентами, эт всё одно задание или два разных???Давай излагай задание
1
Серега_EX
15 / 15 / 0
Регистрация: 09.02.2012
Сообщений: 30
09.02.2012, 18:30 #3
в структуре char* использовать не желательно, после того как запишешь в файл ты не будешь знать сколько байтов тебе считывать на одного студента, причем что кол-во информации на каждого будет разная, для записи файлов используй fstream и функции read и write
0
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 18:33 #4
Цитата Сообщение от Вася1q Посмотреть сообщение
inf[i].fio = (char *)malloc(128);
- память в плюсах выделяется оператором new, такс лучше напишу тебе кое какой код...
1
Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
09.02.2012, 18:36  [ТС] #5
А мэлок это в чистом СИ да?
0
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
09.02.2012, 18:40 #6
Цитата Сообщение от Серега_EX Посмотреть сообщение
в структуре char* использовать не желательно, после того как запишешь в файл ты не будешь знать сколько байтов тебе считывать на одного студента
ну не все так плохо. можно же писать в файл длину фио блока, либо установить фиксированный максимальный размер, например так

Код
   N   |   фио   |  группа  |  балл  |  доход
------- --------- ---------- --------- --------
1 байт |  N байт |  5 байт  | 1 байт | 4 байт
или так

Код
    фио  |  группа  |  балл  |  доход
--------- ---------  -------- --------
128 байт |  5 байт  | 1 байт | 4 байт
0
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 18:49 #7
Вася1q, лови
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
struct student
{      
    char fio  [32];//ÔÈÎ
    char group[16];//ÒåêñòîâГ*Гї Г*áðèâåГ*ГІГіГ°Г* ãðóïïû    
    int sredniybal;//
    int dohod;     
};   
 
int main()
{
    long i, n;
    cout<<"enter number of students :  ";
    cin>>n;
    student * inf = new student[n];
    for(i = 0; i < n; i++)
    {
        cin.ignore();//Ïðîïóñòèëè \n îò ââîäГ*
        cout << "Vvedite F.I.O.:\n";
        cin.getline(inf[i].fio,32);//Г’Г*ГЄ ìîæГ*Г® Г±Г·ГЁГІГ*ГІГј ââîä Г± ïðîáåëГ*ìè
        cout << "Vvedite gruppy: ";
        cin.getline(inf[i].group,16);
        cout << "Vvedite srednij bal: ";
        cin >> inf[i].sredniybal;
        cout << "Vvedite dohod: ";
        cin >> inf[i].dohod;
    }
    for(i = 0; i < n; i++)
    {
        cout << inf[i].fio   <<" " 
             << inf[i].group<<" " 
             << inf[i].sredniybal<<" " 
             << inf[i].dohod<< endl;
    }
    system("pause");
    delete [] inf;
    return 0;
}
1
Миниатюры
Подредактируйте программу.  
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 18:54 #8
Цитата Сообщение от Вася1q Посмотреть сообщение
Ой, совсем забыл...кому не сложно, объясните как связать все это с бинарным файлом?
Перед циклом
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ofstream ofs("binary.txt",ios::binary);
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 0; i < n; i++)
* * * * {
* * * * * * * * cout << inf[i].fio* * * *<<" "
* * * * * * *<< inf[i].group<<" "
* * * * * * *<< inf[i].sredniybal<<" "
* * * * * * *<< inf[i].dohod<< endl;
ofs << inf[i].fio* * * *<<" "
* * * * * * *<< inf[i].group<<" "
* * * * * * *<< inf[i].sredniybal<<" "
* * * * * * *<< inf[i].dohod<< endl;
* * * * }
ofs.close();//После цикла

Добавлено через 2 минуты
Возможно лучше ещё перед циклом в файл записать число студентов, тобишь
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ofstream ofs("binary.txt",ios::binary);
ofs<<n<<endl;
for(i = 0; i < n; i++)
        {
                cout << inf[i].fio       <<" " 
             << inf[i].group<<" " 
             << inf[i].sredniybal<<" " 
             << inf[i].dohod<< endl;
               //вот пошла запись в файл
             ofs << inf[i].fio       <<" " 
             << inf[i].group<<" " 
             << inf[i].sredniybal<<" " 
             << inf[i].dohod<< endl;
        }
ofs.close();
1
Вася1q
21 / 21 / 0
Регистрация: 13.09.2011
Сообщений: 311
09.02.2012, 18:57  [ТС] #9
Спасибо)) от всей души!
0
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
09.02.2012, 18:57 #10
-=ЮрА=-, форматированный i/o и бинарные файлы говорите... как мило
0
-=ЮрА=-
09.02.2012, 21:37
  #11

Не по теме:

retmas,

Цитата Сообщение от retmas Посмотреть сообщение
форматированный i/o и бинарные файлы говорите
- не нравится что ofs.write не использовал, ну дык и человек только осваивает чтение/запись, я ему просто голову вообще забью. PS:Не нужно думать, что я какой-нибудь профан, достало уже...

0
retmas
09.02.2012, 22:48
  #12

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
не нравится что ofs.write не использовал, ну дык и человек только осваивает чтение/запись, я ему просто голову вообще забью
скорее вы ему забьете голову тем, что использовать не следует. не думаю, что он будет в восторге в один прекрасный момент от непонимания, почему его >>/<< "не работают как надо". а если уж ТС полез в бинарные форматы, то ему следует осознавать, что это такое и "с чем его едят"

0
-=ЮрА=-
Заблокирован
Автор FAQ
09.02.2012, 23:33 #13
retmas, давай не будешь учить меня что делать и как преподносить тот или иной аспект людям!Хочешь показать знания напиши код и укажи что именно осталось за кадром...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2012, 23:33
Привет! Вот еще темы с ответами:

Оцените или подредактируйте сборку стоимостью около 40 000 рублей - Рабочая станция
Сборочка во вложении. Город Киров - Технопоинт. Сразу вопрос: а винду где брать, покупать чтоли? *пека*. Или как вы её ставите? Тянуть...

Составить блок-схему и программу вычисления значения функции + написать программу - Pascal
Прошу решить в качестве проверки. Нужно сдать в понедельник. Буду очень благодарен! Заранее СПАСИБО!!! Номера: 7, 8, 17 (а)

Реализация продления оплаты за программу (помесячная оплата подписки на программу) - MySQL
Создал прогу, теперь мне надо её продавать, но так что-бы она работала месяц(Помесячная плата) Возникла трудность с вводом пользователя в...

Разработать программу и составить программу вычисления и вывода таблицы значений - Turbo Pascal
Разработать алгоритм и составить программу вычисления и вывода на дисплей таблицы значений сумм S=\sum_{n=1}^{n}\frac{{(1+x)}^{2*k}}{k+x} ...


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
09.02.2012, 23:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru