Форум программистов, компьютерный форум CyberForum.ru

Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку - C++

Восстановить пароль Регистрация
 
Pekishenok
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 8
09.07.2014, 18:23     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку #1
Вставте в массив A(n*m) после строки, первый элемент которой отрицателен, нулевую строку.
( Я не умею добавлять строки вообще, т.к. об этом на парах не рассказывали, а в интернете ничего понятного не нашла.) Я примерно представляю как это сделать, но правильно написать не могу. вот все, что есть:
C++
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
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <math.h>
 
const int N = 3; // число строк 
const int M = 3; // число столбцов 
 
void main()
{
    setlocale(LC_ALL, "Russian");
    int i, j;
    float A[N][M];
    for ( i = 0; i < N; i ++ ) 
        for ( j = 0; j < M; j ++ ) 
        { 
            printf ("A[%d][%d]=", i, j); 
            scanf ("%f", & A[i][j]); // ввод A[i][j] 
        }
        printf("Матрица A\n"); 
        for ( i = 0; i < N; i ++ ) 
        { 
            for ( j = 0; j < M; j ++ ) 
                printf ( "%-9.3f", A[i][j] ); // вывод массива
            printf("\n");
        }
        
    getch ();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 18:23     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку
Посмотрите здесь:

3. Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент. C++
Поменять местами первую строку и строку, в которой находится первый нулевой элемент. Принять, что массив просматривается слева направо и сверху вниз. C++
C++ В матрицах Р (7х8) и Q (8х6) поменять местами первую строку и строчку, в которой находится первый нулевой элемент
Найти количество отрицательных не кратных 3 чисел строки, у которой первый элемент нуль C++
Добавить в матрицу строку после строки, в которой находится максимальный элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
09.07.2014, 19:12     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку #2
C++
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
const int N = 3; // число строк 
const int M = 3; // число столбцов 
 
void main()
{
    setlocale(LC_ALL, "Russian");
    int i, j;
    float A[N+1][M]; // на 1 больше, чтобы было куда вставлять
    for ( i = 0; i < N; i ++ ) 
        for ( j = 0; j < M; j ++ ) 
        { 
            printf ("A[%d][%d]=", i, j); 
            scanf ("%f", & A[i][j]); // ввод A[i][j] 
        }
    for ( i = 0; i < N; i ++ ) 
    { 
          if(A[i][0]<0)
          {
              for (int i2 = N; i2>i; i2 --) // передвигаем оставшиеся строки с конца 
                  for ( j = 0; j < M; j ++ ) 
                      A[i2][j]=A[i2-1][j];
              for ( j = 0; j < M; j ++ )  // обнуляем освободившуюся строку
                       A[i][j]=0;
              break; //  Дальше крутить не надо 
        }
    }
    int Nnew=N;
    if(i<N) // Значит строка нулей была вставлена
          Nnew++;
    printf("Матрица A\n"); 
    for ( i = 0; i < Nnew; i ++ ) 
    { 
            for ( j = 0; j < M; j ++ ) 
                printf ( "%-9.3f", A[i][j] ); // вывод массива
            printf("\n");
    }
        
    getch ();
}
Pekishenok
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 8
09.07.2014, 20:04  [ТС]     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку #3
Получается, что нулевая строка вставляется после первой. а как сделать, что бы она вставлялась после той, где отриц элемент?
BF_
3 / 3 / 1
Регистрация: 07.09.2013
Сообщений: 68
09.07.2014, 20:09     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку #4
zss,
Цитата Сообщение от zss Посмотреть сообщение
float A[N+1][M]; // на 1 больше, чтобы было куда вставлять
а что будет, если у нас будет несколько строк начинающихся на отрицательное число ?
Pekishenok
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 8
09.07.2014, 20:16  [ТС]     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку #5
а если сделаем
for ( j = M; j >0; j -- ) // обнуляем освободившуюся строку
то нулевая строка будет после той, где отриц число.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,154
Завершенные тесты: 1
09.07.2014, 21:37     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку #6
Цитата Сообщение от BF_ Посмотреть сообщение
а что будет, если у нас будет несколько строк
Для этого вставляем break.

Добавлено через 2 минуты
Цитата Сообщение от Pekishenok Посмотреть сообщение
что бы она вставлялась после той,
Тогда сдвигаем на одну строку меньше:
C++
1
2
3
4
5
6
7
8
9
if(A[i][0]<0)
          {
              for (int i2 = N; i2>i+1; i2 --) // передвигаем оставшиеся строки с конца 
                  for ( j = 0; j < M; j ++ ) 
                      A[i2][j]=A[i2-1][j];
              for ( j = 0; j < M; j ++ )  // обнуляем освободившуюся строку
                       A[i+1][j]=0;
              break; //  Дальше крутить не надо 
        }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 20:46     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку
Еще ссылки по теме:

C++ Массив: Изменить все строки матрицы, в которых отрицателен элемент главной диагонали
C++ Массивы. Вставить новую строку после строки, в которой находится первый встречный минимальный элемент
Вставить новую строку после строки, в которой находится первый встречный минимальный элемент C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
BF_
3 / 3 / 1
Регистрация: 07.09.2013
Сообщений: 68
10.07.2014, 20:46     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку #7
C++
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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
void printArray(int **arr, int m, int n)
{
   for(int i = 0; i < m; ++i){
       cout << endl;
       for(int j = 0; j < n; ++j)
            cout << arr[i][j] << " ";
   }
}
 
int** new_array(int **arr, int n)
{
    return (int **) realloc (arr, n * sizeof(int*));
 
}
 
int** insert(int **arr, int n, int pos)
{
    arr = new_array(arr, n);
 
    for(int i = n - 1; i > pos + 1; --i)
        swap(arr[i], arr[i - 1]);
 
    arr[pos + 1] = *arr;
 
    return arr;
}
 
int main()
{
 
  int m, n;
  cout << "Enter rows count, then col count" << endl;
  cin >> m >> n;
 
  int **int_array = new int* [m];
  for(int i = 0; i < m; i++){
      int_array[i] = new int[n];
  }
 
  for(int i = 0; i < m; ++i)
      for(int j = 0; j < n; ++j){
        int t;
        cin >> t;
        int_array[i][j] = t;
      }
 
  for(int i = 0; i < m; ++i){
        if (*int_array[i] < 0){
            ++m;
            int_array = insert(int_array, m, i);
        }
    }
 
  printArray(int_array, m, n);
 
  return 0;
}
Yandex
Объявления
10.07.2014, 20:46     Вставте в массив после строки, первый элемент которой отрицателен, нулевую строку
Ответ Создать тему
Опции темы

Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru