Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Часть 2. Я начинающий, подскажите как...(Все вопросы начинающих!!!)

51K
05 июля 2009 года
Олориин
1 / / 05.07.2009
День добрый вопрос такой: в ListBox создал 3 столбца
ListBox1->Columns=3;
каким образом записать строку в второй и третий столбцы?

1636 ответов / показаны 201 - 239

Страницы:
51K
03 сентября 2009 года
SnoooZeR
8 / / 03.09.2009
Язык C#. Подскажите метод или свойство с помощью которого можно узнать размерность многомерного прямоугольного массива? Т.е. есть например массив int[30,20,10]. Каким образом можно вытянуть числа 30, 20 и 10?
11
03 сентября 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: SnoooZeR
Язык C#. Подскажите метод или свойство с помощью которого можно узнать размерность многомерного прямоугольного массива? Т.е. есть например массив int[30,20,10]. Каким образом можно вытянуть числа 30, 20 и 10?


пример из МСДН

Код:
public class SamplesArray2
{
    public static void Main()
    {
        // Creates and initializes a new three-dimensional Array of type Int32.
        Array myArr = Array.CreateInstance(typeof(Int32), 2, 3, 4);
        for (int i = myArr.GetLowerBound(0); i <= myArr.GetUpperBound(0); i++)
            for (int j = myArr.GetLowerBound(1); j <= myArr.GetUpperBound(1); j++)
                for (int k = myArr.GetLowerBound(2); k <= myArr.GetUpperBound(2); k++)
                    myArr.SetValue((i * 100) + (j * 10) + k, i, j, k);
        // Displays the properties of the Array.
        Console.WriteLine("The Array has {0} dimension(s) and a total of {1} elements.", myArr.Rank, myArr.Length);
        Console.WriteLine("\tLength\tLower\tUpper");
        for (int i = 0; i < myArr.Rank; i++)
        {
            Console.Write("{0}:\t{1}", i, myArr.GetLength(i));
            Console.WriteLine("\t{0}\t{1}", myArr.GetLowerBound(i), myArr.GetUpperBound(i));
        }

        // Displays the contents of the Array.
        Console.WriteLine("The Array contains the following values:");
        PrintValues(myArr);
    }

    public static void PrintValues(Array myArr)
    {
        System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
        int i = 0;
        int cols = myArr.GetLength(myArr.Rank - 1);
        while (myEnumerator.MoveNext())
        {
            if (i < cols)
                i++;
            else
            {
                Console.WriteLine();
                i = 1;
            }
            Console.Write("\t{0}", myEnumerator.Current);
        }
        Console.WriteLine();
    }
}
51K
03 сентября 2009 года
SnoooZeR
8 / / 03.09.2009
Ключевой метод я так понимаю - myArr.GetLength(i). Спасибо. Досадно, что сам проглядел если честно.
52K
06 сентября 2009 года
den385
2 / / 06.09.2009
Написал программу (с ParamCount только не разобрался-зачем он?). Компилируется alt+f9 без ошибок.

Но - когда жму RUN (зеленый треугольник), вместо того чтобы программа работала и я мог проверить действие кнопок, просто мигают на 1сек инспектор и моя форма, а потом снова - режим редактирования. Скорее всего, какая-то мелкая ошибка, подскажите плиз.

Код:
[COLOR="Navy"]#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::colorClick(TObject *Sender)
{
if (Edit1->Color==clBtnFace)
Edit1->Color=clAqua;
else
Edit1->Color=clBtnFace;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::hideClick(TObject *Sender)
{
if (Memo1->Visible==true)
Memo1->Visible=false;
else
Memo1->Visible=true;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::insertClick(TObject *Sender)
{
Memo1->Lines->LoadFromFile(Edit->Text);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::finClick(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
Memo1->Text=" ";
for (int i=1;i<=ParamCount();i++)
{
Memo1->Text +=(ParamStr(i)+"ln");
}
}
//-------------------------------------------------------------------------[/COLOR]
52K
06 сентября 2009 года
den385
2 / / 06.09.2009
точной формулировки нет, смысл:
создать окошко, где есть поле memo, строка edit и кнопки с такими опциями:
-1 кнопка меняет цвет чего-нибудь (1клик-красный,2клик-белый,3клик-снова красный и тэдэ)
-2 кнопка что-нибудь прячет (1к-прячет, 2к-показывает и тэдэ)
-3 кнопка заливает текст файла, путь к которому в edit - в memo1
-4 кнопка "завершить" - закрывает форму

не уловил зачем ParamCount, и еще - плиз, не давайте слишком сложных советов типа "если бы прога была в три раза длиннее, она была бы в 10 раз стабильнее". в моей ситуации - пока не актуально. и спасибо огромное за ответ;-)
48K
08 сентября 2009 года
whitebrain
10 / / 08.09.2009
подскажите,как создать цикл для перестановки слов в строке?на c#
1.9K
08 сентября 2009 года
GreenRiver
451 / / 20.07.2008
Цитата: den385

не уловил зачем ParamCount,


Возвращает количество параметров переданных при запуске программы. ParamStr(i) соответственно возвращает i-тый параметр...

Цитата: den385
"если бы прога была в три раза длиннее, она была бы в 10 раз стабильнее"


Ну тут просто без комментариев :) HelloWorld самая глючная программа, я всегда это знал :D

1.9K
08 сентября 2009 года
GreenRiver
451 / / 20.07.2008
Цитата: whitebrain
подскажите,как создать цикл для перестановки слов в строке?на c#



Что в вашем понятии значит перестановка слов... Научитесь строить предложение по-русски, а там уже до C# рукой подать.

P.S. сори просто уже не первый неадекватный пост в этой теме...

48K
08 сентября 2009 года
whitebrain
10 / / 08.09.2009
это значит что если у меня есть 3 слова мне нужно вывести 6 вариантов на диспелй..как создать такой цикл
297
08 сентября 2009 года
koodeer
1.2K / / 02.05.2009
Цитата: whitebrain
это значит что если у меня есть 3 слова мне нужно вывести 6 вариантов на диспелй..как создать такой цикл


 
Код:
string word1 = "aaa";
string word2 = "bbb";
string word3 = "ccc";

Console.WriteLine(word1 + " " + word2 + " " + word3);
Console.WriteLine(word1 + " " + word3 + " " + word2);
Console.WriteLine(word2 + " " + word1 + " " + word3);
Console.WriteLine(word2 + " " + word3 + " " + word1);
Console.WriteLine(word3 + " " + word1 + " " + word2);
Console.WriteLine(word3 + " " + word2 + " " + word1);

И никакого цикла... :D
48K
08 сентября 2009 года
whitebrain
10 / / 08.09.2009
нет ну до этого то я и своими мозгами допер про три слова я сказал грубо,а как сделать цикл перебора если таких слов 20:?или 50:?есть же какой то способ,не чисто подгонки под этот вариант
1.9K
09 сентября 2009 года
GreenRiver
451 / / 20.07.2008
Цитата: whitebrain
нет ну до этого то я и своими мозгами допер про три слова я сказал грубо,а как сделать цикл перебора если таких слов 20:?или 50:?есть же какой то способ,не чисто подгонки под этот вариант



Рекурсией! Сейчас нет под рукой студии, попробую в браузере общую идею накидать:

Код:
void RecursiveSearch (List<String> Rest)
{
    for (int i = 0; i < Rest.Count; i++)
    {
          Console.Write(Rest + " ");
          var NewRest = new List<String>(Rest);
          NewRest.RemoveAt(i);
          RecursiveSearch(NewRest);
    }
    Console.WriteLine("");
}

void main()
{
    var Rest = new List () {"Один", "Два", "Три", "Четыре"};
    RecursiveSearch(Rest);
}
1.9K
09 сентября 2009 года
GreenRiver
451 / / 20.07.2008
Ну и добравшись до возможности запустить код, работоспособная версия:
Код:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleTest
{
    class Program
    {
        static void RecursiveSearch(List<String> Chain, List<String> Rest)
        {
            if (Rest.Count == 1)
            {
                foreach (var str in Chain) Console.Write(str + " ");
                Console.WriteLine(Rest[0]);
                return;
            }
            for (int i = 0; i < Rest.Count; i++)
            {
                var NewChain = new List<String>(Chain);
                var NewRest = new List<String>(Rest);
                NewChain.Add(Rest);
                NewRest.RemoveAt(i);
                RecursiveSearch(NewChain, NewRest);
            }
        }

        static void Main(string[] args)
        {
            var Rest = new List<String>() { "Один", "Два", "Три", "Четыре" };
            var Chain = new List<String>();
            RecursiveSearch(Chain, Rest);
            Console.ReadKey();
        }
    }
}

Здесь стоит ещё подумать об оптимизации...
48K
17 сентября 2009 года
andrey32
19 / / 22.08.2009
В конструкторе объекта класса можно использовать private член ранее созданного объекта?
260
17 сентября 2009 года
Ramon
1.1K / / 16.08.2003
Цитата: andrey32
В конструкторе объекта класса можно использовать private член ранее созданного объекта?



Код:
class foo
{
    int _x;

public:
    foo()
        : _x()
    {
    }

    foo(const foo& x)
        : _x(x._x)
    {
    }
};
48K
18 сентября 2009 года
andrey32
19 / / 22.08.2009
Написал класс для "поупражняться."
Конструктор добавляет адрес созданного объекта в massiv[] и в next предыдущего объекта.
Функция erase() удаляет адрес из massiv[] И вызывает деструктор. По идее.
Но деструкции почему то не происходит. Объект продолжает жить. Почему его не убило?
Код:
#include <cstdio>

class myclass
{
public:
    static myclass* pointer;
    static int counter;
    static myclass** massiv;
   
    myclass()//конструктор
    {
        counter++;
       
        if (pointer)
        {
            myclass** temp = new myclass* [counter];
            pointer->next = this;
            number=(pointer->number) +1;
            for (int i = 0; i<(counter-1); i++)
            {
                temp  = massiv ;
            }
            delete [] massiv;
            massiv = new myclass* [counter];
            for (int i=0; i<(counter-1); i++)
            {
                massiv  = temp ;
            }
           
            delete [] temp;        
        }
        else {number=1; massiv = new myclass* [1];}
        massiv [counter-1] = this;
        next=NULL;
        pointer=this;
    }
    ~myclass ()//деструктор
    {
        printf ("destructor\n");
    }
int getnumber()
{
    return number;
}
myclass* getadres()
{
    return next;
}
void erase ()// удаляет указатель на  объект из massiv
{
    //
    myclass** temp = new myclass* [counter-1];
    int j=0;
    int n= this->getnumber();
    for (int i= 0; i<(counter); i++)
    {
        if(i != (n-1))
        {
            temp[j]=massiv;
            j++;
        }
    }
   
    counter--;
    massiv = new myclass* [counter];
    for (int i=0; i<(counter); i++)
            {
                massiv  = temp ;
            }
           
            delete [] temp;
            this->~myclass();
}

private:
    int number;
    myclass *next;//указатель на следующий объект
};

myclass* myclass::pointer = NULL;
myclass** myclass::massiv = NULL;
int myclass::counter =0;

int main()
{  
   
    myclass a;
    myclass b;
    myclass c;
    myclass d;
   
    b.erase();
    printf ("%d\n", b.getnumber());
   
    delete [] myclass::massiv;
   
return 0;
}
2.1K
19 сентября 2009 года
Norgat
452 / / 12.08.2009
Цитата: andrey32
Написал класс для "поупражняться."
Конструктор добавляет адрес созданного объекта в massiv[] и в next предыдущего объекта.
Функция erase() удаляет адрес из massiv[] И вызывает деструктор. По идее.
Но деструкции почему то не происходит. Объект продолжает жить. Почему его не убило?



деструктор вызывается при уничтожении объекта, но не уничтожает его.

у вас ни в методе erase, ни в деструкторе не нарушается адресация или значение number, поэтому всё работает.

п.с.

 
Код:
void erase ()// удаляет указатель на  объект из massiv
{
...
    int n= this->getnumber();
...
}


int n= this->getnumber(); - не имеет смысла, лучше int n = number;


п.с.с.

пришла в голову аналогия...

"Когда рак на горе свистнет, нужно посадить цветочек."

Рак - объект, свист - деструктор, посадить цветочек - задача деструктора.

Рак может свистнуть когда умрёт, а может просто свистнуть. Но сажать цветочки мы будем всегда;)
48K
19 сентября 2009 года
andrey32
19 / / 22.08.2009
Norgat, все это про раков и цветочки я понимаю, но пока интуитивно.
Издержки предыдущего опыта необъектного программирования. Мыслю пока глаголами.
По поводу int n= this->getnumber(); согласен, просто писал довольно быстро,
C++ стал осваивать недавно. Вопрос не в этом. Получается, каким -то образом до выхода из зоны видимости автоматический объект уничтожить невозможно? В смысле чтобы дальнейшие какие-то действия с ним стали невозможны?
260
19 сентября 2009 года
Ramon
1.1K / / 16.08.2003
Жизнь объекта ограничена вызовами конструктора и деструктора, а существование выделением и освобождением памяти под него.
48K
19 сентября 2009 года
andrey32
19 / / 22.08.2009
Как пользоваться MSDN? Объем этой штуки в несколько гигов предполагает наличие нехилой коллекции знаний, отвечающей на все вопросы. Но мой личный опыт общения с ней создает впечатление ее малополезности. Напоминает общение с ясенем из известной песни, который в ответ только качает головой. Но остается также подозрение. что в силу моей лоховской неопытности, я просто не умею спрашивать или не знаю язык деревьев.
Конкретные примеры: нужно было конвертировать число в строку и прицепить к строковой переменной. Я набирал " convert number to string", просто "number to string". Но ответа не получил. Перелистыванием справочников наткнулся на sprintf, которая делала то что нужно. Эта функция из <stdio> хотя наличие нужного мне инструмента я предполагал в <stdlib>, как atoi(), atof() и т.д. Время было потрачено достаточно много.
Или встретив в книжке cin.get() я захотел почитать обо всех членах класса cin. Ответ был достаточно куцый.
Может я ошибаюсь, но большинство возникающих вопросов типа "How to do it?", а в MSDN ответы на "What is it?" и "How to use it?".
2.1K
20 сентября 2009 года
Norgat
452 / / 12.08.2009
Цитата: andrey32
C++ стал осваивать недавно. Вопрос не в этом. Получается, каким -то образом до выхода из зоны видимости автоматический объект уничтожить невозможно? В смысле чтобы дальнейшие какие-то действия с ним стали невозможны?



создать объект через new и удалить его через delete.

Цитата: andrey32
Как пользоваться MSDN? Объем этой штуки в несколько гигов предполагает наличие нехилой коллекции знаний, отвечающей на все вопросы. Но мой личный опыт общения с ней создает впечатление ее малополезности. Напоминает общение с ясенем из известной песни, который в ответ только качает головой. Но остается также подозрение. что в силу моей лоховской неопытности, я просто не умею спрашивать или не знаю язык деревьев.
Конкретные примеры: нужно было конвертировать число в строку и прицепить к строковой переменной. Я набирал " convert number to string", просто "number to string". Но ответа не получил. Перелистыванием справочников наткнулся на sprintf, которая делала то что нужно. Эта функция из <stdio> хотя наличие нужного мне инструмента я предполагал в <stdlib>, как atoi(), atof() и т.д. Время было потрачено достаточно много.
Или встретив в книжке cin.get() я захотел почитать обо всех членах класса cin. Ответ был достаточно куцый.
Может я ошибаюсь, но большинство возникающих вопросов типа "How to do it?", а в MSDN ответы на "What is it?" и "How to use it?".



я бы порекомендовал сначала попробовать поискать в гугле ответы на такие вопросы...

как пример:

http://www.google.ru/search?q=number+to+string+C%2B%2B&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a

первая же ссылка выдаёт:

Цитата:
» char *itoa(int value, char *buffer, int radix);
Converts an integer value to a null-terminated string using the specified radix and stores the result in the given buffer.
If radix is 10 and value is negative the string is preceded by the minus sign (-). With any other radix, value is always considered unsigned.
buffer should be large enough to contain any possible value: (sizeof(int)*8+1) for radix=2, i.e. 17 bytes in 16-bits platforms and 33 in 32-bits platforms.
Further information can be found here.

43K
20 сентября 2009 года
breeve
54 / / 05.06.2009
 
Код:
int main ()
{
   setlocale (LC_ALL, "");
   string str;
   cout << "Введите строку.";
   getline(cin, str); // здесь str считывается в кодировке 866
   cout << str;
   cin.get();
   return 0;
}


Как перевести str в кодировку 1251? Только надо перевести так чтобы в str было в 1251, а не выводить переводя).
48K
21 сентября 2009 года
andrey32
19 / / 22.08.2009
Цитата: Norgat



я бы порекомендовал сначала попробовать поискать в гугле ответы на такие вопросы...

как пример:

http://www.google.ru/search?q=number+to+string+C%2B%2B&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a

первая же ссылка выдаёт:


Гугль и MSDN несколько разные вещи, и кстати "первая же ссылка" выдает функцию, не входящую в стандарт.

53K
22 сентября 2009 года
Мика
1 / / 22.09.2009
Здравствуйте!
Не нашла соответствующего раздела, потому пишу сюда... Надеюсь, модераторы решат что со мной дальше делать :)

Собственно, ситуация такая -

Использую графическую библиотеку MSFLIB.
Там есть функция, возвращающая положение и размеры окна getwsizeqq.
По идее (как я поняла из описания в "Современный фортран" Бартеньев О.В.)- размеры возвращаются в пикселях. Но практика показала - размеры даются в литеральных символах. Как все-таки получить размер в пикселях (не узнавая каждый раз размер литерального символа)?

Заранее спасибо.
40K
22 сентября 2009 года
Iscander1
11 / / 04.11.2008
У меня такие вопрос ы:Как на Visual C++ 2008 произвести переименование папки и как сделать Restart но не своего а чужого приложения.Как правильно написать адрес,но не на какой то определенный диск(А;В;С.),а на тот на котором установлена система.
14K
24 сентября 2009 года
artem_kvadro
63 / / 30.07.2007
[QUOTE="andrey32"]Как пользоваться MSDN? Объем этой штуки в несколько гигов предполагает наличие нехилой коллекции знаний, отвечающей на все вопросы. Но мой личный опыт общения с ней создает впечатление ее малополезности. Напоминает общение с ясенем из известной песни, который в ответ только качает головой. Но остается также подозрение. что в силу моей лоховской неопытности, я просто не умею спрашивать или не знаю язык деревьев.
Конкретные примеры: нужно было конвертировать число в строку и прицепить к строковой переменной. Я набирал " convert number to string", просто "number to string". Но ответа не получил. Перелистыванием справочников наткнулся на sprintf, которая делала то что нужно. Эта функция из <stdio> хотя наличие нужного мне инструмента я предполагал в <stdlib>, как atoi(), atof() и т.д. Время было потрачено достаточно много.
Или встретив в книжке cin.get() я захотел почитать обо всех членах класса cin. Ответ был достаточно куцый.
Может я ошибаюсь, но большинство возникающих вопросов типа "How to do it?", а в MSDN ответы на "What is it?" и "How to use it?".[/QUOTE]
Аналогично. Тоже когда-то искал о конвертации числа в строку в MSDN, но нашел не сразу и не совсем то, что хотел, а только функции из CRT: _itow, _itow_s и т.д. Это уже после изучения STL я узнал, что для этого ИМХО удобней использовать строковые потоки:
 
Код:
#include <string>
#include <sstream>
...

int x=1;
string s;
std::stringstream ss;

ss<<x<<endl; //запись числа в строковый поток
ss>>s; //извлечение из потока в строку

Как по мне, так MSDN лучше использовать только в качестве справочного пособия, а не как учебник. Например, выделил какое-то ключевое слово, нажал Ф1, почитал и закрыл. А вот искать какие-то способы решения задач поможет гугл. Поэтому MSDN даже не устанавливаю. Все равно, при необходимости он есть в онлайне.
53K
25 сентября 2009 года
Shkrabs
2 / / 25.09.2009
Здравствуйте! Ответьте пожалуйста, что нужно сделать чтоб в Code Blocks'e заработал "gotoxy(int,int)"?
53K
26 сентября 2009 года
Deumos
1 / / 26.09.2009
Не хотел темы создавать.
Проблема с выделяемой под переменую памятью.
В rsdn есть пример работы с wininet
newsreader2
Если я правильно понял то выделяемой памяти не достаточно для больших страниц, тоесть он сработает на 2 строках но страницу из гугла не осилит.
Отладчик ругает переменую lpszBuffer.
Как правильно выделять память под нее?
12K
26 сентября 2009 года
Ghox
297 / / 26.07.2009
Цитата: Shkrabs
Здравствуйте! Ответьте пожалуйста, что нужно сделать чтоб в Code Blocks'e заработал "gotoxy(int,int)"?



Мне кажется, что в Code Blocks сделать, чтобы заработала gotoxy, нельзя... Судя по описанию здесь, функция gotoxy - из библиотеки conio.h. Посмотрел у себя в <путь к папке с установленным CodeBlocks>\include файл conio.h:

Код:
...

_CRTIMP char* __cdecl   _cgets (char*);
_CRTIMP int __cdecl _cprintf (const char*, ...);
_CRTIMP int __cdecl _cputs (const char*);
_CRTIMP int __cdecl _cscanf (char*, ...);

_CRTIMP int __cdecl _getch (void);
_CRTIMP int __cdecl _getche (void);
_CRTIMP int __cdecl _kbhit (void);
_CRTIMP int __cdecl _putch (int);
_CRTIMP int __cdecl _ungetch (int);


#ifndef _NO_OLDNAMES

_CRTIMP int __cdecl getch (void);
_CRTIMP int __cdecl getche (void);
_CRTIMP int __cdecl kbhit (void);
_CRTIMP int __cdecl putch (int);
_CRTIMP int __cdecl ungetch (int);

...

Как мне представляется, в прилагающейся к Code Blocks библиотеке conio.h функция gotoxy отсутствует...
Впрочем, могу и ошибаться, поэтому хотелось бы узнать мнение более знающих.
48K
27 сентября 2009 года
andrey32
19 / / 22.08.2009
Цитата: artem_kvadro

 
Код:
#include <string>
#include <sstream>
...

int x=1;
string s;
std::stringstream ss;

ss<<x<<endl; //запись числа в строковый поток
ss>>s; //извлечение из потока в строку

Как по мне, так MSDN лучше использовать только в качестве справочного пособия, а не как учебник. Например, выделил какое-то ключевое слово, нажал Ф1, почитал и закрыл. А вот искать какие-то способы решения задач поможет гугл. Поэтому MSDN даже не устанавливаю. Все равно, при необходимости он есть в онлайне.


Да уж, пока инет перелопатишь.. Информация- основная проблема.
С потоками я разобрался.
Кстати, если подключен <sstream>, <string> подключать не нужно. А в строку поток можно извлечь так:

 
Код:
s = ss.str();
.
53K
27 сентября 2009 года
Charlotte
2 / / 27.09.2009
Добрый день, подскажите, пожалуйста, как отобразить в консоли строки на русском, вводимые пользователем.

Код:
int StrCmp(const char str11[], const char str12 [])
{  
    if (strlen(str11)>strlen(str12)) cout<<'"'<<str11<<'"'<<" Больше, чем "<<'"'<<str12<<'"'<<endl;
    else cout<<'"'<<str11<<'"'<<(strlen (str11)==strlen (str12)? " равна " : " меньше ")<<'"'<<str12<<'"'<<endl;
    return 0;
}

int lab0()                //Лабораторная работа 0
{
   
    const int max=256;
    char str1 [max];
    char str2 [max];

    cout<<"Введите 2 строки для сравнения."<<endl<<"Первая строка:"<<endl;
    cin.getline(str1,max);
    cout<<"Вторая строка:"<<endl;
    cin.getline (str2, max);
    StrCmp (str1, str2);

return 0;
}


вместо str11 и str12 печатается нечто непереводимое)
CharToOem (str11, str11) выдает ошибку
 
Код:
Error   1   error C2664: 'CharToOemA' : cannot convert parameter 2 from 'const char []' to 'LPSTR'  c:\Documents and Settings\user\Мои документы\Visual Studio 2005\Projects\lab31\lab31\lab31.cpp  19

ясно, что не может преобразовать константу, пробуем иначе:
char strv1[256];
CharToOem (str11, strv1) выдает
 
Код:
Error    2    error LNK2028: unresolved token (0A000382) "extern "C" int __stdcall CharToOemA(char const *,char *)" (?CharToOemA@@$$J18YGHPBDPAD@Z) referenced in function "int __cdecl StrCmp(char const * const,char const * const)" (?StrCmp@@$$FYAHQBD0@Z)    lab31.obj

всякие функции с использованием русского языка не помогают. =(
в майн использована
 
Код:
setlocale(LC_ALL, ".ACP");


Помогите, пожалуйста, я замучилась уже =(
53K
27 сентября 2009 года
Shkrabs
2 / / 25.09.2009
Ghox:"Как мне представляется, в прилагающейся к Code Blocks библиотеке conio.h функция gotoxy отсутствует..."
То есть нужна другая библиотека, точнее - другой компилятор?
12K
28 сентября 2009 года
Ghox
297 / / 26.07.2009
Цитата: Charlotte
ясно, что не может преобразовать константу, пробуем иначе:
char strv1[256];
CharToOem (str11, strv1) выдает
 
Код:
Error    2    error LNK2028: unresolved token (0A000382) "extern "C" int __stdcall CharToOemA(char const *,char *)" (?CharToOemA@@$$J18YGHPBDPAD@Z) referenced in function "int __cdecl StrCmp(char const * const,char const * const)" (?StrCmp@@$$FYAHQBD0@Z)    lab31.obj


Попробовал сделать из вашего кода вот такое:

Код:
#include <cstring>
#include <iostream>
#include <windows.h>
using namespace std;

int StrCmp(const char str11[], const char str12[])
{
  char strv1[256];
  char strv2[256];
  CharToOem(str11, strv1);
  CharToOem(str12, strv2);
  char buf[20];
  if (strlen(strv1) > strlen(strv2))
    CharToOem(" больше, чем ", buf);
  else if (strlen(strv1) == strlen(strv2))
    CharToOem(" равна ", buf);
  else
    CharToOem(" меньше ", buf);
  cout << '"' << strv1 << '"' << buf << '"' << strv2 << '"' << endl;
  return 0;
}

int lab0()                //Лабораторная работа 0
{
  const int max = 256;
  char str1 [max];
  char str2 [max];
  strcpy(str1, "Лабораторная");
  strcpy(str2, "работа");
  StrCmp (str1, str2);
  return 0;
}

int main() {
  return lab0();
}

У меня скомпилилось и работает, строки на русском выводятся нормально...
Если у вас до сих пор так и не получилось с CharToOem - не покажете пример кода, в котором у вас, при попытке ее вызывать, выдалась та ошибка при компиляции?
53K
28 сентября 2009 года
Charlotte
2 / / 27.09.2009
Цитата: Ghox

У меня скомпилилось и работает, строки на русском выводятся нормально...
Если у вас до сих пор так и не получилось с CharToOem - не покажете пример кода, в котором у вас, при попытке ее вызывать, выдалась та ошибка при компиляции?



Ваш пример выдал это:

 
Код:
Error   1   error LNK2028: unresolved token (0A00029F) "extern "C" int __stdcall CharToOemA(char const *,char *)" (?CharToOemA@@$$J18YGHPBDPAD@Z) referenced in function "int __cdecl StrCmp(char const * const,char const * const)" (?StrCmp@@$$FYAHQBD0@Z)    ффф.obj 
Error   2   error LNK2019: unresolved external symbol "extern "C" int __stdcall CharToOemA(char const *,char *)" (?CharToOemA@@$$J18YGHPBDPAD@Z) referenced in function "int __cdecl StrCmp(char const * const,char const * const)" (?StrCmp@@$$FYAHQBD0@Z) ффф.obj 
Error   3   fatal error LNK1120: 2 unresolved externals C:\Documents and Settings\user\Мои документы\Visual Studio 2005\Projects\ффф\Debug\ффф.exe    1

Видимо, что-то не так в компиляторе=(
47K
29 сентября 2009 года
twil
1 / / 16.02.2009
Скажите а можно ли в Си-программах использовать созданные программами на Паскале типизованные файлы?
если да то какие и как именно, заранее спасибо!:confused:[FONT="Courier New"][/FONT]
53K
29 сентября 2009 года
sasha_uu
1 / / 29.09.2009
Добрый день
Пишу программу для КПК wm6. Подскажите какую базу данных можно поставить на кпк? Где ее можно скачать?
48K
30 сентября 2009 года
andrey32
19 / / 22.08.2009
Можно ли перегрузить квадратные скобки для многомерной индексации. Если да, то как должен выглядеть синтаксис?
297
30 сентября 2009 года
koodeer
1.2K / / 02.05.2009
Цитата: andrey32
Можно ли перегрузить квадратные скобки для многомерной индексации. Если да, то как должен выглядеть синтаксис?


Строго говоря, квадратные скобки в C# перегрузить нельзя.
[QUOTE=MSDN]Оператор индексирования массива нельзя перегрузить, но можно определить индексаторы.[/QUOTE]
В частности, это можно сделать так:

 
Код:
public class Matrix
{
   public int[,] elements = new int[10,10];

   public int this[int i, int j] // это и есть индексатор
   {
      get { return elements[i,j]; }
      set { elements[i,j] = value; }
   }
}

После такого объявления класса к нему можно обращаться так:
 
Код:
Matrix a = new Matrix();
a[0,0] = 1; a[1,5] = 5;
Matrix b = new Matrix();
b[0,0] = -4; b[1,5] = 10;


UPD: я почему-то решил, что речь идёт о C#...
andrey32, уточни язык.
48K
01 октября 2009 года
andrey32
19 / / 22.08.2009
koodeer, я имел в виду C++. В литературе описывается перегрузка [],
но мне нужно что то типа
 
Код:
myclass object;
object [1][2]=.....
297
01 октября 2009 года
koodeer
1.2K / / 02.05.2009
Цитата: andrey32
koodeer, я имел в виду C++. В литературе описывается перегрузка [],
но мне нужно что то типа
 
Код:
myclass object;
object [1][2]=.....


Насколько мне известно, можно перегрузить только operator[]. Примеров этого действительно полно.
С многомерными массивами не так всё просто. Могу лишь советовать посмотреть здесь (пункты 13.10, 13.11, 13.12) и здесь.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог