Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Циклы и условия: определить порядок старший цифры числа (единицы, десятки, сотни и т.д.)

Помогите пожалуйста, задали задание, а ассемблера не знаю, только С++ и С#
Задано натуральное число, диапазон значений слова. Определить порядок старший цифры числа( единицы, десятки, сотни и т.д.)
Число заданно в программе, не нужно его вводить.
Ответ:
Сообщение от Vitakik
Определить порядок старший цифры числа
Сообщение от Vitakik
Не выводит составляющие числа
все в соответствии с условием задания. вывод составляющих числа не предусмотрен
Сообщение от Vitakik
Спасибо
достаточно просто нажать на кнопку снизу справа от поста, который помог или показался интересным
Вопрос: Определить, что среди цифр, входящих в состав целого трехзначного числа D есть совпадающие цифры

Помогите пожалуйста.Среди цифр, входящих в состав целого трехзначного числа D есть совпадающие цифры.

Составить логическое выражение, истинность которого проверяет заданное требование. Выведите на экран соответствующее сообщение.
Выведите на экран значения всех переменных, использующихся в программе. Проверьте работу программы в двух режимах:
А) ввод исходных переменных с клавиатуры;
Б) присваивание исходным переменным случайных значений.
Ответ:
Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var d,a,b,c:integer;
    f:boolean;
begin
randomize;
repeat
write('Введите трехзначное число d=');
readln(d);
until(d>99)and(d<=999);
a:=d div 100;
b:=d div 10 mod 10;
c:=d mod 10;
writeln('d=',d,' a=',a,' b=',b,' c=',c);
f:=(a=b)or(a=c)or(b=c);
writeln('А числе есть совпадающие цифры');
if f then writeln('утверждение верно')
else writeln('утверждение не верно');
writeln('D случайное число');
d:=100+random(900);
a:=d div 100;
b:=d div 10 mod 10;
c:=d mod 10;
writeln('d=',d,' a=',a,' b=',b,' c=',c);
f:=(a=b)or(a=c)or(b=c);
writeln('А числе есть совпадающие цифры');
if f then writeln('утверждение верно')
else writeln('утверждение не верно');
readln
end.
Вопрос: Число цифр в тексте и их сумма (из файла) Память GETMEM – FREEMEM

Не могу найти ошибку, помогите пожалуйста. Строка
Pascal
1
  _mass[_n]:=ord(_str[i]);
Задание: Подсчитать число цифр в данном тексте и их сумму (считать текст из файла и записать результат в файл)
Использовать работу с памятью GETMEM – FREEMEM

С памятью вроде разобралась, но ошибку не могу понять.
Если будет возможность, помогите пожалуйста написать ту же самую программу, только при работе с памятью NEW – DISPOSE

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
uses crt;
Type
  MyType = integer;
  PMyVector = ^MyVector;
  {"Строка" динамической матрицы }
  MyVector = array[1 .. 1] of MyType;
  aarray = ^MyVector;
var
  name: string;
  bufwd: integer;
  t, t1: text;
  kolC,  amount, valch: Integer;
  Mass: aArray;
{--------------------------------------------------------}
{сохранение текста в память}
procedure SaveMemory(var _t: text; var _amount: Integer; var _Mass: aArray; var _valch: integer);
begin
while not EOF(_t) do
begin
    Read(_t, bufwd);
    Inc(_valch);
end;
  Reset(_t);
  getmem(_Mass,_valch * sizeof(integer));
while not EOF(_t) do
begin
    Read(_t, bufwd);
    _Mass^[_amount] := bufwd;
_amount := _amount + 1;
end;
end;
{--------------------------------------------------------}
{сумма и кол-во}
procedure Sum(var _Mass: aArray; _valch: integer; var _amount, _n:integer);
var i,k: integer;
_str:string;
begin
_amount:=0;
_n:=0;
for i:=1 to length(_str)do
     begin
       if _str[_n] in ['0'..'9'] then
       begin
        inc(_n);
        _mass[_n]:=ord(_str[i]);
       end;
     end;
 readln(_t);
 end;
close (_t);
for i:=1 to _n do
begin
val(chr(_mass[i]),k,err);
_amount:= _amount+ k ;
end;
end;
{--------------------------------------------------------}
{возвращение памяти}
procedure Clear(_Mass: aArray; _valch:integer);
begin
  freemem(_Mass,_valch * sizeof(integer));
end;
{--------------------------------------------------------}
{вывод результата}
procedure output (var _t2: text; var _amount, _n: integer);
begin
writeln (_t2,'amount= ',_amount);
writeln (_t2, 'quantity= ',_n);
close (_t2);
Writeln ('The result is calculated');
end;
{--------------------------------------------------------}
{основная программа}
begin
ClrScr;
SaveMemory(t, amount, Mass, valch);
Sum(Mass, valch, amount, n);
Clear(Mass,valch);
Output (t2, amount, KolC);
  WriteLn('The number c: ', kolC, ' Summa C: ', amount);
  WriteLn('Press <Enter> for exit...');
ReadLn;
end.
Добавлено через 18 часов 0 минут
Миллион вариантов перепробовала, но понять ошибку так и не могу.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
uses crt;
{$R-}
Type
  MyType = char;
  PMyVector = ^MyVector;
  { "Строка" динамической матрицы }
  MyVector = array[1 .. 1] of MyType;
  aarray = ^MyVector;
var
  name: string;
  str: string;
   n: integer;
   bufwd:char;
  t, t1: text;
  sumS, sumP, amount, valch: Integer;
  Mass: aArray;
 
{подпрограмма для сохранения текста в память}
procedure SaveMemory( var _t: text; var _amount: Integer; var _Mass: aArray; var _valch: integer);
begin
  while not EOF(_t) do
  begin
    Read(_t, bufwd);
    Inc(_valch);
  end;
  Reset(_t);
  getmem(_Mass,_valch * sizeof(char));
  while not EOF(_t) do
  begin
    Read(_t, bufwd);
    _Mass^[_amount] := bufwd;
    _amount := _amount + 1;
  end;
end;
 
{подпрограмма для подсчета количества слов и предложений}
procedure Sum(var _t:text;_Mass: aArray; _valch: integer; var _n, _amount:integer; var _str:string);
var
  i,k,err: Integer;
begin
  _n:=0;
  _amount:=0;
  for i := 1 to length(_str) do
    if {_Mass^}_str[i] in ['0'..'9'] then
         begin
           inc(_n);
           _mass^[_n]:=ord(_str[i]);
    end;
 
   readln(_t);
 
close (_t);
for i:=1 to _n do
begin
val(chr(_mass^[i]),k,err;
_amount:= _amount+ k ;
end;
end;
 
{подпрограмма для возвращения памяти}
procedure Clear(_Mass: aArray; _valch:integer);
begin
  freemem(_Mass,_valch * sizeof(char));
end;
 
{основная программа}
begin
  ClrScr;
  WriteLn('Enter the file name: ');
  ReadLn(name);
  Assign(t, name);
  {$I-}
  Reset(t);
  {$I+}
  if ioresult <> 0 then
    WriteLn('File not found.')
  else
  begin
    WriteLn('Found file.');
    WriteLn;
    Reset(t);
    Assign(t1, 'abc1.txt');
    Rewrite(t1);
    sumS := 0;
    sumP := 0;
    amount := 1;
    SaveMemory(t, amount, Mass, valch);
    Sum(t,Mass, valch, n,amount, str);
    Clear(Mass,valch);
    WriteLn(t1, n);
    WriteLn(t1, amount);
    Close(t1);
    Close(t);
  end;
  Reset(t1);
  ReadLn(t1, n, amount);
  WriteLn('The number : ', n, ' Amount: ', amount);
  WriteLn('Press <Enter> for exit...');
  ReadLn;
end.
Ответ: Спасите помогите. Не пойму, где ошибка. В файл выводит сообщение, но результаты по нулям
Задание. Подсчитать число цифр в данном тексте и их сумму (обязательно через коды)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
uses crt;
type
    PMyVector = ^MyVector;
{ "Строка" динамической матрицы }
    MyVector =array[1..500] of integer;
    aarray = ^MyVector;
var  n, valch, sum: integer;
   mass:aarray;
   t,t2:text;
   name:string;
   bufwd: char;
{--------------------------------------------------------}
{подпрограмма предназначена для открытия файлов}
procedure input (var _t,_t2: text; var _name: string);
var name2 :string;
begin
WriteLn('Enter the file name: ');
ReadLn(_name);
assign (_t, _name);
 {$I-}
reset (_t);
   {$I+}
if IOResult <>0 then
begin
 WriteLn('File not found');
 halt;
 end
 else begin
   WriteLn('Found file');
   writeln ('Enter the file name rezultat: ');
   readln(name2);
   assign (_t2,name2);
   {$I-}
   rewrite (_t2);
   {$I+}
 if IOResult<>0 then
 begin
  writeln ('file not found');
  readkey;
  halt;
  end
  else begin
   writeln ('found file');
  end;
  end;
end;
{сохранение текста в память}
procedure SaveMemory(var _t: text; var _Mass: aArray; var _valch: integer);
var s:string;
    i:integer;
begin
  i:=0;
  _valch:=0;
  while not EOF(_t) do
  begin
    Inc(_valch);
    Read(_t, bufwd);
  end;
  Reset(_t);
  getmem(_Mass,_valch * sizeof(char));
  while not EOF(_t) do
  begin
    Read(_t, bufwd);
    inc(i);
    _Mass^[i] := ord(bufwd);
 
  end;
 
end;
{--------------------------------------------------------}
{подпрограмма предназначена для подсчета числа цифр в тексте и нахождения их суммы}
procedure obraz (var _t: text; var _sum,_n:integer; var _mass:aarray; _valch:integer);
var str:string;
   i:integer;
   k,err:integer;
begin
_sum:=0;
_n:=0;
while not eof(_t) do
 begin
 for i:=1 to _valch do
     begin
       if chr(_mass^[i]) in ['0'..'9'] then
       begin
        inc(_n); //количество
        val(chr(_mass^[i]),k,err);
        _sum:= _sum + k; //сумма
      end;
     end;
 readln(_t);
 end;
close (_t);
end;
{--------------------------------------------------------}
{подпрограмма для возвращения памяти}
procedure Clear(_Mass: aArray; _valch:integer);
begin
  freemem(_Mass,_valch * sizeof(char));
end;
{--------------------------------------------------------}
{подпрограмма предназначена для вывода результата}
procedure output (var _t2: text; var _sum, _n: integer);
begin
writeln (_t2,'amount= ',_sum);
writeln (_t2, 'quantity= ',_n);
close (_t2);
Writeln ('The result is calculated');
end;
 
begin
clrscr;
input(t,t2,name);
SaveMemory(t,mass,valch);
obraz(t,sum,n, mass, valch);
clear(mass, valch) ;
output( t2,sum,n);
end.
Вопрос: Найти в введенной строке чисел цифру, по указанному порядковым номером

Cоставить программу, которая находит в введенном строке чисел цифру, по указанному порядковым номером. Наприкад
Входные данные:
5
121545481548544
Исходные данные:
4
Ответ:
Сообщение от Artemio-10
А можете написать при помощи строк?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/////////////////////////////////////////////////////////////////////
// Cоставить программу, 
// которая находит в введенном строке чисел цифру, 
// по указанному порядковым номером. Наприкад
// Входные данные:
// 5
// 121545481548544
// Исходные данные:
// 4
/////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
/////////////////////////////////////////////////////////////////////
int main()
{
    std::string str{};
    int idx{};
    std::cin >> idx >> str;
    std::cout << str.at( idx - 1 ) << std::endl;
}
Вопрос: Определить общее число очков, набранных командой

Дан двухмерный массив из двух строк и двенадцати столбцов. В его первой строке записано количество мячей, забитых футбольной командой в той или иной игре, во второй - количество пропущенных мячей в этой же игре. Определить Общее число очков, набранных командой (за выигрыш дается 3 очка, за ничью - 1, за проигрыш - 0)
Вопрос: Определить, каким количеством цифр "0" заканчивается запись числа N! в K-ичной системе счисления

А как определить, каким количеством цифр "0" заканчивается запись числа N! в K-ичной системе счисления.

Добавлено через 1 час 16 минут
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// factorial.cpp: определяет точку входа для консольного приложения.
/* Факториалом натурального числа N (обозначается N!) 
Назывется произведение всех натуральных чисел от 1 до N включительно:
N! = 1 Г— 2 Г— 3 Г— ... Г— N.
Нужно определить, каким количеством цифр "0"
заканчивается запись числа N! в K-ичной системе счисления.
 
*/
 
 
#include "stdafx.h"
 
#include <windows.h>
#include <iostream> 
#include <string>
 
 
using namespace std;
 
string zel(int a[], int la, int q, int p, string u)
{
    string c = "";
    int snos, j;
    do
    {
        j = 0;
        snos = 0;
        for (int i = 0; i<la; i++)
        {
            snos *= q;
            snos += a[i];
            if ((snos<p) && (i) && (j)) { a[j] = 0; j++; }
            if (snos >= p)
            {
                a[j] = snos / p;
                snos = snos%p;
                j++;
            }
        }
        c = u[snos] + c;
        la = j;
    } while (la);
    return c;
}
 
 
int fact(int x)
{
    if (x == 1)
        return 1;
    else
        return x*fact(x - 1);
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n=0;
    INT m = 0;
 
    //Вычислляем факториал
    printf("Введите число n: ");
    scanf("%d", &n);
    m = fact(n);
    n <= 0 ? printf("Nevernoe znachenie!\n") : printf("%d! = %d\n", n, m);
 
 //Переводим факториал в конечную систему счисления     
    string u("0123456789ABCDEF"), a;
    int q, p;
    cout << "Введите число: "; cin >> a;
    cout << "Введите исходную систему счисления: "; cin >> q;
    cout << "Введите конечную систему счисления: "; cin >> p;
    int la = a.size();
    int *array = new int[la];
    for (int i = 0; i <= la; i++) array[i] = u.find(toupper(a[i]));
    cout << string(80, '_') << zel(array, la, q, p, u) << endl;
    
 
    //считаем число цифр 0
    system("pause");
    return 0;
}
Ответ: Работает,1 вычисляем факториал 2 переводим к ричную систему,а как посчитать число нулей если это тип void
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// conver number cc K.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
 
char int_symbol(int in){
    char out[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
        'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
    return out[in];
}
 
 
void ten_base(int in, int base){
    if (in<base) {
        std::cout << int_symbol(in);
        return;
    }
    ten_base(in / base, base);
    std::cout <<  int_symbol(in%base) ;
}
 
//вычисляем факториал
int fact(int x)
{
    if (x == 1)
        return 1;
    else
        return x*fact(x - 1);
}
 
int main(){
    //setlocale(LC_ALL, "");
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int in;
    int base;
    cout << "Ведите  число" << endl;
    std::cin >> in;
    int m = fact(in);
    cout << "факториал числа  " << in << "!=" << m<< endl;
    cout << "Ведите  конечную систему счисления" << endl;
    std::cin >> base;
    cout << "Результат  перевода факториала в к ричную систему" << endl;
     ten_base(m, base);
    cout  << endl;
    system("pause");
    return 0;
}
Вопрос: Определить есть ли в заданном 4-х значном числе цифра М, и сколько раз она встречается

Дано четырехзначное число А. Определить есть ли в нем цифра М. И Сколько раз она встречается?
Записать на языке Паскаль.
Нужно срочно, заранее благодарю.
Ответ: Можно через строки
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
  A, M: string;
  i, count: integer;
begin
  writeln('Введите 4-значное число');
  readln(A);
  writeln('Введите цифру');
  readln(M);
  count := 0;
  for i := 1 to 4 do
    if A[i] = M then count += 1;
  if count > 0 then
    writeln(count)
  else
    writeln('В числе ', A, ' нет цифры ', M);
end.
Или так
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  i, count, A, M: integer;
begin
  writeln('Введите 4-значное число');
  readln(A);
  writeln('Введите цифру');
  readln(M);
  count := 0;
  for i := 1 to 4 do
  begin
    if A mod 10 = M then count += 1;
    A := A div 10
  end;
  if count > 0 then
    writeln(count)
  else
    writeln('В этом числе нет цифры ', M);
end.
Вопрос: Определить присутсвует ли цифра в числе

Здравствуйте, возникла небольшая проблема.
Есть число, есть цифра, наличие которой нужно проверить в этом числе.
Беру число, нахожу остаток от деления на 10и сравниваю его с цифрой, если они равны -> число входит.
Если нет, тогда откидываем остаток и оперируем уже оставшимся целым числом, опять же находим остаток от деления на 10 и т.д до тех пора не дойдем до самой первой цифры числа.

Вопрос такой, а как это осуществить, я немного запуталась, получается найти только последнюю цифру числа, а как отбросить этот остаток и проверить следующее число на наличие цифры?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 <?php
 $ch=1234; //задали число
 $a=4;
 $n=0;
 $chisl=0;
 do 
    {
        $chisl=$ch;
        $n=$ch%10;
        $ch=intval($ch/10);
            {
                if ($a==$n)
                { 
                    echo " Цифра $a входит в число $chisl <br>";
                }
              else 
                {
                 echo " Цифра $a не входит в число $chisl <br>";
                }
            }
    }
 while ($n=0);
Ответ: kamisafina, не за что. Кстати, если идти по вашему пути, то можно было бы сделать так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function find_digit ($num, $dig) {
    $result = false;
    while( $num >= 1 ){
        if( (int)$num % 10 === $dig ) {
            $result = true;
            break;
        }
        $num = $num / 10;
    }
    return $result;
}
 
$number = 12345;
 
$digit = 7;
echo "Цифра $digit " , (find_digit($number, $digit) ? "" :"НЕ "), "входит в число $number";
 
$digit = 3;
echo "Цифра $digit " , (find_digit($number, $digit) ? "" :"НЕ "), "входит в число $number";
Вопрос: Найти остаток от деления первого числа на второе и определить, упорядочены ли цифры в записи остатка

Заданы два натуральных числа. Найти остаток от деления первого числа на второе и определить, расположены ли цифры в записи остатка в порядке возрастания или убывания слева направо.
Ответ:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var m,x,y,a,b,c,v,u:longint;
begin
repeat
write('x>0 x=');readln(x);
write('y>0 y=');readln(y);
until(x>0)and(y>0);
m:=x mod y;
writeln('Остаток=',m);
if m<10 then write('Число однозначное')
else
 begin
  a:=m mod 10;
  m:=m div 10;
  c:=1;
  v:=1;
  u:=1;
  while m>0 do
   begin
    b:=m mod 10;
    if b>a then u:=u+1
    else if b<a then v:=v+1;
    a:=b;
    m:=m div 10;
    c:=c+1;
   end;
  if v=c then write('Цифры возрастают слева направо')
  else if u=c then write('Цифры убывают слева направо')
  else write('Цифры не упорядочены, либо есть одинаковые');
 end;
readln
end.
Вопрос: Определить, есть ли среди первых N цифр заданного целого числа цифра K

Помогите плиз написать код для PascalABC к заданию Определить, есть ли среди первых N цифр заданного целого числа цифра K. Препод сказала, что обязательно должен быть DIV, но я не знаю, как составить программу. Помогите плиз
Ответ:
Сообщение от Greitor
Для чего нужно это s:=s*10;
Чтобы знать с какого числа начинать делить, например если ввели 12345, то s=10000
Сообщение от Greitor
until k in [0..9];
Сообщение от Greitor
и это until k in [0..9];
Закончим ввод цифры если введем от 0 до 9 , а если например введем 11, то попросит ввести снова.
Pascal
1
2
3
4
5
6
7
8
9
10
11
i:=1;//начнем с первой цифры
j:=0;//пока не нашли нужную
while(i<=n)and(j=0) do//пока не n и не нашли
if x div s mod 10=k then j:=1//если цифра=к то фиксируем что нашли
//ищем так, ввели 12345, n=3, c=2. 1-12345/10000=1 mod 10=1 нет
//                                                   2-12345/1000=12 mod 10=2 да, нашли j=1
else//если пока не нашли
begin
i:=i+1;//проверяем след. цифру
s:=s div 10;//сокращаем s : 10000->1000->100->10
end;