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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Кузьма
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 16
#1

Сформировать список студентов института - C++

22.12.2008, 22:26. Просмотров 1271. Ответов 7
Метки нет (Все метки)

Сформировать список студентов института: факультет, группа, ФИО, домашний адрес, месяц и год рождения. Написать программу определения месяца, в котором родилось максимальное количе¬ство студентов в вашей группе; перевода студентов в другую группу; студентов, родившихся в заданном месяце; студентов заданного года рождения.

Если можно напишите пожалуйста фрагмент программы которая создает такой список(с комментами если можно)!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2008, 22:26     Сформировать список студентов института
Посмотрите здесь:

Сформировать список студентов - C++
Сформировать список студентов, в котором студентки-отличницы расположены по алфавиту. Список выдать на экран. Студенток-отличниц при выводе...

Сформировать стек из N студентов - C++
Решил, что через if буду сразу заносить фамилии с средней оценкой >=4 в стек, а остальных сразу в множество. Начал я что-то делать, но...

Список студентов - C++
Для получения места в общежитии формируется список студентов, который включает ФИО студента, группу, средний балл, доход на члена семьи. ...

Список студентов (структуры) - C++
Вводится список студентов (Ф.И.О., номер группы, оценка). Найти номер группы, в которой у всех студентов вместе наибольший средний балл.

Создание структуры Список студентов - C++
Нужна помощь. Есть в методичке пример создания Ведомости студентов. Код: #include <iostream.h> #include <stdio.h> #include <conio.h> ...

Реализовать односвязный список студентов - C++
В моем коде нужно реализовать односвязный список, нужно реализовать операцию вставки нового элемента в отсортированный список и реализовать...

Дан список студентов (STL) - C++
Помогите пожалуйста, очень срочно надо) 1). Дан список студентов в файле input.txt в котором содержится фамилия студента и курс...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.12.2008, 23:52     Сформировать список студентов института #2
Код
 
#include <stdio.h>

#define MAXNAME  512
#define nstudents()  sizeof ourgrp / sizeof ourgrp[0]

enum {
    JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};

typedef struct {
    char fcl[MAXNAME];
    unsigned grp;
    char fio[MAXNAME];
    char adr[MAXNAME];
    unsigned mnth;
    unsigned yr;
} Student;

/* формирует список студентов института, одна группа */
main()
{
    Student ourgrp[] = {
        { "facultet",
           211,
          "Rizhova Kat'ka",
          "ul. Lenina h. 218 fl. 35",
           AUG,
           1985 },
        
        { "facultet",
           211,
          "Sinicina vtorogodnica",
          "3 obshaga",
           FEB,
           1984 }
        
        /* и т.д. после последней запятую не ставить */
    };

    /* количество студентов */
    printf("%d\n", nstudents());
    
    /* количество студентов родившихся в определённом месяце */
    int i, n;
    
    for (i = 0, n = 0; i < nstudents(); i++)
        if (ourgrp[i].mnth == FEB)
            n++;
    printf("birth in february %d\n", n);
    
    return 0;
}
здесь просто массив студентов одной группы
Кузьма
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 16
23.12.2008, 00:07  [ТС]     Сформировать список студентов института #3
Я понял это!ТАк я могу делать!Если не трудно то можно сделать не одну группу о много!И использовать calloc и указатели!

Добавлено через 1 минуту 8 секунд
Вот у меня готовый код для структуры не динамической !
Код
#include<conio.h>
#include<stdio.h>
#include <stdlib.h>
#include<dos.h>
       int i;
struct list
{
    char fac1[5];
       /*    char grup1 [5];
    char FIO1[15];
    char adres1 [15];
    char god1 [15];
    char mec1 [15];*/
    list *next;
}list1; list *first=0, *cur=0;

int IsEmpty()
{
    return first==NULL;
}

void GoToPrev()
{
    if(IsEmpty())
    {
        printf("\nSpicok pust");
        getch();
    return;
    }
    if(cur==first)
    return;
    list *tmp;
    tmp=new list;
    tmp=first;
    while(tmp->next!=cur)
    tmp=tmp->next;
    cur=tmp;
}


void AddFirst(char fac[5])
{
    list *tmp,*p;
    //tmp=new list;
       tmp=(list*)calloc(1,sizeof(list));
    tmp->fac1[5]=fac[5];
    tmp->next=first;
    first=cur=tmp;
}

void AddAfterCur(char fac)
{
       /*    if(IsEmpty())
    {
    AddFirst(char fac[5]);
        return;
    }*/
    list *tmp;
    tmp=new list;
    tmp->fac1[5]=fac;
    tmp->next=cur->next;
    cur->next=tmp;
    cur=tmp;
}

int IsEnd()
{
    return cur->next==NULL;
}

void Move()
{
    if(IsEnd())
    {
        printf("\nDoctognyt koets spiska");
        getch();
        return;
    }
    cur=cur->next;
}

void GoToFirst()
{
    cur=first;
}

char GetElem()
{
    return cur->fac1[5];
}

void DeleteFirst()
{
    list *tmp;
    tmp =new list;
    tmp=first->next;
    delete first;
    first=tmp;
}

void DeleteCur()
{
    if(IsEmpty())
    {
        printf("\nSpisok pust. Delete unreal");
        getch();
        return;
    }
    list *tmp;
    tmp=new list;
    if(cur==first)
    {
        DeleteFirst();
        return;
    }
    else
    {
        tmp=cur;
        GoToPrev();
        cur->next=tmp->next;
        delete tmp;
    }
}

void Print()
{
    if(IsEmpty())
    return;
    list *tmp;
    tmp=first;
    do
    {
        printf(" %s  ",tmp->fac1);
        tmp=tmp->next;
    }
    while(tmp!=NULL);
}

main()
{
    first=NULL;
    cur->next=NULL;
    cur=first;

             char fac[5];
            char grup [5];
            char FIO [15];
            char adres [15];
            char god [15];
            char mec [15];
    char a;
    do
    {
        delay(1000);
        clrscr();
        int val;
        Print();
        printf("\nChoose and put :\n\t0 - Return na pred element;\n\t1 - Add elementa v nachalo;\n\
    2 - Add elementa posle tekychego;\n\t3 - View element;\n\
    4 - Delete tekychego elementa;\n\t5 - Goto following element:\n\
    6 - Goto na nachalo spiska;\n\t7 - Revizion dostizenya kontsa spiska;\n\
    8 - Revizion unfull spiska;\n\t\n\
    Esc - EXIT\n");
        a=getch();
        switch (a)
        {
            case '1':
                printf("\nVvedite dannie o studente :\nFacultet: ");
                scanf("%s",fac[5]);
                AddFirst(fac);
            break;
            case '2':
                printf("\nVvedite znacenie:\n");
                scanf("%i",&val);
                AddAfterCur(val);
            break;
            case '3':
                if(IsEmpty())
                    printf("\nSpisok unfull");
                else
                    printf("\nZnachenie tekychego elementa pavno %i",GetElem());
                getch();
            break;
            case '4':
                DeleteCur();
            break;
            case '5':
                Move();
            break;
            case '6':
                GoToFirst();
            break;
            case '7':
                if(IsEnd())
                    printf("\nDostignyt konets spiska");
                else
                    printf("\nKonets spiska undostignyt");
                getch();
            break;
            case '8':
                if(IsEmpty())
                    printf("\nSpisok unfull");
                else
                    printf("\n V spiske est elementu");
                getch();
            break;
            /*case '9':
                MaxData(q);
            break; */
            case '0':
                GoToPrev();
            break;
        }
    }
    while (a!=27);
    return 0;
}
Добавлено через 57 секунд
Можно его переделать под мое условие!Если необходимо знать какие функции что делают я напишу!
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.12.2008, 02:34     Сформировать список студентов института #4
список обязательно чтобы можно было добавлять студентов динамически по ходу и работать с тем что есть на данный момент, иначе можно всё на массиве структур сделать (перевод в другую группу имеется в виду не изменить поле, а убрать структуру вообще)
Кузьма
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 16
23.12.2008, 09:04  [ТС]     Сформировать список студентов института #5
ДА!Нужен список в котором выделяется память(CALLOC) по каждый элемент!
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.12.2008, 10:34     Сформировать список студентов института #6
выводит только февральских

Код
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXNAME    512
#define NSTUDENTS  3

enum {
    JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};

typedef struct grpnode {
    char fcl[MAXNAME];
    unsigned grp;
    char fio[MAXNAME];
    char adr[MAXNAME];
    unsigned mnth;
    unsigned yr;
    struct grpnode *next;
} Student, *Studptr;

Studptr addstud(Studptr, Studptr), studalloc(void);

/* формирует список студентов института, одна группа */
main()
{
    Studptr ourgrp = NULL, p;
    Student tmp;
    int i;
    
    for (i = 0; i < NSTUDENTS; i++) {
        printf("Enter\n");
        printf("faculty: ");
        scanf("%s", tmp.fcl);
        printf("group: ");
        scanf("%d", &tmp.grp);
        printf("initials: ");
        scanf(" %[^\n]", tmp.fio);
        printf("address: ");
        scanf(" %[^\n]", tmp.adr);
        printf("birth(month): ");
        scanf("%d", &tmp.mnth);
        printf("birth(year): ");
        scanf("%d", &tmp.yr);
        tmp.next = NULL;
        ourgrp = addstud(ourgrp, &tmp);
        putchar('\n');
    }
    for (i = 0, p = ourgrp; i < NSTUDENTS; p = p->next, i++) {
        if (p->mnth != FEB)
            continue;
        printf("%d:\n", i+1);
        printf("%s\n", p->fcl);
        printf("%d\n", p->grp);
        printf("%s\n", p->fio);
        printf("%s\n", p->adr);
        printf("%d\n", p->mnth);
        printf("%d\n", p->yr);
        putchar('\n');
    }
    return 0;
}

Studptr addstud(Studptr p, Studptr s)
{
    Studptr tmp;
    
    if (p == NULL) {
        if ((p = studalloc()) != NULL) {
            strcpy(p->fcl,s->fcl);
            p->grp = s->grp;
            strcpy(p->fio, s->fio);
            strcpy(p->adr, s->adr);
            p->mnth = s->mnth;
            p->yr = s->yr;
            p->next = s->next;
        }    
    } else {
        if ((tmp = studalloc()) != NULL) {
            strcpy(tmp->fcl, s->fcl);
            tmp->grp = s->grp;
            strcpy(tmp->fio, s->fio);
            strcpy(tmp->adr, s->adr);
            tmp->mnth = s->mnth;
            tmp->yr = s->yr;
            tmp->next = p;
        }
        p = tmp;
    }    
    return p;
}

Studptr studalloc(void)
{
    return (Studptr) malloc(sizeof(Student));
}
там ещё функция освобождения списка в комплекте, вставки элемента (поступил новый студент), удаления (перевод кого-то в другую группу), остальное делается просто через счётчики
Кузьма
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 16
23.12.2008, 21:02  [ТС]     Сформировать список студентов института #7
Спасиба огромное !Код просто супер!Я разобрался!Тебе респект!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2008, 22:40     Сформировать список студентов института
Еще ссылки по теме:

Упорядочить список студентов по году рождению - C++
Язык Си Дан файл, содержащий сведение о студентах, включающие в себя его фамилию имя, год рождение, номер группы и оценки, по каким либо...

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

Отсортировать список студентов по принадлежности к кафедре - C++
написать задачу используя структуры struct{}; Ввести данные в табл. 2. Отсортировать список студентов по принадлежности к кафедре. В...

Вывести список студентов получивших 3 по третьему экзамену - C++
Всем привет, у меня тут есть проблемка, задали нам на курсач сделать прогу (StringGrid) которая отображает список студентов, осталось...

Вывести список студентов по возрастанию оценок по математике. - C++
В памяти машины хранятся записи, состоящие из трех полей: 1.Фамилия студента 2.Оценка по математике 3.Оценка по информатике ...


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.12.2008, 22:40     Сформировать список студентов института #8
Код
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXNAME    512
#define NSTUDENTS  3

enum {
    JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
};

typedef struct grpnode {
    char fcl[MAXNAME];
    unsigned grp;
    char fio[MAXNAME];
    char adr[MAXNAME];
    unsigned mnth;
    unsigned yr;
    struct grpnode *next;
} Student, *Studptr;

Studptr addstud(Studptr, Studptr), studalloc(void), freestud(Studptr);

/* формирует список студентов института, одна группа */
main()
{
    Studptr ourgrp = NULL, p;
    Student tmp;
    int i;
    
    for (i = 0; i < NSTUDENTS; i++) {
        printf("Enter\n");
        printf("faculty: ");
        scanf("%s", tmp.fcl);
        printf("group: ");
        scanf("%d", &tmp.grp);
        printf("initials: ");
        scanf(" %[^\n]", tmp.fio);
        printf("address: ");
        scanf(" %[^\n]", tmp.adr);
        printf("birth(month): ");
        scanf("%d", &tmp.mnth);
        printf("birth(year): ");
        scanf("%d", &tmp.yr);
        tmp.next = NULL;
        ourgrp = addstud(ourgrp, &tmp);
        putchar('\n');
    }
    for (i = 0, p = ourgrp; i < NSTUDENTS; p = p->next, i++) {
        if (p->mnth != FEB)
            continue;
        printf("%d:\n", i+1);
        printf("%s\n", p->fcl);
        printf("%d\n", p->grp);
        printf("%s\n", p->fio);
        printf("%s\n", p->adr);
        printf("%d\n", p->mnth);
        printf("%d\n", p->yr);
        putchar('\n');
    }
    ourgrp = freestud(ourgrp);
    return 0;
}

/* addstud:  добавляет студента в список */
Studptr addstud(Studptr p, Studptr s)
{
    Studptr tmp;
    
    if (p == NULL) {
        if ((p = studalloc()) != NULL) {
            strcpy(p->fcl,s->fcl);
            p->grp = s->grp;
            strcpy(p->fio, s->fio);
            strcpy(p->adr, s->adr);
            p->mnth = s->mnth;
            p->yr = s->yr;
            p->next = s->next;
        }    
    } else {
        if ((tmp = studalloc()) != NULL) {
            strcpy(tmp->fcl, s->fcl);
            tmp->grp = s->grp;
            strcpy(tmp->fio, s->fio);
            strcpy(tmp->adr, s->adr);
            tmp->mnth = s->mnth;
            tmp->yr = s->yr;
            tmp->next = p;
        }
        p = tmp;
    }    
    return p;
}

/* studalloc:  выделяет память под студента */
Studptr studalloc(void)
{
    return (Studptr) malloc(sizeof(Student));
}

/* freestud:  освобождает список из памяти */
Studptr freestud(Studptr p)
{
    Studptr q;
    
    while (p != NULL) {
        q = p;
        p = p->next;
        free(q);
    }
    return p;    
}
дополнил функцией освобождения, коменты к функциям
Yandex
Объявления
23.12.2008, 22:40     Сформировать список студентов института
Ответ Создать тему
Опции темы

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