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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Помогите сделать задачки на СИ++, 5 штук (тема одномерный массив) 
:(
    Опции темы
Goofy
Дата 20.10.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день, помогите, пожалуйста, сделать программы на СИ++ по теме одномерный массив, сам я вообще не понимаю как делать, а зачет сдавать нужно, хоть кто сколько сможет, плизз...Заранее спасибо.
http://img463.imageshack.us/my.php?image=20033tk.jpg вот ссылка на 5 задач!
PM MAIL   Вверх
Enya
Дата 20.10.2005, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Goofy, не совсем поняла задачу №1, откуда взять упорядоченный масив? Что значит дан???
И это, ещё тебе как нужно - ввод и вывод данных с клавы или из файлов?

З.Ы. ССылочку не убирай, я сама попробую решить в ближайшие 1-2 дня. У меня тоже перездача эсзаменов через недёлю...
Так что не парься..


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

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Goofy
Дата 20.10.2005, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, что откликнулась smile Насчет первой, то не знаю, написать наверное...
Ввод данных во всех задачах только с клавы!
PM MAIL   Вверх
S.A.P.
Дата 20.10.2005, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



STL ом пользоваться можно? smile
PM MAIL   Вверх
Goofy
Дата 20.10.2005, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я говорю, что почти не знаю СИ, да в общем то вообще не знаю, так как я на втором курсе, то как можно проще напишите... smile
PM MAIL   Вверх
Enya
Дата 20.10.2005, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Goofy, тебе срочняк?
Если подождать можно, то я кое что сделаю..


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

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Goofy
Дата 20.10.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Желательно бы к завтраму... smile
PM MAIL   Вверх
LPBOY
Дата 20.10.2005, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот решение в лоб 5-й задачи.
Код

#include <iostream>
#include <cstddef>

using namespace std;

bool is_equal(int a1[], int a2[], size_t size)
{
    for(size_t i=0; i<size; ++i)
    {
        if(a1[i] != a2[i]) return false;
    }
    return true;
}

size_t occur(int a1[], size_t sz1, int a2[], size_t sz2)//a1 должен быть > чем a2!
{
    size_t cnt = 0;
    for(size_t i=0; i<sz1; ++i)
        cnt += is_equal(a1 + i, a2, sz2);
    return cnt;
}

#define SIZE(x) sizeof(x)/sizeof(*x)

int _tmain(int argc, _TCHAR* argv[])
{
    int M1[] = {1, 2, 3, 4, 8, 4, 1, 2, 3, 4, 1, 2, 1, 2, 3, 7};
    int M2[] = {1, 2, 3};
    cout << occur(M1, SIZE(M1), M2, SIZE(M2)) << endl;//количество вхождений M2 в M1
    return 0;
}

Надеюсь нигде не ошибся smile
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Vendigo
Дата 20.10.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 25.9.2005
Где: Челябинская обл. г. Миасс

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



А вот решение первой.
Сам на втором курсе smile
Код

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#include <iostream>
using namespace std;

int main()
{   int my[10] = {199, 34, 15, 13, 9, 7, 4, 2, 1, 0,};
                //объявляем массив целочисленных значений
                //и записываем в него случайные числа по убыванию
    int n, i, j;

    cin >> n;    // получаем значение переменной n

    if (n >= my[0]) i = 0; //если n больше первого эл. массива то индекс = 0
        else for(i = 0; i < 10; i++)
                if(n >= my[i] && n < my[i-1]) break; //нашли индекс и выходим из цикла

    for(j = 8; j >= i; j--) //сдвигаем все элементы расположенные после номера
        my[j+1] = my[j];    //под которым встанет наше число
    my[i] = n;              //в освободившееся место помещаем наше число

    for(i = 0; i < 10; i++) //выводим результаты на экран
        cout << my[i] << "\n";
    cin >> i;

    return 0;
}

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


Новичок



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

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



Спасибо)) Осталось только 3 штуки)

Цитата
Сам на втором курсе


Я просто увлекаюсь веб програмированием)
PM MAIL   Вверх
S.A.P.
Дата 20.10.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Я первую по другому немного сделал
Код

#include <iostream>
#include <conio.h>

using namespace std;


int main()
{
    const int arr_len = 10;
    int arr[arr_len]={9,8,7,6,5,4,3,2,1,0};
    int num;
    cin >> num;
    for ( int i = arr_len-1 ; i >=0 && num > arr[i]; i-- )
    {
        arr[i+1] = arr[i];
        arr[i] = num;
    }
    for (int i = 0; i < arr_len; i++)
        cout << arr[i] << endl;
    getch();    
}


А вот сумасшедшее решение 3-й задачи. Кто - нибудь знает, как ее решить нормально?

Код

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    const int arr_len = 9;
    int arr[arr_len]={5,2,7,8,4,6,1,8,5}; 
    
    int num1 = INT_MAX, num2 = INT_MAX, num3 = INT_MAX;
    int *temp;    
    
    for ( int i = 0; i < arr_len; i++ )
    {
        temp = (num1 > num2 ? ( num1 > num3 ? &num1 : &num3 ) : 
                              ( num2 > num3 ? &num2 : &num3 ));
        if ( *temp > arr[i] ) *temp = arr[i];
    }
    
    cout << num1 + num2 + num3 << endl;
    getch();    
}


Это сообщение отредактировал(а) Perchilla - 20.10.2005, 21:33
PM MAIL   Вверх
bel_nikita
Дата 21.10.2005, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Может пригодится поиск минимумов и максимумов с возвращением позиции:
Код
int FindMin(int& OUT iMin, int* IN p, int IN len)
{
  iMin = *p;
  for ( int iPos = 0, i = 0 ; i < len; ++i )
    if ( p[i] < iMin ) iMin = p[i], iPos = i;
  return iPos;
}

int FindMax(int& OUT iMax, int* IN p, int IN len)
{
  iMax = *p;
  for ( int iPos = 0, i = 0 ; i < len; ++i )
    if ( p[i] > iMax ) iMax = p[i], iPos = i;
  return iPos;
}


Если правильно понял, то третья такая:
Код

#include <stdio.h>
#include <limits.h>

int FindMin(int& OUT iMin, int* IN p, int IN len)
{
  iMin = *p;
  for ( int iPos = 0, i = 0 ; i < len; ++i )
    if ( p[i] < iMin ) iMin = p[i], iPos = i;
  return iPos;
}

int main(int argc, char* argv[])
{
  int Array[5] = { 4,3,8,2,4 };

  int iMin = 0;
  int iMax = 0;
  int iPosMin = 0;
  int Summa = 0;

  for (int i = 0; i < 3; ++i )
  {
    iPosMin = FindMin(iMin, Array, sizeof(Array)/sizeof(Array[0]) );
    Array[ iPosMin ] = INT_MAX;
    Summa += iMin;
  }
  printf("\nsumma = %d",Summa);

  return 0; 
}



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Goofy
Дата 21.10.2005, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо всем, осталось только 2 и 4.
PM MAIL   Вверх
Romikgy
Дата 21.10.2005, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

void zad_na_pered(int * m, // Сам массив
int len) //длинна массива
{
int tmp;

for (int i=0;i<=(len>>1);i++)
{
tmp=m[i];
m[i]=m[len-i-1];
m[len-i-1]=tmp;
}

}

Вроде так для 4 задания


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 21.10.2005, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Код

void v_odin(int *m1, // массив первый
int *m2,// массив второй
int *m3,//массив исходящих данных, должен быть длинной len1+len2
int len1,//длинна первого массива
int len2)//длинна второго массива
// копируем массив 1 в исходящий массив
int i;
for (i=0;i<len1;i++) m3[i]=m1[i];
// добавляем массив 2 в третий массив
for (i=0;i<len2;i++) m3[i+len1]=m2[i];
// а терь сортируем что получилось 
int tmp,d=1;
while (d<>0)
{
d=0;
for (i=0;i<len1+len2-1;i++)
if (m3[i]<m3[i+1]) {tmp=m3[i];m3[i]=m3[i+1];m3[i+1]=tmp;d++;}

}

Вроде так для 2 задания.

ЗЫ но я не проверял, если захошь сам проверишь smile



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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