K
kingl
вот задание: Ввести строку из цифр и если ее длина >6, удалить из нее цифры, кратные 3, записав их в другую строку.
Вопрос в том, что перевести из char в int у меня получилось, убрать числа кратные трем тоже вроде не проблема, а вот записать преобразованный массив int в строку char не получается... Вот код который работает до преобразования в char ( получается массив str1 нужно преобразовать в строку char str2, и как я понимаю нужно каждый элемент массива str1 сначала преобразовать в элемент char, а потом все это записать в строку, и еще, избежать вот такого преобразования str2=str1+48):
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
#include <string.h>
#include <ctype.h>
void f(char*, char*, int*, int*);
void main()
{
char *str, *str2;
int i, *str1, *n1, dlina;
n1=&dlina;
setlocale(LC_CTYPE, "RUSSIAN");
str = (char *)malloc((100)*sizeof(char)); // Динамическое выделение памяти
str1 = (int *)malloc((100)*sizeof(int));
str2 = (char *)malloc((100)*sizeof(char));
printf("Введите строку: "); // Вводим строку
scanf("%s",str);
dlina=strlen(str); // Длина строки
if(dlina>6) // Если длина строки больше 6, ищем числа кратные трем
{
printf("\nИсходная строка %s \n", str);
f( str2, str, str1, n1);
printf("\n");
}
else
{
printf("\nКоличество символов меньше 6\n");
printf("\nСтрока не требует преобразования %s", str);
}
free(str);
free(str1);
free(str2);
}
void f(char* str2, char* str, int* str1, int* n1)
{int i, p;
char ch;
printf("Преобразованная строка\n");
for (i=0; i<*n1; i++)
{
ch=*(str+i);// присваиваем ch значение i-го элемента строки str
str1=atoi(&ch);// переводим значение ch в тип int
if ((*(str1+i))%3>0)// выводим элементы массива без элементов кратных 3
printf("\t %d", *(str1+i));
}
}
Вопрос в том, что перевести из char в int у меня получилось, убрать числа кратные трем тоже вроде не проблема, а вот записать преобразованный массив int в строку char не получается... Вот код который работает до преобразования в char ( получается массив str1 нужно преобразовать в строку char str2, и как я понимаю нужно каждый элемент массива str1 сначала преобразовать в элемент char, а потом все это записать в строку, и еще, избежать вот такого преобразования str2=str1+48):
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
#include <string.h>
#include <ctype.h>
void f(char*, char*, int*, int*);
void main()
{
char *str, *str2;
int i, *str1, *n1, dlina;
n1=&dlina;
setlocale(LC_CTYPE, "RUSSIAN");
str = (char *)malloc((100)*sizeof(char)); // Динамическое выделение памяти
str1 = (int *)malloc((100)*sizeof(int));
str2 = (char *)malloc((100)*sizeof(char));
printf("Введите строку: "); // Вводим строку
scanf("%s",str);
dlina=strlen(str); // Длина строки
if(dlina>6) // Если длина строки больше 6, ищем числа кратные трем
{
printf("\nИсходная строка %s \n", str);
f( str2, str, str1, n1);
printf("\n");
}
else
{
printf("\nКоличество символов меньше 6\n");
printf("\nСтрока не требует преобразования %s", str);
}
free(str);
free(str1);
free(str2);
}
void f(char* str2, char* str, int* str1, int* n1)
{int i, p;
char ch;
printf("Преобразованная строка\n");
for (i=0; i<*n1; i++)
{
ch=*(str+i);// присваиваем ch значение i-го элемента строки str
str1=atoi(&ch);// переводим значение ch в тип int
if ((*(str1+i))%3>0)// выводим элементы массива без элементов кратных 3
printf("\t %d", *(str1+i));
}
}