Kom_Junior
Гость
|
|
« : 03-04-2008 17:07 » |
|
Доброе время суток! Я сейчас решаю задачу: Переписать первые элементы каждой строки матрицы D(3,3), которые больше 10, в массив В. вот примерно что есть: //---------------------------------------------------------------------------
#include <vcl.h> #include <iostream.h> #include <stdio.h> // #include <math.h> // #include <conio.h> //
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused int main(int argc, char* argv[]) { randomize(); int d[3][3],i,j; // объявление массива D for (i=1;i<3;i++) // заполнение массива с помощью функции random() for (j=1;j<3;j++) d[i][j]=random(9); for (i=1;i<5;i++) for (j=1;j<5;j++) if (d[i][j]>10) //если в строке присутствуют числа больше 10,переписать for (j=1;j<5;j++) //значение в массив B d[i][j]=;
getch(); } //---------------------------------------------------------------------------
вопрос: как переписать в другой массив эти значения(как это реализовать!?)!?
|
|
« Последнее редактирование: 09-04-2008 19:59 от Вад »
|
Записан
|
|
|
|
Вад
|
|
« Ответ #1 : 03-04-2008 17:18 » |
|
Kom_Junior, Переписать первые элементы каждой строки Первые - это только один первый, или все "первые", которые идут до числа, большего 10? Или переписать "первый элемент строки матрицы, если он больше 10"? Или "переписать первый встретившийся в строке элемент, который больше 10"? Код с описанием задачи явно расходится. И куда переписывать собираешься? В другой массив, или? Тогда где второй массив?
|
|
« Последнее редактирование: 03-04-2008 17:21 от Вад »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #2 : 03-04-2008 17:19 » |
|
а массив B что из себя представляет то ?
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #3 : 03-04-2008 17:27 » |
|
Вот задача: Переписать первые элементы каждой строки матрицы D(3,3), которые больше 10, в массив В. Здесь мне не понятно как проверить больше ли 10 первые элементы каждой из строк, и как затем переписать(если все же они больше) в другой массив. Допустим массив второй будет одномерным и все значения, которых максимум будет 3 как в него записать!!! Я понимаю, что вопросы глупые, но в книгах не найду а учат в универе скверно: на лекциях одно, на лабораторках второе, а на СРС третье.........вот и ничего не знаю.... Код смотрел по другой задаче и щас соображаю что он не верен. Подскажите как проверять больше или не больше 10 и как переписывать!!!! Заранее спасибо
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #4 : 03-04-2008 17:32 » |
|
По-моему, если уж как-то интерпретировать эту кривовато построенную фразу, то, насколько я понимаю, задание всё-таки должно быть такое: "Переписать в массив B из каждой строки матрицы D первый элемент строки, который больше 10". Тогда тебе нужен ещё массив B из 3х элементов (коль уж строк у тебя 3). Проверяешь ты правильно, но переписать в массив B тебе нужно именно этот элемент, поэтому после if цикл у тебя явно лишний. И ещё: for (j=1;j<5;j++) - откуда ты взял 5?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #5 : 03-04-2008 17:34 » |
|
#define x_max 3 #define y_max 3
int d[y_max][x_max]; int b[y_max]; //"вертикальный"
int b_count=0; for(int y=0; y<y_max /*, b_count<y_max*/; y++) { if(d[y][0]>10) { b[b_count]=d[y][0]; b_count++; } }
//b_count - количество элементов, переписанных в массив b
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #6 : 03-04-2008 17:38 » |
|
я же говорю, что код смотрел с другой задачи вот и появилась 5, а вопрос задачи кривой не по моей вине, так в методичке написано! И еще, как хорошоЮ, что вы, парни, есть!
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #7 : 03-04-2008 17:42 » |
|
Уважаемый Алексей1153++, вы бы не могли объяснить представленный код поподробнее!?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #8 : 03-04-2008 17:43 » |
|
были, есть и будем есть!
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #9 : 03-04-2008 17:44 » |
|
Kom_Junior, какие строчки конкретно требуется объяснить ?
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #10 : 03-04-2008 17:51 » |
|
можно один раз, но как для чайника!? Давайте если вам не трудно по порядку разберемся я скажу что мне не понятно а вы подскажете!? описали инклуды, затем описываем двумерный массив d и одномерный массив b. ВВодим с клавиатуры массив d. Теперь проверяем, больше ли 10 первый элемент каждой строки массива d. Проверив и найдя, например 2 элемента больше 10 переписываем их в массив b. Выводим на экран массивы d и b. Так!?
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 03-04-2008 18:06 » |
|
ну, вроде так Дальше вопросы
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #12 : 03-04-2008 18:18 » |
|
#include <vcl.h> #include <iostream.h> #include <stdio.h> //подключение файла с помощью директивы, обеспечивающая ввод и вывод информации #include <math.h> //для работы с математическими функциями #include <conio.h> //для функции getch()
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused int main(int argc, char* argv[]) { int d[3][3],i,j; // объявление массива D int b[3],i; // объявление массива B for (i=0;i<3;i++) // ввод двумерного массива, кстати не будет ошибки то, что после объявления // одномерного массива идет заполнение 2мерного!? for (j=0;j<3;j++) scanf("%d",&d[i][j]); getch(); } //---------------------------------------------------------------------------
вроде так... теперь не знаю как описать проверку первых элементов каждой их строк и затем запись найденных элементов в одномерный массив. Пожайлуста, когда будtnt отвечать сопровождайте код подробными комментариями как у меня, заранее спасибо.
|
|
« Последнее редактирование: 03-04-2008 18:23 от Алексей1153++ »
|
Записан
|
|
|
|
Вад
|
|
« Ответ #13 : 03-04-2008 18:22 » |
|
Kom_Junior, если пишешь на C++, то лучше, имхо, scanf и getch забыть и смотреть в направлении iostream Про первые элементы каждой строки - мне кажется, что всё-таки речь о проходе по строке в поиске элемента, который больше 10. Хотя, может, ошибаюсь
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #14 : 03-04-2008 18:26 » |
|
видишь, препод требует так как сам знает, со сканами и гетчами приходится делать ну так что, подскажешь!? да, скорее всего ты прав, он должен искать первый больше десяти элемент и заносить его во второй массив
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #15 : 03-04-2008 18:27 » |
|
В таком случае нужно сделать два решения первое - B - массив элементов больше 10 второе - B1 - "разреженный" двумерный массив элементов - т.е. каждый элемент >10 переписывается из первого во второй под своим индексом.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Kom_Junior
Гость
|
|
« Ответ #16 : 03-04-2008 18:30 » |
|
тогда В будет тоже 2мерным если под своим индексом!? А зачем!?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #17 : 03-04-2008 18:30 » |
|
или же 3-й вариант, можно придумать и четвертый при первом попадании в условие копирование элемента и переход к другой строке.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Kom_Junior
Гость
|
|
« Ответ #18 : 03-04-2008 18:31 » |
|
мне эту надо быстрее решить у неё еще 2 часть есть... ((((
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #19 : 03-04-2008 18:31 » |
|
тогда так #define x_max 3 #define y_max 3
int d[y_max][x_max]; int b[y_max]; //"вертикальный"
int b_count=0; //перебираем строки for(int y=0; y<y_max ; y++) { //ищем в строке [y] первый элемент, бОльший чем 10 for(int x=0; x<x_max; x++) { if(d[y][x]>10) { //нашли, записываем b[b_count]=d[y][x]; //увеличиваем счётчик записанных элементов b_count++; //переходим к поиску в следующей строке break; } } }
//b_count - количество элементов, переписанных в массив b
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #20 : 03-04-2008 18:32 » |
|
А зачем!?
А чтоб у Заказчика не возникало вопросов типа: Вы не выполнили (не поняли) задание
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Sla
|
|
« Ответ #21 : 03-04-2008 18:35 » |
|
А может во второй части как раз и есть ответ на вопрос - какая размерность массива B
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Kom_Junior
Гость
|
|
« Ответ #22 : 03-04-2008 18:36 » |
|
нет там надо оформить решение этой задачи в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функция расположена после в другом файле;
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #23 : 03-04-2008 18:38 » |
|
Алексей1153++, а b_count так и остается!? в смысле его не надо менять на числовое значение!?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #24 : 03-04-2008 18:41 » |
|
Алексей1153++, а b_count так и остается!? в смысле его не надо менять на числовое значение!?
ты сам понял что спросил? b_count перед циклом инициализируется нулем в цикле изменяется Что менять на какое числовое значение?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Kom_Junior
Гость
|
|
« Ответ #25 : 03-04-2008 18:43 » |
|
еще вопрос, это не полный код программы!? #define x_max 3 #define y_max 3 int d[y_max][x_max]; int b[y_max]; //"вертикальный" int b_count=0; //перебираем строки for(int y=0; y<y_max ; y++) { //ищем в строке [y] первый элемент, бОльший чем 10 for(int x=0; x<x_max; x++) { if(d[y] { //нашли, записываем b[b_count]=d[y] //увеличиваем счётчик записанных элементов b_count++; //переходим к поиску в следующей строке break; } } } //b_count - количество элементов, переписанных в массив b чего не хватает!?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #26 : 03-04-2008 18:46 » |
|
Kom_Junior, какая структура программы на С ответив на это вопрос ты автоматически выполнишь и второе задание
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Kom_Junior
Гость
|
|
« Ответ #27 : 03-04-2008 18:46 » |
|
не понял...
|
|
|
Записан
|
|
|
|
Kom_Junior
Гость
|
|
« Ответ #28 : 03-04-2008 18:47 » |
|
вы счастливые, у вас 19:47, а у меня 0:47 башка не варит...
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #29 : 03-04-2008 18:50 » |
|
Утро вечера мудреннее Лешику через 5 часов на работу
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
|