Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 408; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.129.97 (0.005 с.) |