Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.Python.8-10.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
1.2 Mб
Скачать

С использованием структурного программирования

#include <stdio.h> #include <string.h> int detect_nachalnik(char *nomer_avtomobilya); int poschitat_shtraf(char *nomer_avtomobilya); int krutoj_nomer(char *nomer_avtomobilya); int krasivyj_nomer(char *nomer_avtomobilya); int main() {     int summa_shtrafov = 0;     int skorost_avtomobilya;     char nomer_avtomobilya[1000];     scanf("%d%s", &skorost_avtomobilya, nomer_avtomobilya);     while (!detect_nachalnik(nomer_avtomobilya))     {         if (skorost_avtomobilya > 65) {             summa_shtrafov += poschitat_shtraf(nomer_avtomobilya);         }         scanf("%d%s", &skorost_avtomobilya, nomer_avtomobilya);     }     return 0; } /*--— определение тел функций ----*/ int detect_nachalnik(char *nomer_avtomobilya) {     return strcmp(str, "A999AA") == 0; } int poschitat_shtraf(char *nomer_avtomobilya) {     if (krutoj_nomer(nomer_avtomobilya)) return 1000;     else if (krasivyj_nomer(nomer_avtomobilya)) return 500;     else return 100; } int krutoj_nomer(char *nomer_avtomobilya) {     if (nomer_avtomobilya[1] == nomer_avtomobilya[2]         && nomer_avtomobilya[1] == nomer_avtomobilya[3]) {         return 1;     }     return 0; } int krasivyj_nomer(char *nomer_avtomobilya) {     if (nomer_avtomobilya[1] == nomer_avtomobilya[2]         || nomer_avtomobilya[2] == nomer_avtomobilya[3]         || nomer_avtomobilya[1] == nomer_avtomobilya[3]) {         return 1;     }     return 0; }

 

Задания

  1. Очевидно ли, что должна делать первая программа? Очевидно ли, что должна делать вторая программа?

  2. Заметим, что обе программы не работают. Найдите ошибки в первой и во второй. Где ошибки исправить легче?

  3. Исправьте программу во вкладке ниже в соответствии с принципами структурного программирования.

Данная программа ищет самый популярный фильм среди данных

#include <stdio.h> #include <string.h> typedef struct {     char name[1000];     int reme; } filmq; int main() {     filmq film[1000];     char str[1000];     int max_num[3]= {0},max[3]= {0},i,n,cur_num=0;     scanf("%d",&n);     for(i=0; i<n; i++)     {         int j;         scanf("%s",str);         for(j=0; j<cur_num; j++)         {             if(strcmp(str,film[j].name)==0)             {                 film[j].reme++;                 break;             }         }         if(j==cur_num)         {             strcpy(film[cur_num].name,str);             film[cur_num].reme=1;             cur_num++;         }     }     int j;     for(j=0; j<cur_num; j++)     {         if(film[j].reme>max[0] || (film[j].reme==max[0] && strcmp(film[j].name,film[max_num[0]].name)<0))         {             max_num[2]=max_num[1];             max_num[1]=max_num[0];             max_num[0]=j;             max[2]=max[1];             max[1]=max[0];             max[0]=film[j].reme;         }         else if(film[j].reme>max[1] || (film[j].reme==max[1] && strcmp(film[j].name,film[max_num[1]].name)<0))         {             max_num[2]=max_num[1];             max_num[1]=j;             max[2]=max[1];             max[1]=film[j].reme;         }         else if(film[j].reme>max[2] || (film[j].reme==max[2] && strcmp(film[j].name,film[max_num[2]].name)<0))         {             max_num[2]=j;             max[2]=film[j].reme;         }     }     for(j=0;j<3;j++)     {         printf("1. %s    %d\n",film[max_num[j]].name,max[j]);     }     return 0; }