Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Aer_rus
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 91
#1

Задан текст, напечатать слова этого текста отличные от последнего слова - C++

09.12.2013, 09:15. Просмотров 763. Ответов 3
Метки нет (Все метки)

Задан текст.напечатать слова этого текста отличные от последнего слова удалить в каждом из них первую букву. Нужно сделать именно через матрицу.
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
#include "iostream"
#include "string.h"
#include "stdio.h"
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    char s[255];
    //Инициализация массива все элементы массива присваеваентся пустота.
    char a[80][255]={0};
    int b[80];
    int l,n,i;
    printf("Введите текст");
    gets(s);
    l=strlen(s);
    cout << "\nВы ввели следующий текст: ";
    for (i=0; i<l; i++)
        cout << s[i];
    i=0;
    n=0;
    int z=-1;
    strcpy(a[n],"");
    while (s[i]!='\0')
    {
        if (s[i]!=' ')
        {
            z++;
            a[n][z]=s[i];
        }
        else
        {
            a[n][z+1]='\0';
            z=-1;
            n++;
            strcpy(a[n],"");
                        
        }
        i++;
    }
    // Вывод матрицы
cout <<"\n";
for (i=0; i<n+1; i++)
{
  for (z=0; z<l; z++)
  cout<< a[i][z]<<"  ";
  cout<<"\n";
}
//Удаление первой буквы
for (i=0; i<n+1; i++)
{
  for (z=0; z<l; z++)
      a[n][z]=a[n][z++];
}
//Удаление последнего слова
for (i=0; i<n+1; i++)
{
  for (z=0; z<l; z++)
      if (a[i]==a[n])
      {
          a[i][z]= ' ';
        a[n][z]= ' ';
      }
      }
    
//Удаление первой буквы
for (i=0; i<n+1; i++)
{
  for (z=0; z<l; z++)
      a[i][z]=a[i][z+1];
}
 
 
//Вывод отсортированной матрицы
cout<<"вывод:\n";
for (i=0; i<n+1; i++)
{
  for (z=0; z<l; z++)
  cout<< a[i][z];
  cout<<"\n";
}
 
    system("PAUSE");
    return 0;
}
Помогите найти ошибки в программе

Добавлено через 8 часов 39 минут
Никто не знает как доработать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 09:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задан текст, напечатать слова этого текста отличные от последнего слова (C++):

С++ Задан текст напечатать слова отличные от последнего слова Visual Studio - C++
Здравствуйте, вопрос такой, я написал программу через функции Её условие заключается в том, что задан текст напечатать все слова...

Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв. Напечатать все слова, отличные от последнего слова - C++
дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова - C++
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы - C++
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так трудно помочь. 8.Задан...

Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них - C++
Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела....

ООП. Напечатать слова, отличные от последнего слова, предварительно преобразовав каждое из них по правилу - C++
Напечатать слова, отличные от последнего слова, предварительно преобразовав каждое из них по правилу: удалить из слова первую букву....

3
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,035
09.12.2013, 10:34 #2
Цитата Сообщение от Aer_rus Посмотреть сообщение
//Удаление первой буквы
C++
1
for (i=0; i<n+1; i++) { for (z=0; z<l; z++) a[n][z]=a[n][z++]; }
удаление 1 буквы любого слова происходит по след условию(можно изменять но смысл 1)
C++
1
2
3
4
if ((a[i]==' ')&&(a[i+1]!=' '))
{
//сдвиг всей строки на [-1] для i+1
}
Цитата Сообщение от Aer_rus Посмотреть сообщение
//Удаление последнего слова
C++
1
for (i=0; i<n+1; i++) { for (z=0; z<l; z++) if (a[i]==a[n]) { a[i][z]= ' '; a[n][z]= ' '; } }
здесь надо идти от конца строки и удалять до 1ого ' '
0
zitxbit
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
09.12.2013, 11:00 #3
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
 
#define LEN 80
 
int main(int argc, char* argv[])
{
    char str[256] = "c++ is object-oriented programming language\0";
    char sstr[LEN][256] = { "\0" };
 
    int index = 0, l = 0;
    while (str[index] != '\0')
    {
        if (isspace(str[index]) || index <= 0)
        {
            int k = 0; char* word = new char[256];
            int n = index <= 0 ? index : index+1;
            while (!isspace(str[n]) && str[n] != '\0')
                word[k++] = str[n++];
 
            word[k] = '\0';
 
            strcpy(sstr[l++], ++word);
        }
 
        index++;
    }
 
    for (int r = 0; strcmp("\0",sstr[r]) < 0; r++)
        if (strcmp(sstr[r],sstr[l-1]))
            printf("%s\n",sstr[r]);
 
    _getch();
 
    return 0;
}
http://codepad.org/YICbKkzz
0
Миниатюры
Задан текст, напечатать слова этого текста отличные от последнего слова  
dzrkot
zzzZZZ...
523 / 353 / 54
Регистрация: 11.09.2013
Сообщений: 2,035
11.12.2013, 11:17 #4
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
#include "iostream"
#include "string.h"
#include "stdio.h"
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    char s[255];
    //Инициализация массива все элементы массива присваеваентся пустота.
    char a[80][255]={0};
    char b[80];
    int l,k;
    printf("Введите текст:\n");
    gets(s);
    l=strlen(s);
    cout << "\nВы ввели следующий текст:\n"<<s<<endl<<"Длина строки:"<<l<<endl<<endl;
    // переводим в матрицу
    int temp=0,counterStr=0;
    bool flag=false; // флаг для окончания и выходя из 1ого цикла
    for (int i=0;i<l;i++) // 1 цикл
    {
        for (int j=0,k=temp;;j++,k++) // 2 цикл , temp - переменная для сохранения текущего индекса s[k]
        {
                if (s[k]=='\0') // проверяем не закончился ли s, если да, то выставляем флаг и выходим из 2ого цикла
                {
                a[i][j]='\0';
                flag=true;
                break;
                }
            if ((s[k]==' '))    // проверяем s на ' ' , если пробел, то продолжаем запись в след строку массива a
            {
            temp=k+1;
            counterStr++;
            a[i][j]='\0';
            break;
            }
        a[i][j]=s[k];   // записываем строку s в а
        temp=k;     // сохранение текущей позиции чтения s , перед повторением цикла
        }
        if (flag) // выход из 1ого цикла если сработал флаг
        {
        break;
        }
    }
// просто проверка и вывод массива а
for (int i=0;i<=counterStr;i++)
{
    for (int j=0;a[i][j]!='\0';j++)
    cout<<a[i][j];
cout<<endl;
}
 
for (int i=0;i<counterStr;i++) // удаляем 1ую буквуво всех совах кроме последнего , т.к. оно нам вообще фиолетого :)
    for (int j=0;a[i][j]!='\0';j++)
    a[i][j]=a[i][j+1];
 
 
// удаляем первую букву и пропускаем последнюю строку
temp=0;
 
for (int i=0;i<counterStr;i++) // записываем всё в массив b без последнего слова
{
    for (int j=0,n=temp;a[i][j]!='\0';j++,n++)
    {
        b[n]=a[i][j];
    temp=n+2;
    }
    b[temp-1]=' ';
}
cout<<"\nРезультат преоразования и записи в строку:\n"<<b;
    return 0;
}
1
11.12.2013, 11:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 11:17
Привет! Вот еще темы с ответами:

Напечатать все слова, отличные от последнего слова, предварительно преобразовав каждое из них по заданному правилу - C++
Дан текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв; между соседними словами - не менее одного пробела....

Напечатать все слова, отличные от последнего слова - C++
Болела пропустила лекции на эту тему помогите разобраться напишите код и объясните почему именно так и где что значит все должно быть...

Напечатать все слова, отличные от последнего слова. - C++
В файле дана непустая последовательность слов, содержащая от 1 до 8 букв; между соседними словами – запятая, за последним словом точка....

Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву - C++
Дана последовательность содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами не менее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.