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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2007, 18:38   #1
ribnik
 
Регистрация: 02.07.2007
Сообщений: 7
По умолчанию Пара задач на C++

Привет, срочно нужно решение двух задач, они простые, на паскале могу каждую за 5мин набить, а надо их на Си =((
Проблема в том что я синтаксиса не знаю, есть книга, но времени совсем нет :[
Сдавать нужно 4го, чтоб я их оформил нужно уже завтра иметь код и экзешники.
Воть условие
1.Задание общее:
Составить программу нахождения экстремального элемента или его порядкового номера при заданном одномерном массиве А из n элементов (или массивах А и С по n элементов в каждом).
Мое конкретное:
Определить номер наименьшего по абсолютной величине элемента массива А.

2. Задание общее:
Для получения результата составить функцию исходными данными которой являются два массива X1, X2, ..Xn и Y1, Y2, ..Yn c заданным числом n элементов (или 1 из них) или матрица А из n строк и n столбцов.
Мое конкретное:
Число перемен знака в данном массиве X1, X2, ..Xn.

На общее вообще можно не смотреть, от меня требуется только конкретное мое.
Будет у кого время, помогите

почта ribnik@mail.ru

p.s.: не уверен что даже нормально работающий компилятор смогу надыбать
ribnik вне форума Ответить с цитированием
Старый 03.07.2007, 00:16   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Вот, но на C++, а не C.
1.

Код:
#include <iostream.h>

inline int abs(int value)
{
  return value>0?value:-value;
}

int main()
{
  int *A,n;
  cout<<"Input n\n";
  cin>>n;
  if (n>0)
  {
    A=new int[n];
    for (int i=0;i<n;i++)
      cin>>A[i];
    int index=0;
    for (int i=1;i<n;i++)
      if (abs(A[i])<abs(A[index]))
        index=i;
    cout<<"Index = "<<index;
    delete[] A;
  }
  else
    cout<<"n must be >0";
  cin.get();
  return 0;
}
2.

Код:
#include <iostream.h>

int main()
{
  int *X,n;
  cout<<"Input n\n";
  cin>>n;
  if (n>0)
  {
    X=new int[n];
    for (int i=0;i<n;i++)
      cin>>X[i];
    int count=0,index=0;
    bool plus;

    for (;index<n&&!X[index];index++);

    plus=X[index]>0;
    index++;
    for (;index<n;index++)
      if ((X[index]>0)!=plus&&X[index])
      {
        count++;
        plus=X[index]>0; 
      }
    cout<<"Index = "<<index;
    delete[] X;
  }
  else
    cout<<"n must be >0";
  cin.get();
  return 0;
}
Carbon вне форума Ответить с цитированием
Старый 03.07.2007, 02:21   #3
ribnik
 
Регистрация: 02.07.2007
Сообщений: 7
По умолчанию

Спасибо большое! Этой ночью можно будет поспать
Если бы еще несколько комментариев
ribnik вне форума Ответить с цитированием
Старый 03.07.2007, 08:45   #4
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от ribnik Посмотреть сообщение
Если бы еще несколько комментариев
Ну если на паскале смогбы, то проблема в чем? Ключевые слова такие же (if, for, {/}=begin/end)
Alex21 вне форума Ответить с цитированием
Старый 03.07.2007, 11:32   #5
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

return value>0?value:-value;
означает, если value>0, вернуть value, иначе -value.

A=new int[n]; - создание динам. массива
delete[] A; - его удаление

cout<<"Input n\n";
cin>>n;
соответственно вывод и ввод

cin.get(); - ожидание нажатия клавиши

for (;index<n&&!X[index];index++); - цикл такой, с пропуском инициализации

!X[index] ~ X[index]=0 в паскале

&& - логическое И.

index++; ~ inc(index) в паскале

((X[index]>0)!=plus&&X[index]) - условие всегда пишется в скобках, then ставить не надо, не обязательно ставить скобки (в отличие от паскаля) в выражении (X[index]>0)!=plus (тут с приоритетами в операциях всё нормально).

Цикл for (a;b;c) работает так: сначала выполняется a, затем проверяется условие b, выполняется тело цикла, затем выполняется c, проверяется b, тело цикла, c, b, тело цикла и т.д.

X[index] ~ X[index]<>0 в паскале
Carbon вне форума Ответить с цитированием
Старый 03.07.2007, 11:54   #6
ribnik
 
Регистрация: 02.07.2007
Сообщений: 7
По умолчанию

Разобрался, спасибо.
Как описать фор, инкремент я знал, а насчет ввода/вывода не читал еще =)

С массивом тоже вроде понял.
ribnik вне форума Ответить с цитированием
Старый 03.07.2007, 13:37   #7
ribnik
 
Регистрация: 02.07.2007
Сообщений: 7
По умолчанию

Вторая, по-моему, возвращает номер элемента на котором остановился курсор, тоесть последнего, получается равному n.
А нужно количество перемен знака, тоесть, к примеру
n=3
5
0
-5
вывод - "1"

а программа выводит 3
ribnik вне форума Ответить с цитированием
Старый 03.07.2007, 22:01   #8
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

а программа выводит 3

Поменяй

cout<<"Index = "<<index; на cout<<"Count = "<<count;
Carbon вне форума Ответить с цитированием
Старый 05.07.2007, 22:47   #9
ribnik
 
Регистрация: 02.07.2007
Сообщений: 7
По умолчанию

Cпасибо большое, все сдал.
ribnik вне форума Ответить с цитированием
Старый 20.01.2008, 19:31   #10
ribnik
 
Регистрация: 02.07.2007
Сообщений: 7
По умолчанию

Благополучно разобрался с Си и даже кое-какие проги сам набил под конец прошлой сессии =)
В этом семестре начали изучать Дельфи
И опять я затянул все под конец...

Задача такая:
Имеется возможность выбора недели, в каждой неделе выбора дня. Каждый день задаётся 5 отметок температур. Выдавать по требованию: - день с наибольшей средней температурой за месяц; - максимальную и минимальную температуру за месяц.
Для сохранения данных использовать типизированные файлы. Файлы исходных данных формировать программным способом.


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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HELP!!!Пара элементарных задач... SeRenDipiTy Помощь студентам 3 19.04.2008 19:50
Пара вопросов... ~N@um~ Помощь студентам 6 14.07.2007 09:49
Пара вопросов. Kukkk Общие вопросы Delphi 5 03.07.2007 11:40
Пара вопросов xak2 Общие вопросы Delphi 6 08.05.2007 20:58