Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Перевод с C на C++


Автор: Hetls 17.11.2016, 13:00
Дан символьный массив, образованный из слов, разделенных  пробелами.  
С использованием процедур и функций выполнить:
1) Подсчитать количество слов в тексте
2) Проверить, есть ли  в  тексте заданное слово
3) Поменять местами два слова текста с заданными номерами
4) Вставить новое слово после  указанного и выдать на печать указанное слово текста. (и собственно говоря, как это можно реализовать на языке C++)

Код

#include <cstdio>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <iostream>
    
#define STRLEN 255
#define LEN 1000
    
int main(void){
    char str[STRLEN], wrd[STRLEN], *p;
    size_t count_all, count_word;
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    printf("Massiv: ");
    fgets(str, sizeof(str), stdin);
    if ( p = strrchr(str, '\n') )
        *p = '\0';
    printf("Slovo: ");
    fgets(wrd, sizeof(wrd), stdin);
    if ( p = strrchr(wrd, '\n') )
        *p = '\0';
    
    count_all = count_word = 0;
    for ( p = strtok(str, " "); p != NULL; p = strtok(NULL, " ") ){
        ++count_all;
        if ( !strcmp(p, wrd) )
            ++count_word;
    }
    printf("Vsego slov: %d\n", count_all);
    printf("Slovo \"%s\" vstretilos %d raz(a)\n", wrd, count_word);
    
    return 0;}
    

     int main()
    {
        char sin[LEN] = {'\0'};
        char sout[LEN] = {'\0'};
        char *p;
        char swap[LEN];
        char a[LEN / 10][LEN];
        
        int k = -1, i, l, r;
        
        printf("Vvedite massiv: ");
        gets(sin);
        p = strtok(sin, " ");
        while(p)
        {
            k++;
            strcpy(a[k], p);
            p = strtok(NULL, " ");
        }
        printf("\nVvedite nomera slov dlya obmena(l <= r): ");
        scanf("%d %d", &l, &r);
        if(l > r)
        {
            printf("\n\nInput ERROR! Program close!");
            return 1;
        }
        strcpy(swap, a[l - 1]);
        strcpy(a[l - 1], a[r - 1]);
        strcpy(a[r - 1], swap);
        for(i = 0; i < k; i++)
        {
            strcat(sout, a[i]);
            strcat(sout, " ");
        }
        strcat(sout, a[k]);
        printf("\n\nMassiv: %s", sout);
        return 0;
    }



Автор: baldman88 18.11.2016, 11:56
Вы сначала в основах разберитесь и попробуйте сделать хоть что-то сами. Для начала попробуйте привести к рабочему виду тот код, который запостли. Если же Вам это не нужно, а просто необходимо сдать лабораторную работу (или что-то вроде того), то для такого рода помощи существует специальный раздел форума: http://forum.vingrad.ru/forum/Vingrad-help-center.html.

Автор: Hetls 18.11.2016, 14:48
ОК

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)