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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2014, 20:10   #1
anshelika
 
Регистрация: 03.01.2014
Сообщений: 6
Восклицание помогите доделать программу на С

Задание: Ввести а и b - два массива структур. Каждая структура содержит сведения о студентах (ФИО, номер группы, изучаемые дисциплины, успеваемость и т.п.). Отсортировать элементы массива а по ФИО, а элементы b по успеваемости. Результат вывести на экран. Работу с массивами организовать через указатели. Поиск осуществлять отдельной пользовательской функцией.

Не знаю как осуществить работу через указатели и отсортировать массив А по ФИО


Мой код на С(не совсем верный):
Код:
#include <stdio.h>
#include <iostream>
 
const int n=10;
int size=0;
 
typedef struct a{
char FIO[3];
int Numbgr;
char Disc[n];
int ocen;
}sta;
 
sta masA[100];
 
typedef struct b{
char FIO[3];
int Numbgr;
char Disc[n];
int ocen;
}stb;
 
stb masB[100];
 
void inputA(int size) {
    for(int i = 0; i < size; i++) {
        do {
            printf("\n FIO:");
            printf("\n Familija ");
            scanf("%s", &masA[i].FIO[0]);
            printf("\n Imja ");
            scanf("%s", &masA[i].FIO[1]);
            printf("\n Otchestvo ");
            scanf("%s", &masA[i].FIO[2]);
        }while(!strcmp(masA[i].FIO, ""));// выполняется  пока строчка не пуста
        printf("\n Numbgr:");
        scanf("%d", &masA[i].Numbgr);
        do {
            printf("\nDiscipliny: ");
            scanf("%s", &masA[i].Disc);
        }while(!strcmp(masA[i].Disc, ""));
            printf("\nOcenki: ");
            scanf("%s", &masA[i].ocen);
        }
}
      
    void inputB(int size) {
    for(int i = 0; i < size; i++) {
        do {
            printf("\n FIO:");
            printf("\n Familija ");
            scanf("%s", &masB[i].FIO[0]);
            printf("\n Imja ");
            scanf("%s", &masB[i].FIO[1]);
            printf("\n Otchestvo ");
            scanf("%s", &masB[i].FIO[2]);
        }while(!strcmp(masB[i].FIO, ""));// выполняется  пока строчка не пуста
        printf("\n Numbgr:");
        scanf("%d", &masB[i].Numbgr);
        do {
            printf("\nDiscipliny: ");
            scanf("%s", &masB[i].Disc);
        }while(!strcmp(masB[i].Disc, ""));
            printf("\nOcenki: ");
            scanf("%s", &masB[i].ocen);
        }
    }
 
    void sortByPrice(int size) { //Сортировка методом выбора
    double tmp;
    int i, j, pos;
    for(i = 0; i < size; ++i) 
    { 
        pos = i; 
        tmp = masB[i].ocen;
        for(j = i + 1; j < size; ++j) 
        {
            if (masB[j].ocen < tmp) 
            {
               pos = j; 
               tmp = masB[j].ocen; 
            }
        }
        masB[pos].ocen = masB[i].ocen; 
        masB[i].ocen = tmp; 
    }      
}  
    void showA(int size){
    printf("+---------------+--------+---------------+---------------+----------+\n");
    printf("+-----FIO-----+--Numbgr--+---Disc----+---Ocen---+\n");
    printf("+             +          +           +          +\n");
    for(int i = 0; i < size; i++) {
    printf("+%-2d.%-2d.%-2d|%-8.2lf|%-15s|%-15s +\n", 
        masA[i].FIO[0], masA[i].FIO[1], masA[i].FIO[2], masA[i].Numbgr, masA[i].Disc, masA[i].ocen);}
    printf("+---------------+---------------+---------------+----------+\n");
    }
 
    void showA(int size){
    printf("+---------------+--------+---------------+---------------+----------+\n");
    printf("+-----FIO-----+--Numbgr--+---Disc----+---Ocen---+\n");
    printf("+             +          +           +          +\n");
    for(int i = 0; i < size; i++) {
    printf("+%-2d.%-2d.%-2d|%-8.2lf|%-15s|%-15s +\n", 
        masA[i].FIO[0], masA[i].FIO[1], masA[i].FIO[2], masA[i].Numbgr, masA[i].Disc, masA[i].ocen);}
    printf("+---------------+---------------+---------------+----------+\n");
    }
 
    void showB(int size){
    printf("+---------------+--------+---------------+---------------+----------+\n");
    printf("+-----FIO-----+--Numbgr--+---Disc----+---Ocen---+\n");
    printf("+             +          +           +          +\n");
    for(int i = 0; i < size; i++) {
    printf("+%-2d.%-2d.%-2d|%-8.2lf|%-15s|%-15s +\n", 
        masB[i].FIO[0], masB[i].FIO[1], masB[i].FIO[2], masB[i].Numbgr, masB[i].Disc, masB[i].ocen);}
    printf("+---------------+---------------+---------------+----------+\n");
    }
 
    int main (void){
printf("Vvedite kol-voctudentov? ");
scanf("%d", &size);
inputA(size);
inputB(size);
sortByPrice(size);
showA(size);
showB(size); 
getchar ();
getchar ();
return 0;
}
помогите пожалуйсто и по возможности исправьте, пожалуйсто, ошибки

Последний раз редактировалось Stilet; 03.01.2014 в 20:30.
anshelika вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста, помогите доделать программу по C++ kmail Помощь студентам 0 22.08.2009 19:26
Пожалуйста помогите доделать программу Kaddafi Паскаль, Turbo Pascal, PascalABC.NET 2 14.05.2009 21:08
помогите доделать рекурсивную программу ELdarr Общие вопросы C/C++ 0 23.01.2009 23:14