@m000gg
m000gg

Как найти числа в матрице начинающиеся на 7?

Есть массив размером 4х6, который заполнили числами из интервала 100-900.
Вот мой код:
#include <iostream>
#include <iostream>
#include <iostream>
#include <time.h>
#include <time.h>

using namespace std;

void Randmass(int**,int,int,int);

void Printmass(int**,int);


    

 
int main() {
    int n,first_value, last_value;
    cout<<"vvedite diapazon"<<endl;
    cin>>first_value>>last_value;
    srand(time(0));
    cout<<"vvedite razm matrivy"<<endl;cin>>n;
    int matrix[n][n]={0};
    int *stroki[n];
    for (int i=0;i<0;i++)stroki[i] = &matrix[i][0];
    Randmass(stroki,n,first_value,last_value);
    cout<<endl;
    Printmass(stroki,n);
    int summa = Sum(stroki,n);
    cout<<endl<<"summa pol chisel"<<summa<<endl;
    

}

void Randmass(int** mass,int sizematr,int first_value,int last_value)
{
    cout<<"Initzialisaziya"<<sizematr<<endl;
     for (int i = 0 ;i<sizematr; i++){
          for (int j = 0 ;j<sizematr; j++){
              mass[i][j] = first_value + rand()%(last_value - first_value +1);
          }
     }
 

    
    
    
    
}

void Printmass(int** mass,int sizematr)
{


    for (int i = 0; i<sizematr; i++){
        for (int j = 0 ;j<sizematr; j++){
            cout<<endl;
        for (int j = 0 ;j<sizematr; j++){
            cout<<"\t"<<mass[i][j];
        }
    }
}
    
    
}



int Sum(int**x,int n)
{
    int s=0; first = 0
    result = {}
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    {
        while(x[i][j>0)
    {
        first=x[i][j]%10;
        x[i][j=x[i][j]/10;
    }
       
       
    }
    
    return s;
    
}

Нужно, чтобы в результате вышел список с числами, которые начинаются на 7. Как это сделать? Также в коде есть пару ошибок, не могу их решить.
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
@WAR_VIK
Можно с помощью цикла while:
#include <iostream>

int main() {
   int num{7672475};
   while(num > 0) {
       num /= 10;
       if(num == 7) std::cout << num;
   }
   return 0;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@GaalSpear
1. Способ костыльный и медленный: преобразовать число в строку и проверить первый символ.
2. Посмотреть порядок числа, и проверить принадлежность диапазону (как написали выше, если 100..900, то нужный диапазон - 700..799, а, например, для 9..99 нужный диапазон - 70..79).
3. найти первую цифру числа и посмотреть семёрка ли она. Это можно сделать например применением деления в цикле. (Ну как бы вы писали преобразование числа в строку, только вручную?)

узнать первую цифру числа можно например так:
int iValue = 8776892;

std::cout << "Source number : " << iValue << std::endl;
for(int iv2 = iValue; iv2 != 0; iValue = iv2, iv2 = iValue / 10);
std::cout << "First number digit : " << iValue << std::endl;

if (iValue == 7)
	std::cout << "SEVEN !!!!" << std::endl;
else
	std::cout << "NOT SEVEN !!!" << std::endl;
Ответ написан
Комментировать
AlexNest
@AlexNest
Работаю с Python/Django
начинающиеся на 7

числами из интервала 100-900

Собственно, с учетом условий, такие числа встречаются на промежутке 700-799. Перебор матрицы и проверка, расположен ли элемент на этом промежутке, думаю сами напишите?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы