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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2016, 12:56   #1
Fyn
 
Регистрация: 26.11.2016
Сообщений: 7
Радость Работа с символами и строками в си [Язык Си]

Пытаюсь написать функцию, для поиска десятичных чисел через запятую в строке. Но даже не получается найти первое число в строке, думаю просто пройти по строке найти с[i] число, k=i+1 затем проверить условие что c[k]==','(если так можно), далее проверить условие c[k+1] десятичное число. Но повторяюсь я даже стопорюсь с нахождением первого числа.
Условие общей задачи:
Если в строке встречаются подряд два числа, разделенные запятыми – n1,n2, то последующий фрагмент из n2 символов повторяется n1 раз. Если встречается одно число, то n1 раз повторяется символ, например, aaa4,3abcdef преобразуется в aaaabcaabcabcabcdef.


Вот код функции поиска одного числа, которую набросал и main
Код:
int find(char c[]) {
int i,k,n1;
for(i=0;c[i]>='0'&&c[i]<='9'||c[i]!='\0';i++){
n1=c[i];
}
return n1;
}

void main() {
char c[40];
int t;
gets(c);
t=find(c);
printf("%d",t);
getch();
}

Начальный вариант:
Код:
    int find(char c[]) {
    int i,k,n1,z,n2;
    for(i=0;c[i]!='\0';i++){
    for (k = 0;c[k] >= '0'&&c[k] <= '9';k++) {
    n1=c[k]-'0';
    z=k+1;
    if (c[z]==','){
    if(c[z+1]>='0'&&c[z+1]<='9')
    n2=c[z+1]-'0';
    }
    }
    }
    return n1;
    }

    void main() {
    char c[40];
    int t;
    gets(c);
    t=find(c);
    printf("%d",t);
    getch();
    }
Вот что выдает поиск одного числа, main использовал чтобы проверить, ищет вообще что-нибудь или нет. Заранее спасибо тому кто откликнется и адекватно скажет что-нибудь по сути.

Последний раз редактировалось Fyn; 05.12.2016 в 14:25.
Fyn вне форума Ответить с цитированием
Старый 05.12.2016, 15:16   #2
Fyn
 
Регистрация: 26.11.2016
Сообщений: 7
По умолчанию

Короче говоря, числа через запятую я нашел.
Теперь нужно совершить преобразования со строкой, хэлпаните пожалуйста
Код:
#include <stdio.h> // Файл заголовков для библиотеки ввода-вывода
#include <iostream>
#include <conio.h> // Подключение _getch()
#include <locale.h> // Подключение setlocale
#include <cstdio> // Подключенине фенкции gets - считывание сроки
#include <cstring> // Подключении функция для обработки строк
#include <string.h> // Файл заголовков для работы со строками
using namespace std;

int n1,n2,z;
void find(char c[]) {
int i;
for (i = 0;c[i] != '\0';i++) {
if (c[i] >= '0'&&c[i] <= '9')
n1 = c[i] - '0';
z = i + 1;
if (c[z] == ',') {
if (c[z + 1] >= '0'&&c[z + 1] <= '9')
n2 = c[z + 1] - '0';
break;
}
}
}


void main() {
char c[40];
gets_s(c);
find(c);
printf("%d\t%d", n1,n2);
_getch();
}
Fyn вне форума Ответить с цитированием
Старый 05.12.2016, 19:37   #3
Fyn
 
Регистрация: 26.11.2016
Сообщений: 7
По умолчанию

up.
Fyn вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите прогу работа с символами и строками kolek_96 Помощь студентам 0 30.11.2014 17:59
Работа с символами и строками в языке Object Pascal Rudichekkk Помощь студентам 1 04.12.2013 23:49
Работа с символами(Язык C) ryadnovka Помощь студентам 2 19.11.2012 22:19
Работа со строками и символами. AlexStudent Общие вопросы C/C++ 6 30.05.2011 16:17
Работа со строками (язык С) aspiredp Помощь студентам 0 26.12.2010 23:14