Консультация № 188858
26.02.2016, 20:50
0.00 руб.
0 4 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Помогите, пожалуйста, исправить код.
Вот условие задачи: Дан целочисленный массив размера N и целое число L. Удалить из массива все элементы,
встречающиеся менее L раз, и вывести размер полученного массива и его содержимое.


Приложение:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int N;
srand(time(NULL));
printf("Введите кол-вл эл-ов массива: \n");
scanf("%d",&N);
int arr[N], temp,i;
printf("Введите эл-ты массива\n");
for (i=0; i<N; i++)
printf("%d ", rand()%5);
printf("\n");
int L;
printf("Введите знач-ие L: \n");
scanf("%d", &L);
int j, Li,k;
for (i=0;i<N;i++)
{
Li=0;
for (j=0;j<N; j++)
{
if (arr[j]==arr[i])
{
Li++;
}
if (L>Li)
{
j=i; temp=arr[i];
while (j<N)
if(temp==arr[j])
{

k=0;
while(k<(N-1))
{
arr[k]=arr[k+1];
}
N--;
j--;
}



}
}
}
for (i=0; i<N; i++)


printf("%d", arr[i]);
return 0;
}

Обсуждение

давно
Старший Модератор
31795
6196
26.02.2016, 22:05
общий
Адресаты:
Вы не создаете массив, а только генерируете и выводите.
т.е. у Вас должен быть код:
[code h=200] for (i=0; i<N; i++)
{
a[i]=rand()%5;
printf("%d ", a[i]);
printf("\n");
}[/code]
Ну а дальше по тексту.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
399292
22
27.02.2016, 08:30
общий
27.02.2016, 08:30
Адресаты:

Исправил. Но все равно программа не работает. Вероятно, есть еще какая-то ошибка, которую я не могу определить
давно
Посетитель
7438
7205
27.02.2016, 15:11
общий
это ответ
Здравствуйте, YarLam125!
Чуток подправил код
[code h=200]
/*
Дан целочисленный массив размера N и целое число L. Удалить из массива все элементы,
встречающиеся менее L раз, и вывести размер полученного массива и его содержимое.
*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

int N;
srand(time(NULL));

printf("Введите кол-во эл-ов массива: \n");
scanf("%d",&N);

int *arr = (int*)malloc(N*sizeof(int));
int temp,i;
printf("Эл-ты массива\n");
for (i=0; i<N; i++)
{
arr[i] = rand()%5;
printf("%d ", arr[i]);
}
printf("\n");

int L;
printf("Введите знач-ие L: \n");
scanf("%d", &L);

int j, Li, k;
for (i=0;i<N;i++)
{
Li=0;
for (j=0; j<N; j++)
{
if (arr[j]==arr[i])
Li++; //считаем одинаковые
}
if (L>Li)
{ //удаляем все, равные i-му
temp=arr[i]; //запоминаем значение
for(j=i; j<N; j++) //по всем от текущего до последнего
{
if (arr[j] == temp) //если равен удаляемому
{
for(k=j; k<N-1; k++)//сдвигаем все на один влево
arr[k] = arr[k+1];
N--; //общее количество -= 1
}
}
i--; //i-й элемент тоже удален, на его месте новый,
} // поэтому продолжаем с i-го индекса
}
printf("N = %d\n", N);
for (i=0; i<N; i++)
printf("%d ", arr[i]);
printf("\n");
free(arr);
return 0;
}
[/code]
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
399292
22
27.02.2016, 19:13
общий
Адресаты:
Большое Вам спасибо! Вы очень помогли!
Форма ответа