SERG29
Сообщение
#13115 2.4.2008, 11:38
Условие задачи: Из массива Х целых чисел перенести в массив Y элементы с Хn по Хm, где Хn > Xn-1 и Xm > A.
Я учусь заочно, поэтому всё изучаю самостоятельно, и постоянно возникают проблемы. Я начал составлять программу в Borland C++Builder 6 и ничего не получается, и путаница с библиотеками.
#include <condefs.h>
#include <iostream.h>
#unclude <conio.h>
int main ()
{
int k;
int Massive_X [11] = { -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25};
cout << "Programma po perenosy chisel.";
А дальше не получается.
Заранее благодарю.
alxdr
Сообщение
#13133 2.4.2008, 13:49
Ну а какая именно проблема возникла? Опишите поподробней.
SERG29
Сообщение
#13135 2.4.2008, 15:57
Цитата(alxdr @ 2.4.2008, 13:49)

Ну а какая именно проблема возникла? Опишите поподробней.
Не знаю что писать дальше. Незнаю, что означает Хn по Хm, где Хn > Xn-1 и Xm > A. Вот и хотел, чтоб тут помогли.
creer
Сообщение
#13138 2.4.2008, 18:18
Из библиотек необходима только iostream или iostream.h. Объект cout определен в пространстве имен std, поэтому необходимо писать std::cout. Однако если подключить iostream.h, то cout будет определен глобально и писать std:: не потребуется.
Ниже пример. Из массива Massive_X переносятся элементы с позиции n, до тех пор пока не будет достигнут конец массива, либо значение элемента массива станет больше либо равно A. Это более-менее похоже на задание.
Код
#include <iostream>
int main()
{
int n = 2; //переносим с данной позиции
int A = 11; //значения должны быть меньше A
int Massive_X [11] = { -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25};
int Massive_Y [11]; //Возможно стоит заполнить нулями
std::cout << "Programma po perenosy chisel." << std::endl; //std::endl - перенос строки
for (int i=0; i < 11-n && Massive_X [i+n] < A; i++) //пока i < 11 - n и значение элемента массива меньше A
{
Massive_Y [i] = Massive_X [i+n];
}
for (int i=0; i<11; i++) //Выводим массив
{
std::cout << Massive_Y [i] << ' ';
}
std::cout << std::endl;
return 0;
}
SERG29
Сообщение
#13152 3.4.2008, 5:04
ввёл код и при компиляции выдало ошибку в подчёркнутой строке:
for (int i=0; i<11; i++)
{
std::cout << Massive_Y [i] << ' ';
}
std::cout << std::endl;
return 0;
}
и внизу написано:
E2129 Character constant too long (or emply)
creer
Сообщение
#13158 3.4.2008, 11:17
Тогда вместо ' ', нужно написать " ".
SERG29
Сообщение
#13160 3.4.2008, 12:04
Спасибо, программа заработала, только при выводе ответа появились ещё какие-то числа:
Programma po perenosy chisel.
-15-10-505104202423420765212449843230
И пишу свои вопросы второй задачи. Условие: Задана матрица А(7,7) целых чисел. Найти столбец с наибольшей суммой элементов. Поменять местами наибольший элемент каждой строки с соответствующим элементом данного столбца. Организовать поиск столбца и наибольшего элемента в строке с помощью подпрограмм.
Я тут не пойму, как задать матрицу, притом с семью столбцами и 7 строчками? Если можете, тоже приведите пример этой задачи.
creer
Сообщение
#13162 3.4.2008, 12:35
Остальные числа появились из-за того, что когда создается массив, он не заполняется какими-либо значениями, а под него просто выделяется память. Остальные значения - это те, которые были в оперативной памяти ранее. Можно либо заполнять массив нулями в начале программы, либо просто не выводить весь массив целиком, а вывести только начало массива.
Матрица - это двухмерный массив, задается примерно так же:
int ar [7][7];
Вот мы задали двухмерную матрицу ar размерности 7x7.
ar[0][0]=5;
Присвоили элементу (0;0) значение 5.
Если Вам придется дальше решать задачи по программированию, то все это лучше понять, это основы.
SERG29
Сообщение
#13189 3.4.2008, 16:01
Изучать программирование мне придется только этот семестр. к/р состоит из 2-х вопросов теории, и 3-ч задач. Первые две задачи (которые я привел выше) - обязательно. Третья - на высокую оценку. Мне хотябы 2 эти задачи сделать. Теорию найти легко.
Насчет 1-ой задачи: заново написал программу - и теперь уже непонятно что выдает!
Насчет 2-ой задачи: начал писать код
//---------------------------------------------------------------------------
#include <iostream>
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
int ar [7][7]
std::cout << "Matrica." << std::endl;
for (int
return 0;
}
//---------------------------------------------------------------------------
и сразу возникли трудности. я не пойму как найти наибольший элемент каждой строки, если её нет. Значит надо писать всю матрицу? Поменять местами, я думаю, не доставит большой сложности. А вот как организовать поиск столбца и наибольшего элемента в строке с помошью подпрограмм непойму. И что это за подпрограммы?
Если нетрудно, ответьте.
creer
Сообщение
#13195 3.4.2008, 17:09
Да, матрицу необходимо либо задать в программе (или жестко указать значения как в первой задаче, или воспользоваться генератором случайных чисел), либо вводить с клавиатуры.
Чтобы найти максимальный элемент в строке, нужно сравнить все элементы строки между собой.
Подпрограммы это тоже, что и int main(){}, только main() главная. Например int maxel(const int n){находим макс. элемент; return max;}
SERG29
Сообщение
#13313 8.4.2008, 13:58
Благодаря нечеловеческих усилий и помощи друзей удалось написать что-то. Но как всегда компилятор выдаёт ошибки. Посмотрите и скажите где ошибки:
//---------------------------------------------------------------------------
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
int calcsum (int ar[7][7], int i);
int calcmax (int ar[7][7], int i);
int calcsum (int ar[7][7], int i)
{
int sum = 0;
int j;
for (j=0;j<7;j++)
sum += ar[j][i];
}
int calcmax (int ar [7][7], int i)
{
int max = 0;
int j, jmax;
for (j=0; j<7; j++)
{
if (max<ar[i][j])
{
max = ar[i][j];
jmax = j;
}
}
return (jmax);
}
int main (int argc,char* argv [])
{
int j;
int i;
int max = 0;
int imax;
int ar [7][7]=
{
{1,2,3,4,5,6,7},
{2,6,3,6,4,6,2},
{3,5,5,4,6,1,6},
{7,4,5,4,5,4,5},
{1,1,3,4,1,3,3},
{2,3,4,3,4,3,5},
{1,2,3,2,3,2,3}
};
for (i=0;i<7;i++)
{
j = calcsum(ar,i);
if (max<j)
{
max=j;
imax=i;
}
}
printf ("Maximum sum = %d for column = %d\n",max,imax+1);
for (i=0;i<7;i++)
{
j = calcmax(ar,i);
max = ar[i][j];
ar[i][j] = ar[i][imax];
ar[i][max]=max;
}
getch();
return 0;
}
creer
Сообщение
#13332 9.4.2008, 7:53
В секции include написать только
Код
#include <stdio.h>
#include <conio.h>
В конце функции int calcsum (int ar[7][7], int i) необходимо написать return sum; иначе функция не будет возвращать значения суммы в программу.
В функции int calcmax (int ar [7][7], int i) лучше вместо int max = 0; написать int max = ar[i][0]; Тогда функция будет возвращать правильные значения и для отрицательных чисел.
SERG29
Сообщение
#13341 9.4.2008, 11:39
Сделал исправления - и выдаёт ошибку:
Unit1.cpp(18); E2378 Return statement missing;
Ну когда уже эти ошибки закончатся.
creer
Сообщение
#13344 9.4.2008, 12:44
Функция calcsum написана таким образом?
Код
int calcsum (int ar1[7][7], int i)
{
int sum = 0;
int j;
for (j=0;j<7;j++)
sum += ar1[j][i];
return sum;
}
И напишите, пожалуйста, что находится в 18 строчке.
SERG.29
Сообщение
#13354 9.4.2008, 15:29
с новым годом. думали трудно заново зарегистрироваться.
Дмитрий
Сообщение
#13363 9.4.2008, 19:27
Цитата(SERG.29 @ 9.4.2008, 19:29)

с новым годом. думали трудно заново зарегистрироваться.
В чем проблемы?
SERG.29
Сообщение
#13366 10.4.2008, 5:07
Мне на старый ник поставили бан, короче запретили добавлять сообщения на форум
creer
Сообщение
#13391 10.4.2008, 17:28
Бан не ставят просто так.
Все дальнейшие сообщения не по теме топика лучше перенести в личные сообщения.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.