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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Anastasi95
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 15
#1

Удалите из массива A(n,m) все столбцы, в которых первый элемент принадлежит отрезку [b,c] - C++

09.07.2014, 21:34. Просмотров 460. Ответов 6
Метки нет (Все метки)

удалите из массива A(n,m) все столбцы, в которых первый элемент принадлежит отрезку [b,c].

но в этом коде строчки по идеи не удаляются, а в 0-е превращаются, да и не ищет он элементы, помогите исправить

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
#include <iostream>
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
 
const int M = 3; // число строк
const int N = 2; // число столбцов
void main()
{
int i, j, A[M][N],b,c;
printf("vvedite b : \n");
scanf("%d", &b);
printf("vvedite c : \n");
scanf("%d", &c);
for ( i = 0; i < M; i ++ ) // цикл по строкам
for ( j = 0; j < N; j ++ ) // цикл по  столбцам строк
 
{
printf ("A[%d][%d]=", i, j); // подсказка для ввода
scanf ("%d", & A[i][j]); // ввод A[i][j]
}
 
 
printf("Матрица A\n");
for ( i = 0; i < M; i ++ )
{ // цикл по строкам
for ( j = 0; j < N; j ++ ) // вывод одной строки (в цикле)
printf ( "%4d", A[i][j] ); // 4 символа на число
printf("\n"); // переход на другую строку
}
;
for ( i = 0; i < M; i ++ ) // цикл по строкам
{
for ( j = 0; j < N; j ++ ) // цикл по  столбцам строк
{
    if ((A[i][0])<b && (A[i][0])>c)
   {
for (int a = N; a>j; a --) // передвигаем оставшиеся строки с конца 
for ( j = 0; j < M; j ++ ) 
A[a][j]=A[a-1][j];
for ( j = M; 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 ();
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 21:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалите из массива A(n,m) все столбцы, в которых первый элемент принадлежит отрезку [b,c] (C++):

Удалить все столбцы, в которых первый элемент больше последнего - C++
Пишу на codeblocks. Раньше в других программах. Не могу поставить брейкпоинт и понять в чем ошибка. просто напросто нет печати измененного...

Удалить все столбцы матрицы, в которых первый элемент больше последнего - C++
Спасите помогите запуталась в задаче,не получается,хотя вроде всё понятно(( Удалить все столбцы, в которых первый элемент больше...

В двумерном массиве удалить все столбцы в которых первый элемент больше последнего - C++
В двумерном массиве удалить все столбцы в которых первый элемент больше последнего.

Удалите из массива все элементы, первые цифры которых четные. - C++
Удалить из массива все элементы, первые цифры которых четные.(на С++)

Записать в двоичный файл столбцы массива, у которых первый и последний элементы имеют одинаковые значения - C++
Создать двоичный файл и записать в него двумерный целочисленный массив размером n×m. Записать в двоичный файл F2 те столбцы массива, у...

Создать двумерный динамический массив и удалить все столбцы в которых присутствует элемент - C++
#include &lt;cstdlib&gt; #include &quot;stdlib.h&quot; #include &lt;iostream&gt; using namespace std; int n=5; int c=0; int main() { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
09.07.2014, 21:46 #2
В этом примере ( кстати авторские права (С)zss ) вставляются строки,
а вам надо удалить столбец!
Подумайте, как поменяется код строк 34-48
0
Anastasi95
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 15
09.07.2014, 22:55  [ТС] #3
Добавлено через 45 секунд
zss, помогите, пожалуйста, подумать(
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
10.07.2014, 07:50 #4
C++
1
2
3
4
5
6
7
8
9
10
11
int Mfact=M; // количество оставшихся столбцов 
for ( j = 0; j < Mfact; j ++ ) // ищем столбцы удовл. условию   x>b и x<c
{
    if ((A[0][j])>b && (A[0][j])<c)
    {
       for ( i = 0; i < N; i ++ ) // цикл по  строкам
           for (int j2 = j; j2<Mfact-1; j2++) // передвигаем оставшийся кусок строки 
                  A[i][j2]=A[i][j2+1];
      Mfact--;
   }
}
0
Anastasi95
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 15
10.07.2014, 08:26  [ТС] #5
zss, он обнуляет все, а матрицу транспонирует
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
10.07.2014, 08:55 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот работающий код.
Внимательней смотрите на индексы строк и столбцов,
и если уж пользуетесь Сишными функциями ввода вывода,
то следите за спецификациями формата.
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
#pragma warning(disable:4996)
#include <iostream>
#include <locale>
using namespace std;
 
const int N = 3; // число строк
const int M = 3; // число столбцов
int main()
{
    setlocale(LC_ALL,"Rus");
    int i, j, A[N][M],b,c;
    printf("vvedite b : \n");
    scanf("%d", &b);
    printf("vvedite c : \n");
    scanf("%d", &c);
    for ( i = 0; i < N; i ++ ) // цикл по строкам
        for ( j = 0; j < M; j ++ ) // цикл по  столбцам
        {
            printf ("A[%d][%d]=", i, j); // подсказка для ввода
            scanf ("%d", & A[i][j]); // ввод A[i][j]
        }
    printf("Матрица A\n");
    for ( i = 0; i < N; i ++ )
    { // цикл по строкам
        for ( j = 0; j < M; j ++ ) // вывод одной строки (в цикле)
                printf ( "%4d", A[i][j] ); 
            printf("\n"); // переход на другую строку
    }
    int Mfact=M; // количество оставшихся столбцов 
    for ( j = 0; j < Mfact; j++ ) // ищем столбцы удовл. условию   x>b и x<c
    {
            if ((A[0][j])>b && (A[0][j])<c)
            {
                for ( i = 0; i < N; i ++ ) // цикл по  строкам
                    for (int j2 = j; j2<Mfact-1; j2++) // передвигаем оставшийся кусок строки 
                        A[i][j2]=A[i][j2+1];
                Mfact--;
            }
    }
    printf("Матрица A\n"); 
    for ( i = 0; i < N; i ++ ) 
    { 
            for ( j = 0; j < Mfact; j ++ ) 
                printf ( " %d", A[i][j] ); // вывод массива
            printf("\n");
    }
 
    system("pause");
    return 0;
}
2
Anastasi95
0 / 0 / 0
Регистрация: 09.07.2014
Сообщений: 15
10.07.2014, 09:36  [ТС] #7
zss, Вы волшебник)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2014, 09:36
Привет! Вот еще темы с ответами:

Создать двумерный динамический массив и удалить все столбцы в которых присутствует элемент C - C++
#include &lt;cstdlib&gt; #include &quot;stdlib.h&quot; #include &lt;iostream&gt; using namespace std; int n=5; int c=0; int main() { ...

Удалить все столбцы в которых нет нулевого элемента массива С++ - C++
Удалить все столбцы в которых нет нулевого элемента массива С++. #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include...

Первый элемент массива 1 умножить на все элементы массива 2 и вывести результат - C++
Добрый день. Прошу помочь решить вот такую вот задачку: &quot;есть два массива, в которых границы задает пользователь. Например, один...

Разделить все элементы массива на его первый элемент - C++
Задание. Сделать это задание: Дан массив целых чисел. а) Разделить все элементы массива на его первый элемент; б) увеличить все элементы...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.07.2014, 09:36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru