Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Заказы "Сделайте все за меня"


Рекомендуемые сообщения

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 соответственно на начальную, конечную и текущую записи.

Кстати, интересно, по какой специальности вы учитесь?

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

информационные системы и технологии

Вот что нам дали на занятиях по двунаправленным спискам

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);

}

Ссылка на комментарий
Поделиться на другие сайты

To wedma

В вашем сообщении случился вопрос

не объясните еще, что значит "it seems that this file has not been built yet. Do you want to build it now?"
- что означает в переводе: "Похоже, что этот файл пока не создан. Хотите ли вы создать его сейчас?"

И, соответственно, у меня тоже вопрос - как можно заниматься чем-то, требующим знания языка, оного языка даже себе не представляя? Пардон, конечно, но вопрос, генерируемый программой - на уровне... Ну, примерно четвёртого-пятого класса средней школы.

Не пытаюсь как-то обидеть, но - действительно интересно...

Ссылка на комментарий
Поделиться на другие сайты

@Yezhishe, ну как бы в школе мы не проходили программирование вообще... =( а в универе от нас требуют уже полной осведомленности..

Ссылка на комментарий
Поделиться на другие сайты

При чём тут программирование? Я, собственно, про английский язык.

Без знания хотя бы основ коего - тыкаться в программирование - это... Уж простите, но - как минимум глупо.

Поскольку только лишь продукция 1С на этой планете пользуется кириллическими символами, что несомненно свидетельствует о необычайной <мудрости мудрейших из мудрых, умудрённых мудростью наимудрейших> (© Владимир Соловьёв, "Ходжа Насреддин", 1931) "программистов"-создателей этого фантастического продукта...

Не уподобляйтесь им. И - учите английский. Язык Интернета и программирования.

Ссылка на комментарий
Поделиться на другие сайты

С или C++ ///Помогите кто может пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Ввод и вывод данных через printf и scanf///

Творческие задания

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

Пример. Структура “Государство”

Элементы (поля, компоненты) структуры должны содержать три тексто-вых поля и два численных:

• название страны;

• столица;

• государственный язык;

• численность населения;

• площадь территории.

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

////работать через консоль////

Ссылка на комментарий
Поделиться на другие сайты

Кронус

Чаще всего задачи на придумывание алгоритмов уже кто-то решал, осталось только разыскать, где и кто. Не надо пренебрегать Гуглом и Яндексом. Например, решения, с разной степенью детализации, твоих задач есть по ссылкам, которые я отправил тебе в ЛС.

Artem55775,

в ответ на твое ЛС я уже тебе тоже в личку написал.

benefit

У тебя приведен тоже один из вариантов реализации списка, их сколько угодно можно написать разных. Хотя обычно проще написать свой вариант, чем разбираться в чужом. Кстати, если приводишь код, выделяй его и пользуйся кнопкой CODE (<>) в форме ответа, так читается намного лучше, компактнее. не теряются отступы и исключена возможность принятия некоторых частей кода движком форума за адресованные ему команды, об этом и в заглавном посте темы сказано. В твоем коде создается список и ищется его минимальный элемент. Вообще у тебя приведена только вырезка из значительно большего модуля разнообразной работы со списками, оставили только поиск минимума, ну и еще порядочно мусора осталось.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Троль а ты по поводу этой задачи ни че не скажешь ?

1)Разработать функции работы с приоритетной очередью. Постановка запросов в очередь выполняется по приоритету, снятие - подряд из младших адресов ( начало очереди). Очередь организована на массиве со сдвигом после каждого чтения и на массиве со сдвигом после достижения границы памяти, которая выделена для очереди. Приоритет: min значение числового параметра, при совпадении параметров - LIFO,

Просто понять не могу Стэки ., Очереди ,Дэки ....

И что самое не понятное параметр LIFO он только к Стэкам относится или как ....

Ссылка на комментарий
Поделиться на другие сайты

benefit

Попробуем разобраться. Приоритетная очередь - это когда каждому элементу назначен еще и приоритет, то есть каждый элемент - пара из значения элемента и приоритета этого элемента. При этом когда из очереди надо извлечь очередной элемент, берется всегда элемент с наибольшим приоритетом.

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

Если в очереди уже есть элемент с таким же приоритетом, то у тебя новый ставится впереди его (LIFO: тот, кто пришел последним, уходит первым, естественно, при равенстве их приоритетов). Ну и приоритет основан на сравнении приданных элементам числовых параметров - в твоем задании у кого этот параметр меньше, у того приоритет выше.

Очередь у тебя должна быть организована на массиве со сдвигом - то есть после чтения очередного элемента из очереди (он у нас всегда первый), остальные сдвигаются к началу очереди, то есть к началу массива.

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

P.S. "Просто понять не могу Стэки ., Очереди ,Дэки" Да в общем ничего сложного. Все как у людей ;) Очередь и есть очередь. Становятся в хвост очереди, выходят из головы очереди. Стек - это по происхождению подпружиненная стойка для подносов в столовых - кладешь что-то сверху, значит, и возьмешь его первым. Дек - это двойной стек - становятся с обеих сторон.и уходят так же. Своего рода гармошка.

Изменено пользователем Тролль
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

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: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)или подскажи в чем дело?

Ссылка на комментарий
Поделиться на другие сайты

archangel0804

Я компилировал в Dev-C++. Visual Studio у меня сейчас не установлена. Какие-то проблемы с подключением файла m.cpp. Наверняка проблем не будет, если подставить содержание файла на место его вставки вручную...

Так или иначе, скомпилированную программу прикладываю.

u.zip

u.zip

Ссылка на комментарий
Поделиться на другие сайты

Ребят, помогите пожалуйста очень срочно!!!: задачи по паскалю: 1)найти длину кратчайшего цикла на графе. 2) Построить дерево двоичного поиска для заданного множества целых чисел и занумеровать его вершины в соответствии с их порядком при обратном обходе этого дерева.

Заранее спасибо!

Ссылка на комментарий
Поделиться на другие сайты

в Qbasic!

1).Дано натуральное число п. Определить знакочередующуюся сумму всех цифр этого числа (младший разряд – отрицательный).

не понимаю,вообще...

помогите...

Ссылка на комментарий
Поделиться на другие сайты

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.

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

#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) всё считает провильно ,но препода такой ввод не устраивает))

Ссылка на комментарий
Поделиться на другие сайты

если не сложно,посмотрите пожалуйста!еще одну!

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

Qbasic!

Изменено пользователем LoooOl
Ссылка на комментарий
Поделиться на другие сайты

Помогите решить

1) Дано натуральное число n. Определить, является ли оно простым.

2)Дана матрица целых чисел X(n, т). Упорядочить ее столбцы по возрастанию сумм их элементов. Вывести исходную и полученную матрицы. Значения буквенных переменных задавать с клавиатуры.

3)По исходным строкам а$ и b$ определить слова, входящие в строку b$, но не входящие в строку а$, добавить их к концу строки а$. Вывести полученную строку.

В qbasic

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...