помогите решить матрицу
Получить матрицу В из А удалением k-ой строки и j-го столбца.
Премечания и требования
1)номер k-ой строки j-го столбца.вводить с клавиатуры (в тексте программы)
2)вывести на экран в удобной и наглядной форме исходные данные и результаты.
Код:
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");
}
{ 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");
}
а на каком IDE это сделано???
у меня что то она не хочет работать(((
просто вставьте данный код в функцию main(int argc,char** argv[]) { /* код сюда */ } и попробуйте скомпилять.
Если возникную ошибки пишите ниже.
столбцы и строки нумеруются от 0..6 и 0..3
Код:
#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;
}
#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;
}
Мы похоже друг друга не недопонимаем! мне нужна программа на языке C ну или С++
А что если скопировать последний код выше в пустой файл matrix.cpp в среде Borland C++ 3.11, что не работает, или не компилируется?
А в конце—2 предупреждения.Они вообще не страшны,так что можно этого не бояться
они там другие.
просто у меня не получается скомпилировать ее,мне надо рабочий вид ее показать...
P.Sя благодарен что ты мне помогаешь!!!спасибо!
программа
попробуй ее запустить через эту программку
попробуй ее запустить через эту программку
поменяй int main(int argc, char* argv[]) на int main()
мне нужно было что бы в матрице чисел, 7 строк 4 столбца (произвольных чисел).
при вводе с клавиатуре номера столбца( k ) и строки( j ) они удалялись из этой матрицы.
в самом просто виде на языке C/C++
Цитата: chili89
что то я совсем не понял эту программу...
мне нужно было что бы в матрице чисел, 7 строк 4 столбца (произвольных чисел).
при вводе с клавиатуре номера столбца( k ) и строки( j ) они удалялись из этой матрицы.
в самом просто виде на языке C/C++
мне нужно было что бы в матрице чисел, 7 строк 4 столбца (произвольных чисел).
при вводе с клавиатуре номера столбца( k ) и строки( j ) они удалялись из этой матрицы.
в самом просто виде на языке C/C++
Дело в том, что данная программа как раз
и выполняет эти две операции. Внимательно посмотри результат!
Дело в том что при вводе номера строки и столбца появляются всегда одни и те же цифры и строки и столбцы не вычитаются.а так же остается 7 строк и 4 столбца
если можешь напиши мне в ICQ 405-630-426
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 столбца,
то вряд ли удасться уменьшить размер буффера памяти, в том случае если
он является двухмерной матрицей елементов.
что бы я не вводил получается это
файле и считывать при каждом запуске программы.
как это реализовать?
матрица есть же в коде программы вот с ней и надо производить операции..
учитель сказал что это можно реализовать обычными простыми командами..
P.S как с тобой можно связаться?
Все нормально работает (см. выше). Скачай исполняемый файл matrix.exe и запусти.
скинь пожалуйста свой полный код программы.
или файлик .CPP и .EXE
Вот исполняемый файл matrix.exe, скачай и запусти его.
Для компиляции в matrix.cpp замени объявление ф-ции main на int main() и
подключи #include <stdio.h>, #include <conio.h>
сначала строку удаляешь потом столбец...и желательно простыми методами языка C
матрица должна быть квадратной NxN. А, вообще-то уточни задание, я не
понял что такое - "...переделать задачу что бы не 0 были".
Нужно из матрицы чисел (массив)7 строк 4 столбца,сначала удалить выбранный столбец введенный с клавиатуры.
Вывести это на экран.
Потом из полученного результата вычесть строку и вывести этот результат на экран..
В предыдущей задаче вы заменяли строку и столбец "0" а нужно что бы не было не строки не столбца а оставались нужные 6 строк и 3 столбца.
Код:
#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;
}
#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;
}
опять у меня не компилируется..
Сейчас вышлю исходник для компиляции в Borland C++ 3.11
Код:
// 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;
}
//
#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;
}