Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45

printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста

16.10.2011, 13:05. Показов 1449. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток !
Хотел бы получить советы от опытных программеров )
1) Начали на 1 курсе сразу с языка Си (до этого дела даже с паскалем не имел )
Сейчас читаю Керниган Риччи "язык программирования с"
Друзья, чтобы вы еще посоветовали почитать? (желательно с примерами и чтобы все шаги описывались; можно что нибудь для чайников)
2) Как же без лабораторных работ

Лр 1:

Ввести целое число N, вывести все простые делители этого числа.
Я просто перебрал простые делители. Вот код:

#include <stdio.h>
void main (void)
{
int N;
int c;
printf("type N:\t");
scanf("%d", &N);
while (N%2==0 && 2<=N) {
printf("del = 2\n");
N = N/2;
}
while (N%3==0 && 3<=N) {
printf("del = 3\n");
N = N/3;
}
while (N%5==0 && 5<=N) {
printf("del = 5\n");
N = N/5;
}
while (N%7==0 && 7<=N) {
printf("del = 7\n");
N = N/7;
}
while (N%11==0 && 11<=N) {
printf("del = 11\n");
N = N/11;
}
while (N%13==0 && 13<=N) {
printf("del = 13\n");
N = N/13;
}
while (N%17==0 && 17<=N) {
printf("del = 17\n");
N = N/17;
}
while (N%19==0 && 19<=N) {
printf("del = 19\n");
N = N/19;
}
while (N%23==0 && 23<=N) {
printf("del = 23\n");
N = N/23;
}
if (N!=1)
printf("del = %d\n", N);

c=getchar(); //есть какой нибудь оператор, чтобы консоль не закрывалась ? c=getchar(); //пока приходится пользоваться этим не судите строго
}
Программа очень приметивна, т.е. если ввести число N равное 29*31, то она и выпишит это число 29*31 (тк я перебрал только до 23) Как можно улучшить программу ?

Лр 2:

Ввести строку и слово, удалить все вхождения слова и вывести строку.
задание немного не понял ввести строку и слово с клавиатуры ? (используя оператор scanf)
пока надумал только это: 2 массива, ввести строку\слово, зачистить тот массив в котором слово, вывести эти массивы.
На правильном хоть пути ?)


Заранее большое спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2011, 13:05
Ответы с готовыми решениями:

Несколько вопросов от начинающего
1. какое свойство объектов отвечает за 'доступ'? 2. Можно ли в запросе в графе 'условие отбора' ссылться на значения полей формы,...

Несколько простых вопросов от начинающего
Здравствуйте! Мне интересны следующие вопросы: 1. Где лучше объявить переменные нужные на протяжении всей работы программы? Например...

Несколько вопросов начинающего на Lotus+java
Добрый день. Вводные: Клиент 6.5.3 1. При замене суперкласса своей программы с AgentBase на DebugAgentBase на яваконсоли...

19
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
16.10.2011, 13:11
Цитата Сообщение от wind_mill Посмотреть сообщение
используя оператор scanf
scanf функция, а не оператор

Цитата Сообщение от wind_mill Посмотреть сообщение
Ввести строку и слово, удалить все вхождения слова и вывести строку.
задание немного не понял ввести строку и слово с клавиатуры ?
задание вы поняли верно

Цитата Сообщение от wind_mill Посмотреть сообщение
пока надумал только это: 2 массива, ввести строку\слово, зачистить тот массив в котором слово, вывести эти массивы.
На правильном хоть пути ?)
в конце вашей книги есть справочник функций по работе со строками, вот их и используйте
1
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:13  [ТС]
оперативно
будем думать !
0
анимешник++
 Аватар для Iworb
95 / 62 / 7
Регистрация: 03.11.2009
Сообщений: 427
16.10.2011, 13:19
День добрый.
Сам начинал учить Си в таком состояние) Ничего не читал, просто внимательно слушал лекции.
По поводу программы: на сколько я помню (а помню я не очень), простой делитель числа - то число, на которое оно делится без остатка. Если просто вывести, то как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
void main()
{
    int a;
    cout<<"Введите число: ";
    cin>>a;
    for(int i=1;i<a;i++)
        if(!(a%i)) cout<<i<<" ";
    system("pause");
}
(Писал в блокнотике, так что если чего не хватает - пишите)
1
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
16.10.2011, 13:27
Цитата Сообщение от wind_mill Посмотреть сообщение
Друзья, чтобы вы еще посоветовали почитать?
А Я архангельский у него два плюса первый это работает поиск второй из десяти книг тока в нём нашёл нужную инфу он хоть справочник но как учебник тоже подойдёт

Добавлено через 6 минут
Iworb, вот подправил до рабочего вида
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std; 
int main()
{
        int a;
        cout<<"Введите число: ";
        cin>>a;
        for(int i=1;i<=a;i++)
                if(!(a%i)) cout<<i<<" ";
        system("pause");
 return 0;       
}
0
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:29  [ТС]
День добрый.
Сам начинал учить Си в таком состояние) Ничего не читал, просто внимательно слушал лекции.
По поводу программы: на сколько я помню (а помню я не очень), простой делитель числа - то число, на которое оно делится без остатка. Если просто вывести, то как-то так:
простое число, это число, которое делится только на 1 и на само себя (например 2, 3 ,5 ,7 ,11,13 и тд)
ваша программа выпишет все делители числа (т.е. если а=8, то выпишет 1,2,4,8. А нужно чтобы выписал только 2 )
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
16.10.2011, 13:32
один момент щас всё будет
1
анимешник++
 Аватар для Iworb
95 / 62 / 7
Регистрация: 03.11.2009
Сообщений: 427
16.10.2011, 13:37
wind_mill, Так вам нужно проверить - простое это число или нет? (a=5 - результат=простое)
Или по заданному числу вывести все его делители, которые являются простыми числами? (a=25 результат=1, 5)
0
290 / 193 / 23
Регистрация: 03.08.2011
Сообщений: 2,824
Записей в блоге: 12
16.10.2011, 13:38
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std; 
int main()
{
        int a;
        cout<<"Введите число: ";
        cin>>a;
        for(int i=2;i<a;i++)
               if(!(a%i)) {cout << "число непростое"; system("pause");return 0;} 
       
        cout << "делители чила " <<1 <<" и " <<a <<endl;
        system("pause");
 return 0;       
}
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.10.2011, 13:41
1) У нас тоже с 1 семестра шарашили лабы по Си, наоборот это плюс. В методичке писали про пару функций, а в заданиях требовали с десяток) Плюс ко всему она наполовину описывала Паскаль, а не Си. Из литературы мне помог: Дейтел (Как программировать на С++) Хотя о нем я узнал только ко 2 семестру. До этого читал "С++ для чайников" и смотрел уроки teantog-a по ютюбу И главное - это практика, практика и еще раз практика. Забей на выражение "ну нам такое не давали, этого еще не было, я такое не знаю" - учи сам. Здесь все лежит на самопознании.

А вот первая задачка на С, т.к. некоторые преподователи могут потребовать именно на обычном
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <conio.h> // áèáëèîòåêà äëÿ getch()
#include <stdio.h>
 
int main(void)
{
    int a;
    printf("Enter a: ");
    scanf ("%i", &a);
    for (int i = 1; i <= a; i++)
        if (a % i == 0) // åñëè îñòàòîê îò äåëåíèÿ a íà i ðàâåí íóëþ
            printf("%i ", i);
    getch(); // ïàóçà
    return 0;
}
это выводит простые делители, сейчас переправлю чтоб только простые выводило
2
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:43  [ТС]
вот так:
Или по заданному числу вывести все его делители, которые являются простыми числами? (a=25 результат=1, 5)
0
анимешник++
 Аватар для Iworb
95 / 62 / 7
Регистрация: 03.11.2009
Сообщений: 427
16.10.2011, 13:49
wind_mill, Тогда нужны дополнительные функции, которые проверяли бы простоту числа, сейчас напишу. К сведению - пишу для любого числа (т.е. оно найдет все простые делители даже для не простого числа, но ели нужно, то можно и проверку на простоту искомого числа сделать).

Добавлено через 3 минуты
Воспользовавшись вышенаписанным от MrGluck кодом на Си, получил вот такое:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <conio.h> // библиотека для getch()
#include <stdio.h>
 
long fact(long p)
{
    long r=1;
    for(int i=1;i<=r;i++)
        r*=i;
    return r;
}
 
int iseasy(long p)
{
    if((fact(p-1)+1)%p) return 0;
    else return 1;
}
 
int main(void)
{
    long a;
    printf("Enter a: ");
    scanf ("%d", &a);
    for (long i = 1; i <= a; i++)
        if ((!(a%i))&&(iseasy(i))) // если остаток от деления a на i равен нулю
            printf("%d ", i);
    getch(); // пауза
    return 0;
}
0
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.10.2011, 13:51
Цитата Сообщение от wind_mill Посмотреть сообщение
Сейчас читаю Керниган Риччи "язык программирования с"
Друзья, чтобы вы еще посоветовали почитать? (желательно с примерами и чтобы все шаги описывались; можно что нибудь для чайников)
Ничего лучше вы не найдёте. Найдёте проще, но не лучше.

Из доков посоветую http://cplusplus.com/reference. Там справка по стандартной библиотеке Си++ и Си. ВНИМАНИЕ: заголовочный файл Си stdlib.h в Си++ называется cstdlib; stdio.h -> cstdio; string.h -> cstring; Сайт построен с учётом этого.
1
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:53  [ТС]
1) У нас тоже с 1 семестра шарашили лабы по Си, наоборот это плюс. В методичке писали про пару функций, а в заданиях требовали с десяток) Плюс ко всему она наполовину описывала Паскаль, а не Си. Из литературы мне помог: Дейтел (Как программировать на С++) Хотя о нем я узнал только ко 2 семестру. До этого читал "С++ для чайников" и смотрел уроки teantog-a по ютюбу И главное - это практика, практика и еще раз практика. Забей на выражение "ну нам такое не давали, этого еще не было, я такое не знаю" - учи сам. Здесь все лежит на самопознании.

А вот первая задачка на С, т.к. некоторые преподователи могут потребовать именно на обычном
да именно на обычном Но я паралельно литературу по с++ почитываю, поэтому переписать на си смогу )

Хотял же Дайтел'я взять Сегодня поеду в магазин.

Но ваша программа выписывает ВСЕ делители, а нужно только простые Можно конечно записать все делители в массив, а потом перебрать (решето Эратосфена применить например), но данном этапе уровень знаний просто не позволяет Хотя можно будет попробовать запрограммировать )
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.10.2011, 13:59
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <conio.h> // áèáëèîòåêà äëÿ getch()
#include <stdio.h>
 
int main(void)
{
    int a;
    printf("Enter a: ");
    scanf ("%i", &a);
    for (int i = 2; i <= a; i++)
        if (a % i == 0) // åñëè îñòàòîê îò äåëåíèÿ a íà i ðàâåí íóëþ íà÷èíàåì ïðîâåðêó äåëèòåëÿ
            for (int j = 2; j <= i; j++)
            {
                if (i % j == 0 && j != 1 && j != i) // äåëèòåëü íåïðîñòîé
                    break;
                if (j == i) // åñëè äîøëè äî êîíöà, ò.å. äåëèòåëü - ïðîñòîé      
                    printf("%i ", i);
            }
    getch(); // ïàóçà
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от wind_mill Посмотреть сообщение
вот так:

Или по заданному числу вывести все его делители, которые являются простыми числами? (a=25 результат=1, 5)
1 - не простое число
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.10.2011, 14:00
Цитата Сообщение от wind_mill
Сейчас читаю Керниган Риччи "язык программирования с"
Друзья, чтобы вы еще посоветовали почитать?
если ты её прочитаешь, ничего больше, кроме стандарта, читать не придётся
программирование и язык программирования - разные вещи
1
Фрилансер
Эксперт С++
 Аватар для Dekio
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
16.10.2011, 14:00
deleted
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.10.2011, 14:03
[del]
0
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 14:15  [ТС]
Спасибо большое ! )
зы буду думать над лр2
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.10.2011, 14:17
Удаление повторяющихся слов из стоки на C
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.10.2011, 14:17
Помогаю со студенческими работами здесь

Пара вопросов от начинающего
Всем привет. Друзья, изучаю PHP по книге Дэвиса&amp;Филлипса от 2008 года. Возникло несколько вопросов. Хотел бы уточнить у людей, которые...

Парочка вопросов от начинающего.
Только начал обучаться Java, нуждаюсь в вашей помощи. Видео-урок по которому обучаюсь имеет битый файла где рассказывается про цикл...

Вопрос от начинающего программиста
Добрый день! Интересует вопрос: возможно ли отметить и измерить длину обозначенных отрезков на изображении в VB. Если да, то подскажите...

Трудности начинающего программиста
Всем привет, сегодня я решил начать изучать С++, так как в школе я прогуливал уроки информатики, поэтому в программировании я ничего не...

Игра начинающего программиста
В общем проблема такая есть игра, когда её запускаешь, то какой бы ты не выбрал уровень сложности то все равно выпадают только 2 вида...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru