powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Комментарии...
21 сообщений из 21, страница 1 из 1
Комментарии...
    #34461470
Homoerro number 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Срочно нужен подробный коммент к каждой строчке данной программы(тема:Строки), очень срочно!
помогите, пожалуйста, заранее огромный респект и чловеческое спасибо!


Сами задания:
1)Дана последовательность слов. Напечатать те слова последовательности, которые отличны от последнего слова и удовлетворяют следующему свойству: слово симметрично.
2)В заданной строке удалить все символы двоеточие (:) и подсчитать количество удаленных символов.
3)Программа. Дана непустая последовательность непустых слов из латинских букв; соседние слова отделены друг от друга запятой, за последним словом—точка. Определить количество слов, которые оканчиваются буквой w;

Сама программа:

#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
char *str;
int choice;

void first(char *str)
{
int i,az,j,alpha,palin,k,in;
char *sl,*lw;
sl=(char*)calloc(10,1);
lw=(char*)calloc(10,1);
az=0;
for (i=strlen(str);i>=0;i--)
if (str ==' ') {for (j=i+1;j<=strlen(str);j++)
lw[j-i-1]=str[j];break;}
lw[j-i]='\0';

for (j=az;j<=i;j++) sl[j-az]=str[j];
for (i=0;i<=strlen(str);i++)
if (str==' ' || i==strlen(str)-1)
{
sl[0]='\0';
for (j=az;j<=i;j++) sl[j-az]=str[j];
sl[j-az-1]='\0';
palin=0;
in=0;
for (k=strlen(sl)-1;k>=0;k--)
{if (sl[in]!=sl[k]) palin=1;in++;}
if (palin==0 && strcmp(sl,lw)!=0) cout<<sl<<endl;
az=i+1;
}
free(sl);
}

void second(char *str)
{
int i,j,sch;
sch=0;
for (i=0;i<=strlen(str);i++)
if (str==':') {for (j=i;j<strlen(str);j++) str[j]=str[j+1];i--;sch++;}
cout<<str<<endl;
cout<<sch<<endl;
}

void third(char *str)
{
int i,sch;
sch=0;
for (i=0;i<strlen(str)-1;i++)
{
if ((str=='w' && str[i+1]==',') || (str=='w' && str[i+1]=='.')) sch++;
}
cout<<sch<<endl;
}
int main()
{
while (choice!=4)
{
cout<<"1 - Решить 1 задачу"<<endl;
cout<<"2 - Решить 2 задачу"<<endl;
cout<<"3 - Решить 3 задачу"<<endl;
cout<<"4 - ‚Выход"<<endl;
cin>>choice;
str=(char*)calloc(255,sizeof(char));
if (choice!=4){
cout<<"‚ўҐ¤ЁвҐ бва®Єг\n";
gets(str); }
if (choice==1) first(str);
if (choice==2) second(str);
if (choice==3) third(str);
free(str);}
return 0;}




p.s. Help good peoples!!!!!!!!!
...
Рейтинг: 0 / 0
Комментарии...
    #34464644
Homoerro number 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХЭЛП МИ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
Комментарии...
    #34464645
Homoerro number 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень надо.
...
Рейтинг: 0 / 0
Комментарии...
    #34464646
Homoerro number 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу помощи у вас!
...
Рейтинг: 0 / 0
Комментарии...
    #34464699
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вам сюда
...
Рейтинг: 0 / 0
Комментарии...
    #34465959
Фотография FasterHarder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
I started in 1983, in 2007 i still on a case!

Хотел разобраться с твоим кодом ибо енто интересно, но некоторые строки сам не понимаю. Начал делать, до ума не довел, может тебе частично поможет мои комменты. А вообще советую сделать так, встаешь на первую строку и если встречаешь непонятную или незнакомую функцию лезешь в гуглю и допустим набираешь "описание функции malloc в С" получаешь 500 документов и начинаешь разьираться, не спорю долго, но если сам разберешься вырастешь как программист однозачно. Я сам практически незнаю ни С, ни С++ и приходится разбираться с кодом именно так.
Делай переменные более мнемоческие, а не n, num, sum и т д. Если сделал некоторые комменты неправильно, думаю меня поправят.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
//========================================================
// принято соглашение, комментарии стоит выше комментируемой строк( и )
// для обработки потоков ввода - вывода
#include<iostream.h>
// подключаешь класс типа string, для работы со строками
#include<string.h>
// класс для динамического распределения памяти
#include<stdlib.h>
// для работы с потоками
#include<stdio.h>
char *str;
int choice;
//=========================================================================
void first(char *str)
{
int i,az,j,alpha,palin,k,in;
char *sl,*lw;
// выделяешь 10 объектов по 1 байту ( лучше new )
sl=(char*)calloc( 10 , 1 );
lw=(char*)calloc( 10 , 1 );
az= 0 ;
// цикл, проходящий по всей строке, находящейся в параметре str от конца строки до 
// начала
for (i=strlen(str);i>= 0 ;i--)
if (str==' ')
{
	for (j=i+ 1 ;j<=strlen(str);j++)
		lw[j-i- 1 ]=str[j];
	break;
}
// добавляем нуль символ, который завершает каждую строку в С++, насчет С незнаю 
lw[j-i]='\0';

for (j=az;j<=i;j++) sl[j-az]=str[j];
for (i= 0 ;i<=strlen(str);i++)
if (str==' ' || i==strlen(str)- 1 )
{
sl[ 0 ]='\0';
for (j=az;j<=i;j++) sl[j-az]=str[j];
sl[j-az- 1 ]='\0';
palin= 0 ;
in= 0 ;
for (k=strlen(sl)- 1 ;k>= 0 ;k--)
{if (sl[in]!=sl[k]) palin= 1 ;in++;}
if (palin== 0  && strcmp(sl,lw)!= 0 ) cout<<sl<<endl;
az=i+ 1 ;
}
free(sl);
}
//=========================================================================
void second(char *str)
{
int i,j,sch;
sch= 0 ;
for (i= 0 ;i<=strlen(str);i++)
if (str==':') {for (j=i;j<strlen(str);j++) str[j]=str[j+ 1 ];i--;sch++;}
cout<<str<<endl;
cout<<sch<<endl;
}
//=========================================================================
void third(char *str)
{
int i,sch;
sch= 0 ;
for (i= 0 ;i<strlen(str)- 1 ;i++)
{
if ((str=='w' && str[i+ 1 ]==',') || (str=='w' && str[i+ 1 ]=='.')) sch++;
}
cout<<sch<<endl;
}
//=========================================================================
int main()
{
// начинаем цикл, продолжающийся до тех пор, пока не будет введена 4 - ка
while (choice!= 4 )
{
cout<<"1 - Решить 1 задачу"<<endl;
cout<<"2 - Решить 2 задачу"<<endl;
cout<<"3 - Решить 3 задачу"<<endl;
cout<<"4 - ‚Выход"<<endl;
// считываем введеное значение в переменную ( необходмио для выхода из цикла ) 
cin>>choice;
// выделяем для размещения 255 объектов указанного размера ( типа char )
// лучше использовать new и delete, а не calloc и free
str=(char*)calloc( 255 ,sizeof(char));
if (choice!= 4 ){
cout<<"‚ўҐ¤ЁвҐ бва®Єг\n";
// Функция предназначена для ввода строки символов из файла stdin. 
// Возвращает str если чтение прошло успешно и NULL в обратном случае
// одна из наиболее опасных функций с своем классе, т к можно затереть нужную память
// нет проверки на диапазон
gets(str); }
// начинаем управляющую конструкцию и вызываем соот = щую функцию в зависимости 
// от choice ( имхо, я бы сделал switch )
if (choice== 1 ) first(str);
if (choice== 2 ) second(str);
if (choice== 3 ) third(str);
// освобождаем память ( лучше delete )
free(str);}
// Все прошло удачно!
return  0 ;}
//=========================================================================
...
Рейтинг: 0 / 0
Комментарии...
    #34468206
Homoerro number 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FasterHarder, ема спасибо тебе огромное, от души помог мне разобраться со строками.
Респект и уважуха!!!
...
Рейтинг: 0 / 0
Комментарии...
    #34470718
Homoerro number 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, помогите плиз с другими комментами...
...
Рейтинг: 0 / 0
Комментарии...
    #34470745
Homoerro number 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, а с другими комментами, кто поможет разобраться?
...
Рейтинг: 0 / 0
Комментарии...
    #34470818
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homoerro number 2Люди, а с другими комментами, кто поможет разобраться?
Я конечно, дико извиняюсь, но за это время можно было бы прочесть ссылку, которую дал blinded и разобраться самому.
...
Рейтинг: 0 / 0
Комментарии...
    #34471179
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему вы считаете, что посетители форума будут тратить свое время на это? Обратитесь в форум о работе, сделайте предложение и договоритесь о цене.
...
Рейтинг: 0 / 0
Комментарии...
    #34471360
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FasterHarder пишет:
> // для обработки потоков ввода - вывода
> #include<iostream.h>
Для потоков ввода-вывода было бы
#include <iostream>
Ну ладно, будем считать что старый компилятор.

> // подключаешь класс типа string, для работы со строками
> #include<string.h>
Э, ты где такой класс видал ?

> // класс для динамического распределения памяти
> #include<stdlib.h>

Ага, сказки не рассказывай. Это - просто один из заголовков CRTL.

> // для работы с потоками
> #include <stdio.h>

Уже же был для работы с потоками, ты уж определился бы сначала ....

> char *str;
> int choice;
> //=========================================================================
> void first(char *str)
> {
> int i,az,j,alpha,palin,k,in;
> char *sl,*lw;
> // выделяешь 10 объектов по 1 байту ( лучше new )
> sl=(char*)calloc(*10*,*1*);

"объекты" по одному байту и называются "байты", не так ли ?

> lw=(char*)calloc(*10*,*1*);
> az=*0*;
> // цикл, проходящий по всей строке, находящейся в параметре str от конца строки до
> // начала
> for (i=strlen(str);i>=*0*;i--)
> if (str==' ')
> {
> for (j=i+*1*;j<=strlen(str);j++)
> lw[j-i-*1*]=str[j];
> break;
> }

> // добавляем нуль символ, который завершает каждую строку в С++, насчет С незнаю
> lw[j-i]='\0';



>
> for (j=az;j<=i;j++) sl[j-az]=str[j];
> for (i=*0*;i<=strlen(str);i++)
> if (str==' ' || i==strlen(str)-*1*)
> {
> sl[*0*]='\0';
> for (j=az;j<=i;j++) sl[j-az]=str[j];
> sl[j-az-*1*]='\0';
> palin=*0*;
> in=*0*;
> for (k=strlen(sl)-*1*;k>=*0*;k--)
> {if (sl[in]!=sl[k]) palin=*1*;in++;}
> if (palin==*0* && strcmp(sl,lw)!=*0*) cout<<sl<<endl;
> az=i+*1*;
> }
> free(sl);


Э, а где же free(lw) ?

> //=========================================================================
> int main()
> {
> // начинаем цикл, продолжающийся до тех пор, пока не будет введена 4 - ка
Да, вероятность того, что с подачи там будет четверка действительно
ничножно мала, поэтому зачем тратить лишние усилия на инициализацию
переменной.
> while (choice!=*4*)
А циклы с постусловием придумал проклятый Вирт, поэтому мы их применять
не будем, абсолютна сагласин с афтарам !!
> {
> cout<<"1 - Решить 1 задачу"<<endl;
> cout<<"2 - Решить 2 задачу"<<endl;
> cout<<"3 - Решить 3 задачу"<<endl;
> cout<<"4 - ‚Выход"<<endl;
> // считываем введеное значение в переменную ( необходмио для выхода из цикла )
> cin>>choice;

> // выделяем для размещения 255 объектов указанного размера ( типа char )
> // лучше использовать new и delete, а не calloc и free
Откуда такая уверенность, что new и delete лучше чем calloc и free ?
Мне бы такую ...
> str=(char*)calloc(*255*,sizeof(char));

> if (choice!=*4*){
> cout<<"‚ўҐ¤ЁвҐ бва®Єг\n";

А почему ничего не сказано о этих симпатичных сикаряшках ?
Например: "они создают эффект волны на экране, вызывая у пользователя
приятные ассоциации с морем и настраивая пользователя на доброжелательный
лад".

> // Функция предназначена для ввода строки символов из файла stdin.
> // Возвращает str если чтение прошло успешно и NULL в обратном случае
> // одна из наиболее опасных функций с своем классе, т к можно затереть нужную память
> // нет проверки на диапазон
Знали б вы сколько таких опасных функций в CRTL ...
> gets(str); }

> // начинаем управляющую конструкцию и вызываем соот = щую функцию в зависимости
> // от choice ( имхо, я бы сделал switch )
Но ты до конца таки не уверен, сделал бы ты свитч или нет, так ?

> if (choice==*1*) first(str);
> if (choice==*2*) second(str);
> if (choice==*3*) third(str);

> // освобождаем память ( лучше delete )
> free(str);}
> // Все прошло удачно!

Не думаю.
> return *0*;}

В общем, товарисч оказал я так понимаю медвежью услугу.

Кстати, о задачах. Задача номер одын не требует выделения дополнительной памяти.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Комментарии...
    #34471383
dr-Wicked
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто скажет, на каком языке это написано.
Regards
dr-Wicked
...
Рейтинг: 0 / 0
Комментарии...
    #34471390
Фотография FasterHarder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
I started in 1983, in 2007 i still on a case!
имхо, если судить по заголовочным файлам то на чистых сях.
...
Рейтинг: 0 / 0
Комментарии...
    #34471417
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FasterHarderимхо, если судить по заголовочным файлам то на чистых сях.Это написано на студенческом-недоученом языке.
...
Рейтинг: 0 / 0
Комментарии...
    #34471560
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем нужны комментарии типа
Код: plaintext
1.
// выделяешь 10 объектов по 1 байту ( лучше new )
sl=(char*)calloc( 10 , 1 );
это и так понятно

В комментарий нужно писать не что ты делаешь, а для чего ты это делаешь.
Также комментарий нужен в начале программы - автор, версия, назначение программы.
Нужно описывать назначение функций, а лучше и переменных.
Нужно описывать логику работы и не очевидные моменты.

Судя по
Код: plaintext
1.
cout<<str<<endl;
cout<<sch<<endl;
Это С++.
...
Рейтинг: 0 / 0
Комментарии...
    #34471658
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dr-WickedА кто скажет, на каком языке это написано.
Regards
dr-Wicked

Си и два плюса. Но судя по отзывам - два минуса. ;)
...
Рейтинг: 0 / 0
Комментарии...
    #34473942
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FasterHarder
Код: plaintext
I started in 1983, in 2007 i still on a case!
имхо, если судить по заголовочным файлам то на чистых сях.
Половина из C, половина из C++.
Из C++:
Код: plaintext
1.
cout<<"1 - Решить 1 задачу"<<endl;
(кстати, помнится в винде быль большие проблемы с перекодировкой русских букв. В общем, под WinXP могут быть кракозяблики).

Из C:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
void first(char *str)
{
int i,az,j,alpha,palin,k,in;
char *sl,*lw;
sl=(char*)calloc( 10 , 1 );
lw=(char*)calloc( 10 , 1 );
az= 0 ;
for (i=strlen(str);i>= 0 ;i--)
Так как все обьявления переменных свалены в начало, и нет стандартного
"for (int i = ".

Вот это вообще сплошной глюк:
Код: plaintext
1.
2.
3.
for (i=strlen(str);i>= 0 ;i--)
if (str==' ') {for (j=i+ 1 ;j<=strlen(str);j++)
lw[j-i- 1 ]=str[j];break;}
Особенно радует "if (str==' ')" - компилится не будет, и явно из паскаля пришло, плюс с кавычками путаницы.
break тоже неясно куда относится, к первому for или ко второму (если предположить что там {} пропущены). Конечно, можно по алгоритму восстановить, но мне лень...
...
Рейтинг: 0 / 0
Комментарии...
    #34474022
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> if (str==' ') {for (j=i+*1*;j<=strlen(str);j++)
> lw[j-i-*1*]=str[j];break;}
>
> Особенно радует "if (str==' ')" - компилится не будет, и явно из паскаля
> пришло, плюс с кавычками путаницы.

Почему не будет ? Два числа всегда сравнить можно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Комментарии...
    #34474025
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhСи и два плюса. Но судя по отзывам - два минуса. ;)Ну не надо. На С-- это уж тем более не похоже.

ErVОсобенно радует "if (str==' ')" - компилится не будет, и явно из паскаля пришло, плюс с кавычками путаницы.Ну почему ж не будет компилиться? Это запросто откомилируется. Ты всегда можешь сравнить значение указателя с целым числом. В данном случае конечно, автор явно хотел не этого, но это уже другой вопрос :)

ErVbreak тоже неясно куда относится, к первому for или ко второму (если предположить что там {} пропущены). Конечно, можно по алгоритму восстановить, но мне лень...Ну зачем же алгоритм мучать, он там и так уже замучаный. А брек к внешнему циклу относится. По синтаксису видно.
...
Рейтинг: 0 / 0
Комментарии...
    #34474151
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНу почему ж не будет компилиться? Это запросто откомилируется. Ты всегда можешь сравнить значение указателя с целым числом. В данном случае конечно, автор явно хотел не этого, но это уже другой вопрос :)
А, пардон, упустил дейстивтельно. Спасибо.

White Owl
Ну зачем же алгоритм мучать, он там и так уже замучаный. А брек к внешнему циклу относится. По синтаксису видно.
По синтаксису видно, но там форматирование такое. что у меня сомнения по поводу того, что брейк дествительно хотели для внешнего цикла сделать.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Комментарии...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]