powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Си [Направьте на путь правидный]
25 сообщений из 64, страница 1 из 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
25 сообщений из 64, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Си [Направьте на путь правидный]
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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