Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы в Borland C++Builder 6 > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
SERG29
Условие задачи: Из массива Х целых чисел перенести в массив 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
Ну а какая именно проблема возникла? Опишите поподробней.
SERG29
Цитата(alxdr @ 2.4.2008, 13:49) *

Ну а какая именно проблема возникла? Опишите поподробней.

Не знаю что писать дальше. Незнаю, что означает Хn по Хm, где Хn > Xn-1 и Xm > A. Вот и хотел, чтоб тут помогли.
creer
Из библиотек необходима только 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
ввёл код и при компиляции выдало ошибку в подчёркнутой строке:
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
Тогда вместо ' ', нужно написать " ". smile.gif
SERG29
Спасибо, программа заработала, только при выводе ответа появились ещё какие-то числа:

Programma po perenosy chisel.
-15-10-505104202423420765212449843230

И пишу свои вопросы второй задачи. Условие: Задана матрица А(7,7) целых чисел. Найти столбец с наибольшей суммой элементов. Поменять местами наибольший элемент каждой строки с соответствующим элементом данного столбца. Организовать поиск столбца и наибольшего элемента в строке с помощью подпрограмм.
Я тут не пойму, как задать матрицу, притом с семью столбцами и 7 строчками? Если можете, тоже приведите пример этой задачи.
creer
Остальные числа появились из-за того, что когда создается массив, он не заполняется какими-либо значениями, а под него просто выделяется память. Остальные значения - это те, которые были в оперативной памяти ранее. Можно либо заполнять массив нулями в начале программы, либо просто не выводить весь массив целиком, а вывести только начало массива.

Матрица - это двухмерный массив, задается примерно так же:
int ar [7][7];
Вот мы задали двухмерную матрицу ar размерности 7x7.
ar[0][0]=5;
Присвоили элементу (0;0) значение 5.
Если Вам придется дальше решать задачи по программированию, то все это лучше понять, это основы.
SERG29
Изучать программирование мне придется только этот семестр. к/р состоит из 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
Да, матрицу необходимо либо задать в программе (или жестко указать значения как в первой задаче, или воспользоваться генератором случайных чисел), либо вводить с клавиатуры.
Чтобы найти максимальный элемент в строке, нужно сравнить все элементы строки между собой.
Подпрограммы это тоже, что и int main(){}, только main() главная. Например int maxel(const int n){находим макс. элемент; return max;}
SERG29
Благодаря нечеловеческих усилий и помощи друзей удалось написать что-то. Но как всегда компилятор выдаёт ошибки. Посмотрите и скажите где ошибки:


//---------------------------------------------------------------------------
#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
В секции 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
Сделал исправления - и выдаёт ошибку:

Unit1.cpp(18); E2378 Return statement missing;

Ну когда уже эти ошибки закончатся.
creer
Функция 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
с новым годом. думали трудно заново зарегистрироваться.
Дмитрий
Цитата(SERG.29 @ 9.4.2008, 19:29) *

с новым годом. думали трудно заново зарегистрироваться.

В чем проблемы?
SERG.29
Мне на старый ник поставили бан, короче запретили добавлять сообщения на форум
creer
Бан не ставят просто так.

Все дальнейшие сообщения не по теме топика лучше перенести в личные сообщения.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.