Сформировать массив из n структур, содержащих сведения об автомобилях: марка, цвет, номер, фамилия и адрес владельца. Вывести информацию об автомобилях заданной марки, номера которых начинаются с k заданных цифр. Предусмотреть случай, что таких сведений нет. Решать на язык С

kirushgold kirushgold    3   18.12.2020 18:39    22

Ответы
dsayui56 dsayui56  21.12.2023 14:18
Хорошо, давайте разобьем эту задачу на несколько шагов:

1. Сначала нужно определить структуру, которая будет содержать информацию об автомобиле. Давайте назовем ее "Car". Она должна содержать следующие поля: марка (тип char или строка), цвет (тип char или строка), номер (тип int), фамилия владельца (тип char или строка) и адрес владельца (тип char или строка).

```c
struct Car {
char brand[20];
char color[20];
int number;
char ownerLastname[20];
char ownerAddress[50];
};
```

2. Далее нужно определить массив структур типа Car. Пусть размер массива будет равен n, где n - это количество автомобилей, о которых будет информация.

```c
struct Car cars[n];
```

3. Теперь нужно заполнить массив данными об автомобилях. Для этого можно использовать цикл, который будет запрашивать информацию о каждом автомобиле у пользователя и сохранять ее в соответствующей структуре. Например:

```c
for (int i = 0; i < n; i++) {
printf("Введите марку автомобиля: ");
scanf("%s", cars[i].brand);

printf("Введите цвет автомобиля: ");
scanf("%s", cars[i].color);

printf("Введите номер автомобиля: ");
scanf("%d", &cars[i].number);

printf("Введите фамилию владельца автомобиля: ");
scanf("%s", cars[i].ownerLastname);

printf("Введите адрес владельца автомобиля: ");
scanf("%s", cars[i].ownerAddress);
}
```

4. Теперь нужно выводить информацию об автомобилях заданной марки с номерами, которые начинаются с заданных цифр. Для этого можно использовать еще один цикл, который будет проверять каждый элемент массива и выводить информацию, если найдено совпадение. Например:

```c
char desiredBrand[20];
int desiredDigits;

printf("Введите марку автомобиля, о которой хотите получить информацию: ");
scanf("%s", desiredBrand);

printf("Введите количество цифр, с которых должны начинаться номера автомобилей: ");
scanf("%d", &desiredDigits);

int found = 0; // Флаг, указывающий на то, была ли найдена хотя бы одна машина

for (int i = 0; i < n; i++) {
if (strcmp(cars[i].brand, desiredBrand) == 0 && startsWith(cars[i].number, desiredDigits)) {
printf("Марка: %s\n", cars[i].brand);
printf("Цвет: %s\n", cars[i].color);
printf("Номер: %d\n", cars[i].number);
printf("Фамилия владельца: %s\n", cars[i].ownerLastname);
printf("Адрес владельца: %s\n", cars[i].ownerAddress);
printf("\n");

found = 1; // Если найдено совпадение, устанавливаем флаг в 1
}
}

if (found == 0) {
printf("Нет информации об автомобилях заданной марки с номерами, которые начинаются с заданных цифр.\n");
}
```

5. Вспомогательная функция startsWith() нужна для проверки, начинается ли число с заданных цифр. Например, функция может выглядеть так:

```c
int startsWith(int number, int digits) {
int power = pow(10, digits - 1); // Вычисляем степень 10, которая соответствует заданному количеству цифр
int firstDigit = number / power; // Получаем первую цифру числа

return firstDigit == digits; // Возвращаем 1, если первая цифра равна заданной, и 0 в противном случае
}
```

Это пошаговое решение задачи по выводу информации об автомобилях заданной марки, номера которых начинаются с заданных цифр, на языке С. Надеюсь, ответ понятен и поможет вам! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика