Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
wind_mill
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:05     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #1
Доброго времени суток !
Хотел бы получить советы от опытных программеров )
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 массива, ввести строку\слово, зачистить тот массив в котором слово, вывести эти массивы.
На правильном хоть пути ?)


Заранее большое спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2011, 13:05     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста
Посмотрите здесь:

C++ Несколько вопросов в написании "Кто хочет стать миллионером"
C++ Несколько простых вопросов от начинающего
C++ "cin","cout" на "printf","scanf"
C++ printf %"specificator"
C++ округление printf("%.4f", (float) ans ); и printf("%.4lf", ans );
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.10.2011, 13:11     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #2
Цитата Сообщение от wind_mill Посмотреть сообщение
используя оператор scanf
scanf функция, а не оператор

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

Цитата Сообщение от wind_mill Посмотреть сообщение
пока надумал только это: 2 массива, ввести строку\слово, зачистить тот массив в котором слово, вывести эти массивы.
На правильном хоть пути ?)
в конце вашей книги есть справочник функций по работе со строками, вот их и используйте
wind_mill
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:13  [ТС]     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #3
оперативно
будем думать !
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
16.10.2011, 13:19     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #4
День добрый.
Сам начинал учить Си в таком состояние) Ничего не читал, просто внимательно слушал лекции.
По поводу программы: на сколько я помню (а помню я не очень), простой делитель числа - то число, на которое оно делится без остатка. Если просто вывести, то как-то так:
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");
}
(Писал в блокнотике, так что если чего не хватает - пишите)
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 13:27     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #5
Цитата Сообщение от 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;       
}
wind_mill
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:29  [ТС]     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #6
День добрый.
Сам начинал учить Си в таком состояние) Ничего не читал, просто внимательно слушал лекции.
По поводу программы: на сколько я помню (а помню я не очень), простой делитель числа - то число, на которое оно делится без остатка. Если просто вывести, то как-то так:
простое число, это число, которое делится только на 1 и на само себя (например 2, 3 ,5 ,7 ,11,13 и тд)
ваша программа выпишет все делители числа (т.е. если а=8, то выпишет 1,2,4,8. А нужно чтобы выписал только 2 )
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 13:32     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #7
один момент щас всё будет
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
16.10.2011, 13:37     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #8
wind_mill, Так вам нужно проверить - простое это число или нет? (a=5 - результат=простое)
Или по заданному числу вывести все его делители, которые являются простыми числами? (a=25 результат=1, 5)
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
16.10.2011, 13:38     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #9
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;       
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
16.10.2011, 13:41     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #10
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;
}
это выводит простые делители, сейчас переправлю чтоб только простые выводило
wind_mill
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 13:43  [ТС]     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #11
вот так:
Или по заданному числу вывести все его делители, которые являются простыми числами? (a=25 результат=1, 5)
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
16.10.2011, 13:49     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #12
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;
}
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.10.2011, 13:51     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #13
Цитата Сообщение от wind_mill Посмотреть сообщение
Сейчас читаю Керниган Риччи "язык программирования с"
Друзья, чтобы вы еще посоветовали почитать? (желательно с примерами и чтобы все шаги описывались; можно что нибудь для чайников)
Ничего лучше вы не найдёте. Найдёте проще, но не лучше.

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

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

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

Но ваша программа выписывает ВСЕ делители, а нужно только простые Можно конечно записать все делители в массив, а потом перебрать (решето Эратосфена применить например), но данном этапе уровень знаний просто не позволяет Хотя можно будет попробовать запрограммировать )
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
16.10.2011, 13:59     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #15
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 - не простое число
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.10.2011, 14:00     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #16
Цитата Сообщение от wind_mill
Сейчас читаю Керниган Риччи "язык программирования с"
Друзья, чтобы вы еще посоветовали почитать?
если ты её прочитаешь, ничего больше, кроме стандарта, читать не придётся
программирование и язык программирования - разные вещи
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
16.10.2011, 14:00     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #17
deleted
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
16.10.2011, 14:03     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #18
[del]
wind_mill
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 45
16.10.2011, 14:15  [ТС]     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #19
Спасибо большое ! )
зы буду думать над лр2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2011, 14:17     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста
Еще ссылки по теме:

C++ Что означают символы в скобках: printf (" %2d%7.2f ",t);??? (-)
Прикол: Эволюция программиста на примере "Hello world" C++
C++ Как заменить функцию printf из "С" в "С++"?

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,428
16.10.2011, 14:17     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста #20
Удаление повторяющихся слов из стоки на C
Yandex
Объявления
16.10.2011, 14:17     printf("Hello, CyberForum.ru!!!\n"); //несколько вопросов от начинающего программиста
Ответ Создать тему
Опции темы

Текущее время: 20:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru