Dodaj do ulubionych

Tablice dwuwymiarowe, język C..pomocy

IP: *.krakow.pl 05.11.04, 19:45
Mam stworzyś program, który bedzie maił 2 kolumny i 10 wierszy i bedzie
liczył iloczyny, chyba przez siebie, tak zrozumiałam

Mam problem, bo gdzieś mam błędy i nioe mogę ich znależź
#include <stdio.h>
#include <math.h>
#include <iostream.h>

int main(int argc, char *argv[])
{
float TAB[10][2]
int i;
int j;
int t;

for(i=0; i<=9; i++)
for(j=0; j<=1; j++){
TAB[i]=i+10
printf("podaj t element tablicy", i);
}
for(i=0; i<=9; i++ ){
for(j=0; j<=9; j++)
printf("%f",&t[i][0]);
printf("\n",t[i][1]=t[i][0]*t[i][0]);
}
return 0;
}

Proszę o pomoc.

Jeszcze jedno, deugi program (10 wierszy i 2 kolumny) bedzie liczył
pierwiastek i mnożył przez siebie (wynik druga kolumna)...nie wiem jak zrobić

Proszę o pomoc

Oba programy maja wyglądać tak mniej więcej
0 obok druga kolumna
1
2
.
.
.
9

Z góry dzieki
Obserwuj wątek
    • Gość: pollak Re: Tablice dwuwymiarowe, język C..pomocy IP: *.internetdsl.tpnet.pl 05.11.04, 20:45
      Błędów jest cała masa.

      > #include <stdio.h>
      > #include <math.h>
      > #include <iostream.h>

      Zdecyduj się czy stosujesz C czy C++. Albo piszesz w C i inkludujesz <stdio.h> -
      używając printf i scanf (lub podobnych), albo w C++ inkludując <iostream>
      (używasz obiektów cin i cout oraz operatorów >> i <<).

      >
      > int main(int argc, char *argv[])
      > {
      > float TAB[10][2]

      Każda instrukcja w C/C++ kończy się średnikiem ';'.


      > int i;
      > int j;
      > int t;
      >
      > for(i=0; i<=9; i++)
      > for(j=0; j<=1; j++){
      > TAB[i]=i+10
      > printf("podaj t element tablicy", i);
      > }

      1. Każda instrukcja w C/C++ kończy się średnikiem ';'.
      2. TAB jest w tym przypadku dwuwymiarową tablicą, przypisuj wartości w takim
      stylu: TAB[i][j] = jakas_wartosc;
      3. Funkcja printf jest nieumiejętnie użyta, z pewnością nie zrobi tego co
      miałaś w zamyśle (nie wiem co miałaś w zamyśle).
      4. Masz wpisać do tablicy dane z wejścia czy na stałe przypisać je w programie
      (tutaj, prawdopodobnie przepisałaś skądś, wydaje się że chcesz to robić na dwa
      sposoby co jest bez sesnu).

      > for(i=0; i<=9; i++ ){
      > for(j=0; j<=9; j++)
      > printf("%f",&t[i][0]);
      > printf("\n",t[i][1]=t[i][0]*t[i][0]);
      > }

      Powyższe jest mocno bez sensu. W pętli wyświetlasz adres któregoś z elementów
      dwuwymiarowej tablicy, oraz .... znak nowego wiersza (drugi argument drugiego
      wywołania funkcji printf jest niepotrzebny. Całość przemawia za tym, że z
      pewnością to coś robi zupełnie inną rzecz niż ta, którą sobie założyłaś.

      > return 0;
      > }

      Powyższe dwie linijki są OK ;)


      Podsumowując. Określ najpierw to co masz napisać. Zdobądź treść tego zadania,
      przeczytaj ją i postaraj się zrozumieć to co masz zrobić. Weź też zainwestuj w
      dobrą książkę do nauki C (lub C++, w zależności czego się uczysz).
    • user0001 Re: Tablice dwuwymiarowe, język C..pomocy 05.11.04, 21:10
      Burdel w kodzie, i opis problemu który nic nie objaśnia.

      > (7) float TAB[10][2]
      > (8) int i;

      errors.c:8: error: syntax error before "int"
      Średnik po definicji TAB to aniołki dostawią?

      > (14) TAB[i]=i+10
      > (15) printf("podaj t element tablicy", i);

      errors.c:14: error: incompatible types in assignment
      errors.c:15: error: parse error before "printf"
      znowu ten średnik, tym razem po przypisaniu, a poza tym to jak dodajesz do
      siebie int i stałą, a wynik przypisujesz do typu zmiennoprzecinkowego, to używaj
      stałej zmienno przecinkowej np: 10.0

      w linijce 15 format dla printf nie zawiera %d więc po co artument typu int?

      > (9) int t;
      [...]
      > (19) printf(" %f", &t[i][0]);
      > (20) printf("\n",t[i][1]=t[i][0]*t[i][0]);

      Co chcesz przez to powiedzieć?

      errors.c:19: error: subscripted value is neither array nor pointer
      Pierwszy printf powinien przyjąć zmienną typu double! A Ty znęcasz się bez
      potrzeby nad int'em.

      errors.c:20: error: subscripted value is neither array nor pointer
      Znowu coś mieszasz. Poza tym po co obliczenia wstawiać jako efekt uboczy?
      Format "\n" nie wymaga żadnych parametrów, czemu służy argument po nim?

      Nauka na przyszłość:

      Biegiem do biblioteki, książka nazywa się "Język ANSI C" autorami są Kernighan i
      Ritchie, wydawnictwo WNT, jeżeli masz zamiar na serio programować w C, to lepiej
      kup tą pozycję.

      Używaj dobrego edytora, na przykład emacs automatycznie dodaje wcięcia, gdy
      zapomnisz o średniku widzisz, że coś jest nie tak (wcięcie rośnie).

      Jeżeli program to notatki z wykładu, to:
      - ściągnijcie na wykład kogoś kto zna się na tyle aby widział błędy wykładowcy,
      - spisuj dokładnie z tablic, tu jest za dużo błędów,
      - okulary, a może parę ławek bliżej?

      Sformułuj porządnie problem, to może napiszę co trzeba zrobić.
    • Gość: XXX Re: Tablice dwuwymiarowe, język C..pomocy IP: *.warszawa.sdi.tpnet.pl 05.11.04, 22:39
      > #include <stdio.h>
      > #include <math.h>

      iostreama sie pozbywamy, nie bedzie potrzebny.
      int main(int argc, char *argv[])
      > {
      > float TAB[10][2]; /* srednik */
      > int i;
      > int j;
      > int t;
      >
      > for(i=0; i<=9; i++)
      > for(j=0; j<=1; j++){
      > TAB[i]=i+10
      > printf("podaj t element tablicy", i);
      > }
      Tego nie do konca rozumiem, ale wydaje sie ze trzeba zamienic na
      > for(i=0; i<=9; i++)
      > for(j=0; j<=1; j++){
      > printf("podaj element tablicy [%d,%d] ",i,j);
      scanf("%f",&(TAB[i][j]))
      > }
      Tu komentarze..Nie wiem do czego sluzylo to wypelnianie tablicy wiekszymi
      liczbami, wiec nie ma. Zapytanie podzielona na printfa i scanfa, chyba w miare
      czytelnie. Jedyne uwagi mam do scanfa: po pierwsze tego sie nie uzywa w
      prawdziwych programach - zobacz co sie stanie jak wpiszesz litere zamiast cyfr.
      Oprocz tego &(TAB[i][j]) nie jest zbyt piekna metoda zapisania adresu elementu w
      tablicy, ale w przypadku poczatkujacego wydaje mi sie ze widac o co chodzi.
      for(i=0; i<=9; i++ ){
      > for(j=0; j<=9; j++)
      > printf("%f",&t[i][0]); /*tutaj tego & nie musisz koniecznie pisac*/
      > printf("%f\n",t[i][0]*t[j][1]); /* a to jest moja wlasna tworczosc, bedzie
      pokazywac iloczyn. Zmien na to co ma byc. BTW Druga kolumna bedzie zapelniona
      jesli w warunku przy pytaniu o dane bedzie w drugiej petli j<=1. Wiec wpisywanie
      tam wyniku chyba nie do konca ma sens. Pytanie co program ma tak naprawde
      robic.. :) */
      > }
      > return 0;
      > }
      • Gość: as Re: Tablice dwuwymiarowe, język C..pomocy IP: *.neoplus.adsl.tpnet.pl 08.11.04, 16:11
        dziekuję za pomoc :)

Nie masz jeszcze konta? Zarejestruj się


Nakarm Pajacyka