Форум программистов, компьютерный форум CyberForum.ru

Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
21.12.2010, 17:39     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #1
Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без изменения.
Указания: номера k1 и k2 вводятся с клавиатуры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2010, 17:39     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен
Посмотрите здесь:

C++ Из массива удалить элемент с заданным номером
C++ В последовательности поменять местами максимальный элемент и элемент с номером m
C++ Из всех положительных элементов вычесть элемент с номером k1, из остальных — элемент с номером k2
C++ 11.247. Даны два массива одного размера. Получить третий массив, каждый элемент которого равен:сумме элементов с тем же номером в заданных массивах
C++ Указатели . Удалить из одномерного массива элемент с заданным номером, добавить К элементов, начиная с заданного номера
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
d3nver
135 / 119 / 9
Регистрация: 20.12.2010
Сообщений: 242
21.12.2010, 19:47     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// massiv_sheill.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const unsigned int razmer_mas = 50;
    int mas[razmer_mas];
    // заполнение массива от -20 до +20
    int i;
    srand((unsigned)time( NULL));
    for(i=0; i<razmer_mas; i++) {
        mas[i] = rand()%40 - 20;
    }
    // ввод k1 и k2
    int k1, k2;
    cout << "Vvedi k1: ";
    cin >> k1;
    cout << "Vvedi k2: ";
    cin >> k2;
    // проверка k1 и k2
    if ((k1<0) || (k1>=razmer_mas) || (k2<0) || (k2>=razmer_mas)) {
        cout << "k1 ili k2 vyhodiat za granicu massiva";
        return 1;
    }
    // Вывод первоначального массива
    cout << "Massiv do:\n";
    for(i=0; i<razmer_mas; i++)
        cout << mas[i] << " ";
    cout << endl;
    // сохраняем элементы массива k1 и k2
    int a1, a2;
    a1 = mas[k1];
    a2 = mas[k2];
    // корректируем массив
    for(i=0; i<razmer_mas; i++) {
        if (mas[i]>0) {mas[i] -= a1; continue;}
        if (mas[i]<0) {mas[i] += a2; continue;}
    }
    // Вывод измененного массива
    cout << "Massiv posle:\n";
    for(i=0; i<razmer_mas; i++)
        cout << mas[i] << " ";
    cout << endl;
 
    cout << "Press any key...\n";
    _getch();
    return 0;
}
Vvedi k1: 1
Vvedi k2: 2
Massiv do:
10 -9 7 4 13 -12 -12 3 17 -15 15 9 5 -20 19 12 -3 -18 -1 -8 1 -4 -13 -11 -4 -10
-14 2 8 15 17 -7 -7 -3 -9 10 15 9 -10 -19 -17 -8 -16 19 3 -13 -11 -20 -15 -4
Massiv posle:
19 -2 16 13 22 -5 -5 12 26 -8 24 18 14 -13 28 21 4 -11 6 -1 10 3 -6 -4 3 -3 -7 1
1 17 24 26 0 0 4 -2 19 24 18 -3 -12 -10 -1 -9 28 12 -6 -4 -13 -8 3
Press any key...
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
23.12.2010, 09:39  [ТС]     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #3
Пожалуйста, если не сложно напишите эту задачу чтобы она работала на Visual Studio 2008

Добавлено через 25 минут
помогите еще с несколькими заданиями:
1. Дана матрица, заполненная случайным образом. Сформировать вектор, элементами которого могут быть 1 или 0в зависимости от следующего условия: 1-сумма элементов строки больше вводимого числа X, 0-иначе.
2.Написать функцию перевода времени заданного в секундах или минутах в часы, минуты,секунды. Предусмотреть выбор варианта: секунды или минуты.
3. Описать функции формирования элементов одномерного массива с помощью генератора случайных чисел и нахождения пары соседних элементов, наиболее близко расположенных друг к другу. Мера близости: R=|A[i+1]-A[i]|.
4. Дана строка слов. Определить буквы, которые встречаются наибольшее и наименьшее количество раз.
5. Для каждого из N студентов группы известно ФИО и оценки(в баллах) по пяти дисциплинам. Вывести на экран фамилию и имя тех из них, у которых количество положительных оценок больше, чем отрицательных(положительная оценка-3 и больше).
6. Для каждого из N студентов группы известно ФИО и оценки по пяти дисциплинам. Сформировать список, в который попадут те студенты, у которых количество положительных оценок больше чем отрицательных.
7. В каждой стороке заполненной случайным образом матрицы размером m на n поменять местами последний элемент и минимальный по модулю.
8. Дан текстовый файл. Написать функцию replace(c1,c2), заменяющую в тексте все символы c1 на символы c2.
9. Дан файл содержащий данные о погоде: время года, дату, облачность и температуру. Студенты со своими преподавателями решили идти в поход. Проверить удовлетворяют ли погодные условия данному мероприятию путем ввода интересующей даты.( Примечание: хорошей погодой считается: безооблачно, для зимы +5 и более градусов, для весны и осени +15 т более, для лета +20 и более).
Пожалуйста помогите с решением этих задач, очень нужно. Необходимо чтобы программы работали в Visual Studio 2008.

Добавлено через 12 часов 13 минут
d3nver, Пожалуйста, помоги!
d3nver
135 / 119 / 9
Регистрация: 20.12.2010
Сообщений: 242
23.12.2010, 10:07     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #4
Цитата Сообщение от sheill Посмотреть сообщение
Пожалуйста, если не сложно напишите эту задачу чтобы она работала на Visual Studio 2008
у меня 2010 студия, в 2008 должно все работать.
Можешь попробовать так:
Открываешь 2008 студию, создаешь обычный консольный проект и вставляешь туда инклуды.
А в функцию main копируешь содержимое из данной функции:
int _tmain(int argc, _TCHAR* argv[])
{
........
}

По остальным пунктам, у меня счас небольшой завал, на выходных более менее освобожусь.
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
23.12.2010, 16:00  [ТС]     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #5
Спасибо...просто очень нужны эти лабы без них допуск не получу(((
d3nver
135 / 119 / 9
Регистрация: 20.12.2010
Сообщений: 242
23.12.2010, 19:35     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #6
пока первая
И то, если я правильно помню, что такое вектор (одномерный массив), то тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
/*
* Дана матрица, заполненная случайным образом. 
* Сформировать вектор, элементами которого могут быть 1 или 0 в зависимости от следующего условия: 
* 1-сумма элементов строки больше вводимого числа X, 0-иначе.
*/
void main() {
    int matr[5][5];
    int vektor[5];
    int i, j;
    srand((unsigned)time( NULL));
    for (i=0; i<5; i++)
        for (j=0; j<5; j++)
            matr[i][j] = rand()%50; // заполнение от 0 до 50
    // вывод матрицы
    cout << "Matrica: " << endl;
    for (i=0; i<5; i++) {
        for (j=0; j<5; j++)
            cout << matr[i][j] << " ";
        cout << endl;
    }
    cout << endl;
    cout << endl;
    
    int x;
    cout << "Vvedi X: ";
    cin >> x;
    cout << endl;
    cout << endl;
 
    int sum = 0;
    // подсчет сумм и заполнение вектора
    for (i=0; i<5; i++) {
        for (j=0; j<5; j++)
            sum +=matr[i][j];
        vektor[i] = (sum > x)?1:0;
        sum = 0;
    }
 
    // вывод вектора
    for (i=0; i<5; i++) 
        cout << vektor[i] << " ";
    cout << endl;
    cout << endl;
    getch();
}
В консоли:
Matrica:
3 38 35 3 46
44 0 46 25 3
27 15 42 9 48
3 41 30 26 0
40 8 2 7 41


Vvedi X: 120


1 0 1 0 0
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
24.12.2010, 11:12  [ТС]     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #7
Спасибо,я очень благодарен) все работает!)

Добавлено через 14 часов 56 минут
d3nver, Мне нужно до сдать все лабы в понедельник( помоги, если есть возможность.
d3nver
135 / 119 / 9
Регистрация: 20.12.2010
Сообщений: 242
24.12.2010, 23:22     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #8

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
/*
* 2. Написать функцию перевода времени заданного в секундах или минутах в часы, минуты,секунды. 
* Предусмотреть выбор варианта: секунды или минуты.
*/
void main() {
    char sym;
    cout << "Chto vvodim? min(m) ili sec(s): ";
    cin >> sym;
    if ((sym!='m') && (sym!='M') && (sym!='s') && (sym!='S')) {
        cout << "Vveden nevernyi parametr " << sym << endl;
        getch();
        return;
    }
    unsigned int num, hours, minutes, seconds;
    cout << "Vvedi chislo: ";
    cin >> num;
    switch (sym) {
        case 'm': 
        case 'M': 
            hours = num / 60; 
            minutes = num % 60;
            seconds = 0;
            break;
        case 's':
        case 'S':
            hours = num / 3600;
            minutes = (num / 60) % 60;
            seconds = num % 60 ;
            break;
    }
    cout << endl;
    cout << "Bylo vvedeno " << num;
    if ((sym=='m') || (sym=='M'))
        cout << " minutes" << endl;
    else 
        cout << " seconds" << endl;
    cout << "Eto sostavliaet " << hours << " chas(a,ov) " << minutes << " minutes ";
    if ((sym=='s') || (sym=='S'))
        cout << seconds << " seconds";
    cout << endl;
    cout << endl;
    getch();
}
Chto vvodim? min(m) ili sec(s): m
Vvedi chislo: 100

Bylo vvedeno 100 minutes
Eto sostavliaet 1 chas(a,ov) 40 minutes

Chto vvodim? min(m) ili sec(s): s
Vvedi chislo: 10000

Bylo vvedeno 10000 seconds
Eto sostavliaet 2 chas(a,ov) 46 minutes 40 seconds
Добавлено через 17 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
 
using namespace std;
/*
* 3. Описать функции формирования элементов одномерного массива с помощью 
* генератора случайных чисел и нахождения пары соседних элементов, 
* наиболее близко расположенных друг к другу. Мера близости: R=|A[i+1]-A[i]|.
*/
void main() {
    const int num = 10;
    int mas[num];
    int i;
    srand((unsigned)time( NULL)); // инициализация ГПСЧ
    for (i=0; i<num; i++)
            mas[i] = rand()%50; // заполнение от 0 до 50
    // вывод массива
    cout << "Massiv: " << endl;
    for (i=0; i<num; i++)
        cout << mas[i] << " ";
    cout << endl;
 
    // поиск минимальной разницы
    int min = abs(mas[0]-mas[1]);
    int iMin = 0;
    for (i=1; i<num-1; i++) {
        if (abs(mas[i]-mas[i+1]) < min) {
            min = abs(mas[i]-mas[i+1]);
            iMin = i;
        }
    }
 
    cout << "minimalnaya raznica sostavliaet " << min << " mejdu elementami " << mas[iMin] << " i " << mas[iMin+1];
    cout << endl;
    cout << endl;
    getch();
}
Massiv:
28 11 32 20 10 46 21 24 43 12
minimalnaya raznica sostavliaet 3 mejdu elementami 21 i 24
Добавлено через 43 минуты

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "stdafx.h"
#include <iostream>
#include <conio.h>
# 
using namespace std;
/*
* 4. Дана строка слов. Определить буквы, которые встречаются наибольшее и наименьшее количество раз.
*/
 
// Работает только для английских букв. Для русских будет немного по другому.
// наименьшее кол-во раз - это как минимум одна буква
 
void main() {
    char stroka[1024] = {";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;bla bla bla tra ta ta ur ha ha uuuu"};
 
    // подсчет кол-ва символов и запись в массив
    unsigned int mas['z'-'A'+1] = {0};
    int i = 0;
    while (stroka[i]) {
        if (((stroka[i]>='A') && (stroka[i]<='Z')) || ((stroka[i]>='a') && (stroka[i]<='z'))) 
            // подсчитываем только буквенные символы
            mas[(unsigned char)stroka[i] - (unsigned char)'A']++;
        i++;
    }
    // поиск максимума и минимума символов
    int max = mas[0];
    int min = mas[0];
    for (i=1; i<((unsigned char)('z'-'A'+1)); i++) {
        if (!mas[i]) continue; // отбрасываем те символы, кол-во которых равно нулю
        min = (!min)?mas[i]:min; // если минимум все еще равен нулю, записываем туда первое ненулевое кол-во.
        // при последующем проходе - минимум остается минимумом
        max = (mas[i]>max)?mas[i]:max;
        min = (mas[i]<min)?mas[i]:min; // тогда здесь никогда не будет сравнение с нулем и запишется именно минимум
    }
    // вывод максимума кол-ва букв
    cout << "V stroke '" << stroka << "' \n\nbolshe vsego bukv:\n";
    char sym[2] = {0};
    for (i=0; i<((unsigned char)('z'-'A'+1)); i++) {
        if (mas[i]==max) {
            sym[0] = (unsigned char)i + (unsigned char)'A';
            cout << "Bukva '" << sym << "' vstrechaetsa " << max << " raz(a)\n";
        }
    }
    cout << endl << endl;
    // вывод минимума кол-ва букв
    cout << "V stroke '" << stroka << "' \n\menshe vsego bukv:\n";
    for (i=0; i<((unsigned char)('z'-'A'+1)); i++) {
        if (mas[i]==min) {
            sym[0] = (unsigned char)i + (unsigned char)'A';
            cout << "Bukva '" << sym << "' vstrechaetsa " << min << " raz(a)\n";
        }
    }
    getch();
}
V stroke ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;bla bla bla tra ta ta ur ha ha uuuu'

bolshe vsego bukv:
Bukva 'a' vstrechaetsa 8 raz(a)


V stroke ';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;bla bla bla tra ta ta ur ha ha uuuu'
menshe vsego bukv:
Bukva 'h' vstrechaetsa 2 raz(a)
Bukva 'r' vstrechaetsa 2 raz(a)
На сегодня пока все.

Добавлено через 6 минут
и уточни по 5й и 6й задаче. Нужны классы или структуры?
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
25.12.2010, 17:36  [ТС]     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #9
Огромное спасибо) в 5 и 6 задачи структуры.
d3nver
135 / 119 / 9
Регистрация: 20.12.2010
Сообщений: 242
26.12.2010, 14:47     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #10

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "stdafx.h"
#include <iostream>
#include <conio.h>
# 
using namespace std;
/*
* 5. Для каждого из N студентов группы известно ФИО и оценки(в баллах) по пяти дисциплинам. 
* Вывести на экран фамилию и имя тех из них, у которых количество положительных оценок больше, 
* чем отрицательных(положительная оценка-3 и больше).
*/
 
void main() {
    // структура хранения информациии о студентах
    const int N = 5;
    typedef struct {
        char familia[80];
        char imia[80];
        char otchestvo[80];
        unsigned int ocenka_disc1;
        unsigned int ocenka_disc2;
        unsigned int ocenka_disc3;
        unsigned int ocenka_disc4;
        unsigned int ocenka_disc5;
    } baza;
    baza group[N];
 
    int i;
    // ввод инфы о студентах
    for (i=0; i<N; i++) {
        cout << "Vvod dannyh o studentah, # " << i+1 << " iz " << N << endl;
        cout << "Familia " << i+1 << "go studenta: ";
        cin >> group[i].familia;
        cout << "Imia " << i+1 << "go studenta: ";
        cin >> group[i].imia;
        cout << "Otchestvo " << i+1 << "go studenta: ";
        cin >> group[i].otchestvo;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #1: ";
        cin >> group[i].ocenka_disc1;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #2: ";
        cin >> group[i].ocenka_disc2;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #3: ";
        cin >> group[i].ocenka_disc3;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #4: ";
        cin >> group[i].ocenka_disc4;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #5: ";
        cin >> group[i].ocenka_disc5;
    }
    cout << endl << endl;
    // vyvod infy
    cout << "Sleduushie studenty imeut bolshe polojitel. ocenok chem otricatel.:" << endl;
    int p = 0;
    for (i=0; i<N; i++, p=0) {
        p += (group[i].ocenka_disc1>=3)?1:0;
        p += (group[i].ocenka_disc2>=3)?1:0;
        p += (group[i].ocenka_disc3>=3)?1:0;
        p += (group[i].ocenka_disc4>=3)?1:0;
        p += (group[i].ocenka_disc5>=3)?1:0;
        if (p<=2) continue; // отрицательных оценок больше.
        cout << group[i].familia << " "<< group[i].imia << endl;
    }
    getch();
}
консоль:
Vvod dannyh o studentah, # 1 iz 5
Familia 1go studenta: f1
Imia 1go studenta: i1
Otchestvo 1go studenta: o1
Ocenka (1-5) 1go studenta po discipliny #1: 1
Ocenka (1-5) 1go studenta po discipliny #2: 2
Ocenka (1-5) 1go studenta po discipliny #3: 3
Ocenka (1-5) 1go studenta po discipliny #4: 4
Ocenka (1-5) 1go studenta po discipliny #5: 5
Vvod dannyh o studentah, # 2 iz 5
Familia 2go studenta: f2
Imia 2go studenta: i2
Otchestvo 2go studenta: o2
Ocenka (1-5) 2go studenta po discipliny #1: 1
Ocenka (1-5) 2go studenta po discipliny #2: 2
Ocenka (1-5) 2go studenta po discipliny #3: 3
Ocenka (1-5) 2go studenta po discipliny #4: 2
Ocenka (1-5) 2go studenta po discipliny #5: 1
Vvod dannyh o studentah, # 3 iz 5
Familia 3go studenta: f3
Imia 3go studenta: i3
Otchestvo 3go studenta: o3
Ocenka (1-5) 3go studenta po discipliny #1: 2
Ocenka (1-5) 3go studenta po discipliny #2: 3
Ocenka (1-5) 3go studenta po discipliny #3: 4
Ocenka (1-5) 3go studenta po discipliny #4: 4
Ocenka (1-5) 3go studenta po discipliny #5: 2
Vvod dannyh o studentah, # 4 iz 5
Familia 4go studenta: f4
Imia 4go studenta: i4
Otchestvo 4go studenta: o4
Ocenka (1-5) 4go studenta po discipliny #1: 3
Ocenka (1-5) 4go studenta po discipliny #2: 4
Ocenka (1-5) 4go studenta po discipliny #3: 5
Ocenka (1-5) 4go studenta po discipliny #4: 3
Ocenka (1-5) 4go studenta po discipliny #5: 4
Vvod dannyh o studentah, # 5 iz 5
Familia 5go studenta: f5
Imia 5go studenta: i5
Otchestvo 5go studenta: o5
Ocenka (1-5) 5go studenta po discipliny #1: 2
Ocenka (1-5) 5go studenta po discipliny #2: 3
Ocenka (1-5) 5go studenta po discipliny #3: 2
Ocenka (1-5) 5go studenta po discipliny #4: 1
Ocenka (1-5) 5go studenta po discipliny #5: 2


Sleduushie studenty imeut bolshe polojitel. ocenok chem otricatel.:
f1 i1
f3 i3
f4 i4
Добавлено через 17 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "stdafx.h"
#include <iostream>
#include <conio.h>
# 
using namespace std;
/*
* 6. Для каждого из N студентов группы известно ФИО и оценки по пяти дисциплинам. 
* Сформировать список, в который попадут те студенты, 
* у которых количество положительных оценок больше чем отрицательных.
*/
 
void main() {
    // структура хранения информациии о студентах
    const int N = 5;
    typedef struct {
        char familia[80];
        char imia[80];
        char otchestvo[80];
        unsigned int ocenka_disc1;
        unsigned int ocenka_disc2;
        unsigned int ocenka_disc3;
        unsigned int ocenka_disc4;
        unsigned int ocenka_disc5;
    } baza;
    baza group[N] = {0};
    baza spisok[N] = {0};
 
    int i;
    // ввод инфы о студентах
    for (i=0; i<N; i++) {
        cout << "Vvod dannyh o studentah, # " << i+1 << " iz " << N << endl;
        cout << "Familia " << i+1 << "go studenta: ";
        cin >> group[i].familia;
        cout << "Imia " << i+1 << "go studenta: ";
        cin >> group[i].imia;
        cout << "Otchestvo " << i+1 << "go studenta: ";
        cin >> group[i].otchestvo;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #1: ";
        cin >> group[i].ocenka_disc1;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #2: ";
        cin >> group[i].ocenka_disc2;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #3: ";
        cin >> group[i].ocenka_disc3;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #4: ";
        cin >> group[i].ocenka_disc4;
        cout << "Ocenka (1-5) " << i+1 << "go studenta po discipliny #5: ";
        cin >> group[i].ocenka_disc5;
    }
    cout << endl << endl;
    // формирование списка
    int p = 0, j;
    for (i=0, j= 0; i<N; i++, p=0) {
        p += (group[i].ocenka_disc1>=3)?1:0;
        p += (group[i].ocenka_disc2>=3)?1:0;
        p += (group[i].ocenka_disc3>=3)?1:0;
        p += (group[i].ocenka_disc4>=3)?1:0;
        p += (group[i].ocenka_disc5>=3)?1:0;
        if (p<=2) continue; // отрицательных оценок больше.
        spisok[j++] = group[i];
    }
    // вывод списка
    cout << "Spisok otlichnikov:" << endl;
    for (i=0; i<N; i++) {
        if (!spisok[i].familia[0]) break; // достигнут конец списка отличников
        cout << spisok[i].familia << " "<< spisok[i].imia << " " << spisok[i].otchestvo << endl;
    }
    getch();
}
консоль:
Vvod dannyh o studentah, # 1 iz 5
Familia 1go studenta: f1
Imia 1go studenta: i1
Otchestvo 1go studenta: o1
Ocenka (1-5) 1go studenta po discipliny #1: 1
Ocenka (1-5) 1go studenta po discipliny #2: 2
Ocenka (1-5) 1go studenta po discipliny #3: 3
Ocenka (1-5) 1go studenta po discipliny #4: 4
Ocenka (1-5) 1go studenta po discipliny #5: 5
Vvod dannyh o studentah, # 2 iz 5
Familia 2go studenta: f2
Imia 2go studenta: i2
Otchestvo 2go studenta: o2
Ocenka (1-5) 2go studenta po discipliny #1: 1
Ocenka (1-5) 2go studenta po discipliny #2: 2
Ocenka (1-5) 2go studenta po discipliny #3: 3
Ocenka (1-5) 2go studenta po discipliny #4: 2
Ocenka (1-5) 2go studenta po discipliny #5: 2
Vvod dannyh o studentah, # 3 iz 5
Familia 3go studenta: f3
Imia 3go studenta: i3
Otchestvo 3go studenta: o3
Ocenka (1-5) 3go studenta po discipliny #1: 2
Ocenka (1-5) 3go studenta po discipliny #2: 3
Ocenka (1-5) 3go studenta po discipliny #3: 4
Ocenka (1-5) 3go studenta po discipliny #4: 5
Ocenka (1-5) 3go studenta po discipliny #5: 2
Vvod dannyh o studentah, # 4 iz 5
Familia 4go studenta: f4
Imia 4go studenta: i4
Otchestvo 4go studenta: o4
Ocenka (1-5) 4go studenta po discipliny #1: 2
Ocenka (1-5) 4go studenta po discipliny #2: 3
Ocenka (1-5) 4go studenta po discipliny #3: 2
Ocenka (1-5) 4go studenta po discipliny #4: 3
Ocenka (1-5) 4go studenta po discipliny #5: 1
Vvod dannyh o studentah, # 5 iz 5
Familia 5go studenta: f5
Imia 5go studenta: i5
Otchestvo 5go studenta: o5
Ocenka (1-5) 5go studenta po discipliny #1: 2
Ocenka (1-5) 5go studenta po discipliny #2: 3
Ocenka (1-5) 5go studenta po discipliny #3: 4
Ocenka (1-5) 5go studenta po discipliny #4: 5
Ocenka (1-5) 5go studenta po discipliny #5: 1


Spisok otlichnikov:
f1 i1 o1
f3 i3 o3
f5 i5 o5
Добавлено через 33 минуты

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
 
using namespace std;
/*
* 7. В каждой строке заполненной случайным образом матрицы размером m на n 
* поменять местами последний элемент и минимальный по модулю.
*/
void main() {
    const int m = 5;
    const int n = 6;
    int matr[m][n];
    int i, j;
    srand((unsigned)time( NULL));
    for (i=0; i<m; i++)
        for (j=0; j<n; j++)
            matr[i][j] = rand()%50-25; // заполнение от -25 до +25
    // вывод матрицы
    cout << "Matrica: " << endl;
    for (i=0; i<m; i++) {
        for (j=0; j<n; j++)
            cout << matr[i][j] << " ";
        cout << endl;
    }
    cout << endl;
    int min;
    int iMin;
    int temp;
    // поиск первого минимального элемента и замена на последний
    for (i=0; i<m; i++) {
        iMin = 0;
        min = abs(matr[i][iMin]);
        for (j=1; j<n; j++)
            if (abs(matr[i][j])<min) {
                min = abs(matr[i][j]);
                iMin = j;
            }
        temp = matr[i][iMin];
        matr[i][iMin] = matr[i][n-1];
        matr[i][n-1] = temp;
    }
 
    // вывод изменной матрицы
    cout << "Izmenennaya Matrica: " << endl;
    for (i=0; i<m; i++) {
        for (j=0; j<n; j++)
            cout << matr[i][j] << " ";
        cout << endl;
    }
    cout << endl;
    cout << endl;
    getch();
}
консоль:
Matrica:
-6 20 -9 -25 10 -15
2 9 22 -17 8 -12
22 5 -7 -12 -13 7
0 -13 13 -1 -1 1
-7 -16 12 -22 -6 -1

Izmenennaya Matrica:
-15 20 -9 -25 10 -6
-12 9 22 -17 8 2
22 7 -7 -12 -13 5
1 -13 13 -1 -1 0
-7 -16 12 -22 -6 -1
Добавлено через 26 минут

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
 
using namespace std;
/*
* 8. Дан текстовый файл. Написать функцию replace(c1,c2), 
* заменяющую в тексте все символы c1 на символы c2.
*/
unsigned int replace (char* file, char c1, char c2) {
    unsigned int i=0;
    while (file[i]) {
        if (file[i]==c1) file[i] = c2;
        i++;
    }
    return i; // возвращает размер файла
}
void main() {
    unsigned int razmer = 1024; // максимальный размер файла
 
    ifstream file_in;
    ofstream file_out;
    file_in.open ("input.txt");
    file_out.open ("output.txt");
    char file[1024] = {0};
    char c1, c2;
    file_in.read(file, razmer);
    cout << "Vvedi symvoly dlia zameny:" << endl;
    cout << "c1: ";
    cin >> c1;
    cout << "c2: ";
    cin >> c2;
    unsigned int r = replace(file, c1, c2);
    file_out.write(file, r);
    file_in.close();
    file_out.close();
    cout << "Zamena vupolnena\n";
    cout << "Press any key...\n";
    getch();
}
консоль:
Vvedi symvoly dlia zameny:
c1: f
c2: a
Zamena vypolnena
Press any key...
файл input.txt:
fdjklj dfjiodu9 gof945jui jifjdsiojg jiogjoj ojkgjfi
файл output.txt:
adjklj dajiodu9 goa945jui jiajdsiojg jiogjoj ojkgjai
Добавлено через 12 минут
про 9ю чутка не понял.
Это что, в файле будет информация о погоде на все 365 дней в году?
sheill
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 54
26.12.2010, 17:15  [ТС]     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #11
ну получается что так...

Добавлено через 36 минут
Ну получается что так,на все 365 дней.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2010, 17:25     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен
Еще ссылки по теме:

C++ Удалить первый элемент с заданным объемом информации, добавить элемент перед элементом с указанным номером
Сформировать двунаправленный список. Удалить из него элемент с заданным ключом, добавить элемент с указанным номером C++
Перед элементом массива с порядковым номером K вставить новый элемент C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
h_inc
 Аватар для h_inc
2 / 2 / 0
Регистрация: 18.03.2010
Сообщений: 11
26.12.2010, 17:25     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен #12
Про решение от себя добавлю. Напишите в самом начале программы:
C++
1
#include "locale"
А вот это после int main()'а:
C++
1
setlocale(LC_ALL, "rus");
Тогда сможете выводить текст в консоли на русском. Пример для VS 10:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "iostream"
#include "locale"
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    cout << "Привет мир!\n";
 
    system("pause");
    return 0;
}
Yandex
Объявления
26.12.2010, 17:25     Вычесть из положительных элементов массива элемент с номером k1, а к отрицательным прибавить элемент с номером k2, нулевые элементы оставить без измен
Ответ Создать тему
Опции темы

Текущее время: 23:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru