Помогите плиз
Написал прогу.. Всё работает, но чтот есть подозрение что чтото не то, уж слишком быстро и легко я её написал
Вот сам код:
#include <iostream>
using namespace std;
int main()
{
setlocale (LC_ALL, "");
int n;
int A[100];
int k;
cout << "Укажите размер массива(n<=100)\nn=";
cin >> n;
G:cout << "\n***Начальный массив:***\n";
for (int i=0; i<n; i++)
{
/*
cout << "arr[" << i << "]=";
cin >> A[i];
cout << "\n";
*/
//Генератор
A[i]=rand()%50;
/////
}
//Вывод для генератора
for (int j=0; j<n; j++)
cout << "arr[" << j << "]=" << A[j] << "\n";
/////
cout << "\nВведите сдвиг(+ вправо/- влево)\nk=";
cin >> k;
cout << "\n\n";
if(k<0)
{
int h=0;
h=k*(-1);
for (int j=0;j<n;j++)//смещение влево
{
A[j]*=0;
A[j]=A[j+h];
}
cout << "\n***Результующий массив:***\n";
for (int j=0; j<n-h; j++)
cout << "arr[" << j << "]=" << A[j] << "\n";
}
else
{
for (int j=0;j>n;j++)//смещение вправо
{
A[j+k]=A[j];
A[j]*=0;
}
cout << "\n***Результующий массив:***\n";
for (int j=0; j<n-k; j++)
cout << "arr[" << j << "]=" << A[j] << "\n";
}
system("pause");
system("cls");
goto G;
}
Там еще маленькие коммы, делал для себя)))
Прога должна делать циклический сдвиг(вправо/влево), в зависимости от знака числа сдвига
Вот скрины работы программы
Для сдвига вправо(на 10 позиций)
Для сдвига влево(на 15 позиций)
Вот еще одна прога от меня:
Добовляет к натуральному числу в начале и в конце цифру 1
Написана с использыванием функций)
#include <iostream>
using namespace std;
int ko(int a);
int add_1_in_the_start(int a);
int add_1_in_the_end(int a);
/*
использываемые функции:
1. ko - подсчет количества цифр в натуральном числе
2. add_1_in_the_start - функция добавления цифри 1 в начале числа
3. add_1_in_the_end - функция добавления цифри 1 в конце числа
*/
int main()
{
int n, S=0, N=0, P=0, F=0;
setlocale(LC_ALL, "");
cout << "Введите натуральное число\nn=";
cin >> n;
//расчеты
S=add_1_in_the_start(n);//исполльзуем функцию(2)
N=ko(S);//исполльзуем функцию(1)
P=add_1_in_the_end(N);//исполльзуем функцию(3)
F=S+P;//финальный подсчет
cout << "\nПолученное число: "<< F << "\n\n";
system ("pause");
}
int ko(int a)
{
int i=0;
while(a>0)//находим количество цифр в числе
{
a=a/10;
i++;
}
return i;
}
int add_1_in_the_start(int a)
{
a=a*10+1;
return a;
}
int add_1_in_the_end(int N)
{
int P=1;
while (N!=0)
{
P=P*10;
N--;
}
return P;
}
Может можно как-то уменьшить код, но оставить функции?
Извените за быдлокод, я учусь.. Щас главное понять что за что отвечает, а потом уже работать над красатой и понятностью кода)))
Fenix_61 (09.12.2012 / 16:20)
По чем учишься ?
по методичкам которые в универе дают
Щас вот расчетку делаю
Использую VS 2010
Вот еще одна прога, мож кому пригодится
#include <iostream>
using namespace std;
int main()
{
int n;
int a[100];
setlocale (LC_ALL, "");
//ввод данных
cout << "Введите натуральное число\nn=";
cin >> n;
cout << "Введите массив\n";
for (int i=0; i<n; i++)
{
/*
cout << "arr[" << i << "]=";
cin >> a;
cout << "\n";
*/
a[i]=rand()%40-20;//генератор
}
cout << "***Начальный массив:***\n";
for (int i=0; i<n; i++)//вывод массивa
cout << "arr[" << i << "]=" << a[i] << "\n";
//проверка
/*
Если в данной последова¬тельности ни одно положительное число не расположено после отрицательного,
то получить новый массив из всех нечетных членов последовательности, иначе из всех четных.
Порядок следования чисел в обоих случаях заменяется на обратный.
*/
int Y=0, j=0;
int b[100];
for (int i=0;i<n;i++)
{
if (a[i]>0 && a[i+1]<0)
Y=0;
else
Y=1;
}
if (Y=1)
{
for (int i=0;i<n;i++)
{
if (a[i]%2==0)
{
b[j]=a[i];
j++;
}
}
}
else
{
if(Y=0)
{
for (int i=0;i<n;i++)
{
if (a[i]%2!=0)
{
b[j]=a[i];
j++;
}
}
}
}
//вывод результата
cout << "\n***РЕЗУЛЬТАТ:***\n";
for (int i=0; i<j; i++)
cout << "arr[" << i << "]=" << b[i] << "\n";
system ("pause");
}
[i]
Даны натуральное число n и целые числа . Если в данной последова-тельности ни одно положительное число не расположено после отрицательного, то получить новый массив из всех нечетных членов последовательности, иначе из всех четных. Порядок следования чисел в обоих случаях заменяется на обратный.
Ты на программиста учишься ?