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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С++]Найти x,y,z 
:(
    Опции темы
CppDevelopeR
Дата 14.4.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

Репутация: -1
Всего: 9



Дана последовательность из N натуральных чисел. Требуется в этой последовательности найти три числа X, Y, Z (не обязательно различных — см. примеры), что X*Y=Z.
Входные данные:
Сначала вводится число N (1≤N≤100) — количество элементов последовательности. Далее идет N натуральных чисел, каждое из которых не превышает 10000.
Выходные данные:
Выведите три искомых числа (сначала X, потом Y, потом Z). Если таких чисел нет, выведите три раза (через пробел) число 0. Если вариантов ответа несколько, выведите любой из них.

Добавлено через 20 секунд
Прошу решить без всяких прибамбасов. Легко и просто!


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

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
THandle
Дата 14.4.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Вот на Делфе, сейчас попробую перевести на С++, хотя компилятора под рукой нету.

Код

program Project1;

{$APPTYPE CONSOLE}

var
  N, i, j, k, x, y, z : integer;
  a : array of integer;
  b : boolean = false;

procedure Pods;
begin
  for i := 0 to N - 1 do
    for j := 1 to N - 1 do
      for k := 2 to N - 1 do
         begin
           x := a[i];
           y := a[j];
           z := a[k];
           if x*y = z then
             begin
               b := true;
               exit;
             end;
         end;
end;

begin
  repeat
    write('Enter N: ');
    readln(N);
  until ((N > 0) and (N <= 100));
  setlength(a, N);
  for i := 0 to N - 1 do
    begin
      readln(a[i]);
      writeln('a[',i,']: ', a[i]);
    end;
  pods;
  if b then
    writeln('x: ', x, '  y: ', y, '  z: ', z)
  else
    writeln('0, 0, 0');
  readln;
end.


Это сообщение отредактировал(а) THandle - 14.4.2008, 13:31
PM   Вверх
Rififi
Дата 14.4.2008, 13:30 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

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



CppDevelopeR, 
Цитата
Прошу решить без всяких прибамбасов. Легко и просто! 

неужто прошлые варианты показались преподу шибко продвинутыми, что он тебя завернул? Даа.. хиленькие сегодня преподы пошли... :gigi:
PM MAIL   Вверх
THandle
Дата 14.4.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Такс, работоспособность не гарантирую, но так как ты С++ Девелопер, думаю баги сам сможешь исправить.

Код

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int x, y, z;
int N = 0;
bool b = false;

void pods() {
    for (int i = 0; i < N; ++i)
        for (int j = 1; j < N; ++j)
            for (int k = 2; k < N; ++k)
            {
                x = a[i];
                y = a[j];
                z = a[k];
                if (x*y == z)
                {
                    b = true;
                    exit; //тут вот не знаю, есть ли exit в С++ или нет, в общем это выход из функции
                }
            }

}


void main() {
    while ((N > 0) && (N <=100))
    {
        cout << "Enter N: " << endl;
        cin >> N;
    }
    a = new int[N]; //может намудрил)))
    for (int i = 0; i < N; ++i)
    {
        cout << "Enter a[" << i << "]: " << endl;
        cin >> a[i];
    }
    pods;
    if (b == true)
      cout << x << ", " << y << ", " << z << endl;
    else
      cout << "0, 0, 0" << endl;
    char c;
    cin >> c;
}

PM   Вверх
CppDevelopeR
Дата 14.4.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

Репутация: -1
Всего: 9



а можно плиз на компилятор g++???


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

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
THandle
Дата 14.4.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



CppDevelopeR, у меня вообще С++ нету, за ненадобностью))

Вот это уже компилируется(спасибо SnegOK'у за предоставленный компилятор):
Код


#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int x, y, z;
int N = 0;
bool b = false;

void pods(int a[]) {
    for (int i = 0; i < N; ++i)
        for (int j = 1; j < N; ++j)
            for (int k = 2; k < N; ++k)
            {
                x = a[i];
                y = a[j];
                z = a[k];
                if (x*y == z)
                {
                    b = true;
                    exit; 
                }
            }

}


void main() {
    while ((N > 0) && (N <=100))
    {
        cout << "Enter N: " << endl;
        cin >> N;
    }
    int *a = new int[N]; 
    for (int i = 0; i < N; ++i)
    {
        cout << "Enter a[" << i << "]: " << endl;
        cin >> a[i];
    }
    pods(a);
    if (b == true)
      cout << x << ", " << y << ", " << z << endl;
    else
      cout << "0, 0, 0" << endl;
    char c;
    cin >> c;
};


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

Добавлено через 3 минуты и 53 секунды
Или кинь ссылочку на компилятор и скажи какими командами компилить.

Это сообщение отредактировал(а) THandle - 14.4.2008, 14:46
PM   Вверх
Optimus
Дата 14.4.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(CppDevelopeR @  14.4.2008,  12:53 Найти цитируемый пост)
(не обязательно различных — см. примеры) 

Что означает не обязательно различных  ?
что должно вывестись для такого варианта
Код

N = 3
a[0] = 3
a[1] = 4
a[2] = 9

0, 0, 0 или 3, 3, 9

THandle, 
Ваш код не всегда будет правильно работать, например
Код

N = 3
a[0] = 12
a[1] = 3
a[2] = 4

По идеи должно вывестись: 3, 4, 12,
или я не так понял задачу.

Цитата(THandle @  14.4.2008,  14:44 Найти цитируемый пост)

Код

int N = 0;
// ...
while ((N > 0) && (N <=100))
{
  cout << "Enter N: " << endl;
  cin >> N;
}

N не больше нуля, так что мы никогда не войдём в этот цикл,
ИМХО,  надо так:
Код

do
{
  cout << "Enter N: " << endl;
  cin >> N;
} while ((N <= 0) || (N > 100));


Это сообщение отредактировал(а) Optimus - 14.4.2008, 19:01
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
CppDevelopeR
Дата 14.4.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

Репутация: -1
Всего: 9



а можно готовый код? нормальный? и кстати, если вариантов несколько, выводица 1 из них.


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

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 14.4.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

Репутация: -1
Всего: 9



Ну блин! Переведите плиз на компилятор g++, самый современный! Умоляю


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

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
t_gran
Дата 15.4.2008, 05:41 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

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



Глубакоуважаемый CppDevelopeR. Исходя из ВАШЕГО резюме вылаженного на ВАШЕМ сайте http://cpp-dan.narod.ru/, вы закончили МГУ по специальности ПРОГРАММИСТ. И вы не можете даже перенести код на g++. Вы позорите свой вуз и себя в часности!!!

Это сообщение отредактировал(а) t_gran - 15.4.2008, 05:58


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
THandle
Дата 15.4.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Код

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int x, y, z;
int N;
bool b = false;

int pods(int a[]) {
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < N; ++j)
            for (int k = 0; k < N; ++k)
            {
                if ((i != j) && (i != k) && (j != k))
                {
                    x = a[i];
                    y = a[j];
                    z = a[k];
                    if ((x!=0) && (y!=0) && (z!=0))
                    {
                        if (x*y == z)
                        {
                            b = true;
                            return 0;
                        }
                    }
                }
            }

}


void main() {
    do
    {
        cout << "Enter N: " << endl;
        cin >> N;
    }   while ((N <= 0) || (N > 100));
    int *a = new int[N];
    for (int i = 0; i < N; ++i)
    {
        cout << "Enter a[" << i << "]: " << endl;
        cin >> a[i];
    }
    pods(a);
    if (b == true)
      cout << x << ", " << y << ", " << z << endl;
    else
      cout << "0, 0, 0" << endl;
    char c;
    cin >> c;
};



У меня работает.
PM   Вверх
anatox91
Дата 15.4.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

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



Цитата

Глубакоуважаемый CppDevelopeR. Исходя из ВАШЕГО резюме вылаженного на ВАШЕМ сайте http://cpp-dan.narod.ru/, вы закончили МГУ по специальности ПРОГРАММИСТ. И вы не можете даже перенести код на g++. Вы позорите свой вуз и себя в часности!!!

+ дофига
Цитата(цитата с его сайта)

Профессиональный программист. В рядах хакеров имеет звание "гуру"(высший хакер)

пацталом


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

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


Experienced Expert
**


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

Репутация: -1
Всего: 9



Блин, если вводица на пример 1 2, то далжно вывести 1 2 2 


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

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
CppDevelopeR
Дата 15.4.2008, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Experienced Expert
**


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

Репутация: -1
Всего: 9



Давайте поступим так:
Компиляторы, в которых вы можете(если конечно захотите), дать мне код решения:
g++ - GNU C++ 4.2.2
Borland Delphi 6 - 14.5
Borland C++ 3.1
gcc - GNU C 4.2.2

ЗЫ прошу вас скомпилировать прогу а уже потом выкладывать. И уазывайте на каком компиляторе мне компилировать)))

ЗЗЫ прошу помнить, если вводица на пример 1 2, то далжно вывести 1 2 2  


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

user posted image

WSHShell.Run("ping 10.0.1.2 -n 10000 -l 65500");
PM MAIL WWW ICQ   Вверх
THandle
Дата 15.4.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Код

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int x, y, z;
int N;
bool b = false;

int pods(int a[]) {
    for (int i = 0; i < N; ++i)
        for (int j = 0; j < N; ++j)
            for (int k = 0; k < N; ++k)
            {
               if ((i != j) && (i != k))
                {
                    x = a[i];
                    y = a[j];
                    z = a[k];
                    if ((x!=0) && (y!=0) && (z!=0))
                    {
                        if (x*y == z)
                        {
                            b = true;
                            return 0;
                        }
                    }
                }
            }

}


void main() {
    do
    {
        cout << "Enter N: " << endl;
        cin >> N;
    }   while ((N <= 0) || (N > 100));
    int *a = new int[N];
    for (int i = 0; i < N; ++i)
    {
        cout << "Enter a[" << i << "]: " << endl;
        cin >> a[i];
    }
    pods(a);
    if (b == true)
      cout << x << ", " << y << ", " << z << endl;
    else
      cout << "0, 0, 0" << endl;
    char c;
    cin >> c;
};


Добавлено через 31 секунду
CppDevelopeR, ты хоть в коде то разбирайся который тебе дают.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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