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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_AgreSsoR_666
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 16
#1

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

04.04.2011, 15:17. Просмотров 381. Ответов 6
Метки нет (Все метки)

программа компилируется,но выводит какие то иероглифы,помогите найти ошибки
#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;
}
}
//отсортировано по убыванию.
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2011, 15:17     отладить программу
Посмотрите здесь:

Не получется отладить программу - C++
Программа ведомость результатов экзаменационной сессии. выдает такие ошибки: 1&gt;c:\documents\visual studio...

Не получается отладить программу - C++
В двумерном массиве удалить все строки, в которых среднее арифметическое элементов является двузначным числом. Не получаются два...

Как отладить консольную программу? - C++
Как делать отладку в VS если мы вызываем наш проект в консоли в windows и передаем параметры в этой же консоли int main(int argv, char*...

В С++ 2012 не получается отладить программу - C++
На с++ 2012 г. при отладке выскакивает окно присоединение к процессору, из-за чего и не работает программа. Не знаю, что делать. Как можно...

Средствами С++ составить и отладить программу - C++
Средствами С++ составить и отладить программу, позволяющую определить лежит ли точка с произвольной координатой (Х и У) внутри...

Отладить программу циклического процесса - C++
Необходимо отладить программу циклического процесса \prod_{K=1}^{N}(1+sin(KX)/K! ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
garkeP91
50 / 50 / 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
50 / 50 / 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
50 / 50 / 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     отладить программу
Еще ссылки по теме:

Составить и отладить программу в виде функции - C++
Всем привет! Помогите составить и отладить программу в виде функции, позволяющую формировать новый массив, используя элементы...

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

Составить и отладить программу с использованием цикла for - C++
Объясните пожалуйста, не понимаю этого вообще ни как. Дано n вещественных чисел. Заменить те из них, у которых остаток от деления на m...

Составить и отладить программу с использованием цикла for - C++
Дано число а (1 &lt; a &lt; 1,5). Среди чисел 1+1/2, 1+1/3, … найти первое, меньшее а.


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

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

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru