Показать полную графическую версию : [решено] Помогите решить задачу по С++
Страниц :
1
2
3
4
5
6
7
8
9
[
10]
11
12
13
14
15
16
ValeraRU, а где алгоритм действия, мысли, догадки, предложения? С нуля к зачетной сессии писать?
P.S. Спасибо не булькает.
ValeraRU
11-12-2010, 21:51
ValeraRU, а где алгоритм действия, мысли, догадки, предложения? С нуля к зачетной сессии писать?
P.S. Спасибо не булькает. »
есть догадки..
могу показать,там наверно надо будет переделывать уйму,так что лучше с 0
профессор попался плохой... вот и обращаюсь к вам за помощью!
методички и прочие мануалы не спасают!
ValeraRU,
> профессор попался плохой... вот и обращаюсь к вам за помощью! методички и прочие мануалы не спасают!
Понимаешь, это слабая "отмазка". Дело даже не в профессоре и не в методическом материале.
Все дело в понимании. Либо ты понимаешь, как задача должна выполняться либо нет.
Если понимаешь, то описывай алгоритм словами. Подробно, по шагам, можно своими. Но так, что бы было понятно школьнику не знакомому с тайнами программирования. Пиши просто без высших материй.
Когда ты сам будешь понимать какой шаг/действие зачем нужно, то мы уже напишем по ним программный код. А затем подпишем как какой шаг как реализован.
могу показать,там наверно надо будет переделывать уйму »
Показывай. Писать с нуля лень до жути. Заодно будет понятен уровень требований. Т.к. усложнить решение - не проблема. Проблема будет тебе потом объяснить "как это работает?"
Поэтому мы переводим в программный код только собственные мысли вопрошающего.
ValeraRU
12-12-2010, 15:39
ValeraRU,
> профессор попался плохой... вот и обращаюсь к вам за помощью! методички и прочие мануалы не спасают!
Понимаешь, это слабая "отмазка". Дело даже не в профессоре и не в методическом материале. »
мне пригласить на форум всю группу ? =(
я пришел в универ с огромным желанием.. но подход учителя огорчает,в любом случае не суть
значит:
Показывай. Писать с нуля лень до жути. Заодно будет понятен уровень требований. Т.к. усложнить решение - не проблема. Проблема будет тебе потом объяснить "как это работает?"
Поэтому мы переводим в программный код только собственные мысли вопрошающего. »
по поводу 1ой задачи
#include <stdio.h>
int main(int argc, char* argv[])
{
int matrix[8][8] = {
{ 2, 7, 2, 7, 1, 4, 0, 3 },
{ 1, 0, 7, 6, 0, -8, 3, 5 },
{ 2, 7, 1, 8, 1, 4, 9, 3 },
{ 9, 2, 8, 5, 2, 0, 0, 6 },
{ 7, 1, 1, 3, 9, 3, 9, 1 },
{ 8, 2, 4, 9, 1, -6, 4, 9 },
{ 0, 3, 9, 0, 9, 4, 8, 8 },
{ 1, 8, 3, 2, 8, 2, 8, 0 }
};
int i, j, jSumm;
char bFlag,true,false;
printf("k = ");
for (i = 0; i < 8; i++)
{
bFlag = true;
for (j = 0; j < 8; j++)
{
if (matrix[i][j] != matrix[j][i])
{
bFlag = false;
break;
}
}
if (bFlag) printf("%d ", i);
}
printf("\n\n");
for (i = 0; i < 8; i++)
{
bFlag = true;
iSumm = 0;
for (j = 0; j < 8; j++)
{
if (matrix[i][j] > 0) bFlag = true;
iSumm += matrix[i][j];
}
if (!bFlag) printf("summa elementov stolbtsa #%d = %d\n", j, jSumm);
}
return 0;
}
PS
не могли бы вы дать ваш номер ICQ или что то другое,чтобы не засорять форум ?
мне пригласить на форум всю группу ? =( »
ты хочешь нам доплачивать? :) но подход учителя огорчает »
*Преподавателя. У них с учителем чуть разные функции. ;)
не могли бы вы дать ваш номер ICQ или что то другое,чтобы не засорять форум ? »
Нет, до тех пор пока не научишься искать информацию самостоятельно. (Не в обиду)
По коду.
Где комментарии?
for (i = 0; i < 8; i++)
{
bFlag = true;
for (j = 0; j < 8; j++)
{
if (matrix[i][j] != matrix[j][i])
{
bFlag = false;
break;
}
}
if (bFlag) printf("%d ", i);
}
Это вот это что такое? Это к чему вообще?
for (i = 0; i < 8; i++)
{
bFlag = true;
iSumm = 0;
for (j = 0; j < 8; j++)
{
if (matrix[i][j] > 0) bFlag = true;
iSumm += matrix[i][j];
}
if (!bFlag) printf("summa elementov stolbtsa #%d = %d\n", j, jSumm);
}
Ну а это? Для чего и какую часть задачи решает?
Ты по моему взял два каких-то куска кода, слепил их в месте, а что от тебя требовалось сделать - не понял.
Еще раз, без кода, русскими словами, напиши последовательность решения задачи.
Если не получается, возьми пример, реши его устно и запиши последовательность своих действий. (Друга попроси помочь)
1 Берем матрицу
2. Берем строку/столбик
3. Что мы с ним должны сделать? Наверно проверить на что нибудь.
3.1. Как мы это делаем, как проверяем на некое условие?
3.2. Что делать если условие выполнилось?
и т.д.
Заодно, ко второй части программы.
Что такое побочная диагональ в матрице? (С не давнего времени, один из моих любимых вопросов студенчеству :) )
Каким св-ом обладают || ные ей диагонали?
Все это сейчас рассуждения и анализ задачи. Надо понять что надо делать. Вторым шагом будет внесение математических формул. (Дисциплина то научная :) ) И уже 3тим шагом будет программирование.
Поэтому не торопись писать сразу код, это самое последний твой шаг. Сделай пока первые два.
BullFrog
24-12-2010, 23:17
Здравствуйте.
Мне нужна помощь в решении задачи на С++.
Суть задачи : В файле храниться значения некоторой структурной переменной.
Нужно считать ее в список и отсортировать.
Дано что то такое :
Struct A
{ int a;
Struct B b;
};
Struct B
{ char y;
double z;
}
Сортировка по (b.z)^b.y a/2
Лучше в личку. Если нет желания или времени разбираться в моих, наверное, не понятных записях, то прошу скинуть на книжки про Структуры,Списки,Указатели и Виртуальную память.
Profi_Boss
08-01-2011, 02:27
Здравствуйте, есть задача, непонятен сам алгоритм реализации.
Найти два элемента целочисленного массива, разность которых дает значение наиболее близкое к среднему арифметическому всех элементов массива.
Ввести массив ясно как...среднее арифметическое тоже, а вот как найти эти два искомых два числа непонятно что-то ..=\
int main ()
{
int size, arifm_sum;
int sum = 0;
cout << "Vvedite razmer massiva: ";
cin >> size;
int *array = new int[size];
cout << "Vvedite elementi masiva: ";
for ( int i = 0; i < size; i++ )
{
cin >> array[i];
}
// Naxodim srednee arifmeti4eskoe chisel
for ( int i = 0; i < size; i++ )
{
sum = sum + array[i];
}
arifm_sum = sum/size;
// Naxodim iskomix 2 elementa
Profi_Boss,
arifm_sum не мешало бы сделать типа float.
#include <math.h>
...
float nearest = fabs ( abs ( array[0] - array[1] ) - arifm_sum );
int num1 = array[0], num2 = array[1];
for ( int i = 0; i < size; i++ )
{
for ( int j = i + 1; j < size; j++ )
{
if ( fabs ( abs ( array[i] - array[j] ) - arifm_sum ) < nearest)
{
nearest = fabs ( abs ( array[i] - array[j] ) - arifm_sum );
num1 = array[i];
num2 = array[j];
}
}
}
cout << "Iskomye elementy: " << num1 << " i " << num2 << endl;
999Corp999
16-01-2011, 21:44
Всем доброго времени суток!!!
Нужна помощь в решении задачи по созданию консольного калькулятора, т.е. мы вводим с клавиатуры выражение со скобками, +, -, *, /, sin, cos, tan, степень. и он считает это выражение. За основу я взял пример из Шилдта, там рекурсивный подход. Я разобрался полностью с кодом, но никак не могу в него добавить распознование тригонометрических функций... Я представляю, что при виде символов cos, sin, tan он их должен обрабатывать как унарные операции, что это как еще одна функция должна быть включена в рекурсию, но никак не могу реализовать...
Подскажите пожалуйста, очень нужно до среды...
P.S. И еще, в исходниках, в функции get_token() я не могу понять, где идет в процессе построения лексемы идет запись в переменную token...
Profi_Boss
20-01-2011, 16:51
belk94 спасибо, разобрался! =)
Profi_Boss
06-02-2011, 15:25
В одномерном массиве целых чисел расставить четные числа по возрастанию значений, а затем нечетные по убыванию.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int size, x;
int j = 0;
cout <<"Razmer massiva: ";
cin >> size;
int* array1 = new int[size];
cout << "Vvedite elementi massiva ";
for ( int i = 0; i < size; i++ )
{
cin >> array1[i];
}
// Sozdaem noviy massiv
int* array2 = new int[size];
// Zapolnyaem noviy massiv chetnimi chislami
for ( int i = 0; i < size; i++ )
{
if ( array1[i]%2 == 0 )
{
array2[j] = array1[i];
j+=1;
}
if ( i = ( size - 1 ) )
{
for ( int k = 0; k < j; k++ )
{
for ( int m = (k + 1); m < j; m++ )
{
if ( array2[k] > array2[m] )
{
x = array2[k];
array2[k] = array2[m];
array2[m] = x;
}
}
}
}
int a = j;
int b = j;
}
// Yporyadochivaem nechetnie chisla
for ( int i = a; i < size; i++ )
{
if ( array1[i]%2 != 0 )
{
array2[a] = array1[i];
a++;
}
if ( i = ( size - 1 ) )
{
for ( int k = b; k < size; k++)
{
for ( int d = ( k + 1 ); d < size; d++ )
{
if ( array2[k] < array2[d] )
{
int c = array2[k];
array2[k] = array2[d];
array2[d] = c;
}
}
}
}
}
system ("pause");
return 0;
}
Вот мой код программы, непонятно как сохранить номер последнего члена упорядоченного массива четных чисел,чтобы от этого номера уже начинать потом отсчет множества нечетных чисел, тут я это значение сохранил под именем a и b, но по выходус оператора for значения уничтожаются, может с помощью оператора static можно что-то сделать? и вообще правильно ли я делаю саму программу, т.к. она у меня получилась сильно сложной, я думаю есть какие-то варианты по-проще...
Добрый Вечер У меня такой вопрос....
Допустим есть Файл , Я хочу полностью заменить строку в нем (номер строки я знаю) как можно это сделать без лишнего кода(то беш компактно) в visual c++
Так как не писал проги для файловой системы не знаю что делать помогите пожалуйста))
Заранее говорю нужно сделать строку ввида SetSave net_name (переменная типа string хотя можно и char)
номер строки кстати 300
Буду очень признателен)))
andrei88
25-02-2011, 19:57
Добрый вечер!
Есть строка
char str[] = "a\x11";
При этом printf выводит: a�
Если я пытаюсь сделать так: gets(str); и ввожу a\x11
При этом printf выводит: a\x11
Как в переменную ввести тоже самое с клавиатуры, что бы вывод что и в первом варианте?
andrei88 - у тебя \x11 это ascii код символа, а когда ты с клавы вводишь \x11 ты вводишь не один - а целых 4-е символа каждый который имеет аски код. Просто в си придумали такую фишку - \ - чтобы можно было определить - это ты хочешь какойто служебный символ ввести или просто символ с клавы. А вообще - жмешь alt + dec-код символа и вуаля. Пуск-программы-служебные-таблица символов поможет тоже
andrei88
25-02-2011, 20:37
Beyound
Как тогда сделать, что б вводишь \x11 преобразовался в один символ?
Привет всем а можете объяснить алгоритм сортировки пузырьковым методом.В моей задаче надо разсортировать список людей по фамилиям по алфавиту.
можете объяснить алгоритм сортировки пузырьковым методом. »
А Yandex, Google и Wikipedia не спасают? Это классический механизм, описанный тысячи раз. Тысячу первое описание будет так себе.
В моей задаче надо рассортировать список людей по фамилиям по алфавиту. »
Чисто интуитивно задача ясна. Вопрос как ее надо реализовать? (Примеров реализации так же на любой вкус и цвет)
И на этот вопрос отвечать вам! Мы в лучшем случае поможем с деталями задачи, когда будет задан конкретный вопрос.
DennyD, Пузырьком (http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0 %BA%D0%BE%D0%BC)
хм можете прислать код или объяснить...у меня в задаче надо создать таблицу из имени фамилии отчества года рождения людей,заполнить ее и потом разсортировать людей по фамилиям в алфавитном порядке,я создал класс и массив объектов этого класса в простом заполнении проблем нет а вот как сортировать не пойму,можете написать функцию?
DennyD
Например можно сделать так:
class Man //ваш класс
{
char firstname[MAX_LENGTH]
...
bool operator > (Man& data)
{
return (this->firstname[0]>data.firstname[0]);
};
}
Man M[LENGTH]
for(int i=0; i < LENGTH-1; i++)
for(int j=i+1; j<LENGTH; j++)
if(M[i]>M[j})
{
Man temp=M[i];
M[i]=M[j];
M[j]=temp;
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.