Удаление элемента из массива строк - C (СИ)

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

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

Не получается как-то удалить определенную запись. Код ниже. Мб кто-то знает как
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int i,j;
 
struct prices
{
    char name[80];
    char country[80];
    int price;
    char del[80];
};
 
//*Ввод Элементов*//
void input(struct prices m[],int n)
{
        for(i=0;i<n;i++)
    {
        fflush(stdin);
        puts("Enter name:");
        gets(m[i].name);
        puts("Enter country:");
        gets(m[i].country);
        printf("Enter price:\n");
        scanf("%d",&m[i].price);
        fflush(stdin);
    }
}
//*Вывод Элементов*//
void output(struct prices m[],int n)
{
        for(i=0;i<n;i++)
    {
      printf(" --- Name: %s\n",m[i].name);
      printf(" --- Country: %s\n",m[i].country);
      printf(" --- Price: %d\n\n",m[i].price);
    }
}
 
int main()
{
    struct prices m[10],b[10];
    int n;
    printf("Enter size of array: ");
    scanf("%d",&n);
 
    input(m,n);
    system("cls");
    output(m,n);

   printf("\n\n***Delete element from structure***\n\n");
   puts("Enter element:");
   gets(m[i].del);
 
    for(i=0; i<n; i++)
     {
    if (strcmp(m[i].del,m[i].name)!=0)
     {
    strcpy(b[i].name,m[i].name);
    strcpy(b[i].country,m[i].country);
    b[i].price=m[i].price;
     }
     n--;
     }
 
    for(i=0;i<n;i++)
    {
      printf(" --- Name: %s\n",m[i].name);
      printf(" --- Country: %s\n",m[i].country);
      printf(" --- Price: %d\n\n",m[i].price);
    }
   return 0;
}

Решение задачи: «Удаление элемента из массива строк»

textual
Листинг программы
j=0;
for(i=0; i<n; i++)
{
 if (strcmp(del,m[i].name)!=0)
     {
       strcpy(b[j].name,m[i].name);
       strcpy(b[j].country,m[i].country);
       b[j].price=m[i].price;
       j++;
     }
 }
 
for(i=0;i<j;i++)
    {
      printf(" --- Name: %s\n",b[i].name);
      printf(" --- Country: %s\n",b[i].country);
      printf(" --- Price: %d\n\n",b[i].price);
    }

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

  1. В начале программы объявляются две переменные: j и i, которые будут использоваться в циклах. Переменная j инициализируется значением 0, а переменная i не инициализируется.
  2. Затем идет цикл for, который выполняется n раз, где n - это количество элементов в массиве m. В каждой итерации цикла происходит проверка: если значение m[i].name не равно del (то есть, не равно строке, которую мы хотим удалить), то выполняется следующий блок кода.
  3. Внутри блока кода происходит следующее:
    • Значение m[i].name копируется в элемент массива b с индексом j.
    • Значение m[i].country копируется в элемент массива b с индексом j.
    • Значение m[i].price присваивается элементу массива b с индексом j.
    • Индекс j увеличивается на 1.
  4. После завершения первого цикла, идет второй цикл for, который выполняется j раз (количество элементов в массиве b). В каждой итерации цикла выводятся значения элементов массива b.
  5. Значения, которые выводятся, это:
    • b[i].name (название)
    • b[i].country (страна)
    • b[i].price (цена)

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


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

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

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