Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2011, 13:57   #11
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

ЯП какой?
С:
Код:
void shuffle(struct s* data, int n) {
for (int i=0; i<n ;i++) {
s temp=s[i];  
int t=rand()%n;
s[i]=s[t];
s[t]=temp;
}

}
C++:
Код:
s data[10];
std::random_shuffle(s,s+10);
onewho вне форума Ответить с цитированием
Старый 12.08.2011, 15:49   #12
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
// определение структуры
struct koordinata
{
    int x1;
    int y1;
    int x2;
    int y2;
};
int main()
{
    // объявление массива на 10 структур
    struct koordinata massiv[8];
    int i, n, t;
    koordinata temp;
setbuf(stdout, NULL);
printf("Количество прямоугольников:");
    // ввод n (число прямоугольников)
scanf("%d", &n);
    for(i=0;i<n;i++)
    {
printf("%d прямоугольник ", i+1);
printf("Введите x1:");scanf("%d", &massiv[i].x1);
printf("Введите y1:");scanf("%d", &massiv[i].y1);
printf("Введите x2:");scanf("%d", &massiv[i].x2);
printf("Введите y2:");scanf("%d", &massiv[i].y2);
    }
    for (int i=0; i<n ;i++) {
    temp.y1=massiv[i].y1;
    t=rand()%n;
    massiv[i].y1=massiv[t].y1;
    massiv[t].y1=temp.y1;
    printf("Новая координата по y1 у %d прямоугольника: %d\n",i+1, massiv[t].y1);
    }
    }

Корректно в моем случае?

Последний раз редактировалось Mehanizator; 12.08.2011 в 21:44.
Mehanizator вне форума Ответить с цитированием
Старый 13.08.2011, 08:18   #13
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

но проблема в том, что она меняет координаты так, что у нескольких y1 может повторяться координата...мне же нужно, что бы они у всех были разные.
Mehanizator вне форума Ответить с цитированием
Старый 13.08.2011, 08:57   #14
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

и эта функция rand()%n берет значения от 0 до n-1...мне же надо от 1 до n
Mehanizator вне форума Ответить с цитированием
Старый 16.08.2011, 02:45   #15
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от Mehanizator Посмотреть сообщение
и эта функция rand()%n берет значения от 0 до n-1...мне же надо от 1 до n
К [0, n-1] прибавить единицу и получится [1, n]
An1ka вне форума Ответить с цитированием
Старый 17.08.2011, 19:32   #16
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию

ну вот как мне в моем коде это оформить???вот код:
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
// определение структуры
struct koordinata
{
    int x1;
    int y01;
    int x2;
    int y2;
};
int main()
{
    // объявление массива на 9 структур
    struct koordinata massiv[9];
    int t, n=9, j;
    int p1, p2;
    koordinata temp;
    koordinata buf;
setbuf(stdout, NULL);
massiv[0].x1=100;
massiv[0].y01=400;
massiv[0].x2=600;
massiv[0].y2=300;
massiv[1].x1=100;
massiv[1].y01=360;
massiv[1].x2=600;
massiv[1].y2=320;
massiv[2].x1=100;
massiv[2].y01=320;
massiv[2].x2=600;
massiv[2].y2=280;
massiv[3].x1=100;
massiv[3].y01=280;
massiv[3].x2=600;
massiv[3].y2=240;
massiv[4].x1=100;
massiv[4].y01=240;
massiv[4].x2=600;
massiv[4].y2=200;
massiv[5].x1=100;
massiv[5].y01=200;
massiv[5].x2=600;
massiv[5].y2=160;
massiv[6].x1=100;
massiv[6].y01=160;
massiv[6].x2=600;
massiv[6].y2=200;
massiv[7].x1=100;
massiv[7].y01=120;
massiv[7].x2=600;
massiv[7].y2=80;
massiv[8].x1=100;
massiv[8].y01=80;
massiv[8].x2=600;
massiv[8].y2=40;
    //для y1
    for (int i=0; i<n ;i++) {
    temp.y01=massiv[i].y01;
    t=rand()%n;
    massiv[i].y01=massiv[t].y01;
    massiv[t].y01=temp.y01;
    temp.y01=0;}
    for(t=0; t<n; t++) printf("Новая координата по y1 у %d прямоугольника: %d\n",t, massiv[t].y01);
   //для y2
    printf("\n");
    for(t=0; t<n; t++)
    massiv[t].y2=massiv[t].y01-40;
    for(t=0; t<n; t++) printf("Новая координата по y2 у %d прямоугольника: %d\n",t, massiv[t].y2);
//------------------------------------------------------------------------------------------------------
    for(j=0; j<n-1; j++){
    printf("\n Напишите номера 2ух прямоугольников, которые хотите заменить:\n");
    scanf("%d", &p1);//тот, который заменяем
    scanf("%d", &p2);//тот, на которые заменяем
    buf.y01=massiv[p1].y01;
    massiv[p1].y01=massiv[p2].y01;
    massiv[p2].y01=buf.y01;
    printf("\n Теперь у %d прямоугольника координата y1:%d, а по y2:%d", p2,massiv[p2].y01,massiv[p2].y01-40 );
    printf("\n А у %d прямоугольника координата y1:%d, а по y2:%d", p1,massiv[p1].y01,massiv[p1].y01-40 );
}}
Mehanizator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отобразить в таблице (на форме) все файлы которые находятся в определённой папке? mojohead Помощь студентам 10 05.04.2011 10:48
Как получить иконки которые находятся в трее?? Paul Hindenburg Общие вопросы Delphi 5 21.10.2010 19:46
Вычислить сумму тех элементов преобразованного массива, которые находятся в диапазоне [–1, 16] Mirel Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2010 10:58
Как скопировать диапазоны которые находятся на равном растояние друг от друга... Алексей11111 Microsoft Office Excel 12 15.11.2009 02:34
Не правильно считает сумму чисел, которые находятся в файле. TheWanderer Общие вопросы C/C++ 6 17.04.2009 18:43