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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 02:31   #1
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
Восклицание Си - строки!

У меня есть char *s;
Вопрос: как с ней провернуть такую штуку, как вот на паскале:
Код:
s:string;
s:=s+'так можно';
Form_13 вне форума Ответить с цитированием
Старый 22.10.2011, 02:35   #2
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию

Ибо в функцию попадает число 1-999, вернуть нужно строку:

Код:
char *zamena(int m)
 {
   char *s;
   int a,b,c;
   a = m / 100;
   b=(m / 10)% 10;
   c=m % 10;
   if (a>0)
   switch (a)   
   {
    case 1: s=s+"сто ";
    case 2: s=s+"двести ";
    case 3: s=s+"триста ";
    case 4: s=s+"четыреста ";
    case 5: s=s+"пятьсот ";
    case 6: s=s+"шестьсот ";
    case 7: s=s+"семьсот ";
    case 8: s=s+"восемьсот ";
    case 9: s=s+"девятьсот ";
   }
   if (b==1) 
    switch (c)
   {
    case 1: s=s+"одиннадцать ";
    case 2: s=s+"двенадцать ";
    case 3: s=s+"тринадцать ";
    case 4: s=s+"четырнадцать ";
    case 5: s=s+"пятнадцать ";
    case 6: s=s+"шестнадцать ";
    case 7: s=s+"семнадцать ";
    case 8: s=s+"восемнадцать ";
    case 9: s=s+"девятнадцать ";
   }
   else
    switch (b)
   {
    case 2: s=s+"двадцать ";
    case 3: s=s+"тридцать ";
    case 4: s=s+"сорок ";
    case 5: s=s+"пятьдесят ";
    case 6: s=s+"шестьдесят ";
    case 7: s=s+"семьдесят ";
    case 8: s=s+"восемьдесят ";
    case 9: s=s+"девяносто ";
   }
   if (b!=1 && c>0) 
    switch (c)
   {
    case 1: s=s+"один ";
    case 2: s=s+"два ";
    case 3: s=s+"три ";
    case 4: s=s+"четыре ";
    case 5: s=s+"пять ";
    case 6: s=s+"шесть ";
    case 7: s=s+"семь ";
    case 8: s=s+"восемь ";
    case 9: s=s+"девять ";
   }
   return s;
 }
Form_13 вне форума Ответить с цитированием
Старый 22.10.2011, 07:29   #3
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Код:
#include<stdio.h>
#include<string.h>

 char *zamena( int m, char *s)
{
    const char *text[4][10] = {
       {"", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять "},
       {"", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать "},
       {"", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто "},
       {"", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот "}};
   strcat( s, text[3][ m / 100]);
   if( (m / 10)% 10 != 1) strcat( s, text[2][ (m / 10)% 10]);
   strcat( s, text[ (m / 10)% 10 == 1 ? 1: 0][ m % 10]);
   return s;
}
 int main()
{
   char s[] ="";
   printf( "%s", zamena( 927, s));
   return 0;
}
An1ka вне форума Ответить с цитированием
Старый 22.10.2011, 23:11   #4
Form_13
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 107
По умолчанию

Алгоритм гениален) Благодарю тебя, незнакомка)
Form_13 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10