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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2015, 18:50   #1
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
Восклицание Подпрограмма-функции в СИ

Помогите решить вот такие задачки на языке "СИ"

Задания на подпрограммы-функции, возвращающие значение с помощью return

Составить функцию для нахождения длины отрезка на основе координат его вершин. Составить функцию нахождения площади треугольника на основе длин трех его сторон. Используя составленные функции, вычислить площадь произвольного выпуклого m-угольника, координаты вершин которого заданы в двух массивах X(m), Y(m), m≤20.


Задания на подпрограммы-функции, использующие передачу результата по указателю или по ссылке

Составить процедуру, которая последний положительный элемент каждой строки матрицы заменяет суммой остальных элементов строки. Если замена невозможна (нет положительных элементов в строке), то преобразований в строке не производить, а занести номер этой строки в массив NOM без пропусков. Использовать составленную процедуру для матрицы Q(k,l), k≤14, l≤15.
romantik1993 вне форума Ответить с цитированием
Старый 03.01.2015, 19:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попытки и наработки были?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.01.2015, 19:17   #3
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

Нет, я не себе выкладывал

Меня попросили помоч, а времени совершенно нету

По второй задачке вот есть что то похожее но в паскале
Код:
const n = 4; m = 6;
var
    matrix: array[1..n,1..m] of integer;
    i, j: byte;
    sum: integer;
begin
    randomize;  
    for i:=1 to n do begin // исходная матрица
        for j:=1 to m do begin
            matrix[i,j] := random(20)-10; // от -10 до 9
            write(matrix[i,j]:4);
        end;
        writeln;
    end;
    writeln;
 
    for i:=1 to n do begin  // измененная матрица
        sum := 0;
        for j:=1 to m do 
            if j <> m then begin
                write(matrix[i,j]:4);
                sum := sum + matrix[i,j];
            end
            else writeln(' |',sum:3);
    end;
 
end.

Последний раз редактировалось Stilet; 03.01.2015 в 22:25.
romantik1993 вне форума Ответить с цитированием
Старый 03.01.2015, 22:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Составить функцию для нахождения длины отрезка на основе координат его вершин.
Код:
float dist(float ax, float bx, float ay, float by){
 return sqrt(sqr(ax-bx)+sqr(ay-by));
}
Цитата:
Составить функцию нахождения площади треугольника на основе длин трех его сторон.
Код:
float trisquare(float *x, float *y, int n){
 float s=0;
 for(;n>1;n--){
  s+=dist(x[n],x[n-],y[n],y[n-1])
 }
 return  s+dist(x[n],x[0],y[n],y[0])

}
Цитата:
Используя составленные функции, вычислить площадь произвольного выпуклого m-угольника, координаты вершин которого заданы в двух массивах X(m), Y(m)
Код:
const int m=20;
float x[m],y[m];
int i;
for(i=0;i<m;i++){scanf("%f %f\n",&x[i],&y[i])} // Координаты через пробел
printf("%5.2f",trisquare(&x,&y,m));
Так получается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.01.2015, 00:44   #5
romantik1993
Пользователь
 
Регистрация: 12.03.2012
Сообщений: 99
По умолчанию

а со второй программкой не поможете?
romantik1993 вне форума Ответить с цитированием
Старый 04.01.2015, 11:09   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что даже такое простое не рашить?
Ох и студенты пошли... В мое время задавали задачки сложнее.
Ладно:
Код:
const int k=14,l=15;
void rep(int *a){
 int s=0,p=-1,i;
 for(i=0;i<l;i++){
  s+=a[i];
  p=(a[i]>0)?i:p;
 }
 if(p!=-1) a[p]=s-a[p];
}
int main(){
 int q[k][l],i,j;
 for(i=0;i<k;i++){
  for(j=0;j<l;j++){
   scanf("%d",&q[i][j]);
  };
  rep(&q[i]);
 }

 for(i=0;i<k;i++){
  for(j=0;j<l;j++){
   printff("%5d",q[i][j]);
  }; printf("\n");
 }

 getchar();
 return 0;
}
Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подпрограмма функции Mystery08 Помощь студентам 6 25.10.2012 19:24
Подпрограмма Seferus Паскаль, Turbo Pascal, PascalABC.NET 1 09.12.2011 20:20
С++.Массив и подпрограмма функции SkyDreamer Помощь студентам 0 23.11.2007 20:45