Я не уверен, как сортировать пузыри, используя структуры, например функцию sortMovies, чтобы иметь возможность сортировать фильмы по алфавиту по названию, но я получаю эти ошибки, перечисленные ниже.
#include <stdio.h>
#include <conio.h>
#define CONST 100
void sortMovies(struct movies main[CONST]);
void changeMovie(struct movies main);
int findMovie(struct movies main, int nOfMovies, struct movies tempMovie);
struct movies newMovie();
typedef struct movies{
char title[30];
char UPC[12];
int qnty;
double price;
}movies;
int main()
{
int nOfMovies = 0, findR, stop = 0, nOfMoviesArr[CONST];
char decider;
while (stop != 1)
{
movies main[CONST];
movies tempMovie;
printf("(A)dd a new movie\n(C)hange a Movie's Information \n(D)elete a Movie \n(L)ist All Movies\n(Q)uit");
scanf(" %c", &decider);
switch (decider)
{
case 'a':
case 'A':
tempMovie = newMovie();
nOfMovies = findMovie(main[CONST], nOfMovies, tempMovie);
nOfMovies++;
break;
case 'c':
case 'C':
printf("enter movie upc:");
scanf("%s", main);
break;
case 'l':
case 'L':
sortMovies(main[CONST]);
break;
case 'q':
case 'Q':
return 0;
break;
default:
printf("An invalid option was selected!");
}
}
}
struct movies newMovie() {
movies new;
printf("enter movie upc:");
scanf("%s", new.UPC);
printf("enter movie title:");
scanf("%s", new.title);
printf("enter movie qauntity:");
scanf("%d", new.qnty);
if (new.qnty <= 0)
{
printf("quanitity must be greater than 0");
printf("enter movie qauntity:");
scanf("%d", new.qnty);
}
printf("enter movie price:");
scanf("%lf", new.price);
if (new.price <= 0)
{
printf("price must be greater than 0");
printf("enter movie price:");
scanf("%lf", new.price);
}
return new;
}
int findMovie(struct movies main, int nOfMovies, struct movies tempMovie)
{
int count;
for (count = 0; count < nOfMovies; count++)
{
if (tempMovie.UPC == main.UPC)
{
return count;
}
else
{
printf("error");
return -1;
}
}
}
void changeMovie(struct movies main)
{
char decider;
printf("would you like to change the value? y or no input");
switch (decider)
{
case 'y':
case 'Y':
printf("enter movie title:");
scanf("%c", main.title);
printf("enter movie qauntity:");
scanf("%d", main.qnty);
if (main.qnty <= 0)
{
printf("quanitity must be greater than 0");
printf("enter movie qauntity:");
scanf("%d", main.qnty);
}
printf("enter movie price:");
scanf("%lf", main.price);
if (main.price <= 0)
{
printf("price must be greater than 0");
printf("enter movie price:");
scanf("%lf", main.price);
}
break;
return 0;
}
}
void sortMovies(struct movies main[CONST])
{
int i, sflag, count = 0;
char temp;
do
{
sflag = 0;
for (i = 1; i < CONST; i++)
{
if (main[i - 1].title > main[i].title)
{
temp = main[i - 1].title;
main[i - 1].title = main[i].title;
main[i].title = temp;
sflag = 1;
}
}
count++;
} while (sflag);
for (i = 0; i < CONST; i++)
{
printf("%c\t%c\t%d\t%lf", main[i].title, main[i].UPC, main[i].qnty, main[i].price);
}
} ```
Код серьезности Описание Файл проекта Состояние подавления строки Ошибка состояния подавления C2440 «функция»: невозможно преобразовать «фильмы» в «фильмы» * 40
Ошибка (активная) E0167 аргумент типа «фильмы» "несовместим с параметром типа" struct movies * "40
Ошибка (активная) Выражение E0137 должно быть изменяемым lvalue 148
Ошибка C2106 '=': левый операнд должен иметь значение l 148
Ошибка ( active) выражение E0137 должно быть изменяемым lvalue 149
ошибка C2106 '=': левый операнд должен иметь значение l 149