Массив Запись нового массива. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здраствуйте. У меня такая проблема, в новом массиве n (функция zamena) записываются повторные вхождения и символы, которых не должно быть. Помогите пожалуйста. Вот собственно задание: В исходном массиве (размер 100 элементов), заполненном символами латинского алфавита и цифр, замените все повторные вхождения каждого символа пробелом, а все повторяющиеся символы поместите во второй массив. Выполните сортировку полученных массивов. Для контроля результата сделайте распечатку массивов, в том числе исходного.
#include <stdio.h>
#include <windows.h>
 
#define N 10

char RandomFill(char a[N])
{
 
    char c,k,i;
 
    for (i=0;i<=N;i++)
      {
          k=0;
          do
          {
             c=rand()%255;
             if ((c>='A' && c<='Z') || (c>='a' && c<='z') || (c>='0' && c<='9') ) a[i]=c,k=1;
          }
          while (k!=1);
      }
}
char print(char p[N])
{
    int i;
 
    for (i=0;i<=N;printf("%c",p[i]),i++);
    printf("\n\n");
}
char zamena(char z[N], char n[])
{
    int i,j,k,m;
 
    k=-1;
    for (i=0;i<=N-1;i++)
      {
          m=0;
          for (j=i+1;j<=N;j++)
          {
              if (z[i]==' ') break;
              if (z[i]==z[j]) z[j]=' ',k++,n[k]=z[i],m=1;
          }
          if (m!=0) k++,n[k]=z[i],z[i]=' ';
      }
}
 
void main()
{
    char Mas[N],NMas[N],str[50];

    srand(time(0));
    RandomFill(Mas);
    CharToOem("Исходный массив:\n",str); printf("%s",str);
    print(Mas);
    zamena(Mas,NMas);
    CharToOem("Массив без повторных вхождений:\n",str); printf("%s",str);
    print(Mas);
    CharToOem("Новый массив:\n",str); printf("%s",str);
    print(NMas);
}

Решение задачи: «Массив Запись нового массива.»

textual
Листинг программы
#include <stdio.h>
#include <windows.h>
#define N 20
 
char RandomFill(char a[N]){
    char c, k, i;
    for (i=0; i<N; i++){
          k=0;
          do{
             c=rand()%255;
             if((c>='A' && c<='Z') || (c>='a' && c<='z') || (c>='0' && c<='9') )a[i]=c, k=1;
          }
          while (k!=1);
      }
}
 
char print(char p[N]){
    int i;
    for (i=0; i<N; i++){
        if(p[i]=='\0') break;
        printf("%c", p[i]);
    }
    printf("\n\n");
}
 
char zamena(char z[N], char n[N]){
    int i, j, k=-1;
    for (i=0; i<N; i++){
          for (j=i+1; j<N; j++){
              if (z[i]==' ') break;
              if (z[i]==z[j]) z[j]=' ', k++, n[k]=z[i];
          }
      }
      n[k+1]='\0';
}
 
void sort(char mas[N]){
    char tmp;
    int i, j;
    for(i=0; i<N; i++){
        tmp=mas[i];
        for(j=i-1; j>=0&&mas[j]>tmp; --j){
            mas[j+1]=mas[j];
        }
        mas[j+1]=tmp;
    }
}
 
int main(){
    char Mas[N], NMas[N], str[50];
    srand(time(0));
    RandomFill(Mas);
    sort(Mas);
    CharToOem("Исходный массив:\n", str); printf("%s", str);
    print(Mas);
    zamena(Mas, NMas);
    sort(Mas);
    CharToOem("Массив без повторных вхождений:\n", str); printf("%s", str);
    print(Mas);
    CharToOem("Новый массив:\n", str); printf("%s", str);
    print(NMas);
    return 0;
}

Объяснение кода листинга программы

  1. Объявлены функции:
    • RandomFill
    • print
    • zamena
    • sort
    • main и массивы:
    • Mas
    • NMas
    • str
  2. В функции main инициализированы массивы Mas и NMas.
  3. Вызвана функция RandomFill, которая случайным образом заполняет массив Mas символами из диапазона от 'A' до 'Z', от 'a' до 'z' и от '0' до '9'.
  4. Вызвана функция sort, которая сортирует массив Mas в порядке возрастания.
  5. С помощью функции CharToOem в буфер str преобразованы символы строки Исходный массив:.
  6. В консоль выведено содержимое буфера str с помощью функции printf.
  7. Вызвана функция print, которая выводит на экран содержимое массива Mas.
  8. Вызвана функция zamena, которая удаляет повторяющиеся элементы из массива Mas и добавляет их в массив NMas.
  9. Вызвана функция sort, которая сортирует массив Mas в порядке возрастания.
  10. С помощью функции CharToOem в буфер str преобразованы символы строки Массив без повторных вхождений:.
  11. В консоль выведено содержимое буфера str с помощью функции printf.
  12. Вызвана функция print, которая выводит на экран содержимое массива Mas.
  13. С помощью функции CharToOem в буфер str преобразованы символы строки Новый массив:.
  14. В консоль выведено содержимое буфера str с помощью функции printf.
  15. Вызвана функция print, которая выводит на экран содержимое массива NMas.
  16. Программа завершена, возвращено значение 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы