2016-02-17 1 views
-2

Мне было поручено создать программу, которая использует 4 разных цикла для печати одной и той же вещи 4 раза (x, x^2, x^3, x!). Проблема, с которой я сталкиваюсь, заключается в том, что за один раз запускается только один цикл. Как я могу сделать все петли выполняются так, что мой выход выглядит следующим образом:Пытается запустить несколько циклов в C

0 0 0 1 
1 1 1 1 
0 0 0 1 
1 1 1 1 
0 0 0 1 
1 1 1 1 
0 0 0 1 
1 1 1 1 

Ниже приведен код, который я написал до сих пор, но я не могу получить все петли одновременно запустить. Мой вывод будет выводиться на экран только один раз, вместо того, чтобы печатать 4 раза. Может ли кто-нибудь просмотреть мой код и сообщить мне, где я ошибся?

#include<stdio.h> 

    void main() 
    { 
    int i =1 ,num; 
//Prompt user for an input 
    printf("Enter a number: "); 
    scanf("%d", &num); 
    if (num < 0) 
      printf("Error: Factorial of negative number doesn't exist."); 
    //Loop 1 
    for(i = 1; i <= num; i++) 

    printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 
    //Loop 2 
     while(i < num) { 
    printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 
     i++; 
     //Loop 3 
     do { 
     printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 

     i++; 
     }while(i < num); 

     } 
    //Loop 4 without for, while, do while 
    if (i <= num) 
    printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 
    i++; 
    } 


//Function to calculate a factorial 

int factorial(int n) 

    { 
     int c; 
     int result = 1; 

     for (c = 1; c <= n; c++) 
     result = result * c; 

     return result; 
    } 

Программа предназначена принять ряд от пользователя и запустить 4 различных циклов с этим номером (для, в то время как, делать-то время, и построен цикл через если заявление).

+0

Первый формат и ваш код! Это непроницаемый беспорядок. – Olaf

+0

Вам необходимо сбросить i – Maxqueue

+0

Попробуйте сделать что-то еще, что работает, вместо этой вещи, которая не работает. Почему вы устанавливаете идею «четыре петли параллельно»? – immibis

ответ

0

Вам нужно сбросить переменную "я"

Вы имеете INT I = 1;

Затем после 1-го цикла цикла я не буду < = num;

int i = 1; 
for loop...//1 

i=1; 
while loop...//2 
0

Привет Ваш вопрос не ясно, как мы можем получить его, однако вы ищете для запуска циклов в параллельном пути, и это может быть сделано с потоками вы можете проверить: https://computing.llnl.gov/tutorials/pthreads/ и я сделал простой пример без резьбы, если это может помочь вам в завершении вашей работы:

#include <stdio.h> 

int factorial(int n) { 
    int c; 
    int result = 1; 

    for (c = 1; c <= n; c++) 
    result = result * c; 

    return result; 
} 

void forLoop(int num) { 
    static int i = 1; 
    int j; 
    for(j = 0 ; i <= num && j < 2; i++, j++) 
    printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 
} 

void whileLoop(int num) { 
    static int i = 1; 
    int j = 0; 
    while(i <= num && j < 2) { 
    printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 
    i++; 
    j++; 
    } 
} 

void doWhileLoop(int num) { 
    static int i = 1; 
    int j = 0; 
    do { 
    printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 
    i++; 
    j++; 
    } while(i <= num && j < 2); 
} 
void constructedLoop(int num) { 
    static int i = 1; 
    int j = 0; 
    loop: 
    if(i <= num && j < 2) { 
     printf("%d %d %d %d \n", i, (i) * (i), (i) * (i) * (i), factorial(i)); 
     i++; 
     j++; 
     goto loop; 
    } 
} 

int main() { 
    int i =1 ,num; 
//Prompt user for an input 
    printf("Enter a number: "); 
    scanf("%d", &num); 
    if (num < 0){ 
    printf("Error: Factorial of negative number doesn't exist."); 
    return 0; 
    } 
    while(i <= num) { 
    forLoop(num); 
    whileLoop(num); 
    doWhileLoop(num); 
    constructedLoop(num); 
    i += 2; 
    } 
    return 0; 
} 
+0

, поэтому я получил этот вывод для печати три раза. Теперь мне просто нужна помощь в конструировании конечного цикла без каких-либо функций while, while или while. и я не могу использовать рекурсию – Dave

+0

без рекурсии и без циклов, чтобы вы могли использовать инструкцию goto? –

+0

Я могу использовать goto im, просто не уверен, как правильно отформатировать его, не создавая бесконечный цикл – Dave