Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите решить матрицу

78K
12 марта 2012 года
chili89
17 / / 12.03.2012
Текст задачи:Задана матрица А (7 строк,4 столбца) целых чисел.
Получить матрицу В из А удалением k-ой строки и j-го столбца.
Премечания и требования
1)номер k-ой строки j-го столбца.вводить с клавиатуры (в тексте программы)
2)вывести на экран в удобной и наглядной форме исходные данные и результаты.
67K
13 марта 2012 года
NoXCode
64 / / 11.03.2012
Код:
int v[7][4] = { { 2, 5, 9, 6 },
                    { 1, 8, 4, 5 },
                    { 3, 9, 6, 1 },
                    { 8, 4, 5, 3 },
                    { 1, 2, 6, 4 },
                    { 4, 8, 7, 9 },
                    { 1, 3, 2, 8 } };
   
           int k = 0, j = 0;
    printf("Enter k,j: "); scanf("%d %d",&k,&j);

    for (int n = 0; n < 7; n++)
    {
        int i = j;
        while (i < 4) v[n][i++] = v[n][i+1];
        v[n][i-1] = 0;
    }

    for (int n = 0; n < 4; n++)
    {
        int i = 3;
        while (i < 7) v[i++][n] =  v[i+1][n];
        v[i-1][n] = 0;
    }

    for (int n = 0; n < 7; n++)
    {
        for (int i = 0; i < 4; i++)
             printf("%d ",v[n]);
        printf("\n");
    }
78K
13 марта 2012 года
chili89
17 / / 12.03.2012
а на каком IDE это сделано???
78K
13 марта 2012 года
chili89
17 / / 12.03.2012
это в bc3.1 сделано???

у меня что то она не хочет работать(((
67K
14 марта 2012 года
NoXCode
64 / / 11.03.2012
в каком смысле не хочет работать?! прога написана в vss2010, но должна компилироваться любым компилятором.
просто вставьте данный код в функцию main(int argc,char** argv[]) { /* код сюда */ } и попробуйте скомпилять.
Если возникную ошибки пишите ниже.
67K
14 марта 2012 года
NoXCode
64 / / 11.03.2012
столбцы и строки нумеруются от 0..6 и 0..3
67K
14 марта 2012 года
NoXCode
64 / / 11.03.2012
вот модификация кода, которая позволяет удалять последние строку и столбец, а также нумеровать столбцы и строки 1..7 и 1..4

Код:
#define rows 7
#define cols 4

int main(int argc, char* argv[])
{
    int v[rows][cols] = { { 2, 5, 9, 6 },
                          { 1, 8, 4, 5 },
                          { 3, 9, 6, 1 },
                          { 8, 4, 5, 3 },
                          { 1, 2, 6, 4 },
                          { 4, 8, 7, 9 },
                          { 1, 3, 2, 8 } };
   
    int k = 0, j = 0;
    printf("Enter k,j: "); scanf("%d %d",&k,&j);
   
    if (j != rows-1)
    {
        for (int n = 0; n < 7; n++)
        {
            int i = j-1;
            while (i < 4) v[n][i++] = v[n][i+1];
            v[n]    [i-1] = 0;
        }
    }

    else
    {
        for (int n = 0; n < 7; n++)
            v[n][j] = 0;
    }
   
    if (k != cols-1)
    {
        for (int n = 0; n < 4; n++)
        {
            int i = k-1;
            while (i < 7) v[i++][n] =  v[i+1][n];
            v[i-1][n] = 0;
        }
    }

    else
    {
        for (int n = 0; n < 7; n++)
            v[k][n] = 0;
    }

    for (int n = 0; n < 7; n++)
    {
        for (int i = 0; i < 4; i++)
            printf("%d ",v[n]);
        printf("\n");
    }

    return 0;
}
78K
14 марта 2012 года
chili89
17 / / 12.03.2012
Мы похоже друг друга не недопонимаем! мне нужна программа на языке C ну или С++
надо что бы она работала в этом программе (4мб)

спасибо за помощь!
67K
18 марта 2012 года
NoXCode
64 / / 11.03.2012
А что если скопировать последний код выше в пустой файл matrix.cpp в среде Borland C++ 3.11, что не работает, или не компилируется?
78K
19 марта 2012 года
chili89
17 / / 12.03.2012
скомпилировать не удалось...
добавил в программу :
#include <stdio.h>
#include <conio.h>
#include <math.h>

ошибка осталась в самом конце...ругается на последний знак }
(без #include)
(c #include)
7
19 марта 2012 года
@pixo $oft
3.4K / / 20.09.2006
Во-первых,у тебя пустой #include.Не знаю,может,стандартом это и разрешается,но всё равно что-то не то.1я ошибка указывает,что компилятору вообще ничего не известно об этих функциях
А в конце—2 предупреждения.Они вообще не страшны,так что можно этого не бояться
78K
19 марта 2012 года
chili89
17 / / 12.03.2012
На первом скриншоте #include не дописан...просто так скрин сделан...
они там другие.
просто у меня не получается скомпилировать ее,мне надо рабочий вид ее показать...

P.Sя благодарен что ты мне помогаешь!!!спасибо!
78K
19 марта 2012 года
chili89
17 / / 12.03.2012
программа
попробуй ее запустить через эту программку
67K
24 марта 2012 года
NoXCode
64 / / 11.03.2012
поменяй int main(int argc, char* argv[]) на int main()
78K
27 марта 2012 года
chili89
17 / / 12.03.2012
что то я совсем не понял эту программу...

мне нужно было что бы в матрице чисел, 7 строк 4 столбца (произвольных чисел).
при вводе с клавиатуре номера столбца( k ) и строки( j ) они удалялись из этой матрицы.

в самом просто виде на языке C/C++
67K
27 марта 2012 года
NoXCode
64 / / 11.03.2012
Цитата: chili89
что то я совсем не понял эту программу...

мне нужно было что бы в матрице чисел, 7 строк 4 столбца (произвольных чисел).
при вводе с клавиатуре номера столбца( k ) и строки( j ) они удалялись из этой матрицы.

в самом просто виде на языке C/C++

Дело в том, что данная программа как раз
и выполняет эти две операции. Внимательно посмотри результат!

78K
27 марта 2012 года
chili89
17 / / 12.03.2012
Дело в том что при вводе номера строки и столбца появляются всегда одни и те же цифры и строки и столбцы не вычитаются.а так же остается 7 строк и 4 столбца
78K
27 марта 2012 года
chili89
17 / / 12.03.2012
если можешь напиши мне в ICQ 405-630-426
67K
27 марта 2012 года
NoXCode
64 / / 11.03.2012
1. ICQ к стати не пользуюсь.

2. Для изменения входных данных необходимо хранить матрицу в
файле и считывать при каждом запуске программы.

3. Строки и столбцы вычитаются произвольные, запусти
прогу и введи k j 2 3 и получишь результат:

Enter k,j: 2 3
2 5 6 0
3 9 1 0
8 4 3 0
1 2 4 0
4 8 9 0
1 3 8 0
0 0 0 0

4. Что касается того, что остается 7 строк и 4 столбца,
то вряд ли удасться уменьшить размер буффера памяти, в том случае если
он является двухмерной матрицей елементов.
78K
27 марта 2012 года
chili89
17 / / 12.03.2012

что бы я не вводил получается это
78K
27 марта 2012 года
chili89
17 / / 12.03.2012
2. Для изменения входных данных необходимо хранить матрицу в
файле и считывать при каждом запуске программы.


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

P.S как с тобой можно связаться?
67K
27 марта 2012 года
NoXCode
64 / / 11.03.2012


Все нормально работает (см. выше). Скачай исполняемый файл matrix.exe и запусти.
78K
28 марта 2012 года
chili89
17 / / 12.03.2012
я не чего не понимаю(( у меня все равно эти числа...и не чего не вычитает..

скинь пожалуйста свой полный код программы.
или файлик .CPP и .EXE
67K
28 марта 2012 года
NoXCode
64 / / 11.03.2012
Вот исполняемый файл matrix.exe, скачай и запусти его.
Прикрепленные файлы:
29 Кб
Загрузок: 531
67K
28 марта 2012 года
NoXCode
64 / / 11.03.2012
А вот, непосредственно, файл архива в котором найдешь matrix.exe и matrix.cpp.
Для компиляции в matrix.cpp замени объявление ф-ции main на int main() и
подключи #include <stdio.h>, #include <conio.h>
Прикрепленные файлы:
9 Кб
Загрузок: 284
78K
30 марта 2012 года
chili89
17 / / 12.03.2012
а можно переделать задачу что бы не 0 были а строки и столбцы удалились по очереди и результат каждый раз выводился на экран!!!
сначала строку удаляешь потом столбец...и желательно простыми методами языка C
67K
30 марта 2012 года
NoXCode
64 / / 11.03.2012
Нельзя, потому, что для одновременного удаления строк и столбцов в цикле,
матрица должна быть квадратной NxN. А, вообще-то уточни задание, я не
понял что такое - "...переделать задачу что бы не 0 были".
78K
30 марта 2012 года
chili89
17 / / 12.03.2012
Мне нужно сделать задачу на С#,самым простым способом...(учитель говорит можно попробовать способом со счетчиком,но это не обязательно)

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


В предыдущей задаче вы заменяли строку и столбец "0" а нужно что бы не было не строки не столбца а оставались нужные 6 строк и 3 столбца.
78K
30 марта 2012 года
chili89
17 / / 12.03.2012

что типа этого должно выйти
67K
30 марта 2012 года
NoXCode
64 / / 11.03.2012
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>

#define rows 7
#define cols 4

int main()
{
    int v[rows][cols] = { { 2, 5, 9, 6 },
                          { 1, 8, 4, 5 },
                          { 3, 9, 6, 1 },
                          { 8, 4, 5, 3 },
                          { 1, 2, 6, 4 },
                          { 4, 8, 7, 9 },
                          { 1, 3, 2, 8 } };
   
    int k = 0, j = 0;
    printf("Enter k,j: "); scanf("%d %d",&k,&j);
   
    int** pv = new int*[rows];
    memset((void*)pv, 0x00, sizeof(int*) * rows);

    for (int n = 0; n < rows; n++)
    {
        pv[n] = new int[cols];
        for (int r = 0; r < cols; r++)
            pv[n][r] = v[n][r];
    }

    for (int n = 0; n < rows; n++)
    {
        for (int i = 0; i < cols; i++)
            printf("%d ",pv[n][i]);
        printf("\n");
    }

    printf("\n\n");

    for (int n = 0; n < rows; n++)
    {
        int i = j-1;
        while (i < cols)
            pv[n][i++] = pv[n][i+1];
    }

    for (int n = 0; n < rows; n++)
    {
        int* nbuf = new int[cols-1];
        memcpy((void*)nbuf, pv[n], sizeof(int) * (cols - 1));
        pv[n] = nbuf;
    }

    for (int n = 0; n < rows; n++)
    {
        for (int i = 0; i < cols-1; i++)
            printf("%d ",pv[n][i]);
        printf("\n");
    }

    printf("\n\n");

    for (int n = 0; n < cols-1; n++)
    {
        int i = k-1;
        while (i < rows-1)
            pv[i++][n] = pv[i+1][n];
    }

    int** ppbuf = new int*[rows-1];
    memset((void*)ppbuf, 0x00, sizeof(int*) * (rows - 1));

    for (int n = 0; n < rows-1; n++)
    {
        ppbuf[n] = new int[cols-1];
        for (int r = 0; r < cols-1; r++)
            ppbuf[n][r] = pv[n][r];
    }

    pv = ppbuf;

    for (int n = 0; n < rows-1; n++)
    {
        for (int i = 0; i < cols-1; i++)
            printf("%d ",pv[n][i]);
        printf("\n");
    }

    return 0;
}
Прикрепленные файлы:
10 Кб
Загрузок: 274
78K
30 марта 2012 года
chili89
17 / / 12.03.2012
опять у меня не компилируется..
67K
30 марта 2012 года
NoXCode
64 / / 11.03.2012
Сейчас вышлю исходник для компиляции в Borland C++ 3.11
67K
30 марта 2012 года
NoXCode
64 / / 11.03.2012
Код:
// matrix.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <conio.h>
#include <string.h>

#define rows 7
#define cols 4

int main()
{
    int v[rows][cols] = { { 2, 5, 9, 6 },
                          { 1, 8, 4, 5 },
                          { 3, 9, 6, 1 },
                          { 8, 4, 5, 3 },
                          { 1, 2, 6, 4 },
                          { 4, 8, 7, 9 },
                          { 1, 3, 2, 8 } };
   
    int k = 0, j = 0;
    printf("Enter k,j: "); scanf("%d %d",&k,&j);
   
    int** pv = new int*[rows];
    memset((void*)pv, 0x00, sizeof(int*) * rows);

    for (int n = 0; n < rows; n++)
    {
        pv[n] = new int[cols];
        for (int r = 0; r < cols; r++)
            pv[n][r] = v[n][r];
    }

    for (int q = 0; q < rows; q++)
    {
        for (int i = 0; i < cols; i++)
            printf("%d ",pv[q][i]);
        printf("\n");
    }

    printf("\n\n");

    for (int z = 0; z < rows; z++)
    {
        int i = j-1;
        while (i < cols)
            pv[z][i++] = pv[z][i+1];
    }

    for (int u = 0; u < rows; u++)
    {
        int* nbuf = new int[cols-1];
        memcpy((void*)nbuf, pv[u], sizeof(int) * (cols - 1));
        pv[u] = nbuf;
    }

    for (int l = 0; l < rows; l++)
    {
        for (int i = 0; i < cols-1; i++)
            printf("%d ",pv[l][i]);
        printf("\n");
    }

    printf("\n\n");

    for (int t = 0; t < cols-1; t++)
    {
        int i = k-1;
        while (i < rows-1)
            pv[i++][t] = pv[i+1][t];
    }

    int** ppbuf = new int*[rows-1];
    memset((void*)ppbuf, 0x00, sizeof(int*) * (rows - 1));

    for (int f = 0; f < rows-1; f++)
    {
        ppbuf[f] = new int[cols-1];
        for (int r = 0; r < cols-1; r++)
            ppbuf[f][r] = pv[f][r];
    }

    pv = ppbuf;

    for (int b = 0; b < rows-1; b++)
    {
        for (int i = 0; i < cols-1; i++)
            printf("%d ",pv[b][i]);
        printf("\n");
    }

    return 0;
}
Прикрепленные файлы:
2 Кб
Загрузок: 359

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог