Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Помогите решить задачу по С++ (http://forum.oszone.net/showthread.php?t=118452)

Spl1t 27-09-2008 14:54 910054

[решено] Помогите решить задачу по С++
 
  1. По заданному натуральному(целому) числу, определить количество цифр и найти их сумму.
  2. По заданному натуральному(целому) числу, определить количество цифр и найти их сумму. Из указаного диапазона n и m
  3. Выполнить инвертирование трех одномерных массивов: А[20], В[10], С[15]. Написать функции: -Заполнение массива числами в диалоговом режиме. -Вывода одномерного массива -Инвертирование одномерного массива.
  4. Определитьдля каждого из трех одномерных массивов : A[45], B[10], C[20] сколько раз в них встретились два подряд идущих нулевых элемента. Написать функции: -Заполнение массива числами в диалоговом режиме. -Вывода одномерного массива. -Определения количества двух подряд идущих нулевых элементов в одномерном массиве.


Выдержка из правил форума
Цитата:

Вопросы, в которых нет кода и следов ваших размышлений над поставленной задачей также будут перенесены в закрытую тему - Уголок Ленивого Программиста

Исходное сообщение автора

Задание: Написать прогу, которая по заданному натуральному числу определяет количество цифр в нем и их сумму.Протестируйте функцию десятичных чисел из некоторого диапазона от n до m.

mrcnn 27-09-2008 17:24 910210

Это не прога, а ерунда.
Код:

int razrad(int m)
{
        int result=0;
        if (m==0)       
                return(1);       
        if (m < 0)       
                m = -m;       
        for( ; m > 0 ; )
        {
                m = (m - m % 10)/10;
                result++;               
        }
        return result;
}


Spl1t 27-09-2008 17:28 910212

Спасибо большое,ман...
сорри за ламерский вопрос...это полная прога?ниче не надо дописывать в начале или еще где?( вобще не разбираюсь(

Drongo 27-09-2008 17:38 910225

Spl1t, Держи, единственный нюанс, я не понял смысл этой фразы
Код:

Протестируйте функцию десятичных чисел из некоторого диапазона от n до m.
Если я правильно понял, то тут стоит прикрутить цикл, от числа нижней границы диапазона, до числа верхней границы диапазона, и проверить все числа, выводя, количество чисел и их сумму? Или как?
P.S. Писана на Borland C++ 6.0
Решение

Код:

// Написать прогу, которая по заданному натуральному числу
// определяет количество цифр в нем и их сумму.
// Протестируйте функцию десятичных чисел из некоторого диапазона от n до m.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

// Функция расчитывающая количество чисел во введённом числе...
int Rasriad(int enterNumber)
{
  int n = enterNumber, x = 0;
        while (n != 0) {
                n /= 10;
                x++;
        }
        return x;
}

int main()
{
  int enterNumber,
      lenght = 0,
      indexRas,
      decimal = 1,
      summa = 0,
      z;

  cout<<"Enter Number: ";
  cin>>enterNumber;

  // определяет количество цифр в нем и их сумму.
  lenght = Rasriad(enterNumber);

  for(int j = 1; j < lenght; j++)
      decimal *= 10;

  for(int i = 0; i < lenght; i++){
      indexRas = enterNumber / decimal % 10;
      cout<<" Number "<<i<<" = "<<indexRas<<endl;
      summa += indexRas;
      decimal /= 10;
    }

  cout<<"\n Summa all numbers: "<<summa<<endl;
  cin>>z;

  return 0;
}
//---------------------------------------------------------------------------


mrcnn 27-09-2008 17:39 910226

Чтобы прогу написать, надо жестко пахать.
Никто никогда ни в чем не хочет разбираться, поэтому и находятся в известном мягком месте.
Зачем вам информатика, если вы не хотите разбираться?
Забейте на это гиблое дело и идите работать грузчиком.

Spl1t 27-09-2008 17:41 910227

mrcnn
Как я уже написал выше..мне осталось сдать только один зачет...я учусь на спеуиальнсоти "Тамодженное дело"..никогда бы не пошел на информатику..и поэтому обратился сюда с этой проблемой

Drongo
да,речь тут про цикл идет

Drongo 27-09-2008 17:45 910234

Вложений: 1
Spl1t, Прикрепил скомпиленную прогу, надеюсь то, что надо.

Drongo 27-09-2008 17:46 910235

Spl1t,
Цитата:

Цитата Spl1t
да,речь тут про цикл идет »

Да я знаю, что про цикл, каков диапазон чисел?

Spl1t 27-09-2008 17:47 910236

Drongo
Спасибо..то,что надо как раз...мне бы код)

Получается,что все натуральные числа больше 9

Drongo 27-09-2008 17:49 910239

Цитата:

Цитата Spl1t
мне бы код »

А я что в 4 комментарии выложил? ;)
Цитата:

Цитата Spl1t
Получается,что все натуральные числа больше 9 »

Хорошо, от девяти и до какого числа?

Spl1t 27-09-2008 17:52 910241

в 4 коментарии ссылка на этот топик)
сюда,плиз,код вставьте)
все наутральные числа с 9
что ваша программа и исполняет)

Drongo 27-09-2008 17:55 910244

Spl1t,
Цитата:

Цитата Spl1t
все наутральные числа с 9 »

Непонял, с 9 и до бесконечности? :o В 4 комментарии, есть ссылочка Решение, она работает, открывайте её, там код. ;)

Spl1t 27-09-2008 17:58 910251

ну в условии написано же,что "заданному натуральному" числу...видимо до бесконечности...я бы конечно мог уточнить..но в тот день,я боялся спросить что-либо лишнее у препода,ибо сам пытался решить ее)

Drongo 27-09-2008 18:17 910278

Spl1t,
Цитата:

Цитата Spl1t
я бы конечно мог уточнить »

Вот это надо было сделать, потому что при таком условии
Цитата:

Цитата Spl1t
видимо до бесконечности... »

задача будет иметь бесконечный цикл, а потом каждый тип int, double имеют свой предел в положительных числах.
int от –2 млрд до 2 млрд.
double от -4 млрд до 4 млрд.
P.S. я округлил.

Spl1t 27-09-2008 18:19 910280

ну значит эту программу Вашу покажу...идумаю,устроит
спасибо большое

Drongo 27-09-2008 18:20 910282

Spl1t,
Цитата:

Цитата Spl1t
ну в условии написано же,что "заданному натуральному" числу »

Эта часть решена.
Цитата:

Цитата Spl1t
Протестируйте функцию десятичных чисел из некоторого диапазона от n до m. »

Решить не тяжело, но я не могу просто понять условие... Если взять случайный диапазон, скажем от 25 до 1348, то ок, могу сделать.

Spl1t 27-09-2008 18:23 910286

Цитата:

Цитата Drongo
, то ок, могу сделать. »

было бы отлично...
возьмите случайный диапазон..я так и объясню...
и код можно сюда запостить плз

Drongo 27-09-2008 18:24 910288

Вроде готово. Только вы хоть комментарии прочтите в программе, чтобы смогли если спросят, что к чему, объяснить. И если не затруднит, после сдачи задачи, можежь зайти на форум и отписаться, прошло ли решение или нет?
Решение
Код:

// Написать прогу, которая по заданному натуральному числу
// определяет количество цифр в нем и их сумму.
// Протестируйте функцию десятичных чисел из некоторого диапазона от n до m.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

// Функция расчитывающая количество чисел во введённом числе...
int Rasriad(int enterNumber)
{
  int n = enterNumber,
      x = 0;

  while(n != 0){
    n /= 10;
    x++;
  }
  return x;
}

// Функция тестирования диапазона чисел
void TestDiapason()
{
  int lenght = 0,
      indexRas,
      decimal = 1,
      summa = 0,
  // значения переменных 'min' и 'max' задают границы диапазона
      min = 24,    // Нижняя граница диапазона (меняем на нужный)
      max = 1248;  // Верхняя граница диапазона (меняем на нужный)

  for(; min < max; min++){
      decimal = 1;
      summa = 0;
      // определяет количество цифр в нем и их сумму.
      lenght = Rasriad(min);

      for(int j = 1; j < lenght; j++)
        decimal *= 10;

      for(int i = 1; i <= lenght; i++){
        indexRas = min / decimal % 10;
        summa += indexRas;
        decimal /= 10;
      }
      cout<<"\n Summa all numbers '"<<min<<"' = "<<summa<<endl;
  }
}

int main()
{
  int enterNumber,
      lenght = 0,
      indexRas,
      decimal = 1,
      summa = 0,
      z;

  cout<<"Enter Number: ";
  cin>>enterNumber;

  // определяет количество цифр в нем и их сумму.
  lenght = Rasriad(enterNumber);

  for(int j = 1; j < lenght; j++)
      decimal *= 10;

  for(int i = 1; i <= lenght; i++){
      indexRas = enterNumber / decimal % 10;
      summa += indexRas;
      decimal /= 10;
    }
  cout<<"\n Summa all numbers = "<<summa<<endl;

  // Протестируйте функцию десятичных чисел из некоторого диапазона от n до m.
  cout<<"\n ----Proverka Diapasona on 'n' do 'm'---\n\n";
  TestDiapason();

  cin>>z;

  return 0;
}
//---------------------------------------------------------------------------


Spl1t 27-09-2008 22:10 910447

Спасибо большое за подробное решение и комментарии...Обязательно отпишусь..Спасибо большое еще раз..побольше бы таких людей.

___oj 28-09-2008 11:28 910745

Цитата:

Цитата Spl1t
Спасибо большое за подробное решение и комментарии... »

Подробное решение давать весьма отстойно. Я почти уверен что автор вопроса ничего не понял и даже не пытался, да и сложно это ~ разобраться в чужом решении. На некоторых форумах по программированию, особенно заграничных, администрацией практикуется
неодобрение и запрещение такого рода "помоши", когда дается полное решение. Куда лучше подсазать, обьяснить и вместе разобраться. Заодно видно на что способен задающий вопрос user, а вдрук он совсем плох... тогда пусть привыкает платить рублики, это ему в будущем. пригодится.
Цитата:

Цитата Spl1t
побольше бы таких людей. »

Такие "добрые" люди, на самом деле плодят идиотов.

Drongo 28-09-2008 15:14 910880

___oj,
оффтоп
Это всё правильно, но скажите, разве вам никогда не попадались ситуации, когда в вы в чём-то ну ни чуть не понимали, и вам помогли? И потом, я не могу понять, зачем будущему таможеннику знать программирование?
Цитата:

Цитата Spl1t
я учусь на спеуиальнсоти "Тамодженное дело".. »

Или Дизайнеру? У меня знакомая в университете учится на дизайнера, вот на кой ей ООП я так до сих пор и не знаю?
Цитата:

Цитата ___oj
да и сложно это ~ разобраться в чужом решении. »

С этим я согласен.
Цитата:

Цитата ___oj
Такие "добрые" люди, на самом деле плодят идиотов. »

Человек может не разбираться в одном вопросе и быть спецом в другом. Вот попадётесь вы ему на границе, :grin: будет вам. ;)

Spl1t 29-09-2008 14:54 911647

Drongo,спасибо большое,решение оказалось правильным...посмотри соседнюю тему...еще одну прогу задали(

Вобщем обращаюсь с еще одной задачкой)Помогите плиз,кто может)

Задание: НАписать прогу, выполняющую инвертирование трех одномерных массивов: А[20],В[10],С[15].
Написать функции:
-Заполнение массива числами в диалоговом режиме.
-Вывода одномерного массива
-Инвертирование одномерного массива.

помогите плз(

Drongo 29-09-2008 16:10 911719

Spl1t, На скорую руку сделал...
Решение
Код:

// Задание: Написать программу, выполняющую инвертирование трех одномерных массивов: А[20],В[10],С[15].
// Написать функции:
// -Заполнение массива числами в диалоговом режиме.
// -Вывода одномерного массива
// -Инвертирование одномерного массива.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

void main()
{
  // размерность массива будем задавать через константу
  const sizeArrayA = 20;
  const sizeArrayB = 10;
  const sizeArrayC = 15;
  // Массивы
  int A[sizeArrayA] = {0};
  int B[sizeArrayB] = {0};
  int C[sizeArrayC] = {0};
  int InvertationArray[sizeArrayA] = {0};  // Массив для инвертированния значений
  int S;

  // Заполнение массива значениями посредством ввода с клавиатуры...
  // Ввод значений в массив "А"
  cout<<" Vvod znacheniy v massiv 'A', Rasmer = 20"<<endl;
  for(int i = 0; i < sizeArrayA; i++){
      cout<<" Enter Value in Array 'A', index ["<<i<<"] = ";
      cin>>A[i];
    }
  // Ввод значений в массив "В"
      cout<<"\n\n Vvod znacheniy v massiv 'B', Rasmer = 10"<<endl;
  for(int j = 0; j < sizeArrayB; j++){
      cout<<" Enter Value in Array 'B', index ["<<j<<"] = ";
      cin>>B[j];
    }

  // Ввод значений в массив "С"
      cout<<"\n\n Vvod znacheniy v massiv 'C', Rasmer = 15"<<endl;
  for(int a = 0; a < sizeArrayC; a++){
      cout<<" Enter Value in Array 'C', index ["<<a<<"] = ";
      cin>>C[a];
    }

  // Вывод значений массива "А" на экран
  cout<<"\n\n Vivod znacheniy iz massiva 'A'"<<endl;
  for(int n = 0; n < sizeArrayA; n++)
      cout<<" Print Value Array 'A', index ["<<n<<"] = "<<A[n]<<endl;

  //Инвертирование одномерного массива.
  cout<<"\n\n Invertation Array 'InvertationArray[]'...\n\n";
  for(int m = sizeArrayA - 1, s = 0; m >= 0; m--, s++){ // Инвертирование и Вывод на экран...
      InvertationArray[s] = A[m];
      cout<<" A[ "<<m<<" ] = "<<A[m]<<"  -> "<<" InvertationArray[ "<<s<<" ] = "<<InvertationArray[s]<<endl;
    }

  cin>>S;
}
//----------------------------------------------------------------------------

В следующий раз, называйте темЫ нормально, иначе тема попадёт по ОПК 3.19

Drongo 29-09-2008 16:11 911721

Spl1t,
Цитата:

Цитата Spl1t
еще одну прогу задали( »

Моей знакомой дизайнеру, целый год задавали. ;)

Whitypu 29-09-2008 23:31 912051

смотрю похожая задачка, если не трудно мог бы посмотреть вот эту? )

Суть: Написать программу, опредеяющую для каждого из трех одномерных массивов : A[45], B[10], C[20] сколько раз в них встретились два подряд идущих нулевых элемента.
Написать функции:
-Заполнение массива числами в диалоговом режиме.
-Вывода одномерного массива.
-Определения количества двух подряд идущих нулевых элементов в одномерном массиве.


буду премного благодарен

Drongo 30-09-2008 14:47 912435

Whitypu,
Цитата:

Цитата Whitypu
если не трудно мог бы посмотреть вот эту? ) »

Мог бы, а вы могли бы хотя бы чуть-чуть выложить решение? Я бы тоже был премного благодарен. ;)
Решение
Код:

// Написать программу, опредеяющую
// для каждого из трех одномерных массивов: A[45], B[10], C[20]
// сколько раз в них встретились два подряд идущих нулевых элемента.
// Написать функции:
// -Заполнение массива числами в диалоговом режиме.
// -Вывода одномерного массива.
// -Определения количества двух подряд идущих нулевых элементов в одномерном массиве.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

// Функция заполнения массива числами в диалоговом режиме
void EnterValueArray(int ar1[], int ar2[], int ar3[], int sz1, int sz2, int sz3);
// Функция вывода одномерного массива
void PrintArray(int ar1[], int sz1);
// Функция определения двух подряд идущих нулевых элементов в одномерном массиве
void NULLElementArray(int ar1[], int sz1);

void main()
{  // размерность массива будем задавать через константу
  const sizeArrayA = 45;
  const sizeArrayB = 10;
  const sizeArrayC = 20;
  // Массивы
  int A[sizeArrayA] = {0};
  int B[sizeArrayB] = {0};
  int C[sizeArrayC] = {0};
  int S;

  cout<<" Inizialisation Arrays..."<<endl;

  EnterValueArray(A, B, C, sizeArrayA, sizeArrayB, sizeArrayC);
  PrintArray(A, sizeArrayA);
  NULLElementArray(A, sizeArrayA);

  cout<<"\n\n Press Key: > ";
  cin>>S;
}
// Функция заполнения массива числами в диалоговом режиме
void EnterValueArray(int array1[], int array2[], int array3[], int size1, int size2, int size3)
{
  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n Array1...\n"<<endl;
  for(int i = 0; i < size1; i++){ // Инициализация значениями 1-го массива
    cout<<" Enter Value in Array 'A', index ["<<i<<"] = ";
    cin>>array1[i];
    }

  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n Array2...\n"<<endl;
  for(int j = 0; j < size2; j++){ // Инициализация значениями 2-го массива
      cout<<" Enter Value in Array 'B', index ["<<j<<"] = ";
      cin>>array2[j];
    }

  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n Array3...\n"<<endl;
  for(int a = 0; a < size3; a++){  // Инициализация значениями 3-го массива
      cout<<" Enter Value in Array 'C', index ["<<a<<"] = ";
      cin>>array3[a];
    }
}
// Функция вывода одномерного массива
void PrintArray(int array1[], int size1)
{
  // Вывод на экран массива "А"...
  cout<<"\n----------------------------------------------------------------\n";
  for(int n = 0; n < size1; n++)
      cout<<" Print Value Array 'A', index ["<<n<<"] = "<<array1[n]<<endl;
}
// Функция определения двух подряд идущих нулевых элементов в одномерном массиве
void NULLElementArray(int array1[], int size1)
{
  int ValueNULL = 0,
      TempIndexNULL = 0;

  cout<<"\n----------------------------------------------------------------\n";
  for(int i = 0; i < size1; i++){
      if(array1[i] == 0){
          ValueNULL++;
          if(ValueNULL == 1)
            TempIndexNULL = i;
        }
      if(array1[i] != 0)
          ValueNULL = 0;
      if(ValueNULL == 2){
          cout<<"\n Value NULL 1 = ' "<<array1[TempIndexNULL]<<" ' "
              <<"Element Array 'A', index ["<<TempIndexNULL<<"] = "
              <<array1[TempIndexNULL]<<endl;
          cout<<" Value NULL 2 = ' "<<array1[i]<<" ' "
              <<"Element Array 'A', index ["<<i<<"] = "<<array1[i]<<endl;
          ValueNULL = 0;
        }
    }
}
//----------------------------------------------------------------------------


Spl1t 30-09-2008 16:36 912542

Drongo,спасибо большоеее)
и другу моему помог) Whitypi который)

Drongo 30-09-2008 16:42 912545

Spl1t, Когда-нибудь и ты кому-нибудь помоги... ;) Было бы здорово, если бы после сдачи отписались на предмет, прошло ли решение или нет...

Spl1t 30-09-2008 20:08 912721

ну про предыдущую задачу я отписал,что все правильно там)

Drongo 30-09-2008 20:29 912736

Spl1t, Так я ж помимо прошлой, ещё парочку сделал. ;)

Spl1t 01-10-2008 11:26 913169

Drongo, ну вот про массивы..и задачка Whitypu...сегодня будет еще парочка легких задачек...вечерком..если не сложна - помоги)

Drongo, значит задачка про массивы оказалась правильной...только препод сказала,что нет главной части задания:
Задание: НАписать прогу, выполняющую инвертирование трех одномерных массивов: А[20],В[10],С[15].
Написать функции:
-Заполнение массива числами в диалоговом режиме.
-Вывода одномерного массива
-Инвертирование одномерного массива.
она сказала,что нужно написать функции(

Drongo 03-10-2008 21:38 915255

Spl1t, Хорошо, исправлю, завтра выложу....
Цитата:

Цитата Spl1t
-Вывода одномерного массива »

Уточняю, вывода только одного одномерного массива или трёх?
Цитата:

Цитата Spl1t
выполняющую инвертирование трех одномерных массивов: А[20],В[10],С[15]. »

Это как понимать? Инвертирование, это что значит и как подразумевается? :dont-know Можешь пояснить?

Drongo 04-10-2008 14:23 915581

Spl1t, готово, принимай. ;) Как понял, так и сделал... И ещё, отпишись, а решение для твоего друга - Whitypu, прошло?!
Решение
Код:

// Задание: Написать программу,
// выполняющую инвертирование трех одномерных массивов: А[20], В[10], С[15].
// Написать функции:
// -Заполнение массива числами в диалоговом режиме.
// -Вывода одномерного массива
// -Инвертирование одномерного массива.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

// Функция заполнения массива числами в диалоговом режиме
void InArray(int ar1[], int ar2[], int ar3[], int sz1, int sz2, int sz3);
// Функция вывода одномерного массива
void OutArray(int ar1[], int ar2[], int ar3[], int sz1, int sz2, int sz3);
// Функция инвертирование одномерного массива.
void InvertationArray(int ar1[], int ar2[], int ar3[], int sz1, int sz2, int sz3);

void main()
{  // размерность массива будем задавать через константу
  const int sizeArrayA = 20;
  const int sizeArrayB = 10;
  const int sizeArrayC = 15;
  // Массивы
  int A[sizeArrayA] = {0};
  int B[sizeArrayB] = {0};
  int C[sizeArrayC] = {0};
  int finish;

  InArray(A, B, C, sizeArrayA, sizeArrayB, sizeArrayC);
  OutArray(A, B, C, sizeArrayA, sizeArrayB, sizeArrayC);
  InvertationArray(A, B, C, sizeArrayA, sizeArrayB, sizeArrayC);

  cin>>finish;
}
// Функция заполнения массива числами в диалоговом режиме
void InArray(int array1[], int array2[], int array3[], int size1, int size2, int size3)
{
  // Ввод значений в массив "А"
  cout<<" Vvod znacheniy v massiv 'A', Rasmer = 20\n"<<endl;
  for(int i = 0; i < size1; i++){
      cout<<" Enter Value in Array, 'A["<<i<<"]' = ";
      cin>>array1[i];
    }
  // Ввод значений в массив "В"
  cout<<"\n\n Vvod znacheniy v massiv 'B', Rasmer = 10\n"<<endl;
  for(int j = 0; j < size2; j++){
      cout<<" Enter Value in Array, 'B["<<j<<"]' = ";
      cin>>array2[j];
    }
  // Ввод значений в массив "С"
  cout<<"\n\n Vvod znacheniy v massiv 'C', Rasmer = 15\n"<<endl;
  for(int a = 0; a < size3; a++){
      cout<<" Enter Value in Array, 'C["<<a<<"]' = ";
      cin>>array3[a];
    }
}
// Функция вывода одномерного массива
void OutArray(int array1[], int array2[], int array3[], int size1, int size2, int size3)
{
  // Вывод на экран массива "А"...
  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n Array 'A[]'...\n"<<endl;
  for(int i = 0; i < size1; i++)
      cout<<" Print Value Array 'A["<<i<<"]' = "<<array1[i]<<endl;

  // Вывод на экран массива "B"...
  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n Array 'B[]'...\n"<<endl;
  for(int j = 0; j < size1; j++)
      cout<<" Print Value Array 'B["<<j<<"]' = "<<array2[j]<<endl;

  // Вывод на экран массива "C"...
  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n Array 'C[]'...\n"<<endl;
  for(int n = 0; n < size1; n++)
      cout<<" Print Value Array 'C["<<n<<"]' = "<<array3[n]<<endl;
}
// Функция инвертирование одномерного массива.
void InvertationArray(int ar1[], int ar2[], int ar3[], int sz1, int sz2, int sz3)
{
  int *InvertationArray1;
  int *InvertationArray2;
  int *InvertationArray3;
  // Динамическое создание массивов для инвертированния значений
  InvertationArray1 = new int[sz1];
  InvertationArray2 = new int[sz2];
  InvertationArray3 = new int[sz3];

  // Инвертирование и Вывод на экран массива'A[]'...
  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n\n Invertation Array 'A[]' -> 'InvertationArray1[]'...\n\n";
  for(int i = sz1 - 1, j = 0; i >= 0; i--, j++){
      InvertationArray1[j] = ar1[i];
      cout<<" A[ "<<j<<" ] = "<<ar1[j]<<"  -> "
          <<" InvertationArray1[ "<<j<<" ] = "
          <<InvertationArray1[j]<<endl;
    }

  // Инвертирование и Вывод на экран массива'B[]'...
  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n\n Invertation Array 'B[]' -> 'InvertationArray2[]'...\n\n";
  for(int n = sz2 - 1, m = 0; n >= 0; n--, m++){
      InvertationArray2[m] = ar2[n];
      cout<<" B[ "<<m<<" ] = "<<ar2[m]<<"  -> "
          <<" InvertationArray2[ "<<m<<" ] = "
          <<InvertationArray2[m]<<endl;
    }

  // Инвертирование и Вывод на экран массива 'С[]'...
  cout<<"\n----------------------------------------------------------------\n";
  cout<<"\n\n Invertation Array 'C[]' -> 'InvertationArray3[]'...\n\n";
  for(int s = sz3 - 1, r = 0; s >= 0; s--, r++){
      InvertationArray3[r] = ar3[s];
      cout<<" C[ "<<r<<" ] = "<<ar3[r]<<"  -> "
          <<" InvertationArray3[ "<<r<<" ] = "
          <<InvertationArray3[r]<<endl;
    }
}
//---------------------------------------------------------------------------


Spl1t 05-10-2008 05:09 916087

Drongo, про решение Whitypu узнаем во вторник.
У меня в задаче должно быть три функции,как мне объяснила препод.По каждому из этих пунктов:
-Заполнение массива числами в диалоговом режиме.
-Вывода одномерного массива
-Инвертирование одномерного массива.

Про вывод одномерного все прошло там...Осталось только с функциями разобраться(

Drongo 05-10-2008 15:42 916335

Spl1t,
Цитата:

Цитата Spl1t
в задаче должно быть три функции »

Аааа, ну тогда всё нормально, в последнем решении они имеются. ;)

Spl1t 05-10-2008 19:23 916478

эмм) канешна спасибо большое) можешь их показать?) я ваще не рублю где они там)

Admiral 05-10-2008 19:48 916503

Spl1t, осталось лишь разобраться в исходнике.
читать дальше »

Цитата:

Цитата Drongo
// Функция заполнения массива числами в диалоговом режиме
void InArray(int array1[], int array2[], int array3[], int size1, int size2, int size3)
{
...
}
// Функция вывода одномерного массива
void OutArray(int array1[], int array2[], int array3[], int size1, int size2, int size3)
{
...
}
// Функция инвертирование одномерного массива.
void InvertationArray(int ar1[], int ar2[], int ar3[], int sz1, int sz2, int sz3)
{
...
}
»


Хотя бы поиском по исходнику воспользовались, если так сразу не видно.

Drongo 05-10-2008 20:31 916531

Spl1t,
Цитата:

Цитата Spl1t
можешь их показать?) »

читать дальше »
В принципе вам Admiral всё объяснил, я даже не изменял слов в постановке заданий в комментариях, но на всякий случай повторю. В теле main () эти функции вот:
Код:

...
void main ()
{
... 
  InArray(A, B, C, sizeArrayA, sizeArrayB, sizeArrayC); // Функция ввода значений в массив
  OutArray(A, B, C, sizeArrayA, sizeArrayB, sizeArrayC);  // Функция вывода на экран значений массива
  InvertationArray(A, B, C, sizeArrayA, sizeArrayB, sizeArrayC); // Функция инвертирования значений массива
...
}


Durson 06-10-2008 20:48 917355

Цитата:

Цитата Drongo
/* #include <iostream.h> можно удалить эту строку из "russian.h" */ »

Так можно его не удалять из заголовочного файла russian.h и не вписывать его в каждую новую программу, к чему лишняя писанина? В общем я про это и говорил. :)

Drongo 06-10-2008 20:58 917366

Логично, :up <iostream> или <iostream.h>, Что правильнее? Я предпочитаю #include <iostream> то здесь, для примера я добавил <iostream.h> Это так, к слову.

Durson 06-10-2008 21:08 917375

Цитата:

Цитата Drongo
Логично, а как быть тогда с <iostream> или <iostream.h>, Что правильнее? »

Кулак ему в морду этому умнику, правельно будет #include <iostream.h> потому что .h говорит о разрешении и типе этого файла, потому что официально в языке С++ .h говорит о том что это заголовочный файл, а вы представьте что если у вас в папке include будет самодельный файл iostream.cpp или iostream.txt с каким нибудь нелепыми функциями. И вылезит у вас ошибка.

И вообще традиции чтить надо батенька. :biggrin:

Admiral 06-10-2008 21:20 917386

Durson, в MSVS6 в файле iostream (см. папку Microsoft Visual Studio\VC98\CRT\SRC) указанно // iostream standard header в iostream.h - *iostream.h - definitions/declarations for iostream classes, а в Visual C++ 2008 уже // iostream standard header for Microsoft, а iostream.h отсутствует вовсе, что указывает на то что Микрософт в этой версии своего компилятора решила поддержать стандарт по данному вопросу.
Цитата:

Цитата ivank
На крайний случай можно глянуть в драфт стандарта ... Никакого iosteam.h там не упоминается, в отличие от iostream (701 страница). »

Drongo, что говорится в Борланде в файлах iosteam.h и iostream?

Drongo 06-10-2008 21:26 917393

Здесь Admiral говорит об обсуждении, но я не помню ни темы, ни ключевого слова, хотя недавно видел эту тему
[решено] C++ | Проблема с iostream.h
iostream в википедии.

Durson 06-10-2008 21:34 917404

Цитата:

Цитата Admiral
в файле iostream (см папку Microsoft Visual Studio\VC98\CRT\SRC »

Ага у меня почему то отсутствует папка CRT а вместо неё есть папка MFC и там лежит папка SRC в которой у меня нету файла iostream. :happy:

Admiral 06-10-2008 21:41 917411

Durson, тогда можно посмотреть папку Microsoft Visual Studio\VC98\Include, в Visual C++ 2008 аналогичная папка и iosteam.h все равно нету.

Drongo 06-10-2008 21:42 917412

Цитата:

Цитата Admiral
что говорится в Борланде в файлах iosteam.h и iostream? »

А где именно смотреть? :dont-know У меня оба есть.

Admiral 06-10-2008 21:45 917415

Drongo, в обоих, первую закомментированную строчку, если такая имеется, аналогично как в я 44 посте. А какого года компиллер?

Drongo 06-10-2008 22:03 917435

1-й
C:\Program Files\Borland\CBuilder6\Include\oldstl\iostream.h
// -*- C++ -*-

2-й
C:\Program Files\Borland\CBuilder6\Include\iostream.h
// Wrapper header file used to select STL via defines.
// Default is STLport.

3-й
C:\Program Files\Borland\CBuilder6\Include\Using\iostream
ничего, кроме кода using std::cout; cin; endl; и т.п

4-й
C:\Program Files\Borland\CBuilder6\Include\Stlport\iostream
Только предупреждение что использование на свой страх и риск и права автора
Цитата:

Цитата Admiral
А какого года компиллер? »

1999 года. Вру! 2002 :) Посмотрел в справка -> о программе.

Admiral 07-10-2008 01:57 917596

Drongo, что-то ничего определённого, касательно стандарта Borland не указал, возможно в новых версиях внесли ясность, по аналогии как MS.
Durson, что б код работал и в Visual C++ 2008 нужно вместо CharToOem писать CharToOemA, а что б завёлся и конкретный пример нужно после всех include написать using namespace std; для обеспечения работоспособности cout.
Всё дело в том, что MSVS6 по умолчанию работает с ANSI версией функций и данных, а последующие версии уже с Unicode. CharToOemW что подразумевает использования Unicode, для использования старинки ANSI явно указываем CharToOemA.
Такая программа будет иметь обратную совместимость с Win9x/ME, но на 2000м и выше будет выполнятся несколько медленнее чем её Unicode аналоги.

fly85 18-01-2010 20:28 1323730

Ребята! Помогите решить задачу по С++
Условие:
Для одномерного массива N, состоящего из 20 элементов действительного типа найти среднее арифметическое значение.

Заранее спасибо!

Для вас она может показаться совсем простой, но я в языках программирования не очень!!!

Drongo 18-01-2010 21:38 1323775

fly85, Вот так, писалось под Borland C++ Builder 6.0. В строках cout<<"..."; русский текст, это для понимания, при компиляции будут крякозяблики, просто заменить нужно будет текстовку на соответствующую английскую, или сделать чтобы консоль понимала кирилицу.
Код:

// Для одномерного массива N, состоящего из 20 элементов действительного типа
// найти среднее арифметическое значение.
#include <iostream>
using namespace std;

int main()
{
  const int size = 20;  // Размер массива
  int array[size] = {0};  // Сам массив
  int total = 0;  // Результат суммирования всех значений
  int result; // Храним результат среднеарифметического
  int z;  // Просто чтобы окошко не закрывалось

  // Считываем 20 значений с клавиатуры и сохраняем в массив
  for(int i = 0; i < size; i++){
    cout<<"Введите значение в элемент массива [ "<<i<<" ] = ";
    cin>>array[i];
  }

  cout<<"Подсчёт среднего значения"<<endl;

  // Подсчёт общей суммы значений
  for(int i = 0; i < size; i++)
    total += array[i];

  result = total / size;  // Находим среднее арифметическое

  cout<<"Среднеарифметическое значение равно = "<<result<<endl;  // Выводим результат

  cin>>z;
  return 0;
}
//---------------------------------------------------------------------------


fly85 18-01-2010 22:04 1323791

Спасибо! Объяснение как раз кстати!!!!

goor88 19-01-2010 17:09 1324447

Помогите по С++ решить задачу:
Для одномерного массива х состоящий из 12 элементов действительного типа подсчитать количество элементов из интервала | a, b | (a, b любые целые числа а <b)

Спасибо!

Drongo 19-01-2010 19:14 1324540

goor88, Если правильно понял задачу, (просуммировать значения содержащиеся в элементах массива от a до b), если так, то вот. Хотя сомневаюсь что правильно понял постановку задачи.

Код:

// Для одномерного массива х состоящий из 12 элементов действительного типа
// подсчитать количество элементов из интервала  | a, b | (a, b любые целые числа а <b).
#include <iostream>
using namespace std;

int main()
{
  const int size = 12;  // Размер массива
  int array[size] = {0};  // Сам массив
  int total = 0;  // Результат суммирования всех значений
  int a, b; // Начало и конец интервала.
  int z;  // Просто чтобы окошко не закрывалось

  // Считываем 12 значений с клавиатуры и сохраняем в массив
  for(int i = 0; i < size; i++){
    cout<<"Введите значение в элемент массива [ "<<i<<" ] = ";
    cin>>array[i];
  }

  // Вводим значения интервала, без проверки выхода за диапазон массива
  cout<<"Введите начало интервала = "<<endl;
  cin>>a;
  cout<<"Введите конец интервала = "<<endl;
  cin>>b;

  cout<<"Подсчёт среднего значения"<<endl;

  // Подсчёт общей суммы значений
  for(int i = a; i < b; i++)
    total += array[i];

  cout<<"Общая сумма значений элементов массива от "A" до "B" = "<<total<<endl;  // Выводим результат

  cin>>z;
  return 0;
}
//---------------------------------------------------------------------------


goor88 19-01-2010 21:38 1324644

Спасибо огромное!!! Вы настоящий профессионал!!!

Если вам не трудно и эту сможете решить?
Для одномерного массива V, состоящий из 15 действительных чисел, найти сумму элементов.
Большое спасибо!!!
PS: Это последняя.

Lisiy_egik 20-01-2010 02:14 1324776

goor88, Если задание формулировалось именно так. как вы тут сказали( в смысле нет никаких требований к реализации), то вот решение:

Код:

//Для одномерного массива V, состоящий из 15 действительных чисел, найти сумму элементов.

#include <iostream>                // включение стандартной библиотеки ввода - вывода
using namespace std;        // использование пространства имен std

const int size = 15;                //задается переменная. используемая для определения размерности массива

int main()
{
        int v[size];                        // объявление самого массива

        cout << "Введите " << size << " цифр, которые будут содержаться в массиве" << endl;
        for(int i = 0; i<size; i++)
                cin >> v[i];                        // цикл заполнения массива с консоли

        int summ = 0;                                // объявление и инициализация переменной для хранения суммы

        for(int q = 0; q<size; q++)
                summ += v[q];                        // суммирование всех элементов массива

        cout << "Summ = " << summ << endl;        // вывод результата на экран

        return 0;
}


Lisiy_egik 20-01-2010 05:23 1324824

Cutegirl1645, ну не знаю какие были требования к выполнению задания, но вот я так сделал, компилится без ошибок, все работает, проверку на ошибки сама доделаешь, а то я и так полтора часа назад курить собирался, да на твой пост наткнулся.

в общем:

main.cpp:
Код:

//Написать программу, которая подводит итоги конкурса "5 лучших товаров года". Оценка товара производится
//по пятибалльной системе. Программа должна получать от пользователя число людей, давших товару определенный
//бал, вычислить общее количество проголосовавших за данный товар людей и число набранных баллов, и после этого
//упорядочить список (методом пузырька с простым алгоритмом) в соответствии с набранным количеством баллов.
//Сортировку оформить в виде функции.

#include <iostream>
#include "rus8.h"
#include "goods.h"
using namespace std;

int main()
{
        rus();

        goods *arr = new goods[g];

        get_point(arr);
        set_people(arr);
        set_spoint(arr);
        get_result(arr);
        print_result(arr);

        delete [] arr;

        return 0;

}

goods.h
Код:

#pragma once
#include <iostream>
using namespace std;

const int sp = 5;  // size point кол-во баллов в системе оценивания
const int sn = 30; // size name макс кол-во символов в названии товара
const int g = 5; // кол-во товаров

struct goods
{
        int poin[sp];
        char name[sn];
        int spoint;
        int people;
};

void get_point(goods *);
void set_people(goods *);
void set_spoint(goods *);
void get_result(goods *);
void print_result(goods *);

goods.cpp
Код:

#include "goods.h"

void get_point(goods *arr)
{
        for(int i = 0; i < g ; i++)
        {
                cout << "Введите наименование (макс длинна 30 символов) : ";
                cin >> arr[i].name;
                for (int q = 0; q < sp; q++)
                {
                        cout << endl << "Введите кол-во людей оценивших этот товар в " << (q+1) << " балл(а)";
                        cin >> arr[i].poin[q];
                }
        }
        cout << endl;
}

void set_people(goods *arr)
{
        for(int i = 0; i < g; i++)
        {
                arr[i].people = 0;
                for(int q = 0; q < sp; q++)
                        arr[i].people = (arr[i].people + arr[i].poin[q]);
        }
}

void set_spoint(goods *arr)
{
        for(int i = 0; i < g; i++)
        {
                arr[i].spoint = 0;
                for(int q = 0; q < sp; q++)
                        arr[i].spoint += (arr[i].poin[q]*(q+1));
        }
}
void get_result(goods *arr)
{
        goods temp;

        for(int i = 0; i < g; i++)
        {
                for(int q = (g-1); q > i; q--)
                {
                        if(arr[q-1].spoint < arr[q].spoint)
                        {
                                temp = arr[q-1];
                                arr[q-1] = arr[q];
                                arr[q] = temp;
                        }
                }
        }
}


void print_result(goods *arr)
{
        for(int i = 0; i < g; i++)
        {
                cout << (i+1) << "-е место занял товар : " << arr[i].name << endl;
                cout << "Набравший : " << arr[i].spoint << " баллов" << endl;
                cout << "Всего проголосовавших за этот товар : " << arr[i].people << endl << endl;
        }
}

rus8.h
Код:

#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void )
    {   
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif

с тебя пиво, я думаю оно того стоит) :coffee: даже если не за прогу, то в утеху мне, за то. что я сегодня экзамен по программированию провалил...

goor88 20-01-2010 07:15 1324849

Большое человеческое СПАСИБО !!! :ok:

Champ10n 26-01-2010 07:05 1330030

Три задачки для студента
 
Сделайте, пожалуйста, кому не сложно, три задачки по C++

1.Структуры(записи) и программирование информационных задач
Разработать программу регистрации кандидатов в депутаты. Для каждого из кандидатов хранятся:
* Фамилия, имя и отчество.
* Возраст.
* Профессия.
* Наименование партии.
* Номер избирательного округа.
* Судимость.

2. Работа с файлами
Обеспечить хранение данных в файлах для программы, разработанной в рамках задания 1.

3. Динамические структуры данных
Переделать задание 1, используя динамическую структуру данных для хранения данных.

Lisiy_egik 27-01-2010 12:16 1331249

Цитата:

Цитата Champ10n
Сделайте, пожалуйста, кому не сложно, три задачки по C++ »

это уже перебор. как бы тут можно подсказать в случае. если что-нибудь не получается, а вот если просто "лень" делать и свалить это на другого - это уже наглость.

в принципе тут 3 задачи. которые я бы реализовал в 1й, ибо не вижу смысла размещать не в динамической памяти массив структур. да и ввод для теста будет долгим, если это делать с консоли.

мб сегодня выложу тебе решение

Champ10n 27-01-2010 14:01 1331360

Да, я понимаю чо это нагло с моей стороны, и сам бы наврное написал бы, харошь балдеть студенты, пора учиться, но у меня немного другая ситуация. Не буду вдаваться в подробности.
Я понимаю что возможно легче сделать в одной программе или еще как-нибудь, но просто задача поставлена имено так, если уж на то пошло, то хотя бы первое задание, а над остальным сам попытаюсь попыхтеть. Ну а если все 3, то вообще буду примного благодарен, можешь тогда и вмз кошелечек кинуть в личку, отблагодарю :)

Lisiy_egik 27-01-2010 14:02 1331361

в общем сделал тебе 3 в одном, т.к. это хоть работать будет. то бишь можно проверить как оно работает.
Имена файлов указываются как аргументы командной строки, так же в каждом поле (чтоб не заморачиваться) я сделал так, чтоб ввод был примерно таким образом: все данные разделяются пробелом. то бишь фио вводится через подчеркивание вместо пробелов.

вот код:

main.cpp:
Код:

#include <iostream>
#include <cstdlib>
#include <fstream>
#include "rus8.h"                //русификатор
#include "candidate.h"
using namespace std;

int main(int argc, char *argv[])
{
        rus();                                // ф-ия руссифицированного вывода

        if(argc < 3)
        {
                cout << "Ошибка 0 : введите все 3 аргумента командной строки" << endl;
                exit (0);
        }

        int size;

        cout << "Введите кол-во кандидатов" << endl;
        cin >> size;

        if(size < 0)
        {
                cout << "Ошибка 1 : кол-во кандидатов должно быть целочисленным и положительным ( 1, 2, 5, и т.д." << endl;
                exit (1);
        }

        cand *arr = new cand[size];                        //выделение динамической памяти для массива структур

        ifstream in(argv[1]);

        if(!in)
        {
                cout << "Ошибка 2 : не могу открыть файл с исходными данными" << endl;
                exit (2);
        }

        read_info(in, arr, size);

        in.close();

        ofstream out(argv[2]);

        if(!out)
        {
                cout << "Ошибка 3 : не могу открыть файл для вывода" << endl;
                exit (3);
        }

        write_info(out, arr, size);

        out.close();

        delete [] arr;                                // очистка динамической памяти от массива структур

        return 0;

}

candidate.h
Код:

#include <iostream>
#include <string>
using namespace std;

struct cand
{
        string name;        // ФИО       
        int age;                // Возраст
        string prof;        // Профессия
        string set;                // Наименование партии
        int num;                // Номер избирательного округа
        string court;        // Судимость
};

void read_info(istream &, cand *, const int &);                //ф-ия заполнения массива

void write_info(ostream &, cand *, const int &);        //ф-ия вывода данных в файл

candidate.cpp
Код:

#include "candidate.h"

void read_info(istream &in, cand *arr, const int &size)
{
        for(int i = 0; i < size; i++)
        {
                in >> arr[i].name;
                in >> arr[i].age;
                in >> arr[i].prof;
                in >> arr[i].set;
                in >> arr[i].num;
                in >> arr[i].court;
        }
}

void write_info(ostream &out, cand *arr, const int &size)
{
        out << "Кандидаты :" << endl << endl;
        for(int i = 0; i < size; i++)
        {
                out << "Кандидат номер " << (i+1) << endl;
                out << "И.Ф.О.              : " << arr[i].name << endl;
                out << "Возраст            : " << arr[i].age << endl;
                out << "Профессия          : " << arr[i].prof << endl;
                out << "Наименование партии : " << arr[i].set << endl;
                out << "Номер изб. круга    : " << arr[i].num << endl;
                out << "Судимость          : " << arr[i].court << endl;
                out << endl << endl;
        }
}

rus8.h
Код:

#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void )
    {   
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif

вот с такими данными проверял работоспособность:
Код:

Иванов_Петр_Васильевич
55
Историк
Единая_Росиия
5
Нет

Кузичкин_Иван_Григорьевис
32
Физик-ядерщик
ЛДПР
9
Нет

Васильев_Михаил_Эдуардовч
38
Экономист
КПРФ
7
Да

вот такой был вывод:
Код:

Кандидаты :

Кандидат номер 1
И.Ф.О.              : Иванов_Петр_Васильевич
Возраст            : 55
Профессия          : Историк
Наименование партии : Единая_Росиия
Номер изб. круга    : 5
Судимость          : Нет


Кандидат номер 2
И.Ф.О.              : Кузичкин_Иван_Григорьевис
Возраст            : 32
Профессия          : Физик-ядерщик
Наименование партии : ЛДПР
Номер изб. круга    : 9
Судимость          : Нет


Кандидат номер 3
И.Ф.О.              : Васильев_Михаил_Эдуардовч
Возраст            : 38
Профессия          : Экономист
Наименование партии : КПРФ
Номер изб. круга    : 7
Судимость          : Да

по сути это твое третье задание - оно самое полное, если не очень представляешь как его разбить по кускам (на 1е и 2е) могу переделать - это не так долго

Champ10n 27-01-2010 14:13 1331369

Цитата:

Цитата Lisiy_egik
если не очень представляешь как его разбить по кускам (на 1е и 2е) могу переделать - это не так долго »

Вот это бы мне очень помогло.

Lisiy_egik 27-01-2010 15:07 1331420

вот 1е задание (ввод имен с консоли, минус 1 - вводить только транслитом)

main.cpp
Код:

#include <iostream>
#include "rus8.h"                //русификатор
#include "candidate.h"
using namespace std;

int main()
{
        rus();                                // ф-ия руссифицированного вывода

        cand arr[size];

        read_info(arr);

        int ch;

        cout << "Если вы хотите просмотерть введенную информацию, нажмите 1, если желаете закончить работы нажмите 2.  ";
        cin >> ch;
       
        if(ch == 1)
        write_info(arr);
        if(ch == 2)
                return 0;

        return 0;

}

candidats.h
Код:

#include <iostream>
#include <string>
using namespace std;

const int size = 2;                // кол-во кандидатов

struct cand
{
        string name;        // ФИО       
        int age;                // Возраст
        string prof;        // Профессия
        string set;                // Наименование партии
        int num;                // Номер избирательного округа
        string court;        // Судимость
};

void read_info(cand *);                //ф-ия заполнения массива

void write_info(cand *);        //ф-ия вывода данных в файл

candidats.cpp
Код:

#include "candidate.h"

void read_info(cand *arr)
{
        cout << "Программа регистрации кандидатов" << endl << endl;
        for(int i = 0; i < size; i++)
        {
                cout << "Регистрация " << (i+1) << "-го кандидата";
                cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания)  ";
                cin >> arr[i].name;
                cout << endl << "Введите возраст :";
                cin >> arr[i].age;
                cout << endl << "Введите профессию :";
                cin >> arr[i].prof;
                cout << endl << "Введите название партии :";
                cin >> arr[i].set;
                cout << endl << "Введите номер изберательного округа :";
                cin >> arr[i].num;
                cout << endl << "Была ли судимость? ";
                cin >> arr[i].court;
                cout << endl << endl;
        }
}

void write_info(cand *arr)
{
        cout << "Зарегестрированные кандидаты :" << endl << endl;
        for(int i = 0; i < size; i++)
        {
                cout << "Кандидат номер " << (i+1) << endl;
                cout << "И.Ф.О.              : " << arr[i].name << endl;
                cout << "Возраст            : " << arr[i].age << endl;
                cout << "Профессия          : " << arr[i].prof << endl;
                cout << "Наименование партии : " << arr[i].set << endl;
                cout << "Номер изб. круга    : " << arr[i].num << endl;
                cout << "Судимость          : " << arr[i].court << endl;
                cout << endl << endl;
        }
}

rus8.h
Код:

#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void )
    {   
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif


Lisiy_egik 27-01-2010 15:22 1331435

Второе задание (ввод так же с консоли транслитом) размещение массива структур в дп.

main.cpp

Код:

#include <iostream>
#include <cstdlib>
#include "rus8.h"                //русификатор
#include "candidate.h"
using namespace std;

int main()
{
        rus();                                // ф-ия руссифицированного вывода

        int size;
        cout << "Введите кол-во регестрирующихся кандидатов: ";
        cin >> size;
        cout << endl;

        if(size < 0)
        {
                cout << "Ошибка! Кол-во кандидатов должно быть целочисленным и положительным" << endl;
                exit (0);
        }

        cand *arr = new cand[size];

        read_info(arr, size);

        int ch;

        cout << "Если вы хотите просмотерть введенную информацию, нажмите 1, если желаете закончить работы нажмите 2.  ";
        cin >> ch;
       
        if(ch == 1)
        write_info(arr, size);
        if(ch == 2)
        {
                delete [] arr;
                return 0;
        }

        delete [] arr;

        return 0;

}

candidats.h

Код:

#include <iostream>
#include <string>
using namespace std;


struct cand
{
        string name;        // ФИО       
        int age;                // Возраст
        string prof;        // Профессия
        string set;                // Наименование партии
        int num;                // Номер избирательного округа
        string court;        // Судимость
};

void read_info(cand *, int &);                //ф-ия заполнения массива

void write_info(cand *, int &);        //ф-ия вывода данных в файл

candidats.cpp

Код:

#include "candidate.h"

void read_info(cand *arr, int &size)
{
        cout << "Программа регистрации кандидатов" << endl << endl;
        for(int i = 0; i < size; i++)
        {
                cout << "Регистрация " << (i+1) << "-го кандидата";
                cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания)  ";
                cin >> arr[i].name;
                cout << endl << "Введите возраст :";
                cin >> arr[i].age;
                cout << endl << "Введите профессию :";
                cin >> arr[i].prof;
                cout << endl << "Введите название партии :";
                cin >> arr[i].set;
                cout << endl << "Введите номер изберательного округа :";
                cin >> arr[i].num;
                cout << endl << "Была ли судимость? ";
                cin >> arr[i].court;
                cout << endl << endl;
        }
}

void write_info(cand *arr, int &size)
{
        cout << "Зарегестрированные кандидаты :" << endl << endl;
        for(int i = 0; i < size; i++)
        {
                cout << "Кандидат номер " << (i+1) << endl;
                cout << "И.Ф.О.              : " << arr[i].name << endl;
                cout << "Возраст            : " << arr[i].age << endl;
                cout << "Профессия          : " << arr[i].prof << endl;
                cout << "Наименование партии : " << arr[i].set << endl;
                cout << "Номер изб. круга    : " << arr[i].num << endl;
                cout << "Судимость          : " << arr[i].court << endl;
                cout << endl << endl;
        }
}

rus8.h

Код:

#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void )
    {   
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif


Champ10n 27-01-2010 15:31 1331440

Ну что же, попробую теперь это все осилить сам.
Ну да ладно, все равно спасибо.
В чем делал-то хоть, в билдере 5ом заработает?

Это получается ты сделал, второе и третее, одно с дп, одно с файлами, а надо еще как бы просто без всего этого, если не затруднит.

Lisiy_egik 27-01-2010 15:42 1331448

не, скажем так:

1-е: по-сути обычный массив структур, заполнение с консоли. вывод на экран.
2-е: размещение массива структур в динамической памяти. ввод с консоли. вывод на экран
3-е: самое полное(которое 3 в 1м): размещение массива в динамической памяти, ввод данных из файла, вывод в файл(имена файлов задаются аргументами командной строки). Если к 3-ему какие-то другие требования (например ввод с консоли вывод в файл) или размещать не в дп, то могу переделать - это пару минут займет, но если ты его покажешь преподу. то не думаю. что он скажет что тут все печально))

компилятор - Microsoft Visual Studio 2008, в билдере должно тоже скомпилиться - язык то один))
единственное что может стать проблемой - это то. что в 3ем имена файла можно задать прямо в коде, тогда не нужно будет прописывать аргументы, но с аргументами, на мой взгляд. лучше.

будут вопросы - спрашивай, в личку номер вмз скину, все таки ты время сэкономил и получил рабочие проекты, а мне приятно за потраченное время ;)

Champ10n 27-01-2010 21:32 1331704

Ну да ввод как я уточнил нужен с консоли, если не сложно, переделаешь 3ее задание.

Lisiy_egik 28-01-2010 01:20 1331869

3е ввод с консоли(условия ввода остались прежними), вывод в файл, имя файла указывается прямо в коде - для разнообразия уже ))))

main:

Код:

#include <iostream>
#include <cstdlib>
#include <fstream>
#include "rus8.h"                //русификатор
#include "candidate.h"
using namespace std;

int main()
{
        rus();                                // ф-ия руссифицированного вывода

        int size;
        cout << "Введите кол-во регестрирующихся кандидатов: ";
        cin >> size;
        cout << endl;

        if(size < 0)
        {
                cout << "Ошибка! Кол-во кандидатов должно быть целочисленным и положительным" << endl;
                exit (0);
        }

        cand *arr = new cand[size];

        read_info(arr, size);

        ofstream out("out.txt");
        if(!out)
        {
                cout << "Ошибка! Не могу создать файл для вывода данных" << endl;
                exit (3);
        }

        write_info(out, arr, size);

        out.close();

        delete [] arr;

        return 0;

}

candidats.h

Код:

#include <iostream>
#include <string>
using namespace std;


struct cand
{
        string name;        // ФИО       
        int age;                // Возраст
        string prof;        // Профессия
        string set;                // Наименование партии
        int num;                // Номер избирательного округа
        string court;        // Судимость
};

void read_info(cand *, int &);                //ф-ия заполнения массива

void write_info(ostream &, cand *, int &);        //ф-ия вывода данных в файл

candidats.cpp
Код:

#include "candidate.h"

void read_info(cand *arr, int &size)
{
        cout << "Программа регистрации кандидатов" << endl << endl;
        for(int i = 0; i < size; i++)
        {
                cout << "Регистрация " << (i+1) << "-го кандидата";
                cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания)  ";
                cin >> arr[i].name;
                cout << endl << "Введите возраст :";
                cin >> arr[i].age;
                cout << endl << "Введите профессию :";
                cin >> arr[i].prof;
                cout << endl << "Введите название партии :";
                cin >> arr[i].set;
                cout << endl << "Введите номер изберательного округа :";
                cin >> arr[i].num;
                cout << endl << "Была ли судимость? ";
                cin >> arr[i].court;
                cout << endl << endl;
        }
}

void write_info(ostream &out, cand *arr, int &size)
{
        out << "Зарегестрированные кандидаты :" << endl << endl;
        for(int i = 0; i < size; i++)
        {
                out << "Кандидат номер " << (i+1) << endl;
                out << "И.Ф.О.              : " << arr[i].name << endl;
                out << "Возраст            : " << arr[i].age << endl;
                out << "Профессия          : " << arr[i].prof << endl;
                out << "Наименование партии : " << arr[i].set << endl;
                out << "Номер изб. круга    : " << arr[i].num << endl;
                out << "Судимость          : " << arr[i].court << endl;
                out << endl << endl;
        }
}

rus8.h

Код:

#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void )
    {   
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif

пример файла после записи данных:

Зарегестрированные кандидаты :

Код:

Зарегестрированные кандидаты :

Кандидат номер 1
И.Ф.О.              : Ivan_Vasilevich_Kozlovsky
Возраст            : 55
Профессия          : teacher
Наименование партии : LDPR
Номер изб. круга    : 5
Судимость          : No


Кандидат номер 2
И.Ф.О.              : Petr_Vasilevich_Tolstoy
Возраст            : 37
Профессия          : doc
Наименование партии : Edinaya_Russia
Номер изб. круга    : 11
Судимость          : No


Кандидат номер 3
И.Ф.О.              : a-ta-ta
Возраст            : 5
Профессия          : no
Наименование партии : no
Номер изб. круга    : 1
Судимость          : yap


John Harlamov 05-02-2010 10:47 1339537

Помогите решить задачу.
 
Помогите по жалуйста..... На курсовую задали сделать примитивный графический редактор.
Подскажите с чего начать и как вообще его реализовать.

AlexTNT 05-02-2010 18:03 1339932

Вроде здесь есть http://websprojects.ru/localcod.html

John Harlamov 07-02-2010 00:40 1341011

спасибо огромное!

Slim Thug 10-02-2010 20:10 1344131

Помогите пожалуйста решить задачу по С++
 
Заполнить массив из 100 элементов случайными целыми числами из диапазона 0..10, вывести содержимое массива на экран. Запросить с клавиатуры целое неотрицательное значение, и найти количество вхождений данного значения в массиве. Например, для массива 1 2 3 2 2 10 0 количество вхождений значения 2 равно 3, количество вхождений значения 3 равно 1, а количество вхождений значения 11 равно 0. Вычислить значения, количество вхождений которых в элементы массива минимальное и максимальное. (КОГО НЕ ЗАТРУДНИТ, ТО ПОЖАЛУЙСТА С КОММЕНТАРИЯМИ)

Drongo 10-02-2010 21:23 1344179

Slim Thug, Ровно настолько, насколько сам понял задачу. :)

Код:

// Заполнить массив из 100 элементов случайными целыми числами из диапазона 0..10,
// вывести содержимое массива на экран.
// Запросить с клавиатуры целое неотрицательное значение,
// и найти количество вхождений данного значения в массиве.
// Например, для массива 1 2 3 2 2 10 0
//количество вхождений значения 2 равно 3, количество вхождений значения 3 равно 1,
// а количество вхождений значения 11 равно 0.
// Вычислить значения, количество вхождений которых в элементы массива минимальное и максимальное.

#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <ctime>
#include <conio.h>

void main()
{
  const int size = 100;  // Размер первого массива
  int *array = new int[size]; // Создание массива с размером 100 элементов
  const int sizeSort = 11;  // Размер второго массива
  int index[sizeSort] = {0};  // Создание массива с размером в 10 элементов
  int a, min = 10, max = 0;

  srand(time(0));

  for(int i = 0; i < size; i++){
      array[i] = rand() % 11;  // Инициализация массива некотороыми случайными значениями
      cout<<setw(8)<<array[i];  // Вывод значений инициализированного массива для проверки...
    }

  cout<<" Enter Number = "; // Запрашиваем ввод числа
  cin>>a; // Считываем число
  while(a < 0){ // Пока не будет введено положительное число, предлагать ввод
    cout<<" Enter Number = "; // Запрашиваем ввод числа
    cin>>a; // Считываем число
  }

  // Расчитываем количество значений в массиве
  for(int j = 0; j < size; j++)
      if(array[j] == a) // Если значение в массиве равно введённому
        ++index[array[j]]; // , увеличить счётчик для этого числа

  // Вывод результата для количества значений введённого числа
  cout<<"Out Result\n"<<setw(6)<<"index"<<setw(17)<<"Value"<<endl;
  for(int b = 0; b < sizeSort; b++)
      cout<<setw(6)<<b<<setw(17)<<index[b]<<endl;

  // Вычисляем максимальное и минимальное в массиве
  for(int a = 0; a < size; a++){
      if(array[a] > max)
        max = array[a];
      if(array[a] < min)
        min = array[a];
    }

  cout<<endl<<endl;
  cout<<"Minimal = "<<min<<endl; // Выводим минимальное
  cout<<"Maximal = "<<max<<endl; // Выводим максимальное

  delete [] array;

  getch();
}


Slim Thug 10-02-2010 21:30 1344180

Drongo, большое спасибо!!!

Desvi 29-04-2010 17:25 1403494

Помогите пожалуйста написать программку на C с указателями и если можно еще с блок-схемой, заранее спасибо

В массиве A10 найти количество нечетных чисел расположенных после второго самого большего числа

lxa85 29-04-2010 19:46 1403577

Desvi, с тебя устное решение задачи и без проблем.
Под устным решением понимается от 5 до 10 качественных вариантов решения заданного массива А10, нахождение (или сортировка) второго самого большого числа (с обязательным пояснением как ты его нашел), и так же нахождение всех нечетных чисел за ним.
А то мы можем найти не так (с задом наперед допустим), тебе потом придется искать по новой. Зачем лишние проблемы, правда?
Заодно будет видно, что же это за массив такой - А10.
Под "качественным вариантом" следует понимать массив не 1234567, и а нечто более сложное, заданное случайным образом. Вариант, который может раскрыть и поможет понять суть программы.

Desvi 29-04-2010 20:19 1403600

К примеру
Массив 1: 1 8 11 12 4 8 15 5 3 7, макс1 - 15, макс2 - 12 после 12 начинаем находить нечетные числа это: 11 7 5 3 1, значит вывод: 5
Массив 2: 8 15 19 25 1 7 21 4 9 11, макс1 - 25, макс2 - 21, после 21 начинаем находить нечетные числа это: 19 15 11 9 7 1, вывод: 5
Массив 3: 11 12 5 9 6 0 2 8 10 20, макс1 - 20, макс2 - 12, после 12 начинаем находить нечетные числа это: 11 5 9, вывод: 3
Массив A10 имеется ввиду (может некорректно выразился) массив состоящий из 10 чисел

lxa85 29-04-2010 21:31 1403648

Desvi, примеры
Цитата:

Цитата Desvi
Массив 1: 1 8 11 12 4 8 15 5 3 7, макс1 - 15, макс2 - 12 после 12 начинаем находить нечетные числа это: 11 7 5 3 1, значит вывод: 5
Массив 2: 8 15 19 25 1 7 21 4 9 11, макс1 - 25, макс2 - 21, после 21 начинаем находить нечетные числа это: 19 15 11 9 7 1, вывод: 5
Массив 3: 11 12 5 9 6 0 2 8 10 20, макс1 - 20, макс2 - 12, после 12 начинаем находить нечетные числа это: 11 5 9, вывод: 3 »

не соответствуют исходному заданию:
Цитата:

Цитата Desvi
В массиве A10 найти количество нечетных чисел расположенных после второго самого большего числа »

Верней не сами примеры, а выводы.
Несколько наводящих вопросов.
Как искались бОльшие числа? Какой элемент с каким сравнивался? Откуда и куда шло сравнение ("от начала до конца" или "с конца в перед") ?
Как мне проверить четное число, или нет? Да, да. Вопрос кажется примитивным, но и тут возможны варианты.
нечетные числа после второго... После - это в какую сторону? По уменьшению индекса или все подряд?

Desvi 29-04-2010 22:08 1403680

Большие числа это те у которых порядковый номер наибольший
Четные числа это те которые делятся на 2 (2,4,6,8,10)
Все подряд, местоположение не играет роли

P.S. Я понимаю как вы рассуждаете, я когда только получил задание, так же думал, сделал прогу, преподнес её преподавателю, а он говорит, что я его не правильно понял и объяснил на примерах, как я вам. Сам понимаю что задание какое-то жидкое, но что поделаешь...

Сам алгоритм программы должен быть такой: (к примеру дан масссив 1 9 8 2 6 4 11 14 12 3)
1. Нахождение наибольшего числа (т.е. тот который имеет наибольший порядковый номер в нашем случае это 14)
2. Нахождение второго наибольшего числа (т.е тот который имеет порядковый номер больше оставшихся чисел но меньше первого наибольшего числа в нашем случае это 12)
3. Из оставшихся 8 чисел исключаются четные числа (т.е. делящийся на 2 в нашем случае исключаем 8 2 6 4 )
4. Подсчитываем оставшиеся числа это 1 9 11 3, т.е нечетных чисел расположенных после второго самого большего числа - 4 т.е. программа должна вывести ответ: 4

lxa85 29-04-2010 22:43 1403702

Desvi, огорчу.
Цитата:

Цитата Desvi
Все подряд, местоположение не играет роли »

это не верно. В задании сказано после второго самого большого числа.
Цитата:

Цитата Desvi
Четные числа это те которые делятся на 2 (2,4,6,8,10) »

Не хватает какого-то условия. Т.к. 1,3,5,7,9 тоже делятся на два!
В условии указана работа с указателями. Из чего следует вопрос - как организован массив (вектор)? Стек, Очередь, Двунаправленный список?
Если построен на указателях, то целесообразно будет ввести функцию(ции) "перехода" между элементами массива. (Перемещение текущего указателя в массиве. )
Цитата:

Цитата Desvi
сделал прогу, преподнес её преподавателю »

Тегом [code] оформи, и приведи исходник.

Dimasv 11-05-2010 09:01 1410714

Цитата:

Цитата lxa85
Цитировать »

Вот что уменя получилось:
Код:

#include "stdafx.h"
#include <fstream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n = 4;
    float a[4][4];
    ifstream F("1.txt");
    for (int i = 0; i < n * n; ++i)
        F >> a[i / n][i % n];
    F.close();
    for (int i = 0; i < n; ++i){
        for (int j = 0; j < n; ++j)
            printf("%.f ", a[i][j]);
        printf("\n");
    }
    int i, j;
    for (int k = 0; k < n; ++k){
        a[k][k] = sqrt(a[k][k]);
        for (i = k + 1; i < n; ++i){
            a[i][k] = a[i][k] / a[k][k];
        }
        printf("%d\n", k);
        for (j = k + 1; j < n; ++j){
            for (i = j; i < n; ++i)
                a[i][j] = a[i][j] - a[i][k] * a[j][k];
//            for (i = 0; i < k; ++i)
//                a[j][k + 1] = a[j][k + 1] - a[i][j] * a[k + 1][i];
        }
    }
 
    for (i = 0; i < n; ++i){
        for (j = 0; j < n; ++j)
            printf("%.f ", a[i][j]);
        printf("\n");
    }
 
    return 0;
}


lxa85 11-05-2010 10:08 1410749

Dimasv, во первых оформи код тегом [code], а во вторых напиши комментарии.
Да, и про табуляцию текста не забудь. Привыкай уважать в первую очередь себя, и предоставлять на проверку читаемый код.
В дополнение к ним (комментариям), можешь дать ссылку на реализуемую расчетную формулу.
С виду, уже на что-то похоже. Давай, внеси поправки, и уже можно будет детально порыться :)

andrey12qw 11-06-2010 01:02 1431865

Помогите решить эти три задачи.

1.Используя функцию найти сумму цифр трехзначного числа.
2.Используя функцию найти количество цифр данного числа.
3.Даны три целых числа. Определить, сумма цифр которого из них больше. Подсчет суммы цифр организовать через полпрограмму.

Drongo 11-06-2010 10:39 1432012

Цитата:

Цитата andrey12qw
1.Используя функцию найти сумму цифр трехзначного числа »

пойдёт?
Цитата:

Цитата andrey12qw
2.Используя функцию найти количество цифр данного числа. »

Тот же самый код что и выше, только добавить после этой строки
Код:

...
  // определяет количество цифр в нем и их сумму.
  lenght = Rasriad(enterNumber);

  cout<<"Kol-vo chisel = "<<lenght<<endl;  // Вот эту строку
...

Цитата:

Цитата andrey12qw
3.Даны три целых числа. Определить, сумма цифр которого из них больше. Подсчет суммы цифр организовать через полпрограмму. »

Прогнать в цикле три числа, результат сумм проверить. Вывести максимальное.

ramonbl4 29-06-2010 20:58 1444020

Помогите решить задачу по С
 
В файле с текстом программы на Си удалить все комментарии, и заменить все "printf" на "puts" , подсчитать количество операторов "puts" и записать это число в выходной файл.


Спасибо огромное (зарание)!

romashka7 29-09-2010 13:27 1507275

Помогите Решить задачку по сишке!
 
Всем доброго времени суток!
Есть не простая задачка по языку Си...

Необходимо создать программу (через функции пользователя), которая, после введения 2-х матриц "А" и "В" считает 3-ю матрицу по формуле: С=(2А+В)*В(Траспонир.)

Матрицы состоят из 9ти элементов (размер 3*3)...

Помогите пожалуйста......буду очень-очень благодарен...

lxa85 29-09-2010 14:29 1507333

Цитата:

Цитата romashka7
Помогите пожалуйста. »

Чем помочь то?
Цитата:

Цитата romashka7
буду очень-очень благодарен. »

Админ конфеты не пьет! ;)
Если по делу, то программировать за тебя с нуля - это не дело.
Если ты расписываешь всю математику и все функции, то можно подумать над программной реализацией.

Hector 29-09-2010 18:36 1507556

я тут немного накропал, решение не полностью (не помню как матрицы умножать :) ), но в целом думаю можно использовать
Код:

#include "stdafx.h"
#include "locale.h"
#include "stdio.h"

const int N=4; // порядок матрицы 3х3

int inp(int matr[N][N]) // ввод матрицы
{
        int i, j;
        for (i=1; i<=N-1; i++)
                for (j=1; j<=N-1; j++)
                {
                        printf("\n[%d.%d]=",i,j);
                        scanf("%d",&matr[i][j]);
                }
        return 0;
}

int out(int matr[N][N]) // вывод матрицы
{
        int i, j;
        for (i=1; i<=N-1; i++)
        {
                for (j=1; j<=N-1; j++)
                        printf("%d ",matr[i][j]);
                printf("\n");
        }
        return 0;
}


int _tmain(int argc, _TCHAR* argv[])
{
        setlocale(LC_ALL, "rus"); // вывод русских символов в консоль
        int A[N][N], B[N][N], C[N][N];
        printf("Введите значения для матрицы А:\n");
        inp(A);
        printf("\nВведите значения для матрицы B:\n");
        inp(B);
        printf("\nВы ввели:\n\nМатрица А:\n");
        out(A);
        printf("\nМатрица B:\n");
        out(B);
        // выполнение задания
        // вычисление скобок
        int h, g;
        for (h=1; h<=N-1; h++)
                for (g=1; g<=N-1; g++)
                        C[h][g]=2*A[h][g]+B[g][h];
        // умножение на транспонированную матрицу В
        // сюда надо добавить код для умножения матриц
        printf("\nРезультат матрица С:\n");
        out(C);
        return 0;
}

написано в MVS 2010
p. s. lxa85, жду конструктивной критики :)

lxa85 29-09-2010 22:36 1507767

Цитата:

Цитата Hector
lxa85, жду конструктивной критики »

Hector, А какая тут критика? Все просто, логично, понятно.
С комментариями и пояснениями. Транспонирования матрицы в отдельную функцию дописать, только и всего.
Цитата:

Транспонированная матрица — матрица AT, полученная из исходной матрицы A заменой строк на столбцы.
Стало быть аргументы множителя поправить, всего делов.
Молодец! Другого сказать не могу. :)

.Rock. 10-10-2010 13:11 1515572

Здравствуйте. Помогите пожалуйста с лабораторной по информатике. (C++ / Ассемблер) Вероятно, элементарное задание... Но теории по этой теме нам не дали абсолютно, а то, что есть в методичке, слишком сжато и неполно.
Задание - написать код программы в Visual C++ ( Win32).Все задания должны выполняться с помощью ассемблерных вставок. Исходные данные можно размещать в переменных С++. Варианты в приложенной картинке. Первые два я сделал.
P.S. И дайте пожалуйста ссылки, что можно с нуля почитать по этой теме.

Admiral 10-10-2010 13:43 1515599

.Rock., ссылка на тему Прямой/Обратный/Дополнительный код - Основы машинной арифметики с двоичными числами
О делении со знаком (и без) - Команды МП К1810

.Rock. 10-10-2010 17:48 1515747

Спасибо. Но как-то не очень понятно. А поподробнее насчет регистров и т.п. ничего нет?

lxa85 10-10-2010 20:18 1515834

.Rock., поищи книгу " Питер Абель. Ассемблер и программирование для IBM PC " она даст достаточно исчерпывающие ответы на все начальные вопросы по ассемблеру.

Gelos_911 19-10-2010 12:51 1522179

Помогите кто может C++
Заполнять нулями нечетные столпци массива (массив N10 M15)

Klim1988 19-10-2010 14:43 1522296

Доброго время суток уважаемые форумчане, сильно не пиннайте ламера, т.е. меня, задали задачу, а я третий день сижу и не можем с парнишкой разобраться. Задание по себе не сложное помогите пожалуйста его нужно выполнять в среде программирования Visual C. Создавая MFC-приложение. Предусмотреть визуализацию всех действий, т.е. массив создавать в виде визуальных компонентов.

Задание:

Дан текст. С помощью процедуры преобразовать первую букву каждого слова в предложении в заглавную.

lxa85 19-10-2010 21:15 1522606

Gelos_911, двойной вложенный цикл с проверкой на нечетность и с заполнением массива нулями.
В чем проблема то?
Klim1988,
Цитата:

Цитата Klim1988
Предусмотреть визуализацию всех действий, т.е. массив создавать в виде визуальных компонентов. »

Визуализация действий и массив визуальных компонентов - разные вещи!
Вам надо проиллюстрировать свою программу, чтобы пользователь видел как движется курсор, как он понимает где начинается слово, как буква становится заглавной и т.д.
поэтому пишите пока основную программу, а потом добавите модуль "визуализации действий" - переопределения скорее всего объекта Label, и его отрисовка с шагом в полсекунды.

Klim1988 20-10-2010 06:39 1522791

Цитата:

Цитата lxa85
поэтому пишите пока основную программу, а потом добавите модуль "визуализации действий" - переопределения скорее всего объекта Label, и его отрисовка с шагом в полсекунды. »

спасибо за разяснения, но вот втом то и дело что не получается написать код всей программы, не могу понять как ее сделать, так как это мы не проходили долбанутое учереждение :durak: , дают задание которые мы тольто тольто будем проходить,

Можно ли код программы если вас так это не затруднит написать?

lxa85 20-10-2010 22:42 1523538

Klim1988, не то что незатруднит,но мне просто некогда. До начала ноября - 100% Да и потом не легче.
В чем проблема то ? Как написать основную программу, или как ее визуализировать?

Для каждого рассписать :

1. Предложения, какие попытки были сделаны, как пытался решить проблему.
2. Приведи хотя бы примерное видение решения. Составь блок схему и т.д.

Или еще проще. Дать наводящий вопрос я могу, но только после того, как увижу твои рассуждения. Т.е. подскажу "куда думать дальше". Решать с нуля и думать за тебя я не буду. (учится тебе, решать тебе, защищаться тебе, голова твоя и надо это всё тоже тебе.)

terminalek 21-10-2010 02:22 1523637

Здравствуйте!
Я хотел проконсультироваться по поводу одного задания.
Нужно составить программку, которая будет сжимать текст таким образом:
что при команде project -c N (где N >=1, по этому параметру программа должна найти повторяющиеся блоки длиной N, максимально 9 повторяющихся знаков)
Для наглядности пример при N=3:
Цитата:

Было так:
"Uiiiiiii, blablabla" a "blebleble" a "hophop hophop"
Цитата:

Стало так:
"U2iiii, 3bla" a "3ble" a "2hop 2hop"
Для чтения поступающего текста можно лишь использовать не форматириующие функции, например getchar(), getc() или fgetc().
Сам текст будет состоять из букв латинского алфавита, цифр, пробелов, знака конца строки.
Мне пока не понятен план действий. То есть не могу составить алгоритм. В этом то и есть проблема. Так же актуален вопрос с помощью какой функции возможно реализовать замену текста (в php я знаю str_replace).

Была еще задача, целью которой было заменить последовательность пробелов, табуляций, одним пробелом/табом. Сам полностью рабочий код я не смог сделать, но нашел в интернете такой:
PHP код:

#include <stdio.h>
#include <ctype.h>

