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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 17:19   #1
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию Функции_Т

Здравствуйте всем

Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct person{
char fam[100], imot[100];
int n[3];
};int Sort(struct person*,int); int del(struct person*, int);
int main(void) {
textcolor(13);
printf("                            Spisok Studentov\n\n");
printf("   Students           Fizika        Sopromat        Biologiya\n\n");
FILE*file=fopen("D:\\bc31\\bin\\students.txt","r");
struct person students[10];
int i;
fscanf(file,"%*s%*s%*s%*s");
for (i=0; i<7; i++) {
fscanf(file,"%s %s %d %d %d",
       students[i].fam, students[i].imot,
       students[i].n+0, students[i].n+1, students[i].n+2);}

int delnum,ns;
ns=7;
for (i=0; i<ns; i++)
printf("%10s %s         %d               %d               %d" "\n",
   students[i].fam,
   students[i].imot,
   students[i].n[0],
   students[i].n[1],
   students[i].n[2] );
Sort(students,ns);
putchar('\n');
printf("Sorted:" "\n");
for (i=0; i<ns; i++)
printf("%10s %s         %d               %d               %d" "\n",
  students[i].fam,
  students[i].imot,
  students[i].n[0],
  students[i].n[1],
  students[i].n[2] );
//delnum=0;for (i=0; i<ns; i++) if (((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0)<3)delnum++;ns-=delnum;putchar('\n');
del(students,delnum);
printf("Sorted, Deleted:" "\n");
for (i=0; i<ns; i++)
printf("%10s %s         %d               %d               %d" "\n",
  students[i].fam,
  students[i].imot,
  students[i].n[0],
  students[i].n[1],
  students[i].n[2] );
getchar();
clrscr();
}
int Sort(struct person*students, int ns)
{
  int i,j;
  struct person tmp;
  for (i=0; i<ns-1; i++)
    for (j=i+1; j<ns; j++)
    if
    (
     ((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0) <
     ((students[j].n[0]+students[j].n[1]+students[j].n[2])/3.0)
    )
    {  tmp=students[i];
       students[i]=students[j];
       students[j]=tmp;
    }

  };
int del(struct person*students, int delnum)
{
int i,ns;
delnum=0;
for (i=0; i<ns; i++)
 if   (((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0)<3)
    delnum++;  ns=delnum;
putchar('\n');
}
Почему не выполняет работу вторая функция, помогите
Leshiy1 вне форума Ответить с цитированием
Старый 17.05.2010, 17:38   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Какую работу?
Код:
int del(struct person*students, int delnum)
{
int i,ns;
delnum=0;
for (i=0; i<ns; i++)
 if   (((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0)<3)
    delnum++;  ns=delnum;
putchar('\n');
}
Отсутствует return.
И, кстати, что ж это за загадочное форматирование названий тем - "%topicname%_Т"???
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 17.05.2010, 17:43   #3
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

Да эта функция.

Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct person{
char fam[100], imot[100];
int n[3];
};int Sort(struct person*,int); int del(struct person*, int);
int main(void) {
textcolor(13);
printf("                            Spisok Studentov\n\n");
printf("   Students           Fizika        Sopromat        Biologiya\n\n");
FILE*file=fopen("D:\\bc31\\bin\\students.txt","r");
struct person students[10];
int i;
fscanf(file,"%*s%*s%*s%*s");
for (i=0; i<7; i++) {
fscanf(file,"%s %s %d %d %d",
       students[i].fam, students[i].imot,
       students[i].n+0, students[i].n+1, students[i].n+2);}

int delnum,ns;
ns=7;
for (i=0; i<ns; i++)
printf("%10s %s         %d               %d               %d" "\n",
   students[i].fam,
   students[i].imot,
   students[i].n[0],
   students[i].n[1],
   students[i].n[2] );
Sort(students,ns);
putchar('\n');
printf("Sorted:" "\n");
for (i=0; i<ns; i++)
printf("%10s %s         %d               %d               %d" "\n",
  students[i].fam,
  students[i].imot,
  students[i].n[0],
  students[i].n[1],
  students[i].n[2] );
//delnum=0;for (i=0; i<ns; i++) if (((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0)<3)delnum++;ns-=delnum;
del(students,delnum);
printf("Sorted, Deleted:" "\n");
for (i=0; i<ns; i++)
printf("%10s %s         %d               %d               %d" "\n",
  students[i].fam,
  students[i].imot,
  students[i].n[0],
  students[i].n[1],
  students[i].n[2] );
getchar();
clrscr();
}
int Sort(struct person*students, int ns)
{
  int i,j;
  struct person tmp;
  for (i=0; i<ns-1; i++)
    for (j=i+1; j<ns; j++)
    if
    (
     ((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0) <
     ((students[j].n[0]+students[j].n[1]+students[j].n[2])/3.0)
    )
    {  tmp=students[i];
       students[i]=students[j];
       students[j]=tmp;
    }

  };
int del(struct person*students, int delnum) {
{
int i,ns;
delnum=0;
for (i=0; i<ns; i++)
 if   (((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0)<3)
    delnum++;  ns=delnum;
putchar('\n');
}
return 0; }
Поставил return 0; все равно так же
Leshiy1 вне форума Ответить с цитированием
Старый 17.05.2010, 17:50   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Что конкретно должна делать эта функция?
Данный код не делает абсолютно ничего кроме как жонглирует со своими локальными переменными, которые все равно никакого влияния на внешний мир не оказывают.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 17.05.2010, 18:14   #5
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

Задача у меня такая: создать список студентов с оценками по нескольким дисциплинам. Отсортировать список по убыванию среднего балла. Имеющих двойки удалить из списка.

Все данные берутся из текстового файла превращаются в структуры.
Первая функция сортирует студентов по по убыванию среднего балла, а вторая должна удалять имеющих двойки
Leshiy1 вне форума Ответить с цитированием
Старый 17.05.2010, 18:47   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Ну во-первых тогда условие должно быть не
Код:
if   (((students[i].n[0]+students[i].n[1]+students[i].n[2])/3.0)<3)
(а если у кого-то будут оценки 5, 5, 2 - средняя будет 4), а
Код:
if   (students[i].n[0] == 2 || students[i].n[1] == 2 || students[i].n[2] == 2)
И потом на место i-й структуры писать i+1-ю, и т.д. со сдвигом на 1 влево, уменьшая общее число на 1. Потом продолжить поиск.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 17.05.2010, 23:24   #7
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

У кого средняя четыре будет их оставить
Leshiy1 вне форума Ответить с цитированием
Старый 17.05.2010, 23:26   #8
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

У меня структура такая
Изображения
Тип файла: jpg Безымянный3.JPG (18.2 Кб, 72 просмотров)
Leshiy1 вне форума Ответить с цитированием
Старый 17.05.2010, 23:39   #9
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Вот раз оставить, то потому и не то условие, что у вас, а то, что я привел ниже.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск