Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 31.10.2011, 22:58   #1
Sampet
 
Регистрация: 16.05.2011
Сообщений: 3
Печаль Молю о снисхождении)

Еще раз прошу помощи в нелегком деле - программирование, всё таки первый курс МехМата МГУ не так крут, там не учат прогать, но делать это заставляют, я бы это сделала на Паскале, но Си... Я не знаю синтаксиса. Вот, поэтому помогите, пожалуйста)

1. Найти сумму элементов массива, расположенных до последнего положительного элемента. (Имеется в виду, что если -1 2 3 4 -2 -3 4 3 2 -2 -3, то до двойки предпредпоследней, к примеру).

2. Найти количество положительных элементов между максимальным и минимальным элементами массива.

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


Заранее спасибо. Машик)
Sampet вне форума
Старый 31.10.2011, 23:35   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Я не знаю синтаксиса.
Могу помочь только ссылкой, а если Паскаль знаете, то аналогию провести не сложно будет.
http://www.cplusplus.com/reference/
psycho-coder вне форума
Старый 31.10.2011, 23:48   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Sampet Посмотреть сообщение
Еще раз прошу помощи в нелегком деле - программирование, всё таки первый курс МехМата МГУ не так крут, там не учат прогать, но делать это заставляют, я бы это сделала на Паскале, но Си... Я не знаю синтаксиса. Вот, поэтому помогите, пожалуйста)

1. Найти сумму элементов массива, расположенных до последнего положительного элемента. (Имеется в виду, что если -1 2 3 4 -2 -3 4 3 2 -2 -3, то до двойки предпредпоследней, к примеру).
Просто развлекуха
Код:
int main()
{
bool g = true;
  for(int i; i < n; /* длина массива*/ i++)
  {
    if(r[i] > 0 && g)
      {
          cout<<r[i];
          g = false;
      } 
  }
}
Цитата:
2. Найти количество положительных элементов между максимальным{} и минимальным элементами массива.

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


Заранее спасибо. Машик)
Дальше лениво. Думай проще и люди к тебе потянуться.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 31.10.2011, 23:51   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Sampet

я бы это сделала на Паскале

продемонстрируй, что ты достойна того, чтобы тратить на тебя время, покажи как бы ты это сделала на паскале.
PS. А вообще, не расстраивайся, ведь девушек в армию не берут, так что максимум что тебе светит - это несдача и отчисление. Ну будешь тогда домохозяйкой вместо математички, тоже вариант... :D
Rififi вне форума
Старый 01.11.2011, 00:25   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
Злость Ну и нафига неправильный код?

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Просто развлекуха
Код:
int main()
{
bool g = true;
  for(int i; i < n; /* длина массива*/ i++)
  {
    if(r[i] > 0 && g)
      {
          cout<<r[i];
          g = false;
      } 
  }
}
Шуточки у кого-то...

Пункт первый: если программируете в современной среде разработки, то при создании проекта был автоматически сгенерирован файл кода с псевдофункцией main() (она может называться t_main или как-то ещё) - точкой входа в приложение. Это - начало программы, точка, в которую изначально будет передано управление.

Пункт второй: в отличие от Паскаля, C++ не разделяет блоки объявления переменных и кода. Этим можно и нужно пользоваться.

Пункт третий: для любой программы, важно понимать, как она собирается общаться с окружающей средой. C++ имеет два "класса" способов работы с консолью: унаследованный от C и свой собственный. Пока воспользуемся первым.

Пункт четвёртый и важный: C++ активно использует концепцию указателей. Указатель - это переменная, хранящая чей-то адрес, то есть, по указателю можно обратиться к тому, на что он указывает и, что самое важное, если несколько указателей указывают на одну и ту же переменную, любой из них можно использовать для изменения этой переменной.

Пятое: C/C++ предполагает активное использование функций. Аргументы в функцию можно передать по значению (при этом функция получает свою копию, изменения которой не отразятся на оригинале) и (см. пункт 4) можно передать адрес переменной.

Теперь некоторый ликбез: в примере объявляется переменная, пользователю предлагается ввести её значение, значение читается, после чего увеличивается на 1 и выводится "на экран" (на самом деле - в т.н. "стандартный поток вывода", а уж появление его содержимого на экране - забота операционной системы).
Код:
//Это директива препроцессора. Не вдаваясь в подробности,
//она позволяет использовать функции, определённые в библиотеке.
//stdio содержит определения printf, scanf, которыми мы и воспользуемся
#include <stdio.h>
//Точка входа в программу
//Желательно сразу привыкнуть писать комментарии, экономит нервы в дальнейшем
//{ и } - операторные скобки, аналог begin/end Паскаля
//void - специальное слово; в качестве аргумента функции оно означает,
//что функция не принимает никаких аргументов
int main(void){
    //Объявляем целочисленную переменную
    int variable;
    //Обратите внимание, значение variable в этот момент может быть любым.
    //Так что код Smitt&Wesson выше можно использовать разве что в качестве генератора случайных чисел
    //Вывод строки на экран. \n в конце - управляющий символ, про них можно прочитать много где.
    //Этот переводит курсор на новую строку после вывода сообщения
    printf("Input some number.\n");
    //Читаем значение переменной. & означает, что в функцию передаётся
    //указатель на variable - см. замечание 4
    //scanf - функция с переменным числом аргументов. Форматная строка (первый аргумент)
    //описывает, какие аргументы ожидаются потом. %d означает, что следующим
    //ожидается указатель на обычное целое число (int)
    scanf("%d", &variable);
    //Теперь variable содержит введённое пользователем значение
    //Это оператор инкремента. Эквивалентные записи: 
    //variable+=1; variable=variable+1; variable++;
    //Последнее - постфиксная форма инкремента, пока её использовать не стоит
    ++variable;
    //Вывод. printf аналогична scanf, но ожидает значения переменных, а не указатели
    //(и, соответственно, после её вызова variable гарантированно не изменится)
    //Значение второго аргумента (который ожидается целым числом)
    //будет подставлено вместо %d
    printf("New value is %d", variable);

    //return осуществляет выход из функции, возвращая вызвавшему определённое
    //значение. В случае main значение возвращается коду, запустившему программу
    //Традиционно, признаком того, что в программе всё прошло хорошо,
    //является 0
    return 0;
}

Ещё один пример - попробуйте сами понять, что он делает.
Код:
#include <stdio.h>

int main(void){
    int a, b;
    printf("Enter two integers, divided by space.\n");
    scanf("%d %d", &a, &b);
    if(a>b){
        printf("Result is %d", a);
    } else {
        printf("Result is %d", b);
    }
    return 0;
}
Abstraction вне форума
Старый 01.11.2011, 00:38   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Я ведь написал:
Цитата:
Просто развлекуха
А Вы сделали далеко идущие выводы... Ха-ха-ха.
Что он делает? Да в принципе ничего.
Код:
if(a>b){
        printf("Result is %d", a);
    } else {
        printf("Result is %d", b);
    }
А что делает этот код?
IF IF THEN THEN ELSE ELSE
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 01.11.2011, 00:53   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
IF IF THEN THEN ELSE ELSE
Не могу не вспомнить:
Цитата:
...Так, следующий фрагмент вполне допустим при программировании на PL/I, но написать ТАКОЕ может только идиот со справкой:
Код:
if if = then then
    then = else;
else else = if;
(С. Макконнелл, "Совершенный код")

Последний раз редактировалось Abstraction; 01.11.2011 в 01:07.
Abstraction вне форума
Старый 01.11.2011, 01:04   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Smitt&Wesson

А что делает этот код?
IF IF THEN THEN ELSE ELSE


Обычная проверка условия, написанная на языке TormozPascal.
Этот язык специально придуман для тормозов и людей с IQ < 50.
Все операторы в нём повторяются дважды (в особо тяжелых случаях - трижды)

Например, программа из темы http://www.programmersforum.ru/showthread.php?t=171161
(Дан одномерный массив чисел а. Cформируйте такой массив b, который содержит копию положительных элементов массива а.)
может быть переписана на TormozPascal так:

Код:
var var
  a:array array[1..100] of of integer integer;
  b:array array[1..100] of of integer integer;
  na:integer integer;
  nb:integer integer;
  i:integer integer;
BEGIN BEGIN
  write write ('n=');
  read read (na);
  if if (na>100) then then Begin Begin
    writeln writeln('n слишком большое');
    exit exit;
  end end;
  randomize randomize;
  For For i:=1 to to na do do
    a[i]:=random random(22)-5;
  writeln writeln('Исходный массив:');
  for for i := 1 to to na do do Begin Begin
    write write(a[i]:5,' ');
  end end;
  nb := 0;
  for for i := 1 to to na do do
    if if (a[i]>0) then then Begin Begin
      nb := nb+1;
      b[nb] := a[i];
    end end;
  writeln writeln;
  writeln writeln('Результат:');
  for for i := 1 to to nb do do Begin Begin
    write write(b[i]:5,' ');
  end end;
END END.
Rififi вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Молю о помощи CoCoS БД в Delphi 2 10.04.2009 13:47