Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++]Ввод количества элементов в массиве 
:(
    Опции темы
Vampire551
Дата 1.6.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.5.2008

Репутация: нет
Всего: нет



Помогите пожалуйста со вводом количества элементов в массив. Количество элементов вводится, но программа не работает. smile  Заранее благодарен.
Код
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
#define N 10

//-----------------------------------------------//
void swap (int *a, int *b)
{
   int t;
   t= *a;
   *a= *b;
   *b= t;
}
//-----------------------------------------------//
void reverse (int *P, int m)
{
   int i= 0, j= m;
   while (i < j)
   {
      swap (&P[i], &P[j]);
      i++;
      j--;
   }
}
//-----------------------------------------------//
void antilex (int *P, int m)
{
   int i;
   if (m == 0)
   {
      int sumL= 0, sumR= 0;
      for (i= 0; i < N / 2; i++)
     sumL+= P[i];
      for (; i < N; i++)
     sumR+= P[i];
      if ((sumL == sumR)||(abs(sumL-sumR)==1))
      {
     for (i= 0; i < N; i++)
        printf ("%d ", P[i]);
     printf("\n");
      }
   }
   else
   {
      for (i= 0; i <= m; i++)
      {
     antilex (P, m - 1);
     if (i < m)
     {
        swap (&P[i], &P[m]);
        reverse (P, m - 1);
     }
      }
   } // else if (m == 0)
}
//-----------------------------------------------//
int main()
{
   clrscr();
   int i,k;
   int P[N];
   char v;
   m1:
   cout<<"1. Nachat' programmu\n";
   cout<<"2. Vihod iz programmy\n";
   v=getch();
     switch(v)
     {
       case '1':goto m2;
       case '2':goto m3;
       default:;
     }
   m2:
   clrscr();
   printf("Vvedite chislo elementov: 0<k<%d\n",N);
   scanf("%d",&k);
   for (i= 0; i < k; i++)
   P[i]= i+1;
   antilex (P, k - 1);
   cout<<"Najmite ENTER chtoby vernutsya v menu";
   getch();
   clrscr();
   goto m1;
   getch();
   m3:
   return 0;
}

PM MAIL   Вверх
Solomon
Дата 1.6.2008, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: 2
Всего: 2



Цитата(Vampire551 @  1.6.2008,  15:26 Найти цитируемый пост)
 Количество элементов вводится, но программа не работает.

А что  именно не работает то? можно конкретнее?



--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Vampire551
Дата 1.6.2008, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.5.2008

Репутация: нет
Всего: нет



Не начинает делать перестановки.
PM MAIL   Вверх
Solomon
Дата 1.6.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: 2
Всего: 2



Vampire551, тебе вообще что требуется? отсортировать массив?

Просто более ужасного кода  я не видел(извеняюсь за грубость)  smile 

goto использовать это не есть хорошо. 

Ты сам писал этот код? или скачал откудато? 

Это сообщение отредактировал(а) Solomon - 1.6.2008, 21:09


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Vampire551
Дата 1.6.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.5.2008

Репутация: нет
Всего: нет



Вообще это программа генерации перестановок в антилексикографическом порядке с отбором "хороших" перестановок по определенному условию. Она еще с пользовательским интерфейсом. Мне нужно так чтобы количество элементов множества я вводил сам, а оно забито в define. Эту прогу я переделывал с Паскаля.
PM MAIL   Вверх
mrbrooks
Дата 2.6.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 16
Всего: 306



Да уж код жестковат. Если хочешь переменную величину массива тогда делай так

Код

int a;
cin >> a;
int *b = new int[a];
....
delete [] b;


вот и будет тебе переменный массив
PM MAIL   Вверх
anatox91
Дата 2.6.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 3
Всего: 13



можно и без new/delete
Код

int size;
std::cin >> size;
int array[size];



--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
mrbrooks
Дата 2.6.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 16
Всего: 306



Цитата(anatox91 @ 2.6.2008,  14:43)
можно и без new/delete
Код

int size;
std::cin >> size;
int array[size];

очень любопытное решение. может подскажешь какой компилер это сжует?
PM MAIL   Вверх
anatox91
Дата 2.6.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

Репутация: 3
Всего: 13



как ни странно все работает (Dev-C++ 4.9.9.2(компилер - MinGW)) smile 
Код

#include <iostream>
#include <cstdlib>
int main() {
    int size;
    std::cin >> size;
    int array[size];
    for(size_t i=0; i < size; ++i) {
               array[i] = rand()%100;
               }
    for(size_t i=0; i < size; ++i) {
               std::cout << array[i] << ' ';
               }
    system("pause");
    return 0;
}

но в VS2008 не пашет

Это сообщение отредактировал(а) anatox91 - 2.6.2008, 19:22


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
mrbrooks
Дата 3.6.2008, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 16
Всего: 306



Цитата(anatox91 @ 2.6.2008,  19:16)

но в VS2008 не пашет

ага. а так же в VS2005 и старике Бормане  smile  Интересно в чем же фича что в
 
Цитата

Dev-C++ 4.9.9.2(компилер - MinGW
) это работает?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.