Zaliczenie C

0

Mam prosbe czy mogłby mi ktos pomoc w napisaniu ponizszego projektu, z gory dziekuje. Lub przesłał kod żrodłowy o takiej lub podobnej tematyce.

Projekt na zaliczenie kursu:
Należy określić zadanie jakie program ma wykonać, i napisać
samodzielnie program realizujący to zadanie w języku C.

  • Program musi zawierać przynajmniej:
  • 1 wieloargumentową funkcję (dla której liczba argumentów > 1),
  • 1 tablicę lub strukturę,
  • 1 dynamiczny przydział pamięci,
  • 1 zapis/odczyt danych do/z pliku tekstowego lub binarnego.
  • Zadbać o pisanie czytelnego kodu i dopisanie komentarzy.
    (ważne!)
    PROPOZYCJE PROGRAMÓW
    Wszelkie proste zadania numeryczne:
  • całkowanie konkretnej funkcji metodą trapezów lub prostokątów,
  • szukanie liczb pierwszych np. metodą sita Eratostenesa,
  • znalezienie miejsc zerowych wielomianu,
  • rozwiązanie układu równań, rozkład LU macierzy,
  • ...
    Narzędzie użytkowe:
  • proste przetwarzanie szeregu liczb lub tekstu (np. analiza statystyczna, sortowanie),
  • spis adresów,
  • prosty kalkulator lub gry,

moj e-mile [email protected]

// chyba cię pogrzało jeśli sądzisz, że ktoś ci to napisze [boks] - ŁF

0

Kto mi napisze komunikator albo program p2p albo chociaż kalkulator?

0
#include <string.h>
#include <stdio.h>
#define ala "ala ma kota"

int main(unsigned argc,char** argv){ // funkcja 2 argumentowa, w tym tablica
  char* buf;                         // jest i druga tablica
  buf=new char[strlen(ala)];         // dynamiczny przydzial pamieci
  strcpy(buf,ala);                   // ta linijka to bonus poza konkursem
  printf("\n%s\n%s\n",argv[0],buf);  // obsluga strumienia wyjsciowego (pliku tekstowego 'stdout')
  delete buf;
  return 0;                          // funkcja nawet zwraca wynik
}

Wszystkie kryteria spełnione, więc program jest na piątkę.

// dobre, dobre [browar] - ŁF

0

jesteś genialny ale nie wiem czy to aby na pewno jest na 5:) :ROTFL

0

wszystkie wymagania spełnia więc pewnie na 5 będzie :)

0

Nie chcę zmieniać poprzedniego postu, więc tu sie dopiszę. Jest jeden błąd, a mimo to program zawsze będzie chodził :-) Lemoniada dla tego, kto napisze gdzie jest ten błąd i dlaczego będzie działał (na pewno pod dosem) ;p

// Krecik 1
Odpada argv[0] to odpowiednik pascalowego paramstr(0) - nazwa i ściezka kompilatu.
Zresztą uprzedzę- cała ta linijka odpada...

main(int licznik,unsigned char** innanazwa){}
main(short abc,signed char* def[]){}

To wszystko jest w całkowitym porządku (dobra, coś z tym shortem i unsignedem zwracanym przesadziłem, nawet signed short, a dziwne, bo to to samo co int [wstyd] ).
Zresztą tu nie chodzi o to co jest, ale o to czego brak. I nie chodzi o brak komentarza.

// KreciK:flabra 0:2
new i delete jest operatorem podstawowo zaimplementowanym tak jak *, + , - etc.
Za mało się starasz na następną podpowiedź. [diabel]

(Błąd jest też taki, że to c++, a nie c jak belfer kazał, ale to podstawowy błąd w podejściu, a nie w samym programie)

// Dryo:

mov ah,48h
mov bx,... // czy tu jest liczba bajtów?
int 21h

Hmmm. ;p Paragraf=16 bajtów, strlen(ala)=11. Koniec filma, bo wyjdzie, że jestem zboczony. :-) W trybie rzeczywistym nawet gdyby było cos na kształt 'access violation' i tak ze zwględu na mechanizm przydzielania pamięci przez system nie wyskoczyłoby.

0

Indexowanie (a raczej parametry naszego programu) w argv[] zaczyna się od 1... nie jest to zbyt precyzyjne stwierdzenie.
W każdym razie powinno być:

...argv[1]...

PS> argv[0] - to chyba ścieżka dostępu do programu, ale łba se za to nie dam uciąć:)

PS> właśnie o tym, chciałem napisać... Wrzuciłem to do Dev-C++ i dostałem błędy przy kompilowaniu jako kod w C

//------------------------------------------
To ja zrobię opracowanie linia_po_linia:

#include <string.h>
#include <stdio.h>
#define ala "ala ma kota"

int main(unsigned argc,char** argv) //przyjmuję, że gra - tak jak sam mówiłeś
{
   char* buf; //tu bez polemiki
   buf=new char[strlen(ala)]; //przyjmując, że to 32 bitowy kompilator i C++ - gra

   strcpy(buf,ala);
/*
Ta linia też jest ok, według strcpy:
char *strcpy(char *dest, const char *src);
a ponieważ ala jest zamieniane przez kompilator na "Ala ma kota" jest cont char* - więc też pasuje
*/

printf("\n%s\n%s\n",argv[0],buf); //tu też nie będę polemizował...
delete buf; //zwalnianie pamięci - jak przy dynamicznym przydiale...
return 0; //:)
}


Jeszcze na koniec zacytuję przykład z helpa:
#include <stdio.h>
#include <string.h>

int main(void)
{
   char string[10];
   char *str1 = "abcdefghi";

   strcpy(string, str1);
   printf("%s\n", string);
   return 0;
}

więc prawie bez róznic w stosunku do twojego kodu...
JA błędu nie widzę...
Choć może się on czaić w printf - ale wątpię...

0

buf=new char[strlen(ala)]; //zarezerwuje tablicę 11-elementową
strcpy(buf,ala); //skopiuje 11 znaków tekstu + 1 znak na 0, czyli wyjdzie poza tablicę. Pod DOSem zapewne będziemy mieli szczęście i coś takiego jak Access Violation nie wystąpi

0

Dryo - ja nad tym 2 godziny siedziałem i nie doszedłem aż mnie flabra uświadomił później. A ty tak od ręki... To nie fair :)

To jeszcze powiedz dlaczego ten błąd nie wystąpi - ja szukąłem i nie mogłem znaleźć... Chyba chodzi o ta wolną przestrzeń kilkubitową za tablicą, ale chyba jednak się mylę...

<font color="blue">[</span><font color="red">ADD</span><font color="blue">]</span>

  1. Raczja, 'literówka myślowa' chodziło mi o kilka bajtów.
  2. Pod Windows też działało
0

To jeszcze powiedz dlaczego ten błąd nie wystąpi - ja szukąłem i nie mogłem znaleźć... Chyba chodzi o ta wolną przestrzeń kilkubitową za tablicą, ale chyba jednak się mylę...

kilkubitową?? :|

No ale błąd nie wystąpi, bo pod DOSem możesz mazać po całej pamięci i nic Ci za to nie zrobią :d. No chyba, że nadpiszesz inne zmienne lub kod programu - wtedy będą krzaki.

0

Kod moze nie na 5, ale do zaliczenia na pewno :-) .

0

No ale błąd nie wystąpi, bo pod DOSem możesz mazać po całej pamięci i nic Ci za to nie zrobią :d.

Ściślej: w trybie rzeczywistym. W chronionym mamy pod tym względem ograniczenia jak pod Windowsem.

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