Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 3 [Все]   Вниз
  Печать  
Автор Тема: Массивы  (Прочитано 55181 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kasper
Гость
« : 19-11-2005 23:39 » 

У нас есть два массива. Жаль
Нужно выяснить, имеются ли в них одинаковые элементы.  Вот такой я вот
Скажите чо-нибудь умное, пожалуйста! Чтоб непоследняя...
Мой собственный код этой проги получается большой! Молчу
И еще: размер массивов не лигитимирован! То есть в них может быть разное колличество элементов! Бррр
Записан
Alf
Гость
« Ответ #1 : 19-11-2005 23:44 » 

Сортировать массивы можно?

Если нет, то можно ли сделать их копию, которую потом отсортировать?
Записан
kasper
Гость
« Ответ #2 : 19-11-2005 23:51 » 

можно сортировать, можно использовать указатели и ссылки, размещать в динамич. памяти, можно делать копию
Записан
Alf
Гость
« Ответ #3 : 20-11-2005 00:00 » 

Ну если можно, тогда алгоритм простой.

1. Сортируем массивы по возрастанию.
2. Делаем текущими первые элементы обоих массивов.
3. Пока не конец массива, цикл:
3.1. Сравнить текущие элементы первого и второго массива.
3.2. Если равны, то нашел одинаковые; оба текущие эл-та продвинуть на 1 и продолжать цикл.
3.1. Иначе если текущий эл-т первого массива меньше текущего эл-та второго массива, то продвинуть тек. эл-т первого, иначе продвинуть тек. эл-т второго массива и продолжать цикл.

Поскольку оба массива отсортированы по возрастанию, нужно каждый раз продвигаться на шаг по тому массиву, текущий элемент которого меньше. Тогда за один проход соберешь все совпадения.
Записан
kasper
Гость
« Ответ #4 : 20-11-2005 00:14 » 

Это получается:
о1------а1
о2------а2
о3------а3
о4------а4,
а мне надо:
о1-----а1, а2, а3, а4
о2-----а1, а2, а3, а4
о3-----а1, а2, а3, а4
о4-----а1, а2, а3, а4

Записан
Alf
Гость
« Ответ #5 : 20-11-2005 00:20 » 

Это чего такое значит? Я такого не понимаю. Где тут два массива?
Записан
kasper
Гость
« Ответ #6 : 20-11-2005 00:24 » 

a
o
Записан
Alf
Гость
« Ответ #7 : 20-11-2005 00:34 » 

Ну так сортируешь оба и сравниваешь, начиная с первого элемента. А потом тот массив, у которого текущий меньше, продвигаешь на 1 и так далее.
Записан
kasper
Гость
« Ответ #8 : 20-11-2005 00:38 » 

Пробовал, не хочет компилировать!
Сразу же говорит об ошибках. Таких, что дальнейшее использование работающей проги невозможно. Приходиться закрывать окно и мучиться дальше
Записан
Alf
Гость
« Ответ #9 : 20-11-2005 00:48 » 

Так алгоритм и не будет компилироваться. Его сначала в программу на С++ превратить нужно, и желательно без ошибок.
Записан
kasper
Гость
« Ответ #10 : 20-11-2005 00:51 » 

Улыбаюсь))
так дело в том, что не могу пока описать сей алгоритм!
знаний синтаксиса не хватает.
Делаю как могу, прога получается очень большой! Я хотел спросить, как сделать по-короче
Записан
Alf
Гость
« Ответ #11 : 20-11-2005 00:58 » 

Ну и спросил бы, что именно не получается.

Сортировка - несложная штука, хорошо в литературе описана. Мой алгоритм тоже сложным не назовешь. Не должна программа большой получиться. Покажи, что именно вызывает затруднения.
Записан
kasper
Гость
« Ответ #12 : 20-11-2005 01:06 » 

Смысл в том, что я могу сделать так:
for(int i=0; i<10; i++)
{
   if(o==a[i+1])
      cout<<o;
}
Как сделать так, чтобы не пришлось 10 раз писать это же?
И что делать если размер массива вводится с консоли, и разный?
Записан
Alf
Гость
« Ответ #13 : 20-11-2005 01:15 » 

Немного не так. Примерно вот так нужно:

Код:
for (int acurr=0, ocurr=0; acurr<amax && ocurr<omax;)
{
  if (a[acurr] == o[ocurr])
  {
    твои действия в случае совпадения элементов;
    acurr++;
    ocurr++;
  }
  else if (a[acurr] < o[ocurr])
    acurr++;
  else
    ocurr++;
}

Вроде так, если ничего наспех не пропустил.
Записан
kasper
Гость
« Ответ #14 : 20-11-2005 01:20 » 

Aif, спасибо, я завтра прокомплю. Сейчас голова не варит. Около 36 часов бодрствую.
Щас кусну чно-нибудь и спать лягу.
Записан
Alex437
Гость
« Ответ #15 : 22-11-2005 15:20 » 

А std нельзя юзать? А то бы совсем красиво было:  Ага
Код:
vector<int> a, o;
vector<int>::const_iterator it;
for(unsigned i = 0; i < a.size(); ++i) {
        it = find(o.begin(), o.end(), a[i]);
        if(it != o.end()) {
            cout << *it;
        }
}
Записан
Alf
Гость
« Ответ #16 : 22-11-2005 18:52 » 

Может, конечно, и можно. Однако по моим прикидкам алгоритм получается порядка N2 действий (при размерности массивов порядка N), а это не так уж красиво при больших N. Хотя код и получается короче на пару строчек, но эта экономия дорого обойдется в итоге.
Записан
kasper
Гость
« Ответ #17 : 24-11-2005 22:30 » 

Вот так как я это думаю:
Код:
#include<iostream.h>

int main()
{
int a[11]={10, 20, 30, 40 ,50 ,60 ,70 ,80 ,90, 100, 0};
int b[11]={15, 25, 35, 45, 55, 65, 75, 85, 95, 105, 0};
int counter=0;
do{for(int i=0; i<10; i++)
      if(a[counter]==b[i])
     cout<<"b["<<i<<"]="<<b[i]<<endl;           
    if(b[i]=='\0')
   counter++;           
}while(a[counter]!='\0');
                counter=0;
do{for(int i=0; i<10; i++)
                if(b[counter]==a[i])
     cout<<"a["<<i<<"]="<<a[i]<<endl;
                                                    if(a[i]=='\0')
   counter++;
}while(b[counter]!='\0');

return 0;
}
« Последнее редактирование: 20-12-2007 17:07 от Алексей1153++ » Записан
kasper
Гость
« Ответ #18 : 24-11-2005 22:31 » 

Попробуйте поставить одинаковые цифры в маасивах
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 01-12-2005 17:11 » 

Может, конечно, и можно. Однако по моим прикидкам алгоритм получается порядка N2 действий (при размерности массивов порядка N), а это не так уж красиво при больших N. Хотя код и получается короче на пару строчек, но эта экономия дорого обойдется в итоге.
Зато не требует предварительной сортировки обоих массивов. Если сравнивать однопроходный алгоритм вместе с сортировкой vs то, что Alex437 изобразил... Если я правильно помню оценку qsort, то получается n*m против n*ln(n)+m*ln(m)+max(m,n). А вот искать при каких m и n одно лучше другого мне сейчас лениво. Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Alf
Гость
« Ответ #20 : 01-12-2005 23:01 » 

... Если я правильно помню оценку qsort, то получается n*m против n*ln(n)+m*ln(m)+max(m,n). А вот искать при каких m и n одно лучше другого мне сейчас лениво. Улыбаюсь

А там за нас уже все давно нашли. Правда, ворочать кирпичи Кнута ради такой мелочи неохота, а более попсовые "Жемчужины программирования" Бентли оставил на работе. Однако помню, что результаты измерений Бентли на реальных задачах поражают воображение цифрами. Конечно, на десятке-сотне элементов ничего не заметишь, все за один тик таймера пролетит. А на настоящих задачах может получиться весьма зримо.

Аналогичный пример. Одиниз моих сотрудников сводил баланс нашего обмена трафиком с партнерами, кто кому сколько должен. Расчеты длились более суток, причем сервер с данными находится в удаленной сети, которая порой глюкает, и необходимо либо перезапускать задачу, либо делать откат. Я решил поглядеть, что это за суперзадача, которая на мощном компе делается так долго (мне подозрительно все, что крутится дольше нескольких минут на компе с миллиардом операций в секунду, ибо помню времена, когда мечтали о миллионе).

В результате оказалось, что подходящий тариф для направления каждый раз ищется в массиве линейным поиском(!).


Заставил товарища разбить массив на несколько частей, каждую отсортировать (что далось бесплатно, ибо исходные данные все равно берутся с SQL-сервера) и заменить линейный поиск двоичным, то есть вместо (t ~ N/2) поиск стал производиться за (t ~ log2(N/10)). В численном выражении это составило ~40 сек вместо прежних ~35 часов. Раньше парень запускал задачу и присматривал, не случилось ли чего по ходу. Теперь он, пардон, по нужде не успеет выскочить за время ее выполнения, нажал - получи результат. Как говорится, "думайте сами, решайте сами" (С).

Мораль: не заигрывайте с алгоритмами порядка N2, они не столь безобидны, как кажутся с виду. И не экономьте несколько строчек несложного кода, в конечном итоге боком выйдет.
Записан
kasper
Гость
« Ответ #21 : 02-12-2005 00:02 » 

Есть еще интересная задачка,   Вот такой я вот
я ее уже написал.  Улыбаюсь
Помучайтесь пока:  Ха-ха-ха
В линейку вбиты гвозди, находящиеся на заданных расстояниях p1, p2,…,pN друг от друга. Соседние гвозди можно связывать нитками. Не должно остаться ни к кому не привязанных гвоздей. Нужно найти способ их связывания, обеспечивающий минимум суммарной длины нитей.
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #22 : 02-12-2005 02:21 » 

Если условие описано дословно и корректно то мне кажется все элементарно. Улыбаюсь
Но это если понимать описанную задачу ДОСЛОВНО.
Гвозди вбиты "в линейку" - стало быть по прямой линии. Расстояния между гвоздями м.б. не одинаковым - сие и не важно. Но кратчайшее расстояние между двумя точками до сих пор была прямая линия. Стало быть и ответ сам по себе напрашивается - связывай гвозди последовательно друг за другом. И будет тебе кратчайшая нитка.
Другое дело, что это явно не так, уж больно все просто. Мне кажется, что явная неоднозначность прочтения и понимания условия задачи "зарыты" вот тут - "ни к кому не привязанных гвоздей". Уточните задачу, иначе ее решать можно исходя только из собственных предположений - см. первое решение. В нем тоже не осталось "не привязанных" гвоздей. Вопрос только КАК не привязанных Улыбаюсь
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Alf
Гость
« Ответ #23 : 02-12-2005 10:40 » 

Есть еще интересная задачка,  Вот такой я вот
я ее уже написал. Улыбаюсь

За какое время твоя программа обсчитывает сотню гвоздей?
Записан
kasper
Гость
« Ответ #24 : 03-12-2005 21:06 » 

Закон такой:
если в задаче есть неточности,  и что то непонятно, то делай так как понял.
Мое решение:

Код:
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<iomanip.h>

int main()
{
int sum, odd=1, even=0, pass, zero=1, counter=0, hold;
int array[10];
cout<<endl<<"* Enter coordinate nail (santimetre): "<<endl;
sum=0;
cout<<"  ";
for(int i=0; i<10; i++)
{array[i]=rand() % 99 + 1;}
for(pass=0; pass<10; pass++)
for(i=0; i<10; i++)
if(array[i]>array[i+1])
{hold=array[i];
array[i]=array[i+1];
array[i+1]=hold;}
for(i=0; i<10; i++)
{cout<<array[i]<<setw(3);
counter++;
if(counter==2)
{cout<<"      ";
  counter=0;}      
}do{sum=sum+((array[odd])-(array[even]));
    odd=odd+2;
even=even+2;
}while(even<10);
cout<<endl<<"  For ligament only nearby nails, it is necessary"<<endl
<<"  "<<sum<<" santimetre niton"<<endl;
return 0;
}

Alf, честно говоря незнаю и нужно ли это?
« Последнее редактирование: 13-01-2009 18:02 от Вад » Записан
Alf
Гость
« Ответ #25 : 03-12-2005 21:35 » 

...
Alf, честно говоря незнаю и нужно ли это?

Хм... Даже затрудняюсь ответить, такой поворот мне и в голову не приходил. С какой целью тогда была написана программа?

Еще Козьма Прутков учил: "Бросая в воду камешки, смотри на круги, ими образуемые; иначе такое бросание будет пустою забавою." Чтобы написание подобной программы не стало пустой забавой, нужно одно из двух:  либо получить выгодный подряд на связывание  гвоздей нитками (в чем я сомневаюсь), либо пожелать научиться чему-то новому (что больше похоже на правду).

