Не могу даже попробовать запустить программу, так как появляется следующее сообщение об ошибках:
В программировании новичок, понимаю, что использую и с, и с++ в коде, но все же
как исправить ошибку?
//дана строка символов состоящая из цифр разделенных пробелами
//вывести на экран числа этой строки в порядке возрастания их значений
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
char str[];
int s=0;
int *arr;
char *context=NULL;
void main()
{
cout << "Please input the size of a string +1\n";
cin >> s;
cout << "Please input a string of numbers which are divided by spaces\n";
cin >> str[s];
arr = new int[s];
arr[0] = atoi(strtok_s(str, " ",&context));
for (int i = 1; i < s; i++)
{
while (str != '\0')
{
arr[i] = atoi(strtok_s(__noop," ", &context));
}
}
for (int i = 0; i < s; i++)
{
cout << arr[i] << endl;
}
return;
}
cin >> s;
Считано целое число.
cout << "Please input a string of numbers which are divided by spaces\n";
cin >> str[s];
Даже если объявить str
с каким-то размером - типа char str[200]
- что получается? Мы читаем 1 (прописью - ОДИН) символ в s
-й элемент массива. И с чем вы хотите работать?
Но даже если вы исправите на
cin >> str;
то это приведет к чтению в str
1 (опять прописью - ОДНОГО) слова, но никак не строки чисел, разделенной пробелами...
Не знаю ваш ограничения (чем можно пользоваться), но вот один из вариантов решения.
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
int main() {
char str[100];
char *ptr = nullptr;
int arr[100], counter = 0;
// ВВОД СТРОКИ
std::cin.getline(str, 100);
// РАЗБИВАЕМ СТРОКУ НА ТОКЕНЫ
for (ptr = strtok(str, " ,.-"); ptr != nullptr;
ptr = strtok(nullptr, " ,.-"))
{
// ТОКЕН ПЫТАЕМСЯ ПРЕОБРАЗОВАТЬ В ЧИСЛО
// ЕСЛИ ПРЕОБРАЗОВАНИЕ УСПЕШНО, ЗАНОСИМ ПОЛУЧЕННОЕ ЧИСЛО В МАССИВ
int conVAlue = strtol(ptr, nullptr, 10);
if (conVAlue)
{
arr[counter] = conVAlue;
counter++;
}
}
// СОРТИРОВКА МАССИВА ЧИСЕЛ
std::sort(arr, arr + counter);
// ВЫВОД
for (int i = 0; i < counter; i++)
std::cout << arr[i] << std::endl;
}
ввод:
qqqwww 222 33333 ddddd 4
вывод:
4
222
33333
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Эксперементирую с проектом по стримингу видеоПишу поток IPTV в mp4 на диск средствами ffmpeg
Cтолкнулся с такой проблемойВозникла надобность написать функцию для задач gulp, в которую передается объект вида: