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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите срочно!!!!! 
:(
    Опции темы
EnShTe1N
  Дата 12.12.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Кароче такая задача:
K) Дан массив, отсортированный по возрастанию (каждый элемент массива не меньше предыдущего элемента, например, {1, 2, 2, 3, 3, 3}). Найдите количество различных чисел в этом массиве. 

помогите умоляю, выложите код
PM MAIL   Вверх
Andrey44
Дата 12.12.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

int count = 0;
for (int i = 0; i < sizeArray-1; ++i){
      if(arr[i]!=arr[i+1];
          count++;
}



Вроде-бы так.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
EnShTe1N
Дата 12.12.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Andrey44, а можно поподробнее! где задавать сайз и тд? выложи полный код(включая иострим, маин)

Добавлено через 3 минуты и 32 секунды
и кстати я посмарел твое решение - оно не верно!

Добавлено через 4 минуты и 16 секунд
в том смысле что ты находиш различны ли соседние элементы, а надо найти скока в массиве всег оразличных элементов
PM MAIL   Вверх
Andrey44
Дата 12.12.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

#include<vector>
using namespace std;
int main()
{
vector<int> vec;
vec.resize(100);
for(int i = 0; i < vec.size(); i++)
vec[i] = rand()%70;

int count = 0;
for (int i = 0; i < vec.size()-1; i++){
      if(vec[i]!=vec[i+1])
          count++;
}
}


Не проверял. Попробуй

Добавлено @ 18:37
Все должно работать.
Проверь этот код.
В count будет количество разных элементов

Добавлено @ 18:37
После if убери ;

Это сообщение отредактировал(а) Andrey44 - 12.12.2007, 18:42


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
EnShTe1N
Дата 12.12.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



чет не работает! пишет просто нажмите любую кл для продолжения!

Добавлено через 38 секунд
и кстати где задавать размер массива?

Добавлено через 2 минуты и 39 секунд
но самое интересное: где вводить сам массив???
PM MAIL   Вверх
Andrey44
Дата 12.12.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Так напиши внутри последнего цикла
Код

cout>>vec[i]>>' ';

//и после цикла 
cout>>count;



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
EnShTe1N
Дата 12.12.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не а вводить его самому то можно???
PM MAIL   Вверх
Andrey44
Дата 12.12.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Вводить что?
Вручную заполнять массив?


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
EnShTe1N
Дата 12.12.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да! код пожалуйсто! smile 
PM MAIL   Вверх
Andrey44
Дата 12.12.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я конечно понимаю, ты парень наверное хороший, но
иногда и самому надо подумать.
Код


int digit;
for(int i = 0; i < vec.size(); i++){
cin<<digit;
vec[i] = digit;//это вместо rand()
}



Это сообщение отредактировал(а) Andrey44 - 12.12.2007, 18:55


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
EnShTe1N
Дата 12.12.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



слушай я вот до твоего поста сделал ввод самого массива тоесть cin >> vec[i];
вроде работает прально!!!!
PM MAIL   Вверх
bsa
Дата 12.12.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(EnShTe1N @ 12.12.2007,  18:56)
слушай я вот до твоего поста сделал ввод самого массива тоесть cin >> vec[i];
вроде работает прально!!!!

да. правильно.
PM   Вверх
Andrey44
Дата 12.12.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Ну конечно можно и так. Это я просто для наглядности.
Чтоб понятно было smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
bsa
Дата 12.12.2007, 20:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(Andrey44 @ 12.12.2007,  19:01)
Ну конечно можно и так. Это я просто для наглядности.
Чтоб понятно было smile

cin << digit - наглядный пример, как делать не стоит  smile 
PM   Вверх
Wowa
Дата 12.12.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

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



Модератор: Название темы должно отражать ее суть!
 Правила форума: http://forum.vingrad.ru/index.php?act=boardrules
PM WWW   Вверх
Warchief
Дата 12.12.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



извините, что вмешиваюсь, но разве эта часть кода делает, то что написано в задании?  
Код

int count = 0;
for (int i = 0; i < vec.size()-1; i++){
      if(vec[i]!=vec[i+1])
          count++;


Ведь если если массив будет {1,2,3,4,1,4}, то в переменной count будет присвоено значение 5, или я ошибаюсь?  smile  
PM MAIL ICQ Skype   Вверх
EnShTe1N
Дата 12.12.2007, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да действительно, программа делает не то!!!
Но я все таки придумал правильный код, так что =Ъ
PM MAIL   Вверх
Damarus
Дата 12.12.2007, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Цитата(Warchief @  12.12.2007,  21:09 Найти цитируемый пост)
Ведь если если массив будет {1,2,3,4,1,4}, то в переменной count будет присвоено значение 5, или я ошибаюсь?  smile 

Если массив будет {1,2,3,4,1,4}, то он не
Цитата(EnShTe1N @  12.12.2007,  18:18 Найти цитируемый пост)
отсортированный по возрастанию (каждый элемент массива не меньше предыдущего элемента, например, {1, 2, 2, 3, 3, 3})


PM MAIL ICQ Jabber   Вверх
baldina
Дата 12.12.2007, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



cout>>count;
cin<<digit;

Andrey44, вы лево и право не путаете?  smile
PM MAIL   Вверх
gamedeveloper
Дата 12.12.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

const int arrSize=5;
const int range=3; //максимальное количество разных чисел в массиве

int arr[arrSize]={1, 1, 2, 3, 3};
int numArr[range]={0,}; //массив в котором храним количества одинаковых элементов
                                        //заполнять именно так: {0,}  - массив будет заполнен нулями.
int i, count;

for (i=0; i<arrSize; i++) {
    cin>>arr[i];
}

for (i=0; i<arrSize; i++) {
    if (!numArr[arr[i]]) { //проверяем, количество встречь этого элемента,
                                    //если оно равно 0 то счётчик увеличиваем
        count++;
        numArr[arr[i]]++;  //увеличиваем счётчик встречь элемента
    }
}

cout<<count;


Вроде так.


Andrey44, путаешь операторы вставки/взятия в/из потока с самими потоками.

Это сообщение отредактировал(а) gamedeveloper - 12.12.2007, 22:41
PM MAIL   Вверх
Andrey44
Дата 13.12.2007, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Точно спутал. Извиняюсь, давно не работал с потоками ввода-вывода smile 
А под рукой не было как проверить. Еще раз извиняюсь если ввел кого-то в заблуждение.

Добавлено через 4 минуты и 26 секунд
Warchief
Цитата

извините, что вмешиваюсь, но разве эта часть кода делает, то что написано в задании?  
Выделить всёкод C++
1:
2:
3:
4:
    
int count = 0;
for (int i = 0; i < vec.size()-1; i++){
      if(vec[i]!=vec[i+1])
          count++;


Ведь если если массив будет {1,2,3,4,1,4}, то в переменной count будет присвоено значение 5, или я ошибаюсь?  smile   


А разве в задании не было сказано , что массив отсортирован по-возрастанию.
Если-бы было по-другому написано, то и код был-бы другой.


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
zkv
Дата 13.12.2007, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Цитата(Andrey44 @  13.12.2007,  09:14 Найти цитируемый пост)
давно не работал с потоками ввода-вывода

я тоже постоянно забываю в какую сторону их рисовать, помогает простое правило:
при input потоке (e.g. cin) направление из потока в переменную 
при output обратно.
PM MAIL   Вверх
Andrey44
Дата 13.12.2007, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



zkv,  smile вы как всегда даете хорошие советы. 
Спасибо, постараюсь запомнить!


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Warchief
Дата 13.12.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
А разве в задании не было сказано , что массив отсортирован по-возрастанию.
Если-бы было по-другому написано, то и код был-бы другой.



Извините, не правильно  прочитал задание smile  smile 
PM MAIL ICQ Skype   Вверх
FK2703
Дата 16.12.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



очень прошу помощи с задачей "Золотая гора" ("Треугольник") на C

Входной файл input.txt
Выходной: output.txt

Идея-подсказка, предложенная мне: "Реализация проста-делай двумерный массив и пускай цикл снизу. Последняя строка совпадает с исходной, а дальше подымайся вверх и выбирай максимум из двух. a[0][0] твой ответ"

Пример правильного input.txt:
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5


Первое число во входном файле (5) - количество строк в треугольнике. Соответственно, остальные - его заполнение. Надо найти сумму чисел, расположенных на пути, начинающемся в верхней точке треугольника и заканчивающимся на основании.
Условия:
1. Каждый шаг на пути может осуществляться вниз по диагонали влево или вниз по диагонали вправо.
2. Число строк в треугольнике - от 1 до 100
3. Треугольник составлен из простых чисел от 0 до 99

Выходные данные.
В файл output.txt записывается только наибольшая сумма в виде целого числа. Для треугольника из примера правильно работающая прога запишет: "30"

Если не сдам в понедельник - не допустят до сессии, хотя это - последний оставшийся зачёт(
PM MAIL   Вверх
kolyan
Дата 16.12.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Очень нужна помощь. необходимо решить задачу в C++! Вот условие: Ввести последовательность из 25 нечётных чисел с клавиатуры. Найти наибольшее число из введенных элементов. Решение желательно приводить через printf, C++ Мы только начали изучать, я ничего не понял, прокоментируйте если можно. Заранее спасибо!
PM MAIL   Вверх
baldina
Дата 16.12.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



kolyan,
Цитата

Ввести последовательность из 25 нечётных чисел с клавиатуры


вводишь при помощи 
Код

int n;
scanf ("ld", &n);

далее проверяешь, является ли оно нечетным (нечетное даёт в остатке от деления на 2 единицу, операция получения остатка - %). Если четное - выводишь предупреждение и повторяешь ввод. И так 25 раз.
Код

for (int i=0; i < 25; ++i)
{
  // здесь ввод, проверка и проч.
}

Наибольшее число можно искать по ходу, не запоминая все числа: заводишь переменную для значения максимального числа, например m.
m надо присвоить начальное значение, заведомо меньшее любого введенного. Например, полагая, что для ввода разрешены только положительные числа, можно смело дать начальное значение = 0.
На каждом шаге цикла сравниваешь введенное число с m, и если введенное больше m, запоминаешь его как новое значение m.
Код

if (n > m) m = n;

в конце выводишь на печать m
Код

printf ("Max number is %ld\n", m);


Думаю этого вполне достаточно, что б остальное ты сам написал.
PM MAIL   Вверх
kolyan
Дата 16.12.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



baldina, спасибо большое, что откликнулся! Есть еще вопрос... Какие нужно библиотеки запускать, прогу я прописал, но выдает какую-то ошибку! А что нужно для \ввод, проверки и проч.\, извени за тупые вопросы!!!!!!!

PM MAIL   Вверх
baldina
Дата 16.12.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



Какую именно ошибку? Никаких особенных библиотек не надо, все есть в самом С++. Ты приложение консольное создал?

для ввода используется функция scanf
для вывода используется функция printf
для проверки используется оператор if

все это есть в моём посте
PM MAIL   Вверх
baldina
Дата 16.12.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



Ну тогда тебе в центр помощи
PM MAIL   Вверх
zkv
Дата 16.12.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



kolyan, тебе в Центр помощи. Ссылку дали. Создай свою тему. Но сначала познакомься с правилами форума.
PM MAIL   Вверх
archimed7592
Дата 16.12.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Спасибо за тему - поржал от души smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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