Тема: рядки
допоможіть с 7 варінтом жодних ідей
ввести рядки s1 та s2 другу половину s2 зєднати з першою половиною s1 в отриманому рядку порахувати кількість 0
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → рядки
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
допоможіть с 7 варінтом жодних ідей
ввести рядки s1 та s2 другу половину s2 зєднати з першою половиною s1 в отриманому рядку порахувати кількість 0
допоможіть с 7 варінтом жодних ідей
Потрібно с чи с++ ?
Обмеження у довжині рядків якісь мають бути ?
А який у вас рівень знання С/С++ на даний момент, reywwe95?
Від цього залежить, яким методом ліпше реалізувати задачу.
З.І: мається на увазі: чи вчили string-клас, чи є темним лісом функції strcpy(), strcat() і т.п., тощо.
#include "conio.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s, tmp, tmp2;
char s1[255], s2[255];
int nulls = 0;
cout<<"Vvedite s1: ";
cin.getline(s1,255);
cout<<"Vvedite s2: ";
cin.getline(s2,255);
s = s1; // Переводим char[] в строчку
tmp = s.substr(0, s.length()/2); // Обрезаем вторую часть строки s1
s = s2; // Переводим char[] в строчку
tmp2 = s.substr(s.length()/2, s.find("\n")); // Обрезаем первую часть строки s2
s = tmp + tmp2; // Соединяем две части
for (int i = 0; i < s.length()-1; i++) // Цикл для каждого символа в получившейся строке
{
if (s[i] == '0') { nulls++; } // Если попавшийся символ 0, то инкременируем переменную nulls
}
strcpy(s1, s.c_str()); // Переводим из строки в char[]
cout<<"\n--------------------------------\n";
cout<<"Poluchennaya stroka: "<<s1<<"\n";
cout<<"Kolichestvo nuley: "<<nulls;
getch();
return 0;
}
мучився довго може кому знадобиться
Вітаю - ви демонструєте добрі показники.
Якщо цікаво - от ще можливі шляхи:
s = s1; // Переводим char[] в строчку
tmp = s.substr(0, s.length()/2);
s = s2; // Переводим char[] в строчку
tmp += s.substr(s.length()/2, s.find("\n"));
Або взагалі закрутити хіромантію:
string s1, s2;
std::getline(cin, s1);
std::getline(cin, s2);
s1 = s1.substr(0, s1.length()/2) + s2.substr(s2.length()/2);
cout<<s1<<endl;
Для підрахування кількості нулів у рядку можна також застосувати можливості STL:
/*...*/
#include <algorithm>
int main()
{
string s1, s2;
/*...*/
cout<<"Count of zero: "<<std::count(s1.begin(), s1.end(), '0')<<endl;
/*...*/
return 0;
}
чесно кажучи я не розумію в чому така велика проблема)
C/C++ не знаю. От придклад на тому що знаю: (правда троха пізно... вже є відповіді по темі)
(можливо десь треба було поставити +1 чи -1)
Пайтон:
a = str(raw_input())
b = str(raw_input())
c = b[len(b)/2:] + a[:len(a)/2]
print c
print c.count('0')
Паскаль/Делфі:
function ZeroCount(a, b: string): integer;
var
c: string;
i: Integer;
begin
c := Copy(b, 1, Length(a) div 2)
+ Copy(a, Length(a) div 2, MaxInt);
Result := 0;
for i := 1 to Length(c) -1 do
if c[i] = '0' then
Inc(Result);
end;
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися