Выяснить есть ли среди натуральных чисел от a до b (a и b заданное пользователем) то которое делится на 13 и вывести на экран хотя бы одно точное число
c++, QT creator проверяет остаток от деления на 13
guujuu
13.04.2021
Во-первых, каков формат года? Должно быть 4 знака, то есть = [0001, 2020] Во-вторых, каков формат самой даты? Это число без разделителей? ддмм? Или с разделителями - точками, что более естественно? дд.мм.? Или с разделителями - слешами, по-американски? дд/мм/? Или совсем по-американски, месяц впереди дня? мм/дд/? Или без разделителей, но в обратном порядке? ммдд? Я и такое видел! Будем считать, что это число без разделителей, 1 вариант, ддмм. 8 цифр. Тогда проверка должна быть примерно такой: Пишу на бейсике, на паскаль сами переводите. Poz1 = 1: Poz2 = 0 Do While Poz1 > 0 ' Цикл, пока в строке встречаются пробелы Poz2 = InStr(Poz1, Stroka, " ") ' Ищем пробел в строке If Poz2 > 0 Then ' Если нашли пробел - это конец слова If Poz2 - Poz1 = 8 Then ' Если длина слова 8 знаков Flag = True ' Признак, что это 8 цифр, устанавливаем в истину For i= 1 To 8 If Chr( Mid (Stroka, Poz1 + i - 1, 1)) < &H30 Or _ Chr( Mid (Stroka, Poz1 + i - 1, 1)) > &H39 Then Flag = False ' Какой-то из знаков оказался НЕ цифрой End If Next i If Flag = True Then ' Если это все же 8 цифр, то проверяем, дата ли это Day = Val (Mid (Stroka, Poz1, 2)) Month = Val (Mid (Stroka, Poz1+2, 2)) Year = Val (Mid (Stroka, Poz1+4, 4)) If (Day >= 1) And (Day <= 31) And (Month >= 1) And (Month <= 12) _ And (Year >= 1) And (Year <= 2020) Then ' Если это ДАТА Call ChangeDate(Day, Month, Year) ' Вызываем п/п замены даты End If End If End If Else ' Если не нашли пробел - это было последнее слово Poz2 = Len(Stroka) ' Устанавливаем Poz2 на конец строки If Poz2 - Poz1 = 8 Then ' Если длина слова 8 знаков Flag = True ' Признак, что это 8 цифр, устанавливаем в истину For i= 1 To 8 If Chr( Mid (Stroka, Poz1 + i - 1, 1)) < &H30 Or _ Chr( Mid (Stroka, Poz1 + i - 1, 1)) > &H39 Then Flag = False ' Какой-то из знаков оказался НЕ цифрой End If Next i If Flag = True Then ' Если это все же 8 цифр, то проверяем, дата ли это Day = Val (Mid (Stroka, Poz1, 2)) Month = Val (Mid (Stroka, Poz1+2, 2)) Year = Val (Mid (Stroka, Poz1+4, 4)) If (Day >= 1) And (Day <= 31) And (Month >= 1) And (Month <= 12) _ And (Year >= 1) And (Year <= 2020) Then ' Если это ДАТА Call ChangeDate(Day, Month, Year) ' Вызываем п/п замены даты End If End If End If End If Poz1 = Poz2 ' Устанавливаем начало нового слова Loop End Sub
Sub ChangeDate() If (Day = 31) And (Month = 12) Then ' Если это было 31 декабря Year = Year + 1 ' То ставим 1 января следующего года strDay = "01": strMounth = "01": strYear = Trim(Str(Year)) ElseIf (Day = 31) And (Month = 1) Then ' 31 января strDay = "01": strMounth = "02": strYear = Trim(Str(Year)) ElseIf (Day = 28) And (Month = 2) And (Year Mod 4 <> 0) Then ' 28 февраля strDay = "01": strMounth = "03": strYear = Trim(Str(Year)) ElseIf (Day = 29) And (Month = 2) And (Year Mod 4 = 0) Then ' 29 февраля strDay = "01": strMounth = "03": strYear = Trim(Str(Year)) ElseIf (Day = 31) And (Month = 3) Then ' 31 марта strDay = "01": strMounth = "04": strYear = Trim(Str(Year)) ElseIf (Day = 30) And (Month = 4) Then ' 30 апреля strDay = "01": strMounth = "05": strYear = Trim(Str(Year)) ElseIf (Day = 31) And (Month = 5) Then ' 31 мая strDay = "01": strMounth = "06": strYear = Trim(Str(Year)) ElseIf (Day = 30) And (Month = 6) Then ' 30 июня strDay = "01": strMounth = "07": strYear = Trim(Str(Year)) ElseIf (Day = 31) And (Month = 7) Then ' 31 июля strDay = "01": strMounth = "08": strYear = Trim(Str(Year)) ElseIf (Day = 31) And (Month = 8) Then ' 31 августа strDay = "01": strMounth = "09": strYear = Trim(Str(Year)) ElseIf (Day = 30) And (Month = 9) Then ' 30 сентября strDay = "01": strMounth = "10": strYear = Trim(Str(Year)) ElseIf (Day = 31) And (Month = 10) Then ' 31 октября strDay = "01": strMounth = "11": strYear = Trim(Str(Year)) ElseIf (Day = 30) And (Month = 11) Then ' 30 ноября strDay = "01": strMounth = "12": strYear = Trim(Str(Year)) Else ' Любой другой день Day = Day + 1 ' Ставим следующий день If (Day < 10) Then strDay = "0" & Trim(Str(Day)) Else strDay = Trim(Str(Day)) If (Mounth < 10) Then strMounth = "0" & Trim(Str(Mounth)) Else strMounth = Trim(Str(Mounth)) End If If Year < 10 Then strYear = "000" & strYear ElseIf Year < 100 Then strYear = "00" & strYear ElseIf Year < 1000 Then strYear = "0" & strYear End If Stroka = Left(Stroka, Poz1) & strDay & strMonth & strYear & Mid(Stroka, Poz2) End Sub Как видите, программа оказалась весьма непростой.
eeirikh
13.04.2021
Program project1; uses crt,math; var s:real; i,j,f:real; a:integer; begin writeln('vvedite 1 chislo ');readln(i); writeln('vvedite 2 chislo ');readln(j); writeln('vvedite 3 chislo ');readln(f); s:=i; if j<s then s:=j; if f<s then s:=f; if s<0 then begin if i<0 then inc(a); if j<0 then inc(a); if f<0 then inc(a); writeln('kolichestvo otricatelnix ',a:2); end else begin if i>0 then i:=i*-1; if j>0 then j:=i*-1; if f>0 then f:=i*-1; end; writeln('min chislo ',s:2:0); readln; end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Выяснить есть ли среди натуральных чисел от a до b (a и b заданное пользователем) то которое делится на 13 и вывести на экран хотя бы одно точное число
#include <iostream>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
for(int i = a;i<=b;i++){
if(i%13==0){
cout<<i<<endl;
}
}
return 0;
}
Объяснение:
c++, QT creator проверяет остаток от деления на 13