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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.77
ahahac
0 / 0 / 0
Регистрация: 23.07.2012
Сообщений: 19
#1

hello world 10 раз - C++

23.07.2012, 17:09. Просмотров 4758. Ответов 65
Метки нет (Все метки)

нужен вывести hello world 10 раз через for и while.как это сделать я не знаю.
printf 10 раз не подходит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2012, 17:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос hello world 10 раз (C++):

Рекурсия: вывод "Hello, World!" N раз - C++
Напишите, пожалуйста, код, который выводит "Hello, World!" N раз. Не могу понять, как пользоваться рекурсией. Например: Ввод: 2 ...

Поменять слова местами то есть Hello World > World Hello C++ - C++
Ребят всем привет помогите решить задачку: Имеется предварительно созданный текстовый файл, содержащий строку "Hello World". Поменять слова...

Рекурсивная програма которая по очереди будет выводить 1(16 раз), 2(8 раз), 3 (4 раза) - C++
подробнее смотрите вложение

Вывести числа, которые встречаются в массиве несколько раз / один раз - C++
дан массив состоящий из 100 целых чисел. а)Вывести все числа,которие встречаются в етом массиве несколько раз б)Вывести все...

Hello, World! - C++
Добрый день. Купил книгу Б.Страуструпа - Принципы и практика использования С++, Напечатал первый код , при компиляции выскочили...

Hello World! - C++
Доброго времени товарищи. Не могу никак найти тему. Где-то на этом форуме есть целая тема в которой предствалена огромная куча вариантов...

65
Endiff
24.07.2012, 20:04     hello world 10 раз
  #46

Не по теме:

Даешь ассемблер...

0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
24.07.2012, 20:11 #47
C++
1
2
3
4
5
6
7
8
#include <cstdio>
 
struct hello_world { hello_world() { puts("Hello, world!"); } } _[10];
 
int main()
{
    
}
2
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
24.07.2012, 20:12 #48
Вот ещё вариант
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    int i;
    for(i=0;i<10;i++)
    {
        goto hello;
ret : goto world;
        ret2 :;
    }
    if(i<10)
    {
hello : cout<<"Hello ";
    goto ret;
world : cout<<"world"<<endl;
    goto ret2;
    }
    system("pause");
}
0
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
24.07.2012, 20:14 #49
Мне кажется, более правильно было бы так:

C++
1
2
3
4
5
6
7
char msg[] = "Hello, world";
 
asm {
    lea dx, msg
    mov ah,9
    int 0x21 
}
В DOS-овском варианте работать будет...
0
ZaMaZaN4iK
Мой лучший друг-отладчик!
164 / 164 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
24.07.2012, 20:18 #50
Может ещё кинуть способ с использованием шифрования по Виженеру?)))
0
Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
24.07.2012, 20:19 #51
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main()
{
    const char str[] = "Khoor/#zruog$";
 
    for (int i=0; i<strlen(str); i++)
        cout << char(str[i] - 3);
 
    cout << endl;
    system("pause");
    return 0;
}
0
Endiff
24.07.2012, 20:19
  #52

Не по теме:

Catstail, вам виднее

0
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
24.07.2012, 20:51 #53
Если уж совсем точно, то в DOS-е вот ЭТО работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
   char msg[]="Hello!!!$";
 
   asm    push ss
   asm    pop  ds
   asm    lea dx,msg
   asm    mov ah,9
   asm    int 0x21
 
   return 0;
}
0
ValeryS
Модератор
6676 / 5085 / 475
Регистрация: 14.02.2011
Сообщений: 17,056
24.07.2012, 20:55 #54
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
char msg[] = "Hello, world";
int main()
{ 
asm_ {
       mov ecx,10;
       lea edx,msg;
met1: push ecx;
         push edx;
         call printf;
        pop eax; // восстановить стек
        pop ecx;
        loop met1; 
 }
}
Dll будем делать??
1
Troll_Face
600 / 400 / 4
Регистрация: 26.04.2012
Сообщений: 2,070
24.07.2012, 21:28 #55
Цитата Сообщение от ValeryS Посмотреть сообщение
pop eax; // восстановить стек
вы кладете в стек edx, а достаете eax... непорядок

Добавлено через 1 минуту
Catstail, я думаю надо все таки переписать под ВрайтКонсольА...
0
Catstail
Модератор
22711 / 11080 / 1795
Регистрация: 12.02.2012
Сообщений: 18,268
24.07.2012, 21:31 #56
Надо бы...
0
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
24.07.2012, 21:38 #57
Ассемблерная вставка:
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
29
30
#include <windows.h>
#include <stdio.h>
 
