Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

666TEHb666:

пока поработаю с градусами,со временем перейду на более точные вычисления)
Я и имел в виду, что у тебя в программе угол вводится в радианах, а удобнее было в градусах. Точность вычислений от единиц измерения, естественно, не зависит, что радианы, что градусы - вычисления одинаково точны, с радианами формулы проще, но градусы удобнее, если угол вводится человеком, а не является промежуточным результатом в формуле.
Ну ... прикольно xD

Просто мне пока советовали вот с прямыми работать.Во-первых проще реализовать

Дело-то в том, что ИМХО решение с площадями реализовать намного проще. Впрочем, во многом это уже дело вкуса. Попробуй реализовать свой вариант, интересно, что получится... Для сравнения вот решение этой задачи с помощью площадей. При вводе x и y-координаты каждой точки разделяются пробелом.

{$N+} var a:array[1..4,(x,y)]of double; s0,s1,s2,s3,p:double; i,j:integer;

function l(i,j:integer):double;begin l:=sqrt(sqr(a[i,x]-a[j,x])+sqr(a[i,y]-a[j,y])) end;

function s(i,j,k:integer):double;var p:double;

begin p:=(l(i,j)+l(j,k)+l(k,i))/2;s:=sqrt(p*(p-l(i,j))*(p-l(j,k))*(p-l(k,i))) end;

begin

for i:=1 to 4 do begin Write('x',i,' y',i,' = '); ReadLn(a[i,x],a[i,y]) end;

s0:=s(1,2,3); p:=1e-10*s0; s1:=s(4,1,2); s2:=s(4,2,3); s3:=s(4,3,1);

if abs(s1+s2+s3-s0)>p then WriteLn('out')

else if (abs(s1)<p)or(abs(s2)<p)or(abs(s3)<p) then Writeln('side') else WriteLn('in');

ReadLn

end.

во-вторых точность расчетов выше
О точности расчетов на компьютере говорить не приходится, она всегда больше чем достаточна. Сейчас программа замечает отклонение от положения точки на прямой, как если бы на поверхность пустыни Сахары (примем ее идеально плоской) сел микроб. Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Кроме того, ввод угла стрельбы (по артиллерийски, возвышения) в радианах выглядит несколько непривычно для артиллеристов , лучше задавать его в градусах и переводить затем в радианы в программе.

Извините, что вмешиваюсь, но для артиллеристов привычнее углы в делениях угломера .

Ссылка на комментарий
Поделиться на другие сайты

:)

666TEHb666: Я и имел в виду, что у тебя в программе угол вводится в радианах, а удобнее было в градусах.

Понятно,но, как вы сказали,везде дело вкуса и точность расчета не меняется все равно :D Так что пусть все остается как есть пока...

Дело-то в том, что ИМХО решение с площадями реализовать намного проще. Впрочем, во многом это уже дело вкуса. Попробуй реализовать свой вариант, интересно, что получится...

Реализовал)))Выкладываю код))Вот только ваш,конечно более компактный,но...дело вкуса :D :)

{$N+}

program Triangular_ABC;

uses Crt;

var xA,xB,xC,xO,yA,yB,yC,yO,

A1,A2,A3,B1,B2,B3,C1,C2,C3,

z1,z2:extended;

s1,s2:integer;

begin

ClrScr;

WriteLn('Please enter x of point A');

ReadLn(xA);

WriteLn('Please enter y of point A');

ReadLn(yA);

WriteLn('Please enter x of point B');

ReadLn(xB);

WriteLn('Please enter y of point B');

ReadLn(yB);

WriteLn('Please enter x of point C');

ReadLn(xC);

WriteLn('Please enter y of point C');

ReadLn(yC);

WriteLn('Now you have triangular ABC.Enter point O that will be find');

WriteLN('Please enter x of point O');

ReadLn(xO);

WriteLn('Please enter y of point O');

ReadLn(yO);

WriteLn('Press <enter>');

ReadLn;

A1:=yB-yA;

