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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2008, 20:19   #1
Verdfel
 
Регистрация: 27.10.2008
Сообщений: 3
По умолчанию Лаба по с++ помогите плз

Я нуб в програмировании , но хочу стать умнее. Но сейчас нужна помощь в 2ух задачах лабораторной по с++. Лаба будет проводица в среде "с++ билдер 6". вот сами задачи:

1.Найти количество различных элементов массива. (1мерынй массив)(Допустим ввели элементы 1 2 3 4 5 - выводит в ответе 5 элементов.а если 1 1 2 2 3 то выаводит 3 элемента)
2.Пусть есть двумерный массив, заполненный символами. Рассматривать его как многострочный текст, слова в котором разделены одним или несколькими пробелами. Поменять местами самое длинное слово и самое короткое слово в тексте. При наличии нескольких слов с максимальной (минимальной) длиной заменять то, символы которого больше по алфавиту.



По возможности напишите алгоритмы программ (хочу сам написать код программы).Но если не осилю, то уже обращуся к коду программы.
Поэтому прошу написать алгоритм и код программ. Заранее премного благодарен
Verdfel вне форума Ответить с цитированием
Старый 27.10.2008, 20:45   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

1 задачка
Вариант первый
1) упорядочиваем массив (всё равно как, допустим, по возрастанию)
2) бежим от начала к концу. каждый раз сравниваем текущий элемент с предыдущим. если они не равны, увеличиваем счётчик
Вариант второй. Подходит, если элементы массива - целые числа и они ограничены какими-нибудь не слишком большими величинами, например, (-1000..1000). Так называемый, массив с прямой адресацией.
1) бежим по массиву. пусть очередной элемент равен k. Тогда во вспомогательный массив записываем true в ячейку с номером k.
2) бежим по вспомогательному массиву. Каждый раз, как натыкаемся на true, увеличиваем счётчик.
P.S. вспомогательный массив сначала надо забить false'ами
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 27.10.2008, 22:10   #3
NjaalkemeBit
Пользователь
 
Регистрация: 19.10.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Verdfel Посмотреть сообщение
По возможности напишите алгоритмы программ (хочу сам написать код программы)

К первой…

int find(int* a, int count, int value, int* exclude =NULL)
{
//бренное тело ф-и. оживи её…) подумай как…
//ищит в а value исключает из рассмотрения exclude
//как найдет – позицию дает, потеряет -1 возвращает.
}



int m[5]

//заполнение массива данными

//собственно просчет кол-ва
for (i = 0; i < 5; i++)
{
if (-1==find(...???...)
{
d++;
}
}


Ответ = d
NjaalkemeBit вне форума Ответить с цитированием
Старый 28.10.2008, 10:03   #4
muravei2007
 
Регистрация: 22.10.2007
Сообщений: 5
По умолчанию

По первой:
Код:
#include <iostream.h>

int main(int argc, char* argv[])
{int mas[100]; //массив
 int n; //кол-во элементов в массиве
 int i, j, flag;
 int counter; //кол-во различных значений элементов массива

 //ввод n и значений элементов массива организуешь сам
 counter=1; //начальное значение counter 
 for(i=1; i<n; i++)
 {//если flag=1, то значение mas[i] еще не встречалось в массиве
//если flag=0, то значение mas[i] уже встречалось в массиве 
  flag=1;  
  //сравниваем в цикле значение элемента mas[i] c предыдущими
//элементами массива
  for(j=0; j<i; j++)
  //если есть слева элемент, равный mas[i], то
   if (mas[i]==mas[j])
   {flag=0; //установка признака того, что значение уже встречалось
    break; //выход из цикла
   }
 //если значение элемента mas[i] еще не встречалось в массиве, то 
  if (flag==1)
   counter++; //увеличиваем счетчик на 1
 }
 cout<<"Kol-vo razlichnih elementov: "<<counter<<endl;
  return 0;
}
muravei2007 вне форума Ответить с цитированием
Старый 28.10.2008, 10:34   #5
muravei2007
 
Регистрация: 22.10.2007
Сообщений: 5
По умолчанию

По второй задаче...
У тебя обязательно должны быть объявлены следующие переменные:
int indexmin; //номер в строке первого символа самого короткого слова
int lenmin; //длина самого короткого слова в строке
int indexmax; //номер в строке первого символа самого длинного слова
int lenmax; //длина самого длинного слова в строке
Переменным indexmin и indexmax надо присвоить начальные значения:
indexmin=-1;
indexmax=-1;
Затем нужно организовать цикл, в котором программа будет искать слова в строке. Когда будет обнаружено новое слово в строке, программа должна проверить, является ли это слово первым (переменная indexmax должна иметь значение -1). Если слово является первым, то переменным indexmax, indexmin, lenmax, lenmin надо присвоить значения, связанные с этим словом: номер его первого символа и количество символов в нем.
Если новое слово не является первым найденным в строке словом (переменная indexmax уже не равна -1), то нужно провести сравнения длины найденного слова с lenmax и lenmin. Если окажется, что найденное слово - самое короткое или самое длинное, то изменить значения либо переменных indexmax, lenmax (если слово самое длинное), либо переменных indexmin, lenmin (если слово самое короткое).
Если же окажется, что длина нового слова равна либо lenmax, либо lenmin, то нужно провести сравнение найденного слова либо с самым длинным словом, либо с самым коротким, либо с обоими этими словами, если lenmax=lenmin и indexmax не равен indexmin. Ну и в зависимости от результатов сравнения поменять значения indexmax-lenmax (indexmin-lenmin) или оставить старые значения этих переменных.
В общих деталях так надо делать твою задачу.
muravei2007 вне форума Ответить с цитированием
Старый 29.10.2008, 17:28   #6
Verdfel
 
Регистрация: 27.10.2008
Сообщений: 3
По умолчанию

ууу всем спс огромное. можна плх 2ую задачу код программы ато неуспеваю сделать 8(( на завтра нада защищать лабу+ 2 реферата готовить Т_Т
Verdfel вне форума Ответить с цитированием
Старый 31.10.2008, 07:04   #7
Verdfel
 
Регистрация: 27.10.2008
Сообщений: 3
По умолчанию

ап - помогите плз 8( хоть на перездачи сдам лабу
Verdfel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лаба по Ассемблеру Rio309 Помощь студентам 13 30.10.2008 00:35
Лаба по массивам DimaG Помощь студентам 19 30.10.2007 08:56