Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Си [Направьте на путь правидный] / 25 сообщений из 64, страница 1 из 3
04.06.2016, 18:34
    #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
04.06.2016, 18:40
    #39250658
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
Если тебе достаточно визуального "удаления" при выводе, то просто добавь в цикл вывода
Код: sql
1.
if (i == index) continue;


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



Не думаю что я понял вас.
Вот скрин выполнение программы, 1ая матрица генерируется случайно а под ней копия вот из копии мне нужно убрать строку с наименьшей суммой которую я высчитал)
...
Рейтинг: 0 / 0
04.06.2016, 19:09
    #39250667
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
LimsЯНе думаю что я понял вас.
Какое слово тебе непонятно?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.06.2016, 19:18
    #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
04.06.2016, 19:27
    #39250673
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
LimsЯя так и не понял куда мне нужно поставить ваш код
Сколько мест, в которых этот вставленный код скомпилируется, ты видишь в этом куске исходника?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.06.2016, 19:57
    #39250679
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
LimsЯ[Направьте на путь правидный]
По большому счету в армии пофиг "правильный" или "праведный", там даже без знаний С++ прекрасно принимают.
...
Рейтинг: 0 / 0
04.06.2016, 21:50
    #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
05.06.2016, 07:45
    #39250751
LimsЯ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
Dimitry SibiryakovLimsЯНе думаю что я понял вас.
Какое слово тебе непонятно?

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

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

ну, вообще то ты очень сильно неправ, потому что имитация чужого поведения - это очень важный фактор обучения, очень много чему животные и люди учатся, просто тупо имитируя поведение своих сородичей.
...
Рейтинг: 0 / 0
07.06.2016, 13:18
    #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
07.06.2016, 13:55
    #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
07.06.2016, 14:05
    #39251949
д0k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
Что бы минимально переделать код, оставив
в нем ваши имена переменных A2[i][j] A[i][j] с их типами и все расчеты и проверки
в том виде , в котором они уже есть ( не меняя код ), а изменить только
размещение переменных вместо стека на куче
рекумендую вам освежить в памяти понятие ссылка .
...
Рейтинг: 0 / 0
07.06.2016, 14:18
    #39251962
д0k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
д0kЧто бы минимально переделать код, оставив
в нем ваши имена переменных A2[i][j] A[i][j] с их типами и все расчеты и проверки
в том виде , в котором они уже есть ( не меняя код ), а изменить только
размещение переменных вместо стека на куче
рекумендую вам освежить в памяти понятие ссылка .


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

В чистом виде на С сейчас мало кото пишет , даже для
микроконтроллеров есть компиляторы С++, а те для которых нет компилятора С++
широким спросом на рынке не пользуются и потенциально через несколько лет
будут сняты с производства.
...
Рейтинг: 0 / 0
10.06.2016, 17:58
    #39254437
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
LimsЯ
"праведный" пишется через Е
...
Рейтинг: 0 / 0
12.06.2016, 18:27
    #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
29.06.2016, 13:13
    #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
29.06.2016, 13:36
    #39264648
566
566
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Си [Направьте на путь правидный]
LimsЯ,

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

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

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

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


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