benefit Опубликовано 23 мая, 2012 Жалоба Поделиться Опубликовано 23 мая, 2012 Мммммм..... как то сложно..... почти ни чё не понял .... яж тока на первом курсе.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 23 мая, 2012 Жалоба Поделиться Опубликовано 23 мая, 2012 (изменено) benefit По-моему, чем выше уровень используемых средств, тем проще - детали загоняются под ковер. А если чего-то не проходили, то можно взять учебник и прочитать. Если не вдаваться в то, КАК эти средства реализованы в языке, то это не сложно. Ну, можно средства C++ и не использовать - средства С вы наверняка уже прошли, а он - та простая и небольшая часть C++, из которой он вырос для адаптации к технологии ООП. На чистом С программа будет выглядеть, например, так: #include <stdio.h>#include <malloc.h>struct TList{int Data; TList *Prev,*Next;};int main(){int i,n,d; TList *begin,*end,*cur,*tmp;printf("\nHow many numbers? "); scanf("%d",&n);printf("\n1 Number? "); scanf("%d",&d);cur=(TList*)malloc(sizeof(TList)); cur->Data=d; cur->Prev=cur->Next=NULL; begin=end=cur;for(int i=2;i<=n;i++){printf("%d Number? ",i); scanf("%d",&d); tmp=(TList*)malloc(sizeof(TList)); tmp->Data=d; cur->Next=tmp; tmp->Prev=cur; tmp->Next=NULL; cur=tmp;}end=cur; printf("\n");for(cur=begin;cur!=end->Next;cur=cur->Next)printf("%d ",cur->Data); printf("\n");for(cur=end;cur!=begin->Prev;cur=cur->Prev)printf("%d ",cur->Data); printf("\n\n");cur=(TList*)malloc(sizeof(TList));printf("New number? "); scanf("%d",&d); printf("\n");cur->Data=d; cur->Prev=end; cur->Next=NULL; end->Next=cur; end=cur;tmp=begin; tmp->Next->Prev=NULL; begin=tmp->Next; free(tmp); tmp=begin;for(cur=begin;cur!=end->Next;cur=cur->Next)printf("%d ",cur->Data); printf("\n");for(cur=end;cur!=begin->Prev;cur=cur->Prev)printf("%d ",cur->Data); printf("\n");getchar(); getchar(); return 0;} Тут запрашивается, сколько чисел ввести, затем сами эти числа, по мере ввода создается и заполняется двусвязный список, затем он два раза распечатывается, от начала к концу и от конца к началу, чтобы продемонстрировать, что список двунаправленный, затем выдается запрос на ввод нового числа, оно добавляется в хвост списка, а первое число из списка удаляется, и снова дважды - от начала к концу и от конца к началу - распечатывается новый список. Список в программе контролируется указателями begin, end, cur соответственно на начальную, конечную и текущую записи. Кстати, интересно, по какой специальности вы учитесь? Изменено 23 мая, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Aнютка Опубликовано 23 мая, 2012 Жалоба Поделиться Опубликовано 23 мая, 2012 Помогите решить, пожалуйста. Язык программирования - Паскаль. Ссылка на комментарий Поделиться на другие сайты Поделиться
benefit Опубликовано 23 мая, 2012 Жалоба Поделиться Опубликовано 23 мая, 2012 информационные системы и технологии Вот что нам дали на занятиях по двунаправленным спискам list.h #pragma once #define LISTNULL (Element*)-1 struct Element { Element* Prev; Element* Next; void* Data; Element(Element* prev,void* data,Element* next){ Prev=prev; Data=data; Next=next; }; Element* GetNext(){return Next;}; Element* GetPrev(){return Prev;}; }; static Element* NIL=LISTNULL; struct Object { Element* Head; Object(){Head=NULL;}; Element* GetFirst(){return Head;}; Element* GetLast(); Element* Search(void* data); Element* FindMin(); bool Insert(void* data); bool Delete(Element* e); bool Delete(void* data); bool DeleteList(); bool InsertEnd(void* data); int CountList(); }; Object Create(); #undef LISTNULL list.cpp #include "stdafx.h" #include "list.h" #include <iostream> bool Object::Insert(void *data) { bool rc=0; if(Head==NULL) { Head=new Element(NULL,data,Head); rc=1; } else { Head=(Head->Prev=new Element(NULL,data,Head)); rc=1; }; return rc; }; Element* Object::FindMin() { Element* rc=Head; Element* min=rc; while(rc!=NULL) { // std::cout<<*(int *)rc->Data<<std::endl; if(*(int *)min->Data>*(int *)rc->Data) min->Data=rc->Data; rc=rc->GetNext(); }; return (Element *)min->Data; }; int Object::CountList() { Element* rc=Head; int i; for(i=0;rc!=NULL;i++) { rc=rc->GetNext(); }; return i; }; bool Object::InsertEnd(void* data) { Element* last = GetLast(); last->Next = new Element(last,data,NULL); return true; } //-------------------------------------------------------- bool Object::DeleteList() { Head = NULL; return true; } Element* Object::GetLast() { Element* e = Head, *rc = e; while (e != NULL) { rc = e; e = e->GetNext(); // - }; return rc; } Object Create() {return *(new Object());} Solution.cpp #include "stdafx.h" #include <iostream> #include "list.h" #include <locale> using namespace std; struct Data{ int val; }; int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"rus"); Object l1=Create(); bool rc; Data a[100]; Data* d; int n,main; Element* e; cout<<"***********ВВОД СПИСКА***************"<<endl; cout<<"Кол-во элементов списка: "; cin>>n; for(int i=0;i<n;i++) { cin>>a.val; rc=l1.Insert(&a); }; do{ cout<<"[1 для вывода min значения ]"<<endl; cout<<"[0 для выхода ]"<<endl; cout<<endl; cin>>main; switch(main){ case 1: cout<<"Минимальное значение: "<<*(int *)l1.FindMin()<<endl; break; case 0: system("PAUSE"); return 0; break; }; }while(1); } Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 23 мая, 2012 Жалоба Поделиться Опубликовано 23 мая, 2012 To wedma В вашем сообщении случился вопрос не объясните еще, что значит "it seems that this file has not been built yet. Do you want to build it now?" - что означает в переводе: "Похоже, что этот файл пока не создан. Хотите ли вы создать его сейчас?"И, соответственно, у меня тоже вопрос - как можно заниматься чем-то, требующим знания языка, оного языка даже себе не представляя? Пардон, конечно, но вопрос, генерируемый программой - на уровне... Ну, примерно четвёртого-пятого класса средней школы. Не пытаюсь как-то обидеть, но - действительно интересно... Ссылка на комментарий Поделиться на другие сайты Поделиться
wedma Опубликовано 23 мая, 2012 Жалоба Поделиться Опубликовано 23 мая, 2012 @Yezhishe, ну как бы в школе мы не проходили программирование вообще... =( а в универе от нас требуют уже полной осведомленности.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Yezhishe Опубликовано 24 мая, 2012 Жалоба Поделиться Опубликовано 24 мая, 2012 При чём тут программирование? Я, собственно, про английский язык. Без знания хотя бы основ коего - тыкаться в программирование - это... Уж простите, но - как минимум глупо. Поскольку только лишь продукция 1С на этой планете пользуется кириллическими символами, что несомненно свидетельствует о необычайной <мудрости мудрейших из мудрых, умудрённых мудростью наимудрейших> (© Владимир Соловьёв, "Ходжа Насреддин", 1931) "программистов"-создателей этого фантастического продукта... Не уподобляйтесь им. И - учите английский. Язык Интернета и программирования. Ссылка на комментарий Поделиться на другие сайты Поделиться
Кронус Опубликовано 24 мая, 2012 Жалоба Поделиться Опубликовано 24 мая, 2012 На паскале, помогите решить Ссылка на комментарий Поделиться на другие сайты Поделиться
Artem55775 Опубликовано 24 мая, 2012 Жалоба Поделиться Опубликовано 24 мая, 2012 С или C++ ///Помогите кто может пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Ввод и вывод данных через printf и scanf/// Творческие задания 1) Выбрать предметную область для базы данных и предложить структуру для заполнения базы данных в файл. Выбранная структура должна иметь не менее пяти полей (элементов) двух или более типов (строки и числа). Пример. Структура “Государство” Элементы (поля, компоненты) структуры должны содержать три тексто-вых поля и два численных: • название страны; • столица; • государственный язык; • численность населения; • площадь территории. Программа должна уметь добавлять новую структуру к базе (файлу), удалять старую структуру по выбору пользователя, а также по выбору выводить на экран нужную структуру. Уметь отображать в отсортированном виде структуры по алфавиту, по числам, по возрастанию (убыванию). Программа должна иметь интерфейс, позволяющий произвести вышеперечисленные операции. ////работать через консоль//// Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 24 мая, 2012 Жалоба Поделиться Опубликовано 24 мая, 2012 (изменено) Кронус Чаще всего задачи на придумывание алгоритмов уже кто-то решал, осталось только разыскать, где и кто. Не надо пренебрегать Гуглом и Яндексом. Например, решения, с разной степенью детализации, твоих задач есть по ссылкам, которые я отправил тебе в ЛС. Artem55775, в ответ на твое ЛС я уже тебе тоже в личку написал. benefit У тебя приведен тоже один из вариантов реализации списка, их сколько угодно можно написать разных. Хотя обычно проще написать свой вариант, чем разбираться в чужом. Кстати, если приводишь код, выделяй его и пользуйся кнопкой CODE (<>) в форме ответа, так читается намного лучше, компактнее. не теряются отступы и исключена возможность принятия некоторых частей кода движком форума за адресованные ему команды, об этом и в заглавном посте темы сказано. В твоем коде создается список и ищется его минимальный элемент. Вообще у тебя приведена только вырезка из значительно большего модуля разнообразной работы со списками, оставили только поиск минимума, ну и еще порядочно мусора осталось. Изменено 24 мая, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Кронус Опубликовано 24 мая, 2012 Жалоба Поделиться Опубликовано 24 мая, 2012 @Тролль, Спасибо большое! Ссылка на комментарий Поделиться на другие сайты Поделиться
benefit Опубликовано 24 мая, 2012 Жалоба Поделиться Опубликовано 24 мая, 2012 Троль а ты по поводу этой задачи ни че не скажешь ? 1)Разработать функции работы с приоритетной очередью. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов ( начало очереди). Очередь организована на массиве со сдвигом после каждого чтения и на массиве со сдвигом после достижения границы памяти, которая выделена для очереди. Приоритет: min значение числового параметра, при совпадении параметров - LIFO, Просто понять не могу Стэки ., Очереди ,Дэки .... И что самое не понятное параметр LIFO он только к Стэкам относится или как .... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 24 мая, 2012 Жалоба Поделиться Опубликовано 24 мая, 2012 (изменено) benefit Попробуем разобраться. Приоритетная очередь - это когда каждому элементу назначен еще и приоритет, то есть каждый элемент - пара из значения элемента и приоритета этого элемента. При этом когда из очереди надо извлечь очередной элемент, берется всегда элемент с наибольшим приоритетом. Это обычно реализуют, вставляя каждый элемент в очередь сразу на то место, где ему полагается быть по его приоритету, а берут из очереди всегда самый первый ее элемент, из головы очереди. Если в очереди уже есть элемент с таким же приоритетом, то у тебя новый ставится впереди его (LIFO: тот, кто пришел последним, уходит первым, естественно, при равенстве их приоритетов). Ну и приоритет основан на сравнении приданных элементам числовых параметров - в твоем задании у кого этот параметр меньше, у того приоритет выше. Очередь у тебя должна быть организована на массиве со сдвигом - то есть после чтения очередного элемента из очереди (он у нас всегда первый), остальные сдвигаются к началу очереди, то есть к началу массива. Максимальный размер массива для очереди задается заранее. Что делать при переполнении очереди, из текста не вполне ясно, обычно элемент с приоритетом ниже, чем у уже имеющихся в полностью заполненной очереди, просто не берут в очередь, но у тебя в задании как-то скользко сформулировано. Может быть, что его все же берут, выкидывая первый элемент из очереди, хотя это менее вероятный вариант трактовки условия - полезно было бы это уточнить. P.S. "Просто понять не могу Стэки ., Очереди ,Дэки" Да в общем ничего сложного. Все как у людей ;) Очередь и есть очередь. Становятся в хвост очереди, выходят из головы очереди. Стек - это по происхождению подпружиненная стойка для подносов в столовых - кладешь что-то сверху, значит, и возьмешь его первым. Дек - это двойной стек - становятся с обеих сторон.и уходят так же. Своего рода гармошка. Изменено 24 мая, 2012 пользователем Тролль 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
benefit Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 ???? м-да...... так что Мне нада создавать стэк ? Ссылка на комментарий Поделиться на другие сайты Поделиться
benefit Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 Вот что есть по очередям и стэкам (с методички) Текстовый документ (2).txt Текстовый документ (2).txt Ссылка на комментарий Поделиться на другие сайты Поделиться
archangel0804 Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 int m[2],mm[2]; m[1]=0; while(!ifs.eof()){ifs>>m[0]>>m[1]; if(m[1]>=mm[1]){mm[0]=m[0]; mm[1]=m[1];}} Это модуль поиска участка с максимальным номером, он должен быть в файле m.cpp #include<iostream>#include<fstream>using namespace std;int main(){ifstream ifs("c.txt"); if(ifs.fail()){cerr<<"c.txt"<<" is not exist!"<<endl; getchar(); return 1;}// открыли входной файл c.txt#include "m.cpp"// подключили модуль нахождения максимального номера участкаcout<<mm[0]<<' '<<mm[1]<<endl; cin.get(); ifs.close(); return 0;}// выдали на экран номера цеха и участка и после нажатия Enter вышли из программы Входной файл c.txt, например, такой: 1 1 1 2 2 3 1 4 2 3 где первое число - номер цеха, второе - номер участка. На экран выдаст 1 4 Тролль а не мог бы ты выслать готовый проект к этому решению...т.к. я копирую в С++ выскакивают ошибки 1>c:\users\archangel\documents\visual studio 2008\projects\файла\файла\m.cpp(1) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию 1>c:\users\archangel\documents\visual studio 2008\projects\файла\файла\m.cpp(1) : error C2369: m: переопределение; различные индексы 1> c:\users\archangel\documents\visual studio 2008\projects\файла\файла\m.cpp(1): см. объявление 'm' 1>c:\users\archangel\documents\visual studio 2008\projects\файла\файла\m.cpp(1) : error C2440: инициализация: невозможно преобразовать 'int' в 'int [1]' 1> Не существует преобразований в типы массивов, хотя существуют преобразования в ссылки или указатели на массивы 1>c:\users\archangel\documents\visual studio 2008\projects\файла\файла\m.cpp(1) : error C2059: синтаксическая ошибка: while 1>c:\users\archangel\documents\visual studio 2008\projects\файла\файла\m.cpp(1) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{" 1>c:\users\archangel\documents\visual studio 2008\projects\файла\файла\m.cpp(1) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)или подскажи в чем дело? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 archangel0804 Я компилировал в Dev-C++. Visual Studio у меня сейчас не установлена. Какие-то проблемы с подключением файла m.cpp. Наверняка проблем не будет, если подставить содержание файла на место его вставки вручную... Так или иначе, скомпилированную программу прикладываю. u.zip u.zip Ссылка на комментарий Поделиться на другие сайты Поделиться
Lenyska Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 Ребят, помогите пожалуйста очень срочно!!!: задачи по паскалю: 1)найти длину кратчайшего цикла на графе. 2) Построить дерево двоичного поиска для заданного множества целых чисел и занумеровать его вершины в соответствии с их порядком при обратном обходе этого дерева. Заранее спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
LoooOl Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 в Qbasic! 1).Дано натуральное число п. Определить знакочередующуюся сумму всех цифр этого числа (младший разряд – отрицательный). не понимаю,вообще... помогите... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 (изменено) LoooOl s=0: k=1: INPUT n: WHILE n: k=-k: s=s+k * n MOD 10: n=n \ 10: WEND: PRINT s P.S. Подправил: заменил p на n. Изменено 25 мая, 2012 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
vampir4eg Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 #include<stdio.h>float number();float factor();float expr();int main(){puts("Enter number:"); printf("Resault = %f",expr());}float number(){int res=0; char c;while(1){c=getchar(); if(c>='0'&&c<='9')res=res*10+c-'0'; else{ungetc(c,stdin); break;}}return res;}float factor(){float x; char c=getchar();if(c=='('){x=expr(); getchar();} else{ungetc(c,stdin); x=number();}c=getchar();switch©{ case '*':return x*factor(); case '/':return x/factor(); default:ungetc(c,stdin); return x;}}float expr(){float x=factor(); char c=getchar();switch©{ case '+':return x+expr(); case '-':return x-expr(); default: ungetc(c,stdin); return x;}} Есть одна проблема , он вроде бы считает правильно,но не правильно считывает второй минус, то есть 0-1+1 это считает ,а уже 0-1-1 уже не считает или 0-1+1-1-1 так считает, а 0-1+1-1-1-1 не считает )) В чём проблема?? И да как я понял он считывает пример из буфера, но можно сделать чтоб он считывал из строки (gets(prim) или scanf("%s",&prim)), а то при решениезадач на сокеты не много не так работает. P.S а при током вводе 0+(-1)+(-1)+(-1)+(-1) всё считает провильно ,но препода такой ввод не устраивает)) Ссылка на комментарий Поделиться на другие сайты Поделиться
benefit Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 Троль глянь плиз подойдёт мне такое или нет....(Просто как я понял приорит LIFO в стэках) стэк.txt стэк.txt Ссылка на комментарий Поделиться на другие сайты Поделиться
LoooOl Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 спасибо,Тролль!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
LoooOl Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 (изменено) если не сложно,посмотрите пожалуйста!еще одну! Сформировать движущийся круг радиуса r, центр которой перемещается попеременно в обоих направлениях вдоль горизонтального отрезка с заданными границами. Qbasic! Изменено 25 мая, 2012 пользователем LoooOl Ссылка на комментарий Поделиться на другие сайты Поделиться
flipeed Опубликовано 25 мая, 2012 Жалоба Поделиться Опубликовано 25 мая, 2012 Помогите решить 1) Дано натуральное число n. Определить, является ли оно простым. 2)Дана матрица целых чисел X(n, т). Упорядочить ее столбцы по возрастанию сумм их элементов. Вывести исходную и полученную матрицы. Значения буквенных переменных задавать с клавиатуры. 3)По исходным строкам а$ и b$ определить слова, входящие в строку b$, но не входящие в строку а$, добавить их к концу строки а$. Вывести полученную строку. В qbasic Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти