Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 20

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

09.03.2016, 20:06. Показов 1465. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void sortofalpfavit(WORKER* st, int n) 
{
int i,j;
 
for (i = 0; i < n; i++) 
{
        for ( j = i + 1; j < n; j++)  // ñîðòèðîâêà
        { 
            if(strcmp(st[i].name, st[j].name) > 0) 
            {   
                WORKER temp;
                 
                strcpy(temp.name, st[i].name);
                temp.surname = st[i].surname;
                
                temp.position = st[i].position; 
                temp.supply = st[i].supply;  
 
                 
                strcpy(st[i].name, st[j].name); 
                st[i].surname = st[j].surname;
                
                st[i].position = st[j].position; 
                st[i].supply = st[j].supply; 
 
                st[j].name = temp.name; 
                strcpy(st[j].surname, temp.surname); 
                
                st[j].position = temp.position; 
                st[j].supply = temp.supply; 
            }
 
            } 
        }
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.03.2016, 20:06
Ответы с готовыми решениями:

Подскажите, что в коде не так
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt; #pragma hdrstop #include...

Подскажите, что не так в коде?
Запрограммировать схему &quot;клиенты – официант&quot;, используя семафорную переменную. Процесс-официант выполняет запрос на обслуживание...

Подскажите что же в коде не так?
Помогите, что же в коде не так?????????? void Update () { if (transform.position.x &amp;gt; 18) { speed = Random.Range(8f,12f); ...

8
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
09.03.2016, 20:10
Во-первых, с чего вы взяли, что тут что-то "не так"?

Во-вторых, не видя хотя бы объявлений использованных вам типов, ничего осмысленного об этом вырванном из контекста обрывке кода сказать нельзя.
0
BrainOverflow
 Аватар для sab1ch
126 / 130 / 64
Регистрация: 31.03.2013
Сообщений: 556
09.03.2016, 20:14
Пока что единственное, что не так - это отсутствие тегов.
0
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 20
09.03.2016, 20:18  [ТС]
[Error] invalid array assignment
0
70 / 70 / 52
Регистрация: 24.01.2013
Сообщений: 198
09.03.2016, 20:37
размер массива?
0
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 20
09.03.2016, 20:44  [ТС]
это структура.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
09.03.2016, 21:24
Цитата Сообщение от Евгений_студент Посмотреть сообщение
[Error] invalid array assignment
Еще раз: не видя определений ваших типов, сказать ничего нельзя.

(Включив ясновидение и телепатию: я подозреваю, что у вас и 'name', и 'surname' (и может еще что), объявлены как массивы. При этом вы с 'name' работаете правильно - через 'strcmp' и 'strcpy', а 'surname' по какой-то необъяснимой причине пытаетесь присваивать напрямую. Это что за мешанина? Голые массивы в С++ (или С) не присваиваются напрямую. Нет такой фичи в С++.

Если мое предположение верно (а оно, разумеется, верно), то такое тупейшее и невероятное расхождение в работе с идентичными по своей природе данными однозначно говорит о том, что вы совершенно не понимаете, что делаете. Корректную основу кода вы, очевидно, где-то позаимствовали, а белиберду дописали сами.)

Цитата Сообщение от Евгений_студент Посмотреть сообщение
это структура.
От "это структура" нам ни тепло, ни холодно. Полное определение типа 'WORKER' - в студию! От начала до конца.

P.S. В языке С++ нет "структур". Есть только классы.
0
0 / 0 / 0
Регистрация: 25.12.2015
Сообщений: 20
09.03.2016, 21:31  [ТС]
TheCalligrapher, вот вся программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "stdlib.h"
#include "cstring"
#include <iostream>
 
using namespace std;
 
struct WORKER {
 
    char name[30];
    char surname[50];
    char position[10];
    int supply[5];
 
};
 
void input(WORKER* st, int n) {
    printf("\t\tSome information about workers!\n");
    for (int i=0; i < n; i++) {
        cout << "Name: "; cin >> st[i].name;
        cout << "Surname: "; cin >> st[i].surname;      
        cout << "Position: "; cin >> st[i].position;           
        //cout << "Year of supply: "; cin>> st[i].supply;
    cout << "Year of supply: ";
        for (int j = 0; j < 1; j++) 
            cin >> st[i].supply[j];
    cout<<endl;     
    }
}
 
void output(const WORKER* st, int n) {
 
    system("cls");
    cout << "---------------------------------" << endl;
    for (int i = 0; i < n; i++) {
        cout << "Worker " << i+1 << endl;
        cout << "Name: " << st[i].name << endl;
        cout << "Surname: " << st[i].surname << endl;
        cout << "Position: " << st[i].position << endl;
        cout << "Year of supply: "<< st[i].supply[0]<<endl;
        cout << "---------------------------------" << endl << endl;
    }
    
}
 
void stage(const WORKER* st, int n) 
{
int j,i,k;
int flag=0;
cout<<"Input stage of work: "; cin>>k; cout<<endl;
 for ( i = 0; i < n; i++) {
 
 for ( j=0; j<1; j++)
 {
            if( k <2016 - st[i].supply[j]) // ñðàâíèâàåì ñòàæ 
            { 
                cout << st[i].name << "   "<< st[i].surname << "   "  << st[i].position << "   " << st[i].supply[j] << endl; 
                flag++; // åñëè åñòü âûïîëíåíèå óñëîâèÿ óâåëè÷èâàåì ñ÷¸ò÷èê
            } 
}
}
            if(flag == 0)  // åñëè ñ÷¸ò÷èê ðàâåí 0
                printf("\nThere aren't such workers! \n"); // òàêèõ ðàáîòíèêîâ íåò
            
 
}
    
 
void sortofalpfavit(WORKER* st, int n) 
{
int i,j;
 
for (i = 0; i < n-1; i++) 
{
        for ( j = i + 1; j < n; j++)  // ñîðòèðîâêà
        { 
            if(strcmp(st[i].name, st[j].name) > 0) 
            {   
                WORKER temp;
                 
                strcpy(temp.name, st[i].name);
                temp.surname = st[i].surname;
                
                temp.position = st[i].position; 
                temp.supply = st[i].supply;  
 
                 
                strcpy(st[i].name, st[j].name); 
                st[i].surname = st[j].surname;
                
                st[i].position = st[j].position; 
                st[i].supply = st[j].supply; 
 
                st[j].name = temp.name; 
                strcpy(st[j].surname, temp.surname); 
                
                st[j].position = temp.position; 
                st[j].supply = temp.supply; 
            }
 
            } 
        }
    }
       /* 
    for (int i = 0; i < n;i++)
        for (int j = i + 1; j < n - 1; j++)
            if (st[i].name[0] > st[j].name[0])
                swap(st[i].name[0], st[j].name[0]);
        }
*/
int main() {
    begin:
    int n;
    printf("Enter amount of workers: "); 
    cin >> n;
    if (n<=0)  {
    cout<<"Error!"<<endl;
    goto begin; }
    else
    {
    
    WORKER *st = new WORKER[n];
 
    input(st, n);
    sortofalpfavit(st, n);
    output(st, n);
    stage(st, n);
 
    delete[] st;
   }
    system("pause");
    return 0;
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
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]);
  ...
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.03.2016, 21:46
Помогаю со студенческими работами здесь

подскажите что в этом коде не так?
&lt;?php // Ошибки ini_set('display_errors', 1); error_reporting(E_ALL); ini_set(&quot;memory_limit&quot;, &quot;-1&quot;); set_time_limit(0); ...

вертикальное выпадающее меню, подскажите что не так в коде
&lt;html&gt; &lt;head&gt; &lt;style&gt; body{ margin: 0; padding: 10px; font-famaly: Verdana, Tahoma, Arial; background-color: white; ...

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от 702 до 1000. Что ни так понимаю, где...

Что с оператором if else на jQuery? Что не так в коде?
В общем уже не первый раз сталкиваюсь с такой проблемой: мне необходимо задать определенные условия в скриптах, но как только начинаю...

Что не так в коде
Подскажите что не так в коде fstream fs; fs.open(file, fstream::in |fstream::out | fstream::app); fstream::app не хочет принимать


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru