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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2017, 20:42   #1
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию помогите дописать программу на языке Си

мне нужно было сформировать массив строк, в каждой строке записать фамилию и результат 100 м бега и сформировать команду из 4 лучших бегунов
с помощью qsort


#include <stdio.h>
#include <locale.h>
struct beg
{
char fam[50];
float res;
}
main ()
{

int i, j;
float min;
struct beg a[7];
setlocale(LC_ALL,"Russian");
printf("\nВВедите данные:");
for (i=0;i<7;i++)
{
printf("\nВведите фамилию %d-го студента и его результат в беге на 100 м:\n", i+1);
scanf ("%s%f",&a[i].fam,&a[i].res);
}
printf("\nКоманда из 4 лучших бегунов в эстафете 4*100 м:\n");
system("Pause");
}
Антон1990 вне форума Ответить с цитированием
Старый 20.03.2017, 21:08   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Что это такое?
Код:
beg a[7];
и это
Код:
#include <locale.h>
ura_111 вне форума Ответить с цитированием
Старый 20.03.2017, 21:13   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А ещё, у тебя структура, а в задании - массив строк.

Как это вяжется?
ura_111 вне форума Ответить с цитированием
Старый 20.03.2017, 22:18   #4
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

а как создать массив строк?
Антон1990 вне форума Ответить с цитированием
Старый 20.03.2017, 22:29   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

1) Скажи, в Си string нету? Не проходили? Или он появился только в С++? (я не знаю).

2) Вот ещё что-то:

0 (3).jpg

p.s.: я ещё учусь и могу ошибаться (вводить тебя в заблуждение), поэтому если что говори, будем общаться.
ura_111 вне форума Ответить с цитированием
Старый 20.03.2017, 22:33   #6
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

а #include <locale.h>
это для того чтобы выводились русские буквы
Антон1990 вне форума Ответить с цитированием
Старый 20.03.2017, 22:49   #7
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

И вот ещё:

0 (3).jpg

пиши, что думаешь.
ura_111 вне форума Ответить с цитированием
Старый 20.03.2017, 22:56   #8
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

то есть первая часть программы должна выглядеть так?
Код:
#include <stdio.h>
#include <locale.h>
        
main ()
{
        char fam[50][50];
        float r;
        int i;
    setlocale(LC_ALL,"Russian"); 
    printf("ВВедите данные:\n");
    for (i=0;i<7;i++)
    {
    printf("Введите фамилию %d-го студента и его результат в беге на 100 мn:\n", i+1);
    scanf ("%s%f",&fam,&r);
    }
    printf("Команда из 4 лучших бегунов в эстафете 4*100 м:\n");
    system("Pause");
}
Антон1990 вне форума Ответить с цитированием
Старый 20.03.2017, 23:02   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Не сегодняшний момент, я думаю, что надо попросить у пользователя сколько будет всего человек; а потом создавать динамический массив строк по примеру:

0 (3).jpg

А строка не делиться (по крайней мере сразу) на фамилию и число, а представляет собой что-то вроде такого:
Код:
"шичеков 12.5"
"пешиков 11.3"
....................
....................
p.s.: там в С++, но переделать на "malloc" я думаю не сложно.
ura_111 вне форума Ответить с цитированием
Старый 20.03.2017, 23:45   #10
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я думаю вот так надо (только ввод):

Код:
#include<windows.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);

	int kol, i, size;
	printf("ВВедите количество человек: ");
	scanf("%d", &kol);
	printf("\n");

	char **a = (char**)malloc(kol * sizeof(char*));
	printf("Введите фамилии студентов и их результаты в беге на 100 м:\n");
	for (i = 0; i < kol; i++)
	{
		fflush(stdin);
		char b[256];
		gets(b);
		size = 0;
		while (b[size] != '\0')
			size++;
		a[i] = (char*)malloc(size * sizeof(char*));
		strcpy(a[i], b);
	}


	printf("\nОтсортированная команда:\n");
	for (i = 0; i < 4; i++)
	{
		printf(" %d-е место занял ", i + 1);
		puts(a[i]);
	}

	scanf("%d", &i); // чтобы консоль быстро не закрывалась
	return 0;
}
0 (3).jpg

Вы динамическую память изучали?

p.s.1: на массив b[256] не обращай внимание, т.к. поле видимости (время жизни) до конца "for", а потом он будет программой удалён.
p.s.2: на следующей шаге нужно как-то выделить числа из строк, чтобы на их основе сортировать...

Пиши, что думаешь, а то я могу и в нету степь идти.
ura_111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите дописать программу - допишите в программу формулу m=sqrt(re^2+lm^2) ( Delphi ) nicroma Помощь студентам 0 24.12.2013 19:59
Помогите дописать программу cL1zMa Паскаль, Turbo Pascal, PascalABC.NET 2 06.06.2008 14:40
Помогите дописать программу. ShnapS Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2008 19:50
Помогите дописать программу ALIZE Помощь студентам 2 09.12.2007 18:45