Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица записи типа имя, пол, доход. C++ 
:(
    Опции темы
Гость_Vitek
Дата 6.5.2005, 15:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет! Не могли бы вы мне помочь еще разок?! smile
Дали задание по информатики на C++:
Таблица записи типа имя, пол(буква f или m), доход,
а)вывести таблицу в исходном виде и с колонкой налогов(13% от дохода),
б)найти самую богатую женщину,
в)отсортировать по величине дохода.

и дали что-то типа шаблона что ли... не знаю, сказали что вот это все мне поможет:

1)
Код

struck stud{char name[20], group[10];
int mark[3];};


2)
Код

void enter (stud & x){......}
void print (stud x){......}
void enter (stud x[], int & n){.....}
void print (stud x[],int n){......}


3)
Код

void main(){stud my[40]; int;
do{........
        case '1':enter(my, n); break;
        case '2': print(my, n); break;
        case 27: exit(0);} getch();} while(1);}


Потом еще во это дали:
Код

case '3': cout<<"Буква:"; cin>>c;
bukva(c, my, n, his, k); print(his, k); break:


И вот это:
Код

void bukva(char b, stud x[]
int n, stud y[], int & k)
{int i; k=0;
for(i=0; i<n; i++)
if(x[i].name[0]==b)
{y[m]=x[i]; m++;}
}


Вот, а я даже не представляю о чем тут речь идет! smile Помогите мне ПЛИЗ!
  Вверх
Guest
Дата 15.5.2005, 15:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











#include <iostream.h>
#include <conio.h>

struct info
{
char name[20];
int man;
int money;
};

void input(info &record, int &i)
{

cout << "input name: "; cin >> record.name;

cout << "input sex: ";
char sex;
cin >> sex;
record.man = (sex == 'm' || sex == 'M')? 1: 0;

cout << "input money: "; cin >> record.money;
i++;
}
void output(info records[], int count, int _13 = 0)
{
for (int i=0; i< count; ++i)
{
cout << records[i].name << '\t'
<< (records[i].man ? 'M': 'F') << '\t'
<< records[i].money << '\t';
if (_13)
{
cout << 0.13 * records[i].money;
}
cout << endl;

}
}
void find(info records[], int count)
{
int max = records[0].money, i;
for (i = 0; i < count; ++i)
{
if (records[i].man) continue;
if (records[i].money > max)
{
max = records[i].money;
}
}
for (i = 0; i < count; ++i)
{
if (records[i].man) continue;
if (records[i].money != max) continue;
output(records+i, 1);
}
}
void sort(info records[], int count)
{
for (int i = 0; i < count; ++i)
{
int min = i;
for (int j = i; j < count; ++j)
{
if (records[j].money < records[min].money)
min = j;
}
info temp = records[i];
records[i] = records[min];
records[min] = temp;
}
}


void main()
{
info table[20];
int cur = 0;
int max = sizeof(table)/sizeof(*table);

for(;;)
{
cout << ">>" << flush;
char key = getch();
if (key == 27) break;
cout << key << endl << flush;
switch (key)
{
case '1':
if (cur < max)
input(table[cur], cur);
else
cout << "error: input max record" << endl;
break;
case '2':
output(table, cur);
break;
case '3':
output(table, cur, 13);
break;
case '4':
find(table, cur);
break;
case '5':
sort(table, cur);
output(table, cur);
break;
}
}
}
  Вверх
Guest
Дата 15.5.2005, 21:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ой, забыл код поставить... smile
  Вверх
Guest
Дата 18.5.2005, 17:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Добрых суток, господа!
Мог бы кто-нибудь подробно объяснить мне вот эту часть программы???

Код

void input(info &record, int &i) 
{ 
    
    cout << "input name: "; cin >> record.name; 
    
    cout << "input sex: "; 
    char sex; 
    cin >> sex; 
    record.man = (sex == 'm' || sex == 'M')? 1: 0; 

    cout << "input money: "; cin >> record.money; 
    i++; 
} 
void output(info records[], int count, int _13 = 0) 
{ 
    for (int i=0; i< count; ++i) 
    { 
        cout << records[i].name << '\t' 
             << (records[i].man ? 'M': 'F') << '\t' 
             << records[i].money << '\t'; 
        if (_13) 
        { 
             cout << 0.13 * records[i].money; 
        } 
        cout << endl; 

    } 
} 

void main() 
{ 
    info table[20]; 
    int cur = 0; 
    int max = sizeof(table)/sizeof(*table); 

    for(;;) 
    { 
        cout << ">>" << flush; 
        char key = getch(); 
        if (key == 27) break; 
        cout << key << endl << flush; 
        switch (key) 
        { 
            case '1': 
                if (cur < max) 
                    input(table[cur], cur); 
                else 
                    cout << "error: input max record" << endl; 
                break; 
            case '2': 
                output(table, cur); 
                break; 
            case '3': 
                output(table, cur, 13); 
                break; 
            
        } 
    } 
}


Эта прога выводит таблицу в исходном виде и с колонкой налогов(13% от дохода).
Дело в том, что мне ее в пятницу сдавать уже надо, а я никак не успеваю с ней разобраться! Мне нужно будет преподавателю объяснить буквально каждую строчку, каждый значек, каждую закорючку...
Господа, пожалуйста, помогите бедному студенту сдать программу! Я буду вам чрезмерно благодарен!!!!!

С "void find" и "void sort" я полностью разобрался! Разбирался 3 дня...
То есть очень тяжело мне это дается! Кто разбирается, будьте добры, помогите!
  Вверх
Yanis
Дата 18.5.2005, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 4
Всего: 111



Выложи всю программу, а в ней коментариями пометь строчки которые тебе не понятны. С миру по нитке объяснение найдётся.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Фасолька
Дата 18.5.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 18.5.2005

Репутация: нет
Всего: нет



молодец витек=) это староста твоя! удачи! smile
PM MAIL   Вверх
Guest
Дата 18.5.2005, 21:52 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

#include <iostream.h>
#include <conio.h>

struct info
{
    char name[20];
    int  man;
    int  money;
};

void input(info &record, int &i) // че за input? и что значит то, что в скобках?
{
    
    cout << "input name: "; cin >> record.name; // что значит record.name?
    
    cout << "input sex: "; 
    char sex;
    cin >> sex;
    record.man = (sex == 'm' || sex == 'M')? 1: 0;

    cout << "input money: "; cin >> record.money; // это соответственно тоже не понятно. че за record.money?
    i++;
}
void output(info records[], int count, int _13 = 0) // вообще вся строчка непонятна!
{
    for (int i=0; i< count; ++i)  // непонятно то, что в скобках
    {
        cout << records[i].name << '\t'  // вся строка непонятна!
             << (records[i].man ? 'M': 'F') << '\t'  // вся строка непонятна
             << records[i].money << '\t';  // вся строка не понятна
        if (_13) // здень непонятно, что значит "_"?
        {
             cout << 0.13 * records[i].money;
        }
        cout << endl;

    }
}

void main()
{
    info table[20];
    int cur = 0;
    int max = sizeof(table)/sizeof(*table);

    for(;;)
    {
        cout << ">>" << flush;  // от сюда и до конца  вообще ниче не понимаю!
        char key = getch();
        if (key == 27) break;
        cout << key << endl << flush; 
        switch (key)
        {
            case '1': 
                if (cur < max) 
                    input(table[cur], cur); 
                else
                    cout << "error: input max record" << endl;
                break;
            case '2': 
                output(table, cur);
                break;
            case '3': 
                output(table, cur, 13);
                break;
            
        }
    }
}


  Вверх
Guest
Дата 19.5.2005, 17:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди! Мне завтра уже сдавать прогу надо! Объясните мне ПЛИИИЗ вот те строчки!!!
  Вверх
Guest
Дата 19.5.2005, 23:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

#include <iostream.h>   // библиотека
#include <conio.h>   // библиотека

struct info
{
    char name[20];  // переменная name типа char, размер 20 ячеек. char не менее одного байта, символ
    char sex;  // переменная sex типа char. char не менее одного байта, символ
    int  money;  // переменная money типа int. int машинное слово 2 или 4 байта, число. МАШИННОЕ СЛОВО - - упорядоченное множество двоичных разрядов (битов).
};

void input(info &record, int &i)  // Главный ввод. Передача по ссылке, если внутри функции переменная измениться, то она измениться и снаружи. Изменяються те переменные у которых есть &. & - операция,                                                 арифметическая(побитовая)
{

    cout << "input name: "; cin >> record.name;  // Вывод на экран "input name" ; Ввод с клавиатуры переменной структурного типа с полем "name". record - обращение к полям структуры.

    cout << "input sex: ";  // вывод на экран "input sex"
    cin >>record.sex;  // Ввод с клавиатуры переменной структурного типа с полем "sex". record - обращение к полям структуры.


    cout << "input money: "; cin >> record.money;
    i++;                                                                  // Вывод на экран "input money" ;Ввод с клавиатуры переменной структурного типа с полем "money". record - обращение к полям структуры.  (i++ ???????)

}
void output(info records[], int count, int _13 = 0)  //  ?????????????????????????
{
    for (int i=0; i< count; ++i)  //????????????????????/
    {
    cout << records[i].name << '\t'    // Вывод на экран имени, перенос строки
         << records[i].sex                  // Вывод на экран пола
         << records[i].money << '\t';   // Вывод на экран денег, перенос строки
    if (_13)  // "if" - условный оператор, "_13" - название переменной. Имя должно начинаться с буквы или "_".  "_" используют в именах переменных вместо пробела.
    {
         cout << 0.13 * records[i].money;  // Вывод на экран налогов(13% от дохода), то есть вывод на экран "деньги умножить на 0.13"
    }
    cout << endl;  // перенос строки

    }
}

void main()                     // начало программы
{clrscr();                        // функция, очищающая экран
    const int max=20;      // переменная const типа int, максимальный размер которой 20 ячеек
    info table[max];          //  определяем массив из элементов типа info
    int cur=0;                  //  текущий элемент, с которым мы работаем(вводим)

    for(;;)  // бесконечный цик
    {
    cout << ">>";                  //  Вывод на экран ">>"
    char key = getch();          //  переменная key типа char, getch() - производит чтение нажатой клавиши любой.
    if (key == 27) break;        //   27 код клавиши "ESC" ; if -  условный оператор ; break - выход из цикла.
    cout << key << endl;       //  Вывод на экран ????????????????????
    switch (key)                    //  оператор выбора
    {
        case '1':                                                                        //       case '1':  если key == '1' то выполняем до break. break - выход их цикла  
        if (cur < max)                                                      //  это ввод данных(таблицы), если мы не ввели максимальное(cur < max) кол-во данных то вводим, иначе говорим что ввод дальше                                                                                                           невозможен cout "error: input max record"
            input(table[cur], cur);                                       //  ???????????????????????????????????????????
        else                                                                   //  Разделитель "иначе", после которого выполняются действия, если условие ложно.
            cout << "error: input max record" << endl;        //  
        break;                                                               //  выход из цикла
        case '2':                                                                       //  клавиша 2
        output(table, cur);                                               //  производит таблицу с текущем элементом
        break;                                                               //  выход из цикла
        case '3':                                                                      //   клавиша 3
        output(table, cur, 13);                                         //  производит таблицу с текущем элементом и с колонкой налогов
        break;                                                              //  выход из цикла
    }
    }
}

  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.