int main(void)
{

   
int sp 0c;

   while( (
getchar()) != EOF) {
      if(
isspace(c)) {
         if(
sp)  // что означает данное условие? если  isspace возвращает 0?
         
continue; // суть continue тоже не совсем понял, объясните пжлст.
         
else sp 1// что дает sp = 1?
      
}
     else
     
sp 0;
     
putchar(c);
    }
    return 
0;


Если вас не затруднит ответить на вопросы в коде, то мне будет понятна суть работы программы. А то пытался для себя уяснить, пара моментов все же не понятна. Спасибо за внимание!
Пожалуйста при ответе ориентируйтесь на язык C, синтаксис C++ я пока не расматривал.

Klim1988 21-10-2010 07:41 1523704

Цитата:

Цитата lxa85
Подскажу "куда думать дальше"»

не получается ввести данные переменой

PHP код:

int main(array<System::String ^> ^args)
{
    
char *s1;
    
char *s2="132465";
    
printf("Enter string: ");
    
scanf_s("%s", &s1);
    
printf("%s", &s2);
    
scanf_s("%s", &s1);
    return 
0;



lxa85 21-10-2010 09:07 1523740

Klim1988, Если придется из тебя данные клещами тянуть, то ничего путного из этого не выйдет.
Цитата:

Цитата Klim1988
не получается ввести данные переменой »

И куда мне это? Все остальное то где?
ЕМНИП char* не рекомендуется к применению новичкам. Уже написана более удобная "обертка" для работы со строками.
Код:

int main(array<System::String ^> ^args)
{
    char *s1;
    char *s2="132465";
    printf("Enter string: ");
    scanf_s("%s", &s1);
    printf("%s", &s2);
    scanf_s("%s", &s1);
    return 0;
}

в цифрах путаницы нет?

Klim1988 21-10-2010 09:59 1523771

Цитата:

Цитата lxa85
char* не рекомендуется к применению новичкам »

и не хотелось бы его использовать, но это пока единственный вариант что пришло из интернета в мой мозг

Цитата:

Цитата lxa85
Уже написана более удобная "обертка" для работы со строками. »

А как она выглядит эта ""Обертка" код к ней можно посмотреть?

вот что делал, это программа выводит строку целиком

PHP код:

#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <iostream>
#include <stdio.h>



int main(void
{
using namespace std;

const 
int n 80;
char s[n];
cin.getline(sn);
cout<<s<<endl;
cin.get(sn);
cout<<s<<endl;
return 
0;


как теперь преобразовать строку так чтобы все первые буквы слов стали заглавными

lxa85 21-10-2010 12:33 1523899

Раз, Два
Цитата:

Цитата Klim1988
как теперь преобразовать строку так чтобы все первые буквы слов стали заглавными »

Это я у тебя хочу спрость. Как найти первые буквы предложений?

Klim1988 21-10-2010 12:53 1523920

Цитата:

Цитата lxa85
Это я у тебя хочу спрость. Как найти первые буквы предложений? »

не предложений а слов в предложении, увы сам незнаю :( , думал вы знаете

lxa85 21-10-2010 13:36 1523953

Цитата:

Цитата Klim1988
думал вы знаете »

Думай, думай, шевели мозгами! (с) :)
Чем просто буква отличается от первой буквы? Буквы предложения. Соотв.
Чем заканчивается предложение и как одно предложение отделяется от другого?

Klim1988 21-10-2010 14:15 1523981

Цитата:

Цитата lxa85
Думай, думай, шевели мозгами! (с) »

получилось что то вот такое

PHP код:

int main(void
{
using namespace std;

char s[255];
int i;
cout<<"Enter string: ";
cin.getline(s,255);
s[0] = toupper(s[0]);
for(
i=1;i<strlen(s);i++){
    if (
s[i]==' '){
        
s[i+1] = toupper(s[i+1]);
    }
}
cout  <<  s  <<  endl;

getch();

return 
0;


Теперь вопрос как перевести System::String в char и обратно???

lxa85 22-10-2010 10:01 1524589

Цитата:

Цитата Klim1988
Теперь вопрос как перевести System::String в char и обратно? »

А надо? Со строкой работать дальше не получится?
BTW алгоритм не совсем верен и в ряде случаев даст ошибку.

Klim1988 22-10-2010 10:21 1524604

Цитата:

Цитата lxa85
А надо? Со строкой работать дальше не получится? »

состроками работать не умеем

Цитата:

Цитата lxa85
BTW алгоритм не совсем верен и в ряде случаев даст ошибку. »

а что такое BTW алгоритм ???

lxa85 22-10-2010 10:51 1524630

BTW - это сокращение By the Way кстати (попутно) говоря.
Кстати говоря приведенный алгоритм не рабочий.
Может поиск поможет в переводе string -> char и обратно?

Klim1988 22-10-2010 11:38 1524671

Цитата:

Цитата lxa85
Кстати говоря приведенный алгоритм не рабочий »

а этот :


читать дальше »
PHP код:

#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <iostream>
#include<iterator>
#include <stdio.h>


char UpSymbol(char c){
    
int i=(int)c;

    if ((
i>96)&&(i<122)){
        
i=i-32;
    };
    if ((
i>-97)&&(i<-80)){
        
i=i-32;
    };
    if ((
i>-33)&&(i<-16)){
        
i=i-80;
    };
    if (
i==-15){
        
i=-16;
    };
    return (
char)i;
}

int main(void
{
using namespace std;
char s[255];
int i;

cout<<"Enter Text: ";
cin.getline(s,255);

s[0]=UpSymbol(s[0]);

for(
i=0;i<strlen(s);i++){
    
    if (
s[i]==' '){
        
s[i+1]=UpSymbol(s[i+1]);
    }
}
cout << "Resultat: " <<  s  <<  endl;

getch();



Admiral 22-10-2010 18:09 1524951

terminalek можно выделить два буфера на три символа и сверять их по тексту, если совпали в новую строчку отправить 2 и один из буферов, потом всё заново с прирашеним 2йки если ещё есть повторы. Или же сразу на месте до конца фразы проверить сколько раз встретился буфер.

Цитата:

Цитата terminalek
Код:

  int sp = 0, c;

  while( (c = getchar()) != EOF) {
      if(isspace(c)) {
        if(sp)  // что означает данное условие? если  isspace возвращает 0?
        continue; // суть continue тоже не совсем понял, объясните пжлст.
        else sp = 1; // что дает sp = 1?
      }
    else
    sp = 0;
    putchar(c);
    }

>>

if(sp) - означает "если sp не ноль" Условия выше так же, если isspace вернул не ноль
continue перейти к следующему "приращению" цикла while, то есть к следующему символу (если предыдущее условие ^^ выполнилось)
присваиваем sp 1 для того что б перейти следующий раз сразу к второму символу (значит один пробел уже напечатался, а второй и последующий подряд будет отловлен).
Если это не пробел был в самом начале зануляем sp сразу.
Если не было перехода по continue печатаем символ (любой, пробел единичный так же).

theBest4ainik 24-10-2010 14:19 1526160

pomogite rewit zada4u.

vvodits9 kakoe to 4islo, naprimer 3. teper vvodits9 ego soderjimoe: 1 4 6

nado vivesti v posledovatelnosti : 6 4 1


no est glavnoe uslovie: nelz9 ispolzovat massiv i povtoreni9 kak while i for, daje dl9 vvoda; nujno ispolzovat RECURSIU.

Код:

#include <iostream>
using namespace std;

unsigned long rec (unsigned long);

int main(){
        int n;
        cin >> n;

        cout << rec (n);
       
       
        return 0;
}
unsigned long  rec (unsigned long n){
        int x;
        cin >> x;
        if (n==1)
                        return x ;
        else
                return rec(n-1);


}


vot tak 9 napisal kod, no ne mogu naiti owibku, plz daite ideu, gde mo9 owibka

Drongo 24-10-2010 20:04 1526420

theBest4ainik, Язык конференции русский, если у вас нет возможности набирать русский текст, воспользуйтесь виртуальной клавиатурой, находится справа от поля ввода.


ValeraRU 24-10-2010 23:15 1526580

Здравствуйте,нужна помощь,в общем на лаб. по программированию сейчас идут задачи с массивом,в связи с нехваткой знаний обращаюсь к вам за помощью) помогите чем сможете
вот задача(пример)
Код:

/*
Подключние рабочих библиотек:
    <stdio.h> - библиотека ввода/вывода
*/
#include <stdio.h>

int main(int argc, char* argv[])
{
    /* Именованная константа, определяющая количество элементов массива */
    const    MAX_ELEMENTS = 8;

    /* Объявление и инициализация переменных */
    float    m[MAX_ELEMENTS];
    float    sum = 0;
    float    result = 1;
    int      iMax, iMin;

    /* Запрашиваем ввод данных с клавиатуры */
    for (int i = 0; i < MAX_ELEMENTS; i++)
    {
        printf("m[%d] = ", i);
        scanf("%f", &m[i]);
    }

/* Принимаем индексы максимального и минимального массива равными 0 */
    iMin = iMax = 0;
    for (i = 0; i < MAX_ELEMENTS; i++)
    {
        /* Вычисляем сумму отрицательных элементов массива */
        if (m[i] < 0) sum += m[i];

        /* Находим индексы максимального и минимального элементов массива */
        if (m[i] > m[iMax]) iMax = i;
        if (m[i] < m[iMin]) iMin = i;
    }

    /* Находим произведение элементов массива, находящихся между минимальным и максимальными элементами */
    for (i = ((iMax < iMin) ? iMax : iMin);
        i <= ((iMax > iMin) ? iMax : iMin);
        result *= m[i++]);

    /* Выводим на экран результат вычислений */
    printf("\nСумма отрицательных элементов = %.2f\n", sum);
    printf("Результат = %.2f\n\n", result);

    /* Сортировка элементов массива по возрастанию */
    for (i = 0; i < MAX_ELEMENTS; i++)
    {
        for (int j = i + 1; j < MAX_ELEMENTS; j++)
        {
            if (m[i] > m[j])
            {
                result = m[i];
                m[i] = m[j];
                m[j] = result;
            }
        }
    }

    /* Вывод на экран отсортированного по возрастанию массива */
    printf("Отсортированный массив:\n");
    for (i = 0; i < MAX_ELEMENTS; printf("%.2f ", m[i++]));

    return 0;
}

Результат выполнения программы:
m[0] = 3
m[1] = 7
m[2] = -4
m[3] = 8
m[4] = -1
m[5] = 9
m[6] = 0
m[7] = 7

Сумма отрицательных элементов = -5.00
Результат = 288.00

Отсортированный массив:
-4.00 -1.00 0.00 3.00 7.00 7.00 8.00 9.00

вот условие(моей задачи)
Код:

В одномерном массиве, состоящем из п вещественных элементов, вычислить:
1)        сумму положительных элементов массива;
2)        произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.
Упорядочить элементы массива по убыванию.

и вот что я написал
Код:

#include <stdio.h>
#include <math.h>
int main(int argc, char* argv[])
{
    const    MAX_ELEMENTS = 80;
    float    m[MAX_ELEMENTS];
    float    sum = 0;
    float    result = 1;
    int      iMax, iMin,n;
      FILE *in=fopen("1.txt","r");
    fscanf(in,"%d", &n);
    for (int i = 0; i < n; i++)
    {
      //        printf("m[%d] = ", i);
        fscanf(in,"%f", &m[i]);
    }
    iMin = iMax = 0;
    for (i = 0; i < MAX_ELEMENTS; i++)
    {
        if (m[i] > 0) sum += m[i];
        if (m[i] > m[iMax]) iMax = i;
        if (m[i] < m[iMin]) iMin = i;
    }
    for ( i = ((iMax < iMin) ? iMax : iMin);
        i <= ((iMax > iMin) ? iMax : iMin);
        result *= m[i++]);
    printf("\n summa polojitelinih 4isel  = %.2f\n", sum);
    printf("rezultat = %.2f\n\n", result);
    for (i = 0; i > MAX_ELEMENTS; i--)
    {
        for (int j = i - 1; j < MAX_ELEMENTS; j--)
        {
            if (m[i] < m[j])
            {
                result = m[i];
                m[i] = m[j];
                m[j] = result;
            }
        }
    }
    printf("otsortirovanii massiv:\n");
  for (i = 0; i < MAX_ELEMENTS; printf("%.2f ", m[i++]));
    return 0;
}

помогите доработать =(
очень надо!

и вот вторая задача
пример:

Код:

ДВУМЕРНЫЕ МАССИВЫ

Пример задания:        Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

Пример решения задачи:

#include <stdio.h>

int main(int argc, char* argv[])
{
    /* Объявляем и инициализируем матрицу 8х8 */
    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, iSumm; /* Счетчик и переменная для хранения суммы */
    bool    bFlag;          /* Флаг */

    /*----------------------------------------------*/
    /*    П Е Р В А Я  Ч А С Т Ь  З А Д А Н И Я  */
    /*----------------------------------------------*/
    printf("k = ");
    for (i = 0; i < 8; i++)
    {
        /* Присваиваем Флагу исходное значение */
        bFlag = true;
        for (j = 0; j < 8; j++)
        {
            /* Сравниваем элемент i-й строки j-го столбца с элементом j-й строки i-го столбца. В случае их несоответствия присваиваем Флагу значение Ложь и прерываем цикл по j конструкцией break */
            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 = false;
        iSumm = 0;
        for (j = 0; j < 8; j++)
        {
            /* При нахождение хотя бы одного отрицательного элемента присваиваем Флагу значение Истина, обозначающее необходимость вывода Суммы на экран */
            if (matrix[i][j] < 0) bFlag = true;

          /* Суммируем значения элементов i-й строки */
            iSumm += matrix[i][j];
        }
        /* В случае нахождения в строке хотя бы одного отрицательного элемента выводим на экран сумму элементов i-й строки */
        if (bFlag) printf("Сумма элементов строки #%d = %d\n", i, iSumm);
    }

    return 0;
}

Результат выполнения программы:
k = 2 6

Сумма элементов строки #1 = 14
Сумма элементов строки #5 = 31

что надо сделать мне :
Цитата:

Осуществить циклический сдвиг элементов квадратной матрицы размерности МхN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справа налево, из нее - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично.
ребята очень нужно,заранее благодарю

Drongo 25-10-2010 00:18 1526612

Это лучше заменить
Код:

iMin = iMax = 0;
на
Код:

iMin = iMax = m[0]; // первый элемент массива, потому что ноль это значение, и если значения будут от -n до -1 то условие никогда не будет верным.[
q=ValeraRU]помогите доработать =(
очень надо! »[/q]Что не получается в задаче? В чём нужна доработка?

ValeraRU 25-10-2010 01:37 1526629

Цитата:

Цитата ValeraRU
2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами. Упорядочить элементы массива по убыванию. »

вот это я не знаю как написать правильно..

и вторую задачу вообще понятия не имею,дело в том что препод такой попался,т.е. если без знаний к нему пришел,то можешь спать,а я выучить С++ хочу и вот на лабах,мне не хватает знаний :(

Drongo 25-10-2010 14:17 1526900

Попробовал решить часть вычисления произведения от минимального до максимального, отдельной задачей
Цитата:

Цитата ValeraRU
Код:

...
/* Находим индексы максимального и минимального элементов массива */
 if (m[i] > m[iMax]) iMax = i;
 if (m[i] < m[iMin]) iMin = i;
 }
/* Находим произведение элементов массива, находящихся между минимальным и максимальными элементами */
 for (i = ((iMax < iMin) ? iMax : iMin);
 i <= ((iMax > iMin) ? iMax : iMin);
 result *= m[i++]);
....

»

Код:

#include <iostream>
using namespace std;

int main() {
  const int size = 8; // Наш размер массива. Можно изменить произвольно размер
  double z, min, max, array[size] = {0};
  int iMin, iMax, Result = 1;

  // Ввод значений в массив
  for(int i = 0; i < size; i++){
      cout << "Array[" << i << "] = ";
      cin >> array[i];
    }

  max = min = array[0]; // Присваиваем первый элемент

  // Поиск максимального и минимального значений
  for(int i = 1; i < size; i++){ // Начинаем с 1-го элемента, т.к. array[0] мы уже присвоили
      if(array[i] < min){
        min = array[i];
        iMin = i;  // Запоминаем индекс массива в котором хранится минимальное значение
        }
      if(array[i] > max){
        max = array[i];
        iMax = i; // Запоминаем индекс массива в котором хранится максимальное значение
        }
    }

  cout << "\nMinimal = " << min << endl;
  cout << "Maximal = " << max << endl;
  cout << endl;

  // Вычисляем произведение диапазона от индекса минимального значения, до индекса максимального значения
  if(iMin < iMax)
    for(int i = iMin; i < iMax; i++)
      Result *= array[i];
  else if(iMin > iMax)
    for(int i = iMax; i < iMin; i++)
      Result *= array[i];

  cout << "Proisvedenie Min - Max = " << Result << endl; // Выводим результат


  cin >> z;
  return 0;
}


Klim1988 26-10-2010 07:47 1527519

Народ помогите пожалуйста завтра сдавать программу, а ее нужно преобразовать из консольной в визуальную, т.е. чтобы программа работала с кнопок

вот код программы

читать дальше »
PHP код:

#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <iostream>
#include<iterator>
#include <stdio.h>


char UpSymbol(char c){
    
int i=(int)c;

    if ((
i>96)&&(i<122)){
        
i=i-32;
    };
    if ((
i>-97)&&(i<-80)){
        
i=i-32;
    };
    if ((
i>-33)&&(i<-16)){
        
i=i-80;
    };
    if (
i==-15){
        
i=-16;
    };
    return (
char)i;
}

int main(void
{
using namespace std;
char s[255];
int i;

cout<<"Enter Text: ";
cin.getline(s,255);

s[0]=UpSymbol(s[0]);

for(
i=0;i<strlen(s);i++){
    
    if (
s[i]==' '){
        
s[i+1]=UpSymbol(s[i+1]);
    }
}
cout << "Resultat: " <<  s  <<  endl;

getch();



Klim1988 26-10-2010 13:26 1527725

Решил я свою задачу вот ссылка на нее http://forum.oszone.net/thread-189320.html

Andir 01-11-2010 12:48 1532216

Найти символ в строке help me

lxa85 01-11-2010 13:11 1532229

Andir, посимвольно сравнить элемент строки с заданным. В процессе прибавлять счетчик.
Ну или поискать процедуру делающую, по сути, тоже самое.

Profi_Boss 02-11-2010 00:45 1532706

Найти наибольшую сумму чисел ряда 1;1/2;1/3;…1/n, не превышающую заданное число k.


Код:

#include "stdafx.h"
#include <iostream>

using namespace std;

int main () {
        int y = 0;
        int n = 0;
        int k;
        cout <<  " Vvedite chislo k "<< endl;
        cin >> k;
        do { int c = 1/( n+1);
                y +=c;
                n ++;
                if ( y >= k) {
                        y -= c;
                        cout << y << endl;
                }
        }
                while ( y < k);

       

        system ("pause");
        return 0;
}

вот как бы написал програмку, но она почему-то не компилируется, в чем проблема, что не так составил?

Hector 02-11-2010 01:21 1532716

а компилятор что говорит?

Profi_Boss 02-11-2010 08:30 1532810

ничего, просто высвечивает мою надпись "ввести число k", я ввожу , он отображает это мое число, и все!

lxa85 02-11-2010 08:44 1532815

Profi_Boss, а с дробными(вещественными) числами работать не пробовали?

Profi_Boss 02-11-2010 09:13 1532834

аахх, точно...

Код:

int main () {
        float y = 0;
        int n = 0;
        int k;
        cout <<  " Vvedite chislo k "<< endl;
        cin >> k;
        do { float c = 1/( n+1);
                y +=c;
                n ++;
                if ( y >= k) {
                        y -= c;
                        cout << y << endl;
                }
        }
                while ( y < k);

       

        system ("pause");
        return 0;
}

ну изменил с типа int на float, но всеравно не хочет компилировать чего-то.

lxa85 02-11-2010 09:23 1532840

Profi_Boss, введи для проверки вывод y на каждой итерации цикла. И посмотри что будет. Может она все правильно считает? (честно говоря в математике еще не копался) Повводи разные значения k.
Код:

do { float c = 1/( n+1);
cout << y << endl;
y +=c;
n ++;
if ( y >= k) {
y -= c;
}
}
while ( y < k);


Profi_Boss 02-11-2010 09:34 1532846

не выходит, ввожу число какое-то, а оно мне выбивает бесконечно цифры "1", причем любое число ввожу.
пробовал как с оператором if так и без, думал он вводит бесконечный цикл, но нет, проблема в чем-то другом.

Drongo 02-11-2010 12:43 1533011

Цитата:

Цитата Profi_Boss
не выходит, ввожу число какое-то, а оно мне выбивает бесконечно цифры "1", причем любое число ввожу.
пробовал как с оператором if так и без, думал он вводит бесконечный цикл, но нет, проблема в чем-то другом. »

Хехе, верно. Проблема в другом. :)
У тебя единица является целым числом.
Цитата:

Цитата Profi_Boss
...
float c = 1 / ( n+1);
...»

Код:

...
  double c = static_cast<double>(1) / ( n + 1);
...

Код:

#include <iostream>
using namespace std;

int main () {
  double y = 0;
  int n = 0;
  int k;

  cout <<  " Vvedite chislo k = ";
  cin >> k;
  do{
      double c = static_cast<double>(1) / ( n + 1);
      cout << "Y = " << y << endl; // Информативный вывод...
      cout << "K = " << k << endl; // Информативный вывод...
      cout << endl;
      y += c;
      n++;
      if(y >= k){
        y -= c;
      }
    }
  while(y < k);

  system ("pause");
  return 0;
}

Правда цикл никогда не завершается

Profi_Boss 03-11-2010 00:10 1533503

непонятно:
double c = static_cast<double>(1) / ( n + 1);

static_cast<double>(1) -- что это значит конкретно, что мы сделали? 1 -- целое число, но само выражение "1 / ( n+1)" -- дробное же!? может просто взять его еще в одни скобки?


cout << "Y = " << y << endl; // Информативный вывод...
cout << "K = " << k << endl; // Информативный вывод... зачем все время выводить? почему не удобней как я написал выводить "y" только тогда, когда он достигнет макс. значения при < k.



if ( y >= k) {
y -= c;
cout << y << endl;
break; // наверно надо вставить его так, чтоб цикл всетаки завершился :)
}
вообщем так)

Mercenary13 03-11-2010 00:59 1533530

Совсем не срочно. Помогите с задачей по С++
 
Организовать цикл, который принимает целые числа с клавиатуры и суммирует каждое второе из них. Окончание цикла - ввод 0.

belk94 03-11-2010 01:33 1533542

Код:

int a, sum=0;
do
{
    scanf("%i",&a);
    if(a!=0)
    {
        scanf("%i",&a);
        sum+=a;
    }
} while(a!=0)


Mercenary13 03-11-2010 09:03 1533638

Большое спасибо, но на какой версии эта программа написана? Я пробую её проверить на 6 версии и мне выбивает ошибки. В чём у меня проблема?

Drongo 03-11-2010 13:09 1533818

Цитата:

Цитата Profi_Boss
static_cast<double>(1) -- что это значит конкретно, что мы сделали? »

Операция приведения к типу double.
Цитата:

Цитата Profi_Boss
1 -- целое число, но само выражение "1 / ( n+1)" -- дробное же!? »

Ну и что? Число-то целое.
Цитата:

Цитата Profi_Boss
зачем все время выводить? почему не удобней как я написал выводить "y" только тогда, когда он достигнет макс. значения при < k. »

Ну, это я на момент тестирования сделал, а вы уж сделайте как вам удобнее. :)

Drongo 03-11-2010 13:18 1533825

Код:

#include <iostream>
using namespace std;

int main ()
{
  int num, count = 0, summa = 0;

  cout <<  " Enter Number, [Stop - '0'] = ";
  cin >> num;
    while(num != 0){
      count++;
      if(count % 2 == 0)
        summa += num;
      cout <<  " Enter Number, [Stop - '0'] = ";
      cin >> num;
      }

  cout << "Result Summa = " << summa << endl;
  cin >> num;
  return 0;
}


Profi_Boss 03-11-2010 18:10 1534023

Drongo
понял, доисправил,все работает)

Profi_Boss 05-11-2010 00:22 1535030

Вывести ряд значений функции y = sin (x) в заданном пользователем диапазоне с заданным шагом.

как-то так, какие соображения у кого есть?

lxa85 05-11-2010 12:16 1535256

Цитата:

Цитата Profi_Boss
какие соображения у кого есть? »

Соображение одно, отправить тебя учить тригонометрию. Прости уж за прямоту и откровенность.

Любезный 05-11-2010 21:34 1535781

А что сложного? Запрашивай у пользователя начальное и конечное значение, шаг, а затем считай значения и выводи их.

Profi_Boss 06-11-2010 02:47 1535918

вауу, именно помогли ребята, могли бы хоть сказать, что надо хотя бы подключить библиотеку специальную math.h, для начала. обьяснили вкратце уже мне

lxa85 06-11-2010 08:26 1535954

Profi_Boss, опять таки, не сочти за грубость, но ты мог бы вразумительнее рассказать о проблеме.
А раз про проблемы реализации ты ничего не сказал, то и был отправлен учить основы. :read:
По запросу в гугл sin(x) C++ нашелся пост на другом форуме. Задача оказалась типовой.

Profi_Boss 13-11-2010 13:51 1541685

Задан массив целых чисел. Необходимо распечатать его элементы в порядке возрастания значений.

Можете написать код программы с обьяснением?

lxa85 13-11-2010 16:54 1541820

Profi_Boss, Любой Алгоритм_сортировки + вывод массива на экран.
Где-то была программа, где приводился код на Pascal, его пошаговое выполнение, тестовый массив. Для обучения была хорошо, но вот по руку не попалась.

DennyD 16-11-2010 19:09 1544164

Помогите с программой плиз)
задание на массивы а я в них не очень шарю((

Необходимо составить структурированную программу построения целочисленного вектора b1,b2,b3 ,где bi имеет значение I если наибольший элемент в строке с номером i вещественной матрицы {aij}(3 на 3) не больше х;и и значение W в противном случае.

если можно,с объяснением,заранее спасибо)

belk94 16-11-2010 23:23 1544365

DennyD,
Код:

for(int i=0;i<3;i++) //бежим по строкам с нулевой по вторую
{
    if(a[0][i] > x || a[1][i] > x || a[2][i] > x) //если максимальный элемент больше x
        b[i] = W; //b[i] принимает значение W
    else
        b[i] = I; //в противном случае b[i] принимает значение I
}

Создание и заполнение массива a, и создание массива b напишешь сам.

DennyD 17-11-2010 15:58 1544904

спасибо)

DennyD 23-11-2010 18:45 1549727

помогите с кодом пожалуйста!
//известно что у заданного вещественного вектора х1,х2,...х10 есть по крайней мере одна отрицательная компонента.Нужно составить программу определения колличества компонент предшевствующих первой по порядку отрицательной компоненте,!Значения которых принадлежат промежутку [0;0.5]!

все в принципе несложно но никак не могу понять как сделать выбор заначений из[0;0.5]


вот моя программа(просто считает колличество компанент перед первой отрицательной):

Код:

#include <iostream.h>
#include <conio.h>
#define n 10
void main()
{
  int k = 0, i;
  float x[n];

  cout<<"enter components please\n";
  for (i = 0; i < n; i++)
      cin>>x[i];
 
  for (i = 0; i < n; i++){
      k += i;
      if (x[i] < 0)
        break;
      else
        k = 0;
  }
  cout<<"k = "<<k;
  getch();
}


Hilaly 25-11-2010 11:50 1551194

Цитата:

Цитата belk94
#include <iostream.h>
#include <conio.h>
#define n 10
void main()
{
int k = 0, i;
float x[n];
cout<<"enter components please\n";
for (i = 0; i < n; i++)
cin>>x[i];
for (i = 0; i < n; i++){
k += i;
if (x[i] < 0)
break;
else
k = 0;
}

cout<<"k = "<<k;
getch();
} »

второй цикл надо оформить так:
for (i = 0; i < n; i++){
if (x[i] < 0)
break;
else
if (x[i]<0.5) k+=1; //сюда попадут только числа в пределах (0;0.5) т.к. отрицательные уже исключены предыдущим if
}

DennyD 25-11-2010 22:44 1551679

спсибо))все вообще сделал в 1 цикл))

Код:

for (i=0;i<n;i++)
{
if (x[i]<0)
break;
else if (x[i]<=0.5)
k+=1;
else
k=0;
}


