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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2021, 12:38   #1
opsam
Пользователь
 
Регистрация: 24.11.2021
Сообщений: 37
Радость Структуры данных. В массиве хранятся записи со следующей информацией об абитуриентах

В массиве хранятся записи со следующей информацией об абитуриентах: Ф.И.О.
и результаты вступительных экзаменов (количество баллов от 0 до 10 по математике и физике и
зачет или незачет по украинскому языку).
Вывести Ф.И.О.. абитуриентов, зачисленных в институт (сдана математика и
физика на 4 или 5, зачет по украинскому языку.
Вывести оценки студента с заданной фамилией.
Язык Си
opsam вне форума Ответить с цитированием
Старый 29.11.2021, 13:33   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

opsam, такие задачки во Фрилансе решают.
Arigato вне форума Ответить с цитированием
Старый 29.11.2021, 14:54   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Эх, если бы зачёт был по польскому языку - написал бы
А записи в массиве уже лежат - или их считывать из файла?
Arigato - ну какой тут фриланс, 10$ - это разве деньги? Да и нет их у него. А решать задачки двоечникам надо. Как сказал когда-то min@y : пускай остаётся с решённой задачей, но неучем - меньше конкуренция будет.

Последний раз редактировалось digitalis; 29.11.2021 в 14:58.
digitalis вне форума Ответить с цитированием
Старый 29.11.2021, 16:26   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А решать задачки двоечникам надо.
Вот пусть и выбирают, решать самим или нанимать исполнителей
Arigato вне форума Ответить с цитированием
Старый 29.11.2021, 21:23   #5
opsam
Пользователь
 
Регистрация: 24.11.2021
Сообщений: 37
По умолчанию

digitalis, записи о абитуриентах должны лежать в массиве. Потом нужно вывести список всех студентов которые сдали сдали экзамен. И потом вывести данные о студенте фамилию которого ввели с клавиатуры

digitalis, сможете помочь с этим? я попытаюсь сделать какие то наброски кода, попытаюсь сначала сделать сам, если не получится сможете подсказать или помочь?

Последний раз редактировалось Arigato; 29.11.2021 в 21:26.
opsam вне форума Ответить с цитированием
Старый 29.11.2021, 21:26   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от opsam Посмотреть сообщение
нужно вывести список всех студентов которые сдали сдали экзамен
Студент Опсам не сдал экзамен. По остальным не знаю...

Цитата:
Сообщение от opsam Посмотреть сообщение
я попытаюсь сделать какие то наброски кода, попытаюсь сначала сделать сам
Вот с этого и надо было начинать!
Arigato вне форума Ответить с цитированием
Старый 29.11.2021, 22:30   #7
opsam
Пользователь
 
Регистрация: 24.11.2021
Сообщений: 37
По умолчанию

Arigato, вот я попытался что то написать, но не до конца получилось дальше я не знаю как...
а еще когда я ввожу число для оценки, в независимости от того какое я число введу всегда выводится 6418849
можете помочь дописать код?
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main()

{
  setlocale (LC_ALL, "rus");

       struct students{
       char lname [15]; // фамилия
       char fname [10]; // имя
       char pname [15]; // отчество
       int exam;
       char maths [5];
       char physics [5];
       char ukrlang [5];
      }s;
         int n = 5; // кол во студентов
         int i;
       struct students mass[n];

       printf("Введите данные о студентах: \n"); // Вводить на английском

       for(i=0; i<n; i++)
          {

           printf("Введите фамилию, имя, отчество и результаты экзаменов по математике, физике, украинскому: \n");
           scanf("%s %s %s %s %s %s",&s.lname,&s.fname,&s.pname,&s.maths,&s.physics,&s.ukrlang);
           mass[i] = s;
          }

          for(i=0; i<n; i++)
            {
             printf("Введите фамилию = %s, имя = %s, отчество = %s, математика =%d, физика = %d, украинский = %s: \n",mass[i].lname,mass[i].fname,mass[i].pname,mass[i].maths, mass[i].physics, mass[i].ukrlang);
            }




    return 0;
}
digitalis, я наброски сделал, но дальше совсем не понимаю

Последний раз редактировалось BDA; 01.12.2021 в 08:31.
opsam вне форума Ответить с цитированием
Старый 29.11.2021, 23:43   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main()

{
  setlocale (LC_ALL, "rus");

       struct students{
       char lname [15]; // фамилия
       char fname [10]; // имя
       char pname [15]; // отчество
       char maths [5];
       char physics [5];
       char ukrlang [5];
      };
         int n = 5; // кол во студентов
         int i,ex_F,ex_M,F,fin;
;
       struct students mass[n],ss;

       printf("Введите данные о студентах: \n"); // Вводить на английском
             for(i=0; i<n; i++)
          {

           printf("Введите фамилию, имя, отчество и результаты экзаменов по математике, физике, украинскому: \n");
           scanf("%s %s %s %s %s %s",
               &mas[i].lname,&mas[i].fname,&mas[i].pname,&mas[i].maths,&mas[i].physics,&mas[i].ukrlang);
          }

         Puts ("Вы зачислены. Бегите за горилкой!")
       for(i=0; i<n; i++)
          {
           sscanf(mas[i].maths, "%d", &ex_M);
           sscanf(mas[i].physics, "%d", &ex_F);
           sscanf(mass[i].ukrlang, "%d", &UK);
           if  ( (ex_M>3) && (ex_F>3) && (UK>0) )
           printf ( "%s %s %s %s %s %s\n",
              mas[i].lname,mas[i].fname,mas[i].pname,mas[i].maths,mas[i].physics,mas[i].ukrlang);
          }

        F = 1 ;
        while (F > 0)
           {
             printf("Введите фамилию, имя, отчество");
             scanf("%s %s %s",&ss.lname,&ss.fname,&ss.pname);
             fin = -1 ;
             for(i=0; i<n; i++)
               if (! ( (strcmp(ss.lname,mas[i].lname) || (strcmp(ss.fname,mas[i].fname) || 
                      (strcmp(ss.pname,mas[i].pname) ) )
                   { fin = i ; Break ; }
             if ( fin > -1)  printf ("%s %s %s %s %s %s \n",                    
       mas[fin].lname, mas[fin].fname, mas[fin].pname, mas[fin].maths, mas[fin].physics, mas[fin].ukrlang);
             else { puts ("Нет такого студеня! Конец программы!") ; F = 0 }
           }
     return 0;
}
Вроде как-то так... За давностью могу и ошибаться. Пусть бдительные Сищники тогда поправят.

Последний раз редактировалось digitalis; 30.11.2021 в 00:03.
digitalis вне форума Ответить с цитированием
Старый 30.11.2021, 11:02   #9
opsam
Пользователь
 
Регистрация: 24.11.2021
Сообщений: 37
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
if (! ( (strcmp(ss.lname,mas[i].lname) || (strcmp(ss.fname,mas[i].fname) ||
(strcmp(ss.pname,mas[i].pname) ) )
спасибо большое за помощь, но подскажите пожалуйста как исправить ошибку в этой строчке? выдает error: expected ')' before '{' token

и в этой строчке тоже

Цитата:
Сообщение от digitalis Посмотреть сообщение
else { puts ("Нет такого студеня! Конец программы!") ; F = 0 }
и в этой ошибка error: expected expression before '}' token

Цитата:
Сообщение от digitalis Посмотреть сообщение
}
digitalis, я разобрался с этими ошибками, подскажите пожалуйста как отмечать зачет или не зачет по украинскому языку?

digitalis, а еще подскажите что означают переменные F и fin какая из них отвечает за экзамен по украинскому

opsam, извините, я только сейчас заметил что код не полностью работает, если вводить что экзамен сдан на 2 или 3 то код все равно пишет что студент зачислен

digitalis, даже если студент не проходит по баллам все равно пишет что он зачислен

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

Последний раз редактировалось BDA; 01.12.2021 в 08:32.
opsam вне форума Ответить с цитированием
Старый 30.11.2021, 13:02   #10
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

1. Незачёт = 0, зачёт = 1.
2. Это вспомогательные переменные. F изначально имеет значение 1 - это разрешение спрашивать оценки конкретного студента. fin - результат поиска ф.и.о. в списке. Если таковой найдётся, выводятся его данные (это его индекс в массиве структур) и ждём запроса по следующему. Если такого нет (fin остаётся со значением -1), то выдаётся об этом сообщение, F сбрасывается в 0 и программа заканчивает работу. А пока ф.и.о. валидные - будет спрашивать до посинения.
3. За украинский отвечает переменная UK (странно, что она пропала у меня из объявлений).
Должно быть
Код:
 int i,ex_F,ex_M,UK,F,fin;
Она получает значение из строки - элемента структуры ( chr -> int)
Код:
sscanf(mass[i].ukrlang, "%d", &UK);
4. Заголовок о зачислении пишется в любом случае. Но если все двоечники, то после заголовка не выводится ничего (список зачисленных пуст). Если нужно красивше, то придётся сделать 2 цикла: в первом стробируем, есть ли хоть один зачисленный, и если есть - то как у нас в проге, а если нет - пишем другой заголовок "Все вы тупицы, мать вашу!" и этот блок вывода обходим.
5. Неправильных переменных, кроме пропущенной в объявлении UK, у меня вроде нет. Если считаешь иначе - аргументируй.

Последний раз редактировалось digitalis; 30.11.2021 в 13:13.
digitalis вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MATLAB Как будут отображаться данные матрицы В при следующей записи: Женя145 Помощь студентам 1 19.10.2017 20:23
Записи и динамические структуры данных (PASCAL). tako_superuser Помощь студентам 5 16.10.2016 17:48
Подготовить данные об абитуриентах, поступающих в техникум. Информацию о каждом абитуриенте оформить в виде записи, содержащей сле Viraj Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2015 12:38
Подготовить данные об абитуриентах, поступающих в техникум. Информацию о каждом абитуриенте оформить в виде записи VLAD56789 Паскаль, Turbo Pascal, PascalABC.NET 1 14.12.2013 15:19
Добавить значение из следующей записи KOHCEPBATOP SQL, базы данных 2 29.11.2012 15:49