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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2010, 00:34   #1
kwns
 
Регистрация: 13.05.2010
Сообщений: 7
По умолчанию Структура и массивы

Задача на структуру и массивы

Ниже выложил условие с кодом задачи. Код работает, но не могу ничего толкового придумать как кроме фамилии студента вводить еще и инициалы, ведь scanf считывает до первого пробела, а через gets после одного цикла (занесения данных по первому студенту) фио студента пропускается до ввода данных группы. Заранее благодарен за помощь


Код:
//Опишите структуру с именем STUDENT, содержащую следующие поля:
//- фамилия и инициалы;
//- номер группы;
//- успеваемость (массив из 5 элементов).
// Программа должна обеспечить выполнение следующих действий:
// 1) ввод с клавиатуры данных в массив, состоящий из 10 структур типа STUDENT;
// 2) вывод на экран монитора фамилий и номеров групп для всех студентов, имеющих средний бал больше 8.[/COLOR]

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include<windows.h>

char bufRus[255];
char*Rus(const char*text);

struct STUDENT
{
	char NAME[30];
	int GROUP;
	int SES[5];
};

int main()
{
	STUDENT STUD1[10];
	//Заполняем
	for (int i=0;i<10;i++)
	{
		printf(Rus("\nСтудент %i\tВведите фамилю и инициалы: "),i+1);
		scanf("%s",STUD1[i].NAME);
		printf(Rus("Введите группу: "));
		scanf("%i",&(STUD1[i].GROUP));
		for (int j=0;j<5;j++)
		{
			printf(Rus("Введите %i-ый средний балл:    "),j+1);
			scanf("%i",&(STUD1[i].SES[j]));
		}
	//Сортируем
		for (int i=0;i<10;i++)						//printf(Rus("\nСумма отрицательных элементов массива равна %d\n"),l);
		{
			for (int j=i;j<10;j++)
			{
				if (STUD1[i].GROUP>STUD1[j].GROUP)
				{
					int tmpGroup=STUD1[i].GROUP;
					char tmpName[30];
					strcpy(tmpName,STUD1[i].NAME);
					int tmpSes[5];
					for (int k=0;k<5;k++) 
					tmpSes[k]=STUD1[i].SES[k];
					STUD1[i].GROUP=STUD1[j].GROUP;
					strcpy(STUD1[i].NAME,STUD1[j].NAME);
					for (k=0;k<5;k++) 
					STUD1[i].SES[k]=STUD1[j].SES[k];
					STUD1[j].GROUP=tmpGroup;
					strcpy(STUD1[j].NAME,tmpName);
					for (k=0;k<5;k++) STUD1[j].SES[k]=tmpSes[k];
				}
			} 
		}
	}
	bool b=false;
	for(i=0;i<10;i++)
	{
		double mid=0;
		for (int j=0;j<5;j++) mid+=STUD1[i].SES[j];
		mid/=5.0;
		if (mid>8.0)
		{
			printf(Rus("\nСтудент %i \tФИО студента: %s \tGroup: %i"),i,STUD1[i].NAME,STUD1[i].GROUP);
			b = true;  
		}
	}
		if (b==false) printf(Rus("\nНет таких студентов"));
		getch();
		return 0;
	}

	char* Rus (const char* text)
{
	CharToOem(text, bufRus);
	return bufRus;
}

Последний раз редактировалось Sazary; 14.05.2010 в 15:33.
kwns вне форума Ответить с цитированием
Старый 14.05.2010, 02:04   #2
kedbl4
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 28
По умолчанию

используй gets только нужно буфер очищать... вот так:

Код:
fflush(stdin);
gets(STUD1[i].NAME);
и еще для того чтобы писать русскими символами не надо никак других функций, проще по другому:
1.
Код:
#include <locale.h>
2. в main функции в начале пишешь
Код:
setlocale(LC_ALL,"Russian");
или
Код:
setlocale(LC_ALL,"rus");
тоже самое
3. теперь просто обращаешься с русскими символами
Код:
printf("Введите %i-ый средний балл: ",j+1);
без всяких переводов и кодировок

Последний раз редактировалось kedbl4; 14.05.2010 в 02:22.
kedbl4 вне форума Ответить с цитированием
Старый 14.05.2010, 08:04   #3
kwns
 
Регистрация: 13.05.2010
Сообщений: 7
По умолчанию

Спасибо за помощь!
kwns вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура roknroll1 Помощь студентам 2 25.01.2010 18:45
Структура, содержащая массивы и матрицу данных - проблема с записью и/или выводом flexin Общие вопросы C/C++ 6 09.01.2010 19:42
C++. Структура. bpystep Помощь студентам 12 24.11.2009 00:28
Структура SL1CK Общие вопросы C/C++ 8 08.06.2009 21:31
структура cr1mson Общие вопросы C/C++ 3 14.01.2009 18:08