Hilaly 26-11-2010 11:22 1551952

а если у вас вектор начинается так:
0.3 4 -2 ..
что выдаст ваша программа?) не надо обнулять k

DennyD 26-11-2010 13:11 1552047

да вы правы))спасибо большое за помощь)только не понимаю почему когда обнуляешь к он выдает колличество равное нулю при первом элементе массива из промежутка [0;0.5] а следущем целым((а не 1

Hilaly 26-11-2010 14:43 1552104

Ну как же?
В тексте программы написано что если некий элемент вектора не входит в заданный участок, то счетчик приравнять 0. а дальше он будет считать уже заново.

DennyD 26-11-2010 21:11 1552319

аа все понял спасибо огромное))

kkapel 26-11-2010 22:06 1552368

Нужно создать массив C из массивов A и B.Но только чтобы в массив C не попали элементы массива A,а только элементы массива B.Новый массив нужно упорядочить.Индексы массива вводим.Сами элементы рандомом создаются.Вот прога в сыром виде,ниче не пашет есс-но
PHP код:

#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include <math.h>
#include "Ctime"

using namespace std;
intdelMas(int mas[], int &nint ud_el); 

void main();
{
int n,m;
int A[100],B[100]
cout << "Enter n: ";
    
cin >> n;
    
cout << "Enter m: ";
    
cin >> m;

    if(
n>100||m>100||n<0||m<0)
        
cout<<"error!";
    
int *(A) = new int [n];
 for(
int i=0;i<n;i++)
 {
 
A[i]=rand()%100
}

    
int *(B) = new int [n];
 for(
int i=0;i<n;i++)
 {
 
B[i]=rand()%100
}

    
 
cout<<"mas A ";
 for(
int i=0;i<n;i++)
 {
     
cout<<A[i]<<" "<<endl; }

    
     
cout<<"mas B ";
 for(
int i=0;i<n;i++)
 {
     
cout<<B[i]<<" "<<endl;}

 for(
int i=0;i<m;i++)
    {
        
bool b=true;
        for(
int j=0;j<n;j++)
        {

            if(
B[i]==A[j])
            {
                
b=false;
                break;
            }
        }
        if(
== true
        {
            
C[k]=B[i];
            
k++;
        }
    }
    
bool t;
    do
    {
        
t=true;
        for(
int i=0;i<k-1;i++)
            if(
C[i]>C[i+1])
            {
                
int temp=C[i+1];
                
C[i+1]=C[i];
                
C[i]=temp;
                
t=false;
            }
    }while (!
t);
                


    for(
int i=0;i<k;i++)
        
cout<<"C["<<i<<"]= "<<C[i]<<endl;
    
    
getch();
return ;



Hector 26-11-2010 22:21 1552378

Цитата:

Цитата kkapel
Нужно создать массив C из массивов A и B.Но только чтобы в массив C не попали элементы массива A,а только элементы массива B. »

а зачем тогда массив А? упорядочить как? возрастание\убывание? достаточно отсортировать массив B или я чего-то не понял?

kkapel 26-11-2010 22:31 1552388

Hector,
Цитата:

На основе исходных массивов A[n] и B[m] (n и m – рабочие размеры массивов) сформировать массив C, который будет состоять из чисел, которые входят в массив B, но при этом не входят в массив A. Упорядочить массив С по возрастанию, используя метод «пузырька». Вывести элементы массивов A, B и С на экран. Массивы A, B и C являются целочисленными. Значения m и n вводятся пользователем с клавиатуры. Значения элементов массивов A и B генерируются при помощи датчика случайных чисел. Элементы внутри массивов A и B не должны повторяться.

Drongo 27-11-2010 01:19 1552464

Вижу такие ошибки:
1. Вызов стандартных заголовочных файлов как пользовательски h-файлов, через двойную кавычку, а не <iostream>, и т.д.
Код:

#include "stdafx.h"
#include "conio.h"
#include "iostream"
#include "Ctime"

2. Почему после функции точка с запятой?
Код:

...
void main();
...

3. Где здесь точка с запятой и инициализация масивов?
Код:

...
int A[100],B[100]
...

4.Каким методом вы создаёте масивы, динамические или постоянные? Как их создать правильно?
Код:

int *(A) = new int [n];
int *(B) = new int [n];

5. Где у вас создаётся массив С с размером равным массивам А и В? У вас его нет. Допишите.
Код:

    int *C = new int [n * m];
6. Откуда у нас взялась переменная k и что это за переменная? Почему она не объявлена и не инициализирована?
Код:

C[k]=B[i];
            k++;


kkapel 27-11-2010 13:10 1552670

Drongo,
мне бы надо постоянные массивы

kkapel 27-11-2010 13:35 1552683

У меня же нужен динамический массив,а я использую указатели,что делать?

Drongo 27-11-2010 16:09 1552782

Цитата:

Цитата kkapel
У меня же нужен динамический массив,а я использую указатели,что делать? »

Не понял вашего вопроса. Перефразируйте его.
Если это
Цитата:

Цитата kkapel
мне бы надо постоянные массивы »

то убрать создание динамических массивов и запрос ввода размера n и m.

Andir 29-11-2010 13:26 1554068

Код:

#include <iostream>

using namespace std;
int main(){
int n;
int g=0;
char asd[10000][10000];
cin>>n;
for (int i=0; i<n; i++){
        for (int j=0; j<n; j++){
    cin>>asd[i][j];
        }
}   
        for (int i=0; i<n; i++){
            for (int j=0; j<n; j++){
      if ((i+j)%2==0)
                        if (asd[i][j]<asd[i+1][j] && asd[i-1][j]<asd[i][j+1] && asd[i][j]<asd[i][j-1]         
          && asd[i][j]<asd[i+1][j+1] && asd[i][j]<asd[i-1][j-1] && asd[i][j]<asd[i+1][j-1]
          && asd[i][j]<asd[i-1][j+1] && asd[i][j]<asd[i+1][j])
                  g++;
    else if ((i+j)%2==1)
    if (asd[i][j]<asd[i-1][j] && asd[i][j]<asd[i-1][j+1] && asd[i][j]<asd[i+1][j] && asd[i][j]<asd[i+1][j+1] && asd[i][j]<asd[i][j+1])
  g++;
  else if ((i+j==n-1 || i+j==0))
  if (asd[i][j]<asd[i-1][j] && asd[i][j]<asd[i-1][j+1] && asd[i][j]<asd[i][j+1])
    g++;


            }
        }       
        cout<<g;
       
       
        return 0;
}


DennyD 30-11-2010 21:07 1555359

Вводится последовательность слов различной длины(не более 10 символов).Слова разделены пробелом.В конце последовательности стоит символ "точка".Необходимо составить структурированную программу для печати слов в 2 стлбца так чтобы в левом столбце печатались слова длиной<=5 символов а в правом больше 5.Помогите пожалуйста((

//по идее нужно объявить 2 массива,чтобы один заполнялся словами меньше 5 а другой больше 5...правда сложновато как то((

Drongo 01-12-2010 00:44 1555467

DennyD, Сначала вам нужно предложение разбить на лексемы(на отдельные слова) и поместить все слова в массив(WordArray), дальше проходя по этому массиву в цикле проверять функцией strlen длину слова и если меньше или равно пяти помещать в массив WordMinimum иначе в WordMaximum

DennyD 01-12-2010 10:14 1555627

То есть идя по первоначальной строке натыкаясь на символ пробел добавляем слово в массив(word array)?

DennyD 01-12-2010 11:07 1555676

можно поподробнее пожалуйста

Цитата:

Цитата Drongo
Сначала вам нужно предложение разбить на лексемы(на отдельные слова) и поместить все слова в массив(WordArray) »


Drongo 01-12-2010 16:57 1555951

DennyD, Ммм... К сожалению я не умею динамически создавать массив указателей на char. :( Смог сделать разбивку предложений по словам

Код:

#include <iostream>
using namespace std;
#include <cstring>

const int size = 510;
const int sizeLeksem = 250;  // размер массива лексем

int main()
{
  char tekst[size];
  const char *leksem[sizeLeksem]; // массив указателей на лексемы
  char *tokenPtr;  // переменная-указатель на лексемы
  int index,
      min = 0,
      max = 0,
      counterLeksem = 0;  // счётчик обработаных лексем в массиве указателей "*leksem"

  cout<<"  ENTER TEKST NE BOLSHE 510 SIMVOLOV\n";
  cin.getline(tekst, size, '\n');

  // Разбиваем полученый текст на слова и помещаем каждое слово в массив "leksem"
  tokenPtr = strtok(tekst, " ");    // найти первую лексему
  leksem[counterLeksem] = tokenPtr;  // присвоить первую лексему массиву указателей
  while(tokenPtr != NULL){  // пока указатель на лексему не равен NULL, продолжать
      leksem[counterLeksem] = tokenPtr;  // присвоить следующую лексему массиву указателей
      if(strlen(tokenPtr) <= 5) // Сколько найденых слов с буквами меньше 5
        min++;
      else  // Сколько найденых слов с буквами больше 5
        max++;
        ++counterLeksem;  // перейти к следующему индексу массива
        tokenPtr = strtok(NULL, " ");  // нахождение следующей лексемы
    }

  // Динамически создаём массив указателей на char
  // Раскидываем слова меньше пяти букву и больше пяти букв
  // По своим массивам.
  // вот тут у меня загвозка, не могу создать массив указателей
  char *wordMin = new char[min];
  char *wordMax = new char[max];

  min = 0;
  max = 0;

  for(int i = 0; i < counterLeksem; i++){
      if(strlen(leksem[i]) <= 5)
        wordMin[min++] = leksem[i];
      else
        wordMax[max++] = leksem[i];
    }

  for(int j = 0; j < min; j++)
      cout<<"Word Minimum 5 = "<<wordMin[j]<<endl;

  for(int a = 0; a < max; a++)
      cout<<"Word Maximum 5 = "<<wordMin[a]<<endl;

  cin>>min;

  return 0;
}


DennyD 02-12-2010 22:46 1557045

по идее легче делается возможно даже без указателей,подойду к преподу завтра может че подскажет дельное,ну спасибо во всяком случае))

Вот еще задачка не знаю как сделать((

задана некоторая запись длиной N в которой подряд несколько одинаковых символов.Составить программу вывода расположеных подряд символов и их колличества,т.е. ожидаемый результат:
ВВод:ааььттти
Вывод:а-2
ь-2
т-3

lxa85 03-12-2010 09:33 1557264

DennyD, просматривать строку, попутно считая кол-во повторов символа. Как только перестал повторяться, делаем соотв. вывод.

DennyD 05-12-2010 15:45 1558814

задана некоторая запись длиной N в которой подряд несколько одинаковых символов.Составить программу вывода расположеных подряд символов и их колличества.
Вот моя программа:
Код:

#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#define n 80
void main()
{
char S[n];
int i,k;
gets(S);
for (i=0;i<strlen(S)-1;i++)
if (S[i]==S[i+1])
{
k=1;
k=k+1;
cout<<S[i]<<"-"<<k<<"\n";
}
k=0;
getch();
}



что надо исправить чтобы считала более 2х символов расположеных подряд?
То есть при вводе "аассс" мне выдается результат а-2,с-2,с-2.

artiomdark 06-12-2010 18:24 1559691

Помогите решить задачи по С++
 
1)Дана строка символов найти количество пробелов
2)Дан двухмерный массив найти количество нулей

Hector 06-12-2010 18:35 1559700

Цитата:

Цитата artiomdark
Дана строка символов найти количество пробелов »

и в чем тут проблема?

artiomdark 06-12-2010 18:37 1559703

Проблема в том что я не могу это сделать...!!!

artiomdark 06-12-2010 18:53 1559718

Помоги чем сможешь завтра контрольный тест а я в Borland ++ нечего не знаю...!!

ganselo 06-12-2010 21:01 1559810

Цитата:

Цитата artiomdark
1)Дана строка символов найти количество пробелов »

Код:

#include <stdio.h>
#include <string.h>

int main()
{
  char str[1024];
  int    count = 0;

  gets(str);
  for(int i = 0; i < strlen(str); i++) {
      if(if(str[i] == ' ') count++;
  }
  printf("count = %i", count);
}

Цитата:

Цитата artiomdark
2)Дан двухмерный массив найти количество нулей »

Код:

#include <stdio.h>
#include <string.h>

int main()
{
  int A[10][10];
  int count = 0;
  srand(time(NULL));
  for(int i = 0; i < 10; i++)
      for(int j = 0; j < 10; j++)
          A[i][j] = rand()%2;
  for(int i = 0; i < 10; i++)
      for(int j = 0; j < 10; j++)
        if(A[i][j] == 0) count++;

  for(int i = 0; i < 10; i++)
  {
      for(int j = 0; j < 10; j++)
          printf("%i  ", A[i][j]);
      printf("\r\n");
 }
}


Цитата:

Цитата artiomdark
завтра контрольный тест а я в Borland ++ нечего не знаю...! »

просьбой решить за тебя ты себе не поможешь.

DennyD 08-12-2010 12:06 1560887

помогите пожалуйста написать функцию вычисляющую моду ряда(наиболее часто встречающийся элемент)

lxa85 08-12-2010 13:57 1560987

DennyD, что за ряд? Что является элементом ряда? Сколько видов элементов ряда (перечисляемые ли они)?

DennyD 08-12-2010 15:05 1561058

ну ряд это одномерный статический массив вещественных чисел

DennyD 08-12-2010 18:23 1561247

все уже сам допер))

Код:

int fmo(int x[n])
{
for (i=0;i<n;i++)
{
for (j=1;j<n;j++)
{
if (x[i]==x[j])
k++;
}
if (k>max)
{max=k;
mod=x[i];}
k=0;
}
return  mod;
}


ValeraRU 11-12-2010 21:18 1563528

Ребята помогите написать программу в турбо 3,0
Задание:
Вариант 5
Дана целочисленная квадратная матрица(есть у меня значения этой матрицы). Определить:
сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.

и нр2
Задание:
1. Описать структуру с именем АЕRОLOT, содержащую следующие поля:
· NAZN - название пункта назначения рейса;
· NUMR - номер рейса;
· ТIР - тип самолета.
2. Написать программу, выполняющую следующие действия:
· ввод с клавиатуры данных в массив АIРОRТ, состоящий из семи элемен*тов типа АЕRОFLОТ; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения;
· вывод на экран пунктов назначения и номеров рейсов, обслуживаемых са*молетом, тип которого введен с клавиатуры;
· если таких рейсов нет, выдать на дисплей соответствующее сообщение.


PS и еще нужно ввод из файла сделать,помогите,заранее благодарю !:)

lxa85 11-12-2010 21:36 1563549

ValeraRU, а где алгоритм действия, мысли, догадки, предложения? С нуля к зачетной сессии писать?
P.S. Спасибо не булькает.

ValeraRU 11-12-2010 21:51 1563567

Цитата:

Цитата lxa85
ValeraRU, а где алгоритм действия, мысли, догадки, предложения? С нуля к зачетной сессии писать?
P.S. Спасибо не булькает. »

есть догадки..
могу показать,там наверно надо будет переделывать уйму,так что лучше с 0
профессор попался плохой... вот и обращаюсь к вам за помощью!
методички и прочие мануалы не спасают!

lxa85 11-12-2010 22:48 1563614

ValeraRU,
> профессор попался плохой... вот и обращаюсь к вам за помощью! методички и прочие мануалы не спасают!
Понимаешь, это слабая "отмазка". Дело даже не в профессоре и не в методическом материале.
Все дело в понимании. Либо ты понимаешь, как задача должна выполняться либо нет.
Если понимаешь, то описывай алгоритм словами. Подробно, по шагам, можно своими. Но так, что бы было понятно школьнику не знакомому с тайнами программирования. Пиши просто без высших материй.
Когда ты сам будешь понимать какой шаг/действие зачем нужно, то мы уже напишем по ним программный код. А затем подпишем как какой шаг как реализован.
Цитата:

Цитата ValeraRU
могу показать,там наверно надо будет переделывать уйму »

Показывай. Писать с нуля лень до жути. Заодно будет понятен уровень требований. Т.к. усложнить решение - не проблема. Проблема будет тебе потом объяснить "как это работает?"
Поэтому мы переводим в программный код только собственные мысли вопрошающего.

ValeraRU 12-12-2010 15:39 1564048

Цитата:

Цитата lxa85
ValeraRU,
> профессор попался плохой... вот и обращаюсь к вам за помощью! методички и прочие мануалы не спасают!
Понимаешь, это слабая "отмазка". Дело даже не в профессоре и не в методическом материале. »

мне пригласить на форум всю группу ? =(
я пришел в универ с огромным желанием.. но подход учителя огорчает,в любом случае не суть

значит:
Цитата:

Цитата lxa85
Показывай. Писать с нуля лень до жути. Заодно будет понятен уровень требований. Т.к. усложнить решение - не проблема. Проблема будет тебе потом объяснить "как это работает?"
Поэтому мы переводим в программный код только собственные мысли вопрошающего. »

по поводу 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 или что то другое,чтобы не засорять форум ?

lxa85 12-12-2010 16:20 1564081

Цитата:

Цитата ValeraRU
мне пригласить на форум всю группу ? =( »

ты хочешь нам доплачивать? :)
Цитата:

Цитата ValeraRU
но подход учителя огорчает »

*Преподавателя. У них с учителем чуть разные функции. ;)
Цитата:

Цитата ValeraRU
не могли бы вы дать ваш номер 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 1573975

Здравствуйте.
Мне нужна помощь в решении задачи на С++.
Суть задачи : В файле храниться значения некоторой структурной переменной.
Нужно считать ее в список и отсортировать.
Дано что то такое :
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 1583511

Здравствуйте, есть задача, непонятен сам алгоритм реализации.

Найти два элемента целочисленного массива, разность которых дает значение наиболее близкое к среднему арифметическому всех элементов массива.

Ввести массив ясно как...среднее арифметическое тоже, а вот как найти эти два искомых два числа непонятно что-то ..=\

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

belk94 08-01-2011 09:44 1583575

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 1590160

Вложений: 1
Всем доброго времени суток!!!

Нужна помощь в решении задачи по созданию консольного калькулятора, т.е. мы вводим с клавиатуры выражение со скобками, +, -, *, /, sin, cos, tan, степень. и он считает это выражение. За основу я взял пример из Шилдта, там рекурсивный подход. Я разобрался полностью с кодом, но никак не могу в него добавить распознование тригонометрических функций... Я представляю, что при виде символов cos, sin, tan он их должен обрабатывать как унарные операции, что это как еще одна функция должна быть включена в рекурсию, но никак не могу реализовать...

Подскажите пожалуйста, очень нужно до среды...

P.S. И еще, в исходниках, в функции get_token() я не могу понять, где идет в процессе построения лексемы идет запись в переменную token...

Profi_Boss 20-01-2011 16:51 1593215

belk94 спасибо, разобрался! =)

Profi_Boss 06-02-2011 15:25 1605983

В одномерном массиве целых чисел расставить четные числа по возрастанию значений, а затем нечетные по убыванию.


Код:

#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 можно что-то сделать? и вообще правильно ли я делаю саму программу, т.к. она у меня получилась сильно сложной, я думаю есть какие-то варианты по-проще...

aliero 20-02-2011 18:53 1617810

Добрый Вечер У меня такой вопрос....
Допустим есть Файл , Я хочу полностью заменить строку в нем (номер строки я знаю) как можно это сделать без лишнего кода(то беш компактно) в visual c++
Так как не писал проги для файловой системы не знаю что делать помогите пожалуйста))
Заранее говорю нужно сделать строку ввида SetSave net_name (переменная типа string хотя можно и char)
номер строки кстати 300
Буду очень признателен)))

andrei88 25-02-2011 19:57 1621789

Добрый вечер!
Есть строка
Код:

char str[] = "a\x11";
При этом printf выводит: a�

Если я пытаюсь сделать так: gets(str); и ввожу a\x11
При этом printf выводит: a\x11


Как в переменную ввести тоже самое с клавиатуры, что бы вывод что и в первом варианте?

Beyound 25-02-2011 20:21 1621804

andrei88 - у тебя \x11 это ascii код символа, а когда ты с клавы вводишь \x11 ты вводишь не один - а целых 4-е символа каждый который имеет аски код. Просто в си придумали такую фишку - \ - чтобы можно было определить - это ты хочешь какойто служебный символ ввести или просто символ с клавы. А вообще - жмешь alt + dec-код символа и вуаля. Пуск-программы-служебные-таблица символов поможет тоже

andrei88 25-02-2011 20:37 1621810

Beyound
Как тогда сделать, что б вводишь \x11 преобразовался в один символ?

DennyD 02-03-2011 21:25 1625787

Привет всем а можете объяснить алгоритм сортировки пузырьковым методом.В моей задаче надо разсортировать список людей по фамилиям по алфавиту.

lxa85 02-03-2011 21:48 1625805

Цитата:

Цитата DennyD
можете объяснить алгоритм сортировки пузырьковым методом. »

А Yandex, Google и Wikipedia не спасают? Это классический механизм, описанный тысячи раз. Тысячу первое описание будет так себе.
Цитата:

Цитата DennyD
В моей задаче надо рассортировать список людей по фамилиям по алфавиту. »

Чисто интуитивно задача ясна. Вопрос как ее надо реализовать? (Примеров реализации так же на любой вкус и цвет)
И на этот вопрос отвечать вам! Мы в лучшем случае поможем с деталями задачи, когда будет задан конкретный вопрос.

Drongo 03-03-2011 13:14 1626240

DennyD, Пузырьком

DennyD 04-03-2011 01:40 1626857

хм можете прислать код или объяснить...у меня в задаче надо создать таблицу из имени фамилии отчества года рождения людей,заполнить ее и потом разсортировать людей по фамилиям в алфавитном порядке,я создал класс и массив объектов этого класса в простом заполнении проблем нет а вот как сортировать не пойму,можете написать функцию?

Hilaly 05-03-2011 10:00 1627646

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;
}

Titanium 21-03-2011 22:42 1640521

Помогите, пожалуйста сделать задачу. Найти все натуральные числа не превосходящие заданного n , десятичная запись которых есть строго возрастающая или строго убывающая последовательность цифр.

lxa85 21-03-2011 22:57 1640528

Titanium, давай по порядку:
Простые вопросы, обязательные к ответу:
Что такое "натуральное число" и чем оно отличается от ненатурального?
Как "разбить" число на цифры? Что такое разряд числа, скольки разрядная система применяется в нашей повседневной жизни, как цифру одного разряда преобразовать в цифру другого разряда?
Что такое "строго возрастающая/убывающая последовательность"? Какие к ней предъявляются требования? Чем они отличаются от "не строгих" последовательностей и от "не последовательностей" вообще?
Как, в каком порядке, по какому закону надо "перебирать" натуральные числа не превосходящие n?

Сложные вопросы, желательны к ответу:
Какие парадигмы программирования необходимо использовать?
Линейное программирование, программирование с использованием циклов, использование процедур и функций, объекты (О.О)?

Titanium 22-03-2011 21:00 1641371

натуральные числа это числа воникающие при счете. ненатуральные это числа дробные и отрицательные. Разряд числа это как бы место цифры в числе. В наше время применяются 32р и 64р. Строго возрастающая последовательность это последовательность, элементы которой с увеличением номера не убывают или не возрастают.
Что еще не изучал не могу ответить.
Программу надо написать на с++ в borland

lxa85 23-03-2011 00:54 1641542

Titanium, Ответы желательно приводить построчно, так их легче читать. Желательно приводить несколько примеров.

Натуральные числа говоришь... Число 0 натуральное?
Ладно, с разрядностью систем вопрос был несколько некорректен, спрошу так. Какое число лежит в основе современной системы счисления, применяемой в обыденной жизни человека?
С как бы позицией цифры в числе понятно, на всякий случай - "Позиционные системы счисления".
Как преобразовать или перенести цифру из разряда в разряд? Как объяснить ребенку разложение числа 6238 в разряды? Есть для этого какой-нибудь относительно универсальный алгоритм?
О последовательностях. Чем "строго возрастающая" последовательность отличается от просто "возрастающей"?
К чему следует отнести последовательности 1122, 1259, 5555?
Цитата:

Цитата Titanium
Строго возрастающая последовательность это последовательность, элементы которой с увеличением номера не убывают или не возрастают. »

Так в "строго возрастающей" не убывают или не возрастают? :)
Способ перебора чисел заданного диапазона остался без ответа.

Titanium 23-03-2011 01:14 1641549

На эти вопросы я ответы не знаю. Я в колледже учусь на втором курсе. Обратился за помощью, потому что препод ничему не научил, а спрашивать будет сделанную программу. Если не сможет никто помочь так и напишите.

lxa85 23-03-2011 01:25 1641550

Ох ты ж господи... это математика за 5ый класс. Уйди позорище! В колледже на втором курсе. Ты как туда вообще поступить то сумел?
Давай так. Я этого ответа не видел. А ты сейчас садишься, выключаешь компьютер и думаешь, хорошо думаешь. Можешь даже лечь спать и утром еще раз подумать. Выписываешь все ответы на листочек, читаешь и проверяешь ответы дважды. А завтра напишешь их здесь. А я почитаю. А там посмотрим как фишка с настроением ляжет.

Titanium 23-03-2011 01:57 1641559

Это обязательно нужно? Это математика за 5 класс????? Одну последовательность в 9 начинают изучать.

А вы, что преподаватель?

Titanium 23-03-2011 02:41 1641567

насчет последовательностей: возрастающая эта такая последовательность, в которой каждый следующий элемент превышает предыдущий, убывающей, если каждый элемент этой последовательности превышает следующий за ним.
0 не натуральное число.
ребенку можно объяснить примерно так, я думаю, 6000+200+30+8
1122 и 1259 - возрастающие. А 5555 - не возрастает и не убывает, потому что состоит из одного числа

lxa85 24-03-2011 13:46 1642803

Цитата:

Цитата Titanium
А вы, что преподаватель? »

Ага.
Хочешь, я покажу тебе магию? :) Это не обычная магия, смотри.
Цитата:

Цитата Titanium
возрастающая эта такая последовательность, в которой каждый следующий элемент превышает предыдущий ...
1122 и 1259 - возрастающие »

по определению возрастающей последовательности следует заключить, что условия распространяются как на всю последовательность, так и на любую из ее частей. Потому что "каждый следующий".
значит возрастающая последовательность 1122, будет также возрастающей при 11122 и при 1111111222 и даже при 1111222244445555 и т.д.
принимая во внимание выше названный вывод, следует положить, что составные части 111122, 2233, 334444 и 5555 также являются возрастающими последовательностями.
Аналогично можно доказать, что составные части убывающей последовательности 5544332211, а именно 554, 433, 2211 также являются убывающими. Еще раз расширив последовательность и взяв составную часть, получится, что 5555 является убывающей последовательностью, т.к. входит в общую убывающую последовательность 555554444333221.

Доказано, что 5555 являясь возрастающей последовательностью, при этом являясь составной частью убывающей!
Странно, ничего не перепутал. Titanium, подскажи, в чем ошибка?

Titanium 24-03-2011 16:51 1642942

ну так мне кто-нибудь подскажет с программой или нет?

lxa85 24-03-2011 17:47 1642997

Titanium, сложно подсказывать, если ты, именно ты, человек который просит помощи, не понимаешь что ты просишь. Ты отказываешься, как я понял, понимать принципы решения задачи. Через призму программного кода понять, почему делается так а не иначе, сложнее вдвойне. Кроме того, я задаю вопросы не просто так, а для пользы дела. Для того чтобы твои мысли облачить в код, а не чужие.
Кроме определения натуральных чисел и псевдо "строгой возрастающей/убывающей последовательности цифр в числе" ты не дал.
В чем тогда необходима помощь?

P.S. Приложи хоть маленько усилий, ответь на поставленные вопросы! Здесь никто не отказывается тебе помочь, наоборот, все только за. Ты пока (без обид) палец о палец не ударил, постарайся хоть чуть-чуть. Это окупиться сторицей.

Titanium 24-03-2011 21:45 1643199

Ну если я не знаю откуда я возьму ответы на поставленные вопросы. В программе мне не понятно как преобразовать последовательность в исходный код. Со всем остальным я разберусь самостоятельно.

lxa85 25-03-2011 16:32 1643741

Цитата:

Цитата Titanium
Ну если я не знаю »

человек не обязан знать все. Поступая куда-либо учится, де факто человек не знает всей программы обучения. Чтобы научиться, человек обязан думать! Рассуждать, сопоставлять, анализировать и делать выводы. Соотв. я всем силами подталкиваю тебя к этому.
Цитата:

Цитата Titanium
В программе мне не понятно как преобразовать последовательность в исходный код. »

Перефразируй пожалуйста или задай вопрос еще раз, только в развернутой форме. Что куда преобразовать??
Так и быть, вечером накидаю черновик, разбирайся на здоровье.

Titanium 25-03-2011 18:08 1643792

какая формула этой последовательности? И какие там использовать переменные?

Hilaly 28-03-2011 10:26 1645428

Возрастающая последовательность - когда каждый следующий элемент не менее чем предыдущий, строго возрастающая - более предыдущего.

Задача элементарная, т.к. вам надо найти натуральные числа, а все они являются целыми и положительными, используйте переменные типа unsigned integer.
Алгоритм простейший:
задаете цикл от 1 до вашего числа и проверяете для каждого значения удовлетворяет ли оно условию.
положим у вас задано некое N, тогда.
for(UINT i=1; i<N;i++)
{
if( SV(i) || SU(i) )
printf("%d\n",i);
};
здесь SV и SU - функции вычисляющие является ли запись числа строго возрастающей или строго убывающей последовательностью.
вся сложность реализовать 2 функции, возвращающие true если число является соответственно возрастающей или убывающей последовательностью и объявленные следующим образом:
bool SV(unsigned integer N);
bool SU(unsigned integer N);
Для их реализации вам необходимо знать позиционные системы счисления.

Ну а чтобы преобразовать последовательность цифр записи числа в позиционной системе счисления в само число надо найти сумму произведений эих цифр на степени основания системы счисления.
последовательность A B C преобразуется в число по формуле A*N^2+B*N^1+C*N^0, где N - основание системы счисления.
Обратная процедура выполняется по той же формуле.

Morgen 09-04-2011 21:41 1654854

Помогите пожалуйста ошибку исправить.
Код программы с данного форума.

Код:

include <iostream>
using namespace std;
#include <stdlib.h>
#include <math.h>
//Вывод отладочных сообщений
#define debug
class CMatrixException{
        char ne;// ne='a' Не возможно выделить память.
                        // ne='+' Сложение не возможно
                        // ne='-' Вычитание не возможно
                        // ne='*' Уможение не возможно
                        // ne='/' Division isn't possble
                        // ne='d' Конвертация в тип double не возможна
                        // ne='=' Невозможно прировнять матрицу
                        // ne='0' Zero division matrix/double
                        // ne='i' Index out of range
public:
        CMatrixException(char c){ne=c;}
        void PrintMessage(){
                cout<<"\tERROR! >>> ";
                switch(ne){
                case 'a':cout<<"Can't allocate memory"<<endl;break;
                case '+':cout<<"Addition isn't possible"<<endl;break;
                case '-':cout<<"Substruction isn't possible"<<endl;break;
                case '*':cout<<"Multiplication isn't possible"<<endl;break;
                case '/':cout<<"Division isn't possble"<<endl;break;
                case 'd':cout<<"Conversion to double isn't possible"<<endl;break;
                case '=':cout<<"Can't give to matrix"<<endl;break;
                case '0':cout<<"Zero division matrix/double"<<endl;break;
                case 'i':cout<<"Index out of range"<<endl;break;
                case 'T':cout<<"Transporent isn't possible"<<endl;break;
                case 'I':cout<<"Invertation isn't possible"<<endl;break;
                default        :cout<<"Unknown error"<<endl;
                }
        }
};
class Matrix {
private:
        int rows, cols;
       
public:
        double* p;
        //Конструктор
        Matrix(int, int);
        Matrix(int, int,double,...);
        Matrix(int, int,  int,...);
        Matrix(double);
                        // Функция создает матрицу размеров 1 Х 1, m(0,0)=i
        Matrix(int);
                        // Функция создает матрицу размеров 1 Х 1, m(0,0)=i
        Matrix(Matrix const &);
        //Деструктор
        ~Matrix(){if(p!=NULL)delete[]p;}
        //
        Matrix const& operator=(Matrix const&);
        //Конвертация в тип double
        operator double()const;
        //Опрация сложения
        friend double operator+(double,Matrix const&);
        double operator+(double d){return d+*this;}
        double operator+(  int i){return double(i)+*this;}
        friend double operator+( int i,Matrix const&m){return double(i)+m;}
        Matrix Matrix::operator +(const Matrix &) const;
        Matrix const& operator+()const{return*this;}//unary +
        Matrix& operator+=(Matrix const&a){*this=*this+a;return*this;}

        //Опирация вычитания
        friend double operator-(double,Matrix const&);
        double operator-(double d)const{return -(d-*this);}
        double operator-(  int i)const{return *this-double(i);}
        friend double operator-(int i,Matrix const&m){return -(m-i);}
        Matrix  operator-(Matrix const&)const;//binary -
        Matrix& operator-=(Matrix const&a){*this=*this-a;return*this;}
        Matrix  operator-()const;//unary -
        //Опирация умножения
        Matrix& Matrix::operator*=(Matrix const&a){*this=(*this)*a;return*this;}
        Matrix  operator*(double)const;
        friend Matrix operator*(double d,Matrix const&a){return a*d;}
        Matrix& operator*=(double d){*this=*this*d;return*this;}
        Matrix operator*(Matrix const&)const;
        //Division operators
        Matrix  operator/(double d)const{
                if(d==0)throw CMatrixException('d');
                return (1./d)*(*this);
        }
        Matrix& operator/=(double d){*this=*this/d;return*this;}
        //Transposition operator
        Matrix  operator*()const;
//        friend Matrix T(Matrix const&a){return *a;}
        //Доступ к элементам матрицы
        double& Matrix::operator()(int i, int j)const;
        //Транспонирование матрицы
        Matrix T(Matrix const&a)const;
        //Обращение матрицы
        Matrix Inv(Matrix const&a)const;
        //Вывод матрицы на экран
        void Print()const;
        //Возврат кол-ва столбцов и строк матрицы
        int GetRows()const{return rows;}
        int GetCols()const{return cols;}
};
void Print(Matrix const&);

Matrix::Matrix(int m,int n,double d,...) {
        rows = m;  cols = n;
        double*s=&d;
        p=new double[rows*cols];
        if(p==NULL){
                throw CMatrixException('a');
        }
        for (int i=0;i<rows*cols;i++,++s)p[i]=*s;
}
Matrix::Matrix(int m,int n,  int d,...) {
        rows = m;  cols = n;
        int*s=&d;
        p=new double[rows*cols];
        if(p==NULL){
                throw CMatrixException('a');
        }
        for (int i=0;i<rows*cols;i++,++s)p[i]=*s;
}
Matrix::Matrix(Matrix const & a) {
        rows = a.rows;
        cols = a.cols;
        p=new double[rows*cols];
        if(p==NULL){
                throw CMatrixException('a');
        }
        for (int i=0;i<rows*cols;i++)p[i]=a.p[i];
}
Matrix::Matrix(int m, int n){
        rows = m;
        cols = n;
        p=new double[rows*cols];
        if(p==NULL){
                throw CMatrixException('a');
        }
}
Matrix::Matrix(int i){
        rows = 1;
        cols = 1;
        p=new double[1];
        if(p==NULL){
                throw CMatrixException('a');
        }
        p[0]=i;
}
Matrix::Matrix(double d){
        rows = 1;
        cols = 1;
        p=new double[1];
        if(p==NULL){
                throw CMatrixException('a');
        }
        p[0]=d;
}
Matrix const& Matrix::operator=(Matrix const & a){
        if(rows!=a.rows||cols!=a.cols){
                throw CMatrixException('=');
        }
        for (int i=0;i<rows*cols;i++)p[i]=a.p[i];
        return*this;
}
Matrix::operator double()const{
        if(rows!=1||cols!=1){
                throw CMatrixException('d');
        }
        return (*this)(0,0);
}

double operator+(double d,Matrix const&m){
        if(m.rows!=1||m.cols!=1){
                throw CMatrixException('+');
        }
        return d+m(0,0);
}
Matrix Matrix::operator+(Matrix const&a)const{
        if(rows!=a.rows||cols!=a.cols){
                throw CMatrixException('+');
        }
        Matrix c(*this);
        for(int i=0;i<rows*cols;i++)c.p[i]+=a.p[i];
        return c;
}
Matrix Matrix::operator-()const{
        Matrix a(rows,cols);
        for(int i=0;i<rows*cols;i++)a.p[i]=-p[i];
        return a;
}
double operator-(double d,Matrix const&m){
        if(m.rows!=1||m.cols!=1){
                throw CMatrixException('-');
        }
        return d-m(0,0);
}
Matrix Matrix::operator-(Matrix const&a)const{
        if(rows!=a.rows||cols!=a.cols){
                throw CMatrixException('-');
        }
        Matrix c(*this);
        for(int i=0;i<rows*cols;i++)c.p[i]-=a.p[i];
        return c;
}
Matrix Matrix::operator*(Matrix const& a)const{
        if(cols!=a.rows){
                throw CMatrixException('*');
        }
        Matrix c(rows,a.cols);
        int i=0,j,k;
    for(;i<rows;++i){
        for(j=0;j<a.cols;++j){
                        c(i,j)=0;
            for(k=0;k<cols;++k)c(i,j)+=(*this)(i,k)*a(k,j);
        }
        }
        return c;
}
Matrix Matrix::operator*(double d)const{
        Matrix c(*this);     
        for(int i=0;i<rows*cols;i++)c.p[i]*=d;
        return c;
}

double& Matrix::operator()(int i, int j)const{
        if(i>=rows || j>=cols || i<0 || j<0){
                throw CMatrixException('i');
        }
        return p[i*cols+j];
}
void Print(Matrix const& m){m.Print();}
Matrix Matrix::operator*()const{
    Matrix a(cols,rows);
    int i=0,j;
    for(;i<rows;++i)
    for(j=0;j<cols;++j)a(j,i)=(*this)(i,j);
    return a;
}
void Matrix::Print()const{
        int i=0,j;   
        cout<<endl << "Matrix>\t  ";
        for (;i<rows;i++){ ;
                for (j=0;j<cols;++j)cout<<(*this)(i,j)<<" ";
                        cout<<endl <<"\t  ";
        }
        cout<<endl;
}

Matrix Matrix::T(Matrix const&a)const{
        if(a.rows!=a.cols){
                throw CMatrixException('T');
        }
        Matrix c(*this);
        for(int i=0;i<rows;i++)
                for(int j=0;j<cols;j++) c(i,j)=a(j,i);
       
        return c;
}

int matr_inv_gause(double *a, int n)
{
  double e1, d, *b, *c, y, w, p; ;
  int i, j, k, *z;

  e1=1.e-6;
  d=1;

  z= new int[n];
  c= new double[n];
  b= new double[n];


  for(i=0; i<n; i++)
    *(z+i)=i;

  for(i=0; i<n; i++)
  {
    k=i;
    y=*(a+i*n+i);
    if(i+1 <= n )
      for(j=1+i; j<n; j++)
      {
        w=*(a+n*i+j);
        if(fabs(w)>fabs(y))
        {
          k=j;
          y=w;
        }
      }
    d=d*y;
//проверка на близость к вырождению матрицы 
  if(fabs(y)<e1) return 2;
  y=1./y;
  for(j=0; j<n; j++)
    {
      *(c+j)=*(a+n*j+k);
      *(a+n*j+k)=*(a+n*j+i);
      *(a+j*n+i)=-(*(c+j))*y;
      *(b+j)=*(a+i*n+j)*y;
      *(a+i*n+j)=*(b+j);
    }
  j=*(z+i);
  *(z+i)=*(z+k);
  *(z+k)=j;
  *(a+i*n+i)=y;

  for(k=0; k<n; k++)
    if(k != i)
      for(j=0; j<n; j++)
        if(j != i)
        *(a+k*n+j)=*(a+k*n+j)-(*(b+j))*(*(c+k));
  }
  for(i=0; i<n; i++)
    while(1)
    {
      k=*(z+i);
      if(k == i) break;
      for(j=0; j<n; j++)
        {
        w=*(a+i*n+j);
        *(a+i*n+j)=*(a+k*n+j);
        *(a+k*n+j)=w;
        }
      p=*(z+i);
      *(z+i)=*(z+k);
      *(z+k)=(int)p;
      d=-d;
    }

 delete[] z;
 delete[] b;

 delete[] c;

 return 0;
}

Matrix Matrix::Inv(Matrix const&a)const{
        if(a.rows!=a.cols){
                throw CMatrixException('I');
        }
        if(matr_inv_gause(a.p,rows)!=0){
                throw CMatrixException('I');
        }
        return a;
}


//Главная функция программы
void main(){

        try{

                int N,M;

                // Ввод размера матрицы А(N*M)
                cout << "----[Matrix A(N,M)]----\n\n";
                cout << "Enter size\n N> ";
                cin >> N;                                               
                cout << " M> ";
                cin >> M;               

                Matrix A(N,M);  //Создаем матрицу A размером N*M

                //Ввод содержимого матрицы (через пробел или Enter)
                cout << "Enter matrix elements:\n";
                int i;
                for(i=0; i<N*M; i++){
                                cin >> A.p[i];
                }

                A.Print();//печаем матрицу А
                cout << "-----------------------\n\n\n";

                // Ввод размера матрицы B(N*M)
                cout << "----[Matrix B(N,M)]----\n\n";
                cout << "Enter size\n N> ";
                cin >> N;                                               
                cout << " M> ";
                cin >> M;                       

                Matrix B(N,M);        //Создаем матрицу В размером N*M

                cout << "Enter operant elements:\n";
                for(i=0; i<N*M; i++){
                                cin >> B.p[i];
                }

                Print(B);//печаем матрицу В
                cout << "-----------------------\n\n";
               
       
                int ch=0;
                while(ch!=9){        //Выбор операций над матрицами
                cout << "################################\n";
                cout << "#  Chouce operation:";
                cout << endl << "#  1. A+B";
                cout << endl << "#  2. A-B";
                cout << endl << "#  3. A*B";
                cout << endl << "#  4. Transponent A";
                cout << endl << "#  5. Invert A";
                cout << endl << "#  9. EXIT" << endl  << "#  >";        //Выход из программы
                cin >> ch;

                if(ch==1) Print(A+B);                //Сложение
                if(ch==2) Print(A-B);                //Вычитание
                if(ch==3) Print(A*B);                //Умножение
                if(ch==4) Print(A.T(A));        //Транспонирование
                if(ch==5) Print(A.Inv(A));        //Обращение
                }

        }

        catch(CMatrixException Me){
                Me.PrintMessage();
        }

}

выдает ошибки
Код:

1>c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(65) : error C2666: Matrix::operator +: для 6 перегрузок есть подобные преобразования
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(63): может быть 'Matrix Matrix::operator +(const Matrix &) const'
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(61): или      'double Matrix::operator +(int)'
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(60): или      'double Matrix::operator +(double)'
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(62): или      'double operator +(int,const Matrix &)' [найдено при поиске с зависимостью от аргументов]
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(59): или      'double operator +(double,const Matrix &)' [найдено при поиске с зависимостью от аргументов]
1>        или      'встроенный оператор C+++(double, double)'
1>        при попытке сопоставить список аргументов '(Matrix, const Matrix)'
1>        примечание: неоднозначность может быть вызвана корректировкой квалификации (const/volatile)
1>c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(404) : error C2666: Matrix::operator +: для 6 перегрузок есть подобные преобразования
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(63): может быть 'Matrix Matrix::operator +(const Matrix &) const'
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(61): или      'double Matrix::operator +(int)'
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(60): или      'double Matrix::operator +(double)'
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(59): или      'double operator +(double,const Matrix &)' [найдено при поиске с зависимостью от аргументов]
1>        c:\users\morgenglow\documents\visual studio 2008\projects\seco\seco\se.cpp(62): или      'double operator +(int,const Matrix &)' [найдено при поиске с зависимостью от аргументов]
1>        или      'встроенный оператор C+++(double, double)'
1>        при попытке сопоставить список аргументов '(Matrix, Matrix)'
1>        примечание: неоднозначность может быть вызвана корректировкой квалификации (const/volatile)


Hilaly 13-04-2011 12:14 1657220

Существует неоднозначность операторов в 2-х местах,
в строке
Matrix& operator+=(Matrix const&a){*this=*this+a;return*this;}
и в строке
if(ch==1) Print(A+B);//Сложение

Это связано с тем, что, дейтсвительно, у вас объявлено множество операторов +, хотя и с различными параметрами, но так же у вас объявлена ф-я конвертации в тип double, таким образом компилятор остается в недоумении применять оператор сложения к матрице или преобразовать ее к типу double и затем применить этот оператор.
само же приведение к типу double у вас возврат элемента 0,0 или выброс исключения.
Мне кажется что от этого приведения можно отказаться, а для сохранения функциональности определить ф-ю, скажем так:
double Matrix::ToDouble()
{
if(rows!=1||cols!=1){
throw CMatrixException('d');
}
return (*this)(0,0);
};
Если я не прав, поправте, пожалуйста.

DennyD 13-04-2011 14:58 1657337

помогите пожалуйста решить задачу.

составить программу обработки картотеки содержащей сведения о студентах группы:
фамилия
имя
отчество
средний балл
стипендия
Для представления картотеки в ОП ПЭВМ воспользоваться структурой данных-циклический двунаправленный список(ЦДС)
В программе предусмотреть:
Поиск элемента ЦДС по ключу
Вставку элемента в ЦДС
Удаление элемента из ЦДС
Вывод картотеки на экран


буду очень признателен за помощь)

momo2000 15-04-2011 15:52 1659074

Необходима помощь в С++, программировать ничего не надо.
У меня есть курсач с инета, а я только начинаю вникать в суть дела.
Не могли бы вы расписать как можно подробнее, что к чему на первых 6 страницах (там много повторяющихся действий), весь код привёл, т.к. вдруг понадобиться для общего понимания.
http://rghost.ru/5198051

На ru-board тоже попросил, так что не сочтите за наглость

lxa85 15-04-2011 16:19 1659092

DennyD, структуры данных проходили? Берешь структуру, вписываешь в нее все что необходимо, не забываешь про двунаправленный список.
Отдельные поля для управления списком (удаление, создание и т.п.) если сразу все мысленно охватить сложно, рисуй схемки на черновиках, это не зазорно.
Структура есть, инструментарий для работы со структурой есть, дальше организуешь выборку по требуемым значениям и дело в шляпе.
Тут ничего сложного, просто надо внимательно прописать все варианты работы с типизированными данными.
cbv, ткну пальцем в небо. Может быть кириллическая кодировка двухбайтовая? А массив однобайтовый? Кроме того не ясно, где заканчивается цикл, какой тип имеют переменные, что помещается в них в правильном и "неправильном" случаях.
momo2000, а тематику то можно было и рассказать.
Перевод С++ кода в ассемблер.
Код:

int main()
{
//Загрузка ключевых слов.
//Начало чтения входного файла.
//Начало создания лексем
//Начало генерации кода
}

Все прозрачно. Твоя задача посмотреть логику работы формирования лексем. Узнать вообще, что такое лексема, какие варианты анализа и разбора текстов есть.
Т.к. кроме перевода, идет структурный анализ текста. Соотв. формируются ошибки о пропущенных аргументах например.
Когда структура сформирована, идет банально формирование ассемблерного кода вставками и подстановками.

cbv 15-04-2011 20:36 1659233

lxa85, извиняюсь, я думал проблема в ShellExecute. Оказалось, что дело было в консоли, которая передает в string текст в другой кодировке. Необходимо было воспользоваться функцией OemToChar.

lxa85 15-04-2011 20:46 1659237

cbv, за что извиняться? :) Разобрался сам, молодец! И я тому очень рад, честно. Узнал про кодировки, про особенности работы с ними, все прекрасно. Так это ты меня извини, твои извинения я не принимаю! :)

momo2000 17-04-2011 12:26 1660182

lxa85, выручайте, горю, мне уже ко вторнику надо сдать.
Так то в общем я знаю о чём речь идёт, но препод тычет в любой символ и грит объсни зачем и почему, а я не бум-бум.
Сказал глянуть в режиме отладки, чтоли, в общем по шагам посмотреть что происходит в проге и подписать.
Может всё же подпишите какие то ключевые позиции, например, чтение лексем, загрузка ключевых слов и т.д. Хоть по минимуму на первых страницах? Очень прошу.

P.S. Сам только стал читать введение по С++)

otkryto 01-05-2011 20:26 1668599

Здравствуйте!
Подскажите пожалуйста где ошибка
И по возможности, как исправить

Код:

#include <iostream>
 using namespace std;
 class strana {
public:
 char *name;
 char *form;
 float area;

strana()
{ name = "NOTSET"; form= "NOTSET"; area = -1;}
 ~strana(){}
};
void read_class(strana a);
 int main()
{ strana str_1;
 read_class(str_1);
 int i ; cin>> i;
 return 0; }
 void read_class(strana a)
{
strana *ucazatel;
 ucazatel = &read;
 cout << "Name : ";
 cout << ucazatel->name;
 cout << endl;
cout << "form : ";
 cout << ucazatel->form;
 cout << endl << "area : " << ucazatel->area << endl;
 }


Gooch 11-05-2011 23:00 1674626

Всем привет! Народ есть код:

Код:

          MOV ax,[a] //в ax первый аргумент
          SHL ax,4  //сдвигаем ранее загруженный аргумент влево
          OR ax, [b] //помещаются оба аргумента один за другим
          MOV byte ptr [rez],al // записываем что получилось
          MOV ax,[a]
          IMUL [b] // Умножаем
          MOV byte ptr [rez+1],al // сохраняем произведение сразу за множителями

объясните почему MOV byte ptr [rez+1],al ?

Правильно ли я понимаю: rez+1 значит записать содержимое регистра al в регистр ah, а +1 потому что у нас используется размер в байтах?

delfi 12-05-2011 20:34 1675168

НА С++ Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим).

lxa85 12-05-2011 20:47 1675175

delfi, в трех соснах запутался? :) Или не знаешь как условия пишутся?

delfi 12-05-2011 20:55 1675178

запутаЛАСЬ=)

Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, найти количество и сумму его цифр.

ferget 12-05-2011 22:47 1675251

Цитата:

Цитата delfi
запутаЛАСЬ »

ага, и в гугле забанили

вот нашел за 15 сек

Код:

# include <iostream.h>
#include <iomanip.h>
#include <conio.h>
 
int main ()
{
int N, S=0, K=0;
cout<< " Vvedi chislo";
cin>>N;
while (N>0)
{
S=S+N%10;
K++;
N=N/10;
}
cout<<"cymma:  "<<S<<endl;
cout<<"kollichestvo:  "<<K;
getch();
return (0);
}


Delirium 13-05-2011 03:09 1675345

delfi, еще один пост с просьбой тупо написать за тебя программы и будешь забанен. Хочешь помощи - предлагай свои варианты решения, мы поправим. Все остальное делается на фрилансерких форумах, если думать головой не охота.

delfi 13-05-2011 09:09 1675418

в гугле не забанили..
спасибо за задачу=)
я тебя поняла, просто вчера не смогла совсем свой вариант сделать..

delfi 14-05-2011 08:44 1676082

блин вот реально эту думала думала..и ни как ..
Дано вещественное число X и целое число N (> 0). Найти значение выражения
X – X3/(3!) + X5/(5!) – … + (–1)N•X2•N+1/((2•N+1)!)
(N! = 1•2•…•N). Полученное число является приближенным значением функции sin в точке X.

грек 14-05-2011 23:40 1676496

Лююююди!!! помогите!!! Нужно создать прогрумму для диплома в с++ Builder, а я так и не вьехал до конца как это делать.
Осталась пару дней, а затем диплом нужно на проверку сдавать. Помогите!!!
Задача следующая:
K, T, tau - переменные, вводимые конечным пользователем
w - массив от 0 до 1,5 с шагом 0, 05
K0=(w*sin(tau*w)+T*w*w*cos(tau*w))/K;
K1=(T*w*sin(tau*w)-cos(tau*w))/K;
K0 и K1 - соответственно так же массивы с таким же числом элементов как и у w


Цель:
построить график, где координатами точек по X будут числа из массива К0, координатами по Y - из массива К1

Лазил по учебникам - там говорили как построить график с помощью Image - на этом потратил кучу времени, но так и не вьехал. А оказалось можно просто в Chart. Желательно чтобы с помощью него и было реализованно.

lxa85 15-05-2011 00:42 1676525

delfi, разбивай задачу на функциональные подзадачи. Определись с технически повторяющимися действиями. Например умножение.
-1 (минус единица) должна быть возведена в степень, для паскаля знак ^, для С++ - **.
структурируй задачу. Часть действий вынеси в функции, часть помести в цикл.
грек, так с чем ты не можешь разобраться то? С получением массивов или с построением графиков?
Я сейчас слишком устал, чтобы копаться в документации, но тебе сюда Не торопясь и без суеты скачай документацию и файлы примеров. Работа с Chart и Image должна быть. (С Image есть - 100%)

грек 15-05-2011 11:34 1676629

lxa85
честно сказать и с тем и с тем :sorry:

lxa85 15-05-2011 11:53 1676638

грек, так ты документацию то смотрел или нет? TChart
Архив примеров скачал? Хоть какие-нибудь примеры работы с графикой нашел? (А там их много, и на TChart свет клином не сошелся)
получение массивов - это первый курс, сходи к ним на этаж в общаге, за бутылочку нужного напитка - они тебе нарисуют.
Вопрос на засыпку. А ты от чего синус получаешь? В чем измеряется угол?
Дипломник ... я в шоке ...

грек 16-05-2011 05:29 1677070

lxa85 !!! да нет у нас никаких общаг. А к кому обращался не помогли. Уж поверь не стал бы лезть на форум и умалять тут если бы мог зайти к корешу и решить вопрос под "пивко". Ссылка данная тобой про течарт хорошая, но пример там дан для дельфи а не с++. Ты бы лучше не взывал к моей совести и не занимался морализаторством, а написал бы как это сделать, ибо все это займет меньше письма которое ты сейчас читаешь. Ну неужели это так трудно? Спасибо за понимание.

Любезный 16-05-2011 06:08 1677073

Цитата:

Ссылка данная тобой про течарт хорошая, но пример там дан для дельфи а не с++.
В чём проблема? VCL едина как для Delphi, так и для C++ Builder. Тебе просто надо перевести код с Паскаля на С++ и доработать его под свои нужды. Код на Паскале вообще читается элементарно. Что там непонятного? Названия и параметры компонентов, свойств и методов одни и те же, просто в Delphi свойства пишутся, например, Label1.Caption , а в билдере - Label1->Caption . Просто включи соображалку - переведи и доработай. Если не можешь - я не понимаю, чему вас там учат.

Delirium 16-05-2011 06:38 1677076

Цитата:

Цитата грек
Ну неужели это так трудно? »

грек, таких как ты здесь сотни и если каждому писать программки, жизни не хватит. Хочешь готового решения без желания думать? Иди на фрилансерский сайт и за деньги получишь результат.

lxa85 16-05-2011 08:05 1677103

грек, ты вместо того, что бы кричать, ответь хотя бы на один из заданных тебе вопросов.
В чем измеряется угол? Смотрелись ли примеры? Хоть что-нибудь вообще делалось?
Ну и в качестве оффтопа:
Цитата:

Цитата грек
Ну неужели это так трудно? »

Ты не поверишь!

грек 16-05-2011 23:00 1677506

Ну вы братцы кролики и жукиии!!!)))
Ладно, вот я тут попробЫвал кое что, но чует мое сердце, что белиберда какая то все это. Скажите следующий код работоспостобен, и показывает ли то что я ищу или же это бред собачий я написал?:

Код:

TFormSosred *FormSosred;

  float K,T,tau;
  const Amax = 30;
  float w[Amax];
  float  K0,K1;
//---------------------------------------------------------------------------
__fastcall TFormSosred::TFormSosred(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TFormSosred::ButtonExeClick(TObject *Sender)
{
try
    {
    K=Edit1->Text.ToFloat();
    T=Edit2->Text.ToFloat();
    tau=Edit3->Text.ToFloat();
    }
catch(EConvertError&)
{
}
for (float w=0; w<=30; w++)
    {
    w=w*0.05;
    K0=(w*sin(tau*w)+T*w*w*cos(tau*w))/K;
    K1=(T*w*sin(tau*w)-cos(tau*w))/K;
    Series1->AddXY(K0,K1);
    }


lxa85 17-05-2011 03:24 1677574

грек,
Цитата:

Цитата lxa85
Вопрос на засыпку. А ты от чего синус получаешь? В чем измеряется угол? »

Это ключевой вопрос. Как смысла задания, так и написания алгоритма.

грек 17-05-2011 09:33 1677648

#include <math.h> - ты это имеешь в виду или что?
или это - cos(tau*w),sin(tau*w)???
tau,w - это числа, например 2, 1.5, 0.05

lxa85 17-05-2011 09:42 1677654

грек, я спрашиваю прямым текстом. В чем измеряется угол? Какие у него единицы измерения? Стаканы, стулья, штуки, что именно означают эти числа? Что тут не понятного?!

грек 17-05-2011 12:09 1677754

Братцыыы!!!)))) выхооодит!!! строиться график!!!!))))) теперь до ума буду доводить, а то все равно че-то он так себе пока что

Titanium 17-05-2011 20:09 1678093

Код:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>

const double PI = 3.1415926;

main ()
{
  double x1, y1, x2, y2, x3, y3;
  double a, b , c, u1, u2, u3;

  cout << "Ââåäèòå êîîðäèíàòû âåðøèí: \n" ;
  cout << "x1: "; cin >> x1;
  cout << "y1: "; cin >> y1;
  cout << "x2: "; cin >> y1;
  cout << "y2: "; cin >> y2;
  cout << "x3: "; cin >> x3;
  cout << "y3: "; cin >> y3;

  a = sqrt( pow(x1-x2,2) + pow(y1-y2,2) );
  c = sqrt( pow(x2-x3,2) + pow(y2-y3,2) );
  b = sqrt( pow(x1-x3,2) + pow(y1-y3,2) );

  if (a+b>c && b+c>a && a+c>b)
  {
      double p = (a+b+c)/2;
      double s = sqrt(p*(p-a)* (p-b)*(p-c));
      u1 = asin(2*s / (a*b)) * 180 / PI;
      u2 = asin(2*s / (b*c)) * 180 / PI;
      u3 = asin(2*s / (a*c)) * 180 / PI;
      cout << "Óãëû òðåóãîëüíèêà: " << u1 << ", " << u2 << ", " << u3 << "\n";
  }
  else  cout << "Òðåóãîëüíèê âûðîæäåí!\n";

  return 0;
}

Какую еще можно формулу применить для нахождения внутренних углов треугольника АВС (препод сказал что мои формулы неправильны)

lxa85 17-05-2011 21:03 1678123

Как новичек - привыкай правильно оформлять пост.
Код обрамляется тегом [code] [/code] или #.
Цитата:

Код:

a = sqrt( pow(x1-x2,2) + pow(y1-y2,2) );

Это получение стороны a? треугольника ABC?
Да, формула не верна, проверяй правильность расставленных скобок.
Формула нахождения углов вообще не понятна.
Что делать и как исправлять?
Все просто. Берем Марка нашего уважаемого Яковлевича Выгодского Справочник по элементарной математике, ищем §22 Основные соотношения между элементами треугольника. (по приведенной ссылке стр 367-367 текста и стр 341-343 djvu файла) и внимательно смотрим и применяем формулы расчета требуемых величин.
Так же не забываем пересчитывать радианы в градусы и обратно.

Titanium 17-05-2011 21:50 1678140

Понятно, спасибо. Посмотрите, пожалуйста, что не так в этом коде.
Код:

#include <iostream.h>
#include <math.h>
float a,a1,v0,b,x,g;
int n;
main ()
{
cout <<"Ââåäèòå g:"; cin >> g;
cout <<"Ââåäèòå v0:";cin >> v0;
cout <<"Ââåäèòå a:"; cin >> a;
cout <<"Ââåäèòå b:"; cin >> b;
cout <<"Ââåäèòå n:"; cin >> n;
a1 = ((v0*v0)/(g*b))*sin(2*a);
cout << "Ðåçóëüòàò = \n";
for(int i=1; i<=n; i++)
{
cout << "x" << " = " << a1*(1-pow(1/b,i))/(1-1/b) << "\n";
}
return 0;
}

тут нужно найти абсциссы первых точек касания

lxa85 17-05-2011 22:00 1678145

Titanium, перепиши пожалуйста с использованием транслита. Если в прошлый раз абракатабра была понятна из условий задачи - то эта нет. (
Или в редакторе поправь - "Введите g", "Ведите v0" ... "Результат ="
Что должно было получиться?
Цитата:

Цитата Titanium
sin(2*a) »

точно в радианах, а не в градусах?

Titanium 17-05-2011 22:09 1678146

Код:

#include <iostream.h>
#include <conio.h>
#include <math.h>

float v0;g;
float a,a1;
float b;
int n;
float x;

main()
{cout <<"wwedite g"; cin >> g;
  cout << "Wwedite v0: "; cin >> v0;
  cout << "Wwedite a:  "; cin >> a;
  cout << "Wwedite b:  "; cin >> b;
  cout << "Wwedite n:  "; cin >> n;

  a1 = ((v0*v0)/(g*b))*sin(2*a);

  cout << "Result: \n";
  for(int i=1; i<=n; i++)
  {
      cout << "x[" << i << "] = " << a1*(1-pow(1/b,i))/(1-1/b) << endl;
  }

  return 0;

}

Отскоки. Материальная точка бросается на горизонтальную под углом а со скоростью v0. При каждом ударе о плоскость кинетическая энергия уменьщается в б раз. Найти абциссы первых точек касания. Сопротивлением воздуха пренебречь

в этом параграфе основные соотношения между элементами треугольника только половинные углы, а мне нужно найти внутренние углы треугольника АВС

lxa85 18-05-2011 13:59 1678470

Вчера, в частной переписке, задача с треугольником была решена.
Задача с запуском материальной точки на плоскость, обсуждена, поставлены условия, заданы начальные параметры. Задача находится в решении.
За подробностями к Titanium, как к инициализатору и программисту.
В целом же, данные задачи можно "отметить" решенными.

Buchik 23-05-2011 21:05 1681305

Вот я немного так сказать зациклился....


•определение номера строки (номеров строк), в которой находится самая длинная серия одинаковых элементов.



я немогу "всунуть" условие, когда в нескольких строках одинаковые элементы, и они в то же время, являются максимально долгой последовательностью... вот код программы:
пишу в VS 2010
Код:


#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <locale>
using namespace std ;
//int Max , Min ;
class qwerty
{
public:
        qwerty() ;
        qwerty( int , int ) ;
        void vivod( int ** mas , int n , int m )
        {
                wcout << L"\n\nИсходный массив: \n" ;
                for ( int i = 0 ; i < m ; i++ )//Вывод массива!!
            {
                    wcout << L"Строка " << i+1 << "\n" ;
                    for ( int j = 0 ; j < n ; j++ )
                    {
                            wcout << mas[i][j] << L"\t" ;
                                if ( j == n-1 )cout << "\n" ;
                    }
            }
                for ( int k = 0 ; k < m ; k++ )
                for ( int i = 0 ; i < n-1 ; i++ ) //Упорядочивание по убыванию
                {
                        for ( int j = i+1 ; j < n ; j++ )
                        {
                        if ( mas[k][i] < mas[k][j] )
                        {
                                int perem ;
                                perem = mas[k][i] ; mas[k][i] = mas[k][j] ; mas[k][j] = perem ;

                        }
                        }
                }
                wcout << L"\n\nУпорядоченный массив:\n" ;
                for ( int i = 0 ; i < m ; i++ )//Вывод массива!!
            {
                    wcout << L"Строка " << i+1 << "\n" ;
                    for ( int j = 0 ; j < n ; j++ )
                    {
                            wcout << mas[i][j] << L"\t" ;
                                if ( j == n-1 )cout << "\n" ;
                    }
            }

                bool sign = 0 ;
            for ( int i = 0 ; i < m ; i++ )
            {
                    for ( int j = 0 ; j < n ; j++ )
                        {
                                if ( mas[i][j] == 0 && sign == 0  )
                                {
                                        wcout << L"Строка " << i+1 << L" содержит нулевой элемент.\n" ;
                                        sign = 1 ;
                                }
                        }
                }
                if ( sign == 0 ) wcout << L"Нулевых элементов не обнаружено!!!\n" ;
                int str = 0  , str1=0 , f=0 , b=0 ;
                for ( int i = 0 ; i < m ; i++ )//цикл на поиск самой длинной последовательности элементов
                {                       
                                if ( str <= str1 )
                                {
                                        for ( int j = 0 ; j < n-1 ; j++ )
                                        if ( mas[i][j] == mas[i][j+1] )
                                                str = str + 1 ; f=i ;
                                }
                                else if ( str1 < str )
                                {
                                        for ( int j = 0 ; j < n-1 ; j++ )
                                        if ( mas[i][j] == mas[i][j+1] )
                                                str1 = str1 + 1 ; b=i ;
                                }                       
                                if ( str <= str1 ) { str = 0 ; f = 0 ; }
                                else { str1 = 0 ; b = 0 ; }
                }
                if ( str == 0 && str1 == 0 )wcout << L"Нет повторяющихся элементов!!!\n" ;
                if ( str <= str1 ) wcout << L"Самая длинная последовательность в строке № " << b+1 << "\n" ;
                if ( str > str1 ) wcout << L"Самая длинная последовательность в строке № " << f+1 << "\n" ;
        }
private:
        int ** mas ;
//        int * mas1 ;
        int n ;
//        int l ;
        int m ;
} ;
/*qwerty::qwerty( int Max , int Min )
{
        wcout << L"Введите размерность данного массива : " ; cin >> Razm ;
        mas1 = new int[Razm] ;
        srand( ( unsigned ) time(NULL)) ;
        for ( int i = 0 ; i < Razm ; i++ )
        {
                mas1[i] = rand( ) % ( Max - Min + 1 ) + Min ;
        }
        vivod1(mas1) ;
}*/
qwerty :: qwerty()
{
        wcout.imbue(locale("rus_rus.866"));

        do
        {
                wcout << L"Введите длинну строк : " ;
                cin >> n ;
                wcout << L"Введите количество строк : " ;
                cin >> m ;
                if ( m <= 0 || n <= 0 ) wcout << L"Неверная размерность!!!!!\n" ;
        } while ( m <= 0 || n <= 0 ) ;
        mas = new int*[m] ;
        for(int i=0; i<m; i++) { mas[i]=new int[n]; }
        wcout << L"Введите элементы массива : \n" ;
        for ( int i = 0 ; i < m ; i++ )
        {
                for( int j=0 ; j < n ; j++ )
                {
                    wcout <<L"Строка : " << i+1 << L"\nЭлемент " << j+1 << L" из " << n << L" : " ;
                    cin >> mas[i][j] ;
                }
        }

        vivod( mas , n , m ) ;
}
int _tmain(int argc, _TCHAR* argv[])
{
        wcout.imbue(locale("rus_rus.866"));
        qwerty a ;
        /*wcout << L"\nВведите Max значение для генирации с помощью ГСЧ : " ;
        cin >> Max ;
        wcout << L"Введите Min значение для генирации с помощью ГСЧ : " ;
        cin >> Min ;
        qwerty b( Max , Min ) ;*/
        return 0;
}


Buchik 25-05-2011 13:04 1682292

Может, кто знает, или сталкивался с поэлементным вычитанием матриц?(мы не знаем ни разметрность одной матрицы, ни размерность 2-ой)

lxa85 26-05-2011 00:28 1682688

Buchik, вычитаются равные друг другу матрицы.
Далее любым удобным способом перебираем все элементы матрицы и производим вычитание.
В чем сложность? Что смутило? :dont-know

Buchik 26-05-2011 11:34 1682890

Уже сделал, просто думал как это реализовать))))Да и забыл как их минусовать друг с другом))) думал на подобии умножения что-то))

VanillaCocaine94 19-06-2011 14:17 1697518

Помогите решить задачу по С++ Borland.
условие:Сформировать матрицу,размером M*N по примеру
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25
Написать программу для демонстрации исспользования цыкла с постусловием,выполненую программу записать в файл

VanillaCocaine94 19-06-2011 14:48 1697530

Помогите создать алгоритмы по С++ Borland.
код програм:
№1
Код:

#include "stdlib.h"
#include <iostream>
#include <fstream>
#include "conio.h"

void main() {

 int const n = 5;
 int Mas[n][n], a[n*n];
 int i = 1; //Nachinaem zapolnjat' s 1
 int x = 0; //S levogo
 int y = 0; //verhnego ugla
 int dir = -1; //Napravlenie vlevo vniz

  fstream filestr;

 filestr.open ("massiv.txt", fstream::in);

for (int m=0; m<n*n; m++)

{

filestr >> a[m];

cout<<" "<<a[m];

}

cout<<endl;

filestr.close();

 for(i=0; i<n*n; i++){
 //Proverka, chto ne vylezli napravo
    if (x > n-1){
      dir = -dir; //izmenjaem napravlenie
      y = y - 2 * dir; //korrektiruem
      x = x + dir;    //poziciju
    }
    //Proverka, chto ne vylezli vniz
    else if (y > n-1){
      dir = -dir; //izmenjaem napravlenie
      y = y - dir; //korrektiruem
      x = x + 2 * dir; //poziciju
    }
    //Proverka, chto ne vylezli nalevo
    else if (x < 0){
      dir = -dir; //izmenjaem napravlenie
      x = x + dir; //korrektiruem poziciju
    }
    //Proverka, chto ne vylezli vverh
    else if (y < 0){
      dir = -dir; //izmenjaem napravlenie
      y = y - dir; //korrektiruem poziciju
    }
    Mas[x][y] = a[i]; //Zapolnjaem jachejku
    x = x + dir; //Perehodim k sledujuwej jachejke
    y = y - dir;  //v tekuwem napravlenii
 }

  /* Zamechanie. Proverki peresechenija pravoj i nizhnej granic massiva
    dolzhny delat'sja ran'she proverok peresechenija levoj i verhnej
    granic. Pochemu - mozhno rassmotret' sluchai popadanija v
    pravyj verhnij i v levyj nizhnij ugly. */

  //Vyvod soderzhimogo massiva na jekran
  for (y = 0; y < n; y++){
    //Vyvodim vse jelementy odnoj stroki (po 3 pozicii na chislo)
    for (x = 0; x < n; x++)
      cout<<Mas[x][y]<<"  ";
    //Perehodim k sledujuwej stroke
    cout<<endl;
  }
    getch();
}

№2
Код:

#include "stdlib.h"
#include <iostream>
#include <fstream>
#include "conio.h"

void main() {

 int const n = 5;
 int Mas[n][n], a[n*n];
 int i = 0; //Nachinaem zapolnjat' s 0
 int x = 0; //S levogo
 int y = 0; //verhnego ugla
 int dir = -1; //Napravlenie vlevo vniz

  fstream filestr;

 filestr.open ("massiv.txt", fstream::in);

int m=0;
while(m<n*n)

{

filestr >> a[m];

cout<<" "<<a[m];
m++;
}

cout<<endl;

filestr.close();

 //for(i=0; i<n*n; i++){
 while(i<n*n){
    //Proverka, chto ne vylezli napravo
    if (x > n-1){
      dir = -dir; //izmenjaem napravlenie
      y = y - 2 * dir; //korrektiruem
      x = x + dir;    //poziciju
    }
    //Proverka, chto ne vylezli vniz
    else if (y > n-1){
      dir = -dir; //izmenjaem napravlenie
      y = y - dir; //korrektiruem
      x = x + 2 * dir; //poziciju
    }
    //Proverka, chto ne vylezli nalevo
    else if (x < 0){
      dir = -dir; //izmenjaem napravlenie
      x = x + dir; //korrektiruem poziciju
    }
    //Proverka, chto ne vylezli vverh
    else if (y < 0){
      dir = -dir; //izmenjaem napravlenie
      y = y - dir; //korrektiruem poziciju
    }
    Mas[x][y] = a[i]; //Zapolnjaem jachejku
    x = x + dir; //Perehodim k sledujuwej jachejke
    y = y - dir;  //v tekuwem napravlenii
    i++;
 }

  /* Zamechanie. Proverki peresechenija pravoj i nizhnej granic massiva
    dolzhny delat'sja ran'she proverok peresechenija levoj i verhnej
    granic. Pochemu - mozhno rassmotret' sluchai popadanija v
    pravyj verhnij i v levyj nizhnij ugly. */

  //Vyvod soderzhimogo massiva na jekran
  for (y = 0; y < n; y++){
    //Vyvodim vse jelementy odnoj stroki (po 3 pozicii na chislo)
    for (x = 0; x < n; x++)
      cout<<Mas[x][y]<<"  ";
    //Perehodim k sledujuwej stroke
    cout<<endl;
  }
    getch();
}


Vietryk 29-06-2011 14:46 1703626

Помогите решить задачу по С++
Поменять местами максимальный и минимальный элементы среди простых чисел исходного одномерного массива. Результат вывести.

Delirium 30-06-2011 00:46 1703954

Vietryk, в чем проблема? Ты просишь не помочь, а написать за тебя.

Drongo 30-06-2011 17:58 1704543

Цитата:

Цитата Vietryk
Помогите решить задачу по С++
Поменять местами максимальный и минимальный элементы среди простых чисел исходного одномерного массива. Результат вывести »

Решение будет примерно таким:
1. Создаёте массив и заполняете, рандомно или определёнными значениями.
Код:

#include <iostream>
using namespace std;
#include <conio.h>
#include <stdlib.h>
#include <ctime.h>
using std::time;
...
...
...
const int size = 100;
      int array[size] = {0};
      int IndexMin = 0, // Индекс минимального
          IndexMax = 0, // Индекс максимального
          Min = 0;
          Max = 0;
          temp; // Для перестановки
  // Рандомная инициализация массива
  ...
  ...

2. Поиск максимального и минимального значения. Проходите массив циклом на поиск минимального и максимального значений, сохраняете индексы массива где найден минимальное и максимальное значение в переменные.
Код:

...
  Max = Min = array[0];
  for(int i = 0; i < size; i++){
    if(array[i] < Min){
      Min = array[i];
      IndexMin = i;
    }
    if(array[i] > Max){
      Max = array[i];
      IndexMax = i;
    }
  }
  }
...

3. Обращаетесь потом к этим элементам
Код:

...
  // Перестановка
  temp = array[IndexMin];
  array[IndexMin] = array[IndexMax];
  array[IndexMax] = temp;
...

4. Выводим на экран
Код:

...
  cout<<"\nMax = "<<array[IndexMax]<<"\n"<<"Min = "<<array[IndexMin]<<endl;
...


Irina20 08-07-2011 11:30 1709445

Помогите написать программу на С++ Дано предложение, слова в котором разделены пробелами, а в конце стоит точка. Заменить порядок слов в предложении на обратный.

lxa85 10-07-2011 21:05 1710779

Irina20, Задайся ограничением на предложение, символов в 150-200. Встречаются конечно предложения в бОльшее количество символов, но сочинить, прочитать и понять такую мысль за раз сложно.
Сделай массив слов символов по 25 штук 150, что для предложении в 200 символов - хватит с избытком.
Сделай отдельную процедуру выделения слов в предложении. От текущего символа до первого пробела или знака препинания.
Вышеназванной процедурой "нарежь" предложение на слова и "сложи" в массив.
Как только дойдешь до точки, распечатай массив слов в обратном порядке.

Drongo 11-07-2011 11:29 1711057

Для затравки, используйте функцию strtok

Здесь типовый учебный пример использования разбивки. Перепрофилируйте только сохранение лексем в массив и вывод этого массива в обратном порядке.
Код:

//Строки, использование strtok
#include <iostream.h>
using std::cout;
using std::cin;
using std::endl;

#include <cstring.h>

int main()
{
  char string[]="ETO PREDLOGENIE SODERGIT PYAT LEKSEM";
  char *tokenPtr;
  int z;

  cout<<"STROKA RAZBIVAETSYA NA LEKSEMI:\n"<<string
      <<"\n\nLEKSEMI:  \n\n";

  tokenPtr=strtok(string, " ");

  while(tokenPtr != NULL){
      cout<<tokenPtr<<'\n'; // Вместо вывода на экран, сохраняйте в массив.
      tokenPtr=strtok(NULL, " ");
      }
  cin>>z;
        return 0;
}
//---------------------------------------------------------------------------


Glamod 04-10-2011 17:04 1765750

Помогите написать программу на С++
 
Доброго времени суток. Я столкнулся с проблемой для зачета мне надо написать Программу для смены имен окон,но я со всем не понимаю и мне грозят отчислением. Я даже не знаю точно можноли написать такую программу на С++
Прошу добрых людей помочь мне с этим делом и написать программу полностью по стандартам которые мне задал препад.
Условия:
1. Программа должна переименовать любое выборное окно. пример "Мой компьютер" на М-ой компьютер" или любой игры Предположим "GTA" на "G-TA" или, что то похожие.
2.При запуски программы должно выскакивать подобное окно с таким же текстом:
Текст в окне: Название программы "Many windows" "Создатель Еремычев В.А" "Madness"
3. Нажав на кнопку Установить окно должно менять имя.
4. У программы должна быть такая иконка :
Это все.

Я даже не могу предположить трудно написать данную программу или легко так как совсем не понимаю ничего.
Надеюсь на ваше понимание и доброту буду премного благодарен если вы сделаете данную программу и выложите ее сюда.
Народ правда нужна помощь =(

ferget 04-10-2011 22:58 1766069

Цитата:

Цитата Glamod
Я даже не знаю точно можноли написать такую программу на С++ »

можно

с помощью EnumWindows перебираете все окна

GetWindowText получаете заголовок

SetWindowText меняете заголовок

Glamod 04-10-2011 23:11 1766082

Я ноль в C++ =(

Delirium 05-10-2011 00:48 1766115

Spl1t, перед прочтением - съесть. Для решения задач с нуля есть фрилансерские форумы.

Titanium 22-10-2011 12:56 1779236

Код:

#include<windows.h>
#include<windef.h>
#include<winbase.h>
LRESULT WINAPI WindowProc(HWND, UINT message, WPARAM WParam, LPARAM LPARAM);
int WINAPI;
WinMain (HINSTSNCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine);
int nCmdShow;
{WNDCLASSEX WindowClass; //Структура для хранения отрибутов окна//
static LPCTSTR szApp Name=L"OFWin";//определяет класс окна//
HWND hWnd;//дискриптор окна//
MSG msg;//структура сообщения окна//
Window Size=sizeof(WNDCLASSEX);
WindowClass.style=CS_HREDRAW|CS_VREDRAW;//определить функцию обработчика окна//
Window Class.lpfn WndProc=Window Proc;
Window Class.cbClsExtra=0;//ни каких дополнительных байт в структуре//
Window Class.cbWndExtra=0;
Window Class.hInstance=hInstance;//установить пиктограмму приложения по умолчанию//
Window Class.hIcon=LoadIcon(0, IDI_APPLICATION);
//устанавливаем стандартный курсор вид стрелочки//
Window Class.hCursor=LoadCursor(0, IDC_ARROW);
//устанавливаем серую кистоку по умолчанию//
Window Class.hbrBackground=static..cast<HBrush>(GetStockObject(CRAY_BRUSH));
Window Class.lpszMenu Name=0;//нет меню//
Window Class.lpszClass Name=szAppName;
Window Class.hIconSm=0;//маленькая пиктограмма по умолчанию//
//регистрация класса окна//
Register ClassEx(&Window Class);
//создаем окно//
hWnd=Create Window;
szAppName,//имя класса окна//
"A Basic Window the Hard Way",
WS_OVERLAPPEDWINDOW,//cтиль окна перекрываемого//
CW_USEDEFAULT,//позиция окна по умолчанию//
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,//нет родительского окна//
0,//нет меню//
hInstance,//дискриптор экземпляра программ//
0
);//нет данных//
Show Window(hWnd,nCmd Show);
Update Window(hWnd);
//цикл сообщения//
while(GetMessage(&msg,0,0,0)==TRUE);
{
Translate Message(&msg)//трансляция сообщения//
Dicpatch Message(&msg);
}
return static_cast <int>(msg.wParam);
LRESULT WINAPI Window Proc(HWND, hWnd, UINT, message, WPARAM wParam, LPARAM lParam)
{
HDC hDS;//дискриптор экранного контекста//
PAINTSTRUCT Paint St;//структура рисования//
RECT aRect;
switch (message)
{
case WM_PAINT://сообщение для перерисовки окна//
hDC=Begin Panit(hWnd, &Panit St);//подготовка к перерисовки окна//
//получит верхнее левое и правое нижнее углы клиентской области//
Get Client Rect(hWnd, &fRect);
SetBkMode(hWnd, TRANSPARENT);
//отображение текста в клиентской области окна//
Draw Text(hDC; L"But, Soft! What light trough yonder Window breaks?",
-1,
&aRect,
DT_SINGLELINE|
DT_CENTER|
DT_VCENTER|//центрирование по высоте// aRect
);
End Paint(hWnd; &PaintSt)//завершение перерисовки окна//
return 0;
case WM_DESTORY;
Post Quit Nessage(0);
return 0;
default;
return Def Winndow Proc(hWnd, message, wParan, lParam);
}
}
}


Помогите, пожалуйста, найти здесь ошибки

lxa85 22-10-2011 13:14 1779246

Цитата:

Цитата Titanium
Помогите, пожалуйста, найти здесь ошибки »

В чем они заключаются?
Что пишет отладчик?
Что изначально хотелось получить?
Код принято оформлять тегом CODE - # и табуляцией. А то читать практически невозможно.

Titanium 22-10-2011 15:28 1779302

Вообще преподаватель хотел сделать MFC без шаблона, когда набрали этот листинг он оказался нерабочим. Писали в Visual studio 2008, отладчик пишет, что не могу мол прочитать iostream.h, а если писать без него, то он выдает 37 ошибок.

LilLoco 22-10-2011 15:41 1779307

Цитата:

Цитата Titanium
Писали в Visual studio 2008, отладчик пишет, что не могу мол прочитать iostream.h »

После всех include написать нужно, вроде бы:
Код:

using namespace std;

Titanium 22-10-2011 16:06 1779316

Цитата:

using namespace std;
Это тоже не помогает

LilLoco 22-10-2011 16:15 1779321

А если так :

Код:

#include "iostream"
using namespace std;

???

Titanium 22-10-2011 16:28 1779326

пишет 7 ошибок

ferget 23-10-2011 22:23 1780216

что делать??? :help:

выложите код в нормальном виде

Titanium 24-10-2011 13:33 1780564

Код:

#include<windows.h>
#include<windef.h>
#include<winbase.h>
LRESULT WINAPI WindowProc(HWND, UINT message, WPARAM WParam, LPARAM LPARAM);
int WINAPI;
WinMain (HINSTSNCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine);
int nCmdShow;
{WNDCLASSEX WindowClass; //Структура для хранения отрибутов окна//
static LPCTSTR szApp Name=L"OFWin";//определяет класс окна//
HWND hWnd;//дискриптор окна//
MSG msg;//структура сообщения окна//
Window Size=sizeof(WNDCLASSEX);
WindowClass.style=CS_HREDRAW|CS_VREDRAW;//определить функцию обработчика окна//
Window Class.lpfn WndProc=Window Proc;
Window Class.cbClsExtra=0;//ни каких дополнительных байт в структуре//
Window Class.cbWndExtra=0;
Window Class.hInstance=hInstance;//установить пиктограмму приложения по умолчанию//
Window Class.hIcon=LoadIcon(0, IDI_APPLICATION);
//устанавливаем стандартный курсор вид стрелочки//
Window Class.hCursor=LoadCursor(0, IDC_ARROW);
//устанавливаем серую кистоку по умолчанию//
Window Class.hbrBackground=static..cast<HBrush>(GetStockObject(CRAY_BRUSH));
Window Class.lpszMenu Name=0;//нет меню//
Window Class.lpszClass Name=szAppName;
Window Class.hIconSm=0;//маленькая пиктограмма по умолчанию//
//регистрация класса окна//
Register ClassEx(&Window Class);
//создаем окно//
hWnd=Create Window;
szAppName,//имя класса окна//
"A Basic Window the Hard Way",
WS_OVERLAPPEDWINDOW,//cтиль окна перекрываемого//
CW_USEDEFAULT,//позиция окна по умолчанию//
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
0,//нет родительского окна//
0,//нет меню//
hInstance,//дискриптор экземпляра программ//
0
);//нет данных//
Show Window(hWnd,nCmd Show);
Update Window(hWnd);
//цикл сообщения//
while(GetMessage(&msg,0,0,0)==TRUE);
{
Translate Message(&msg)//трансляция сообщения//
Dicpatch Message(&msg);
}
return static_cast <int>(msg.wParam);
LRESULT WINAPI Window Proc(HWND, hWnd, UINT, message, WPARAM wParam, LPARAM lParam)
{
HDC hDS;//дискриптор экранного контекста//
PAINTSTRUCT Paint St;//структура рисования//
RECT aRect;
switch (message)
{
case WM_PAINT://сообщение для перерисовки окна//
hDC=Begin Panit(hWnd, &Panit St);//подготовка к перерисовки окна//
//получит верхнее левое и правое нижнее углы клиентской области//
Get Client Rect(hWnd, &fRect);
SetBkMode(hWnd, TRANSPARENT);
//отображение текста в клиентской области окна//
Draw Text(hDC; L"But, Soft! What light trough yonder Window breaks?",
-1,
&aRect,
DT_SINGLELINE|
DT_CENTER|
DT_VCENTER|//центрирование по высоте// aRect
);
End Paint(hWnd; &PaintSt)//завершение перерисовки окна//
return 0;
case WM_DESTORY;
Post Quit Nessage(0);
return 0;
default;
return Def Winndow Proc(hWnd, message, wParan, lParam);
}
}
}


ferget 24-10-2011 14:52 1780623

нормальный вид это тот который выдает 7 ошибок

а то, что вы написали выдаст намного больше

что это?

Код:

WindowClass.style=CS_HREDRAW|CS_VREDRAW;//определить функцию обработчика окна//
Window Class.lpfn WndProc=Window Proc;
Window Class.cbClsExtra=0;//ни каких дополнительных байт в структуре//
Window Class.cbWndExtra=0;


Titanium 24-10-2011 14:56 1780625

это не я писал, я списывал с доски то, что написал преподаватель, а он писал именно так. Препод хотел типа как построить MFC без шаблона., просто чтобы окошко открылось

ferget 24-10-2011 15:40 1780671

Код:

#include <windows.h>
LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,
                  HINSTANCE hPrevInstance,
                  LPSTR    lpCmdLine,
                  int      nCmdShow)
{
    HWND hwnd;
    MSG msg;
    WNDCLASS w;
    memset(&w,0,sizeof(WNDCLASS));
    w.style = CS_HREDRAW | CS_VREDRAW;
    w.lpfnWndProc = WndProc;
    w.hInstance = hInstance;
    w.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    w.lpszClassName = "My Class";
    RegisterClass(&w);
    hwnd = CreateWindow("My Class", "My title", WS_OVERLAPPEDWINDOW,
        300, 200, 200, 180, NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
    switch (Message){
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd, Message, wparam, lparam);
    }
    return 0;
}


Titanium 24-10-2011 15:43 1780674

users\user\documents\visual studio 2008\projects\fdg\fdg\ghfg.cpp(17) : error C2440: =: невозможно преобразовать 'const char [9]' в 'LPCWSTR'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\users\user\documents\visual studio 2008\projects\fdg\fdg\ghfg.cpp(20) : error C2664: CreateWindowExW: невозможно преобразовать параметр 2 из 'const char [9]' в 'LPCWSTR'
1> Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>Журнал построения был сохранен в "file://c:\Users\user\Documents\Visual Studio 2008\Projects\fdg\fdg\Debug\BuildLog.htm"
1>fdg - ошибок 2, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Отладчик пишет это

ferget 24-10-2011 15:51 1780678

в свойствах проекта -> свойства конфигурации -> общие
поставьте использовать многобайтовую кодировку

Titanium 24-10-2011 18:07 1780805

Код:

#include <math.h>
#include <conio.h>
#include <iostream.h>
#define f(x)(exp( x ) + 2*pow(x,2) - 30)

double F_X(double);  // ???????? ??????? ?? ?????;
double PARABL_METHOD(double, double, double); // ??????? ??? ?????????? ????????

main()
{
        double MIN_VAL = 0.0;                        // ????????? ?????
        double MAX_VAL = 0.0;                        // ???????? ?????
        double ESP = 0.0, MINIMUM = 0.0; // ????????? ????????, ???????
       
        cout << "Vvedite MIN_VAL: ";
        cin >> MIN_VAL;
        cout << "Vvedite MAX_VAL: ";
        cin >> MAX_VAL;
        cout << "Vvedite ESP: ";
        cin >> ESP;

        MINIMUM = PARABL_METHOD(MIN_VAL, MAX_VAL, ESP);

        cout << "Minimum: " << MINIMUM << endl;
        getch();
        return 0;
}
double PARABL_METHOD(double X0, double H, double ESP)
{
        // ????????? ??????????????? ?????
        double X1 = 0.0;
        double X2 = 0.0;
        double XN = 0.0;
        // ????????? ??????????????? ??????????
        double Q = 0.0, A = 0.0, B = 0.0, C = 0.0, D = 0.0, Z = 0.0;
        int k = 0;
       
        X1 = X0 + H;        // ????????????? ?????? ?????
        X2 = X0 + (2*H); // ????????????? ?????? ?????

        // ????????? ???????? ???????? ????????? ?????? ???????? ??????? ???????
        do
        {
                Q = (X0-X1)/(X1-X2);
                A = (((Q*F_X(X0))-((Q*(1+Q))*F_X(X1)) )+(Q*Q*F_X(X2)));
                B = (((2*Q+1)*F_X(X0))-((1+Q)*(1+Q)*F_X(X1)))+Q*Q*F_X(X2);
                C = (1+Q)*F_X(X0);
                D = sqrt(B*B-(4*A*C));

                if (abs(B+D) > abs(B-D))
                        Z=B+D;
                else
                        Z=B-D;

                XN = X0 - (((X0-X1)*2*C)/Z);

                F_X(XN);
                // ?????????, ???????? ?? ?? ????????? ????????
                if (abs(F_X(XN) < ESP))
                        k=10000;

                // ?????? ????? ???????? ??????
                X2 = X1;
                X1 = X0;
                X0 = XN;
                // ??????????? ???????
                k = k+1;

        } while(k <= 10000); // ???????????? ??????????? ?????
        return XN;
}
// ????????? ???????? ??????? ? ??????
double F_X(double x)
{
        return f(x);
}

можно ли как нибудь упростить данный листинг?

lxa85 30-10-2011 16:03 1785021

Цитата:

Цитата keksik
кто знает как это решить?) »

Я знаю! :)
Цитата:

Цитата keksik
я не просил решать, я просил подсказки »

Не просили.
Примеры решались? Матрицы рисовались? Пальчиком последовательности перебирались?
Не можешь решить теоретически, решай практически! Потом общий случай получишь.

zena 01-11-2011 23:19 1786859

Вывести на экран слово
 
Помогите пожалуйста с этой задачкой:
Дана строка содержащая слова. Вывести на экран слово, являющееся первым в алфавитном порядке.

lxa85 02-11-2011 00:15 1786894

Вопросы те же :
где собственные размышления?
Какие заданы ограничения?
По решению:
имеет смысл посмотреть на предыдущую работу с массивами, и подумать над применением уже известных методов, для решения поставленной задачи.

SPD-PrAlex 02-11-2011 10:52 1787084

Помогите пожалуйста составить программу на C++

Проводится перепись населения. На улице N-домов (N - известно заранее и задается константой).
Число квартир в домах может различаться; это значение вводится с клавиатуры в переменную m для каждого дома. Число жильцов каждой квартиры вводят с клавиатуры.
Сколько всего людей проживает на этой улице?

P.S. Решение производится на C++ со вложенными циклами

lxa85 02-11-2011 11:21 1787102

SPD-PrAlex, если вычеркнуть С++, как бы вы решали эту задачу?
Есть 5 домов, 5, 7, 10 этажей, или от 2 до 200 сот квартир, в каждой квартире от 1 до 10 человек.
Как провести перепись населения?
Из чего вообще вообще будет вычитаться кол-во людей? или не будет, или не вычитаться, а умножаться и делиться? :)

Prof 03-11-2011 21:07 1788257

Условие:
Имеем две строки. Из каждой строки разрешается удалять символы, но количество удаленных символов, идущих подряд, не должна превышать W. Задание- удалив минимально возможное количество символов, сделать строки одинаковыми (символы разного регистра считать одинаковыми).
Входящие данные:
Входящий файл содержит в первой строке число W (1 <= W <= 1500), во втором и третьем- две заданных строки, состоящие из цифр и символов английского алфавита (от 1 до 1500 символов).
Исходящие данные:
Исходящий файл должен содержать одну строку, которую можно получить с обеих строк по правилам задачи. Если существует несколько вариантов ответа, вывести любой. Если ответа не существует- вывести No solution.

Личные мысли:
две строки загнать в массивы, потом искать следующим образом a[i-w] (a[i+w]), где a[i]- определённый елемент массива. Если совпадения есть- удаляем, в конце выводим массиыв что остался. Но чтото не идёт мне эта идея: лимит на 4с не пройдёт и врятли w=1500 возьмёт.

lxa85 03-11-2011 21:47 1788277

Ха. Есть мысль красивее, но о ней потом. :)
Связана с массивами, поиском в массиве, условием одинаковости строк.
Перебрать за 4с массив в 1500 элементов - крайне просто.
Цитата:

Цитата Prof
потом искать следующим образом a[i-w] (a[i+w]), где a[i]- определённый элемент массива. Если совпадения есть- удаляем, в конце выводим массиыв что остался. »

Идея не понятна. Как осуществляется поиск? Почему при совпадении мы что-то удаляем?
----
Строки должны быть одинаковыми. Дайте определение "одинаковым строкам", полное, развернутое. Это значительно облегчит решение задачи.

Prof 04-11-2011 00:39 1788334

Немного не так сформулировал мысль. Берём первый елемент первого массива, ищем такойже во втором массиве, если есть, запоминаем номера ячеек. Потом удаляем все елементы, номера которых не запоминали. Далле проверяем, если количество удаленных подряд элементов в массиве > W выводим "No solution", если <= W, тогда выводим данные из массива.

Titanium 20-11-2011 17:07 1799327

Код:

bool valid(int i, int j)
{
return i > 0 && i < m && j > 0 && j < n;
}

// элементы игрового поля (пусто, крестик, нолик)
enum XO { _e_, _x_, _o_ };
const XO f[m][n];
XO field(int i, int j) { return valid(i,j) ? f[i][j] : _e_; }

XO test()
{

// ранг каждой клетки
struct RANK
{
int hor, ver, diag1, diag2;
};
RANK r[m][n];
const RANK rnull = { 0, 0, 0, 0 };

int i,j;
for(i = 0; i < m; ++i) for(j = 0; j < n; ++j)
{
XO xo = f[i][j];
RANK& rr = r[i][j];

if(xo == _e_) { rr = rnull; continue; }
if(xo == field(i-1, j )) = 1 + r[i-1][j ];
if(xo == field(i, j-1)) rr.ver = 1 + r[i ][j-1];
if(xo == field(i-1, j-1)) rr.diag1 = 1 + r[i-1][j-1];
if(xo == field(i+1, j-1)) rr.diag2 = 1 + r[i+1][j-1];

if(rr.hor >= 5
|| rr.ver >= 5
|| rr.diag1 >= 5
|| rr.diag2 >= 5
)
return xo; // этот игрок победил
}

return _e_; // ничья
}

не пойму чего не хватает

Суть задания:
клеточное поле размером м*n есть результат игры в крестики-нолики на неограниченном поле. Проверить является ли конфигурация одного из игроков предвыигрышной, т.е. нельзя ли за один ход достичь победы

lxa85 20-11-2011 19:32 1799398

Titanium,
Цитата:

Цитата Titanium
не пойму чего не хватает »

а я вот не пойму, что вы пытаетесь сделать?
Словами алгоритм можете описать? И код прокомментировать тоже не мешало бы.
Каков принцип поиска предвыигрышной ситуации?

keks666sex 20-11-2011 22:52 1799523

Помогите решить задачу по С++
 
Определите, пересекаются ли кривая у=аx3+bx2+сx+d и прямая y=fx+g. При положительном ответе найти точки пересечения.

lxa85 20-11-2011 23:14 1799533

keks666sex, решите уравнение. Либо аналитически, либо дискретно.
Большим пока помочь не могу.

keks666sex 20-11-2011 23:41 1799547

Будит ли правильным такой вариант решения?
Если сначала решить систему уравнений аx3+bx2+сx+d=fx+g
где найдем x=g-d
и дискриминант D=sqrt(b^2-4az) где z=c-f
и с помощью дискриминанта найдем 2 корня
x2=(-b+дискриминант)/(2*a);
x3=(-b-дискриминант)/(2*a);



Код:

#include <iostream>
# include <math.h>
using namespace std;

void main()
{
        double a,b,c,d,f,g,x,y,tret,discrim,x1,x2,x3,y1,y2,y3,yrav2;
        cout<<"Vvedite A ";
        cin>>a;
        cout<<"Vvedite B ";
        cin>>b;
        cout<<"Vvedite C ";
        cin>>c;
        cout<<"Vvedite D ";
        cin>>d;
        cout<<"Vvedite F ";
        cin>>f;
        cout<<"Vvedite G ";
        cin>>g;

        x1=g-d;
        y1=f*x1+g;
        yrav2=a*pow(x1,3)+b*pow(x1,2)+c*x1+d;
        tret=c-f;
        discrim=sqrt(pow(b,2)-4*a*tret);
        // cout<<"Deskriminant: "<<discrim<<'\n';

        cout<<"Krivaya i pryamaya peresekaet'sya v tochkah:"<<'\n';

        cout<<"Tochka peresecheniya: "<<"("<<x1<<";"<<y1<<")"<<'\n';
        if (discrim>0)
        {
                x2=(-b+discrim)/(2*a);
                x3=(-b-discrim)/(2*a);
                y2=f*x2+g;
                y3=f*x3+g;
                cout<<"Tochka peresecheniya : "<<"("<<x2<<";"<<y2<<")"<<'\n';
                cout<<"Tochka peresecheniya : "<<"("<<x3<<";"<<y3<<")"<<'\n';
        }
        else if(discrim=0)
        {
                x2=-b/(2*a);
                y2=f*x2+g;
                cout<<"Tochka peresecheniya: "<<"("<<x2<<";"<<y2<<")"<<'\n';
        }
        else
        {
                cout<<" "<<'\n';
        }
       
}


lxa85 21-11-2011 08:40 1799655

Цитата:

Цитата keks666sex
Будит ли правильным такой вариант решения?
Если сначала решить систему уравнений аx3+bx2+сx+d=fx+g
где найдем x=g-d
и дискриминант D=sqrt(b^2-4az) где z=c-f
и с помощью дискриминанта найдем 2 корня
x2=(-b+дискриминант)/(2*a);
x3=(-b-дискриминант)/(2*a); »

Ну и чего здесь понаписано?
Почему Х стал константой g-d?
сколь я помню алгебра выглядит так:
аx3+bx2+сx+d=fx+g
аx3+bx2+(с-f)x=g-d
x(ax2+bx+c-f)=g-d

Liisa 10-12-2011 00:45 1812501

задача в си. на одномерный массив
 
Помогите, пожалуйста, решить задачку:
В одномерном массиве, состоящем из N целых элементов, вычислить:
1) произведение элементов массива с четными номерами;
2) сумму элементов массива, расположенных между первым и последним
нулевыми элементами.
Преобразовать массив таким образом, чтобы сначала располагались все
положительные элементы, а потом — все отрицательные (элементы, равные 0, считать положительными).
Вывести на экран в удобной и наглядной форме исходные данные и результаты.

Первый пункт я сделала, вот что получилось:

Код:

#include <stdio.h>
#include <conio.h>

int main(void)
{  float FMass[10] = {1,-2,3,-5,0,2,3,8,0,1};
  float proizv = 1; int i=0;


  clrscr();

  for(i=0;i<10;i++)  // print Fmass:
  {
      printf("\n FMass[%d] = %+12.1f",i,FMass[i]);
  }

// proizv:
  for(i=0;i<10;i=i+2)
  {
        proizv = proizv * FMass[i];
  }


  printf("\n\n  proizv =  %+12.1f", proizv);



  getch();
  return 1;
}

Хотя бы второй пункт подскажите?

Drongo 11-12-2011 16:25 1813259

Цитата:

Цитата Liisa
Первый пункт я сделала, вот что получилось: »

В принципе с первым пунктом просто. Единственное, что в чётных элементах значение ноль, так что произведение будет всегда равно нулю. А со вторым я бы сделал так:
Код:

...
  int IndexFirstNull, // Индекс первого нулевого значения
        IndexLastNull; // Индекс последнего нулевого значения
...
  // Вычисление первого значения с нулём
  // Начинаем поиск его с начала
  // И как только найдём, запоминаем break
  for(int i = 0; i < size; i++)
      if(FMass[i] == 0){
        IndexFirstNull = i;
        break;
        }
  // Вычисления последнего значения с нулём
  // Начинаем поиск его с конца массива
  // И как только найдём, запоминаем и break
  for(int i = size - 1; i >= 0; i--)
      if(FMass[i] == 0){
        IndexLastNull = i;
        break;
        }
  cout << endl;
  // Вывод значений между первым и последним нулевым элементом.
  for(int i = IndexFirstNull + 1; i < IndexLastNull; i++)
    cout << "FMass[" << i << "] = " << FMass[i] <<endl;

В общем виде так получилось
Код:

#include <iostream>
using namespace std;
#include <conio.h>

int main(void)
{
  int const size = 10; // Размер массива
  float FMass[size] = {1, -2, 3, -5, 0, 2, 3, 8, 0, 1};
  float proizv = 1;
  int IndexFirstNull, IndexLastNull;

  // Вывод массива
  for(int i = 0; i < size; i++){  // print Fmass:
      cout << "FMAss[" << i << "] = " << FMass[i] << endl;
    }

  // Вывод произведения чётных элементов массива
  for(int i = 0; i < size; i++)
      if(i % 2 == 0)
        proizv *= FMass[i];
  cout << "\nProizvedenie chetnih = " << proizv << endl;

  // Вывод суммы элементов массива,
  // расположенных между первым и последним нулевыми элементами.
  // Вычисление первого значения с нулём
  for(int i = 0; i < size; i++)
      if(FMass[i] == 0){
        IndexFirstNull = i;
        break;
        }
  // Вычисления последнего значения с нулём
  for(int i = size - 1; i >= 0; i--)
      if(FMass[i] == 0){
        IndexLastNull = i;
        break;
        }
  cout << endl;
  // Вывод значений между первым и последним нулевым элементом.
  for(int i = IndexFirstNull + 1; i < IndexLastNull; i++)
    cout << "FMass[" << i << "] = " << FMass[i] <<endl;

  getch();
  return 0;
}


Daswedoc 20-12-2011 12:38 1818621

Добрый день...
Помогите пожалуйста.
Задние лабы:
Для заданной матрицы сформулировать вектор из элементов её побочной диоганали.Добавить элементы полученого вектора к элемантам строки с инфексом K.Значение K вводиться.Исходная патрица задаеться в виде двумерного массива случайны образом.Вывести на экран исходную и результирующую мартицы.

Drongo 20-12-2011 22:20 1819026

Daswedoc, Есть какие-либо наработки, мысли? Для начала ознакомьтесь с Правилами Форума

Vadikan 20-12-2011 23:12 1819060

Drongo, лучше закрыть и открепить. Одна задача - одна тема.

Drongo 21-12-2011 23:20 1819798

Vadikan, Ок.

Закрыто, в связи с появлением правил раздела.


Время: 08:24.

Время: 08:24.
© OSzone.net 2001-