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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pomogite!!! prostaya zada4ka =))) 
:(
    Опции темы
mkuint
Дата 21.5.2005, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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



I eshe voprosik, nado napisat' fynkciu dlya perevorota stroki a potom vblzvat' ee v case, t.e. nazhimau '1' i mne perevora4ivaet stroky


Pomogite plz!!!!
PM MAIL   Вверх
NoeR
Дата 21.5.2005, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



На Делфи пойдет? smile
--------------------
По факту пропажи мужа, возбуждено... Два соседа.Если у Вас проблемы с ребенком, спросите у жены, может, это не Ваши проблемы!>>> NoeR++ <<<
PM MAIL ICQ   Вверх
chipset
Дата 21.5.2005, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



М
 
1. Название темы должно отражать её суть.
2. Не должно быть более одного вопроса в одной теме.
3. Тема не соответствует разделу C++:Общие вопросы и перенесена поэтому отсюда



--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
gepard
Дата 22.5.2005, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(mkuint @ 21.5.2005, 20:56)
вести последовательность целых чисел. Найти в ней значение, которое ближе всего к среднему значению.
Вот на Си:
Код

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

void main()
{
    int mass[10];
    double sred = 0;
    double nearest = 0;
    
    srand(time(0));
    for (int i = 0; i < 10; i++)
    {
        mass[i] = rand()%2500;
        sred += mass[i];
        printf("%d ", mass[i]);
    }
    printf("\n");
    sred /= 10;

    nearest = mass[0]    ;
    for (i = 0; i < 10; i++)
        if (fabs(sred - nearest) > fabs(sred - mass[i]))
            nearest = mass[i];
    
    printf("%f(%f)\n", sred, nearest);
}



--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Payne
Дата 22.5.2005, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Детектив
*


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

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



Зря ты не написал, на каком языке тебе нужно все это реализовать. Ну ладно, вроде у тебя там в вопросе case проскочил, значит пишу на Delphi.

Цитата(mkuint @ 21.5.2005, 20:56)
I eshe voprosik, nado napisat' fynkciu dlya perevorota stroki a potom vblzvat' ee v case, t.e. nazhimau '1' i mne perevora4ivaet stroky

Надеюсь я правильно понял вопрос: если введена строка "Строка" то при перевороте должно получиться "акортС". Так? Значит, читай дальше.
Предлагаю такую функцию для переворота строки:

Код

function mirror (str: string): string;
var
  temp: string [1]; //эта переменная будет хранить один символ из строки
  i: integer; //счетчик цикла
begin
  for i := 1 to Length (str) do
  begin
    temp := copy (str, i+1, 1); //копируем символ с номером i+1 в temp
    delete (str, i+1, 1); //удаляем скопированный символ
    str := temp + str; //записываем скопированный символ в начало строки
  end;
  result := str;
end;

Теперь ты можешь юзать эту функцию где угодно, также и в case. Например, дана у тебя строковая переменная Text. Чтобы ее перевернуть, нужно написать mirror (Text).
Я в своей программе делал так:

Код

{обрабатываю нажатие клавиши на форме}
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case key of //если нажата клавиша...
    '1': begin //... "1", то вывести текст на канву...
           Text := mirror (Text);
           Form1.Canvas.TextOut(10, 150, Text);
         end;
  else //...иначе...
    begin //прибавить к переменной Text символ нажатой клавиши
      Text := Text + key;
      Form1.Canvas.TextOut(10,100,Text);
    end;
  end; //else
end;

Этот код был написан просто для проверки. На нем я просто проиллюстрировал, как ты можешь юзать функцию переворота строки.
PM MAIL WWW ICQ Skype   Вверх
Payne
Дата 22.5.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Детектив
*


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

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



Цитата(mkuint @ 21.5.2005, 20:56)
Ввести последовательность целых чисел. Найти в ней значение, которое ближе всего к среднему значению

Вот, написал небольшую прогу на Delphi, которая делает это:

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit; //Сюда будем вводить числа
    Label1: TLabel; //Пояснение "Введите очередное число"
    Button1: TButton; //Кнопка "Добавить"
    Memo1: TMemo; //Список всех введенных чисел
    Button2: TButton; //Кнопка "Вычислить"
    Label2: TLabel; //Пояснение "Ближайшее к среднему значение"
    Edit2: TEdit; //Сюда выведем это значение
    Edit3: TEdit; //Здесь будет среднее значение. Т.к. я юзал тип Integer, то значение округляется
    Button3: TButton; //Кнопка "Очистить" - очищает все использованные переменные и поле Memo
    Label3: TLabel; //Пояснение "Среднее значение"
    procedure Button1Click(Sender: TObject); //С этим, думаю, все понятно...
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Val_Count: integer = 0; //количество введенных значений
  Middle_Val: integer = 0; //среднее значение
  Near_Val: integer; //ближайшее к среднему значение
  Values: array of integer; //динамический массив введенных значений

implementation

{$R *.dfm}

{добавление числа в Memo}
procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc (Val_Count); //увеличим счетчик введенных значений на единицу
  Memo1.Lines.Add (Edit1.Text);
  Edit1.Text := '0'; //для удобства очищаем поле Edit1...
  Edit1.SetFocus; //...и устанавливаем на него фокус ввода
end;

{рассчет}
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer; //счетчик циклов
begin
  SetLength (Values, Val_Count);
  for i := 0 to (Val_Count-1) do //в этом цикле мы заполним массив...
  begin
    Values[i] := StrToInt(Memo1.Lines[i]); //...для чего будем последовательно считывать строки в Memo
    Middle_Val := Middle_Val + Values[i]; //Заодно вычислять сумму элементов...
  end;
  Middle_Val := round (Middle_Val / Val_Count); //...а здесь вычислим среднее значение, поделив сумму на кол-во

  Edit3.Text := IntToStr(Middle_Val);
  Near_Val := Values[0]; //будем считать, что наиболее приближенное к среднему значение в массиве первое...

  for i := 0 to (Val_Count-1) do
  begin
    if abs (Middle_Val - Near_Val) >= abs (Values[i] - Middle_Val) then
      Near_Val := Values[i]; //...и будем сравнивать модули разностей... короче, думаю, можно разобраться :)
  end;
  Edit2.Text := IntToStr (Near_Val); //после всех вычислений выводим наиболее приближенное к ср. значение
end;

{очистка переменных и Memo}
procedure TForm1.Button3Click(Sender: TObject);
begin
  Middle_Val := 0;
  Val_Count := 0;
  Memo1.Clear;
  Edit1.Text := '0';
  Edit1.SetFocus;
  Edit2.Text := '0';
  Edit3.Text := '0';
end;
end.

Надеюсь, этот код тебе поможет smile .
PM MAIL WWW ICQ Skype   Вверх
mkuint
Дата 24.5.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если не сложно, можно написать на TurboC-ях!!!
PM MAIL   Вверх
gepard
Дата 24.5.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Мой пример скомпиль в ТурбоСи. Должно прокатить.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mkuint
Дата 24.5.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(gepard @ 24.5.2005, 14:39)
Мой пример скомпиль в ТурбоСи. Должно прокатить.

Твой то работает, но хотелось бы видеть, чтоб не рандомом выбирал числа, а чтоб вводились, я знаю что надо запихнуть ввод в цикл, запихиваю, но ннеправильно работает прога
PM MAIL   Вверх
gepard
Дата 25.5.2005, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Закежь, как запихиваешь...


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mkuint
Дата 25.5.2005, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



всё ок, спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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