Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]Задачи с массивами


Автор: Novojiloff 20.4.2007, 09:28
Мне нужно выполнить две задачи:
 превратить все элементы массива в отрицательные, и наоборот.
Также нужно найти максимальный элемент массива, и переставить его с первым 

С отрицательным я разберусь, а вот второе с перестановкой, я не представляю
каким образом, но вот пока что есть:

Код

#include<cstdlib>
#include<cstdio>
#include<iostream>

/* Константы

**END - служит для остановки программы перед выходом 
**HR - черта для вывода
**SPACE - служит для вывода пробелов

*/

#define end system("PAUSE"); return 0;
#define hr printf("___________________________________________\n");
#define space printf("\n\n\n");

int main(int nNumberofArgs, char* pszArgs[])

{
    int x,i;
    printf("Enter x: "); scanf("%d",&x);
    
    int z[x];
    
    for(i=0; i < x; i++)
    {
             printf("Enter #%d element: ",i);
             scanf("%d",&z[i]);}
             
    int max=z[0];
    
    i=1;
    
    while(i < x && z[i] != 7051991)
    {
            if(z[i] > max)
                    max=z[i];
                    
            else i++;
            
    }
    
    printf("\nMax: %d\n",max);         
    
    /* Замена местами */
               
    end;
}                         
    

            


Автор: ama_kid 20.4.2007, 09:36
Примерно так, идея должна быть понятна...
Цитата
    int max=0;
    
    i=1;
    
    while(i < x && z[i] != 7051991)
    {
            if(z[i] > z[max])
                        max=i;                    
                    
            else i++;
            
    }
    
    printf("\nMax: %d\n",z[max]);         
    
    /* Замена местами */
    int tmp = z[0];
    z[0]=z[max];
    z[max]=tmp;
    
    end;
}                      

Автор: betal 20.4.2007, 11:46

 
Цитата

превратить все элементы массива в отрицательные, и наоборот.

*(-1)

Цитата

Также нужно найти максимальный элемент массива, и переставить его с первым 




 int z[x];
    int max=-9999;
int k=0;
    for(i=0; i < x; i++)
    {
if(z[x]>max){max=z[x];k=i;}
}
z[k]=z[0];
z[0]=max;

 smile 

Автор: NightmareZ 20.4.2007, 16:40
Цитата(Novojiloff @  20.4.2007,  09:28 Найти цитируемый пост)
превратить все элементы массива в отрицательные, и наоборот.

Код

#include <fstream>
#include <list>

void main()
{
    std::list<int> arr(
        std::istream_iterator<int>(std::ifstream("input.txt")),
        std::istream_iterator<int>()
        );

    std::ofstream outfile("output.txt");

    for (std::list<int>::iterator i = arr.begin(); i != arr.end(); i++)
        outfile << (*i = -*i) << " ";
}


Цитата(Novojiloff @  20.4.2007,  09:28 Найти цитируемый пост)
Также нужно найти максимальный элемент массива, и переставить его с первым 

Код

#include <fstream>
#include <list>

void main()
{
    std::list<int> arr(
        std::istream_iterator<int>(std::ifstream("input.txt")),
        std::istream_iterator<int>()
        );

    std::ofstream outfile("output.txt");

    std::list<int>::iterator i, j, maxe;
    i = j = maxe = arr.begin();
    int tmp;

    for (; i != arr.end(); i++)
        if (*i > *maxe)
            maxe = i;

    tmp = *j;
    *j = *maxe;
    *maxe = tmp;

    for (i = j; i != arr.end(); i++)
        outfile << *i << " ";
}


Автор: JackYF 20.4.2007, 16:54
Цитата(NightmareZ @  20.4.2007,  16:40 Найти цитируемый пост)
tmp = *j;
    *j = *maxe;
    *maxe = tmp;


Ну если уже STL так уже STL smile
Код

std::swap(*j, *maxe);


Автор: NightmareZ 20.4.2007, 16:57
Цитата(JackYF @ 20.4.2007,  16:54)
Цитата(NightmareZ @  20.4.2007,  16:40 Найти цитируемый пост)
tmp = *j;
    *j = *maxe;
    *maxe = tmp;


Ну если уже STL так уже STL smile
Код

std::swap(*j, *maxe);

Спасибо, буду знать  smile 

Автор: Novojiloff 20.4.2007, 20:13
Вариант Betal подошел лучше всего  smile 

За что ему спасибо и +  smile 

Автор: Earnest 20.4.2007, 20:19
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Anikmar 20.4.2007, 21:27
Замечание.
При всем уважении к betal, в его примере грубейшая ошибка, за которую нас преподаватели очень сильно наказывали. Это строка:
Код

int max=-9999


Нас за такие строки просто били по голове.

Вариант ama_kid не имеет этой ошибки.

Автор: Sokolik 29.4.2007, 08:57
Ребята помогите...
Задача на тему работы со строками и алгоритмов образования текстов.
Вообщем вот:
Вводишь текст, он отображает количество строк в нём
Так же нужно выделение строк слов абзацев(5 пробелов)
Если кто может кинте скриптик, а то я уже всю голову сломал...

Автор: Alexeis 29.4.2007, 12:55

M
Alexeis
Модератор: Пожалуйста, один топик - один вопрос.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)