powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Си [Направьте на путь правидный]
64 сообщений из 64, показаны все 3 страниц
Си [Направьте на путь правидный]
    #39250654
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день, начну с главного Нужно создать матрицу NxM. Переписать матрицу, удалив из неё строку с наименьшей суммой элементов.
Матрицу то я создал и выяснил какая у неё строка наименьшая а вот удалить не выходит( подскажите дельным словом направьте на путь к решению =)
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
/*Препроцессорные директивы*/
    #include <stdio.h>
    #include <math.h>
/*Начальная точка выполнения программ*/
    int main(){
/*Переменные вводимые пользователем*/
    int n;
    int m;
/*Ввод данных пользователем*/
    printf ("%c[%d;%dmВходные данные.%c[%dm\n", 27,55,33,27,0);
    printf ("Введите N: ");
     scanf ("%d", &n);
    printf ("Введите M: ");
     scanf ("%d", &m);
/*Проверка матрицы*/
   if(n<=0 || m<=0 && n>=9 || m>=9){
    if(n<=0 || m<=0){
	printf ("%c[%d;%dmОшибка:%c[%dm Матрица введена не корректно.\n", 27,55,31,27,0);
	printf ("\n");
      }
      if(n>=9 || m>=9){
	printf ("\n");
	printf ("%c[%d;%dmОшибка:%c[%dm Слишком большой размер матрицы\n", 27,55,31,27,0);
	printf ("\n");
      }
    return 0;
   }
  else{
/*Отступ*/
    printf ("\n");
    printf ("%c[%d;%dm_______________________________________________%c[%dm\n", 27,33,33,27,0);
    printf ("%c[%d;%dm|---------------> RAND матрица <--------------|%c[%dm\n", 27,33,33,27,0);
    printf ("|-------> Размер исходной матрицы %dx%d <-------|\n", m, n);
/*Константные переменные*/
    int A[n][m],i,j,sum=0,s=0,index=0;
/*Алгоритм RAND матрицы(1)*/
    srand(time(0));
    for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        A[i][j]=rand()%50;
        printf ("[%3d] ", A[i][j]);
      }
      printf ("\n");
    }
/*Дубликат первой матрицы RAND*/
    int A2[i][j];
     for (i=0; i<n; i++){
      for (j=0; j<m; j++){
	A2[i][j]=A[i][j];
      }
     }
/*Алгоритм вычисление наименьшей суммы элемента строки в матрице*/
    for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        sum+=A[i][j];
      }
      if (sum<999){
        s=sum;
        sum=0;
        index=i;
      }
      else{
        sum=0;
      }
    }
printf ("%c[%d;%dm|___Строка с наименьшей суммой: %c[%dm",27,33,33,27,0);
printf ("[%d] = [%2d]", index, s);
printf ("%c[%d;%dm___|%c[%dm\n",27,33,33,27,0);
/*Отступ*/
    printf ("\n");
/*Алгоритм Удаление наименьшей строки из матрицы*/
    printf ("%c[%d;%dm_______________________________________________%c[%dm\n", 27,33,33,27,0);
    printf ("%c[%d;%dm|------------> Изменённая матрица <-----------|%c[%dm\n", 27,33,33,27,0);
    printf ("|-------> Размер исходной матрицы %dx%d <-------|\n", m, n);
/*Вывод на экран матрицы с удалённым наименьшей строкой*/
  for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        printf ("[%3d] ", A2[i][j]);
      }
      printf ("\n");
    }
    printf ("%c[%d;%dm|_____________________________________________|%c[%dm\n", 27,33,33,27,0);
/*Отступ*/
    printf ("\n");
  }
}


...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250658
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тебе достаточно визуального "удаления" при выводе, то просто добавь в цикл вывода
Код: sql
1.
if (i == index) continue;


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250664
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЕсли тебе достаточно визуального "удаления" при выводе, то просто добавь в цикл вывода
Код: sql
1.
if (i == index) continue;



Не думаю что я понял вас.
Вот скрин выполнение программы, 1ая матрица генерируется случайно а под ней копия вот из копии мне нужно убрать строку с наименьшей суммой которую я высчитал)
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250667
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯНе думаю что я понял вас.
Какое слово тебе непонятно?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250671
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Вот у меня вывод матрицы с удалённой наименьшей суммой ну по крайне мере я так задумывал )
я так и не понял куда мне нужно поставить ваш код) я новичок не серчайте))))
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
/*Алгоритм Удаление наименьшей строки из матрицы*/
    printf ("%c[%d;%dm_______________________________________________%c[%dm\n", 27,33,33,27,0);
    printf ("%c[%d;%dm|------------> Изменённая матрица <-----------|%c[%dm\n", 27,33,33,27,0);
    printf ("|-------> Размер исходной матрицы %dx%d <-------|\n", m, n);
/*Вывод на экран матрицы с удалённым наименьшей строкой*/
  for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        printf ("[%3d] ", A2[i][j]);
      }
      printf ("\n");
    }
    printf ("%c[%d;%dm|_____________________________________________|%c[%dm\n", 27,33,33,27,0);
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250673
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯя так и не понял куда мне нужно поставить ваш код
Сколько мест, в которых этот вставленный код скомпилируется, ты видишь в этом куске исходника?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250679
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯ[Направьте на путь правидный]
По большому счету в армии пофиг "правильный" или "праведный", там даже без знаний С++ прекрасно принимают.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250704
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LimsЯ,
ближе к телу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
#define myMatrix( ptr,row,cell) ((int *) ptr[row])[cell];
int const row = 3;
int const cell = 8;

int main() {

    // создаем матрицу
    int *d=new int[row];
    for (int i=0;i<row;i++){
        int *ff=new int[cell];
        for(int ii=0;ii<cell;ii++){
            ff[ii]=ii;//заполняем строки
        }
        d[i]= (int) ff;
    }
    // удаляем  вторую строку
    int * d_=new int[row-1];
    int temp=0;
    for (int i=0;i<row;i++){
      if(i==1/*!!*/){ temp=1; continue;}
        d_[i-temp]= d[i];
    }
    delete[]d;
    //print
    for (int i=0;i<row-1;i++){
        for (int ii=0;ii<cell;ii++)
            std::cout<< myMatrix(d_,i,ii);
        std::cout<< "\n";
    }
    return 0;
}
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250751
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovLimsЯНе думаю что я понял вас.
Какое слово тебе непонятно?

Спасибо, разобрался)) ошибка было в алгоритме расчета суммы и поэтому не входил в цикл удаление строки))))
Всем спасибо за помощь)))
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250786
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯошибка было в алгоритме расчета суммы и поэтому не входил в цикл удаление строки))))

Это, конечно, прекрасно, что ты разобрался, но в твоём коде вообще не было цикла удаления
строки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250817
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LimsЯ,
милый друг, я думаю тебе не пришла идея воспользоваться моим кодом в стиле копипаст.
Дело в том что там я оставил 4 ошибки, три из них грубейшие.
Так что если препод глянет на него, он порвет тебя как грелку..
гы хорошее начало будущего девелопера...
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250829
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
void33,
я просмотрел ваш код и подметил для себя что то новое) а копировать ваш код и выдавать за свой не имеет смысла, чему я смогу научиться копируя что то у других)))
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39250830
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TLimsЯ[Направьте на путь правидный]
По большому счету в армии пофиг "правильный" или "праведный", там даже без знаний С++ прекрасно принимают.
не понял к чему вы это сказали но приму к сведению))
ЗЫ: В годовом отпуске уже побывал))))
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39251747
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯvoid33,
я просмотрел ваш код и подметил для себя что то новое) а копировать ваш код и выдавать за свой не имеет смысла, чему я смогу научиться копируя что то у других)))

ну, вообще то ты очень сильно неправ, потому что имитация чужого поведения - это очень важный фактор обучения, очень много чему животные и люди учатся, просто тупо имитируя поведение своих сородичей.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39251885
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
void33LimsЯ,
ближе к телу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
#define myMatrix( ptr,row,cell) ((int *) ptr[row])[cell];
int const row = 3;
int const cell = 8;

int main() {

    // создаем матрицу
    int *d=new int[row];
    for (int i=0;i<row;i++){
        int *ff=new int[cell];
        for(int ii=0;ii<cell;ii++){
            ff[ii]=ii;//заполняем строки
        }
        d[i]= (int) ff;
    }
    // удаляем  вторую строку
    int * d_=new int[row-1];
    int temp=0;
    for (int i=0;i<row;i++){
      if(i==1/*!!*/){ temp=1; continue;}
        d_[i-temp]= d[i];
    }
    delete[]d;
    //print
    for (int i=0;i<row-1;i++){
        for (int ii=0;ii<cell;ii++)
            std::cout<< myMatrix(d_,i,ii);
        std::cout<< "\n";
    }
    return 0;
}



Это не сабжевое С, а С++.
На С вместо delete[] d;
нужно использовать memcpy , memmove, realloc.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39251937
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LimsЯВсем добрый день, начну с главного Нужно создать матрицу NxM. Переписать матрицу, удалив из неё строку с наименьшей суммой элементов.
Матрицу то я создал и выяснил какая у неё строка наименьшая а вот удалить не выходит( подскажите дельным словом направьте на путь к решению =)
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
/*Препроцессорные директивы*/
    #include <stdio.h>
    #include <math.h>
/*Начальная точка выполнения программ*/
    int main(){
/*Переменные вводимые пользователем*/
    int n;
    int m;
/*Ввод данных пользователем*/
    printf ("%c[%d;%dmВходные данные.%c[%dm\n", 27,55,33,27,0);
    printf ("Введите N: ");
     scanf ("%d", &n);
    printf ("Введите M: ");
     scanf ("%d", &m);
/*Проверка матрицы*/
   if(n<=0 || m<=0 && n>=9 || m>=9){
    if(n<=0 || m<=0){
	printf ("%c[%d;%dmОшибка:%c[%dm Матрица введена не корректно.\n", 27,55,31,27,0);
	printf ("\n");
      }
      if(n>=9 || m>=9){
	printf ("\n");
	printf ("%c[%d;%dmОшибка:%c[%dm Слишком большой размер матрицы\n", 27,55,31,27,0);
	printf ("\n");
      }
    return 0;
   }
  else{
/*Отступ*/
    printf ("\n");
    printf ("%c[%d;%dm_______________________________________________%c[%dm\n", 27,33,33,27,0);
    printf ("%c[%d;%dm|---------------> RAND матрица <--------------|%c[%dm\n", 27,33,33,27,0);
    printf ("|-------> Размер исходной матрицы %dx%d <-------|\n", m, n);
/*Константные переменные*/
    int A[n][m],i,j,sum=0,s=0,index=0;
/*Алгоритм RAND матрицы(1)*/
    srand(time(0));
    for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        A[i][j]=rand()%50;
        printf ("[%3d] ", A[i][j]);
      }
      printf ("\n");
    }
/*Дубликат первой матрицы RAND*/
    int A2[i][j];
     for (i=0; i<n; i++){
      for (j=0; j<m; j++){
	A2[i][j]=A[i][j];
      }
     }
/*Алгоритм вычисление наименьшей суммы элемента строки в матрице*/
    for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        sum+=A[i][j];
      }
      if (sum<999){
        s=sum;
        sum=0;
        index=i;
      }
      else{
        sum=0;
      }
    }
printf ("%c[%d;%dm|___Строка с наименьшей суммой: %c[%dm",27,33,33,27,0);
printf ("[%d] = [%2d]", index, s);
printf ("%c[%d;%dm___|%c[%dm\n",27,33,33,27,0);
/*Отступ*/
    printf ("\n");
/*Алгоритм Удаление наименьшей строки из матрицы*/
    printf ("%c[%d;%dm_______________________________________________%c[%dm\n", 27,33,33,27,0);
    printf ("%c[%d;%dm|------------> Изменённая матрица <-----------|%c[%dm\n", 27,33,33,27,0);
    printf ("|-------> Размер исходной матрицы %dx%d <-------|\n", m, n);
/*Вывод на экран матрицы с удалённым наименьшей строкой*/
  for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        printf ("[%3d] ", A2[i][j]);
      }
      printf ("\n");
    }
    printf ("%c[%d;%dm|_____________________________________________|%c[%dm\n", 27,33,33,27,0);
/*Отступ*/
    printf ("\n");
  }
}





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

а не в стеке int A[n][m]

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

Я думаю именно это хочет увидеть преподаватель в вашем коде на С.

Этот код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
/*Дубликат первой матрицы RAND*/
    int A2[i][j];
     for (i=0; i<n; i++){
      for (j=0; j<m; j++){
	A2[i][j]=A[i][j];
      }
     }



у вас должен выглядеть как
копирование 2 областей памяти в непрерывное адресное пространство,
пропустив участок памяти принадлежащий удаляемой строке.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39251949
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что бы минимально переделать код, оставив
в нем ваши имена переменных A2[i][j] A[i][j] с их типами и все расчеты и проверки
в том виде , в котором они уже есть ( не меняя код ), а изменить только
размещение переменных вместо стека на куче
рекумендую вам освежить в памяти понятие ссылка .
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39251962
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
д0kЧто бы минимально переделать код, оставив
в нем ваши имена переменных A2[i][j] A[i][j] с их типами и все расчеты и проверки
в том виде , в котором они уже есть ( не меняя код ), а изменить только
размещение переменных вместо стека на куче
рекумендую вам освежить в памяти понятие ссылка .


Но это уже будет не чистый С , а С++ , но думаю, что преподаватель
вам это простит, если вы ему разложите по полочкам свое понимание , зачем
вы применяли эту в данном случае полезную фичу из С++ в С .

В чистом виде на С сейчас мало кото пишет , даже для
микроконтроллеров есть компиляторы С++, а те для которых нет компилятора С++
широким спросом на рынке не пользуются и потенциально через несколько лет
будут сняты с производства.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39254437
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯ
"праведный" пишется через Е
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39255013
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0kLimsЯВсем добрый день, начну с главного Нужно создать матрицу NxM. Переписать матрицу, удалив из неё строку с наименьшей суммой элементов.
Матрицу то я создал и выяснил какая у неё строка наименьшая а вот удалить не выходит( подскажите дельным словом направьте на путь к решению =)
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
/*Препроцессорные директивы*/
    #include <stdio.h>
    #include <math.h>
/*Начальная точка выполнения программ*/
    int main(){
/*Переменные вводимые пользователем*/
    int n;
    int m;
/*Ввод данных пользователем*/
    printf ("%c[%d;%dmВходные данные.%c[%dm\n", 27,55,33,27,0);
    printf ("Введите N: ");
     scanf ("%d", &n);
    printf ("Введите M: ");
     scanf ("%d", &m);
/*Проверка матрицы*/
   if(n<=0 || m<=0 && n>=9 || m>=9){
    if(n<=0 || m<=0){
	printf ("%c[%d;%dmОшибка:%c[%dm Матрица введена не корректно.\n", 27,55,31,27,0);
	printf ("\n");
      }
      if(n>=9 || m>=9){
	printf ("\n");
	printf ("%c[%d;%dmОшибка:%c[%dm Слишком большой размер матрицы\n", 27,55,31,27,0);
	printf ("\n");
      }
    return 0;
   }
  else{
/*Отступ*/
    printf ("\n");
    printf ("%c[%d;%dm_______________________________________________%c[%dm\n", 27,33,33,27,0);
    printf ("%c[%d;%dm|---------------> RAND матрица <--------------|%c[%dm\n", 27,33,33,27,0);
    printf ("|-------> Размер исходной матрицы %dx%d <-------|\n", m, n);
/*Константные переменные*/
    int A[n][m],i,j,sum=0,s=0,index=0;
/*Алгоритм RAND матрицы(1)*/
    srand(time(0));
    for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        A[i][j]=rand()%50;
        printf ("[%3d] ", A[i][j]);
      }
      printf ("\n");
    }
/*Дубликат первой матрицы RAND*/
    int A2[i][j];
     for (i=0; i<n; i++){
      for (j=0; j<m; j++){
	A2[i][j]=A[i][j];
      }
     }
/*Алгоритм вычисление наименьшей суммы элемента строки в матрице*/
    for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        sum+=A[i][j];
      }
      if (sum<999){
        s=sum;
        sum=0;
        index=i;
      }
      else{
        sum=0;
      }
    }
printf ("%c[%d;%dm|___Строка с наименьшей суммой: %c[%dm",27,33,33,27,0);
printf ("[%d] = [%2d]", index, s);
printf ("%c[%d;%dm___|%c[%dm\n",27,33,33,27,0);
/*Отступ*/
    printf ("\n");
/*Алгоритм Удаление наименьшей строки из матрицы*/
    printf ("%c[%d;%dm_______________________________________________%c[%dm\n", 27,33,33,27,0);
    printf ("%c[%d;%dm|------------> Изменённая матрица <-----------|%c[%dm\n", 27,33,33,27,0);
    printf ("|-------> Размер исходной матрицы %dx%d <-------|\n", m, n);
/*Вывод на экран матрицы с удалённым наименьшей строкой*/
  for (i=0; i<n; i++){
      for (j=0; j<m; j++){
        printf ("[%3d] ", A2[i][j]);
      }
      printf ("\n");
    }
    printf ("%c[%d;%dm|_____________________________________________|%c[%dm\n", 27,33,33,27,0);
/*Отступ*/
    printf ("\n");
  }
}





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

а не в стеке int A[n][m]

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

Я думаю именно это хочет увидеть преподаватель в вашем коде на С.

Этот код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
/*Дубликат первой матрицы RAND*/
    int A2[i][j];
     for (i=0; i<n; i++){
      for (j=0; j<m; j++){
	A2[i][j]=A[i][j];
      }
     }



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

Вы очень неграмотно излагаете свои мысли. Более того, ваши рассуждения некорректны(если я правильно понял то, что вы пытались сказать)
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264625
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь)
-----------------------------
Зашел в тупик реализацией на Си ><
Собственно сама задача
На территории имеется N камер видео наблюдений, исходные координаты которых (xi, yi), i=0..N-1, радиусы локации — ri.

б) для точки T(x,y) определить, в области видимости каких камер видео наблюдений она находится;
в) Нарушитель следует из точки A(x1; y1) в точку B(x2; y2). Сколько камер его заметят.

Входные данные:
- число N -количество камер(1<N<=300);
- N строк вида xi, yi, ri.
- координаты точек T(x,y) и A(x1; y1) , B(x2; y2).

Выходные данные:
- первая строка- порядковые номера камер ВН, в области видимости которых находится точка Т;
- вторая строка - количество камер ВН, заметивших нарушителя.

Мои попытки реализовать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
#include <stdio.h>
#include <math.h>
main(){
	int n,xi,yi,ri,x,y,x1,y1,x2,y2; 						// Переменные вводимые пользователем
	int i=0;									// Переменные цикла

		/*Входные данные задачи [Б]*/
		printf("Введите N -количество камер: ");				// Число N -количество катеров (1<n<=300)
		 scanf("%d" ,&n);
		printf("Введите координаты камер: ");					// N строк вида xi, yi, ri
		 scanf("%d%d%d" ,&xi,&yi,&ri);
		printf("Введите координаты точек:\n");
		printf("T(x,y): ");							// Координаты точек T, A, B
		 scanf("%d%d" ,&x,&y);

		/*Входные данные Задача [В]*/
		printf("A(x1,y1)");							// |---Нарушитель следует из точки [А]--->
		 scanf("%d%d" ,&x1,&y1);
		printf("B(x2,y2)");							// --->в точку [В]---|
		 scanf("%d%d" ,&x2,&y2);

	int k,function;									//Переменные для расчёта

		printf("\n");
		printf("[Задача 1.2]\n[Задание Б]\n");
		function = pow(0-x,2)+pow(0-y,2);					//x^2+y^2
		if (function<=pow(ri,2)) {						//по теореме пифагора проверяем чтобы сумма квадратов координат точки 
		    printf("\tНарушитель находится в области видимости\n");
		}
		else {
		    printf("\tНарушитель не находиться в области видимости камер\n");
		}
}



Проверка попадает ли точка
Тут я хотел сделать проверку попадает ли точка в радиус камер.
Код: sql
1.
2.
3.
4.
5.
6.
function = pow(0-x,2)+pow(0-y,2);					//x^2+y^2
		if (function<=pow(ri,2)) {			        //Определить попадает ли точка с координатами х,у в круг радиуса r.		    printf("\tКатер нарушитель находится в области видимости\n");
		}
		else {
		    printf("\tКатер нарушитель не находиться в области видимости радара\n");
		}




Хотел реализовать чтобы после ввода количества камер "N" к примеру 2 я смог ввести их координаты xi,yi,ri и тут я задумался как мне это сделать, может кто ни будь подкинет литературу где описано что то подобное ?
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264648
566
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
566
Гость
LimsЯ,

если видимость определяется радиусом а не сектором, то итерацией по движению проверять попадает ли точка в радиус камеры
что у вас за задачи такие, катера с локаторами, преступники бегают под камерами на мосту, осталось только санкционки добавить...
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264657
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
566LimsЯ,

если видимость определяется радиусом а не сектором, то итерацией по движению проверять попадает ли точка в радиус камеры
что у вас за задачи такие, катера с локаторами, преступники бегают под камерами на мосту, осталось только санкционки добавить...
Именно, опредиляеться радиусом - попадает ли точка в радиус камеры у меня получилось записать но он проверяет одну точку, а мне нужно что бы при введение числа N тобишь 2, программа мне предлагала ввести этим двум камерам их координаты)))
Вот сижу ищу что то подобное в книжке Stiven Prata - Yazyk programmirovania C
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264658
566
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
566
Гость
LimsЯ,
это сладкое слово итерация.
итерация по точкам а в каждом цикле итерация по камерам
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264674
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
566,
Мне тоже это слово нравиться) не смотря на то что я первый раз его услышал хD, Итерация это тоже самое что и цикл?

Итерация в программировании — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (в отличие от рекурсии).

не приводя при этом к вызовам самих себя что это значит? поясните мне, то до меня не дошло)
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264704
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ566,
Мне тоже это слово нравиться) не смотря на то что я первый раз его услышал хD, Итерация это тоже самое что и цикл?

Итерация в программировании — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (в отличие от рекурсии).

не приводя при этом к вызовам самих себя что это значит? поясните мне, то до меня не дошло)


Вы вычитали в интеренете, что итерация все, что не рекурсия .

Я с такой формулировкой не согласен , так как глубина рекурсии
( количество саомовызовов функции самой из себя ) ИМХО тоже есть итерация.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264733
566
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
566
Гость
LimsЯ,
да забейте, на не продуктивный ручной ввод, храните все в файле под жопой ( рядом с екзешником)
в совершенстве вы получаете массив сущности точек ( зная начало и конец и частоту дискретизации)
и массив сущностей камера

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 for( point o:cointList)
   for(camera c :cameraList){
        /* проверка на попадание, результат камер можно заносить в поле сущности point*/
}

 for( point o:cointList)
 вывод на принт.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264735
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
566,
Может и забил бы но задача поставлена преподавателем и нужно её решить)
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264756
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
566итерация по точкам а в каждом цикле итерация по камерам
Ни к чему это. Достаточно нагуглить формулу расстояния от точки до отрезка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264760
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Это вы уже перешли к пункту [Б]? Мы ещё с пунктом [А] не разобрались)
Приму к сведению вашу подсказку)
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264769
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ566,
Может и забил бы но задача поставлена преподавателем и нужно её решить)

Я бы добавил бы еще пару -тройку заданий типа :

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

......


Когда вы начнете рисовать маршруты, вы сможете выдать
преподавателю в п2 любой ответ ....
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264770
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
569,
Я бы не хотел усложнять себе задание)
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264773
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
Dimitry Sibiryakov566итерация по точкам а в каждом цикле итерация по камерам
Ни к чему это. Достаточно нагуглить формулу расстояния от точки до отрезка.


А никто не обещал что маршрут - отрезок....

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

Насколько я понял в постановке задачи используются целые координаты ...
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264783
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
569А никто не обещал что маршрут - отрезок....
Действительно, никто не обещал, что маршрут из точки А в точку В - прямая или хотя бы
ломанная. Тем более - оптимальная. Если территория не ограничена, он вообще может все
камеры кругом обойти.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264785
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ569,
Я бы не хотел усложнять себе задание)


На сколько я понял , от вас требуется самостоятельно усложнить задание,
проложить маршрут , то есть сфорировать список точек
которые прогнать через алгоритм п1, что бы получить результат по п2.

Такая неявная постановка у меня подозрений не вызывает...
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264788
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
569Такая неявная постановка у меня подозрений не вызывает...

Вот только задание-то надо делать не по надуманной постановке, а по вполне конкретной. И в
ней, скорее всего, подразумевается, что движение из точки А в точку В происходит по прямой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264800
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Да, от точки А до В это прямая.

Мы немного отклонились от поставленной задачи) каким образом можно реализовать ввод - например я ввожу 5 камер ВН и мне предлогаеться ввести их координаты и радиус после идут расчёты в каких камерах засветилась наша точка "Т" , я правильно понял - нужно сделать цикл на камеры и на координаты?
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264809
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯя правильно понял - нужно сделать цикл на камеры и на координаты?
Нет, на координаты цикл не нужен, их гарантированно две. Вводятся одним вызовом scanf().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264819
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯDimitry Sibiryakov,
Да, от точки А до В это прямая.

Мы немного отклонились от поставленной задачи) каким образом можно реализовать ввод - например я ввожу 5 камер ВН и мне предлогаеться ввести их координаты и радиус после идут расчёты в каких камерах засветилась наша точка "Т" , я правильно понял - нужно сделать цикл на камеры и на координаты?

Да.
Я думаю лучше будет написать функцию и вызывать ее в цикле.

Если у Вас С ++ то эта функция будет конструктором класса камера.
У класса камера должны быть еще одна функция типа
inspace( x y) , которая вычисляет находится ли точка ху в видимости камеры.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264852
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
В [Б] две координаты, а В [А] координаты задаются числом камер, то есть сколько N камер ввёл столько ты должен и координат ввести.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264854
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
569,
Я пишу на Си)
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264858
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯсколько N камер ввёл столько ты должен и координат ввести.
У каждой отдельной камеры координат всегда две. Поэтому цикл не требуется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264861
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
я понял вас) но идей как это реализовать пока нет, что подскажите? может вы знаете толковую литературу по моему вопросу или что то похожее?
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264868
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯчто подскажите?
Используй массивы, цикл for и функцию scanf.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39264915
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ569,
Я пишу на Си)

1. Создайте струкруру точка .

2. Создайте струкруру камера ( дополните структуру точка радиусом).

3. Создайте массив камер .


4. заполните массив камер 19351032 значениями .

5. Создайте функцию с 2 параметрами указатель на точку и указатель
на камеру вычисляющую попадает ли точка в обзор камеры.

6. Вызывайте функцию в цикле для точки и массва камер.

7. для п2 создайте массив точек и тоже в цикле....
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265131
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
569,
С структурами я вообще не знаком, можно как ни будь обойтись без них?
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265152
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LimsЯ569,
С структурами я вообще не знаком, можно как ни будь обойтись без них?можно.
Но лучше ознакомиться
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265179
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ569,
С структурами я вообще не знаком, можно как ни будь обойтись без них?


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

Если в жизни собираетесь что то делать
на компьютере не только мышей в браузере,
то настоятельно рекомендется изучить.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265259
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
569,
Надеюсь успею изучить структуры за 3 дня)
Довольно удобно - попытаюсь с помощью структур решить данную задачу.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265336
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут я реализовал ввод кол-ва камер и их координат/радиуса, как мне создать массив что бы после ввода координат и радиуса я мог производить с ними манипуляции?
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <stdio.h>
#include <math.h>

	/*Обьявление структур*/
struct coordinates {				// Координаты
  int xi,yi,ri;
};
struct kamer {					// Камеры
  int n;
  int kamer[3];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};

	/*Начало программы*/
void main() {
  struct coordinates coordinates;		// |---Обьявляем --->
  struct kamer kamer;				// --->как обычные ->
  struct point point;				// --->переменные --|
  
	printf("Введите количество kamer: ");
	 scanf("%d", &kamer.n);
  int i;
	for (i=0; i<kamer.n; i++) {
	  printf("Введите координаты для всех kamer в формате [xi, yi, ri]: ");
	   scanf("%d%d%d", &coordinates.xi, &coordinates.yi, &coordinates.ri);
	}
}

...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265344
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ569,
Надеюсь успею изучить структуры за 3 дня)
Довольно удобно - попытаюсь с помощью структур решить данную задачу.


Попробуйте вместо
int и sizeof(int)
использовать созданную вами структуру,

struct camera
{
int cX;
int cY;
int Ri;

// char cam_name[255];

};

посмотрите, что вызывает макрос sizeof ( camera) для созданного вами типа данных
и как происходит позиционирование по индексу массива.

и к вам должно прийти понимание, что предложенный
выше алгоритм 19351246
очень прост и легко будет читаться любым человеком знающим С...
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265354
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯТут я реализовал ввод кол-ва камер и их координат/радиуса, как мне создать массив что бы после ввода координат и радиуса я мог производить с ними манипуляции?
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <stdio.h>
#include <math.h>

	/*Обьявление структур*/
struct coordinates {				// Координаты
  int xi,yi,ri;
};
struct kamer {					// Камеры
  int n;
  int kamer[3];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};

	/*Начало программы*/
void main() {
  struct coordinates coordinates;		// |---Обьявляем --->
  struct kamer kamer;				// --->как обычные ->
  struct point point;				// --->переменные --|
  
	printf("Введите количество kamer: ");
	 scanf("%d", &kamer.n);
  int i;
	for (i=0; i<kamer.n; i++) {
	  printf("Введите координаты для всех kamer в формате [xi, yi, ri]: ");
	   scanf("%d%d%d", &coordinates.xi, &coordinates.yi, &coordinates.ri);
	}
}




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

Код: plaintext
1.
2.
3.
struct kamer {					// Камеры
  int n;
  int kamer[3];



не нужно так усложнять ...

см сообщение выше и создавайте массив камер
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265407
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
struct coordinates {				// Координаты
  int xi,yi,ri;
};
struct kamer {					// kamer
  int n;
  int cX,cY,Ri;
  char kamer_name[255];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};



это получается что структура координат не понадобиться ? если мы записали координаты в структуру kamer? и создали массив camer_namep[255]
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265456
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
struct coordinates {				// Координаты
  int xi,yi,ri;
};
struct kamer {					// kamer
  int n;
  int cX,cY,Ri;
  char kamer_name[255];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};



это получается что структура координат не понадобиться ?
если мы записали координаты в структуру kamer?


Структура состоящая из координат точки и радиуса - и есть ваша камера.

struct camera
{
int cX;
int cY;
int Ri;
}

char kamer_name[255] - это резервация памяти длиной 255 байт внутри структуры,
типа имя камеры , в качетве примера того,
что вы можете наращивать количество свойств обьекта описываемого структурой.


теперь вы можете создать массив камер


#define cam_num 5 \\ количество камер

camera cam_array[cam_num];


for ( xx =0 ; xx<cam_num; xx++)
{
cam_array[xx] - камера в итерации цикла из массива в зависимости
от значения xx
}


LimsЯи создали массив camer_name[255]

Это массив 255 байт, он вам для выполения заданий не понадобится
но может быть полезен для изучения....
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265530
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такое чувство что я головой об стену бьюсь, не могу понять, осознать что и как делать и использование структур мне не облегчило выполнение задания(
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
#include <stdio.h>
#include <math.h>

	/*Обьявление структур Beginning*/
struct camer {					// camer
  int n;
  int xi,yi,ri;
  char camer_coordinates[255];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};

	/*Начало программы*/
void main() {
	struct camer camer;				// |---Обьявляем как обычные ->
	struct point point;				// --->переменные --|

		printf("Введите количество камер: ");
		scanf("%d", &camer.n);

	/*Входные данные*/
int i,k;
	printf("Введите координаты для всех камер в формате [xi, yi, ri]:\n");
	for (i=0; i<camer.n; i++) {
		k++;
		printf("Камера №[%d]: ",k);
		scanf("%d%d%d", &camer.xi, &camer.yi, &camer.ri);
	}

		printf("Введите координаты точек Т,А,В в формате [x,y]:\n");
		printf("Введите точку Т: ");
		scanf("%d%d", &point.x, &point.y);
		printf("Введите точку A: ");
		scanf("%d%d", &point.x1, &point.y1);
		printf("Введите точку B: ");
		scanf("%d%d", &point.x2, &point.y2);

	/*Алгоритмы решения*/
int camer_array[];
	for(i=0; i<camer.n; i++) {
	  camer_array[];
	}
}

...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265566
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯТакое чувство что я головой об стену бьюсь, не могу понять, осознать что и как делать и использование структур мне не облегчило выполнение задания(
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
#include <stdio.h>
#include <math.h>

	/*Обьявление структур Beginning*/
struct camer {					// camer
  int n;
  int xi,yi,ri;
  char camer_coordinates[255];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};

	/*Начало программы*/
void main() {
	struct camer camer;				// |---Обьявляем как обычные ->
	struct point point;				// --->переменные --|

		printf("Введите количество камер: ");
		scanf("%d", &camer.n);

	/*Входные данные*/
int i,k;
	printf("Введите координаты для всех камер в формате [xi, yi, ri]:\n");
	for (i=0; i<camer.n; i++) {
		k++;
		printf("Камера №[%d]: ",k);
		scanf("%d%d%d", &camer.xi, &camer.yi, &camer.ri);
	}

		printf("Введите координаты точек Т,А,В в формате [x,y]:\n");
		printf("Введите точку Т: ");
		scanf("%d%d", &point.x, &point.y);
		printf("Введите точку A: ");
		scanf("%d%d", &point.x1, &point.y1);
		printf("Введите точку B: ");
		scanf("%d%d", &point.x2, &point.y2);

	/*Алгоритмы решения*/
int camer_array[];
	for(i=0; i<camer.n; i++) {
	  camer_array[];
	}
}



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct camer {					// camer
  int n;  //  каков смысл   этого  поля структуры ?
  int xi,yi,ri; 
  char camer_coordinates[255]; //   и что это ?
};


int camer_array[];  /// в С так делать  нельзя, в скобках должно быть число. Почему  int ?


	for( i=0; i<camer.n;   // вам не предлагали делать   дерево  или список ....  камера  ничего  не знает  о других камерах...
     i++) {
	  camer_array[]; // Это что ? 
	}



вы должны для себя ответить на эти вопросы ,
мне можете не овечать.
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265579
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
569LimsЯТакое чувство что я головой об стену бьюсь, не могу понять, осознать что и как делать и использование структур мне не облегчило выполнение задания(
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
#include <stdio.h>
#include <math.h>

	/*Обьявление структур Beginning*/
struct camer {					// camer
  int n;
  int xi,yi,ri;
  char camer_coordinates[255];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};

	/*Начало программы*/
void main() {
	struct camer camer;				// |---Обьявляем как обычные ->
	struct point point;				// --->переменные --|

		printf("Введите количество камер: ");
		scanf("%d", &camer.n);

	/*Входные данные*/
int i,k;
	printf("Введите координаты для всех камер в формате [xi, yi, ri]:\n");
	for (i=0; i<camer.n; i++) {
		k++;
		printf("Камера №[%d]: ",k);
		scanf("%d%d%d", &camer.xi, &camer.yi, &camer.ri);
	}

		printf("Введите координаты точек Т,А,В в формате [x,y]:\n");
		printf("Введите точку Т: ");
		scanf("%d%d", &point.x, &point.y);
		printf("Введите точку A: ");
		scanf("%d%d", &point.x1, &point.y1);
		printf("Введите точку B: ");
		scanf("%d%d", &point.x2, &point.y2);

	/*Алгоритмы решения*/
int camer_array[];
	for(i=0; i<camer.n; i++) {
	  camer_array[];
	}
}



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct camer {					// camer
  int n;  //  каков смысл   этого  поля структуры ?
  int xi,yi,ri; 
  char camer_coordinates[255]; //   и что это ?
};


int camer_array[];  /// в С так делать  нельзя, в скобках должно быть число. Почему  int ?


	for( i=0; i<camer.n;   // вам не предлагали делать   дерево  или список ....  камера  ничего  не знает  о других камерах...
     i++) {
	  camer_array[]; // Это что ? 
	}



вы должны для себя ответить на эти вопросы ,
мне можете не отвечать.

до меня не доходит как мне реализовать запись x,y,z в массив что бы с ними работать(
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265583
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ,

Размереность массва структур типа камера в вашем случае
не содержится внутри в каком либо поле структуры камера ...

Структура отдельно , массив отдельно ...

представтьте структуру как строку ,
а массив как таблицу состоящую из строк
Массив позволяет вам обращаться к строкам по номеру элемента массива.

Собтсвенно в квадратный скобках у вас должно быть количество камер
при декларации масива ,
и номер камеры ( индекс массива) при обращении к свойствам камеры,
то есть вы обращаетесь к камере по номеру строки...
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265587
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ569пропущено...


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
struct camer {					// camer
  int n;  //  каков смысл   этого  поля структуры ?
  int xi,yi,ri; 
  char camer_coordinates[255]; //   и что это ?
};


int camer_array[];  /// в С так делать  нельзя, в скобках должно быть число. Почему  int ?


	for( i=0; i<camer.n;   // вам не предлагали делать   дерево  или список ....  камера  ничего  не знает  о других камерах...
     i++) {
	  camer_array[]; // Это что ? 
	}



вы должны для себя ответить на эти вопросы ,
мне можете не отвечать.

до меня не доходит как мне реализовать запись x,y,z в массив что бы с ними работать(

19354289
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265598
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
569LimsЯ
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
struct coordinates {				// Координаты
  int xi,yi,ri;
};
struct kamer {					// kamer
  int n;
  int cX,cY,Ri;
  char kamer_name[255];
};
struct point {					// Точки
  int x,y, x1,y1, x2,y2;
};



это получается что структура координат не понадобиться ?
если мы записали координаты в структуру kamer?


Структура состоящая из координат точки и радиуса - и есть ваша камера.

struct camera
{
int cX;
int cY;
int Ri;
}

char kamer_name[255] - это резервация памяти длиной 255 байт внутри структуры,
типа имя камеры , в качетве примера того,
что вы можете наращивать количество свойств обьекта описываемого структурой.


теперь вы можете создать массив камер


#define cam_num 5 \\ количество камер

camera cam_array[cam_num];


for ( xx =0 ; xx<cam_num; xx++)
{
cam_array[xx] - камера в итерации цикла из массива в зависимости
от значения xx
}


LimsЯи создали массив camer_name[255]

Это массив 255 байт, он вам для выполения заданий не понадобится
но может быть полезен для изучения....

Структура состоящая из координат точки и радиуса - и есть ваша камера.
Код: sql
1.
2.
3.
4.
5.
6.
7.
struct camera
{
int cX;
int cY;
int Ri;
}
Это  понял.




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#define  cam_num 5 \\ количество камер 

camera  cam_array[cam_num];


for ( xx =0 ; xx<cam_num; xx++)
{
cam_array[xx]   -   камера  в   итерации цикла  из массива в зависимости 
от значения xx
}


Зачем создавать #define cam_num 5? если число камер задаёт пользователь
Как создать массив camera cam_array[cam_num];? int camera_array[n] так не пойдёт?
Код: sql
1.
2.
3.
4.
5.
6.
for ( xx =0 ; xx<cam_num; xx++)
{
cam_array[xx]   -   камера  в   итерации цикла  из массива в зависимости 
от значения xx
}
этот момент не понял как он будет писать вводимые координаты в массив?
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265613
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ
Зачем создавать #define cam_num 5? если число камер задаёт пользователь

Как создать массив camera cam_array[cam_num];? int camera_array[n] так не пойдёт?



Попробуйте сначала получить конечный результат
с фиксированным количество камер,


а потом допишете параметризацию количества камер
и выделения памяти
под массив камер заданных пользователем....
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39265615
569
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
569
Гость
LimsЯ
Как создать массив camera cam_array[cam_num];?

int camera_array[n] так не пойдёт?


Рекомендую открыть конспект и еще раз прочесть первые
лекции о принципах языка С ,
переменных , типах, обьявлениях переменных и типов итд....
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39266483
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Code
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
int function=0,id=0;
	for (i=0; i<camera.n; i++) {
		id++;
		function = (((point.x-A[i][0])*(point.x-A[i][0]))+((point.y-A[i][1])*(point.y-A[i][1]))); // (x-x0)^2+(y-y0)^2=R^2 где (x0;y0)-это центр окружности,R-это радиус;
			if (function<=pow(A[i+1][2],2)) {	//по теореме пифагора проверяем чтобы сумма квадратов координат точки 
				printf("№[%d] Камера охраны обнаружила нарушителя\n", id);
			}
			else {
				printf("№[%d] Камера охраны не обнаружила нарушителя\n", id);
			}



Решил задачу с записыванием в массив данных x,y,r - а вот с расчётом что то пошло не так,
ввожу значени, а результат не верен - вроде бы все формулы правильно написал.

в основном значение выводит что точка поподает в круг а на самом деле это не так, подскажите где я ошибся
...
Рейтинг: 0 / 0
Си [Направьте на путь правидный]
    #39266644
LimsЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо вам за помощь и советы в решении данной задачи) я подчеркнул для себя много нового)
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Си [Направьте на путь правидный]
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]