• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Opinia o programach.

VPS Starter Arubacloud
0 głosów
424 wizyt
pytanie zadane 4 grudnia 2017 w C i C++ przez adambdx7 Początkujący (280 p.)
edycja 5 grudnia 2017 przez adambdx7

Witam. Od jakiegoś czasu uczę się programować w C. Kompilator z którego korzystam to Code::blocks. Chciałbym prosić was o zostawienie opinii o moich programach. Miło byłoby również zobaczyć jak wy byście to napisali. Zapraszam do dyskusji i pozdrawiam!

1. Program ma wczytywać liczby całkowite z klawiatury do chwili, gdy ich amplituda (różnica między największą, a najmniejszą wczytaną liczbą) przekroczy podaną przez użytkownika liczbę. UŻYJ PĘTLI WHILE.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int liczba, lmax, lmin;
    printf("Wprowadz liczbe: ");
    scanf("%d",&liczba);
    lmax=liczba;
    lmin=liczba;
    while(lmax-lmin<=liczba)
    {
        printf("Wprowadz liczbe: ");
        scanf("%d",&liczba);
        if(liczba>lmax)
                lmax=liczba;
        //printf("lmax %d",lmax);
        if(liczba<lmin)
                lmin=liczba;
        //printf("lmin %d",lmin);
    }
    return 0;
}

 

2.Napisz program, który wykorzystujac wzór Herona na pole trójkąta (P=pierwiastek z p(p-a)(p-b)(p-c), gdzie p jest połową obwodu trójkąta, a,b,c długościami boków trójkąta).

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int a,b,c;
    float p, pole;
    printf("Wpisz boki trojkata: \n");
    scanf("%d %d %d",&a,&b,&c);
    if((a+b>c)&&(a+c>b)&&(b+c>a))
    {
        /*printf("a=%d b=%d c=%d",a,b,c);*/
        p=(a+b+c)/2.0;
        pole=sqrt(p*(p-a)*(p-b)*(p-c));
        printf("Pole trojkata jest rowne %.4f",pole);
    }
    else
        printf("Taki trojkat nie istnieje!");
    return 0;
}

3.  S**J Odrzuca mój kod, a działa prawidłowo, co waszym zdaniem jest nie tak? Jest to program na liczby pierwsze z zakresów podanych w programie.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    int i, j, x;
    printf("Ile liczb chcesz sprawdzic? ");
    scanf("%d",&n);
    while(n>=100000)
    {
        printf("Sprawdzamy ponizej 100000 liczb!.\n");
        printf("Ile liczb chcesz sprawdzic?");
        scanf("%d",&n);
    }
    printf("Kolejno wprowadzaj liczby: \n");
    for(i=1; i<=n; i++)
    {
        scanf("%d",&x);
        if(x>10000||x<1)
        {
            printf("Wprowadz liczbe z przedzialu [1;10000]!");
            scanf("%d",&x);
        }
        int ok=1;
        for(j=2; j<x; j++)
        {
           if(x%j==0)
                ok=0;
        }
        if(ok&&x>2)
            printf("TAK\n");
        else
            printf("NIE\n");
    }

    return 0;

 

komentarz 4 grudnia 2017 przez Zubru22 Bywalec (2,670 p.)
Treść pytania było trzeba zostawić po za blokiem "code", utrudniasz przeczytanie swojego pytania innym.
komentarz 4 grudnia 2017 przez Knayder Nałogowiec (37,640 p.)
Ale co tu niby oceniać?
komentarz 4 grudnia 2017 przez k222 Nałogowiec (30,150 p.)
Trudno dyskutować nad kilku linijkowymi programami typu podstaw do wzoru - jak napiszesz coś ambitniejszego wtedy tak, na razie wszystko jest ok, ale przesadnie trudne to to nie było
1
komentarz 4 grudnia 2017 przez Arkadiusz Waluk Ekspert (287,550 p.)
Pozwoliłem sobie edytować pytanie, aby tekst był poza bloczkiem kodu. Mogło to nie być zamierzonym błędem pytającego, edytor przy wstawieniu bloczka i pisaniu przed nim sprawia pewne problemy.
komentarz 4 grudnia 2017 przez adambdx7 Początkujący (280 p.)
Tak, dzięki. Walczyłem z tym od jakiegoś czasu i nie mogłem dojść do tego, aby usunąć ten blok, który był wcześniej.

Co do oceny, dyskusji. Chodzi mi o to, czy poprawnie rozumuję, czy założenia są dobre itp. Czy da się napisać to samo, ale np dużo prościej. Nie chcę rozwiązania podanego na talerzu, ale jeśli ktoś już programuje od jakiegoś czasu to widzi popełniane błędy, np coś z czego nie powinienem korzystać, lub powinienem z tego korzystać inaczej.
komentarz 4 grudnia 2017 przez k222 Nałogowiec (30,150 p.)
Założenia są dobre, programy są napisane świetnie, nie, nie da się ich prościej napisać - to jest odpowiedź na twoje pytania.

Aczkolwiek w wyższych komentarzach chodzi o to że trudno oceniać jakość napisania programów, których nie da się w sumie inaczej napisać (chyba że na siłę) i wymagają w sumie użycia jednej pętli lub jednej instrukcji warunkowej.  Zrób coś pokroju tego: http://pl.spoj.com/problems/AL_13_07/ (średnie zadanko ze spoja) wtedy porozmawiamy o błędach, udoskonaleniach itp.)
komentarz 4 grudnia 2017 przez adambdx7 Początkujący (280 p.)
Ok. W ramach wyjaśnienia - ten wątek będzie na bieżąco edytowany, żeby nie zakładać kolejnych tego typu.
komentarz 5 grudnia 2017 przez adambdx7 Początkujący (280 p.)

Mam problem z funkcją "gramy". Uczę się działania na listach i nie mogę wymyślić sposobu na zamienienie wartości oprócz tego wyżej, tyle, że on nie działa. Zastanawiałem się nad utworzeniem drugiej listy i przenoszeniem tych wartości tam, jeśli spełnią warunki. Lista ta byłaby tylko podciągiem z zadania i od razu odpowiedzią. Co o tym myślicie? Jak wy byście to rozwiązali? (bez kodu na razie jeśli możecie).

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct szElement
{
    int id;
    int id2;
    struct szElement *nast;
    struct szElement *pop;
}Element;
typedef struct szLista
{
    Element *pierwszy;
    Element *ostatni;
    int ilosc;
}Lista;
void wyzeruj(Lista *L)
{
    L->pierwszy=NULL;
    L->ostatni=NULL;
    L->ilosc=0;
}
Element *nowy(int x, int y)
{
    Element *E=malloc(sizeof(Element));
    E->pop=NULL;
    E->nast=NULL;
    E->id=x;
    E->id2=y;
}
void dodaj_na_koniec(Lista *L, Element *E)
{
    if(L->pierwszy)
    {
        L->ostatni->nast=E;
        E->pop=L->ostatni;
        L->ostatni=E;
        L->ilosc++;
    }
    else
    {
        L->pierwszy=E;
        L->ostatni=E;
        L->ilosc=1;
    }
}
void wyswietl(Lista *L)
{
    Element *iter;
    printf("",L->ilosc);
    for(iter=L->pierwszy;iter;iter=iter->nast)
    {
        printf("%d|%d ",iter->id,iter->id2);
    }
}
void gramy(Lista *L)
{
    Element *temp2;
    Element *temp;
    Element *iter;
    for(iter=L->pierwszy;iter;iter=iter->nast)
    {
        //printf("[%d]",iter->id);
        for(temp=iter->nast;temp;temp=temp->nast)
        {
            //printf("|%d|",temp->id);
            break;
        }
        if(iter->id==temp->id)
        {
            temp2=temp->id;
            temp->id=iter->id;
            iter->id=temp2;
        }
        if(iter->id2==temp->id2)
        {
            temp2=temp->id2;
            temp->id2=iter->id2;
            iter->id2=temp2;
        }
    }
}
int main()
{
    srand(time(NULL));
    int ile, x;
    int i=1;
    Lista L;
    wyzeruj(&L);
    printf("Wprowadz ilosc kosci: ");
    scanf("%d",&ile);
    while(i<=ile)
    {
        dodaj_na_koniec(&L,nowy(rand()%7,rand()%7));
        i++;
    }
    printf("Domino przed rozgrywka:\n");
    wyswietl(&L);
    gramy(&L);
    printf("Domino po rozgrywce:\n");
    wyswietl(&L);


return 0;
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 2,339 wizyt
0 głosów
1 odpowiedź 1,077 wizyt
pytanie zadane 2 czerwca 2021 w Offtop przez cava96 Gaduła (3,940 p.)
0 głosów
2 odpowiedzi 158 wizyt
pytanie zadane 22 czerwca 2020 w Offtop przez niezalogowany

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...