int main() {
   //НАйдём адрес нужной нам функции puts
   long int adres_puts= (long int)GetProcAddress (LoadLibrary ("msvcrt"), "puts");
 
 
   //Теперь цикл
   for (int i= 0; i< 10; i++) {
 
 
    //Здесь мы с помощью ассемблерной вставки кладём на вершину стека
    //Адрес "Hello, word" и прыгаем на адрес adres_puts, осуществляя 
    //тем самым вызов puts c нужным параметром
    asm ("push %0; \
          call %1; \
          ADD ESP, 4"
          :
          :"r"("Hello, word!"), "r" (adres_puts)
          :);
   
   }
   
   //ВЫравнивание стека я осуществил по-сермяжному с помощью "ADD ESP, 4"
   //Хотя правильно быо бы RETN ну да и так сойдёт
    getchar ();
    return 0;
 
}
компилить
Bash
1
g++ main.cpp -masm=intel
А можно было бы вообще стек не выравнивать, всё равно программа закончилась
0
ValeryS
Модератор
6676 / 5085 / 475
Регистрация: 14.02.2011
Сообщений: 17,056
24.07.2012, 22:13 #58
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Fatal Error Посмотреть сообщение
вы кладете в стек edx, а достаете eax... непорядок
вот этим
Цитата Сообщение от ValeryS Посмотреть сообщение
push edx;
call printf;
я передаю аргумент функции printf
аналогично printf("Hello word)
можно написать
Assembler
1
2
push msg;
call printf;
а вот этим
Цитата Сообщение от ValeryS Посмотреть сообщение
pop eax; // восстановить стек
я выравниваю стек,поскольку printf Сишная а не паскалевская функция, стек должна править вызывающяя функция, в паскалевских вызываемая.
можно сделать в любой неиспользуемый регистр
а можно и так
Assembler
1
 ADD ESP, 4
что в принципе приведет к одному результату -указатель стека сдвинется
Понятно объяснил?

Добавлено через 3 минуты
Цитата Сообщение от kravam Посмотреть сообщение
А можно было бы вообще стек не выравнивать, всё равно программа закончилась
а в цикле потом i найдешь?? указатель то сдвинулся

Добавлено через 7 минут

Не по теме:

Цитата Сообщение от Fatal Error Посмотреть сообщение
Catstail, я думаю надо все таки переписать под ВрайтКонсольА...
Цитата Сообщение от Catstail Посмотреть сообщение
Надо бы...
Представляю
придет наш ТС к своему преподавателю да и выложит все наши наработки
Тот посмотрит и скажет: "Что ты здесь делаешь? Дуй в академию наук"

3
kravam
быдлокодер
1697 / 884 / 45
Регистрация: 04.06.2008
Сообщений: 5,482
24.07.2012, 22:22 #59
Цитата Сообщение от ValeryS Посмотреть сообщение
а в цикле потом i найдешь?? указатель то сдвинулся
проверено, находится корректно, хз к чему там i привязывается.
0
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
24.07.2012, 22:25 #60
Совсем для наркоманов
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <boost/mpl/vector_c.hpp>
#include <boost/mpl/for_each.hpp>
#include <boost/lambda/lambda.hpp>
 
int main()
{
   for(int i = 10;; i ? boost::mpl::for_each <boost::mpl::vector_c <char, 'H','e','l','l','o',',', ' ','W','o','r','l','d'>> (std::cout<<boost::lambda::_1), std::cout<<std::endl, i-- : 0);
}
0
24.07.2012, 22:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2012, 22:25
Привет! Вот еще темы с ответами:

Hello world - C++
почему в codeblocks программа #include &lt;iostream&gt; using namespace std; int main() { cout &lt;&lt; &quot;Hello world!&quot; &lt;&lt; endl; ...

Hello world C: - C++
Доброго времени суток! Собственно, начал изучать С++, пользуюсь VS2012 Почему этот код работает #include &quot;stdafx.h&quot; ...

Hello, World! - C++
Добрый день. Недавно начал изучать си++. Работаю в Microsoft Visual Studio 2008. Написал такую программу: // Test.cpp : Defines the...

HELLO WORLD - C++
Vsem Privet:) Ranshe ya izuchil yizik PASKAL;:umnik: A tiper C++ :umnik: Na PASKALE bil nekotoriy funksiy rabota so storokami; ...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru