Форум программистов, компьютерный форум CyberForum.ru

отладить программу - C++

Восстановить пароль Регистрация
 
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
04.04.2011, 15:17     отладить программу #1
программа компилируется,но выводит какие то иероглифы,помогите найти ошибки
#include<assert.h>
#include<iostream>
#include<string>
static const int N = 3; //количество "карточек" в массиве
static const int char_size = 256;

class note{
public:
char family_name[char_size];
int phone;
// и остальное.
private:
//nothing.
};

void add(note* const a, const int i); //заполняет i-тую "карточку"
void search(const char* const person,
const note* const a); //Поиск карточки по фамилии
void gsort(note* const a); //очевидно сортировка.

int main(void){
note a[N];
//заполняем:
for(int i = 0; i<N; i++) add(a,i);

//сортируем:
std::cout<<"==================================="<<std::endl;
for(int i = 0;i<N; i++)
std::cout<<a[i].family_name<<'\t'<<a[i].phone<<std::endl;

gsort(a);

std::cout<<"==================================="<<std::endl;
for(int i = 0;i<N; i++)
std::cout<<a[i].family_name<<'\t'<<a[i].phone<<std::endl;


//Ищем человека:
std::cout<<"кого ищем? : ";
char person[char_size];
std::cin>>person;

search(person,a);

return 0;
}

void add(note* const a, const int i){
assert((a!=NULL)&&(i>=0)&&(i<N));

//тут красивые запросы с проверкой вводимых данных.
//у нас - фамилия и телефон через пробел.
std::cout<<"\nфамилию и телефон через пробел введите пожалуйста."<<std::endl;
std::cin>>a[i].family_name>>a[i].phone;
}

void search(const char* const person, const note* const a){
assert( (a!=NULL)&&(person!=NULL)&&(N>0) );
//ниже должно быть красивое оформление и вывод всех данных
// по найденой карточке.
for(int i = 0;i<N; i++){
if(!strcmp(a[i].family_name, person)){
std::cout<<"найдено :";
std::cout<<a[i].family_name<<'\t'<<a[i].phone<<std::endl;
return;
}
}
std::cout<<"не найдено.";
}


void gsort(note* const a){
assert((a!=NULL)&&(N>0));
//гномья, разнообразия для:
int iterator = 1;
while(iterator<N){
if (a[iterator-1].phone > a[iterator].phone)
{
iterator++;}
else{
//обмен значениями (лучше написать функцию swap(a,b))
char str[char_size];
std::strcpy(str,a[iterator].family_name);
std::strcpy(a[iterator].family_name,
a[iterator-1].family_name);
std::strcpy(a[iterator-1].family_name,str);

int tmp = a[iterator].phone;
a[iterator].phone = a[iterator-1].phone;
a[iterator-1].phone = tmp;
//продолжаем:

iterator--;
if (iterator == 0) iterator = 1;
}
}
//отсортировано по убыванию.
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
04.04.2011, 15:42     отладить программу #2
Куда-нибудь, например в функцию main() добавьте:
C++
1
setlocale(LC_ALL,"Russian");
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
04.04.2011, 15:44  [ТС]     отладить программу #3
я его записал после : int main(void){, по любому ошибка. Может не в том месте пишу?
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
04.04.2011, 15:52     отладить программу #4
_AgreSsoR_666, вроде все правильно.. Есть еще вариант, точно работает. Надо написать дополнительную функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
std::string rus(const std::string s)
{
    std::string s2(s);
    for (unsigned i=0; i<s2.length(); i++)
        if (s2[i] < 0) 
        {
            if (s2[i] >= -16) s2[i] -= 16;  // р-я
            else if (s2[i] >= -64) s2[i] -= 64;// А-Я, а-п
            else if (s2[i] == -88) s2[i] = -16;// Ё
            else if (s2[i] == -72) s2[i] = -15;// ё
            else if (s2[i] == -71) s2[i] = -4;  // №
            else s2[i] = ' ';   // остальные символы CP1251
        }
    return s2;
}
И все сообщения, которые выводятся на экран писать в формате:
C++
1
std::cout<< rus ("сообщение") <<std::endl;
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
04.04.2011, 16:01  [ТС]     отладить программу #5
rus я попробовал, но я вообще не вникся что это за дополнительная функция, и в каком месте ее добавить
garkeP91
49 / 49 / 5
Регистрация: 24.10.2010
Сообщений: 131
04.04.2011, 16:08     отладить программу #6
Это такая же функция как и все остальные:
C++
1
2
void add(note* const a, const int i)
void search(const char* const person, const note* const a)
и т.д.
Добавьте куда угодно, только не в тело другой функции. Она просто как бы "смещает" коды символов. Я в их кодировках не особо разбираюсь, но работает же.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2011, 16:30     отладить программу
Еще ссылки по теме:

Составить и отладить программу с использованием цикла for C++
C++ Составить и отладить программу с использованием цикла for
Отладить программу циклического процесса C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
04.04.2011, 16:30  [ТС]     отладить программу #7
сейчас поробую

Добавлено через 11 минут
теперь все понятно, но по любому этот гад моросит

Добавлено через 8 минут
теперь работает
Yandex
Объявления
04.04.2011, 16:30     отладить программу
Ответ Создать тему
Опции темы

Текущее время: 02:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru