Модераторы: Poseidon

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Помогите плиз. Полный завал! 
:(
    Опции темы
Suriv
Дата 2.11.2008, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Хай всем! Помогите плз тут куча прогрмм надо написать, но я пока не совсем разобрался с паскалем. Кто сможет помогите.
1.Даны действительные числа a1, …, a20. Получить числа b1,…, b20, где bi– среднее арифметическое всех членов последовательности a1,… a20, кроме ai (i=1,2,…, 20).
2.Дано 50 вещественных чисел. Определить, сколько из них больше предыдущего и последующего чисел.
3.Даны целые числа а1,…, an , b1,…,bn. Верно ли, что эти две последовательности отличаются лишь порядком следования членов?
4.Дана строка. Группы символов, разделенные пробелами и не содержащие пробе-лов  внутри себя, называются словами. В тех слоях, которые оканчиваются сочета-нием букв  "ing", заменить это окончание на "ed".
5.Дана последовательность слов русского языка, между словами – запятая, за последним словом – точка. Напечатать в алфавитном порядке: все согласные буквы, которые не входят ни в одно слово.
PM MAIL   Вверх
VanHelsing
Дата 3.11.2008, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


ХОЧУ ВСЕ ЗНАТЬ!!!
**
Награды: 1



Профиль
Группа: Участник
Сообщений: 288
Регистрация: 3.1.2008
Где: Екатеринбург

Репутация: нет
Всего: 6



Ну во-первых вам в раздел помощи. А во-вторых какие-нибудь собственные наработки или идеи есть? И просто надо за вас все решить.

Это сообщение отредактировал(а) VanHelsing - 3.11.2008, 07:14


--------------------
PM MAIL   Вверх
Suriv
Дата 3.11.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Набросков нету так как пока дуб дубом в паскале, тока читать начал а порги желательно на завтра нужны. Если можно то решение smile 
PM MAIL   Вверх
darkart
Дата 3.11.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Цитата(Suriv @  2.11.2008,  22:52 Найти цитируемый пост)
1.Даны действительные числа a1, …, a20. Получить числа b1,…, b20, где bi– среднее арифметическое всех членов последовательности a1,… a20, кроме ai (i=1,2,…, 20).


Код

program AriphmeticalMean;
const
  MAX_NUMBERS = 20;{максимальное количество элементов массива(последовательности)}
type
  TArray = array[ 1..MAX_NUMBERS ] of real;{описание типа - массив}

procedure InputArray( var Arr : TArray );
{процедура ввода массива Arr}
var
  i : integer;{счетчик}
begin
  for i := 1 to MAX_NUMBERS do{для каждого элемента массива}
    read( Arr[ i ] );{читаем очередной элемент массива}
  readln;{ждем entera}
end;

procedure PrintArray( var Arr : TArray );
{процедура печати массива Arr}
var
  i : integer;{счетчик}
begin
  for i := 1 to MAX_NUMBERS - 1 do{для каждого элемента массива, кроме последнего}
    write( Arr[ i ]:5:2, ' ' );{печатаем елемент и пробел}
  writeln( Arr[ MAX_NUMBERS ]:5:2 );{печатаем последний элемент с переводом курсора на новую строку}
end;

procedure GenerateArray( var Arr : TArray; fMinValue, fMaxValue : real );
{процедура генерации массива со значениями от fMinValue до fmaxvalue}
var
  i : integer;{счетчик}
  fTemp : real;{fTemp - вспомогательная переменная для обмена значениями}
begin
  if( fMinValue > fMaxValue ) then{если меньшее переданное значение оказалось больше, то меняем меньшее и большее местами}
  begin
    fTemp := fMinValue;
    fMinValue := fMaxValue;
    fMaxvalue := ftemp;
  end;

  fTemp := fMaxValue - fminValue;{вычисление длины между fMaxValue и fminValue}

  for i := 1 to MAX_NUMBERS do{для каждого элемента массива - заполнение случайным значением}
    Arr[ i ] := fMinValue + fTemp * random;
end;

procedure FillArray( var ArraySrc, ArrayDst : TArray );
{процедура заполнения элементов массива ArrayDst по условию}
var
  i : integer;{счетчик}
  fSum : real;{сумма элементов массива ArraySrc}
begin
  fSum := 0.0;{инициализация суммы}
  {считаем сумму элементов}
  for i := 1 to MAX_NUMBERS do
    fSum := fSum + ArraySrc[ i ];
  for i := 1 to MAX_NUMBERS do{для каждого элемента массив ArrayDst вычисляем значение}
    ArrayDst[ i ] := ( fSum - ArraySrc[ i ] ) / ( MAX_NUMBERS - 1 );
end;

var
  ArrayA, ArrayB : TArray;

begin
  randomize;{ инициализация генератора случайных чисел}
  writeln( 'Generate array...' );
  GenerateArray( ArrayA, 0, 10 );{генерация массива}
  {Если нужен ввод массива
  writeln( 'Please entera an array:' );
  InputArray( ArrayA );
  }
  writeln( 'Source array:' );
  PrintArray( ArrayA );{печать исходного массива}

  FillArray( ArrayA, ArrayB );{заполнение массива по условию}

  writeln( 'Result array:' );
  PrintArray( ArrayB );{печать получившегося массива}

  readln;{ожидание ввода}
end.


PM MAIL WWW ICQ Skype GTalk   Вверх
volvo877
Дата 3.11.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена! 
PM MAIL   Вверх
Suriv
Дата 3.11.2008, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



to darkart
Спасибо большое. 
Люди еще кто нибудь поможет? Я млин понимаю программу, но не могу написать программным кодом)) 
PM MAIL   Вверх
darkart
Дата 3.11.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Цитата(Suriv @  2.11.2008,  22:52 Найти цитируемый пост)
3.Даны целые числа а1,…, an , b1,…,bn. Верно ли, что эти две последовательности отличаются лишь порядком следования членов?

Код

program EqualSequences;
const
  MAX_NUMBERS = 5;{количество элементов в массиве}
type
  TArray = array[ 1..MAX_NUMBERS ] of integer;{тип - массив}
procedure InputArray( var Arr : TArray );
{процедура ввода массива Arr}
var
  i : integer;{счетчик}
begin
  for i := 1 to MAX_NUMBERS do{для каждого элемента массива}
    read( Arr[ i ] );{читаем очередной элемент}
  readln;{ждем entera}
end;

procedure PrintArray( var Arr : TArray );
{процедура печати массива}
var
  i : integer;{счетчик}
begin
  for i := 1 to MAX_NUMBERS - 1 do{для каждого элемента массива, кроме последнего}
    write( Arr[ i ], ' ' );{печатаем очередной элемент и пробел}
  writeln( Arr[ MAX_NUMBERS ] );{печатаем последний элемент с переводом курсора на новую строку}
end;

procedure SortArray( var Arr : TArray );
{процедура сортировки массива, использован пузырек}
var
  i, j : integer;{счетчики}
begin
  for i := 1 to MAX_NUMBERS - 1 do
    for j := i + 1 to MAX_NUMBERS do
      if( Arr[ i ] > Arr[ j ] ) then
      begin
        {обмен значений между i-м и j-м элементом, основанный на свойстве xora}
        Arr[ i ] := Arr[ i ] xor Arr[ j ];
        Arr[ j ] := Arr[ i ] xor Arr[ j ];
        Arr[ i ] := Arr[ i ] xor Arr[ j ];
      end;
end;

function IsSequencesEqual( var ArrA, ArrB : TArray ) : boolean;
{функция возвращает true если массив ArrA равен массиву ArrB поэлементно}
var
  bRes : boolean;{результат}
  i : integer;{счетчик}
begin
  bRes := true;{инициализация результата}
  i := 1;{инициализациясчетчика}
  while( bRes and ( i <= MAX_NUMBERS ) ) do{пока очередная пара элементов массива равнв и не дошли до конца массива}
  begin
    bRes := ArrA[ i ] = ArrB[ i ];{равна ли очередная пара}
    inc( i );{переход к следующей паре}
  end;

  IsSequencesEqual := bRes;{возвращаем значение}
end;

var
  Arr1, Arr2 : TArray;{исходные массивы}

begin
  {ввод массивов}
  writeln( 'Please enter an array1:' );
  InputArray( Arr1 );
  writeln( 'Please enter an array2:' );
  InputArray( Arr2 );

  {печать исходных массивов}
  writeln( 'Source array A:' );
  PrintArray( Arr1 );
  writeln( 'Source array B:' );
  PrintArray( Arr2 );

  {сортировка массивов}
  SortArray( Arr1 );
  SortArray( Arr2 );

  {печать отсортированных массивов}
  writeln( 'Sorted array A:' );
  PrintArray( Arr1 );
  writeln( 'Sorted array B:' );
  PrintArray( Arr2 );

  {печать результата}
  write( 'Result:' );

  if( IsSequencesEqual( Arr1, Arr2 ) ) then
    writeln( 'EQUAL' )
  else
    write( 'NOT EQUAL' );

  readln;{ожидание ввода}
end.


PM MAIL WWW ICQ Skype GTalk   Вверх
mr.Anderson
Дата 3.11.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Задача 3. Массивы будут отличаться лишь порядком членов, если:
  •  Суммы элементов и той и другой последовательности равны.
  •  В каждой последовательности есть все элементы другой последовательности.
Решать можно следующим образом. Сумму подсчитать можно еще при вводе массивов. Затем сравним суммы, если они не равны, нет смысла работать дальше. Если равны, то тут посложнее. Один из вариантов - завести доп. массив размером в максимальный элемент обоих последовательностей. Его можно найти во время ввода элементов. В общем, приблизительный код следующий:
Код

#include <stdio.h>

void main()
{
    const m = 20;
    int sa, sb;
    int a[m], b[m];
    int max = -32768;
    int *check; //доп.массив

    for (int i = 0; i<m; i++)
    {
        printf("Введите a[%d]: ", i+1);
        scanf("%d", &a[i]);
        sa += a[i];
        if (a[i] > max)
            max = a[i];
    }
    for (int j = 0; j<m; j++)
    {
        printf("Введите b[%d]: ", j+1);
        scanf("%d", &b[j]);
        sb += b[j];
        if (b[j] > max)
            max = b[j];
    }
    
    check = new int[max];
    for (int k = 0; k<max; k++)
        check = 0;

    //дальше проверим, все ли элементы одинаковы
    for (int x = 0; x<m; x++)
    {
       check[a[x]] += 1;
       check[b[x]] -= 1;
    }
 
    //а теперь проверим. Доп. массив должен быть нулевым, если все элементы одинаковы
    int f = 0;
    for (int z = 0; z<max; z++)
        if (check[z] != 0)
        {
            printf("Массивы отличаются. И не только последовательностью элементов.");
            f = 1;
            break;
        }

    if (!f)
        printf("Массивы одинаковы, либо различаются только последовательностью членов.");

    delete []check;
}


ЗЫ Блин... smile darkart, ты меня опередил на две минуты.
ЗЗЫ методы у нас разные, так что какой уж больше подойдет. Мой покороче кажись, твой, может, побыстрее, не знаю, не проверял.

Это сообщение отредактировал(а) mr.Anderson - 3.11.2008, 18:52


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Suriv
Дата 3.11.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Спасибо вам большое что помогаете. Только mr.Anderson сори забыл предупредить тему перенесли с паскаля я не добавил что программа должна быть написана на паскале. Если посто я на с++ покажу меня убьют)))
PM MAIL   Вверх
mr.Anderson
Дата 3.11.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Suriv, ну, ща перепишем.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Suriv
Дата 3.11.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Я млин туп пока мы проходили пока только массивы и циклы. А я как раз еще и занятия пропутил, А вот теперь аттестация я никак не могу сделать сам вчера всю ночь сидел прочитал все что проходили ну это теория а ведь без практики некуда, но на практику времени нету. Вот и обратился к вам за помощью. Еще можно попросить если еще будете писать программы сильно не заморачивайтесь, а то я как не все еще операторы должен знать. Сорь что еще условия дектуюsmile
PM MAIL   Вверх
mr.Anderson
Дата 3.11.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Код

program Prog3;
const
  M = 20;
var
  Sa, Sb: Integer;
  I, J: Integer;
  A, B: Array [1..M] Of Integer;
  Max: Integer;
  Check: Array [0..32767] Of Integer; //больше 32767 заведомо быть не может
  F: Boolean;
begin
  //вообще, Check лучше сделать динамическим, но я не помню, как это делается в паскале
  for I := 1 to M do
  begin
    writeln('Введите A[', I+1, ']: ');
    readln(A[I]);
    writeln('Введите B[', I+1, ']: ');
    readln(B[I]);
    
    if A[I] > Max then
      Max := A[I];
    if B[I] > Max then
      Max := B[I];
  end;

  for I := 0 to Max do
    Check[I] := 0;

  for I := 0 to Max do
  begin
    inc(Check[A[I]]);
    dec(Check[B[I]]);
  end;

  //проверим
  F := 0;
  for I := 0 to Max do
    if Check[I] <> 0 then
    begin
      writeln('Массивы отличаются. И не только последовательностью элементов.');
      F := 1;
      break;
    end;

  if not F then
    writeln('Массивы одинаковы, либо различаются только последовательностью членов.');
end.


Добавлено через 18 секунд
Suriv, моя через циклы и массивы только сделана.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Suriv
Дата 3.11.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Во кул спасиб. Мне  так и надо черз циклы массивы условные операторы. мы ще толком не вникли в паскаль начало первого курса все таки.
PM MAIL   Вверх
mr.Anderson
Дата 3.11.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



Задача 4. Простой проход по строке, выявление слов, исправление концовки.
Код

program Prog4;
var
  S: String;
  I: Integer;
  Word: String;
  
begin
  readln(S);

  Word := '';
  for I := 1 to Length(S) do
    if S[I] <> ' ' then
      Word := Word + S[I]
    else
    begin
      if Copy(Word, Length(Word)-3, 3) = 'ing' then
      begin
        Word := Copy(Word, 1, Length(Word)-3) + 'ed';
        writeln(Word);
      end;
   
     Word := '';
    end;

  if Word <> '' then
    if (Copy(Word, Length(Word)-3, 3) = 'ing') then
    begin
      Word := Copy(Word, 1, Length(Word)-3) + 'ed';
      writeln(Word);
    end;
end.

Код не проверял, могу наврать.

Добавлено через 1 минуту и 10 секунд
2-ю не понял, 5-я делается по аналогии с 4-й.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Suriv
Дата 3.11.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.11.2008

Репутация: нет
Всего: нет



Что то паскаль ругается в 3 задачи возле f:boolean;  говорит вот такую речь (пока еще не во всех ошибках разобрася) error 22 Structure too large. Что то типа структура длинная тоже))). Спасибо за 4 щас посмотрю.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.