Наиболее очевидный алгоритм, который первым приходит в голову, - это перебрать все комбинации и для каждой оценить суммарную длину нитей, после чего выбрать минимальную длину. Незатейливо, однако по моей прикидке потребует 2N операций, а следовательно, будет работать лишь при N~10. Именно поэтому и спросил про сотню гвоздей - алгоритм, способный обсчитать сотню за разумное время, должен быть весьма элегантным, и мне хотелось бы на него посмотреть. В противном случае это тривиальный перебор, не представляющий никакого интереса.
Записан
kasper
Гость
« Ответ #26 : 03-12-2005 21:39 » 

да, наверно.
я пока немогу делать привязку к таймеру.
как это?
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #27 : 03-12-2005 21:52 » 

Засеки время в начале выполнения алгоритма и в конце. Благодарям простым алгебраическим операциям узнаешь как долго работате твой алгоритм. Это, если конечно именно это имелось ввиду.
Записан

ещё один вопрос ...
kasper
Гость
« Ответ #28 : 03-12-2005 21:54 » 

Это нужно отобразить в исходнике, если я правильно понял.
Какими операторами или функциями?
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #29 : 03-12-2005 21:56 » 

Под винду пишешь? Среду разработки скажи.
Записан

ещё один вопрос ...
kasper
Гость
« Ответ #30 : 03-12-2005 21:59 » 

Обыкновенное консольное приложение.
Да под винду.
Вот на примере моей проги (см. выше)
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #31 : 03-12-2005 22:04 » 

#include   <stdio.h>
#include   <dos.h>

int main(void)
{
   struct  time t;

   gettime(&t);
   printf("The current time is: %2d:%02d:%02d.%02d\n",
     t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund);
   return 0;
}
Это под ДОС.
Записан

ещё один вопрос ...
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #32 : 03-12-2005 22:09 » 

А под винду навалом всего:
LPSYSTEMTIME lpst - это структура.
GetSystemTime(LPSYSTEMTIME lpst);
GetLocalTime(LPSYSTEMTIME lpst);
и т.д. Еще есть фукнция, которая показывает сколько винда уде работает (т.е. сколько компьютер включен, но я ее забыл)
Записан

ещё один вопрос ...
kasper
Гость
« Ответ #33 : 03-12-2005 22:11 » 

#include   <dos.h> - содержит опреаторы обращения к времени, как я понял.
struct  time t; - объявление переменной обращения к составным частям структуры.
t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund - переменные.
Я правильно понимаю?
Тогда, что это:
gettime(&t); - ?
Где сама структура time?
в <dos.h> или <stdio.h>?
Как это записать с помощью cout:  printf("The current time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); - ?








Записан
kasper
Гость
« Ответ #34 : 03-12-2005 22:17 » 

можешь привести практическое применение:
LPSYSTEMTIME lpst;
GetSystemTime(LPSYSTEMTIME lpst);
GetLocalTime(LPSYSTEMTIME lpst);
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #35 : 03-12-2005 22:19 » 

struct time -это спец. структура, в поля которой записываются значения времени (часы, минуты, секунды и т.д.)
Описанеие структуры в dos.h
cout<<"The current time is:"<<t.ti_hour<<":"<<t.ti_min;
Записан

ещё один вопрос ...
kasper
Гость
« Ответ #36 : 03-12-2005 22:21 » 

спасибо.
если я сейчас добавлю это в мою прогу, она будет работать?
И как добавить, что бы не нарушался ход выполнения проги?
еще раз, что такое gettime(&t); - ?
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #37 : 03-12-2005 23:04 » 


gettime(&t); - эта функция заполняет поля структуры t текущими значениями времени.
Цитата
если я сейчас добавлю это в мою прогу, она будет работать?
Создай отдельный проект и внеси в него весь код, который я тебе дал. Он рабочий и у тебя должен компилится. Если все ОК, то добавляй код в свой проект. Создай 2 структуры t и t1.
Перед выполнением твоего алгоритма поставь gettime(&t) и в конце твоего алгоритма поставь gettime(&t1).
А потом ищи разницу времени, тем самым ты узнаешь сколько выполняется твой алгоритм.
Записан

ещё один вопрос ...
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #38 : 04-12-2005 06:00 » 

объявлено в хидере dos.h вот так - void gettime(struct time *timep);
стало быть ответ на твой вопрос:
gettime(&t);
я так понял не понятно, видимо что такое &t - в функцию должен передаваться указатель на структуру
struct time *timep - указатель, указанный в параметрах функции
time t; - так объявлена структура у тебя в программе
&t - ее адрес в памяти - т.е. указатель на нее.
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #39 : 04-12-2005 06:21 » 

Закон такой:
если в задаче есть неточности,  и что то непонятно, то делай так как понял.
Уважаемый kasper. Сильно надеюсь, что это шутка, и не более того.
Ни в обиду никому будет сказано, но если это действительно такой подход к жизни - то в программировании вам лучше не работать Улыбаюсь
Ну зачем нам взлетающие на воздух атомные станции, хим.заводы, падающие на голову самолеты и космические станции? Не говоря уж о 1001 мелочи попроще (но не менее страшных)...
Если еще не успели сильно привыкнуть жить по такому закону - отвыкать срочно!!! Улыбаюсь
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #40 : 09-12-2005 21:49 » 

Уважаемый Михалыч, всей душой согласен с тем, что в результате будет всё взрываться, падать и т.п. Однако, ежели какое-то руководство очень хочет побыстрее заработать денег, отказываясь от ответственности, не ощущая угроз материального характера, не терзаясь имиджевыми рисками и т.п. "мелочами", и, так случилось, что вы оказались в подобном проекте, вам останется 3 пути: сбежать, устроить саботаж с целью наведения порядка - попытаться взять управление и ответственность на себя, следовать упомянутому подходу к жизни.

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

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #41 : 10-12-2005 09:21 » 

Уважаемый Михалыч, всей душой согласен с тем, что в результате будет всё взрываться, падать и т.п. Однако, ежели какое-то руководство очень хочет побыстрее заработать денег, отказываясь от ответственности, не ощущая угроз материального характера, не терзаясь имиджевыми рисками и т.п. "мелочами", и, так случилось, что вы оказались в подобном проекте, вам останется 3 пути: сбежать, устроить саботаж с целью наведения порядка - попытаться взять управление и ответственность на себя, следовать упомянутому подходу к жизни.

В любом случае, если информации недостаточно и нет возможности её добыть, а предпринять хоть что-нибудь обязательно нужно, приходится идти на риск - се ля ви, как говорится.
Да... Тяжело без пистолета Улыбаюсь
Я бы в такой ситуации м.б. сбежал Улыбаюсь  И не стал бы работать над таким проектом и с таким руководством.
По поводу самого последнего Вашего высказывания - увы! - "се ля ви" есть "се ля ви", От этого никуда не денешься. Я ведь и не призываю во всех без исключения подобных случаях "сидеть сложив ручки" Улыбаюсь
Но и за правило такой подход к жизни принимать нельзя.
А предпринять хоть что-нибудь - в случаях с проектами, связанными с тем, о чем говорилось (то, что "взлетает и падает" Улыбаюсь на головы) - это только (и видимо ТОЛЬКО) уточнение информации до конца. Без вариантов.
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
kasper
Гость
« Ответ #42 : 14-12-2005 08:30 » 

Михалыч, при всем уважении,
Чем плох такой закон? Есть заказ на разработку програмного обеспечения. И я пишу, что предусмотренно в проекте. Все. Точка.
Ни больше, ни меньше. У тебя не бывало таких случаев, кода готовый программный продукт возвращали.
Ни потому что он был плох. Наоборот. Он был очень хорош. При всем уважении, Михалыч,
все наверно видели по телевизору, как взорвался Американский Шатл. Оказалось, программист, при составлении кода, вместо точки поставил запятую. Это насчет того, если я буду, да будет на то воля господа,
писать програмное обеспечение для атомных станций, орбитальных модулей и т.п. То наверно буду писать только то, что есть в проекте? Как ты думаешь? Я не прав? Или мне написать прогу для атомной станции, как я считаю нужным? Не руководствуясь проектом? А насчет того, что бы закончить с программированием, то что значит закончить? Михалыч, при всем уважении, ты куришь? Как насчет того чтобы бросить? Я на втором курсе учусь. И что? Бросить? Михалыч, какое бы ни было большое уважение, которое я к тебе испытываю, но одного твоего слова мало. Сказать честно? Такие слова на меня действуют как пощечина. Что я сделал? Спросил только. Не берут денег за спрос.
И по поводу пистолета: скажи, ты начальник? Если да, то становится понятным, как решаются споры у вас на работе, при всем уважении
Записан
Alf
Гость
« Ответ #43 : 14-12-2005 09:06 » 

...все наверно видели по телевизору, как взорвался Американский Шатл. Оказалось, программист, при составлении кода, вместо точки поставил запятую.

kasper, это "утка", подброшенная журналистами. Если ты про "Колумбию", то там теплозащита подкачала, а если про "Челленджер", так там до сих пор не разобрались толком. А этой байке уже много лет, ей еще пугали фортрановских программистов в свое время. Изначально утверждали, что ошибка выглядела примерно так:

Код:
DO 10 I=1.25

Из-за того, что ФОРТРАН игнорирует пробелы, изначально задуманный цикл по I от 1 до 25 превратился в присваивание переменной DO10I значения 1.25 (ФОРТРАН позволяет использовать необъявленные переменные). Якобы из-за этого пришлось подорвать зонд, направляющийся то ли к Венере,то ли к Марсу. А теперь байка уже и до "шаттла" добралась, выходит.
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #44 : 14-12-2005 09:22 » 

Чем плох такой закон?
...
Есть заказ на разработку програмного обеспечения. И я пишу, что предусмотренно в проекте. Все. Точка.
Я как тестер-разработчик хочу вставить свои 5 копеек про то, как пишут то, что предусмотрено в проекте Улыбаюсь Пишут по неплохой спецификации, хорошие разработчики. Вот только периодически проект не собирается, временами вылезают занятные баги (вроде итератора, который забыли вернуть в начало вектора), утечки ресурсов, а кое-где логика работы не всегда совпадает с той, что на бумаге Улыбаюсь Это такой закон, наверное. Потому что "предусмотреть в проекте" каждый гвоздь, думаю, нереально. Тут только самоконтроль и тестеры помогут Улыбаюсь Думаю, странной будет та проектная документация, где в описании каждого класса будет стоять напоминание: "Товарищи программисты! Не забывайте удалять массивы и возвращать итераторы на место!"  Улыбаюсь
Во всяком случае, не стоит так горячиться. Кстати, о Шаттлах. Припоминается мне (если не мнится), что некий межпланетный аппарат улетел совсем не в ту сторону, потому что всё сделали по спецификациям, только после последней правки съэкономили время и не провели полный цикл тестирования. Вот тебе и написали "что предусмотрено".

Что касается таймера, то, имхо, лучше использовать FILETIME, с ним разницу во времени проще получить. Функция GetSystemTimeAsFileTime.

Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #45 : 14-12-2005 10:01 » 

Закон такой:
если в задаче есть неточности,  и что то непонятно, то делай так как понял.
Уважаемый kasper. Сильно надеюсь, что это шутка, и не более того.
Ни в обиду никому будет сказано, но если это действительно такой подход к жизни - то в программировании вам лучше не работать Улыбаюсь

Увы, но именно так реализуются многие стандарты.  При разработке стандарта что-то недосмотрели, пропустили, что-то при внимательном чтении оказалось непонятным.  Стандарт опубликован, текст заморожен, разработчик оставлен, можно сказать, один на один с непонятками.  В большинстве случаев разработчики не напрягаются поиском истины, а делают по своему разумению.
В результате появляются несовместимые реализации протоколов, которые вроде как работают, но не очень, не совсем, или совсем не работают.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #46 : 14-12-2005 10:21 » 

Улыбаюсь kasper, ты чего расходился? Улыбаюсь Эк, тебя проняло-то Отлично Вот уж никак не ожидал, и Боже меня упаси, не хотел обидеть...
Теперь по пунктам:
Программный продукт не возвращали. Ни разу. Не повезло, наверно...
Не курю. Уже нет. Почему - см. в форуме "Общение", там найдешь мои постинги. И тебе советую бросать, пока на втором курсе Улыбаюсь
По поводу пистолета - не более чем фраза о "руководстве, отказывающемся от ответственности".
Сам - не начальник, и не хочу им быть, хотя старательно пытаются назначить. И споры у нас решаются "без пистолета" Улыбаюсь Хотя, такое отношение - когда мог бы спросить, но решил сделать так, как сам понял - у нас считается (пардон) раздолбайством, а не самостоятельностью Улыбаюсь
Все, что мной было высказано относилось к конкретной фразе. Позволю себе ее еще раз процитировать: "если в задаче есть неточности,  и что то непонятно, то делай так как понял". Прочитай ее еще раз внимательно - сам ведь написал... И что? Если ты явно видишь неточность в постановке задачи, или что-то конкретное в ней тебе непонятно - ты все же будешь писать программу? Или попытаешся выяснить - все ли ты правильно понял? Вот о чем речь. Можно, конечно и так работать, только результат м.б. совсем не тот, что от тебя хотели получить. И виноват будешь сам. Если брать готовое ТЗ, проект, что угодно -  в моей практике были подобные случаи, когда даже под угрозой срыва сроков сдачи проекта приходилось "тормозить" работу до уточнения неясностей.
По поводу "что значит заканчивать с программированием". Не говорил я "заканчивать" Улыбаюсь Говорил "лучше не работать". Хочешь стать  настоящим, серьезным специалистом  - готовься к ответственному отношению к работе, а не так, как в случае с этим кокретным вопросом, когда есть явные неясности, а ты призываешь  делать "как понял". С таким подходом - в любительское программирование (вот что я хотел сказать).  ИМХО - так нельзя. Если, как ты говоришь, одного моего слова мало - пусть коллеги по форуму меня поправят.
Модератору - сорри за явный оффтопик...
« Последнее редактирование: 14-12-2005 10:41 от Михалыч » Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #47 : 14-12-2005 10:23 » 

Увы, но именно так реализуются многие стандарты.  При разработке стандарта что-то недосмотрели, пропустили, что-то при внимательном чтении оказалось непонятным.  Стандарт опубликован, текст заморожен, разработчик оставлен, можно сказать, один на один с непонятками.  В большинстве случаев разработчики не напрягаются поиском истины, а делают по своему разумению.
В результате появляются несовместимые реализации протоколов, которые вроде как работают, но не очень, не совсем, или совсем не работают.
Означает ли это, что так оно и должно быть? С этим надо мириться и принять как должное? Думаю нет. Улыбаюсь
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
acc15
Гость
« Ответ #48 : 14-12-2005 18:17 » 

хочется сказать касперу что ему надо учится, только тогда чего-то можно добится... писать коммерческие проги ещё ой как рановато...
Записан
юляха
Гость
« Ответ #49 : 20-12-2005 13:05 » 

РЕБЯТА ЗАВТРА ПРОГУ СРОЧНО СДАТЬ НАДО ГОРЮ А НЕ ЗНАЮ КАК НАПИСАТЬ НУЖНО ВВЕСТИ МАТРИЦУ С КЛАВИАТУРЫ РАЗМЕРА N НА M . M,N ВВОДИТ ПОЛЬЗОВАТЕЛЬ! наити сумму елементов строки столбца и диагоналей  и перемножить две матрицы!!!!!! при этом должно быть меню и пользователь сам выбирает операцию!!! ПОМОГИТЕ пожалуйста!!!!!!!!!
Записан
юляха
Гость
« Ответ #50 : 20-12-2005 13:09 » 

ПОМОГИТЕ ПОЖАЛУЙСТА ПРИШЛИТЕ ПО E-MAIL
Записан
юляха
Гость
« Ответ #51 : 20-12-2005 13:11 » 

kolosova_ulya@MAIL.RU
Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #52 : 20-12-2005 13:38 » 

В принципе задача не сложная и даже я смог бы это сделать. Но за бесплатно делать не охота.
На чём писать кстати. Наверное на Паскале.
« Последнее редактирование: 20-12-2005 13:46 от Olegator » Записан
юляха
Гость
« Ответ #53 : 20-12-2005 13:51 » 

НЕТ НА С++ И СКОЛЬКО БУДЕТ СТОИТЬ ТОЛЬКО ЧТОБ НЕ ГЛЮЧИЛА
Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #54 : 20-12-2005 14:54 » 

Программу надо написать ОО. Я только начинающий, безглючно наверное не напишу.
Ты цену скажи. И тогда тебе тут почти любой за час сделает.
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #55 : 20-12-2005 16:30 » 

Ну - круто! Ну - обалдеть! Улыбаюсь Хорошо, хоть полчаса не пообещал Улыбаюсь
Хорошо, что я не любой Улыбаюсь  Стоит ли тут о деньгах говорить? Мелко как-то. Хочешь помочь - помоги.
А вообще - я свое мнение о студентах уже высказывал. И отходить от него не буду. Помочь - ради бога, но только в конкретных проблемах, а не написании программ целиком Улыбаюсь
Девушка! Чего же так КРИЧАТЬ-ТО? Поезд похоже уже ушел Жаль
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #56 : 20-12-2005 17:01 » 

Ну - круто! Ну - обалдеть! Улыбаюсь Хорошо, хоть полчаса не пообещал Улыбаюсь
Что я такого неправильного написал?
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #57 : 20-12-2005 19:38 » 

Михалыч хотел сказать, что тут счет на минуты идет, а не на часы Улыбаюсь, если  конечно печатаешь быстрее чем думаешь Улыбаюсь.
Девушка, у Вас кажется еще целая неделя в распоряжении, поэтому задавайте вопросы и Вам помогут.
« Последнее редактирование: 20-12-2005 19:42 от nikedeforest » Записан

ещё один вопрос ...
acc15
Гость
« Ответ #58 : 20-12-2005 19:41 » 

странные люди бывают однако...
Обратись к подругам или хз... а вообще лучший вариант, сама всё изучи и напиши... если что-то непонятно будет, то спрашивай, а не проси написать целую программу.... т.к. это уже называется просто ленью... а если совсем срочно, то это только платно и не здесь... на форуме есть специальная тема для такого...
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #59 : 21-12-2005 04:35 » 

Михалыч хотел сказать, что тут счет на минуты идет, а не на часы Улыбаюсь, если  конечно печатаешь быстрее чем думаешь Улыбаюсь.
Девушка, у Вас кажется еще целая неделя в распоряжении, поэтому задавайте вопросы и Вам помогут.
Не-а... Я хотел сказать, что мне бы и часа было мало Улыбаюсь
Не люблю "печатать быстрее чем думать" Улыбаюсь Привык любую задачу обдумывать неспеша. Так что думаю на эту задачку вместе с отладкой-проверкой и нормальным оформлением ушло бы часа 2 Улыбаюсь
Olegator - не парься, я лишь хотел сказать - далеко не "почти любой" тут возьмется написать студенту программу, да еще за деньги.
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #60 : 22-12-2005 00:04 » 

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

юляха, на ваш вопрос есть ответ из трёх частей.
Часть 1я: "как" - ответ: "в цикле"
Часть 2я "ввести матрицу с клавиатуры" - в тех справочниках по С++, что доводилось видеть, неизменно присутствовали операторы ввода и вывода. Ищите лучше, там даже пример есть, наверняка.
Часть 3я "пользователь выбирает" - вот тут опять присоединюсь к Михалычу. Это можно сделать (как и ввод, собственно) множеством различных способов, и некоторые из способов могут потребовать некоторого времени, так что сразу я не стал бы бросаться "счётом на минуты" - может, мадмуазель должна по заданию написать этакий "матричный калькулятор" с оконным интерфейсом на WinAPI и с примитивной защитой от дурака Улыбаюсь но забыла это уточнить Улыбаюсь
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #61 : 23-12-2005 09:20 » 

Ага, мощный калькулятом, с мощным интерфейсом, который умеет только найти сумму элементов в строке, столбце, диагонале и перемножить матрицы Улыбаюсь.
Записан

ещё один вопрос ...
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #62 : 23-12-2005 22:40 » 

Ага, мощный калькулятом, с мощным интерфейсом, который умеет только найти сумму элементов в строке, столбце, диагонале и перемножить матрицы Улыбаюсь.
Я на такие уже насмотрелся (да и самому приходилось как-то раз такое изображать) - студентам ещё не такое могут задать... "Навёрнутый" (в меру возможностей студента) интерфейс, посредством которого организуется ввод 1 числа и вывод 10, рассчитанных по одной-единственной формуле Улыбаюсь
Так что, смешно-то смешно, но задают ведь!
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #63 : 07-02-2006 15:42 » 

Цитата
"Навёрнутый" (в меру возможностей студента) интерфейс, посредством которого организуется ввод 1 числа и вывод 10, рассчитанных по одной-единственной формуле
Так что, смешно-то смешно, но задают ведь!
Помнится, я такое писал на 2-м курсе. Чтобы ввести и вывести несколько чисел Turbo Vision освоил. Улыбаюсь И не сказал бы, что эта "мелочь" совсем бесполезной была. И ничего смешного в том задании не видел. Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #64 : 13-01-2009 15:21 » 

тема для мусорки ?
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #65 : 13-01-2009 17:20 » 

Думаю, что не стоит.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: 1 2 3 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines