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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> [c++] Одномерные массивы 
:(
    Опции темы
GOBLIN_TT
Дата 6.6.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ребят помогите пожалуйста с задачками по С++.
У мя в субботу зачёт, а всё неуспеваю сделать, помогите плиз..  smile 

Задача №1 
Дан одномерный массив А из N чисел. 
Упорядочить эти элементы массива по возростанию их значений методом вставок. 

Задача 2 
Дан одномерный массив T из M чисел, причём 0<M<=76. Упорядочить элементы массива по убыванию их значений пузырьковым методом. 
Задача 3 
Дан одномерный массив Z из K чисел. Упорядочить элементы массива по возростанию их значений по методу Шелла. 

Задача 4 
Дан одномерный массив Z из M чисел, причём 0<N<=10. Упорядочить элементы массива по убыванию их значений используя алгоритм быстрой сортировки.
 
Задача 5
Дан одномерный массив Z, состоящий из N элементов,где N - заданное натуральное число.
Если имеется хотя бы одна пара совпадающих элементов, то упорядочить элементы этого массива по возростанию, иначе записать элементы этого массива по убыванию значений элементов массива.

задача 6

Используя соответствующие функции, напишите программу, выводящую на экран сообщение о совпадении или несовпадении введённых с клавиатуры строк.

Задача 7

Задано слово чётной длинны. Используя соответсвующие функции, удалить в нём первую половину слова, а вторую перевернуть (инвертировать).

Задача 8

В классе учится  N - человек, причём известны фамилияЮ имя и отчество каждого из них.
В конце года весь класс написал итоговую контрольную работу. Напишите программу составления сводной ведомости по итогам написания контрольной работы с указанием ФИО и оценки, полученной учеником. Также выведите на экран сообщение об итогах работы всего класса (средний бал), изходя из условия:
5-4,5 - "Ochen horosho!";
4-4,4 - "horosho!";
3-9,3 - "UDOVOLIT!";
менее 3 плохо

Задача 9

Дана вещественная матрица А размером MxN, все элементы которой различны.
Найти скалярное произведение столбца, в котором находится наибольший элемент матрицы, на столбце с наименьшим элементом.

Задача 10

Даны две целочисленные матрици А и В размером МхN, все элементы которых различны. Поменять местами столбец матрицы А, где расположен наибольший элемент матрицы А, со столбцом матрици В, где расположен наименьший элемент матрици В.

Задача 11
Даны 3 файла.
Записать в третий файл содержимое, первого, а потом с новой строки содержимое второго файла.

Задача 12

Даны 3 файла. Записать в третий файл содержимое первого и второго файла так, что сначала записывается символ из первого файла, потом символ из второго файла и тд. Если один файл длиннее другого, то по окончании короткого фала записываем в 3й файл все оставшиеся символы боее длинного файла.

Задача 13

Дан файл. Напишите программу, которая преобразует все заглавные буквы этого файла в строчные, а строчные в загланые.


Это сообщение отредактировал(а) Alexeis - 7.6.2007, 12:41
--------------------
PM MAIL WWW ICQ   Вверх
_hunter
Дата 6.6.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



ты разделом ошибся: это в "центр помощи"/работа...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alexeis
Дата 6.6.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Угу, но и в "Центре помощи" и в "работе" действуют общие правила форума, которые я думаю будет не лишне внимательно прочитать.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
desert_rose
Дата 6.6.2007, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 18.12.2006
Где: Беллорусия, Минск

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



Задача1
Код

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define n 10

int a[n];

void Vstavka()
 {
 for ( int k = 0 ; k < n-1 ; k++ )
  for (int i = k+1 ; i >= 1 ; i-- )
   if ( a[i-1] > a[i] )
    {
    int value = a[i-1];
    a[i-1] = a[i];
    a[i] = value;
    }
   else
    break;
 }

void main()
 {
 clrscr();
 randomize();

 for ( int i = 0 ; i < n ; i++ )
  {
  a[i] = random(50);
  cout<<a[i]<<" ";
  }

 cout<<endl;

 Vstavka();

 for ( i = 0 ; i < n ; i++)
  cout<<a[i]<<" ";

 getch();
 }


Добавлено через 3 минуты и 40 секунд
Задача2
Код

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


int a[76];

void Obmen()
 {
 int k = n-1, done, value;
 while (1)
  {
  done = 1;
  for ( int i = 0 ; i < k ; i++ )
   if (a[i] < a[i+1])
    {
    done = 0;
    value = a[i];
    a[i] = a[i+1];
    a[i+1] = value;
    }
  if (done) break;
  k--;
  }

 }

void main()
 {
 clrscr();
 randomize();

 for ( int i = 0 ; i < n ; i++ )
  {
  a[i] = random(50);
  cout<<a[i]<<" ";
  }

 cout<<endl;

 Obmen();

 for ( i = 0 ; i < n ; i++ )
  cout<<a[i]<<" ";

 getch();
 }

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


Шустрый
*


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

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



Вот накатал тебе 3 задачи, потом, когда освобожусь накатаю еще.

:: Задача №1:
Код

// Задача №1 
// Дан одномерный массив А из N чисел. 
// Упорядочить эти элементы массива по возростанию их значений методом вставок.

#include <stdio.h>
#include <locale.h>

int main () 
{
    setlocale (LC_CTYPE, ".1251");
    setlocale (LC_MONETARY, ".1253");

    int *a, ret, N;
    FILE *Work;
    FILE *Out;

    Work = fopen ("FIn.txt", "rt");
    if (Work == NULL) {
        printf ("Ошибка 1: Невозможно открыть файл\n");
        return 1;
    }

    ret = fscanf (Work, "N = %d", &N);
    if (ret != 1 && N <= 0) {
        printf ("Ошибка 2: Неверные данные\n");
        return 2;
    }

    a = new int [N];
    if (a == NULL) {
        printf ("Ошибка 3: Невозможно создать массив\n");
        return 3;
    }

    for (int k = 0; k < N; k++) {
        ret = fscanf (Work, "%d", &a[k]);
        if (ret != 1) {
            printf ("Ошибка 4: Неверные данные\n");
            return 4;
        }
    }

    ret = fclose (Work);
    if (ret == EOF) {
        printf ("Ошибка 5: Невозможно закрыть файл\n");
        return 5;
    }

    int value, j;
    for (int i = 0; i < N; i++) {
        value = a[i];
        for (j = i - 1; (j >= 1) && (a[j] > value); j--) {
            a[j + 1] = a[j];
        }
        a[j + 1] = value;
    }

    Out = fopen ("FOut.txt", "wt");
    if (Out == NULL) {
        printf ("Ошибка 1: Невозможно открыть файл\n");
        return 1;
    }

    fprintf (Out, "N = %d\n", N);
    for (int l = 0; l < N; l++) {
        fprintf (Out, "%d ", a[l]);
    }

    ret = fclose (Out);
    if (ret == EOF) {
        printf ("Ошибка 5: Невозможно закрыть файл\n");
        return 5;
    }
    
    return 0;
}


Вид файла ввода:
Код

N = 15
0 5 6 7 3 4 1 9 8 2 14 11 12 13 10


:: Задача №2:
Код

// Дан одномерный массив T из M чисел, причём 0<M<=76. Упорядочить элементы массива по убыванию их значений пузырьковым методом.

#include <locale.h>
#include <stdio.h>

int main ()
{
    setlocale (LC_CTYPE, ".1251");
    setlocale (LC_MONETARY, ".1251");

    int *T, ret, M;
    FILE *in;
    FILE *out;

    in = fopen ("FIn.txt", "rt");
    if (in == NULL) {
        printf ("Ошибка 1: Невозможно открыть файл\n");
        return 1;
    }

    ret = fscanf (in, "M = %d", &M);
    if (ret != 1 && M > 76 && M < 0) {
        printf ("Ошибка 2: Неверные данные\n");
        return 2;
    }

    T = new int [M];
    if (T == NULL) {
        printf ("Ошибка 3: Невозможно создать массив\n");
        return 3;
    }

    for (int l = 0; l < M; l++) {
        ret = fscanf (in, "%d", &T[l]);
        if (ret != 1) {
            printf ("Ошибка 2: Неверные данные\n");
            return 2;
        }
    }

    ret = fclose (in);
    if (ret == EOF) {
        printf ("Ошибка 4: Невозможно закрыть файл\n");
        return 4;
    }

    int copy;
    for (int i = 0; i < M; i++) {
        for (int j = M - 1; j >= i; j--) {
            if (T[i] <= T[j]) {
                copy = T[i];
                T[i] = T[j];
                T[j] = copy;
            }
        }
    }

    out = fopen ("FOut.txt", "wt");
    if (out == NULL) {
        printf ("Ошибка 1: Невозможно открыть файл\n");
        return 1;
    }

    fprintf (out, "M = %d\n", M);
    for (int k = 0; k < M; k++) {
        fprintf (out, "%d ", T[k]);
    }

    ret = fclose (out);
    if (ret == EOF) {
        printf ("Ошибка 4: невозможно закрыть файл\n");
        return 4;
    }

    return 0;
}



Вид файла ввода:
Код

M = 20
0 1 12 11 4 5 6 7 8 9  45 23 19 13 14 15 16 17 18 19


:: Задача №3:
Код

// Дан одномерный массив Z из K чисел. Упорядочить элементы массива по возростанию их значений по методу Шелла.

#include <locale.h>
#include <stdio.h>

int main ()
{
    setlocale (LC_CTYPE, ".1251");
    setlocale (LC_MONETARY, ".1251");

    int *Z, ret, K;
    FILE *in;
    FILE *out;

    in = fopen ("FIn.txt", "rt");
    if (in == NULL) {
        printf ("Ошибка 1: Невозможно открыть файл\n");
        return 1;
    }

    ret = fscanf (in, "K = %d", &K);
    if (ret != 1) {
        printf ("Ошибка 2: Неверные данные\n");
        return 2;
    }

    Z = new int [K];
    if (Z == NULL) {
        printf ("Ошибка 3: Невозможно создать массив\n");
        return 3;
    }

    for (int l = 0; l < K; l++) {
        ret = fscanf (in, "%d", &Z[l]);
        if (ret != 1) {
            printf ("Ошибка 2: Неверные данные\n");
            return 2;
        }
    }

    ret = fclose (in);
    if (ret == EOF) {
        printf ("Ошибка 4: Невозможно закрыть файл\n");
        return 4;
    }

    long d = K;
    int c, i, j;

    do {
        d = (d / 2);
        i = 0;
        while ((j = i + d) < K) {
            if (j == 0) // избежание сравнения Z[0] с Z[0]
                j++;
            if (Z[i] > Z[j]) {
                c = Z[i];
                Z[i] = Z[j];
                Z[j] = c;
            }
        i++;
        }
    }
    while (d > 0);

    
    out = fopen ("FOut.txt", "wt");
    if (out == NULL) {
        printf ("Ошибка 1: Невозможно открыть файл\n");
        return 1;
    }

    fprintf (out, "M = %d\n", K);
    for (int y = 0; y < K; y++) {
        fprintf (out, "%d ", Z[y]);
    }

    ret = fclose (out);
    if (ret == EOF) {
        printf ("Ошибка 4: невозможно закрыть файл\n");
        return 4;
    }

    return 0;
}



Вид файла ввода:
Код

K = 10
19 8 72 6 35 54 3 2 31 10


Прицепил сами исходники (3 задачи), можешь в них посмотреть все.



Это сообщение отредактировал(а) AndrRus - 6.6.2007, 19:06

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  Projects_1_3.rar 14,10 Kb
PM MAIL ICQ   Вверх
desert_rose
Дата 6.6.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 18.12.2006
Где: Беллорусия, Минск

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



Задача4
Код

void QuickSort(int A[], int L, int R) 

  { 

  int i, j; 

  int x, t; 

  

  while (L < R) 

    { 

    x = A[L]; 

    i = L, j = R; 

    while (i <= j) 

      { 

      while (A[i] < x) i++; 

      while (x < A[j]) j--; 

      if (i <= j) 

        t = A[i], A[i] = A[j], A[j] = t, 

        i++, j--; 

      } 

    if ((j - L) > (R - i)) 

      QuickSort(A, i, R), R = j; 

    else 

      QuickSort(A, L, j), L = i; 

    } 

  } 

  

PM   Вверх
mr.Anderson
Дата 6.6.2007, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Задача 5.
Код

#include <iostream.h>
//-----------------------------------------------

int main( void )
{
 int N = -1;
 cout << "Enter count of elements: ", cin >> N;
 if( N <= 0 )
 {
  cout << "Error! Count of elements could not be less than 1.";
  return;
 }

 int arr[ N ];
 randomize();
 for( int i=0; i<N; i++ )
  arr[ i ] = random( 100 ); //заполнение случайными числами

 int memory = -1; //ищем пару совпадающих чисел
 bool ascSort = false; //индикатор упорядочивания по возрастанию
 for( int i=0; i<N; i++ )
 {
  memory = arr[ i ]; //запоминаем текущее число

  for( int j=0; j<N; j++ )
   if( memory == arr[ j ] )
    ascSort = true;
 }

 if( ascSort ) 
 {
  int i = 0;
  while( i < N )
   if( arr[ i ] < arr[ i + 1 ] )
   { //меняем местами
    int hold = arr[ i ];
    arr[ i ] = arr[ i + 1 ];
    arr[ i + 1 ] = hold;
     
    i = 0; //еще раз пробегаемся по массиву
   }
 }
 else
 {
  int i = 0;
  while( i < N )
   if( arr[ i ] > arr[ i + 1 ] )
   { //меняем местами
    int hold = arr[ i ];
    arr[ i ] = arr[ i + 1 ];
    arr[ i + 1 ] = hold;
     
    i = 0; //еще раз пробегаемся по массиву
   }

 }

 //в результате в arr - упорядоченный по условию массив 
 
 return 0;
}

Код не проверял, написал на коленке. Может, можно и проще, на краткость не претендую. smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
GOBLIN_TT
Дата 7.6.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ребят спасибо БОЛЬШОЕ )))
Ща буду побовать остальные ))
--------------------
PM MAIL WWW ICQ   Вверх
Alexeis
Дата 7.6.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Вижу что с одномереными разобрались, остальные тут не по теме. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
AndrRus
Дата 7.6.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



:: Задача №6
Код

// Используя соответствующие функции, напишите программу, выводящую на экран сообщение о совпадении или несовпадении введённых с клавиатуры строк.

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

#include <cstring>
#include <locale.h>
#include <conio.h>

int main () {

    setlocale (LC_CTYPE, ".1251");
    setlocale (LC_MONETARY, ".1251");

    char string1[512], string2[512], ret;
    bool round = true;
    
    while (round == true) {
        cout << "Введите первую строку:" << endl;
        cin.getline (string1, 512, '\n');
        -flushall ();

        cout << "Введите вторую строку:" << endl;
        cin.getline (string2, 512, '\n');
        -flushall ();

        if (!strcmp (string1, string2))
            cout << "Строки совпадают" << endl;
        else
            cout << "Строки не совпадают" << endl;

        cout << "\n :: Для повторного запуска программы нажмите 1" << endl;
        cout << " :: Для выхода нажмите любую другую клавишу" << endl;

        ret = getch ();
        switch (ret) {
            case '1': 
                round = true; break;  
            default: 
                round = false;
        }
        -flushall ();
    }
    return 0;
}

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

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


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

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

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

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


 




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


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

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