Вот у меня кусок кода, а именно сортировка по возрасту 
 
void sort() // сама сортировка 
{ 
for(i=n-1;i>0;i--)for(int j=0;j< i;j++) 
if(strcmp(stud[j].fio>stud[j+1].fio)>0) 
s=stud[j],stud[j]=stud[j+1],stud[ j+1]=s; 
} 
 
при компиляции выдает такие ошибки 
 
11IntelliSense: слишком мало аргументов в вызове функцииc:\Users\апап\Desktop\ПИНЖ\Алгоритмы и структуры данных\Дин, Структ 1\Дин, Структ 1\Исходный код. cpp64 
13IntelliSense: отсутствует оператор "=", соответствующий этим операндам 
 типы операндов: student = intc:\Users\апап\Desktop\ПИНЖ\Алгоритмы и структуры данных\Дин, Структ 1\Дин, Структ 1\Исходный код. cpp65 
12IntelliSense: не существует подходящей функции преобразования из "student" в "int"c:\Users\апап\Desktop\ПИНЖ\Алгоритмы и структуры данных\Дин, Структ 1\Дин, Структ 1\Исходный код. cpp65 
10IntelliSense: аргумент типа "bool" несовместим с параметром типа "const char *"c:\Users\апап\Desktop\ПИНЖ\Алгоритмы и структуры данных\Дин, Структ 1\Дин, Структ 1\Исходный код. cpp64 
Ошибка9error C2679: бинарный "=": не найден оператор, принимающий правый операнд типа "int" (или приемлемое преобразование отсутствует) c:\users\апап\desktop\пинж\алгоритмы и структуры данных\дин, структ 1\дин, структ 1\исходный код. cpp65 
Ошибка7error C2660: strcmp: функция не принимает 1 аргументовc:\users\апап\desktop\пинж\алгоритмы и структуры данных\дин, структ 1\дин, структ 1\исходный код. cpp64 
Ошибка8error C2440: =: невозможно преобразовать "student" в "int"c:\users\апап\desktop\пинж\алгоритмы и структуры данных\дин, структ 1\дин, структ 1\исходный код. cpp65 
кто знает как исправить, пожалуйуста!
	
	
	Другие языки программирования и технологии
	
		
		
								
				
								
				
								
				
																				
							
								
				
			
	
		
			Помогите с программированием СИ
stud[j] = stud[j+1] // тут вы пытаетесь присвоить одной структуре вторую, чего в Си делать нельзя не под каким соусом. Требуется присваивать поля структуры. 
 
s.fio = stud[j].fio;
s.group = stud[j].group;
s.year = stud[j].year;
 
stud[j].fio = stud[j + 1].fio;
stud[j].group = stud[j + 1].group ;
stud[j].year = stud[j + 1].year ;
 
stud[j + 1].fio = s.fio;
stud[j + 1].group = s.group;
stud[j + 1].year = s.year;
 
Но и это неправильно! ! Во-первых, такая архитектура гарантирует вам выход за пределы массива. Во-вторых, она громоздкая. Если полей будет полторы тысячи?
 
Далее.. .
 
strcmp(stud[j].fio > stud[j+1].fio) // кошмар!
 
Функция strcmp принимает в качестве параметров два указателя и производит посимвольное сравнение двух строк. А у вас там операция сравнения вставлена. Если строки равны, функция strcmp возвращает 0, иначе 1, если не совпавший символ первого параметр больше и наоборот, -1, если меньше. То есть это может быть как положительное, так и отрицательное число.
 
Поэтому рекомендую реализовать вашу идею с помощью указателей. Дёшево и сердито!
 
#include <stdio.h>
#include <string.h>
#include <conio.h>
 
#define MAX_FIO 32
#define MAX_SIZE 4
 
typedef struct {
char fio[MAX_FIO];
} student;
 
student students[MAX_SIZE];
 
void usort();
void uswap(student *, student *);
 
int main() {
int n;
for (n = 0; n < MAX_SIZE; n++) {
printf("%i > ", n + 1);
fflush(stdin);
scanf_s("%[^\n]s", students[n].fio, MAX_FIO);
}
usort();
for (n = 0; n < MAX_SIZE; n++) printf("%s\n", students[n].fio);
_getch();
return 0;
}
void usort() {
int n, m;
for (n = 1; n < MAX_SIZE; n++)
for (m = 0; m < MAX_SIZE - n; m++)
if (strcmp(students[m].fio, students[m + 1].fio) > 0)
uswap(&students[m], &students[m + 1]);
}
void uswap(student * a, student * b) {
student tp;
tp = *a;
*a = *b;
*b = tp;
}
				
							s.fio = stud[j].fio;
s.group = stud[j].group;
s.year = stud[j].year;
stud[j].fio = stud[j + 1].fio;
stud[j].group = stud[j + 1].group ;
stud[j].year = stud[j + 1].year ;
stud[j + 1].fio = s.fio;
stud[j + 1].group = s.group;
stud[j + 1].year = s.year;
Но и это неправильно! ! Во-первых, такая архитектура гарантирует вам выход за пределы массива. Во-вторых, она громоздкая. Если полей будет полторы тысячи?
Далее.. .
strcmp(stud[j].fio > stud[j+1].fio) // кошмар!
Функция strcmp принимает в качестве параметров два указателя и производит посимвольное сравнение двух строк. А у вас там операция сравнения вставлена. Если строки равны, функция strcmp возвращает 0, иначе 1, если не совпавший символ первого параметр больше и наоборот, -1, если меньше. То есть это может быть как положительное, так и отрицательное число.
Поэтому рекомендую реализовать вашу идею с помощью указателей. Дёшево и сердито!
#include <stdio.h>
#include <string.h>
#include <conio.h>
#define MAX_FIO 32
#define MAX_SIZE 4
typedef struct {
char fio[MAX_FIO];
} student;
student students[MAX_SIZE];
void usort();
void uswap(student *, student *);
int main() {
int n;
for (n = 0; n < MAX_SIZE; n++) {
printf("%i > ", n + 1);
fflush(stdin);
scanf_s("%[^\n]s", students[n].fio, MAX_FIO);
}
usort();
for (n = 0; n < MAX_SIZE; n++) printf("%s\n", students[n].fio);
_getch();
return 0;
}
void usort() {
int n, m;
for (n = 1; n < MAX_SIZE; n++)
for (m = 0; m < MAX_SIZE - n; m++)
if (strcmp(students[m].fio, students[m + 1].fio) > 0)
uswap(&students[m], &students[m + 1]);
}
void uswap(student * a, student * b) {
student tp;
tp = *a;
*a = *b;
*b = tp;
}
strcmp( stud[j].fioЗАПЯТАЯstud[j+1].fio ) 
например, а вообще читать больно для зрения и мозга.
 
http://www.cplusplus.com/reference/cstring/strcmp/
				
							например, а вообще читать больно для зрения и мозга.
http://www.cplusplus.com/reference/cstring/strcmp/
Код полный отстой. Где операторские скобки? Где точки с запятой?
				
									
								
									Евгений Ганчев								
								зачем точки с запятой в for и if ??							
											Читал, читал и сдался
				
							Похожие вопросы
- Помогите с программированием СИ
- Помогите с программированием на Си
- Язык программирования Си
- Помогите пожалуйста решить задачу по программированию (язык программирования СИ)
- Как в языке программирования СИ осуществлять вызов подпрограммы, которая находится в другом файле?
- Как на языке программирования си сделать, чтобы при вводе полного бреда программа не поломалась?
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Помогите с программированием на Си. Задача про треугольники
- Помогите с программированием на си
- Привет, помогите с программированием на СИ, передача массива в функцию..
 
			