Loading...
Dimana.N avatar Dimana.N 2 Точки

06. Любим филм (Изпит - 15 и 16 юни 2019)

Здравейте!

Ако някой може да обясни или да сподели решението си за задача "Favorite movie" от последния изпит ще съм много благодарна crying

Линк към условието: https://softuni.bg/downloads/svn/programming-basics-v4/course-directories/september-2019/2019-04/Exam/06.%20Favorite%20Movie.pdf

Тагове:
0
Programming Basics
RuNNeR4142 avatar RuNNeR4142 396 Точки
Best Answer

Като изход трябва да изпишем заглавието на филма с най-много точки и броят на точките така че правим 2 променливи още в началото. Четем максимум 7 заглавия така че ще ни трябва още една променлива в началото която ще е брояч на филми. Програмата приключва при команда STOP или когато брояча достигне 7. Избираме едно от тези за условие на while цикъл (лично аз предпочитам командата докато не е равна на STOP, може и двете с && разибра се)  Ако има едно условие в while другото условие трябва да е вътре и да излиза от цикъла с if - break (ако в while е условието за команда STOP, тогава брояча = 7 трябва да е в края на while, ако в while е брояча = 7 тогава проверката за команда STOP трябва да е в началото на while веднага след подаването на нов вход)  
Вътре в while правим промелива която ще е заглавието на филма и равна на  командата и  правим променлива за точките на филма и започваме да ги изчисляваме с помощта на вложен for цикъл който ще започва от 0 и продължава до дължината на заглавието на филма ( < movie.length ). Вътре във for цикъла  ще вземаме ASCII кода на всяка буква като направим int промелива равна на буквата на заглавието с индекс i . ( movieName.charAt(i) ) . Добавяме числото към сбора на точки  и продължаваме с проверка дали буквата е малка ( ASCII код между  65 и 90 включително)  или голяма (ASCII код между 97 и 122 включително). Ако е малка махаме дължината на заглавието на филма от сбора, ако е голяма махаме дължината на заглавието на филма по 2 .
След като for цикъла приключи ще имаме изчислен брой точки на за филма и ще сравним дали е по голям от макса точките. Ако е по голям новият макс на точки ще стане равен на точките на филма а заглавието на най добрия филм ще стане заглавието на текущия филм.
Преди да затворим while цикъла отчитаме филма като увеличим брояча на филми с 1 и ако нямаме проверка за брояча в While създаваме една която проверява дали брояча е достигнал 7 и ако е вярно излизаме от цикъла с brake.
В края na while  ако проверяваме командата за STOP в условието на whilе, подаваме нов вход в края за да се завърти.
Когато while приключи ако брояча на филми е достигнал 7 отпечатваме че сме стигнали лимита и в края отпечатваме името на най добрият филм и точките му.

0
Dimana.N avatar Dimana.N 2 Точки

Страшно много благодаря за подробното обяснение! Беше от голяма помощ smiley

2
Kyosi12 avatar Kyosi12 0 Точки
command = ""
movies = 0
max_ASCII = -99999999999
best_movie = ""

while command != "STOP":
    command = str(input())
    ASCII = 0
    total_ASCII = 0
    if command != "STOP":
        movies += 1
        for i in range(len(command)):
            ASCII_converting = ord(command[i])
            if command[i] >= "A" and command[i] <= "Z":
                ASCII = ASCII_converting - len(command)
            elif command[i] >= "a" and command[i] <= "z":
                ASCII = ASCII_converting - len(command) * 2
            else:
                ASCII = ASCII_converting
            total_ASCII += ASCII
            if total_ASCII > max_ASCII:
                max_ASCII = total_ASCII
                best_movie = command
            if movies == 7:
                print("The limit is reached.")
                print(f'The best movie for you is {best_movie} with {max_ASCII} ASCII sum.')
                break
    else:
        print(f'The best movie for you is {best_movie} with {max_ASCII} ASCII sum.')
        break
0
PlamTesla avatar PlamTesla 5 Точки

using System;
using System.Linq;
using System.Collections.Generic;

namespace Advanced
{
    class Program
    {
        static void Main()
        {
            string film = Console.ReadLine();
            
            int counter = 0;
            string bestFilm = "";
            int bestSum = 0;
          

            while (film != "STOP")
            {
                int sum = 0;
                counter++;
                if (counter > 7)
                {
                    Console.WriteLine("The limit is reached.");
                    break;
                }

                for (int i = 0; i < film.Length; i++)
                {
                    if (Char.IsUpper(film[i]))
                    {
                        sum += film[i] - film.Length;
                    }
                    else if (Char.IsLower(film[i]))
                    {
                        sum += film[i] - 2 * film.Length;    
                    }
                    else
                    {
                        sum += film[i];
                    }
                }

                

                if (sum>bestSum)
                {
                    bestSum = sum;
                    bestFilm = film;
             
                }

                film = Console.ReadLine();
            }
          

            Console.WriteLine($"The best movie for you is {bestFilm} with {bestSum} ASCII sum.");
        }
    }
}
 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.