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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2010, 16:50   #1
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Параллель класса писала контрольную.
Ровно А% написали на 5; ровно В% на 4; ровно С на 3 и D% на 2.
Найти минимальное количество учащихся параллели.

Как реализовать?
Код:
#include <iostream>
#include <vector>

using namespace std;

int main ()
{
      int aa,c=0,min=0,cr;
      vector <int> ss;
//ifstream fin ("percent.in");
// ofstream fout ("percent.out");
    while ((c!=4) && (cin>>aa)) {ss.push_back(aa); ++c;}
    min=ss[0];
    for (int i=0;i!=4;++i) if (ss[i]==100){min=ss[i]; break;} else if((ss[i]<=min) &&  (ss[i]!=0)) min=ss[i];
    cr=100/min;
    cout<<cr;
   system("pause");
 //fin.close ();
//fout.close ();
  return 0;
}
мой вариант проходит не все тесты

Пример
40 50 5 5
20

Последний раз редактировалось Stilet; 27.10.2010 в 08:37.
boomeer вне форума Ответить с цитированием
Старый 26.10.2010, 19:27   #2
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Если проценты задаются, только целыми числами и максимального количество учащихся 100, то можно так.

Код:
int main()
{
	int arr[4]={0};
	int sum=0;
	puts("Enter data");
	for(int i=0;i<4;i++){
		scanf_s("%d", &arr[i]);
		sum+=arr[i];
	}
	if(sum!=100){// выходит из программы, если сумма процентов не равна 100
		puts("error!!!");
		return 0;
	}
	int min=arr[0];// находит минимальныое значение среди заданных значний
	for(int i=0;i<4;i++){
		if(min>arr[i]&&arr[i]!=0)
			min=arr[i];
	}
	for(int k=min;k>0;k--){ // находим максимальный общий делить, т.е находим сколько масимум может "занимать процентов"  1 человек
		int count=0;
		for(int i=0;i<4;i++){
			if((arr[i]%k)!=0)
				count=1;
		}
		if(count==0){
			printf("min = %d\n",100/k);
			return 0;
		}
	}
}
При каких значениях у вас выдает не верный результат?
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 26.10.2010, 20:18   #3
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Ezhuk Посмотреть сообщение
Если проценты задаются, только целыми числами и максимального количество учащихся 100, то можно так.

Код:
int main()
{
	int arr[4]={0};
	int sum=0;
	puts("Enter data");
	for(int i=0;i<4;i++){
		scanf_s("%d", &arr[i]);
		sum+=arr[i];
	}
	if(sum!=100){// выходит из программы, если сумма процентов не равна 100
		puts("error!!!");
		return 0;
	}
	int min=arr[0];// находит минимальныое значение среди заданных значний
	for(int i=0;i<4;i++){
		if(min>arr[i]&&arr[i]!=0)
			min=arr[i];
	}
	for(int k=min;k>0;k--){ // находим максимальный общий делить, т.е находим сколько масимум может "занимать процентов"  1 человек
		int count=0;
		for(int i=0;i<4;i++){
			if((arr[i]%k)!=0)
				count=1;
		}
		if(count==0){
			printf("min = %d\n",100/k);
			return 0;
		}
	}
}
При каких значениях у вас выдает не верный результат?
тесты не выдаются, а ваша программа не прорабатывает 1 тест - " 5 Неправильный формат вывода "
boomeer вне форума Ответить с цитированием
Старый 26.10.2010, 20:46   #4
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Странно... у меня все нормально работает, проверял.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 26.10.2010, 21:38   #5
boomeer
Форумчанин
 
Аватар для boomeer
 
Регистрация: 04.08.2010
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Ezhuk Посмотреть сообщение
Странно... у меня все нормально работает, проверял.
Код:
#include <fstream>
using std::ifstream;
using std::ofstream;
int main(){
 int arr[4],i,min,k;

 ifstream fin ("percent.in");
 ofstream fout ("percent.out");

 for(i=0;i<4;i++)
  fin>>arr[i];

 min=arr[0];
 for(i=1;i<4;i++)
  if(min>arr[i]&&arr[i])
   min=arr[i];

 for(k=min;k>0;k--){
  for(i=0;i<4;i++)
   if(arr[i]%k)
    break;
  if(i==4){
   fout<<(int)100/k;
   break;
  }
 }
 if(!k)
  fout<<1;
 fin.close();
 fout.close();
 return 0;
}
вот так прошло
boomeer вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проценты в delphi monty "2" Помощь студентам 7 14.04.2010 23:58
Проценты Nitriyc Microsoft Office Excel 4 05.12.2009 22:02
проценты в паскале... Рамик Помощь студентам 2 28.05.2009 10:12
Проценты в Excel OKS Microsoft Office Excel 3 02.03.2009 15:04
Проценты... Siver Microsoft Office Excel 2 20.12.2008 08:57