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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 17:36   #1
ReM
Пользователь
 
Регистрация: 22.09.2008
Сообщений: 27
По умолчанию Проверьте два исходника

Доброго времени суток. Есть две задачки:
1)
Код:
#include<iostream.h>
#include<math.h>
void main()
{
	const i=4;
	int g;
	int mass[i],sum;
	cout<<"Заполните ассив"<<endl;
	for(int j=0;j<i;j++)
	{
		cout<<"Ввидите "<<j+1<<" илимент массива"<<endl;
		cin>>mass[j];
	}
	sum=0;
	for(j=0;j<i;j++)
	{
		sum+=mass[i];
	}
       double n=powl(sum,1/i);
       cout<<n<<endl;
cin>>g;
}
по сле того как введен последнии эл-т массива выскакивет ошибка: "powl: DOMAIN error", подскажите как ее решить

2)
Код:
#include<iostream.h>
#include<conio.h>


typedef struct student
{
	char fio[35];
	char uchZav[25];
	int grup;
};

void main()
{	const n=4;
	student st[n],s;
	int zn;
	for(int i=0; i<n;i++)
	{
	 cout<<"Ввидите данные по "<<i+1<<" студенту"<<endl;
	 cout<<"Ввидите ФИО:                     ";
	 cin>>st[i].fio;
	 cout<<"Ввидите учебное заведение: ";
	 cin>>st[i].uchZav;
	 cout<<"Ввидите номер группы:         ";
	 cin>>st[i].grup;
         cout<<endl;
	 }
 cout<<"Если жилаете упорядочить по ФИО нажмите 1, если по группе 2"<<endl;
	 cin>>zn;
	 switch (zn)
	 {
		case 1:             //Упорядочение по ФИО
			for(i=0;i<n-1;i++)
				for(int j=i+1;j<n;j++)
					if (st[i].fio>st[j].fio)
					{
						s=st[i];
						st[i]=st[j];
						st[j]=s;
					}
		       break;
		case 2:             //Упорядочение по возрастанию группы
			for(i=0;i<n-1;i++)
				for(int j=i+1;j<n;j++)
					if (st[i].grup>st[j].grup)
					{
						s=st[i];
						st[i]=st[j];
						st[j]=s;
					}
			break;
		default:
			cout<<"Вы ввели неверное значение"<<endl; break;
	 }//switch close
  for(i=0;i<n;i++)
	 {
		cout<<"Данные по "<<i+1<<" студенту"<<endl;  
		cout<<"ФИО:                     "<<st[i].fio<<endl;
		cout<<"Учебное заведение: "<<st[i].uchZav<<endl;
		cout<<"Группа:                   "<<st[i].grup<<endl;
	 }
 int qwe;
 cin>>qwe;
}
а в это програмке не проходит упорядочение структуры по полю "фио", пологаю что гдето допустил ошибку, но найти так и не могу.
ReM вне форума Ответить с цитированием
Старый 17.11.2008, 18:59   #2
Gaaze
 
Регистрация: 17.11.2008
Сообщений: 4
По умолчанию

Судя по всему в переменной sum должна хранится сумма элементов массива, но цикл
Код:
for(j=0;j<i;j++)
	{
		sum+=mass[i];
	}
подразумевает что в sum четырежды будет занесен элемент, следующий сразу за массивом (mass[4], элемент, которого в массиве нет), поэтому пишем:
Код:
 sum+=mass[j];
1/i округляется до нуля, поэтому приводим i к типу double:
Код:
double n=powl(sum,1/(double)i);
Gaaze вне форума Ответить с цитированием
Старый 17.11.2008, 19:17   #3
Gaaze
 
Регистрация: 17.11.2008
Сообщений: 4
По умолчанию

Второй пример смотреть не стал, но полагаю что хоть сравнивать две переменные типа char смысл имеет, сравнивать массивы стандартным оператором сравнения уже несколько бессмысленно =).
Предлагаю подключить модуль <string.h> и
Код:
st[i].fio>st[j].fio
заменить на
Код:
strcmp(st[i].fio,st[j].fio);
насчет использования функции strcmp могу и ошибаться, на этот случай советую почитать справку =). Вот такой я хитрый =)

Еще совет(просьба): Приводите текст задания или цели, которые поставлены перед программой и соблюдайте орфографию.


Всем спасибо, с уважением Gaaze.
Gaaze вне форума Ответить с цитированием
Старый 18.11.2008, 00:39   #4
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Извини... пока нет времени...
Если вопрос еще актуален, то в ближайшее время выложу работоспособный код!
StarWorm вне форума Ответить с цитированием
Старый 19.11.2008, 10:01   #5
ReM
Пользователь
 
Регистрация: 22.09.2008
Сообщений: 27
По умолчанию

Цитата:
Судя по всему в переменной sum должна хранится сумма элементов массива, но цикл
Код:

Код:
for(j=0;j<i;j++)
	{
		sum+=mass[i];
	}
подразумевает что в sum четырежды будет занесен элемент, следующий сразу за массивом (mass[4], элемент, которого в массиве нет), поэтому пишем:
Код:
Код:
sum+=mass[j];
Однако просмотрел ... ...спасибо

Цитата:
Еще совет(просьба): Приводите текст задания или цели, которые поставлены перед программой и соблюдайте орфографию.
Приму на вооружения... ...только не уверен что с орфографиее получется - моя вечная проблема.=)

2StarWorm

Покачто не нужно... Попробую способы Gaaze.
ReM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбиение исходника на части SimaoO Общие вопросы C/C++ 2 16.11.2008 15:08
Проверьте ReM Общие вопросы Delphi 1 12.11.2008 17:32
Надо найти код из исходника Черничный Работа с сетью в Delphi 0 20.08.2008 13:19
Проверьте задачку {StaN} Паскаль, Turbo Pascal, PascalABC.NET 3 04.07.2008 13:20
два TMediaPlayer и два AVI-файла zeleniy Компоненты Delphi 0 01.06.2007 14:14