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

Подскажите, что не так в коде - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Записать в массив сперва все элементы, целая часть которых лежит в интервале [ a , b ], а затем - все прочие http://www.cyberforum.ru/cpp-beginners/thread1680904.html
Превратить одномерный массив , состоящий из n вещественных элементов таким образом , чтобы сначала располагались все элементы , целая часть которых лежит в интервале , а затем - все остальные.
C++ Найти номер первой из строк, не содержащих ни одного положительного элемента Данная квадратная матрица . Найти номер первого из строк , не содержащих ни одного положительного элемента. http://www.cyberforum.ru/cpp-beginners/thread1680898.html
Исправить код, работающий со строками C++ Builder
#include <string.h> void Razb_Poisk_Ed(int ,String &); int Poisk_Ed=0,Poisk_Ed_Case=0,Poisk_Ud=0; String h=""; void Razb(String &Lev,String &Prav,TLabel* L){ int i,k=1; while(k!=0){ i=1; k=Lev.Length()-1; while(i<k){ i++;
Найти количество счастливых билетов с шестизначными номерами C++
Построить алгоритм для нахождения количества счастливых билетов с шестизначными номерами. Билет считается счастливым , если сумма первых трех цифр равна сумме трех последних.
C++ Зависает Visual Studio 2015 при отладке http://www.cyberforum.ru/cpp-beginners/thread1680876.html
Всем привет. Собственно вся проблема в названии темы. При попытке запустить написанный код, студия наглухо зависает. Думал что проблема в коде, хотя компилятор не ругался, попробовал запустить простой шаблон Console Application Win32, ничего не изменилось. Есть какие - нибудь мысли из-за чего он зависает?
C++ Какие есть виды массивов (кроме одномерных, двумерных и двумерных ступенчатых массивов)? Какие есть виды массивов (кроме одномерных, двумерных и двумерных ступенчатых массивов)? И почему такая вот запись является "чуть" ошибочной? int **p = new int*; for (int i(0); i<N; i++) p = new int; подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2908 / 1444 / 397
Регистрация: 18.10.2014
Сообщений: 2,662
09.03.2016, 21:46     Подскажите, что не так в коде
Цитата Сообщение от Евгений_студент Посмотреть сообщение
C++
1
2
3
4
5
6
struct WORKER {
    char name[30];
    char surname[50];
    char position[10];
    int supply[5];
};
Ну то есть все именно так, как я говорил выше.

Голые массивы в С++ нельзя присваивать. Для того, чтобы скопировать один массив в другой, придется пользоваться библиотечной функцией: 'memspy, 'std::copy' и т.д. или, для C-style строк, 'strcpy'.

В вашем случае вы, очевидно, работаете со строками в стиле С. Т.е. вам надо использовать 'strcpy' для копирования таких строк. Причем вы уже использовали 'strcpy' для копирования 'name'. Так почему же вы тогда не используете 'strcpy' для всех остальных полей??? 'strcpy' в руки - и вперед!

А 'supply' у вас не строка. Его придется копировать через 'memcpy' или 'std::copy'.

---

Возникает вопрос: почему в С++ коде вы используете голые массивы, а не 'std::string' и 'std::vector'? Там бы такой проблемы не было.

---

В любом случае, на самом деле в вашем алгоритме сортировки вам очевидно нужно просто обменять местами два элемента массива. Мне не понятно, почему вы пытаетесь делать это через обмен местами индивидуальных полей, если можно было просто обменять элементы целиком, без работы с отдельными полями и безо всяких 'strcpy' вообще

C++
1
2
3
4
5
6
7
8
9
10
11
void sortofalpfavit(WORKER* st, int n) 
{
  ...
            if (strcmp(st[i].name, st[j].name) > 0) 
            {   
                WORKER temp = st[i];
                st[i] = st[j];
                st[j] = temp;
            }
  ...
}
и все!

Не говоря уже том, что можно было просто сделать

C++
1
2
3
4
5
6
7
void sortofalpfavit(WORKER* st, int n) 
{
  ...
            if (strcmp(st[i].name, st[j].name) > 0) 
              std::swap(st[i], st[j]);
  ...
}
 
Текущее время: 07:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru