![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Задача 148. Создать функцию, подсчитывающую сумму чисел, предшествующих первому отрицательному элементу в массиве.Содержание книги
Поиск на нашем сайте
// Программа отлажена в Visual Studio 2008 (27.05.2008) #include<conio.h> #include<stdio.h> #include <iostream> using namespace std;
// Сумма чисел до первого отрицательного // элемента в массиве float my_func(float *a, int n) { int flag = 0; float s=0; float *uk1=a+n-1; while(a <= uk1) { if(*a >= 0) s=s + *a; else { flag = 1; break;} a++; } if(flag == 0) return -777; else return s; }
const int n = 7; int main() { //float a[n]={2,4,6,88,9,10,15}; float a[n]={2,1,1,-1,1,1,1}; float s=my_func(a, n); if (s < 0) cout << "NOT FOUND\n"; else cout<<s<<endl; return 0; }
Задача 149.Создать функцию, подсчитывающую сумму чисел, расположенных после последнего отрицательного элемента в массиве.
// Программа отлажена в Visual Studio 2008 #include<conio.h> #include<stdio.h> #include <iostream> using namespace std;
// Сумма чисел после последнего отрицательного // элемента в массиве float my_func(float *a, int n) { int flag = 0; float s=0; float *uk1=a+n-1; while(uk1 >= a) { if (*uk1 < 0) { flag = 1; break;} uk1--; } if(flag == 0) return -777; else { uk1++; while(uk1 < a + n) { s=s + *uk1; uk1++;} return s; }
}
const int n = 7; int main() { //float a[n]={2,4,6,88,-9,10,15}; float a[n]={2,1,1,1,1,1,1}; float s=my_func(a, n); if (s < 0) cout << "NOT FOUND\n"; else cout<<s<<endl; return 0; }
Задача 150.Создать функцию, осуществляющую бинарный поиск заданного элемента Q в заданном упорядоченном массиве целых чисел.
Функция dicho() рализует бинарный поиск, используя механизм указтелей и адресную арифметику для обработки массива. Ранее (см задачу 92) этот алгоритм был реализван в стиле традиционной обработки массивов с применением индексирования.
// Программа отлажена в Visual Studio 2008 #include<conio.h> #include<stdio.h> #include <iostream> using namespace std;
//двоичный поиск 3.06.2008 int dicho(int *x, int n, int Q) { int low=0,high=n-1, mid, flag=0; while(low <= high &&!flag) { mid=(low+high)/2; if(*(x+mid) == Q) flag=1; else if(*(x+mid) < Q) low=mid+1; else high=mid-1; } if(flag) return mid; else return -777; }
int main() { int i, Q,found; int a[]={1,3,7,33,44,55,66,77,88}; int n=sizeof(a)/sizeof(int); // Устанавливаем локализацию для выходного потока wcout.imbue(locale("rus_rus.866")); // Выводим строку на русском!
wcout<< L"введи ключ поиска\n"; scanf("%d",&Q); found = dicho(a, n, Q); if(found>=0) wcout<< Q<<L" на "<<found<<L" месте\n"; else wcout<<Q<< L" не найден\n"; getch(); }
Вот результат работы этой программы:
введи ключ поиска 33 на 3 месте
Задача 151.Создать функцию, которая удаляет из заданной строки текст, заключенный в круглые скобки (и), формируя новую строку. Функция в случае успеха возвращает 0, и некоторое отрицательное число при неудаче (-1 при отсутствии “(“, -2 при отсутствии “)”).
// Программа отлажена в Visual Studio 2005 #include<conio.h> #include<stdio.h> #include <iostream> using namespace std;
// функция удаляет символы между (и) int del_skob(char *s1, char *s2) { while(*s1!= '\0' && *s1!= '(') *s2++ = *s1++; if(*s1=='\0') return -1; while(*s1!= '\0' && *s1!= ')') s1++; if(*s1=='\0') return -2; s1++; while(*s1!= '\0') *s2++ = *s1++; *s2=0; return 0; }
int main() { char s1[40]="12345(мама мыла раму)6789", s2[40]; int flag; // Устанавливаем локализацию для выходного потока wcout.imbue(locale("rus_rus.866")); // Выводим строку на русском!
wcout<< L"Введи строку "; gets(s1); flag=del_skob(s1, s2); if (flag==-1) {wcout << L"Нет ("; getch();return 0;} if (flag==-2) {wcout << L"Нет)"; getch(); return 0;} else puts(s2); getch();return 0; }
Задача 152. Создать строку, содержащую цифры и другие символы. Определить функцию типа указатель, которая в динамической области памяти (“куче”) формирует новую строку на базе исходной, удалив предварительно из неё цифры и записав оставшиеся символы в обратном порядке. Функция должна возвращать указатель на вновь сформированную строку.
// Программа отлажена в Visual Studio 2008 (24.05.2008) #include <iostream> using namespace std;
char *delzifr(char *s); int main () { char *str="988776ASDFGH1233^%&^888"; // Устанавливаем локализацию для выходного потока wcout.imbue(locale("rus_rus.866")); // Выводим строку на русском! wcout<< L"Строка-результат: "; cout<<delzifr(str)<<endl; wcout<< L"Исходная строка: "<<str<<endl; getch();return 0; }
char *delzifr(char *s) { char *my_s= new char [strlen(s)]; // char *my_s=(char*)malloc(strlen(s)); char *uk1=s, *uk2=my_s; while(*s) s++; //End string
while(--s>=uk1) { if(*s<'0'|| *s>'9') { *my_s = *s; my_s++; }
} *my_s ='\0'; return(uk2); }
|
|||||
Последнее изменение этой страницы: 2016-12-16; просмотров: 413; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.119.222 (0.011 с.) |