B1:=xA-xB;

C1:=yA*xB-yB*xA;

z1:=A1*xC+B1*yC+C1;

z2:=A1*xO+B1*yO+C1;

if z2=0 then

WriteLn('On the border of triangular')

else

begin

if z1>0 then

s1:=1

else

begin

s1:=0;

end;

if z2>0 then

s2:=1

else

begin

s2:=0;

end;

if s1<>s2 then

WriteLn('Outside of triangular')

else

begin

A2:=yC-yA;

B2:=xA-xC;

C2:=yA*xC-yC*xA;

z1:=A2*xB+B2*yB+C2;

z2:=A2*xO+B2*yO+C2;

if z2=0 then

WriteLn('On the border of triangular')

else

begin

if z1>0 then

s1:=1

else

begin

s1:=0;

end;

if z2>0 then

s2:=1

else

begin

s2:=0;

end;

if s1<>s2 then

WriteLn('Outside of triangular')

else

begin

A3:=yC-yB;

B3:=xB-xC;

C3:=yB*xC-yC*xB;

z1:=A3*xA+B3*yA+C3;

z2:=A3*xO+B3*yO+C3;

if z2=0 then

WriteLn('On the border of triangular')

else

begin

if z1>0 then

s1:=1

else

begin

s1:=0;

end;

if z2>0 then

s2:=1

else

begin

s2:=0;

end;

if s1<>s2 then

WriteLn('Outside of triangular')

else

WriteLn('Inside of triangular');

end;

end;

end;

end;

end;

WriteLn('Press <enter> please');

ReadLn

end.

О точности расчетов на компьютере говорить не приходится, она всегда больше чем достаточна. Сейчас программа замечает отклонение от положения точки на прямой, как если бы на поверхность пустыни Сахары (примем ее идеально плоской) сел микроб.

А разве это плохо?

И енто моя последняя программа пока...((Так как с делфи помощи не поступило((и я лечу как фанера над Парижем,нуно чтото делать...но я вернусь))

И да,кстати,можно ведь в этой теме выкладывать свои программы,чтобы их профессионально оценивали,как вы сейчас,и вносили какие либо коррективы?

Ссылка на комментарий
Поделиться на другие сайты

помогите пожалсто ! по си++

зачет горит

Во входном файле записана следующая информация об итогах зимней сессии первого курса. Сведения о каждом студенте-первокурснике (всего их 400) заданы в виде следующего текста: <Фамилия>, <Номер группы>, <Оценка1>, <Оценка2>, <Оценка3>; причем, в фамилии 12-ти букв,номер группы - целое от 101 до 116-ти, каждая оценка – это 2, 3, 4 или 5, причем первая оценка – за экзамен по матанализу, вторая по алгебре, третья – по программированию. Сведения о студентах отделены друг от друга точкой с запятой. Название предмета, который был сдан лучше всего.

Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Извините, что вмешиваюсь, но для артиллеристов привычнее углы в делениях угломера .

Спасибо, правильная поправка.

P.S. Помню, что команды были типа "два сорок", вот и решил, что это градусы :rolleyes: .

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Может кому пригодится - моя контрольная по С++

Она за I-курс, май-июнь. Там всё - и cpp-шник и word.

4-ре задания. Не знаю, как у кого сдаётся, но может кому пригодится.

Контрольная лёгкая конечно, но пришлось попыхтеть...

-------------------------------------------------------------------

___________1.1.jpg ___________1.2.jpg

-------------------------------------------------------------------

Сама контрольная - 4-ре задания. ----> _______________.rar

==============================================

Уважаемый Тролль

Если не трудно - у меня контрольная к 12-му горит, там массивы, классы..., и ещё что-то.

Вариант 13-й, блииннн... Повезло вытянуть 29.12.07-го

С++ - условие:

------------------

Определить класс "Аэрофлот", содержащий следующие поля:

_ Название пункта назначение рейса;

_ Номер рейса;

_ Тип самолёта.

Определить методы доступа к этим полям и методы извлечения, и вставки для объектов.

Написать программу, выполняющую следующие действия:

_ Ввод с клавиатуры данных в массив, состоящий из 7-ми объектов класса:

_ Ввод на экран пунктов назначения и номеров рейсов обслуживаемых самолётов, тип которого введён с клавиатуры, если таких нет, вывести соотвестсвующее сообщение

post-17296-1199752026_thumb.jpg

post-17296-1199752073_thumb.jpg

_______________.rar

Изменено пользователем alancor
Ссылка на комментарий
Поделиться на другие сайты

alancor:

Не могу сказать, что точно выполнил задание, т.к. не совсем понял, что такое "методы извлечения, и вставки для объектов" , а методы доступа определил только нужные (в случае чего можно дополнить ненужными методами), но согласно заданию работает. Вероятно, выдаваемые подсказки тоже можно сделать попонятнее.

// aeroflot.cpp#include <iostream.h>#include <string.h>using namespace std;class aeroflot				   { private: string target;		    int  tripnumber;			 string planemode;	    public:void settrip(){  cout << endl << "target: "; cin >> target;  cout << endl << "number: "; cin >> tripnumber;  cout << endl << "mode: "; cin >> planemode;   cout << endl;}string Otarget()   { return target;	  }int	Onumber()  { return tripnumber; }string Omode()	{ return planemode;  }};int main(){  int c=0; string pl;  aeroflot a[7];  for(int i=0; i<=6; i++) {	 cout << "plane " << i+1 << endl;a[i].settrip();  } cout << endl << "mode: "; cin >> pl; cout << endl; for (int i=0; i<=6; i++) if (a[i].Omode()==pl)    {	cout << "target " << a[i].Otarget() << endl; 	cout << "number " << a[i].Onumber() << endl; 	cout << endl; c++;    }  if (c==0) cout << "no such plane! " << endl; return 0;} 
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

блин наррод срочно выручайте плиз вот задание

Задание:написать командный файл для установки атрибутов одного файла (используя команду ATTRIB) Имя файла и список атрибутов задаються в командной строке.В командном файле использовать только один формальный параметр %1.С помощью команды CHOICE опеределить снимаеться или устанавлеваеться атрибут.Проверить существование файла

Ссылка на комментарий
Поделиться на другие сайты

Прошу помочь в решении задач.

Задача 1.

Написать шаблон функции, принимающую 2 массива и выводящую 3-й массив, равный сумме 2-х первых.

Задача 2.

Написать шаблон функции, возвращающую среднее арифметическое всех элементов массива и перезагрузить ее для среднеарифметического любых 2-х и любых 3-х чисел.

Ссылка на комментарий
Поделиться на другие сайты

Помогите пожалуйста сделать три лабораторные работы по C. Всего 10 заданий. Я этот Си во второй раз в жизни вижу - как делать не знаю :(

В понедельник экзамен, выручайте :D

Очень на вас надеюсь, помогите :D

Labs.rar

Labs.rar

Ссылка на комментарий
Поделиться на другие сайты

Darth Emil:

Лабораторная работа 1

1.Самостоятельно разработать, составить и отладить программу, вычисляющую среднее арифметическое трех вещественных чисел, введенных с клавиатуры.

2.Изменить формат обрабатываемых данных на long int, сохранить файл под другим именем, снова откомпилировать программу, учесть и проанализировать возникающие в процессе компиляции ошибки, обратить внимание на способ округления целых чисел в языке Си.

#include <stdio.h>main(){float i,j,k,l;scanf("%f%f%f",&i,&j,&k);l=(i+j+k)/3;printf("%g\n",l);}

и

#include <stdio.h>main(){long i,j,k,l;scanf("%li%li%li",&i,&j,&k);l=(i+j+k)/3;printf("%ld\n",l);}

Лабораторная работа 2

1.Разработать и отладить программу, вычисляющую среднее арифметическое значение массива восьми целых чисел, использующую цикл for. Значения элементов массива должны быть заданы при его объявлении. При выполнении разрешается пользоваться материалами лабораторной работы №1.

2.К имеющейся программе добавить объявление двумерного массива вещественных чисел (2 на 3) и заполнить его значениями, введенными с клавиатуры. Для ввода использовать любой тип цикла.

3.Вывести на экран значения массива, созданного в п.2, в виде таблицы, используя форматный вывод данных функции printf.

#include <stdio.h>main(){int i,j,k=0; int a[8]={3,1,4,1,5,9,2,6}; float b[2][3]={1,2,3,4,5,6};for(i=0;i<8;i++)k+=a[i];printf("%d\n",k/8);printf("  column 1  column 2  column 3 \n");for(i=0;i<2;i++){for(j=0;j<3;j++)printf("%10.3f",b[i][j]);printf("\n");}}

Лабораторная работа 3

1.Создать функцию, читающую с клавиатуры два числа типа long и сохраняющую их в соответствующих глобальных переменных.

2.Создать функцию Max(), использующую в качестве аргументов два числа, полученных в предыдущей функции и возвращающую максимальное из них.

3.Вывести на экран результат работы функции Max(), предварительно преобразовав его к вещественному типу. В функции printf() использовать форматный спецификатор “%f”.

4.Создать собственный тип, представляющий собой одно машинное слово (2 байта без знака). Создать тип для определения массивов 10 таких машинных слов, используя ранее созданный тип. Создать два массива пользовательского типа, причем значения одного из них должны быть заданы при объявлении. Составить функцию, копирующую содержимое одного массива в другой. Массивы должны быть заданны в качестве аргументов функции.

Вывести полученный массив на экран (в любом виде).

#include <stdio.h>long a,b;Read(){scanf("%ld%ld",&a,&b);}Max(){return a>b?a:b;}typedef unsigned own;typedef own mown[10];Copy(c,d)mown c,d;{int i;for(i=0;i<10;i++)c[i]=d[i];}main(){int i;mown e,f={1,2,3,4,5,6,7,8,9,0};Read();printf("%f\n",Max()+.0);Copy(e,f);for(i=0;i<10;i++)printf(" %u",e[i]);printf("\n\n");}
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Огромное спасибо! :bye1: Выручил :doh: А можно вкратце описать какая строчка что делает? :rolleyes:

Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Ок, спасибо :rolleyes: А можно ещё чтобы в 2-й и 3-й лабораторке задания были в виде отдельных программ? А то трудно отделить - ведь всё в одной программе, где какое задание начинается непонятно...

Ссылка на комментарий
Поделиться на другие сайты

А можно вкратце описать какая строчка что делает?

Darth Emil

Если в будущем будешь заниматься этой творческой работой, то это называется - постановка комментариев

Тролль

Есть ещё одна небольшая просьба. Я сдал контрольное задание, как допуск к основному экзамену и там проставил комментарии.

Проверь пожалуйста их правильность и если где-то не хватает то добавь. Заранее огромное спасибо!!! :rolleyes:

//Определение класса Аэрофлот#include <iostream.h>#include <string.h>using namespace std;class aeroflot					 //задание класса				   { private:						  //закрытые данные класса string target;				  //Пункт назначения int  tripnumber;			  //Номер самолёта		 string planemode;		  //Марка самолёта   public:						  //Открытыеvoid settrip()   //Функция ввода/вывода значения переменных{  cout << endl << "target: "; cin >> target;	//Ф-ция возвращения значения пункта назначения  cout << endl << "number: "; cin >> tripnumber;	//Ф-ция возвращения значения номер самолёта  cout << endl << "mode: "; cin >> planemode;	//Ф-ция возвращения значения марка самолёта  cout << endl;}string Otarget()   { return target;	  }int	Onumber()  { return tripnumber; }string Omode()	{ return planemode;  }};int main()			//Главная функция{  int c=0; string pl;  aeroflot a[7];				//Задание массива for(int i=0; i<=6; i++)   //Ф-ция ввода массива {	 cout << "plane " << i+1 << endl;a[i].settrip();  } cout << endl << "mode: "; cin >> pl; cout << endl; for (int i=0; i<=6; i++) if (a[i].Omode()==pl) //Присваивание ф-ции данных массива   {	cout << "target " << a[i].Otarget() << endl; 	cout << "number " << a[i].Onumber() << endl; 	cout << endl; c++;    }  if (c==0) cout << "no such plane! " << endl;  //Если массив пустой return 0;} 
Изменено пользователем alancor
Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Так можно получить пояснения? :( И код каждой программы по отдельности, если можно... :(

Ссылка на комментарий
Поделиться на другие сайты

Darth Emil:

Комментарии - для тебя, в текст сдаваемой программы их включать не надо; такие программы в комментариях не нуждаются, так как ничего осмысленного эти программы не делают. Как принято в C++ (но не в C), комментарии начинаются с //.

Лабораторная работа 1

На части уже было разбито.

Комментарии:

#include <stdio.h> //включили в текст программы содержание заголовочного файла stdio (стандартный ввод-вывод), где есть спецификации функций scanf и printf

main(){ // main - главная функция, ее будет вызывать операционная система после компиляции

float i,j,k,l; // определили имена четырех вещественных чисел одинарной точности

scanf("%f%f%f",&i,&j,&k); // scanf - стандартная функция ввода; строка "%f%f%f" задает, что будут вводиться три вещественных числа, дальше идут адреса предназначенных для них переменных ( &i дает адрес переменной i )

l=(i+j+k)/3; // вычисление среднего

printf("%g\n",l);} // вывод значения переменной l по формату g (формат вывода вещественного числа, форма вывода в этом формате выбирается автоматически)

Лабораторная работа 2

Разбил по пунктам с постепенным наращиванием.

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

По пункту 1:

#include <stdio.h>

main()

{

int i,k=0; int a[8]={3,1,4,1,5,9,2,6};

for(i=0;i<8;i++)k+=a;printf("%d\n",k/8);

}

По пунктам 1-2:

#include <stdio.h>

main()

{

int i,j,k=0; int a[8]={3,1,4,1,5,9,2,6}; float b[2][3];

for(i=0;i<8;i++)k+=a;printf("%d\n",k/8);

for(i=0;i<2;i++){for(j=0;j<3;j++){printf("b[%1d,%1d]=",i,j);

scanf("%f",&b[j]);}printf("\n");}

}

Целиком по пунктам 1-3:

#include <stdio.h>

main()

{

int i,j,k=0; int a[8]={3,1,4,1,5,9,2,6}; float b[2][3];

for(i=0;i<8;i++)k+=a;printf("%d\n",k/8);

for(i=0;i<2;i++){for(j=0;j<3;j++){printf("b[%1d,%1d]=",i,j);

scanf("%f",&b[j]);}printf("\n");}

printf(" column 1 column 2 column 3 \n");

for(i=0;i<2;i++){for(j=0;j<3;j++)printf("%10.3f",b[j]);printf("\n");}

}

Комментарии:

int a[8]={3,1,4,1,5,9,2,6}; // определяем массив из восьми целых и задаем им начальные значения

for(i=0;i<8;i++)k+=a; // для i, меняющегося от 0 с прибавлением 1 (++ - операция прибавления единицы), пока i меньше 8, выполнять прибавление к k элементов a

printf("%d\n",k/8); // вывод среднего, в k была сумма всех элементов, после вывода по формату d перевод строки (\n)

for(i=0;i<2;i++){for(j=0;j<3;j++){printf("b[%1d,%1d]=",i,j);scanf("%f",&b[j]);}printf("\n");} // цикл в цикле; внутренний цикл выводит подсказки на ввод элементов строки и вводит их значения, внешний - выполняет циклы по строкам и каждый раз после ввода элементов строки переводит строку на экране (символ \n - перевод строки)

printf(" column 1 column 2 column 3 \n"); // печатаем строку заголовков столбцов таблицы

for(i=0;i<2;i++){for(j=0;j<3;j++)printf("%10.3f",b[j]);printf("\n");} // цикл в цикле; внутренний цикл выводит значения элементов строки, внешний - выполняет внутренние циклы и каждый раз после выполнения внутреннего цикла переводит строку

Лабораторная работа 3

По пунктам 1-3:

#include <stdio.h>

long a,b;

Read(){scanf("%ld%ld",&a,&b);}

Max(){return a>b?a:b;}

main()

{

int i;

Read();printf("%f\n",Max()+.0);

}

По пункту 4

#include <stdio.h>

typedef unsigned own;

typedef own mown[10];

Copy(c,d)mown c,d;{int i;for(i=0;i<10;i++)c=d;}

main()

{

int i;

mown e,f={1,2,3,4,5,6,7,8,9,0};

Copy(e,f);

for(i=0;i<10;i++)printf(" %u",e);printf("\n\n");

}

Все четыре пункта вместе уже были.

Комментарии:

long a,b; // определили два целых двойной длины

Read(){scanf("%ld%ld",&a,&b);} // определили функцию чтения двух целых удвоенной длины

Max(){return a>b?a:b;} // определили функцию, возвращающую максимум из значений двух ее аргументов

Read();printf("%f\n",Max()+.0); // печатаем значение максимума, преобразованное к вещественному типу прибавлением вещественного значения нуля

typedef unsigned own; //own теперь обозначает unsigned (тип неотрицательных целых)

typedef own mown[10]; //mown теперь обозначает тип массива из 10 переменных типа own

Copy(c,d)mown c,d;{int i;for(i=0;i<10;i++)c=d;} //копируем поэлементно значения из d в с

for(i=0;i<10;i++)printf(" %u",e);printf("\n\n"); //перебираем значения индексов массива e и выводим их, потом дважды переводим строку на экране

Уф, комментировать труднее, чем написать сами программки.

Удачи! :(

P.S. Извини, до вечера не было времени :( .

Разбить задачи совсем отдельно нельзя, потому что задания часто идут по типу: 2. создать функцию Max 3. Использовать функцию Max для..., так что пункт 3 требует, чтобы пункт 2 тоже был в программе. Надеюсь, разберешься.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

alancor:

Не думаю, чтобы они обращали большое внимание на комментарии. Лишь бы были.

Обычно предполагается, что читающий комментарии человек знает язык, поэтому упор делается на пояснение смысла действий, а не обозначений языка. Хороший способ написать программу - написать сначала комментарии, а потом вставлять между ними операторы. Ну и хороший стиль требовал бы еще описания в комментариях в начале программы, что она должна делать, так называемые вводные комментарии. Но у вас всё это не должно быть важным.

//Аэрофлот

#include <iostream.h>

#include <string.h>

using namespace std;

class aeroflot //Класс рейсов самолетов

{

private: //Закрытые данные класса

string target; //Пункт назначения

int tripnumber; //Номер самолёта

string planemode; //Тип самолёта

public:

void settrip() //Ввод данных рейса

{

cout << endl << "target: "; cin >> target; //Ввод пункта назначения

cout << endl << "number: "; cin >> tripnumber; //Ввод номера самолёта

cout << endl << "mode: "; cin >> planemode; //Ввод типа самолета

cout << endl;

}

string Otarget() { return target; } //Выдает пункт назначения

int Onumber() { return tripnumber; } //Выдает номер рейса

string Omode() { return planemode; } //Выдает тип самолета

};

int main() //Главная функция

{

int c=0; //Счетчик количества подходящих рейсов

string pl; //Тип самолета

aeroflot a[7]; //Массив данных 7 рейсов

for(int i=0; i<=6; i++) //Ввод данных всех рейсов

{

cout << "plane " << i+1 << endl;

a.settrip(); //Ввод данных рейса

}

//Поиск подходящих рейсов по типу самолета

cout << endl << "mode: "; cin >> pl; cout << endl; //Ввод типа самолета

for (int i=0; i<=6; i++) //Просмотр всех рейсов

if (a.Omode()==pl) //Если тип самолета совпадает с заданным

{

cout << "target " << a.Otarget() << endl; //Вывод пункта назначения

cout << "number " << a.Onumber() << endl; //Вывод номера рейса

cout << endl; c++;

}

if (c==0) cout << "no such plane! " << endl; //Рейсов с заданным типом самолета нет

return 0;

}

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Тролль:

Не думаю, чтобы они обращали большое внимание на комментарии.

Так уж получается, руководство института решило, что нам нужно именно начать с высшего пилотажа, а не с малого, более доступного. И преподаватель с самой первой программы всегда твердила, чтобы мы ставили комментарии и всегда делала на этом упор мотивируя тем, что любой другой взяв в руки нашу программу с лёгкостью поймёт о чём идёт речь. С одной стороны она конечно права, в том плане, что порой неопытному, начинающему первые шаги в программировании человеку даётся возможгность разобраться, что есть что... Да и она видать при проверке наших работ видит, как и что мы делали и из чего исходили.

Обычно предполагается, что читающий комментарии человек знает язык,

Согласен! Очень опытному программисту комментарии не нужны. Но в том году на практ. занятии нам сказали поменяться своими написанными прогами и попробовать в них разобраться... Мдааммссс..., это было что-то... :blink: :1eye:

Хороший способ написать программу - написать сначала комментарии, а потом вставлять между ними операторы.

Огооо..??? А если моя программа выливается в тысячу листингов???

Ну и хороший стиль требовал бы еще описания в комментариях в начале программы, что она должна делать, так называемые вводные комментарии. Но у вас всё это не должно быть важным.

Точно! Именно заголовок программы, который компилятор всё равно, как и комментарии не воспринимает, и повествует о многом!!! И на это тоже идёт строгий упор.

Ладно, Тролль:, огромное спасибо тебе за помощь!!! Выручил очень!!! :rolleyes: :)

Изменено пользователем alancor
Ссылка на комментарий
Поделиться на другие сайты

Друзья помогите написать такую програмку:

:bye1: Есть N количество островов у каждого острова есть свои кординаты (x,y), есть туземец у которого есть лодка которая проплывает не больше чем L указанное растояние. Нужно чтоб прогамма находила до скольких островов может доплыть туземец.

Число N вводиться при чем остров както обозначаеться

Кординаты островов тоже нужно вводить

Число L вводиться

Ссылка на комментарий
Поделиться на другие сайты

Trueman:

Действительно так? Уж больно просто, да и задача слишком идиотская. Такие задачи, вообще-то, и сам бы мог решать. А то, если так пойдет, скоро вопросы по таблице умножения появятся... Если нужно, конечно, иогу набросать текст, это меньше, чем этот ответ...

P.S. Или имеется в виду - "лодка проплывает за один раз"? То есть найти все острова, которые отделены от исходного цепочкой переходов не более чем L км каждый?

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Ну мне конечно стыдно :blushing: :blush2: но плиз выложи текст програмки если не хочеш сюда писать кинь на мыло blackward@mail.ru

И на счет програмки: нужно не от одного острова куда сможет доплыть чувак а так что если он доплыл то он и дальше может плыть отталкиваясь от

того острова до которго он добрался какбы постепенно рисуеться путь до куда может добраться чувак но в выводе должно быть какое количество островов обьехал туземец и путь через какие острова он плыл?

Ссылка на комментарий
Поделиться на другие сайты

Trueman:

Как всегда, в условии остаются неясности, например, я не знаю, где живет этот туземец. Принял, что он сидит в лодке посреди океана или живет на базовом острове, название которого не вводится. Если нет, пусть жалуется.

Решение несложно. Вводим количество, координаты и имена всех островов-соседей. Каждый, до которого можно доплыть за один переход, помечаем как доступный. Для каждого из этих островов находим множество островов, до которых можно доплыть за один переход. Для каждого из этих островов... и так далее, цикл, не более N этапов (худший случай - острова вытянулись в цепочку).

Уже найденные доступные острова из проверки их доступности можно, естественно, исключить. Можно было бы исключить их и из перебора, но нет смысла в оптимизации. Если бы было хотя бы тысяч пять островов... Также можно было бы заранее вычислить расстояния между всеми островами, но они считаются очень легко, и опять же нет смысла в ненужных оптимизациях. Всё, размышления закончены, можно писать программу.

Вводимые данные для каждого острова разделяются пробелами, например,

5 3.7 Гренландия

Сначала вариант программы по первому условию, когда нужен был только список доступных островов (его я сделал сначала)

program Islands;var i,j,k,N:integer; L,L2:real;O:array[0..100]of record Name:string[20];X,Y:real;B:boolean end;beginWrite('Number of islands: ');ReadLn(N); Write('L: ');ReadLn(L); L2:=sqr(L);for i:=1 to N do begin Write('Island ',i:2,': X Y Name? ');ReadLn(O[i].X,O[i].Y,O[i].Name) end;O[0].B:=true; for i:=1 to N do O[i].B:=false; for i:=1 to N do for j:=0 to N do if O[j].B then for k:=0 to N do  if not O[k].B then O[k].B:=sqr(O[j].X-O[k].X)+sqr(O[j].Y-O[k].Y)<=L2;WriteLn('Accessible islands:'); for i:=1 to N do if O[i].B then WriteLn(O[i].Name);ReadLnend.

Еще и пути к доступным островам и счет их количества? Тогда можно ввести в данные каждого острова место для пути к нему и как только доберемся до этого острова, заполнять его путем острова, с которого пришли, плюс имя острова, куда пришли. Соответственно программа немножко растолстеет:

program IslandsRoots;var i,j,k,N:integer; L,L2:real; O:array[0..100] of record Name:string[20]; X,Y:real; B:boolean; Root:string end;beginWrite('Number of islands: ');ReadLn(N); Write('L: ');ReadLn(L); L2:=sqr(L);for i:=1 to N do begin Write('Island ',i:2,': X Y Name? ');ReadLn(O[i].X,O[i].Y,O[i].Name) end;O[0].B:=true; for i:=1 to N do begin O[i].B:=false;O[i].Root:=' ' end;for i:=1 to N do for j:=0 to N do if O[j].B then for k:=0 to N do  if not O[k].B then if sqr(O[j].X-O[k].X)+sqr(O[j].Y-O[k].Y)<=L2 then   begin O[k].B:=true; O[k].Root:=O[j].Root+' >'+O[k].Name end;WriteLn('Accessible islands:'); k:=0; for i:=1 to N do if O[i].B then begin Inc(k); WriteLn(O[i].Root) end; if k=0 then WriteLn('None') else WriteLn('Total ',k,' accessible islands'); ReadLnend.
Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Помогите, пожалуста, с задачками по С++, тема ФУНКЦИИ.

Вот первая

Написать функцию, которая получает в качестве аргументов целое положительное число и систему счисления, в которую это число должно переводится (системы счисления от 2 до 36). Например, при переводе числа 27 в систему счисления 16 должно получиться 1B; 13 в 5-ю - 23; 35 в 18-ю - 1H.

Вот вторая

Игра «кубики». Условие: имеется два игральных кубика со значениями от 1 до 6. Игра происходит с компьютером, кубики бросаются поочередно. Побеждает тот, у кого сумма выпавших очков по итогам пяти бросков больше. Предусмотрите возможность получения первого хода человеком или компьютером. Кубики отображаются с помощью символов. В конце игры необходимо выводить среднюю сумму по броскам для обоих участников.

Вот третья

Написать функцию, которая принимает в качестве параметров вещественное число и количество знаков после десятичной точки, которые должны остаться. Задачей функции является округление вышеуказанного вещественного числа с заданной точностью.

Заранее спасибо за помощь.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...