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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 22:40   #1
toliabest
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 14
Счастье Сформировать оценки учеников.

Программа:
1) Ввод кол-ва учеников
2)Ввод кол-ва предметов
3)Генерация оценок
4)Вывод информации на экран
5)Вывести на экран учеников, у которых только 4 и 5

Вот пятый пункт у меня не получается, никак не могу придумать как это сделать.

Код:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
struct student
{
	char name[20];
    char np[20];
	int CP;
};
struct predmet
{
	char np[20];
};
int main()
{
int a,i,j,N,M,matr[10][10];
char ch;
float C,B,F;

//int B;
student x;
student *ps;
student *pr;
predmet *pc;
srand(time (NULL));
printf("*************************************\n");
printf("*Examination Work(Programm creating)*\n");
printf("*************************************\n");
printf("Enter first information/Vvedite nachalnie dannie:\n");
printf("Number of students - ");
scanf("%d", &N);
printf("Number of subjects/kolichestvo predmetov - ");
scanf("%d", &M);
G:ch=getchar();
printf("\n1 --> Names/Imena;\n2 --> Subjects/Predmeti;\n3 --> Marks/Ocenki;\n4 --> Information/Informacia;\n5 --> Result/Rezultat.\n6 --> Exit/Vihod.\n");
printf("Please Enter Number/pojaluista vvedite nomer vibrannogo varianta\n");
int flags[50];
F=0;

B=0;

do
{
scanf("%d",&a);
if (a==1) 
{	
	ps = new student [N];
	for (j=0; j<N; j++)
	{
		printf("\n Name of %d student: ", j+1);
		scanf("%s", (ps+j)->name);
	}
	printf("\n");
}
if (a==2) 
{	
	pc = new predmet [M];
	for (i=0; i<M; i++)
	{
		printf("\n Name of %d subject ", i+1);
		scanf("%s", (pc+i)->np);
	}
	printf("\n");
}
if (a==3) 
{ 
	
	{
		srand(time(NULL));
		for (i=0; i<M; i++)
		{
			for (j=0; j<N; j++)	
			{			
				matr[i][j]=rand()%5+1;
			//	matr[i][j]=5;
				printf("\t%d\t ", matr[i][j]);
  			}
		}
	}
	printf("\n");printf("\n");
}
if (a==4) 
{	
	for (i=0; i<M; i++)
		printf("\t%s\t",(pc+i)->np);
	printf("\n");			
	for (i=0; i<M; i++)
	{
		for (j=0; j<N; j++)			
		{
			printf("\t%d\t ", matr[i][j]);
		}
             printf("%s\n",(ps+i)->name);
	}
	printf("\n");printf("\n");
}
if (a==5) 
{ if



	//for(i=0;i<M;i++)
//	{
	//	flags[i]=0;
	//	for(j=0;j<N;j++)
	//	{
		//	if(matr[j][i]==5)
		//		flags[i]=1;
			
	//	}printf("[%d] = %d ",i,flags[i]);
	}
//	B=B+matr[i][j];
//	B=B/j;
//	if (B==5)
///	for(i=0;i<M;i++)
	//	if(flags[i]==1)
	//	{
		//	printf("predmet[%d] - %s\n",i,pc);
			//printf("\t%s\t",(pc+i)->np);	
	//	}
	//	printf("\n");printf("\n");
}
if (a==6) 
{
	printf("Bye-bye!\n");
	return 0;
}
if (a>6) 
{	
	printf("Critical ERROR");printf("\n");printf("\n");
}
}
while(a!=6);
return 0;
}

Помогите пожайлуста )))
toliabest вне форума Ответить с цитированием
Старый 05.05.2010, 22:52   #2
Crudelis
Пользователь
 
Аватар для Crudelis
 
Регистрация: 05.04.2010
Сообщений: 56
По умолчанию

в принципе ваше перебор действий можно было реализовать через switch думаю смотрелось бы красивее, а на счёт оценок 4 и 5 то попробуйте сделать такую проверку: if(matr[j][i]==5||matr[j][i]==4)
и уберите тут if:
if (a==5)
{ if
по моему он лишний
сout<<"Изучаю программирование" точка с запятой
Crudelis вне форума Ответить с цитированием
Старый 06.05.2010, 08:00   #3
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Нужно делать наоборот, если найдена оценка отличная от 4 или 5, тогда этого студента выводить не будем, условие такое:
Код:
if(!((matr[j][i]==5)||(matr[j][i]==4)))
Как я понял flags отвечает за то, выводить этого студента или нет, значит в итоге делаем так
Код:
   for(i=0;i<M;i++)
	{
		flags[i]=1;
		for(j=0;j<N;j++)
		{
			if(!((matr[j][i]==5)||(matr[j][i]==4)))
				flags[i]=0;
			
		}printf("[%d] = %d ",i,flags[i]);
	}
а потом уже сделаешь, если flags[i]=1, то студент является ударником, иначе разгильдяй
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 06.05.2010, 20:32   #4
toliabest
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 14
По умолчанию

mrChester
Спасибо, что попытался разобраться ))
Но все равно не получается, вместо фамилии ученика выводить предмет, и какие-то цифры(
Если будет еще время пожалуйста напиши еще.
toliabest вне форума Ответить с цитированием
Старый 07.05.2010, 11:54   #5
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Код:
   for(i=0;i<M;i++)
	{
		flags[i]=1;
		for(j=0;j<N;j++)
		{
			if(!((matr[j][i]==5)||(matr[j][i]==4)))
				flags[i]=0;
			
		}
                         if (flags[i]==1)
                          printf(ps[i]->name," ");
	}
И если честно не вникал т.к. коментариев нет, непонятно какая переменная у тебя за что отвечает.
В данном случае я предположил, что matr[i][j] это матрица хранящие оценки, где i студент j его оценки... flags[i] после выполнения этого фрагмента будет хранить информацию об ударниках, где flags[i] = 1 если i-й студент ударник, иначе 0.
Вот
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 07.05.2010, 21:30   #6
toliabest
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 14
По умолчанию

mrChester, Спасибо большое , очень помогло, все получилось!
Только вот я узнал , что надо еще и с функциями сделать - то есть где if надо чтоб было это в функции, подскажите как это сделать. И если вам не сложно то напишите, а то пипец завтра сдавать (
toliabest вне форума Ответить с цитированием
Старый 10.05.2010, 01:00   #7
toliabest
Пользователь
 
Регистрация: 06.05.2009
Сообщений: 14
По умолчанию

Только вот я узнал , что надо еще и с функциями сделать - то есть где if надо чтоб было это в функции, подскажите как это сделать. И если вам не сложно то напишите, а то пипец завтра сдавать (
toliabest вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу, определяющую учеников класса, являющимися хорошистами и отличниками по итогам года Roman@- Паскаль, Turbo Pascal, PascalABC.NET 3 02.06.2011 16:28
ScreenMaker ждет вашей оценки Marsik Софт 12 23.02.2010 18:39
Задача про учеников на рекурсию Lion_paint Помощь студентам 1 27.02.2009 19:21
Известны оценки по физике каждого из 20 учеников класса. Определить среднюю оценку по классу sinid Паскаль, Turbo Pascal, PascalABC.NET 6 23.01.2009 17:30
Определить, сколько учеников класса не имеют отметок ниже четырех HOOKER Помощь студентам 6 08.10.2008 19:50