Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2015, 20:44   #1
Андрей199
Пользователь
 
Регистрация: 06.01.2015
Сообщений: 18
По умолчанию с++ работа со строками

ввести слово произвольной длины и напечатать его в виде треугольника с++
Андрей199 вне форума Ответить с цитированием
Старый 07.01.2015, 22:56   #2
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

Цитата:
Сообщение от Андрей199 Посмотреть сообщение
ввести слово произвольной длины и напечатать его в виде треугольника с++
Треугольник :
Код:
#include<iostream> 
using namespace std; 
int main() 
{
  int y; 
cout<<" Please enter any number\n";
cin>>y;
  for(int i=1;i<=y;i++){ 
    for (int k=1; k<=i*2-1;k++){
  cout<<"*";
    }
  }
system("pause");
return 0; 
}

Код:
#include <stdio.h>
 static char *sot[]={"сто","двести","триста","четыреста",
             "пят","шест", "сем","восем","девят" };
 static char *desiat[]={" двадцать"," тридцать"," сорок"," пят"," шест",
                " сем"," восем"," девяносто" };
 static char *edm[]={""," один"," два"," три"," четыре"," пять"," шесть",
             " семь"," восемь",
             " девять"," десять"," один"," две"," три",
             " четыр"," пят"," шест"," сем"," восем"," девят" };
 static char *edw[]={" одна"," две" };
 static char *nmtr[]={" тысяч"," миллион"," миллиард", " триллион",
               " квадриллион", " квинтиллион", " сектиллион", " септаллион", NULL };
         // 
 static char *nokm[]={"а","ов" };
 static char *nokt[]={"а","и","" };
/* ------------------ */
Propis2(unsigned long L, int n, char *s) // Число прописью
{ int R, ns, nd, r; char *p; unsigned long M;
 
   M = L / 1000;
   R = L % 1000;
   if (M != 0) Propis2(M, n+1, s);  // Рекурсия!
   if (R==0) return;
   ns = R / 100;
   if (ns)    sprintf(s+strlen(s), " %s", sot[ns-1]);
   if (ns>=5) strcat(s, "ьсот");
   R = R % 100;  // < 100
   nd = R / 10;  // Десятки
   if (nd >= 2) {
      strcat(s, desiat[nd-2]);
      if (nd>=5 && nd<=8) strcat(s, "ьдесят");
      R = R % 10;
   }
   r = sklon(R);
   if (n==1 && R>0 && R<3) p = edw[R-1];
   else                    p = edm[R];
   strcat(s, p);
   if (R > 10) strcat(s, "надцать");
   if (n > 0) {
     strcat(s, nmtr[n-1]);
     if     (n==1) strcat(s, nokt[r]);
     else if (r>0) strcat(s, nokm[r-1]);
   }
}
/*********************/
sklon(int dd)    /* Определение склонения числа */
{ int n, r;
 
    r = 2;
    n = dd % 100;
    if (n>4 && n<20) return(r);
    n = n % 10;
    if      (n==1)       r = 0;
    else if (n>1 && n<5) r = 1;
    return(r);
}
/* ------------------ */
long atol(char *b);
main()
{ char b[200], s[1000]; unsigned long L;
 
a: printf(">");
   gets(b);
   if (strlen(b)==0) return;
   s[0] = '\0';
   L = atol(b);
   Propis2(L, 0, s);
   printf("%s\n", s);
   goto a;
}

Последний раз редактировалось Jurijus123; 08.01.2015 в 00:26.
Jurijus123 вне форума Ответить с цитированием
Старый 08.01.2015, 07:58   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Jurijus123
Задание прочти внимательно.
Цитата:
Андрей199
Попыток и проб нам не покажешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.01.2015, 11:50   #4
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Смотри: нам нужен строковый тип и вложенный цикл. Пользователь вводит строку, определяем ее размер( соответственно количество итераций основного цикла )
Код:
for( int i = 0; i < input.size(); i++ )
далее нам нужен счетчик( так как по заданию необходим треугольник, то есть с каждой итерацией строка увеличивалась на один символ ):
Код:
count++
и вложенный цикл который задает длину каждой последующей строки:
Код:
for( int j = 0; j < count; j++ )
в теле этого цикла производим конкатенацию( склеивание ) строк ( соответствующего елемента символьного массива( input ) и новой строки ( output ). )
Код:
output += input[i++]; \\ инкрементируем i для строка не повторялась
далее уменьшаем итерацию основного цикла( что б вернуться на позицию назад )
Код:
i -= 1;
далее выводим выходящую строку и с основной итерацией очищаем ее
опять же - для того, что б символы не повторялись
Код:
cout << output << endl;
output.clear();
Вот весь код:
Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int count = 0;
    string input;
    string output;

    cout << "Enter the string: ";
    cin >> input;
    cout << endl;

    for( int i = 0; i < input.size(); i++ ){
        count++;
        for( int j = 0; j < count; j++ ){
            output += input[i++];
        }
        i -= 1;
        cout << output << endl;
        output.clear();
    }
}
igoreshka3333 вне форума Ответить с цитированием
Старый 08.01.2015, 23:13   #5
Jurijus123
Заблокирован
 
Регистрация: 12.11.2014
Сообщений: 120
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Задание прочти внимательно.

Попыток и проб нам не покажешь?
Ну да мне уже дошло.

Последний раз редактировалось Jurijus123; 08.01.2015 в 23:17.
Jurijus123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками. vaximan Помощь студентам 24 15.09.2014 22:27
Работа со строками. C++ PitBool Visual C++ 0 31.10.2012 23:44
Работа со строками в Си vbn14 Общие вопросы C/C++ 3 19.06.2012 20:21
Работа со Строками Dodjik Общие вопросы C/C++ 0 09.11.2011 21:25
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19