Помогите написать программу на С++
-=Mafia=-
Интересующийся
8/17/2007, 12:36:32 PM
Дана целочисленная матрица. Определить:
1) Сумму элементов в тех строках, которые содержат хотябы один отрицательный элемент;
2) Номер столбца, в котором стоит минимальный элемент
1) Сумму элементов в тех строках, которые содержат хотябы один отрицательный элемент;
2) Номер столбца, в котором стоит минимальный элемент
do-do
Мастер
8/17/2007, 3:20:43 PM
Тупая блок схема подойдет ?
i,j - индекс столбца и индекс строки соответсвенно
a - элемент матрицы
y=0 - вспомогательная переменна
N,M - размерность матрицы
функция сумма(j) - функция суммирует строку элементов
K=0
цикл по всем столбцам строки j
K=K+a
return K
функция минимум(j) - функция находит минимальный элемент в строке
l-вспомогательная переменная
NN-вспомогательная переменная
l=a присвоим переменной значение первого элемента строки j
цикл по элементам сроки начиная со второго
если l>a тогда {l=a;NN=текущий индекс}
return NN
тело программы
Инициализация матрицы a
цикл по всем строкам
цикл по всем столбцам (т.е. по элементам строки)
Если y>a тогда printf(CYMMA(j),минимум(j));
Думаю в код такое перегнать легко
i,j - индекс столбца и индекс строки соответсвенно
a - элемент матрицы
y=0 - вспомогательная переменна
N,M - размерность матрицы
функция сумма(j) - функция суммирует строку элементов
K=0
цикл по всем столбцам строки j
K=K+a
return K
функция минимум(j) - функция находит минимальный элемент в строке
l-вспомогательная переменная
NN-вспомогательная переменная
l=a присвоим переменной значение первого элемента строки j
цикл по элементам сроки начиная со второго
если l>a тогда {l=a;NN=текущий индекс}
return NN
тело программы
Инициализация матрицы a
цикл по всем строкам
цикл по всем столбцам (т.е. по элементам строки)
Если y>a тогда printf(CYMMA(j),минимум(j));
Думаю в код такое перегнать легко
ole256
Любитель
8/17/2007, 6:10:37 PM
Я бы слегка другой набор функций написал:
1. Поиск минимального элемента в матрице. Возвращает номер столбца.
2. Сумма элементов строки. Возвращает int.
3. Проверка, есть ли в строке хоть один отрицательный элемент. Возвращает bool.
Кстати, в функции надо передавать и саму матрицу с ее размерностью, в С++ свойства length у массива нет.
1. Поиск минимального элемента в матрице. Возвращает номер столбца.
2. Сумма элементов строки. Возвращает int.
3. Проверка, есть ли в строке хоть один отрицательный элемент. Возвращает bool.
Кстати, в функции надо передавать и саму матрицу с ее размерностью, в С++ свойства length у массива нет.
do-do
Мастер
8/17/2007, 6:43:02 PM
глобально можно задать размер матрицы
DELETED
Акула пера
8/17/2007, 7:53:16 PM
CODE #include <stdio.h>
#include <tchar.h>
void JustDoIt( int** pArray, int nRows, int nColumns ) {
// Настоящий указатель на массив
int* pPtr = (int*)pArray;
// В этой байде мы будем хранить суммарное и нижнее значение столбца
typedef struct _RESULT {
int nLowestValue;
int nTotalValue;
int nColumn;
} RESULT, *PRESULT;
// На самом деле в этой.. :)
PRESULT pResults = new RESULT[nRows];
// Обнуляем массив промежуточных результатов
for ( int y = 0; y < nRows; y ++ ) {
pResults[y].nTotalValue = pResults[y].nLowestValue = 0;
pResults[y].nColumn = -1;
};
// Считаем сумму всех значений по строкам и, заодно, ищем нижнее
for ( int y = 0; y < nRows; y ++ ) {
for ( int x = 0; x < nColumns; x ++ ) {
int nValue = pPtr[y*nColumns+x];
pResults[y].nTotalValue += nValue;
if ( pResults[y].nLowestValue > nValue ) {
pResults[y].nLowestValue = nValue;
pResults[y].nColumn = x;
};
};
};
// Теперь фильтруем базар и выводим результаты
RESULT YetAnotherResult = { 0, 0, 0 };
for ( int y = 0; y < nRows; y ++ ) {
if ( pResults[y].nLowestValue < 0 ) {
// +1 надо убрать, тогда номер строки будет па-пацански
printf ( "Строка %d имеет отрицательный элемент %d. Сумма значений строки: %d\r\n", y + 1, pResults[y].nLowestValue, pResults[y].nTotalValue );
};
if ( YetAnotherResult.nLowestValue > pResults[y].nLowestValue ) {
YetAnotherResult.nLowestValue = pResults[y].nLowestValue;
YetAnotherResult.nColumn = pResults[y].nColumn;
};
};
// Собсснно все... +1 надо убрать, тогда номер столбца будет па-пацански
printf ( "\r\nСтолбец %d имеет минимальный элемент %d.\r\n", YetAnotherResult.nColumn + 1, YetAnotherResult.nLowestValue );
delete ( pResults );
}
int main(int argc, _TCHAR* argv[]) {
int a[3][4] = { { 10, 200, -11, 10 },
{ -1, 100, 10, 000 },
{ 0, 000, 00, 10 } };
JustDoIt( (int**)a, 3, 4 );
}
#include <tchar.h>
void JustDoIt( int** pArray, int nRows, int nColumns ) {
// Настоящий указатель на массив
int* pPtr = (int*)pArray;
// В этой байде мы будем хранить суммарное и нижнее значение столбца
typedef struct _RESULT {
int nLowestValue;
int nTotalValue;
int nColumn;
} RESULT, *PRESULT;
// На самом деле в этой.. :)
PRESULT pResults = new RESULT[nRows];
// Обнуляем массив промежуточных результатов
for ( int y = 0; y < nRows; y ++ ) {
pResults[y].nTotalValue = pResults[y].nLowestValue = 0;
pResults[y].nColumn = -1;
};
// Считаем сумму всех значений по строкам и, заодно, ищем нижнее
for ( int y = 0; y < nRows; y ++ ) {
for ( int x = 0; x < nColumns; x ++ ) {
int nValue = pPtr[y*nColumns+x];
pResults[y].nTotalValue += nValue;
if ( pResults[y].nLowestValue > nValue ) {
pResults[y].nLowestValue = nValue;
pResults[y].nColumn = x;
};
};
};
// Теперь фильтруем базар и выводим результаты
RESULT YetAnotherResult = { 0, 0, 0 };
for ( int y = 0; y < nRows; y ++ ) {
if ( pResults[y].nLowestValue < 0 ) {
// +1 надо убрать, тогда номер строки будет па-пацански
printf ( "Строка %d имеет отрицательный элемент %d. Сумма значений строки: %d\r\n", y + 1, pResults[y].nLowestValue, pResults[y].nTotalValue );
};
if ( YetAnotherResult.nLowestValue > pResults[y].nLowestValue ) {
YetAnotherResult.nLowestValue = pResults[y].nLowestValue;
YetAnotherResult.nColumn = pResults[y].nColumn;
};
};
// Собсснно все... +1 надо убрать, тогда номер столбца будет па-пацански
printf ( "\r\nСтолбец %d имеет минимальный элемент %d.\r\n", YetAnotherResult.nColumn + 1, YetAnotherResult.nLowestValue );
delete ( pResults );
}
int main(int argc, _TCHAR* argv[]) {
int a[3][4] = { { 10, 200, -11, 10 },
{ -1, 100, 10, 000 },
{ 0, 000, 00, 10 } };
JustDoIt( (int**)a, 3, 4 );
}
do-do
Мастер
8/17/2007, 11:26:46 PM
педагог бля :)
Мне тупые студенты надоели ужо - пущай хоть кодил бы сам.
Экзамен, компьютерный класс, интернет, раздал билеты, читаю книгу, народ ломится в сеть и ищет ответы.
Подходят, на 5 листов ответ, мелким почерком. Беру бумажку, откладываю в сторону и спрашиваю НУ
Ничего :)
Пока переписывал, даж в смысл не вник
Мне тупые студенты надоели ужо - пущай хоть кодил бы сам.
Экзамен, компьютерный класс, интернет, раздал билеты, читаю книгу, народ ломится в сеть и ищет ответы.
Подходят, на 5 листов ответ, мелким почерком. Беру бумажку, откладываю в сторону и спрашиваю НУ
Ничего :)
Пока переписывал, даж в смысл не вник
DELETED
Акула пера
8/17/2007, 11:42:49 PM
Я первый вариант с забавной ошибкой запостил. Потом подумал, и перепостил. Таки преподаватель поймет, что не сам писал. :) Ибо кто сам писал, на НУ ответит. ?)
do-do
Мастер
8/18/2007, 12:52:08 AM
Ответит :)
Кстати есть вменяемые люди, обычно работающие в фирмах по профилю обучения, проблему руками знают. У таких не грех и поучиться всяким тонкостям и хитростям.
Помню, скоро экзамен - подходит студентка - говорит Вы нам Дайте вопросы и Ответы, а мы их выучим :)
Спрашиваю, а зачем?
Не понимает.
Говорю, ответы я и так знаю (ну коли билеты готовлю :) ), так что мне не нужны они, мне важно, что вы понимаете :)
Самое, что удивительное, народ бабки (и не малые) платит за учебу, на лекции не ходит, хочет на шару проехать.... типа видать платят, шоб от армии откосить
Кстати есть вменяемые люди, обычно работающие в фирмах по профилю обучения, проблему руками знают. У таких не грех и поучиться всяким тонкостям и хитростям.
Помню, скоро экзамен - подходит студентка - говорит Вы нам Дайте вопросы и Ответы, а мы их выучим :)
Спрашиваю, а зачем?
Не понимает.
Говорю, ответы я и так знаю (ну коли билеты готовлю :) ), так что мне не нужны они, мне важно, что вы понимаете :)
Самое, что удивительное, народ бабки (и не малые) платит за учебу, на лекции не ходит, хочет на шару проехать.... типа видать платят, шоб от армии откосить
DELETED
Акула пера
8/18/2007, 2:18:43 AM
Хех.
Может -=Mafia=- гуманитарий. Нафиг ей программа на С++? :)
Может -=Mafia=- гуманитарий. Нафиг ей программа на С++? :)
do-do
Мастер
8/18/2007, 2:32:07 AM
А нафик мне был Марксизм-Ленинизм ? Но вишь ли широту взглядов надо все ж РАЗВИВАТЬ, затрачивать усилия. Если был курс по С/C++ худо бедно чел. слышал что такое main - но если такие элементарные задачи не смочь сделать, так ведь логическое мышление и гуманитарию нужно.
Еще вспомни как люди дипломы пишут...copy paste. Листал я такое, куски даже не сшиты меж собой, так лежат - непонятными (или непонЯтыми) кусками
Еще вспомни как люди дипломы пишут...copy paste. Листал я такое, куски даже не сшиты меж собой, так лежат - непонятными (или непонЯтыми) кусками
ole256
Любитель
8/18/2007, 7:22:41 AM
-=Mafia=- , только когда программу будете писать, не забудьте сделать, чтобы размерность матрицы задавалась с клавиатуры: Функции printf/scanf или потоки cout/cin.
do-do
Мастер
8/18/2007, 1:27:48 PM
в учебных целях так не морочатся, обычно (!) уже матрица готова :) и лежит в текстовом формате рядом с исполняемым файлом
Препод ее пальцами меняет и глядит шо получается.
Так, что надо файловые операции использовать :) Что ж предлагаю доброму самаритянину JeyLo и еще раз помочь гуманитарию.
Дан текстовый файл, матрица записана в естественном виде, по строкам, число столбцов и строк больше 1
Написать функцию считывающую матрицу в массив и сразу же подсчитывающую размерность матрицы
Препод ее пальцами меняет и глядит шо получается.
Так, что надо файловые операции использовать :) Что ж предлагаю доброму самаритянину JeyLo и еще раз помочь гуманитарию.
Дан текстовый файл, матрица записана в естественном виде, по строкам, число столбцов и строк больше 1
Написать функцию считывающую матрицу в массив и сразу же подсчитывающую размерность матрицы
Shaiya
Мастер
8/20/2007, 2:26:05 AM
(do-do @ 18.08.2007 - время: 09:27) Дан текстовый файл, матрица записана в естественном виде, по строкам, число столбцов и строк больше 1
Написать функцию считывающую матрицу в массив и сразу же подсчитывающую размерность матрицы
Наш препод по ЛО САПР и Оптимизации в САПР, в рамках которых мы и изучали С++, именно так и делал - практически все задания лежали во внешних файлах... Господи, как же давно это было... я почти ничего не помню из синтаксиса...
Написать функцию считывающую матрицу в массив и сразу же подсчитывающую размерность матрицы
Наш препод по ЛО САПР и Оптимизации в САПР, в рамках которых мы и изучали С++, именно так и делал - практически все задания лежали во внешних файлах... Господи, как же давно это было... я почти ничего не помню из синтаксиса...
-=Mafia=-
Интересующийся
8/20/2007, 1:24:50 PM
Спасибо, всем за помощь
Pcixopat
Новичок
12/21/2007, 5:23:19 PM
ПОМОГИТЕ НАПИСАТЬ ПРОГУ НА С++ ПЛИИИЗ!!!
4 задания, помогите что сможете!
1)
Дан номер года .Найти число дней в году
В григориганском календаре каждый год, номер которого делится на 4,являeтся високосным, за исключением тех, которые делятся на 100 и не делятся на 400 нацело. 1900г.-невисокос. 2000г.-високосный.
2)
Задан текст. Каждая строка текста имеет следующую структуру: Фамилия - <фамилия> Имя - <имя> Отчество - <отчество>. Выделить правые слова из каждой пары слов.
3)
Написать программу для вычисления значения функции, заданной с помощью рядов. При условии, что заданная функция имеет аналитическое решение, сравнить значение рядной функции с точным. Вычислить значения невязки значений рядной и стандартной (Windows) функций , проанализировать динамику изменения значения невязки в зависимости от количества слагаемых в ряде.
Вычисление sec(x), sec(x)=Сумма(снизу n=0 сверху бесконечность)*En/2n!*x(в степени 2n)(x(в степени 2)<Пи(в степени 2)/4)
4)
Матрица А из N стpок и N столбцов размещена в одномерном массиве по строкам. Поменять местами К-ю и L-ю строки матрицы (К и L заданы). Результат напечатать по строкам.
4 задания, помогите что сможете!
1)
Дан номер года .Найти число дней в году
В григориганском календаре каждый год, номер которого делится на 4,являeтся високосным, за исключением тех, которые делятся на 100 и не делятся на 400 нацело. 1900г.-невисокос. 2000г.-високосный.
2)
Задан текст. Каждая строка текста имеет следующую структуру: Фамилия - <фамилия> Имя - <имя> Отчество - <отчество>. Выделить правые слова из каждой пары слов.
3)
Написать программу для вычисления значения функции, заданной с помощью рядов. При условии, что заданная функция имеет аналитическое решение, сравнить значение рядной функции с точным. Вычислить значения невязки значений рядной и стандартной (Windows) функций , проанализировать динамику изменения значения невязки в зависимости от количества слагаемых в ряде.
Вычисление sec(x), sec(x)=Сумма(снизу n=0 сверху бесконечность)*En/2n!*x(в степени 2n)(x(в степени 2)<Пи(в степени 2)/4)
4)
Матрица А из N стpок и N столбцов размещена в одномерном массиве по строкам. Поменять местами К-ю и L-ю строки матрицы (К и L заданы). Результат напечатать по строкам.
do-do
Мастер
12/21/2007, 6:23:13 PM
По первой задаче, загляни на https://www..********.ru/docs/analis/planer.htm
и https://.********.com/article127748.html там есть формулы
вычитай из одного года другой и все :)
А остальное...... смешно даж
и https://.********.com/article127748.html там есть формулы
вычитай из одного года другой и все :)
А остальное...... смешно даж
Pcixopat
Новичок
12/21/2007, 11:18:57 PM
Мне до вторника сдать всё нада , а я С++ вообще раньше не изучал!!!
Плииииз напишите мне хотя бы несколько программ!!! Заранее всем спасибо)))
Плииииз напишите мне хотя бы несколько программ!!! Заранее всем спасибо)))
do-do
Мастер
12/22/2007, 1:52:17 PM
Вишь ..у тебя задачи - ну скажем в 2-3 действия.... и честно говоря не интересные... хотя есть конечно альтруисты...
Но есть проект ***** покопайся там.
Но есть проект ***** покопайся там.
Pcixopat
Новичок
12/22/2007, 4:41:02 PM
СПАСИБО!!!
DELETED
Акула пера
12/22/2007, 10:41:01 PM
М-да. Не прочел. Подстава.
Первая задача, ладно, элементарная:CODE
int HowManyDaysInAYear ( int nYear ) {
return 365 + !( nYear % 4 ) - ( !(nYear % 100) && (nYear % 400) );
}
Вторую не понял. А что, sscanf уже отменили?
Третье: я офигеваю. Скриншот вкладывайте, бо то не задача, а полный бред.
Четвертое: Не ... людям мозг. То таких не бывает рядом с третьей. Сменить два указателя - задача???
Короче снимайте скриншот с задач. А то фигня какая-то получается.
Первая задача, ладно, элементарная:CODE
int HowManyDaysInAYear ( int nYear ) {
return 365 + !( nYear % 4 ) - ( !(nYear % 100) && (nYear % 400) );
}
Вторую не понял. А что, sscanf уже отменили?
Третье: я офигеваю. Скриншот вкладывайте, бо то не задача, а полный бред.
Четвертое: Не ... людям мозг. То таких не бывает рядом с третьей. Сменить два указателя - задача???
Короче снимайте скриншот с задач. А то фигня какая-то получается.