М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
mandarin50
mandarin50
30.12.2021 18:43 •  Информатика

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

👇
Ответ:
nastia296
nastia296
30.12.2021
Хорошо, давайте разобьем эту задачу на несколько шагов:

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 в противном случае
}
```

Это пошаговое решение задачи по выводу информации об автомобилях заданной марки, номера которых начинаются с заданных цифр, на языке С. Надеюсь, ответ понятен и поможет вам! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!
4,5(53 оценок)
Проверить ответ в нейросети
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