Показать полную графическую версию : [решено] Borland C++5.02 задача на массив
zakaru4ka
04-07-2011, 19:09
Нужна помощь!!(( У меня есть целочисленный массив X[100] ,который был получен с помощью генератора случайных чисел.
Как выбрать без повторения все числа, встречающиеся более одного раза. Сформировать из них массив B[], упорядочить элементы по убыванию и вывести на экран исходный и упорядоченный массивы......?????
zakaru4ka, Для начала продумайте как бы Вы это сделали "логически"... Набросайте блок - схемы, продумайте весь процесс, ну а далее переведите все это в код... Если что то не получится, Вам помогут, но делать за Вас вряд ли станут!
zakaru4ka
05-07-2011, 13:57
сделала первую часть, дальше не знаю (Получить элементы целочисленного массива X[100] с помощью генератора случайных чисел). Допишите пожалуйста!!
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#define n 100
void swap(int *x, int *y)
{
int t=*x;
*x=*y;
*y=t;
}
void main(void)
{
int i,a[n],n1=n;
float t;
clock_t beg,end;
clrscr();
srand((unsigned)time(0));
puts(" isxodnuy massiv:");
for (i=0; i<n; i++)
{
a[i]=100 + rand() % n;
printf("%d\t",a[i]);
}
getch();
}
Как выбрать без повторения все числа, встречающиеся более одного раза. »Я не совсем понял условие. Можете немного пояснить, что значит без повторения ?
zakaru4ka
05-07-2011, 20:38
Ну вот вроде разобралась. только как тут сделать чтобы выводился преобразованный
упорядоченный массив. Потомучто у меня показывается только основной массив и числа , которые без повторения встречаются более одного раза???
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#define n 100
void swap(int *x, int *y)
{
int t=*x;
*x=*y;
*y=t;
}
void bubble(int a[], int n1)
{
int i,j;
for ( i=0; i<n1; i++)
for( j=0; j<n1-i-1; j++)
if (a[j] > a[j+1])
swap(&a[j], &a[j+1]);
}
void main(void)
{
randomize();
int i,j,a[n],b[n],n1=n;
float t;
clrscr();
puts(" isxodnuy massiv:");
for (i=0; i<n; i++)
{
a[i]=random(60);
printf("%d\t",a[i]);
}
bubble(a,100);
j=0;
for (i=0; i<n; i++)
if ((a[i]==a[i+1])&&(a[i]!=b[j-1]))
{
b[j]=a[i];
j++;
} printf("\n");
for (i=0; i<(j-1); i++)
printf("%d\t",b[i]);
getch();
}
ну насколько я понимаю для этого у вас (ли) предусмотрена функция bubble, по названию которой явно что она делает сортировку пузырьком. вот и упорядоченный массив
zakaru4ka
05-07-2011, 22:50
нет, я имею ввиду чтобы на экран выводился исходный массив, упорядоченный и числа, встречающиеся более одного раза.
у меня только выводится исходный и числа, встречающиеся более одного раза.
zakaru4ka
06-07-2011, 17:17
вопрос зактрыт. задача решена
zakaru4ka, решение запостите?
zakaru4ka
07-07-2011, 18:55
#include <stdio.h> //подключение файла с объявлением стандартных функций файлового ввода-вывода;
#include <string.h>
#include <conio.h> //консольный ввод/вывод
#include <time.h>
#include <stdlib.h>
#define n 100 //по умолчанию 100 элементов
void swap(int *x, int *y)
{
int t=*x;
*x=*y;
*y=t;
}
void bubble(int a[], int n1) //пузырьковая сортировка
{
int i,j;
for ( i=0; i<n1; i++)
for( j=0; j<n1-i-1; j++)
if (a[j] > a[j+1])
swap(&a[j], &a[j+1]);
}
void main(void)
{
randomize();
int i,j,a[n],b[n],n1=n;
float t;
clrscr();
puts(" isxodnuy massiv:"); //вывод на экран
for (i=0; i<n; i++)
{
a[i]=random(60);
printf("%d\t",a[i]);
}
bubble(a,100);
j=0;
for (i=0; i<n; i++)
if ((a[i]==a[i+1])&&(a[i]!=b[j-1]))
{
b[j]=a[i];
j++;
}
printf("\n");
for (i=0; i<n; i++)
printf("%d\t",a[i]);
printf("\n");
for (i=0; i<(j-1); i++)
printf("%d\t",b[i]);
getch();
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.