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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Cи]Работа с массивом структуированных переменных, Помогите дописать 
V
    Опции темы
maxnsk82
Дата 13.4.2010, 03:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Помогите дописать, а то со временем туго, а я долго разбираюсь что да как.

Вот само задание:

Определить структурированный тип, определить набор функций для работы с массивом структур. В  структурированной переменной предусмотреть способ отметки ее как не содержащей данных (т.е. "пустой"). Функции должны работать с массивом структур или с отдельной структурой через указатели, а также при необходимости возвращать указатель на структуру. В перечень функций входят:
- «очистка» структурированных переменных;
- поиск свободной структурированной переменной;
- ввод элементов (полей) структуры с клавиатуры;
- вывод элементов (полей) структуры с клавиатуры;
- поиск в массиве структуры и минимальным значением  заданного поля;
- сортировка массива  структур в порядке возрастания заданного поля (при сортировке можно использовать тот факт, что в Си++ разрешается присваивание структурированных переменных);
- поиск в массиве структур элемента с заданным значением поля или с наиболее близким к нему по значению. 
- удаление заданного элемента;
- изменение (редактирование) заданного элемента.

А вот что успел сделать, но даже и это не совсем рабочее:

Код

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define size 10

int menu(void); int findFree(void);
void Enter(void); void Delete(void);
void List(void); void Redactor(void);
void Sort(void);

struct Student
{
    int num;
    char fio[25];    
    char facult[25];
    char group[5];
}Stud[size];

void main(void)
{
int i, choice;

clrscr();
textbackground(15);
textcolor(4);

for(i=0;i<10;++i)
{
    Stud[i].fio[0]="\0";
}

cprintf("Na danny moment spisok pust: \n");

for(;;)
{
    choice=menu();
    switch(choice)
    {
        case 1:Enter();break;
        case 2:Delete();break;
        case 3:List();break;
        case 4:Sort();break;
        case 5:Redactor();break;
        case 6:exit(0);
    }
}
}

//---Menu polzavatelya---//
int menu(void)
{
int s;
cprintf("1.Vvesti zapis' o studente\n");
cprintf("2.Udalit' zapis' o studente\n");
cprintf("3.Vvesti ves' spisok\n");
cprintf("4.Sortirovat' zapisi\n");
cprintf("5.Redaktirovat' zapisi\n");
cprintf("6.Vyhod\n");
do
{
cprintf("\nVyberite deistvie: ");
scanf("%d",&s);
}
while(s<0||s>size);
return s;
}

//---Poisk mesta dlya zapisi---//
int findFree(void)
{
int i;
for(i=0;Stud[i].fio!="\0"&&i<size;++i);
if(i==size)return -1;
return i;
}

//---Vnesenie zapisi---//
void Enter(void)
{
int slot;
char num;
slot=findFree();
if(slot==-1)
    {
    cprintf("\nSpisok zapolnen");
    return;
    }

cprintf("\nVvedite FIO: ");
gets(Stud[slot].fio);

cprintf("\nVvedite nomer zachetki: ");
scanf("%d",&num);
Stud[slot].num = num;

cprintf("\nVvedite facultet: ");
gets(Stud[slot].facult);

cprintf("\nVvedite gruppu: ");
gets(Stud[slot].group);
}

//---Udalenie zapisey---//
void Delete(void)
{
int slot=0;
cprintf("\nVvedite nomer udalyaemoy zapisi:");
scanf("%d",slot);
if(slot>=0&&slot<size)
{
    Stud[slot].fio[0]="\0";
}
}

//---Vyvod vsego spiska---//
void List(void)
{
int i;
for(i=0;i<size;i++)
    {
    if(Stud[i].num)
    cprintf("%d\t%s\t%d\t%s\t%s\n",i,Stud[i].fio,Stud[i].num,Stud[i].facult,Stud[i].group);
    }
}


//---Sortirovka---//
void Sort(void)
{
}

//---Radactirovanie---//
void Redactor(void)
{
}


PM MAIL   Вверх
maxnsk82
Дата 22.4.2010, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пытаюсь дальше сам делать, не могу сортировку сделать:

Код

void numSort(void)
{
    int i,tmp,cnt;
    for(i=0;i<size;i++)
    {    
        cnt=0;
        if(Stud[i].num>Stud[i+1].num)
        {
            tmp = Stud[i].num;
            Stud[i].num = Stud[i+1].num;
            Stud[i+1].num=tmp;
            cnt++;
        }if(cnt==0)break;
    }
}


Ошибка при присвоении: Lvalue required...как правильно сделать?
PM MAIL   Вверх
maxnsk82
Дата 6.6.2010, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



На "с/с++ для новичков" помогли)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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