Вопрос № 148533: Здравствуйте эксперты прошу вас о помощи! <img src="http://rusfaq.ru/images/Forum/10.gif" border="0"> Дана строка символов 1. Определить, сколько в ней слов начинающихся и кончающихся на одну и ту же букву. 2. Дана строка симвлов. Удал...
Вопрос № 148562: Доброе время суток! Мне нуждается помощь в программе, которая переворачивает буквы введённого слова. Например если мы вводим "тест", то выйти должно
"тсет", т.е. этоже слово, тока задом на перёд. Заранее спасибо....Вопрос № 148567: Здравствуйте уважаемые эксперты, помогите пожалуйста написать код программы Дана структура, задающая дату вида: Struct date {int day; int month; int year;}; Пользуясь таким структурным типом, составить программу, оп...Вопрос № 148625: Добрый день, имеется код на с++, кото
рый умножает числа не испульзуя знака умножения: #include <iostream> #include <cassert> using namespace std; int mult (int a, int b) { cout << " mult " << a &l...Вопрос № 148642: Здраствуйте. Подскажите пожалуйста как можно изменить имя стандартного калькулятора с помощью Win 32 API??? ...Вопрос № 148650: Что такое l-value в С++? Расскажите пожалуйста поподробнее....Вопрос № 148683: Здравствуйте! Помогите пожалуйста! Срочно нужно сделать 2е задачки <img src="http://rusfaq.ru/images/Forum/10.gif" border="0"> : 1)Дан линейный, однонаправленный список. Написать функцию, которая удваивает каждый элемент списка 2)Дана строка с ...Вопрос № 148697: Здравствуйте Эксперты! Помогите пожалуйста разобраться с задачей. Дана целочисленная прямоугольная матрица. Упло
тнить матрицу, удалив из нее все строки, содержащие хотябы один нуль. Удалить их нужно таким образом: на место строк с нулем нужно ...
Вопрос № 148.533
Здравствуйте эксперты прошу вас о помощи!
Дана строка символов 1. Определить, сколько в ней слов начинающихся и кончающихся на одну и ту же букву. 2. Дана строка симвлов. Удалить из неё последний знак препинания.
Отвечает: Verena
Здравствуйте, Константиниус! В обеих задачах использованы статические строки. В первой задаче мы идём по строке, пропуская пробелы, и сравнивая первую после пробела и последнюю перед пробелом буквы (это как раз и будут первая и последняя буквы слова, пробел или несколько - разделитель).
Код:
#include
<conio.h> #include <string.h> #include <iostream> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { char str [256], c; //Строка, символ int k = 0, i = 0; //Счетчики cout << "Vvedite stroku (ne bolee 255 simvolov) "; gets (str); //Ввод строки int l = strlen(str); //длина строки while (i<l) { //пока не конец строки while (i<l && str[i]==' ') i++; //пропу
скаем пробелы if (i>=l) break; //если строка кончилась, выходим c = str[i]; //запоминаем первый символ слова while (i<l && str[i]!=' ') i++; //доходим до конца слова if (c==str[i-1]) k++; //сравниваем первый и последний символы и наращиваем счетчик в случае совпадения } cout << "Chislo slov: " << k; //вывод результата _getch(); return 0; }
Во второй задаче я считаю знаками препинания '.' ,',' , ';',
'!', список при желании можно расширить, или выбрать какие-нибудь отрезки ascii таблицы, это не принципиально. Мы идём по строке, запоминая позицию символа, являющегося знаком препинания, соответственно, пройдя всю строку, в этой переменной мы получим позицию самого последнего знака. Далее мы сдвигаем всю строку на одну позицию влево, начиная с этого места, так он удаляется. Предусмотрен случай, если знаков препинания в строке нет.
Код:
#include <conio.h> #include <string.h> #include <iostream> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { char str [101]; //Строка int k = -1; cout << "Vvedite stroku (ne bolee 100 simvolov) "; gets (str); //Ввод строки int
l = strlen(str); //длина строки for (int i=0; i<l; i++) if (str[i]=='.' || str[i]==',' || str[i]==';' || str[i]=='!') k = i; //Ищем знаки препинания, запомнится последний if (k==-1) cout << "Net znakov prepinania."; //вывод результата else { for (int i=k; i<l; i++) //идём до l, а не до l-1, чтобы и символ конца строки переместился str[i] = str[i+1]; //Замещаем текущий символ следующим cout << str; //вывод результата } _getch(); return 0; }
Удачи!
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 28.10.2008, 16:37
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148533 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 148.562
Доброе время суток! Мне нуждается помощь в программе, которая переворачивает буквы введённого слова. Например если мы вводим "тест", то выйти должно "тсет", т.е. этоже слово, тока задом на перёд. Заранее спасибо.
Отвечает: realbustard
Здравствуйте, Корыгин Леонид Игнатьевич! Эта задача решена в вопросе 144745. Код решения в приложении.
Приложение:
--------- Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: 6-ой класс)
Ответ отправлен: 26.10.2008, 21:39
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148562 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Alexandr A. Rakunov
Здравствуйте, Корыгин Леонид Игнатьевич! Этот вопрос уже задавался: №144745
Заменена ссылка на вопрос.
--------
∙ Отредактировал: Зенченко Константин Николаевич, Профессор
∙ Дата редактирования: 29.10.2008, 10:57 (время московское)
Ответ отправил: Alexandr A. Rakunov (статус: 8-ой класс)
Ответ отправлен: 27.10.2008, 10:23
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148562 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Виктор Пырлик
Здравствуйте, Корыгин Леонид Игнатьевич!
вот код на C
Код:
//--------------------------------------------------------------------------- #include <stdlib.h> #include <stdio.h> #include <string.h> #include <conio.h> //--------------------------------------------------------------------------- void
ReverceWord(char *sword) { int x = strlen(sword); char *t = (char*)calloc(x,sizeof(char)); for(int i = 0;i <= x; i++) { t[i] = sword[x -i-1]; // меняем символ конца строки на начало } strcpy(sword,t); // копируем сроки free(t); } // главная программа int main(int argc, char* argv[]) { char stemp[255] = {0}; printf("input word: &quo
t;); gets(stemp); ReverceWord(stemp); printf("
reverce word - %s
",stemp); getch(); return 0; } //---------------------------------------------------------------------------
--------- не получается там - где не пробуют
Ответ отправил: Виктор Пырлик (статус: Профессионал) Россия, Екатеринбург Тел.: 89043822027 ICQ: 490191733 ---- Ответ отправлен: 27.10.2008, 12:09
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148562 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 148.567
Здравствуйте уважаемые эксперты, помогите пожалуйста написать код программы Дана структура, задающая дату вида: Struct date {int day; int month; int year;}; Пользуясь таким структурным типом, составить программу, определяющую число суток, прошедших от заданной даты d1 до даты d2. Большое спасибо!
Отправлен: 26.10.2008, 21:59
Вопрос задал: Ruslank (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Verena
Здравствуйте, Ruslank! Для решения этой задачи нужно использовать некоторые закономерности, существующие в формировании дат. Например, так определяется месяц, в котором 30 дней: (((month<7 && month%2==0) || (month>7 && month%2!=0)) && month!=2) А так определяется високосный год: ((year%100!=0 && year%4==0) || year%400==0) Подойти к решению
этой задачи можно по-разному. Можно считать по дням, по месяцам или по целым годам (поскольку известно, сколько дней в них содержится). Мне кажется наименее громоздким подсчёт по месяцам, поскольку последний вариант предполагает больше предварительной обработки, а лишние сравнения в данном случае не слишком затратны. Но Вы можете поэкспериментировать с другими вариантами, построив код по аналогии. Код в приложении, из комментариев должно быть всё ясно. Удачи!
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 29.10.2008, 01:14
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148567 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 4
Вопрос № 148.625
Добрый день, имеется код на с++, который умножает числа не испульзуя знака умножения: #include <iostream> #include <cassert> using namespace std;
int mult (int a, int b) { cout << " mult " << a << " " << b << endl; return (a < 0) ? -mult(-a,b): ((a==0) ? 0 : mult(a-1,b) +b); }
int main() { int a; cout << "Eingabe " << endl; cin >> a; int b; cout << "Eingabe
" << endl; cin >> b; cout << mult(a,b) << endl;
return 0; } , т.е. он высчитывает из первого числа 1 до тех пор, пока не дойдёт до 0. А потом складывает количество второго числа. Теперь требуется сделать тоже самое на деление (использовать можно тока + и -), надеюсь вы мне сможите помочь.
Отвечает: Sergey A. Wedensky
Здравствуйте, Леонид Игнатьевич!
Ну, например, так: код в приложении. Случай деления на 0 генерирует исключение char*, при необходимости обработайте сами как нужно.
Приложение:
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 27.10.2008, 14:16
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148625 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Виктор Пырлик
Здравствуйте, Корыгин Леонид Игнатьевич!
Вот немного подправленная Ваша функция и функция деления. там и рекурсия как у Вас и цикл
Код:
#include <iostream> #include <cassert> using namespace std;
/*рекурсивыее функции*/ int multr (int a, int b) {
return (a < 0) ? -multr(-a,b):((a==0) ? 0 : multr(a-1,b) +b); } //----- int devr(int a, int b) { static i = 0; if(b == 0) return 0; return (a < 0) ? -devr(-a,b):((b < 0) ? -devr(a,-b):((a < abs(b)) ? i : (i++,devr(a-abs(b),b)))); }
/* функции с циклами*/ int mult (int a, int b) { int res = 0; for (int i = 1; i <= abs(b); i++) res += abs(a); return (((a<0) && (b<0)) || ((a>0) && (b &
gt;0)))?res:-res; } //----- int dev (int a, int b) { int z = (((a<0) && (b<0)) || ((a>0) && (b >0)))?1:-1; a = abs(a); b = abs(b); if(a < b) return 0; int i = 1; while(a >=b) { i += (a -= b)>= b; } return (z>0)?i:-i; } /*главная функция*/ int main() { int a; int b; cout << "multiplying"<<endl; cout << "a: "; cin >> a;
Отвечает: Sergey A. Wedensky
Здравствуйте, Олег Юрьевич!
А что значит "имя"? Если Вы имеете в виду заголовок окна, то окно можно найти, например, при помощи FindWindow по имени класса или текущему заголовку. Затем, поменять заголовок окну с известным дескриптором можно при помощи SetWindowText. Пример в приложении.
Приложение:
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 27.10.2008, 15:33
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148642 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 148.650
Что такое l-value в С++? Расскажите пожалуйста поподробнее.
Отправлен: 27.10.2008, 15:24
Вопрос задал: Leviaphan (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Sergey A. Wedensky
Здравствуйте, Leviaphan!
Попросту говоря, l-value - это то, чему можно присваивать значение, т.е. выражение, которое может быть расположено слева от оператора присваивания (=). На самом деле это не совсем так, но для понимания проще всего.
Формально, l-value - выражение типа, отличного от void, ссылающееся на область памяти. При этом l-value может быть и не модифицируемым. Например, переменная, объявленная как const является l-value, однако ее значение нельзя изменять:
const int i = 0; i
= 1; // error C3892: 'i' : you cannot assign to a variable that is const
l-value может быть: - идентификатор переменной любого из следующих типов: - целочисленного - с плавающей точкой - указатель - структура (struct) - или союз (union) - выражение с индексом ([ ]) не являющееся само массивом - обращение к члену (–> или .) - выражение взятия значения (*) не являющееся массивом - любое l-value в скобка
х - любое l-value со спецификатором const (немодифицируемое l-value)
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 27.10.2008, 15:47
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148650 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 148.683
Здравствуйте! Помогите пожалуйста! Срочно нужно сделать 2е задачки : 1)Дан линейный, однонаправленный список. Написать функцию, которая удваивает каждый элемент списка 2)Дана строка с текстом, вывести кол-во слов в этой строке. Буду безгранично благодарен. PS Если можно, напишите самый простенький вариант...
Отправлен: 27.10.2008, 18:58
Вопрос задал: VetalO (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Verena
Здравствуйте, VetalO! Задачи очень простые. В первой - элементарная работа со списком, во второй - работа с символами строки. Во втором решении я не использовала динамическую память, строка статическая. Вот решение второй задачи:
Код:
#include <conio.h> #include <string.h> #include
<iostream> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) { char str [256]; int k = 0, i = 0; //Счётчики cout << "Vvedite stroku (ne bolee 255 simvolov) "; gets (str); //Считываем строку int l = strlen(str); //Длина строки while (i<l) { //Пока не конец строки while (i<l && str[i]==' ') i++; //Пока идёт пробелы, пропускаем if (i<l) k++; //Если пробелы конч
ились, а строка - нет, наращиваем счётчик while (i<l && str[i]!=' ') i++; //Идём до первого пробела, т.е. до конца слова } cout << "Chislo slov: " << k; _getch(); return 0; }
Решение первой задачи в приложении. Всё должно быть ясно из комментариев. Удачи!
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Практикант)
Ответ отправлен: 28.10.2008, 14:55
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148683 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 148.697
Здравствуйте Эксперты! Помогите пожалуйста разобраться с задачей. Дана целочисленная прямоугольная матрица. Уплотнить матрицу, удалив из нее все строки, содержащие хотябы один нуль. Удалить их нужно таким образом: на место строк с нулем нужно снизу по порядку поднять и поставить строки без нулей. Я смог написать создание матрици и поиск строк с нулем, а вот с их передвиганием запутался. Помогите пожалуйста дописать программу. Код в приложении.
Приложение:
Отправлен: 27.10.2008, 20:24
Вопрос задал: Andryuha (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 14)
Отвечает: realbustard
Здравствуйте, Andryuha! Данная задача решена в вопросе 147893. Решение приводится с использованием динамического и статического массива. Просто раскомментируйте нужный вариант. Код в приложении. Удачи!
Приложение:
--------- Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: 6-ой класс)
Ответ отправлен: 28.10.2008, 00:26
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 148697 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 3 Комментарий оценки: Спасибо за помощь, но дело в том, что мне не нужно создавать второй массив. Нужно передвинуть строки этого же массива вверх, на место строк с нулем. Поэтому этот вариант мне не подходит.
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.