Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389

Открыть новую тему     Написать ответ в эту тему

de_lirium

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тема создана для накопления реализаций типовых задач на С/С++.
Прежде чем публиковать своё условие задачи, убедитесь, что её решение (или решение очень похожей задачи) в теме и полезных ссылках отсутствует (например воспользуйтесь ссылкой Версия для печати вверху справа страницы и поищите в ней).
Постарайтесь как можно полнее сформулировать постановку задачи (чтобы тому, кто решит вам помочь, не приходилось тратить своё время ещё и на выпытывание у вас деталей условия; если вам не понятно, как это сделать - постарайтесь представить, что эта программа у вас уже есть, и "поработать" с ней - вот все детали, которые при этом придут в голову, с большой вероятностью должны быть в условии задачи).
Если вы уже пытались сделать эту задачу, но у вас не получилось и вы хотите довести дело до конца - обязательно выложите результат своей попытки, предварительно убедившись, что ваш код компилируется.

Вопросы по технологиям лучше задавать тут.

Прежде чем просить помощи в задании...
Если позарез надо и вы даже готовы заплатить

Если вам вдруг не отвечают или ответ вас не устраивает, и вообще полезно прочитать всем спрашивающим.

Полезные ссылки:
 
C++: в том числе и решения задач (eng)
задачи на C
 
Проверить свою задачку можно:
Онлайн-компилятором Visual C++
godbolt
Wandbox
Одним из онлайн-компиляторов на ideone.com

Всего записей: 28 | Зарегистр. 23-07-2004 | Отправлено: 02:14 20-12-2004 | Исправлено: Daniyar91, 19:25 27-09-2017
Dukaliss

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот такое дело, сделал прогу работает как надо, только вот не думаю чт опримут с sztok может кто поможет как тут без sztok сделать =(  
Задание вы можете увидеть на странице 147 в верху самом, только надо не так как делал groomly а просто заменить сзток и сделать без него.

Код:
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>  
void main()
{
    int a,i=0, j=0, size=0, k=0, s=0;
    const char test[]="БВГДЖЗЙКЛМНПРСТФХЦЧШЩбвгджзйклмнпрстфхцчшщ";
char tokens[] = ";,:.- )(\t\n\"";
char * szTok, *szText, tmp, *sort;
FILE * f;
    f=fopen("1.txt", "r");
    while(!feof(f))
    {
        fscanf(f,"%c", &tmp);
    i++;  
    }size=i-1;
    szText = (char*)malloc(size*sizeof(char));
    sort = (char*)malloc(size*sizeof(char));
    strcpy(sort, "");
    i=0;fseek(f,0,SEEK_SET);
    while(!feof(f))
    {
        fscanf(f,"%c", &szText[i]);
    i++;  
    }
    szText[size]='\0';
    fclose(f);size=0;
    szTok = strtok(szText, tokens);
while ( szTok != NULL )
{    a=0;i=0;j=0;
    a=strlen(szTok);
     while(j<42)
     {
     if( *(szTok) == test[j] )
     {    while(i<42){
          if ( *(szTok+a-1) == test[i])
          {  
             strcat(sort, szTok);
             strcat(sort, ", ");
             size=a+size+2; k++;
          }
          i++;       }
     }j++;
     }
     szTok = strtok( NULL, tokens );
}
FILE *f2;
f2=fopen("2.txt", "rwb");
 
    fwrite(sort, sizeof(char), size, f2);
    
    while(!feof(f))
    {
    fread(sort,sizeof(char),size,f2);
    }
    for(i=0;i<size;i++){
        printf("%c", *(sort+i));}
    fclose(f2);
 
}

и еще почему тут  

Код:
while(!feof(f))
    {
        fscanf(f,"%c", &tmp);
    i++;  
    }size=i-1;
 
приходиться писать size=i-1 ? еси без него вылезает какой то левый символ, з.Ы это я читаю файл что бы знать кол-во элементов и динамически выделить память. незнаю че -1...
З.Ы.ы у меня на выходе должен быть типимизированый файл правильно ли я сделал?

Всего записей: 12 | Зарегистр. 23-12-2007 | Отправлено: 15:36 08-01-2008
Death13

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Люди, помогите, пожалуйста сделать пару задач:
1. Дан массив целых чисел из 10 элементов. Элементы генерируются случайным образом в диапазоне от -100 до 100.  
а). Подсчитать количество элементов, стоящих между первым и последним отрицательными элементами.  
б). Подсчитать процент однозначных и двузначных чисел.  
в). Найти самую длинную последовательность одинаковых чисел, отобразить найденную цепочку чисел и позицию, с которой цепочка начинается.  
 2. Создать двумерный массив 5х5 элементов и заполнить случайными числами от 10 до 99.
а). Подсчитать среднее арифметическое элементов массива.  
б). Найти сумму элементов по каждому столбцу и отобразить максимальную.  
в). Осуществить циклический сдвиг строк вниз (1-я строка становится на место 2-й, ..., 5-я на место 1-й).  
г).Осуществить циклический сдвиг столбцов влево (1-й столбец становится на место 5-го, ..., 5-й на место 4-го).
Зарнее спасибо! А то и не знаю что делать...

Всего записей: 16 | Зарегистр. 26-11-2007 | Отправлено: 16:33 08-01-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Qraizer
да, я понял...
это (примитивно) как если бы я ограничивался использованием спарки IF & GOTO и пренебрегал другими выразительными и мощными средствами языка, появившимися позднее...
всё верно, согласен безоговорочно со всем...
огромное спасибо за цикл лекций aka проведённый ликбез...

Всего записей: 24037 | Зарегистр. 06-12-2002 | Отправлено: 16:34 08-01-2008
Invinsible

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да если бы было время изучать и читать все это то этим бы и занялся, а так завтра нада уже сдавать отчет, так что очень прошу помочь.
 
Написать набор функций, которая обеспечивает роботу с очередью: добавление элементов, подсчет количества элементов в очереди, вывод элементов очереди
 
Спасибо!

Всего записей: 10 | Зарегистр. 01-12-2007 | Отправлено: 19:25 08-01-2008
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death13

Цитата:
1. Дан массив целых чисел из 10 элементов. Элементы генерируются случайным образом в диапазоне от -100 до 100.  

Подробнее...
 

Цитата:
2. Создать двумерный массив 5х5 элементов и заполнить случайными числами от 10 до 99.  


Код:
    int m[5][5];  
    const size_t N_elems = sizeof(m) / sizeof(m[0][0]);
/*
 а). Подсчитать среднее арифметическое элементов массива.  
*/        
    int sum = std::accumulate(&m[0][0], &m[0][0] + N_elems, 0);
    double avg = static_cast<double>(sum) / N_elems;  
/*
 в). Осуществить циклический сдвиг строк вниз (1-я строка становится на место 2-й, ..., 5-я на место 1-й).  
г).Осуществить циклический сдвиг столбцов влево (1-й столбец становится на место 5-го, ..., 5-й на место 4-го).  
*/
а это лень делать, возни много
 

 
Добавлено:
Invinsible
извини чувак, но у меня хватило сил только на одного из вас, и это был Death13 Ж)

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 20:14 08-01-2008 | Исправлено: distance, 20:23 08-01-2008
Kerdan

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
НАрод подскажите  как осуществить проверку на монотонность?
 
 
Добавлено:
ПОЖАЛУЙСТА ОЧ СИЛЬНО ТРЕБУЕТСЯ!!Без этой функции не смогу запустить прогу
 
 
Добавлено:
#include<stdio.h>
#include<math.h>
int main ()
{
int j,m,i,n,k,b,x,y;
int a[255];
printf("\n ‚ўҐ¤ЁвҐ §- зҐ-ЁҐ Є®«ЁзҐбвў  в®зҐЄ:\n");
scanf("%d " ,&n);
for(j=0;j<n;j++)
a[j];
for(m=2;m<n-1)
    {
    for(i=1;i<n-3)
        {
        if(i+1+m<=n)
        k[i]=(y[i+1]-y[i])/(x[i+1]-x[i]);
        b[i]=(y[i]*x[i+1]-y[i+1]*x[i])/(x[i+1]-x[i]);
        k[i+m]=(y[i+1+m]-y[i+m])/(x[i+1+m]-x[i+m]);
        b[i+n]=(y[i+m]*x[i+1+m]-y[i+1+m]*x[i+m])/(x[i+1+m]-x[i+m]);
        x=(b[i]-b[i+m])/(k[i+m]-k[i]);
        y=(k[i+m]*b[i]-k[i]*b[i+m])/(k[i+m]-k[i]);
        }
    }
 
 
{
float s=0;
if((x[i]<=x<=x[i+1])||(x[i+1]<=x<=x[i]))
if((x[i+m]<=x<=x[i+m+1])||(x[i+m+1]<=x<=x[i+m]))
if((y[i]<=y<=y[i+1])||(y[i+1]<=y<=y[i]))
if((y[i+m]<=y<=y[i+m+1])||(y[i+m+1]<=y<=y[i+m]))
s=1/2*fabs((x[i]-x[i+1])*(y[i]+y[i+1])+(x[i+1]-x[i+1+m])*(y[i+1]+y[i+1+m]));
else printf("\n ‚ўҐ¤Ґ--лҐ в®зЄЁ -Ґ ®Ўа §гов ¬-®Ј®гЈ®«м-ЁЄ:\n");
 
Если у кого нибудь есть желание помогите отладить

Всего записей: 10 | Зарегистр. 18-12-2007 | Отправлено: 21:18 08-01-2008
veronica b



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Death13

Цитата:
2. Создать двумерный массив 5х5 элементов и заполнить случайными числами от 10 до 99.
.....
 

Решил вам вторую задачу, певая простая.

Код:
 
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
#define SIZE 5
 
int source[SIZE + 1][SIZE + 1];
 
int main()
{
    long total = 0L;
    int  ii, jj, kk;
    int  sum, min = 5000;
 
    randomize();
 
    for(ii = 0; ii < SIZE; ii++)
        for(jj = 0; jj < SIZE; jj++)
            source[ii][jj] = rand()%1000;
 
    printf("Generated matrix:\n\n");
 
    for(ii = 0; ii < SIZE; ii++)
    {
        for(jj = 0; jj < SIZE; jj++)
        {
            printf("%5d", kk = source[ii][jj]);
 
            total += kk;
        }
 
        printf("\n");
    }
 
    printf("\nAverage: %f\n", ((float)total)/(SIZE*SIZE));
 
    for(ii = 0; ii < SIZE; ii++)
    {
        sum = 0;
 
        for(jj = 0; jj < SIZE; jj++)
             sum += source[jj][ii];
 
        min = min < sum ? min : sum;
    }
 
    printf("\nMinium: %d\n", min);
 
    for(ii = 0; ii < SIZE; ii++)
        source[5][ii] = source[0][ii];
 
    printf("\nShift low matrix:\n\n");
 
    for(ii = 0; ii < SIZE; ii++)
    {
        for(jj = 0; jj < SIZE; jj++)
            printf("%5d", source[ii + 1][jj]);
 
        printf("\n");
    }
 
    for(ii = 0; ii < SIZE; ii++)
        source[ii][5] = source[ii][0];
 
    printf("\nShift right matrix:\n\n");
 
    for(ii = 0; ii < SIZE; ii++)
    {
        for(jj = 0; jj < SIZE; jj++)
            printf("%5d", source[ii][jj + 1]);
 
        printf("\n");
    }
 
    return 0;
}
 

Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 21:26 08-01-2008 | Исправлено: veronica b, 08:27 09-01-2008
Kerdan

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#include<stdio.h>
#include<math.h>
int main ()
{
int j,m,i,n,k,b,x,y;
int a[255];
printf("\n ‚ўҐ¤ЁвҐ §- зҐ-ЁҐ Є®«ЁзҐбвў  в®зҐЄ:\n");
scanf("%d " ,&n);
for(j=0;j<n;j++)
a[j];
for(m=2;m<n-1)
    {
    for(i=1;i<n-3)
        {
        if(i+1+m<=n)
        k[i]=(y[i+1]-y[i])/(x[i+1]-x[i]);
        b[i]=(y[i]*x[i+1]-y[i+1]*x[i])/(x[i+1]-x[i]);
        k[i+m]=(y[i+1+m]-y[i+m])/(x[i+1+m]-x[i+m]);
        b[i+n]=(y[i+m]*x[i+1+m]-y[i+1+m]*x[i+m])/(x[i+1+m]-x[i+m]);
        x=(b[i]-b[i+m])/(k[i+m]-k[i]);
        y=(k[i+m]*b[i]-k[i]*b[i+m])/(k[i+m]-k[i]);
        }
    }
 
 
{
float s=0;
if((x[i]<=x<=x[i+1])||(x[i+1]<=x<=x[i]))
if((x[i+m]<=x<=x[i+m+1])||(x[i+m+1]<=x<=x[i+m]))
if((y[i]<=y<=y[i+1])||(y[i+1]<=y<=y[i]))
if((y[i+m]<=y<=y[i+m+1])||(y[i+m+1]<=y<=y[i+m]))
s=1/2*fabs((x[i]-x[i+1])*(y[i]+y[i+1])+(x[i+1]-x[i+1+m])*(y[i+1]+y[i+1+m]));
else printf("\n ‚ўҐ¤Ґ--лҐ в®зЄЁ -Ґ ®Ўа §гов ¬-®Ј®гЈ®«м-ЁЄ:\n");
 
Если у кого нибудь есть желание помогите отладить
 
Добавлено:
НАрод подскажите  как осуществить проверку на монотонность?

Всего записей: 10 | Зарегистр. 18-12-2007 | Отправлено: 22:32 08-01-2008
veronica b



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kerdan

Цитата:
Если у кого нибудь есть желание помогите отладить  

Есть желание, но не скрывайте, скажите прямо, что отладить? Вы не используете вполне полноправный символ в любом языке программрования, как пробел и поэтому в вашем коде "черт ногу сломит". Кстати, а что за какркули в первом операторе printf?

Цитата:
НАрод подскажите  как осуществить проверку на монотонность?  

Монотонность чего? Если это функция, то первая производная не должна менять знак.
 

Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 08:25 09-01-2008
Kerdan

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В первом принте я прошу ввести количество точек,(они образуют многоугольник) в последнем принте после всей проверки елси она проходит и не выполняются условия Пишу что они типа не образуют многоугольник
 
 
Добавлено:
 Даны натуральное число N действительные числа x1 y1 x1 y1 ..................xn yn  Найти площадь n угольника произвольной конфигурации,вершины которого при некотором последовательном обходе  имеют координаты (x1;y1)(x2;y2).......(xn;yn) Реализовать проверку коректности исходных данных в подпрограмме.
 
А вообще вот текст задачи

Всего записей: 10 | Зарегистр. 18-12-2007 | Отправлено: 12:24 09-01-2008
Bavil

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди,помогите пожалуйста.
Надо сделать лабораторную,но я не успеваю разобраться.
Задача простая:
 
Из введённого текста распечатать все слова наименьшей длинны.
 
 
Заранее очень благодарен.

Всего записей: 1 | Зарегистр. 09-01-2008 | Отправлено: 22:08 09-01-2008
Invinsible

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще раз хочу попросить, если кого нить не затруднит, напишите мне пожалуйста текст программы (функции) , реализующие работу с очередью: добавление элементов, подсчет количества элементов в очереди, вывод элементов очереди.
Очень вас прошу, и только на вас надеюсь!
Спасибо!

Всего записей: 10 | Зарегистр. 01-12-2007 | Отправлено: 22:36 09-01-2008
1nf3ct3d

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Молодые люди, срочно нужна помощь, в написании программы,
В матрице размером 10х10 подсчитать сумму элементов в каждом рядке. Значение элементов массива задаються с помощью датчика случайных чисел. Зарание Благодарю.

Всего записей: 2 | Зарегистр. 10-01-2008 | Отправлено: 00:14 10-01-2008
Dukaliss

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто может написать программу заменяющую функцию strtok

Всего записей: 12 | Зарегистр. 23-12-2007 | Отправлено: 00:36 10-01-2008
strelok_aka_vc



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Молодые люди, срочно нужна помощь, в написании программы,  
В матрице размером 10х10 подсчитать сумму элементов в каждом рядке. Значение элементов массива задаються с помощью датчика случайных чисел. Зарание Благодарю.

 

Код:
 
#include <time.h>
#include <stdlib.h>
 
 
int main()
{
    srand( (unsigned)time( NULL ) );    //точка отсчета случайных чисел с текущего момента времени
 
    const int N=10,        //количество строк в матрице
        M=10;            //количество столбцов в матрице
        
    static int Array[N][M];    //массив матрицы
    static int Sum[N];            //массив сумм строк
 
    for(int i=0; i<N; i++)        //по строкам
    {
        for(int j=0; j<M; j++)    //по столбцам
        {        
            Array[i][j] = rand();        //заполнение матрицы случайными числами
            Sum[i] += Array[i][j];        //подсчитываем сумму в строке
        }
    }
 
 
    return 0;
}

Всего записей: 109 | Зарегистр. 06-09-2005 | Отправлено: 09:41 10-01-2008 | Исправлено: strelok_aka_vc, 09:42 10-01-2008
1nf3ct3d

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спс огромное, Стрелок, ты мне экзамен сделал ))
 
Добавлено:
Че-то прога не пашет..пашет, всмысле, но не выводит не чего, вот еще парочка заданий..
Вывести на екран номера тех элементов масива целых чисел, которые равны 3. Элементы запрашиваются у пользователя..розмер

Всего записей: 2 | Зарегистр. 10-01-2008 | Отправлено: 12:22 10-01-2008
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bavil

Цитата:
Из введённого текста распечатать все слова наименьшей длинны.

если по-быстрому, но сложно, то:

Код:
    typedef std::vector<std::string> V;
    V v;
 
    // заполнение вектора строками
    // ...
 
    // находим минимальную длину строки
    size_t min_length = std::min_element(v.begin(), v.end(),
        boost::bind(
            std::less<std::string::size_type>(),
            boost::bind(&std::string::size, _1),
            boost::bind(&std::string::size, _2)
        )
    )->size();
 
    // вывод на печать всех слов с минималльной длиной
    namespace lm = boost::lambda;
    std::for_each(v.begin(), v.end(),
        lm::if_(lm::bind(&std::string::size, lm::_1) == min_length)
        [std::cout << lm::_1 << lm::constant("\n")]);
 
 

 
если plain c++ way, то:

Код:
 
template <typename T>
struct min_size : public std::binary_function<T, T, bool>
{
    result_type operator() (const first_argument_type& v1, const second_argument_type& v2)
    {
        return (v1.size() < v2.size());
    }
};
min_length = std::min_element(v.begin(), v.end(), min_size<std::string>())->size();
 

а вывод на печать - через цикл.
(это только примеры, инклудов нет, так что компилироваться не будут)

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 13:57 10-01-2008
groomly

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dukaliss
 
По просьбам трудящихся вариант с чтением  из файла.
 

Код:
 
#include <stdio.h>
#include <string.h>
 
#define MAXBUFF 1024
 
int main()
{
    const char wordchar[]="АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    const char soglchar[]="БВГДЖЗЙКЛМНПРСТФХЦЧШЩЪЬбвгджзйклмнпрстфхцчшщъь";
    char buff[MAXBUFF];
    char* pb;
    int ch,last;
    int is_first=1;
    int is_word=0;
    int is_soglas=0;
    FILE* src;
    src=fopen("source.txt","r");
    if(src==NULL)
    {
        printf("Can not open source file\n");
        return 1;
    }
    FILE *dst=fopen("result.txt","w");
    if(dst==NULL)
    {
        printf("Can not open result file\n");
        return 1;
    }
    while( (ch=getc(src))!=EOF )
    {
        if( strchr(wordchar,ch)!=NULL )
        {//Символ - часть слова
            if(!is_word)
            {//Это первая буква слова
                is_word=1;
                is_soglas=strchr(soglchar,ch)!=NULL;
                pb=buff;
            }
            if(is_soglas)
            {//Слово с согластного пишем в буфер
                if(pb+1 >=buff+MAXBUFF)
                {
                    printf("error: buffer overflow\n");
                    return 1;
                }
                *(pb++)=ch;
                last=ch;
            }
        }
        else
        {
            if(is_soglas && strchr(soglchar,last)!=NULL)
            {//Если было слово с согластного, то выводим
                if(is_first)
                    is_first=0;//Первое слово разделителя не требует
                else
                     putc(' ',dst);
                for(char* now=buff; now<pb; now++)
                     putc(*now,dst);
            }
            is_soglas=0;
            is_word=0;
        }
    }
    if(is_soglas && strchr(soglchar,last)!=NULL)
    {//Последнее слово может остаться в буфере
        if(is_first)
            is_first=0;//Первое слово разделителя не требует
        else
            putc(' ',dst);
        for(char* now=buff; now<pb; now++)
            putc(*now,dst);
    }
    return 0;
}
 

Всего записей: 71 | Зарегистр. 08-06-2007 | Отправлено: 15:49 10-01-2008 | Исправлено: groomly, 15:53 10-01-2008
veronica b



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dukaliss

Цитата:
кто может написать программу заменяющую функцию strtok

Вы хотите, наверное, функцию strtok?  

Код:
 
#include <string.h>
#include <stdio.h>
 
char* my_strok(char* src, const char* tem)
{
    static char* ptr;
    static char  flag = 1;
 
    char *token;
    int  ii, len;
 
    if(src != NULL)
        ptr = src;
 
    token = ptr;
    len = strlen(tem) + 1;
 
    while(flag)
    {
        for(ii = 0; ii < len; ii++)
            if(ptr[0] == tem[ii])
            {
                flag = *ptr;
                *ptr++ = '\0';
 
                return token;
            }
 
        ptr++;
    }
 
    return NULL;
}
 
int main()
{
    char *test = "This is a string with seven tokens";
    char *token_ptr;
 
    printf("%s\n%s\n%s\n", "The string to be tokenised is: ", test,
             "The token are: ");
 
    token_ptr = my_strok(test, " ");
 
    while(token_ptr != NULL)
    {
        printf("%s\n", token_ptr);
 
        token_ptr = my_strok(NULL, " ");
    }
 
    return 0;
}
 


Всего записей: 504 | Зарегистр. 04-12-2006 | Отправлено: 15:54 10-01-2008
groomly

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Invinsible
держи

Код:
 
#include <stdio.h>
 
class Queue
{
    class Elem
    {
    public:
        char* data;
        Elem* ptr;
        Elem(char* idata){data=idata;ptr=NULL;}
    };
    Elem* first;
    Elem* last;
public:
    Queue() {first=NULL; last=NULL;};
    int count() const;
    void print() const;
    void add(char* data);
};
void Queue::add(char* data)
{
    Elem *tmp=new Elem(data);
    if(first==NULL)
    {//пустая очередь
        first=last=tmp;
    }
    else
    {
        last->ptr=tmp;
        last=tmp;
    }
};
int Queue::count() const
{
    int numb=0;
    for(Elem* cur=first; cur; cur=cur->ptr)
        numb++;
    return numb;
}
void Queue::print() const
{
    for(Elem* cur=first; cur; cur=cur->ptr)
        printf("%s\n",cur->data);
};
 
int main()
{
    Queue que;
    que.add("First");
    que.add("Second");
    que.add("Third");
 
    printf("number=%d\n",que.count());
    printf("queue:\n");
    que.print();
 
    return 0;
}
 

Всего записей: 71 | Зарегистр. 08-06-2007 | Отправлено: 16:42 10-01-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru