Форум программистов, компьютерный форум CyberForum.ru

поменять местами первое и второе слово в каждой строке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сформировать массив, содержащий сведения о телефонах абонентов http://www.cyberforum.ru/cpp-beginners/thread26750.html
вот моя задача: Сформировать массив, содержащий сведения о телефонах абонентов. Структурный тип содержит поля: фамилия абонента, место жительства (название улицы, номер дома), год установки телефона. Написать программу, выдающую следующую информацию: - номер телефона по вводимой с клавиатуры фамилии абонента; - количество установленных телефонов с XXXX года; - список номеров...
C++ Подсчет колличества вхождений буквы в строку задача легкая но времени вообще нет!!!!!!!!!!очень прошу помогите!!!!!!! Нужно составить программу (на С++) подсчета колличества вхождений буквы b в заданную строку http://www.cyberforum.ru/cpp-beginners/thread26743.html
не может определить минимальный элемент C++
написал программу! Чтобы когда вводишь несколько элементов массива, не повторяющихся, то находятся максимальный и минимальный элементы в этом массиве! максимум находиться без проблем, а вот минимум не находиться! программа выдает ноль ошибок! #include "stdio.h" #define N 10 int main () { int a;
C++ Некорректное отображением float
Когда вводим название товара, который необходимо найти в массиве и если он там есть, то при выводе информации о товаре, почему то не корректно отображается его цена (product.itsPrice). Если цена товара была 456.9, то в результате поиска цена становиться такой 0.000000 Подскажите пожалуйста что я сделал не так. #include <stdio.h> #include <string.h> struct Price { char itsNameProduct;...
C++ Ошибки в программе http://www.cyberforum.ru/cpp-beginners/thread26709.html
#include <iostream> using namespace std; struct employe { int number; float money; }; int main() { employe nomer;
C++ как описать массив и цикл по формуле.. добрый день, Есть формула: у(к)=А*у(к-1)+В*у(к-2)+С*х(к), к от 0 до n, детально вот так выглядеть будет: у(0)=С*х(0) \С*х(0) известно, все х(к),А,В,С известны\; у(1)=А*у(0)+С*х(1) у(2)=А*у(1)+В*у(0)+С*х(2) у(3)=А*у(2)+В*у(1)+С*х(3) и так далее) т.е. в каждом новом у учитываются предыдущие вычисления у подробнее

Показать сообщение отдельно
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
20.03.2009, 21:07     поменять местами первое и второе слово в каждой строке
C
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
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#define MAXWORDS 500 //максимальное количество слов
#define MAXLINE 100 //максимальная длина строки
#define MAXBUF 5000
 
int ibuf = 0, nwords = 0;
char buf[MAXBUF], *bufp = buf;
 
/* считывает строку */
int getline(char *s, int lim)
{
    int c;
    char *ps = s;
    
    for(; lim-1>0 && (c=getchar())!=EOF && c!='\n'; lim--)
       *s++ = c;
    if(c == '\n')
       *s++ = c;
    *s = '\0';
    return s - ps;
}
 
/* меняет местами первое и второе слово каждой строки */
void swap(char *wordsptr[], int i)
{
     char *tmp;
     tmp = wordsptr[i];
     wordsptr[i] = wordsptr[i+1];
     wordsptr[i+1] = tmp;
}
 
/* заносит слова из строки в буфер и расставляет указатели на них */
int getwords(char *s, char *wordsptr[])
{
     static int i = 0;
     int len, nw_ret = 0;
     char *pw, *pwe;
     
     pw = pwe = NULL;
     for(; *s; s++) {
        /* читаем слова из строки */
        if( isspace(*s) )
           continue;
        if( isalpha(*s) && !isalpha(*(s-1)) )
           pw = s;
        if( isalpha(*s) && !isalpha(*(s+1)) )
           pwe = s;
        if(pw && pwe) {
           if(MAXBUF - ibuf >= pw - pwe + 1) {
              while(pw <= pwe)
                 buf[ibuf++] = *pw++;
              buf[ibuf++] = ' ';
              buf[ibuf++] = '\0';
              pw = pwe = NULL;
           } else {
              printf("Error: too many symbols in buffer!\n");
              return -1;
           }
        } 
        /* расставляем указатели на слова */
        for(; i < ibuf && nwords < MAXWORDS; i++) {
           wordsptr[nwords++] = bufp;
           nw_ret++;
           for(len = 1; buf[i] != '\0'; i++, len++)
              ;
           bufp += len;
        }
     }
     wordsptr[nwords++] = "\n";
     nw_ret++;
     return nw_ret;
}     
 
void writewords(char *wordsptr[], int nwords)
{
     while(nwords-- > 0)
        printf("%s", *wordsptr++);
}
     
int main()
{
    int nw;
    char *wordsptr[MAXWORDS], line[MAXLINE];
    
    printf("Enter strings:\n");
    while(getline(line, MAXLINE) > 0)
       if( (nw = getwords(line, wordsptr)) > 2)
          swap(wordsptr, nwords - nw);
    printf("\nResult:\n");
    writewords(wordsptr, nwords);
    
    getch();
    return 0;
}
Считывание строк заканчивается после ввода символа EOF - на клавиатуре это обычно <F6>.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru