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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.92
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
#1

Повернуть массив на 90. Функция. - C++

16.10.2009, 19:09. Просмотров 3121. Ответов 18
Метки нет (Все метки)

Здравствуйте.Пожалуйсто помогите решить две задачки.Буду очень благодарна.

Задание 1.
Разработать приложение, выполняющее следующие действия. Ввести с клавиатуры значения элементов двумерного массива состоящего из чисел 1 и 0. Заданный массив перевернуть против часовой стрелки на 90 градусов. Результат вывести на экран.

Задание 2.
Написать функцию, которая будет выводить на экран цифры числа 2^500 и числа 1!+2!+…+100!. Разработать приложение, которое содержит обращение к этой функции. Результат вычисление функции вывести на экран.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2009, 19:09     Повернуть массив на 90. Функция.
Посмотрите здесь:
C++ Повернуть массив
Повернуть массив на 90° по часовой стрелке C++
C++ Повернуть массив на 90˚ против часовой стрелки
C++ Массив целых чисел «свернуть в кольцо» и повернуть вправо на К позиций
Дан массив N × M. Требуется повернуть его по часовой стрелке на 90 градусов C++
Задан массив размером NxN, состоящий из 0 и 1. Повернуть элементы массива на 900градусов по часовой стрелке. C++
C++ C++ функция и массив
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.10.2009, 19:24     Повернуть массив на 90. Функция. #2
задание 1
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 <iostream>
#include <ctime>
using namespace std;
 
// Разработать приложение, выполняющее следующие действия.
// Ввести с клавиатуры значения элементов двумерного массива состоящего 
// из чисел 1 и 0. Заданный массив перевернуть против часовой стрелки на 90 градусов.
//#define MANUAL
void main()
{ 
    int numCol, numRow;
    double temp=LONG_MAX, summ=0;
 
    srand (unsigned (time(0)));
 
    cout<<"Enter number colums: "; cin>>numCol; 
    int **arr = new int* [numCol];
    cout<<"Enter number rows: "; cin>>numRow; 
    for (int i=0; i<numCol; i++)
    {
        arr[i] = new int [numRow];
    }
 
    for (int row=0; row<numRow; row++)
    {
        for (int col=0; col<numCol; col++)
        {
            // случайно запоняем 1 и 0
            // в ручную чтобы вводить раскоментируйте #define MANUAL
#ifdef MANUAL
            cout<<"["<<col<<"]["<<row<<"]= ";
            cin>>arr[col][row];
#else
            arr[col][row]=rand()%2;
#endif
        }
        cout<<endl;
    }
 
    cout<<" Array:"<<endl;
    for (int row=0; row<numRow; row++)
    {
        for (int col=0; col<numCol; col++)
            cout<<" "<<arr[col][row];
        cout<<endl;
    }
 
 
    cout<<"\n\n After shift:"<<endl;
    for (int col=0; col<numCol; col++)
    {   
        for (int row=0; row<numRow; row++)
            cout<<" "<<arr[col][row];
        cout<<endl;
    }
    cout<<endl; system("pause");
}
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
16.10.2009, 19:40     Повернуть массив на 90. Функция. #3
Задача 1:
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
#include <iostream.h>
#include <windows.h>
int **masA, **masB, n, m, i,j, y;
double temp;
int main ()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout<<"Ââåäèòå êîëè÷åñòâî ñòðîê Г¬Г*Г±Г±ГЁГўГ*: "<< endl;
    cin>>n;
    cout<<"Ââåäèòå êîëè÷åñòâî ñòîëáöîâ Г¬Г*Г±Г±ГЁГўГ*: "<< endl;
    cin>>m;
    masA=new int*[n];
    masB=new int*[m];
    for(i=0; i<n; i++)
       masA[i]=new int[m];
   for(i=0; i<m; i++)
       masB[i]=new int[n];
    cout<<"Ââåäèòå ýëåìåГ*ГІГ» Г¬Г*Г±Г±ГЁГўГ*: "<< endl;
    for(i=0; i<n; i++)
       for(j=0; j<m; j++)
       {
          cout<<"["<<i<<"]["<<j<<"]= ";
          cin>>masA[i][j];
       }
    cout<<"èñõîäГ*ûé Г¬Г*Г±Г±ГЁГў"<<endl;
    for(i=0; i<n; i++)
    {
       for(j=0; j<m; j++)
          cout<<masA[i][j]<<" ";
       cout<<endl;
    }
    for(i=0, y=m-1; i<m;y--, i++)
       for(j=0; j<n; j++)
           masB[y][j]=masA[j][i];
    for(i=0; i<m; i++)
    {
       for(j=0; j<n; j++)
           cout<<masB[i][j];
       cout<<endl;
    }
 
         return 0; 
}
Добавлено через 4 минуты
TanT,
У тебя ошибка в задании 1. Я тоже немного помучился над этим же. ( Заданный массив переворачивается против часовой стрелки на 90 градусов с зеркальным отображением)
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
16.10.2009, 19:54     Повернуть массив на 90. Функция. #4
точно, неуглядел это всё нолики и единички виноваты, запонение надо нормальное. но решается не сложно. пасиб, за замечание

Добавлено через 24 секунды
править уже не буду
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
17.10.2009, 16:44  [ТС]     Повернуть массив на 90. Функция. #5
TanT,valeriikozlov, спасибо вам ОГРОМНОЕ! Помогите кто-нибудь со второй задчкой?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
17.10.2009, 17:50     Повернуть массив на 90. Функция. #6
Цитата Сообщение от Аня91 Посмотреть сообщение
и числа 1!+2!+…+100!.
а это как понимать? 1!+2!+…+100! это одно число

Добавлено через 8 минут
два варианта как вывести цифры цисла 2500
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
#include <iostream>
 
using namespace std;
 
void NumbersStr(int num)
{
    char *b= new char[10];
 
    itoa(num, b, 10);
    for(int i=0; i<strlen(b); i++)
        cout<<" "<<b[i];
 
}
 
void NumbersMath(int num)
{
    while (num)
    {
        cout<<" "<<num%10;
        num/=10;
    }
    //cout<<" "<<num;
        
 
}
 
int main()
{
    cout<<"NumbersStr:  "; NumbersStr(2500);
    cout<<"\nNumbersMath: "; NumbersMath(2500);
    cout<<endl; system("PAUSE");
    return 0;
}
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
27.11.2009, 16:02  [ТС]     Повернуть массив на 90. Функция. #7
TanT, извини,я не заметила.Условие задачи чуть иначе:
Написать функцию, которая будет выводить на экран цифры числа 2 в 500 степени и числа 1!+2!+…+100!. Разработать приложение, которое содержит обращение к этой функции. Результат вычисление функции вывести на экран.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
27.11.2009, 18:20     Повернуть массив на 90. Функция. #8
хм, тут главное как эти числа посчитать. что такое класс знаете?
сначала нужно написать класс, ну или можно функциями как вычислить такие числа, ну и потом собственно вывести.

что из всего выше написанного вам понятно и что вы можете сделать сами?
John Connor
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 14
28.11.2009, 15:42     Повернуть массив на 90. Функция. #9
Написать функцию, которая будет выводить на экран цифры числа 2 в 500 степени, немножко непонятна эта часть задания, требуеться написать програму которая будет вычеслять 2 в степени от 0 до 500?
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
29.11.2009, 16:48  [ТС]     Повернуть массив на 90. Функция. #10
John Connor, я бы тебе пояснила,но сама понять не могу(( Условие дано как есть.
требуеться написать програму которая будет вычеслять 2 в степени от 0 до 500?
Возможно так...
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
29.11.2009, 18:08     Повернуть массив на 90. Функция. #11
Цитата Сообщение от Аня91 Посмотреть сообщение
требуеться написать програму которая будет вычеслять 2 в степени от 0 до 500?
Вся проблема в том что ни один встроенных тип данных не может хранить в себе значения таких размеров. Например берем тип int, у меня на компьютере он может хранить 2 в степени 30, но 2 степени 31 уже дает ошибку.
Вот вариант как можно вывести на экран 2 в степени от 1 до 60:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 int mas[2]={1,0};
         for(int i=1; i<=60; i++)
         {
             mas[0]*=2;
             if(mas[1]>0)
                 mas[1]*=2;
             if(mas[0]/1000000000>0)
             {
                 mas[1]+=mas[0]/1000000000;
                 mas[0]%=1000000000;
             }
        cout<<mas[1]<<mas[0]<<endl;
         }
Если будете так реализовывать, то размерность массива у Вас должна быть 17.
John Connor
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 14
29.11.2009, 22:31     Повернуть массив на 90. Функция. #12
Будьте добры, уточните задание....
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
30.11.2009, 17:33     Повернуть массив на 90. Функция. #13
Для второй задачи нужно либо разработать библиотеку для работы с длинной арифметикой, либо использовать готовую.
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
30.11.2009, 22:34  [ТС]     Повернуть массив на 90. Функция. #14
odip,спасибо за исправление.
Вот зададут гении такое задание,что условие даже не понять(((
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
08.12.2009, 12:49  [ТС]     Повернуть массив на 90. Функция. #15
В общем мне подсказали решение второй задачи,но тут же у меня появились и другие трудности.

Вот так будет первая часть задания в Builder, а в Visual описание функции вроде бы в конце программы.1ая часть программы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vcl.h>
#include "iostream.h"
#include "conio.h"
 
//x^500=x^2*x^2*x^5*x^5*x^5
 int stepen (int x)
 {
 int a,b,rezalt;
 a=x*x;
 b=x*x*x*x*x;
 rezalt=a*a*b*b*b;
 cout<<rezalt;
  }
 
 
 
int main()
{
 stepen (2);
 getch();
}
А так вторая часть
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
#include <vcl.h>
#include <vcl.h>
#include "iostream.h"
#include "conio.h"
 
 double  factorial(int n)
{
  double result;
   int i;
 
   i = 1;
   result = 1;
   do
   {
       result = result*i;
       i = i+1;
   }
   while(i<=n);
   cout<<result;
}
 
 
int main()
{
 factorial(5);
 getch();
}
Только в вызове функции вместо 5 надо поставить 100
Возможно ли как-нибудь это дело перенести на Visual Studio 2005?
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.12.2009, 18:15     Повернуть массив на 90. Функция. #16
Цитата Сообщение от Аня91 Посмотреть сообщение
Возможно ли как-нибудь это дело перенести на Visual Studio 2005?
1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
int stepen (int x)
{
    int a, b, rezalt;
    a = x * x;
    b = x * x * x * x * x;
    rezalt = a * a * b * b * b;
    std::cout<<rezalt;
} 
 
int main()
{
    stepen (2);
    std::cin.get();
    return 0;
}

2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
double  factorial(int n)
{
    double result = 1;
    int i = 1;
    do
    {
        result *= i;
        ++i
    }
    while(i <= n);
    std::cout<<result;
}
 
int main()
{
    factorial(5);
    std::cin.get();
    return 0;
}
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
08.12.2009, 21:49  [ТС]     Повернуть массив на 90. Функция. #17
M128K145, спс конечно за помощь,а вот при компиляции такая вот неприятность(
1.
error C4716: 'stepen' : must return a value
2.
error C4716: 'factorial' : must return a value
Можно ли как-то поправить?
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.12.2009, 22:26     Повернуть массив на 90. Функция. #18
Перепиши третьи строки соответственно
C++
1
2
void stepen (int x)
void factorial(int n)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2009, 13:39     Повернуть массив на 90. Функция.
Еще ссылки по теме:
C++ Функция и массив
Функция и массив C++
C++ Функция и массив
C++ Функция, возвращающая массив
Функция и двумерный массив C++

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

Или воспользуйтесь поиском по форуму:
Аня91
0 / 0 / 0
Регистрация: 16.10.2009
Сообщений: 10
09.12.2009, 13:39  [ТС]     Повернуть массив на 90. Функция. #19
M128K145,спасибо тебе большое! Очень помог
Yandex
Объявления
09.12.2009, 13:39     Повернуть массив на 90. Функция.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru