Лабораторная работа по программированию. Лаба 3 Финал Зайцев. Программирование
Скачать 24.67 Kb.
|
Министерство науки и высшего образования РФ Федеральное государственное бюджетное образовательное учреждение высшего образования ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Институт информационных технологий и анализа данных Отчет о лабораторной работе № 3 (вариант №8) «Массивы и строки» по дисциплине «Программирование» Выполнил: студент гр. АСУб-21-3
Иркутск 2021 Задание А 1. Условие задачи. Написать программу для формирования и печати одномерного массива. Сформированный массив выдать на экран до и после сортировки: если номер варианта четный – расположить элементы по убыванию, если номер варианта нечетный – по возрастанию. Задан вектор A(n), n≤12. Сформировать вектор Х из элементов вектора А, значения которых не превышают среднее арифметическое массива А. Выполнить сдвиг полученного массива вправо на две позиции. Вводим следующие обозначения n- размер массива; A- заданный вектор; X- сформированный вектор; 2. Таблица внешних спецификаций Таблица 1 – Внешние спецификации
3. Алгоритмизация Словесный алгоритм: Объявление переменной n; Объявление строки s; Ввод n; Объявление массива A[12]; Объявление и ввод переменной type; Ввод массива A; Объявление переменной average; Вывод массива A, подсчёт среднего арифметического в переменную average; Объявление массива X, переменной num; Заполнение массива X элементами, меньшими average; Сдвиг массива X на 2 элемента вправо; Сортировка массива A методом пузырька по убыванию; Вывод массива X; Вывод массива A. Таблица 2 – Таблица тестов
4. Кодирование алгоритма или запись алгоритма на языке С++ #include #include #include using namespace std; int input(string s){ string l; int b; cout<<"Введите "< while (getline(cin,l)){ stringstream ss(l); if (ss >> b) if (ss.eof()) break; cout << "Ошибка, повторите ввод\nВведите "< } return(b); } int main(){ srand(time(0)); setlocale (LC_ALL, "Russian"); int n=0; string s; s="количество элементов массива"; while(n<1||n>12){ n=input(s); if(n<1||n>12) cout<<"Ошибка, повторите ввод"< } int A[12]; int type; s="каким способом вы хотите заполнить массив\n1. Вручную\n2. Случайными числами\nВаш выбор"; while((type<1)||(type>2)){ type=input(s); if((type<1)||(type>2)) cout<<"Ошибка"< } if(type==1) for(int i=0;i s=to_string(i+1)+" элемент массива"; A[i]=input(s); } if(type==2) for(int i=0;i A[i]=-1000+rand()%2000; float average=0.0; cout<<"Массив A"< for(int i=0;i average+=A[i]; cout< } cout< average/=n; int X[12],num=0; for(int i=0;i if(A[i]<=average){ X[num]=A[i]; num++; } if(num>2){ int temp1=X[num-2],temp2=X[num-1]; for(int i=num-1;i>=2;i--) X[i]=X[i-2]; X[0]=temp1; X[1]=temp2; } for(int i=0;i for(int j=0;j if(A[j] swap(A[j],A[j+1]); cout<<"Массив X"< for(int i=0;i cout< cout< for(int i=0;i cout< return 0; } Задание B 1. Условие задачи. Сформировать новую строку, в которую включить слова по возрастанию их длины. Найти первое цифровое слово и изменить его значение, поделив на 100. Вводим следующие обозначения s – введенная строка; w – строка слов по возрастанию их длины. 2. Таблица внешних спецификаций Таблица 1 – Внешние спецификации
3. Алгоритмизация Объявление строки s; Ввод строки s; Объявление переменных i,l,c,line,num,fl и массивов w,Row; Пока(i Если s[i] не знак разделения, то c+1 Иначе Если c≠0 Ввод слова в массив w; Проверка слово на цифровое; Если слово первое цифровое Число делится на 100 и возвращается в массив; Сохранение длины слова в массив Row; line+1; c=0; i+1; Сортировка слов по длине методом пузырька; Вывод отсортированного массива слов; Вывод сообщения о статусе цифрового слова. Таблица 2 – Таблица тестов
4. Кодирование алгоритма или запись алгоритма на языке С++ #include using namespace std; int main(){ setlocale(LC_ALL,"rus"); string s,cl; cl.clear(); getline(cin,s); s+=" "; char w[200][200]; for(int i=0;i<200;i++) for(int j=0;j<200;j++) w[i][j]=cl[0]; int i=0,l=s.length(),Row[200]={0},c=0,line=0,num=0; bool fl=true; while(i if(s[i]!=','&&s[i]!=' ') c++; else{ if(c!=0){ bool f=true; num=0; for(int j=i-c;j w[line][num]=s[j]; num++; if((s[j]<'0'||s[j]>'9')&&s[j]!='-') f=false; } if(fl&&f){ float ch=atoi(w[line]); ch/=100; for(int j=0;j<200;j++) w[line][j]=cl[0]; string a=to_string(ch); for(int j=0;j { w[line][j]=a[j]; num++; } fl=false; } Row[line]=num; line++; c=0; } } i++; } for(i=0;i for(int j=0;j if(Row[j]>Row[j+1]){ swap(w[j],w[j+1]); swap(Row[j],Row[j+1]); } cout<<"Слова по возрастанию их длины"< for(i=0;i for(int j=0;j cout< cout<<" "; } cout< if(fl) cout<<"Цифровых слов нет"; else cout<<"Цифровое слово было изменено"; return 0; } |