Часть 2. Я начинающий, подскажите как...(Все вопросы начинающих!!!)
ListBox1->Columns=3;
каким образом записать строку в второй и третий столбцы?
Не силен в С++, но попробую помочь: чего вдруг твой оператор, принимающий в качестве второго элемента указатель на Time должен работать с int. Даже если С++ позволяет вот так вот переводить целые числа в адреса (но я сомневаюсь, что это позволит компилятор), то в ссылающемся черт знает куда указателе точно не будет объекта Time с полями h, m и s.
В будущем приводи, пожалуйста, полный код, а не огрызки из него. В твоем варианте ты вообще прибавляешь не инициализированную k.
http://www.c-sharpcorner.com/UploadFile/mahesh/FindName10022009122153PM/FindName.aspx
У меня такая просьба, ребят, подскажите мне пожалуйста с чего начать учить с++?Посоветуйте литературу именно для новичка,скачал две книги: Стивен Прата - Язык программирования С++ лекции и упражнения, и Липман - с++. Как вы думаете это подойдет для новичка?Желательно бы такую книжку где для начала объясняется для чего это применяется и где используется,что бы хоть примерно знать назначение той или иной функции. Искал видео уроки, но потом передумал, лучше читать книжки. Да и наверное литературу лучше купить, долго не могу читать на компьютере,неудобно, лучше когда книга в руках. Сейчас я учусь в Отрадненском Нефтяном техникуме на факультете ЭВМ,сейчас нас переименовали в КС. Уже на 2 курсе, но больно то ничему не учат, по электротехнике сидим заряды считаем, по МиЛоЭВТ пишем таблицы истинности, по информационным технологиям в ворде, в экселе работаем не много. Глядя на все начинаешь понимать, что ни кто ничему не научит, нужно самому искать,читать книги, практиковаться,учить. Сейчас после новогодней сессии, по МиЛоЭВТ начнем изучать Паскаль и Бейсик. Паскаль немного,так поверхностно изучали в 8 классе в школе. Еще не могу точно для себя определиться, что мне более нужно,перспективнее, что писать клиентские программы,или же писать драйвера какие нибудь, или еще что,(Объясните,или подскажите литературу) чем еще может заниматься программист, кроме клиентских программ,драйверов...с этим я пока не разбираюсь и не знаю на какой путь встать. После техникума в армию, приду пойду в институт по этой же специальности, но наверное заочно, надеюсь после армии пойти работать.
С нетерпением жду Ваших ответов!
С Большим Уважением!
Родионов Александр.
На чем и как писать, на самом деле, особого значения не имеет. Изучи различные виды - объектно-ориентированное программирование (пусть будет С++), функциональное (Haskell, Mathematica, Nemerle), декларативное (WPF\C#). После этого ты сможешь писать что угодно и на чем угодно. Захочешь заниматься системным - начнешь изучение ассёмблера, IL. Здесь не будет красивых интерфейсов, писать большей части придется на чистом С, реже - на С++, но зато ты будешь знать, как работает каждый "винтик" в компьютере. Захочешь красочного дизайна - перйдешь с С++ на Qt (или уйдешь на другую платформу - Java, WPF\C#). А если заинтересуешься логикой и вычислениями - любой из функциональных языков станет тебе лучшим другом. В любом случае, С++ является отличной отправной точкой, после которой ты можешь двигать в любом направлении.
И да, настоятельно рекомендую в следующем семестре выполнить только необходимый минимум по паскалю и васику и не вдаваться вглубь изучения этих богомерзких языков. Испортишь карму. :)
Удачи!
Огромное спасибо тебе за советы!Очень ценю! Много узнал нового и интересного..куда двигаться..Спасибо)начну С++ и дальше как ты говорил маленькими осторожными шажками пойду дальше "функциональное (Haskell, Mathematica, Nemerle), декларативное (WPF\C#)."
Спасибо за совет про Паскаль с бейсиком XD учту!
Срочно,помогите написать программу!!!!!
В текстовом файле (создается самостоятельно по заданному ниже образцу, можно скопировать образец) дана информация о студентах одной группы:
• Фамилия
• Имя
• Отчество
• Оценка по программированию
• Оценка по мат. анализу
• Оценка по алгебре
Написать программу, реализующую работу контейнера для хранения и обработки этой информации. Необходимо:
1. Создать контейнер (класс для хранения и обработки даных в виде динамического массива) и загрузить в него данные о студентах ( реализацию TStudent, реализацию TGroup,чтение из файла)
2. Вывести на экран список студентов группы и средний балл для каждого ( за вывод Ф.И.О.,вывод среднего балла, реализацию выводов с использованием property)
3. Вывести список студентов, имеющих высший балл по программированию (т.е. с максимальным баллом в группе, и это может быть не обязательно пятёрка)
4. Вывести список студентов, фамилии которых начинаются с заданного шаблона (например, для шаблона «Ива» получаем список: Иванов, Иванчиков, Ивахов, Иващенко и т.п.)
В программе реализовать классы TStudent и TGroup. В классе TStudent обязательно реализовать метод для вывода информации о студенте на экран и метод для подсчета среднего балла студента.
Спасибо за совет про Паскаль с бейсиком XD учту!
Про бейсик ничего не скажу, хотя с него начинал, а от паскаля в восторге в том числе и создатель STL. Так что учите, все полезно в меру.
я так понял "a" и "C" это имена переменных? Завести эти переменные (если a не дано). А потом нарисовать на бумажке квадратную сетку mxn и понять задание.
[COLOR="gray"]ПыСы всегда умиляло задание начинающееся с mxn и заканчивающееся уже m=n. А mxm сразу было не написать?![/COLOR]
Сейчас сделал так: массив строк описал как ObservableCollection<string> и присвоил его свойству ItemsSource. Вроде бы в итоге получилось, что хотел, добавляю новые элементы в коллекцию и они появляются в ComboBox'е, но хотелось бы разобраться с Binding'ом.
Сейчас сделал так: массив строк описал как ObservableCollection<string> и присвоил его свойству ItemsSource. Вроде бы в итоге получилось, что хотел, добавляю новые элементы в коллекцию и они появляются в ComboBox'е, но хотелось бы разобраться с Binding'ом.
Ты всё сделал правильно. Единственное, я не понял - как ты "присвоил его свойству ItemsSource" и при этом не разобрался с байндингом? :) Что тебе осталось не понятно?
ObservableCollection предоставляет доступ к событиям CollectionChanged и PropertyChanged. Первое вызывается всякий раз, когда изменяется содержимое коллекции. Все интересующиеся могут на это событие подписаться (что ComboBox делает автоматически, при задании ObservableCollection в качестве ItemsSource) и отображать эти изменения.
Твой вариант должен выглядеть примерно так:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyNamespace.ViewModels" Title="Window1" Height="300" Width="300">
<Window.DataContext>
<vm:MyViewModel/>
</Window.DataContext>
<Grid>
<StackPanel>
<TextBlock Text="{Binding SomeStrings.Count}"/>
<ComboBox ItemsSource="{Binding SomeStrings}"/>
<ComboBox ItemsSource="{Binding SomeStrings}"/>
</StackPanel>
</Grid>
</Window>
{
private readonly ObservableCollection<string> someStrings = new ObservableCollection<string> { "String1", "String2", "String3" };
/// <summary>
/// Источник данных ComboBox'ов
/// </summary>
public ObservableCollection<string> SomeStrings
{
get { return someStrings ; }
}
}
INotifyPropertyChanged же нужно реализовывать только в том случае, если может изменится само свойство, к которому ты привязываешься. Например - если SomeStrings может возвращать ссылки на разные коллекции. Например так:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyNamespace.ViewModels" Title="Window1" Height="300" Width="300">
<Window.DataContext>
<vm:MyViewModel/>
</Window.DataContext>
<Grid>
<StackPanel>
<CheckBox IsChecked="{Binding FirstCollection, Mode=TwoWay}"/>
<ComboBox ItemsSource="{Binding SomeStrings}"/>
<ComboBox ItemsSource="{Binding SomeStrings}"/>
</StackPanel>
</Grid>
</Window>
{
private readonly ObservableCollection<string> someStrings1 = new ObservableCollection<string> { "String1", "String2", "String3" };
private readonly ObservableCollection<string> someStrings2 = new ObservableCollection<string> { "String4", "String5", "String6" };
bool firstCollection = true;
public bool FirstCollection
{
get { return firstCollection ; }
set
{
if (firstCollection != value)
{
firstCollection = value;
PropertyChanged(this, new PropertyChangedEventArgs("FirstCollection"));
PropertyChanged(this, new PropertyChangedEventArgs("SomeStrings"));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Источник данных ComboBox'ов
/// </summary>
public ObservableCollection<string> SomeStrings
{
get { return FirstCollection ? someStrings1 : someStrings2; }
}
}
В данном примере в окне расположен CheckBox, который определяет - какую коллекцию следует использовать. Заметь, что при задании этого свойства, генерируется оповещение об изменении двух свойств: самого свойства (на слаучай, если к нему будет привязано еще что-то или оно будет меняться из кода) и SomeStrings. Последнее как раз и скажет твоим комбобоксам, что их источник данных изменен и пора обновить содержимое. :)
Что я хочу: создать абстрактный класс, частично реализующий интерфейс
Проблема: ошибка компилятора CS0106: Модификатор "abstract" недопустим для этого элемента. (Для метода Reset и MoveNext)
Без этого модификатора, понятно, требует реализацию метода. Что делать?
public abstract class NonNullElem<T> : System.Collections.IEnumerator
{
public INDEX i, j;
public T elem;
public void SetContent(INDEX i, INDEX j, T elem)
{
this.i = i;
this.j = j;
this.elem = elem;
}
object System.Collections.IEnumerator.Current
{
get
{
return this;
}
}
abstract void System.Collections.IEnumerator.Reset();
abstract bool System.Collections.IEnumerator.MoveNext();
}
Есть две готовые программы, хочу сделать для них общий интерфейс. В интерфейсе должно быть меню для выбора программы 1 или программы 2, и после выбора в окне интерфейса должна запуститься программа.
Возможна ли реализация когда интерфейс запускал бы "в себе" ехе от программ ? если да, подскажите как правильно сформулировать запрос для поисковой системы, что бы хоть что то по этому поводу найти ...
Что я хочу: создать абстрактный класс, частично реализующий интерфейс
Доброго! Ну, так и делай:
public abstract bool MoveNext();
Кстати, абстрактные методы не могут быть приватными, а методы Reset и MoveNext интерфейса должны быть публичными. Что ты хотел сказать своей конструкцией - не знаю. :)
Есть две готовые программы, хочу сделать для них общий интерфейс. В интерфейсе должно быть меню для выбора программы 1 или программы 2, и после выбора в окне интерфейса должна запуститься программа.
Возможна ли реализация когда интерфейс запускал бы "в себе" ехе от программ ? если да, подскажите как правильно сформулировать запрос для поисковой системы, что бы хоть что то по этому поводу найти ...
Какой язык: C, C++, C#? Какой гуй?
Впрочем, в любом случае всё сводится к использованию функции SetParent.
Пример для C#: тыц.
E2285 Could not find a match for 'vector<TechOp,allocator<TechOp> >::erase(int)'
Что-то совсем не догоняю, почему его int'овые интераторы не устраивают. Я с векторами впервые работаю, поэтому сообразить, где ошибаюсь не могу.
Еще возникла следующая проблема: класс TechOp имеет два конструктора - один с аргументами, другой без. При попытке выделить память под переменную или инициализоровать ее (не уверен, что именно):
TechOp *toTemp = new TechOp();
не может скомпилироваться, валиться на этапе линковки - Unresolved external TechOp::TechOp();
Помогите описать главную функцию программы,и перегрузить оператор объединения множеств.
#include <conio.h>
#include <stdio.h>
class set
{
class element
{
public:
const int a;
element *next;
element(int _a):a(_a), next(NULL) { }
void draw()
{
printf("%d ",a);
};
} *e;
int count;
public:
set():e(NULL), count(0) { }
~set()
{
element *temp;
while (e != NULL)
{
temp = e;
e = e->next;
delete temp;
}
count = 0;
}
void set::add(int b)
{
element*i=e;
if(!i)
{
i=new element(b);
count++;
return;
}
if (b>=i->a)
{
if (i->a==b) return;
else
{
while (!(i->next==NULL)&&(b>=i->next->a))
i=i->next;
element*temp=new element(b);
temp->next=i->next;
i->next=temp;
count++;
return;
}
}
else
{
element*temp=new element(b);
temp->next=e;
e=temp;
return;
}
}
set*set::operator && (const set B)
{
set C;
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{
while (ib!=NULL)
{
if(ia->a==ib->a)
{C.add(ia->a);
ia=ia->next; }
else
{
if (ia->a>ib->a)
ib=ib->next;
else
ia=ia->next;
}
}
}
}
};
fstream file_obekt(file); // открываем его
file_obekt.seekp (5) // передвинуть позицию
file_obekt << 'a'; // запись
file_obekt.put('a');
file_obekt.close();
в результате получилось qwertyааST а мне нужно получить qwertyaaTEST
в результате получилось qwertyааST а мне нужно получить qwertyaaTEST
"вставка" в файл так не работает, надо или переносить информацию из старого файла в новый с добавлением необходимого посередине, или предварительно расширять файл и сдвигать байты после вставляемого куска
как это сделать
как это сделать
такую ерунду уж пожалуйста самостоятельно. читаем из ф1 пишем в ф2 сколько-то. пишем новое в ф2. дочитываем из ф1 и пишем в ф2 оставшееся. удаляем ф1 и переименовываем ф2 - по вкусу.
from table in dbBinder
where table.IDGroup == groupID
select table;
foreach (var record in delList)
{
dbBinder.DeleteOnSubmit(record);
}
this.SubmitChanges();
Существует ли более "красивое" решение LINQ, чем удалять в цикле foreach каждую запись?
[COLOR="gray"]P.S.Vitamant, спасибо, разжевал про Binding, но репу не могу поднять почему-то.[/COLOR]
class TechOp {
string Caption;
string Description;
bool ManualMode;
double Duration;
bool SwitchMode();
void Reset();
};
class TechSeq {
string Caption;
string Description;
vector<TechOp> tSeq;
vector<TechOp>::iterator OpIterator;
TDateTime CalculateDuration();
void Reset();
void SaveToFile();
void LoadFromFile(char* filename);
};
//--------------------------------------------------Classes.cpp
void TechSeq::SaveToFile()
{
char* tsq = ".tsq";
char* filename = strcat( (char*)Caption.c_str(), (char*)tsq );
FILE *tqFile = fopen(filename,"wb+");
unsigned int sizeofVar;
//Пишем размер заголовка и сам заголовок
sizeofVar = sizeof(Caption);
fwrite(&sizeofVar,sizeof(int),1,tqFile);
fwrite(&Caption,sizeof(Caption),1,tqFile);
//Пишем размер описания и само описание
sizeofVar = sizeof(Description);
fwrite(&sizeofVar,sizeof(int),1,tqFile);
fwrite(&Description,sizeof(Description),1,tqFile);
//Пишем размер вектора и сам вектор
sizeofVar = sizeof(tSeq);
fwrite(&sizeofVar,sizeof(int),1,tqFile);
fwrite(&tSeq,sizeof(tSeq),1,tqFile);
fclose(tqFile);
};
void TechSeq::LoadFromFile(char* filename)
{
FILE *tqFile = fopen(filename,"rb+");
unsigned int sizeofVar;
//Читаем размер заголовка и сам заголовок
fread(&sizeofVar,sizeof(int),1,tqFile);
fread(&Caption,sizeofVar,1,tqFile);
//Читаем размер описания и само описание
fread(&sizeofVar,sizeof(int),1,tqFile);
fread(&Description,sizeofVar,1,tqFile);
//Читаем размер вектора и сам вектор
fread(&sizeofVar,sizeof(int),1,tqFile);
fread(&tSeq,sizeofVar,1,tqFile);
fclose(tqFile);
};
//-----------------------------main.cpp
vector<TechSeq> CurrentsSeq;
TechSeq *tmpSq = new TechSeq;
void __fastcall TForm1::N5Click(TObject *Sender)
{
//Регистрация тех.процесса
if (OpenDialog1->Execute())
{
tmpSq->LoadFromFile((char*)OpenDialog1->FileName.c_str());
CurrentsSeq.push_back(*tmpSq); //Тут нормально
Label1->Caption = tmpSq->Caption.c_str(); //А тут вылетает с Assess Violation или что-то в этом роде
//Label1 пришпандорил для проверки.
};
}
Все лишнее выкинул для удобства восприятия. Работаю в CodeGear 2009.
Суть: есть класс технической операции TechOp, там есть члены с типом string, размер не фиксированный и заранее не известный. Есть класс TechSeq, который кроме всего прочего содержит vector<TechOp>.
В main.cpp есть vector<TechSeq> CurrentsSeq - текущие тех.последовательности. В него через tmpSeq планирутся загружать TechSeq из файлов.
Собсвенно в чем может быть ошибка?
#include <stdio.h>
# include <iostream>
using namespace std;
class set
{
class element
{
public:
const int a;
element *next;
element(int _a):a(_a), next(NULL) { }
} *e;
int count;
public:
set():e(NULL), count(0) { }
~set()
{
element *temp;
while (e != NULL)
{
temp = e;
e = e->next;
delete temp;
}
count = 0;
}
void set::add(int b)
{
element*i=e;
if(!i)
{
i=new element(b);
count++;
return;
}
if (b>=i->a)
{
if (i->a==b) return;
else
{
while (!(i->next==NULL)&&(b>=i->next->a))
i=i->next;
element*temp=new element(b);
temp->next=i->next;
i->next=temp;
count++;
return;
}
}
else
{
element*temp=new element(b);
temp->next=e;
e=temp;
return;
}
}
void draw()
{
element *temp=e;
while(e!=NULL)
{
cout<<e->a;
e=e->next;
}
e=temp;
cout<<"колличество:"<<count;
}
void set::del(int a)//удаление
{
element * temp = new element (a);
element * t = new element (a);
t=e;//доп.переменную
temp=e->next;
if (e->a==a) {e=e->next; return;}//по всему списку идем и удаляем
while (temp)
{
if (temp->a==a)
{
t->next=temp->next;
delete temp;
return;
}
temp=temp->next;
t=t->next;
}
}
set*set::operator && (const set B)
{
set C;
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{
while (ib!=NULL)
{
if(ia->a==ib->a)
{
C.add(ia->a);
ia=ia->next;
}
else
{
if (ia->a>ib->a)
ib=ib->next;
else
ia=ia->next;
}
}
}
}
set*set::operator || (const set B)
{
set D;
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{
while (ib!=NULL)
{
if(ia->a==ib->a)
{
D.add(ia->a);
ia=ia->next;
}
else
ia=ia->next;
}
}
}
set * operator / (const set B)
{
element*ia=this->e;
element*ib=B.e;
while (ia!=NULL)
{\
while (ib!=NULL)
{
if(ia->a==ib->a)
while (e)
{
this->del.set(e->a);
e=e->next;
}
}
}
}
};
void main()
{
setlocale(LC_ALL, "Russian");
set A,B,C;
int a;
a=1;
cout<<"введите первое множество"<<"\n";
while (a)
{
cin>>a;
A.add(a);
}
a=1;
cout<<"введите второе множество"<<"\n";
while(a)
{
cin>>a;
B.add(a);
}
cout<<"\n-----------------\n";
A.draw();
cout<<"\n-----------------\n";
B.draw();
set *C=A&&B;
cout<<"объединение(&&)";
C.draw();
set *C=A||B;
cout<<"пересечение(||)";
C.draw();
set *C=A/B;
cout<<"дополнение(/)";
C.draw();
getch();
}
Леди, не можете или лень?
Если лень - вам не сюда.
Если не можете... почему? Программа комплириуется? (если нет, то их за вас найдет компилятор) Если да, то что конкретно не работает или работает неверно? Что мешает воспользоваться отладчиком? Это волшебная штука, позволяющая выполнять программу пошагово и смотреть значения переменных в данный момент времени. Есть в любой приличной среде разработки, будь то Qt, VS или CodeGear. Если вы знаете что должно находиться в конкретной переменной в конкретный момент времени, а там оказывается совершенно другое то нужно смотреть почему. Не получится - возвращайтесь, но уже с конкретными вопросами, а не "ничего не работает".
VS 2010 C#
VS 2010 C#
var temp = date; // сохраняем дату
date = new DateTime(year: 2010, month: 09, day: 19); // задаём произвольную дату
date = temp; // возвращаем сохранённую дату
Как по нажатию кнопки запустить exe-файл (допустим C:\proc.exe) и следить за тем запущен ли он, а когда его закрывают выполнять какое-то действие (например MessageBox)?
Или например как в bat-файле, где все действия происходят последовательно, т.е. если запустил exe-файл следующее действие не выполнится пока не закроется этот exe...
Как по нажатию кнопки запустить exe-файл (допустим C:\proc.exe) и следить за тем запущен ли он, а когда его закрывают выполнять какое-то действие (например MessageBox)?
Или например как в bat-файле, где все действия происходят последовательно, т.е. если запустил exe-файл следующее действие не выполнится пока не закроется этот exe...
1. ShellExecute + WaitForSingleObject
2. start /wait
Но так не сработает для программ в которых разрешен запуск только одной копии (WMP, OOo, ...)
2. start /wait
Но так не сработает для программ в которых разрешен запуск только одной копии (WMP, OOo, ...)
А можно подробнее или хотя бы на примере? Топик все-таки для начинающих...
VS 2010 C#
echo "done"
pause
Так из bat
Вопрос по C# VS2008
Создаю форму и устанавливаю
IsMdiContainer = true;
Помещаю по центру Label с определенным текстом, ставлю чтоб он всегда был по центру.
Но когда создаю форму (MDIChild) она оказывается позади Label, как мне сделать так что бы Label был всегда позади открытых VDIChild'ов
Как разработать и реализовать базовый класс (Base), объединяющий свойства перечисленных классов. Класс Base должен содержать не менее 2 полей и не менее 2 методов. Создать перечисленные классы как производные для базового класса (Base) с различным уровнем доступа, переопределить в них 1 метод базового класса. Объявить и описать собственные методы в производных классах. Продемонстрировать работу классов.
(студент, преподаватель, заведующий кафедрой.)
Как разработать и реализовать базовый класс (Base), объединяющий свойства перечисленных классов. Класс Base должен содержать не менее 2 полей и не менее 2 методов. Создать перечисленные классы как производные для базового класса (Base) с различным уровнем доступа, переопределить в них 1 метод базового класса. Объявить и описать собственные методы в производных классах. Продемонстрировать работу классов.
(студент, преподаватель, заведующий кафедрой.)
Тебе общую идею или конкретный пример? Если пример, то какой язык?