Size: a a a

2021 February 19

IZ

Ilia Zviagin in supapro.cxx
Sergey Dubovik
Да, либо отдельный счетчик, либо сначала удалить все пробелы
Удалить пробелы — вообще лучше всего...
источник

О

Олег in supapro.cxx
мне нужно чтоб если введено что то типа "5645 5656", то просило заново ввести корректное значение, а если пробел до числа, то на них плевать. Вот код полностью:
int main()
{
   setlocale(0, "");
   int k = 0, n = 0, A = 10, B = 2; // из какой системы и в какую
   string help, help2 = "0123456789 ";
   cout << "Введите число, которое хотите перевести в двоичную систему счисления: ";
   getline(cin, help);
   for (int i = 0; i < help.size(); i++)
   {
       for (int j = 0; j < help2.size(); j++)
       {
           if (help[i] == help2[j]) k++;
       }
       if (k == 0)
       {
           help.clear();
           cout << "Введите корректное значение (без пробелов и различных символов)!\n";
           main();
           return 0;
       }
       else k = 0;
   }
   for (int i = 0; i < help.size(); i++)
   {
       if (help[i] == ' ')
       {
           continue;
       }
       else n += (help[i] - '0') * pow(A, help.size() - i - 1);;
   }
   ten_to_two(n, B);
   return 0;
}
источник

О

Олег in supapro.cxx
help2 = "0123456789 "; если отсюда убрать пробел, то и перед числом пробел будет знаком, что надо снова ввести значение
источник

О

Олег in supapro.cxx
а нужно чтоб именно если он встречается после каких-то данных просил ввести значение заново, опять же типа "654 654"
источник

SD

Sergey Dubovik in supapro.cxx
Короче, делаешь trim строки. Потом проходишь по строке и ищешь пробелы. Если находишь, то предлагаешь ввести новое число. Если нет - то считаешь как и считал
источник

MK

Mikhail Kalugin in supapro.cxx
Регуляркой типа такой ^\s*(\d+)\s*$ матчить да и все (если цель не научиться делать детерминированные конечные автоматы самому).
источник

АК

Артём Колпаков... in supapro.cxx
Артём Колпаков
Подскажите, каким образом вывод типа auto в теле шаблона, является инстанцированием шаблона (не того, в чьём теле оно находится), взаимодействующим с -ftemplate-depth=, или где можно об этом почитать?
https://godbolt.org/z/7KT1W9 Или тут дело в другом?
Надеюсь, более образованные люди уже проснулись и готовы подсказать
источник

M

Messiah in supapro.cxx
Ilia Zviagin
Опубликуй код полностью
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <locale.h>

//int** osvob_memory(int n, int m, int );
void vvod(int, int, int
);
void vivod(int, int, int**);
int** memory(int n, int m);
void sort(int, int, int );

int main(void)
{
setlocale(LC_CTYPE, "RUSSIAN");
int n, m;
int
a;
puts("Введите размер массива n [n][m]");
scanf_s("%d", &n);
puts("Введите размер массива m [n][m]");
scanf_s("%d", &m);
a = memory(n, m);
vvod(n, m, a);
vivod(n, m, a);
sort(n, m, a);
vivod(n, m, a);
//osvob_memory(n, m, a);
return 0;
}

int memory(int n, int m)
{
int
pp;
int i, j;
pp = (int**)malloc(sizeof(int*) * n);
for (i = 0; i < n; i++)
{
 *(pp + i) = (int*)malloc(sizeof(int) * m);
}
return (pp);
}

void vvod(int n, int m, int** mm)
{
int i, j;
printf("введите элементы в mm\n");
for (i = 0; i < n; i++)
 for (j = 0; j < m; j++)
 {
  printf("mas[%2d][%2d] = ", i, j);
  scanf_s("%d", (mm + i * m + j));
 }
}

void vivod(int n, int m, int** mm)
{
int i, j;
printf("\nВведенный массив: ");
for (i = 0; i < n; i++)
{
 printf("\n");
 for (j = 0; j < m; j++)
  printf("%5d ", (*(mm + i * m + j)));
}
}

void sort(int n, int m, int mm)
{
int i, j;
int temp;
 for (i = 0; i < n; i++)
 {
  for (j = 0; j < n; j++)
   if (*(*(mm + i) + j) > *(*(mm + i) + j + 1))
   {
    temp = *(*(mm + i) + j);
    *(*(mm + i) + j) = *(*(mm + i) + j + 1);
    *(*(mm + i) + j + 1) = temp;
   }
}
}

/*int
osvob_memory(int n, int m, int mm)
{
int
pp;
pp = mm;
int i, j;
for (i = 0; i < n; i++)
{
  for (j = 0; j < i; j++)
 free(*(mm + j));
free(mm);
}
return(mm);
}*/
источник

C

CodeDetector in supapro.cxx
Messiah
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <locale.h>

//int** osvob_memory(int n, int m, int );
void vvod(int, int, int
);
void vivod(int, int, int**);
int** memory(int n, int m);
void sort(int, int, int );

int main(void)
{
setlocale(LC_CTYPE, "RUSSIAN");
int n, m;
int
a;
puts("Введите размер массива n [n][m]");
scanf_s("%d", &n);
puts("Введите размер массива m [n][m]");
scanf_s("%d", &m);
a = memory(n, m);
vvod(n, m, a);
vivod(n, m, a);
sort(n, m, a);
vivod(n, m, a);
//osvob_memory(n, m, a);
return 0;
}

int memory(int n, int m)
{
int
pp;
int i, j;
pp = (int**)malloc(sizeof(int*) * n);
for (i = 0; i < n; i++)
{
 *(pp + i) = (int*)malloc(sizeof(int) * m);
}
return (pp);
}

void vvod(int n, int m, int** mm)
{
int i, j;
printf("введите элементы в mm\n");
for (i = 0; i < n; i++)
 for (j = 0; j < m; j++)
 {
  printf("mas[%2d][%2d] = ", i, j);
  scanf_s("%d", (mm + i * m + j));
 }
}

void vivod(int n, int m, int** mm)
{
int i, j;
printf("\nВведенный массив: ");
for (i = 0; i < n; i++)
{
 printf("\n");
 for (j = 0; j < m; j++)
  printf("%5d ", (*(mm + i * m + j)));
}
}

void sort(int n, int m, int mm)
{
int i, j;
int temp;
 for (i = 0; i < n; i++)
 {
  for (j = 0; j < n; j++)
   if (*(*(mm + i) + j) > *(*(mm + i) + j + 1))
   {
    temp = *(*(mm + i) + j);
    *(*(mm + i) + j) = *(*(mm + i) + j + 1);
    *(*(mm + i) + j + 1) = temp;
   }
}
}

/*int
osvob_memory(int n, int m, int mm)
{
int
pp;
pp = mm;
int i, j;
for (i = 0; i < n; i++)
{
  for (j = 0; j < i; j++)
 free(*(mm + j));
free(mm);
}
return(mm);
}*/
Всё ещё неправильно :( Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник

О

Олег in supapro.cxx
Ilia Zviagin
Удалить пробелы — вообще лучше всего...
Не подскажешь, почему не работает вот такое:
string help, help2 = "0123456789";
   cout << "Введите число, которое хотите перевести в двоичную систему счисления: ";
   getline(cin, help);
   while (help[m] == ' ')
   {
       m++;
   }
   if (m > 0)
   {
       for (j = 0; j < help.size(); j++)
       {
           help[j] = help[j + m];
       }
   }
   m = help.size() - 1;
   while (help[m] == ' ')
   {
       m--;
   }
   if (m < (help.size() - 1))
   {
       help[m + 1] = '\0';
   }
источник

IZ

Ilia Zviagin in supapro.cxx
Олег
Не подскажешь, почему не работает вот такое:
string help, help2 = "0123456789";
   cout << "Введите число, которое хотите перевести в двоичную систему счисления: ";
   getline(cin, help);
   while (help[m] == ' ')
   {
       m++;
   }
   if (m > 0)
   {
       for (j = 0; j < help.size(); j++)
       {
           help[j] = help[j + m];
       }
   }
   m = help.size() - 1;
   while (help[m] == ' ')
   {
       m--;
   }
   if (m < (help.size() - 1))
   {
       help[m + 1] = '\0';
   }
Ка кименно не работает?
источник

IZ

Ilia Zviagin in supapro.cxx
Олег
Не подскажешь, почему не работает вот такое:
string help, help2 = "0123456789";
   cout << "Введите число, которое хотите перевести в двоичную систему счисления: ";
   getline(cin, help);
   while (help[m] == ' ')
   {
       m++;
   }
   if (m > 0)
   {
       for (j = 0; j < help.size(); j++)
       {
           help[j] = help[j + m];
       }
   }
   m = help.size() - 1;
   while (help[m] == ' ')
   {
       m--;
   }
   if (m < (help.size() - 1))
   {
       help[m + 1] = '\0';
   }
а m  это что вообще?
источник

IZ

Ilia Zviagin in supapro.cxx
Sergey Dubovik
Короче, делаешь trim строки. Потом проходишь по строке и ищешь пробелы. Если находишь, то предлагаешь ввести новое число. Если нет - то считаешь как и считал
@stupidturkish — вот тут тебе вполне здраво подсказывали... А ты вместо того чтобы предложить пользователю новый ввод —почему-то начинаешь что-то там удалять.

причём НЕВЕРНО — код удаления написан так будто все пробелы идут подряд. А это может быть не так.
источник

[

[ ] in supapro.cxx
Добрый день!

Понимаю, что простой код, и код реальных проектов очень различаются. Где можно посмотреть реальный код проекта? Очень интересно как все реализовано умными людьми. Подскажите если знаете что-то такое. Буду благодарен.
источник

MK

Mikhail Kalugin in supapro.cxx
Олег
Не подскажешь, почему не работает вот такое:
string help, help2 = "0123456789";
   cout << "Введите число, которое хотите перевести в двоичную систему счисления: ";
   getline(cin, help);
   while (help[m] == ' ')
   {
       m++;
   }
   if (m > 0)
   {
       for (j = 0; j < help.size(); j++)
       {
           help[j] = help[j + m];
       }
   }
   m = help.size() - 1;
   while (help[m] == ' ')
   {
       m--;
   }
   if (m < (help.size() - 1))
   {
       help[m + 1] = '\0';
   }
Просто сделай нормальный автомат с состояниями «пробел», «цифра», «пробел после цифры». И правилами - «пробел» -> «цифра» -> «пробел после цифры» в среднем состояние складываешь цифры куда-нибудь. Переход «пробел после цифры» -> «цифра» - ошибка, запрашиваешь ввод по новой, дошел без него до конца - обсчитываешь полученные цифры.
источник

MK

Mikhail Kalugin in supapro.cxx
[ ]
Добрый день!

Понимаю, что простой код, и код реальных проектов очень различаются. Где можно посмотреть реальный код проекта? Очень интересно как все реализовано умными людьми. Подскажите если знаете что-то такое. Буду благодарен.
github/gitlab
источник

IZ

Ilia Zviagin in supapro.cxx
[ ]
Добрый день!

Понимаю, что простой код, и код реальных проектов очень различаются. Где можно посмотреть реальный код проекта? Очень интересно как все реализовано умными людьми. Подскажите если знаете что-то такое. Буду благодарен.
ну, прод-код тоже не всегда самы гладкий и красивый.
источник

[

[ ] in supapro.cxx
Просто интересно как самому начать писать проект, к чему стемится
источник

IZ

Ilia Zviagin in supapro.cxx
[ ]
Просто интересно как самому начать писать проект, к чему стемится
Для начала учиться надо.
источник

AS

Anatoly Shirokov in supapro.cxx
[ ]
Добрый день!

Понимаю, что простой код, и код реальных проектов очень различаются. Где можно посмотреть реальный код проекта? Очень интересно как все реализовано умными людьми. Подскажите если знаете что-то такое. Буду благодарен.
если видишь код без ифов - это примеры, если видишь кучу ифов и т.п. - это прод :)
источник