Odwrotne wypisanie tablicy liczb

Odpowiedz Nowy wątek
2019-11-06 19:01
0

Napisz program, który wczyta z klawiatury ciąg zawierający C liczb typu double do tablicy
statycznej, następnie odwróci kolejność elementów w niej (pierwszy staje się ostatni itd.)
oraz wypisze na ekran zmodyfikowaną tablicę. Wartość C (np. 6) należy zawrzeć w
programie i powinna ona występować co najwyżej 2 razy


#include <stdio.h>
#include <cstdlib>

int main()
{
    const int NMAX = 1000;
    double tab[NMAX];
    int n;

    do {
        printf("podaj dlugosc tablicy \n");
        scanf("%d", &n);
        if (n <= 0 || n > NMAX)
            printf("podana liczba jest spoza zakresu podaj jeszcze raz\n ");
    } while (n <= 0 || n > NMAX);

    for (int i = 0; i < n; i++) {
        printf("Podaj %d element tablicy ", i);
        scanf("%lf", &tab[i]);
    }

    for (int i = n; i; i--) {
        printf("%lf\n", tab[i - 1]);
    }
    system("PAUSE");
    return 0;
}

udało się zrobić coś takiego, natomiast w ogóle nie wiem jak sie zabrać za tę ostatnią część zadania.

edytowany 2x, ostatnio: kq, 2019-11-06 20:36
2019-11-06 19:39
0

Chyba Masz odwrócić tablicę, a nie wydrukować od tyłu oryginalną, zmieniony kod po wczytaniu tablicy:

   for (int i=0; i<n; i++){
            printf("Podaj %d element tablicy ", i);
            scanf("%lf", &tab[i]);
}
    int start = 0;
    int end = n - 1;

    while (start < end) {
    double temp = tab[start];
    tab[start++] = tab[end];
    tab[end--] = temp;
    }
        for (int i = 0; i < n; ++i)
        printf("%lf ", tab[i]);
     system("PAUSE");
return 0;
}

W zadaniu jest, że tablica ma mieć n liczb, a nie NMAX, ale drukuje i tak tyle ile jest wczytane, jak tak może być to spoko.


edytowany 2x, ostatnio: lion137, 2019-11-06 20:30
C występuje 3 razy! - _13th_Dragon 2019-11-06 20:52

Pozostało 580 znaków

2019-11-06 20:05
0

A jaka jest różnica między tym, że tablica jest odwrotna a pokazuje wartości od końca?
Jak mam zrobić żeby te wartości które są wpisywane pokazały się maksymalnie dwa razy?
Niestety nie ogarniam tego i jestem w sumie na początku nauki programowania, więc jeśli to możliwe to proszę o takie łopatologiczne wytłumaczenie tego.

Pozostało 580 znaków

2019-11-06 20:22
0

A jaka jest różnica między tym, że tablica jest odwrotna a pokazuje wartości od końca?

Różnica jest więcej niż podstawowa, cytując klasyka; w temacie zadania jest, że Masz odwrócić tablicę, a potem tak zmodyfikowaną wydrukować.

Jak mam zrobić żeby te wartości które są wpisywane pokazały się maksymalnie dwa razy?

Nie zauważyłem za pierwszym razem, stała C ma być zawarta w programie, a nie czytana z klawiatury, czyli na początku: double tab[10]; int C = 10;. Tę stałą, C - długość tablicy, Możesz uzyć, w programie, co najwyżej dwa razy, a nie wydrukować wartości tablicy dwa razy.


edytowany 1x, ostatnio: lion137, 2019-11-06 20:29

Pozostało 580 znaków

2019-11-06 20:30
0

Różnica jest więcej niż podstawowa, cytując klasyka; w temacie zadania jest, że Masz odwrócić tablicę, a potem tak zmodyfikowaną wydrukować."
Czyli mimo, że kompilator pokazuje te same wartości to chodzi o to, żeby zrobić w ten sposób, który Pan przedstawił? Dobrze rozumiem?

Nie zauważyłem za pierwszym razem, stała C ma być zawarta w programie, a nie czytana z klawiatury, czyli na początku: double tab[10]; int C = 10;. Tę stałą, C - długość tablicy, Możesz uzyć, w programie, co najwyżej dwa razy, a nie wydrukować wartości w tablicy dwa razy.

Chodzi o to, że mam napisać jakiś program i on ma wykorzystać wartości tej tablicy dwa razy?

Pozostało 580 znaków

2019-11-06 20:33
0

Chodzi o to, że mam napisać jakiś program i on ma wykorzystać wartości tej tablicy dwa razy?

Przeczytaj uważnie treśc zadania, a potem to co napisałem i Odpowiedz, których słów/zdań nie Rozumiesz.


Pozostało 580 znaków

2019-11-06 20:39
0

Przeczytaj uważnie treśc zadania, a potem to co napisałem i Odpowiedz, których słów/zdań nie Rozumiesz.

Ogólnie tego ostatniego zdania, bo nie rozumiem co mam zrobić z tym C.
to C jest moją 'liczbą' którą ustalam ilość tablic?

Pozostało 580 znaków

2019-11-06 21:05
0

Zadanie nie do rozwiązania, C musi wystąpić:

  • Deklaracja
  • Wprowadzenie
  • Wczytaywanie
  • Odwracanie
  • Wyświetlanie

Są dwa sposoby na to to:

  • unsigned C=wczytajRozmiar(); // wczytajRozmiar trza napisać
    RobReszte(C); // RobReszte też trza napisać

    C występuje 2 razy

  • RobReszte(wczytajRozmiar()); // wczytajRozmiar trza napisać, RobReszte też trza napisać

    C występuje 0 razy


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Ale to i tak będzie fikcyjne rozwiązanie, bo i tak C musi wystąpić 5 razy i tak, ewentualnie pod inną nazwą - _13th_Dragon 2019-11-06 21:07

Pozostało 580 znaków

2019-11-06 21:24
0

Chodzi o coś takiego?

#include <stdio.h>
#include <cstdlib>

int main()
{
    const int C=10;
    double tab[C];

     for (int i=0; i<10; i++){
            printf("Podaj %d element tablicy ", i);
            scanf("%lf", &tab[i]);
}
    int start = 0;
    int end = 10 - 1;

    while (start < end) {
    double temp = tab[start];
    tab[start++] = tab[end];
    tab[end--] = temp;
    }
        for (int i = 0; i < 10; ++i)
        printf("%lf ", tab[i]);
     system("PAUSE");
return 0;
}
edytowany 3x, ostatnio: it234, 2019-11-06 21:25

Pozostało 580 znaków

2019-11-06 21:30
0

Ogólnie tego ostatniego zdania, bo nie rozumiem co mam zrobić z tym C.
to C jest moją 'liczbą' którą ustalam ilość tablic?

Widać, że nie Zrozumiałeś, C nie jest liczbą, która ustala "ilość tablic", WTF, skąd Ci to przyszło do głowy? C jest długością tablicy, na której operuje program i jest w ten program, wbudowana.

Zadanie nie do rozwiązania, C musi wystąpić:

Deklaracja
Wprowadzenie
Wczytaywanie
Odwracanie
Wyświetlanie

Niekoniecznie pięć razy, ale trzy, "Wartość C (np. 6) należy zawrzeć w programie", rozumiem, to tak, że jest to stała ustalona w kodzie, czyli można (?) zrobić tak:

    double tab[10];
    int C = 10; // to sie nie powinno liczyć, definicja C

    for (int i = 0; i < C; i++) { // pierwsze uzycie
        printf("Podaj %d element tablicy ", i);
        scanf("%lf", &tab[i]);
    }

    int start = 0;
    int end = C - 1; // drugie uzycie

    while (start < end) {
    double temp = tab[start];
    tab[start++] = tab[end];
    tab[end--] = temp;
    }

    for (int i = 0; i < C; ++i) { // tzrecie
        printf("%lf ", tab[i]);
    }
    system("PAUSE");
    return 0;

Czyli, literalnie traktując nie do rozwiązania, chociaż jak odliczyć czytanie i drukowanie, to w samym odwracaniu jest użyta raz, a szczerze pisząc, nie widzę możliwości odwrócenia tablicy w C bez znajomości długości.


Nie pobrałeś C od użytkownika dla tego mniej o jeden, to sie nie powinno liczyć, definicja C jeszcze mniej o jeden bo ci się tak zechciało? - _13th_Dragon 2019-11-06 21:40
Dokładnie, bo tak mi się zachciało i pasuje pod tezę:), ale na poważnie, to rozumiejąc to literalnie, to C, rzeczywiście musi wystąpić co najmniej cztery razy: deklaracja, wczytanie, odwracanie, wypisanie. Co Rozumiesz przez wprowadzenie? Ok, wprowadzenie, jako ustalenie rozmiaru tablicy, to pięć:) - lion137 2019-11-06 21:42
5 - jeżeli użytkownik podaje, 4 - jeżeli stała. Mniej to sztuczne oszustwa. - _13th_Dragon 2019-11-06 21:46
Tak, niech OP @it234 wróci do autora zadania z prośbą o sprecyzowanie. - lion137 2019-11-06 21:47

Pozostało 580 znaków

2019-11-06 22:02
0

C może wystąpić raz:

#include <stdio.h>

int main()
{
    double arr[10];
    size_t len = sizeof(arr) / sizeof(arr[0]);

    printf("%d\n", len);

    return 0;
}

A co do pętli, to jeśli to ma być C++ to można użyć std::begin i std::end:

#include <iostream>

using namespace std;

int main()
{
    double arr[10] = {1., 2., 3., 4., 5., 6., 7., 8., 9., 10.};

    for(auto it = std::begin(arr); it != std::end(arr); ++it) {
       cout << *it << endl;  
    }

    return 0;
}

Szacuje się, że w Polsce brakuje 50 tys. programistów
zostaw puste nawiasy [] i będzie 0 razy! - _13th_Dragon 2019-11-07 00:13
... ale podejrzewam że nie o to chodzi. - _13th_Dragon 2019-11-07 00:16

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0